From c6d5a272fbb55798688d7b062eac14aa96497b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Thu, 26 Sep 2024 11:47:22 +0800 Subject: [PATCH] 'commit' --- ds-base/dsBase.iml | 8 + .../excelTemp/占位文件.txt | 1 + .../getPrincipalshipThirdParty.json | 30 + .../getPrintAreaBureau.json | 24 + .../getPrintAreaManager.json | 24 + .../getPrintCityBureau.json | 24 + .../getPrintCityManager.json | 24 + .../ExcelExportTemplate/getPrintParent.json | 24 + .../ExcelExportTemplate/getPrintStudent.json | 24 + .../getTeacherListByBureauId.json | 24 + .../classes/ExcelImportTemplate/Student.json | 85 +++ .../classes/ExcelImportTemplate/Student.xls | Bin 0 -> 534016 bytes .../ExcelImportTemplate/StudentSample.xls | Bin 0 -> 563200 bytes .../classes/ExcelImportTemplate/Teacher.json | 93 ++++ .../classes/ExcelImportTemplate/Teacher.xls | Bin 0 -> 588288 bytes .../ExcelImportTemplate/TeacherSample.xls | Bin 0 -> 620544 bytes dsBase/target/classes/SetMinioDownload.json | 18 + dsBase/target/classes/Sql/ClearDataBase.sql | 26 + dsBase/target/classes/Sql/YltWxGzh.sql | 20 + dsBase/target/classes/Sql/app.sql | 62 +++ dsBase/target/classes/Sql/base.sql | 339 ++++++++++++ dsBase/target/classes/Sql/class.sql | 55 ++ dsBase/target/classes/Sql/dm.sql | 121 ++++ dsBase/target/classes/Sql/global.sql | 59 ++ .../target/classes/Sql/graduationAction.sql | 23 + dsBase/target/classes/Sql/gtzz.sql | 521 ++++++++++++++++++ dsBase/target/classes/Sql/loginPerson.sql | 251 +++++++++ dsBase/target/classes/Sql/menu.sql | 78 +++ dsBase/target/classes/Sql/organization.sql | 122 ++++ dsBase/target/classes/Sql/student.sql | 67 +++ dsBase/target/classes/Sql/studentYd.sql | 91 +++ dsBase/target/classes/Sql/teacher.sql | 90 +++ dsBase/target/classes/Sql/teacherYd.sql | 88 +++ dsBase/target/classes/application_ali.yaml | 31 ++ dsBase/target/classes/application_dev.yaml | 28 + dsBase/target/classes/application_pro.yaml | 31 ++ dsBase/target/classes/cron4j.properties | 24 + dsBase/target/classes/log4j.properties | 12 + dsBase/target/classes/logback.xml | 39 ++ dsBase/target/classes/logo.txt | 13 + dsBase/target/classes/undertow_dev.properties | 36 ++ dsBase/target/classes/undertow_pro.properties | 35 ++ dsBuild/target/classes/.kube/config | 19 + dsBuild/target/classes/publishImage.json | 6 + dsGw/target/classes/application_ali.yaml | 23 + dsGw/target/classes/application_dev.yaml | 28 + dsGw/target/classes/application_pro.yaml | 23 + dsGw/target/classes/logback.xml | 39 ++ dsGw/target/classes/logo.txt | 11 + dsGw/target/classes/undertow_dev.properties | 24 + dsGw/target/classes/undertow_pro.properties | 25 + dsRes.iml | 8 + dsRes/target/classes/SetMinioDownload.json | 18 + dsRes/target/classes/Start.sh | 19 + dsRes/target/classes/application_ali.yaml | 31 ++ dsRes/target/classes/application_dev.yaml | 28 + dsRes/target/classes/application_pro.yaml | 28 + dsRes/target/classes/log4j.properties | 12 + dsRes/target/classes/logback.xml | 39 ++ dsRes/target/classes/logo.txt | 11 + dsRes/target/classes/undertow_dev.properties | 34 ++ dsRes/target/classes/undertow_pro.properties | 34 ++ 62 files changed, 3125 insertions(+) create mode 100644 ds-base/dsBase.iml create mode 100644 dsBase/target/classes/ExcelExportTemplate/excelTemp/占位文件.txt create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrincipalshipThirdParty.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrintAreaBureau.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrintAreaManager.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrintCityBureau.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrintCityManager.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrintParent.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getPrintStudent.json create mode 100644 dsBase/target/classes/ExcelExportTemplate/getTeacherListByBureauId.json create mode 100644 dsBase/target/classes/ExcelImportTemplate/Student.json create mode 100644 dsBase/target/classes/ExcelImportTemplate/Student.xls create mode 100644 dsBase/target/classes/ExcelImportTemplate/StudentSample.xls create mode 100644 dsBase/target/classes/ExcelImportTemplate/Teacher.json create mode 100644 dsBase/target/classes/ExcelImportTemplate/Teacher.xls create mode 100644 dsBase/target/classes/ExcelImportTemplate/TeacherSample.xls create mode 100644 dsBase/target/classes/SetMinioDownload.json create mode 100644 dsBase/target/classes/Sql/ClearDataBase.sql create mode 100644 dsBase/target/classes/Sql/YltWxGzh.sql create mode 100644 dsBase/target/classes/Sql/app.sql create mode 100644 dsBase/target/classes/Sql/base.sql create mode 100644 dsBase/target/classes/Sql/class.sql create mode 100644 dsBase/target/classes/Sql/dm.sql create mode 100644 dsBase/target/classes/Sql/global.sql create mode 100644 dsBase/target/classes/Sql/graduationAction.sql create mode 100644 dsBase/target/classes/Sql/gtzz.sql create mode 100644 dsBase/target/classes/Sql/loginPerson.sql create mode 100644 dsBase/target/classes/Sql/menu.sql create mode 100644 dsBase/target/classes/Sql/organization.sql create mode 100644 dsBase/target/classes/Sql/student.sql create mode 100644 dsBase/target/classes/Sql/studentYd.sql create mode 100644 dsBase/target/classes/Sql/teacher.sql create mode 100644 dsBase/target/classes/Sql/teacherYd.sql create mode 100644 dsBase/target/classes/application_ali.yaml create mode 100644 dsBase/target/classes/application_dev.yaml create mode 100644 dsBase/target/classes/application_pro.yaml create mode 100644 dsBase/target/classes/cron4j.properties create mode 100644 dsBase/target/classes/log4j.properties create mode 100644 dsBase/target/classes/logback.xml create mode 100644 dsBase/target/classes/logo.txt create mode 100644 dsBase/target/classes/undertow_dev.properties create mode 100644 dsBase/target/classes/undertow_pro.properties create mode 100644 dsBuild/target/classes/.kube/config create mode 100644 dsBuild/target/classes/publishImage.json create mode 100644 dsGw/target/classes/application_ali.yaml create mode 100644 dsGw/target/classes/application_dev.yaml create mode 100644 dsGw/target/classes/application_pro.yaml create mode 100644 dsGw/target/classes/logback.xml create mode 100644 dsGw/target/classes/logo.txt create mode 100644 dsGw/target/classes/undertow_dev.properties create mode 100644 dsGw/target/classes/undertow_pro.properties create mode 100644 dsRes.iml create mode 100644 dsRes/target/classes/SetMinioDownload.json create mode 100644 dsRes/target/classes/Start.sh create mode 100644 dsRes/target/classes/application_ali.yaml create mode 100644 dsRes/target/classes/application_dev.yaml create mode 100644 dsRes/target/classes/application_pro.yaml create mode 100644 dsRes/target/classes/log4j.properties create mode 100644 dsRes/target/classes/logback.xml create mode 100644 dsRes/target/classes/logo.txt create mode 100644 dsRes/target/classes/undertow_dev.properties create mode 100644 dsRes/target/classes/undertow_pro.properties diff --git a/ds-base/dsBase.iml b/ds-base/dsBase.iml new file mode 100644 index 00000000..69dd4625 --- /dev/null +++ b/ds-base/dsBase.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/excelTemp/占位文件.txt b/dsBase/target/classes/ExcelExportTemplate/excelTemp/占位文件.txt new file mode 100644 index 00000000..e658701c --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/excelTemp/占位文件.txt @@ -0,0 +1 @@ +ww \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrincipalshipThirdParty.json b/dsBase/target/classes/ExcelExportTemplate/getPrincipalshipThirdParty.json new file mode 100644 index 00000000..0b3782e3 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrincipalshipThirdParty.json @@ -0,0 +1,30 @@ +{ + "title": "职务与分管工作", + "sheetName": "职务与分管工作", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + + "colInfo": [ + { + "show_column_name": "级别", + "list_column_name": "level_name", + "width": 40 + }, + { + "show_column_name": "单位类型", + "list_column_name": "org_type_name", + "width": 40 + }, + { + "show_column_name": "职务名称", + "list_column_name": "zhiwu_name", + "width": 40 + }, + { + "show_column_name": "分管工作", + "list_column_name": "fenguan", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrintAreaBureau.json b/dsBase/target/classes/ExcelExportTemplate/getPrintAreaBureau.json new file mode 100644 index 00000000..fb311492 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrintAreaBureau.json @@ -0,0 +1,24 @@ +{ + "title": "县区级单位管理员登录账号", + "sheetName": "管理员账号", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrintAreaManager.json b/dsBase/target/classes/ExcelExportTemplate/getPrintAreaManager.json new file mode 100644 index 00000000..e548e545 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrintAreaManager.json @@ -0,0 +1,24 @@ +{ + "title": "县区管理员登录账号", + "sheetName": "管理员账号", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrintCityBureau.json b/dsBase/target/classes/ExcelExportTemplate/getPrintCityBureau.json new file mode 100644 index 00000000..8d408313 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrintCityBureau.json @@ -0,0 +1,24 @@ +{ + "title": "市直属单位登录账号", + "sheetName": "管理员账号", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrintCityManager.json b/dsBase/target/classes/ExcelExportTemplate/getPrintCityManager.json new file mode 100644 index 00000000..95763ed8 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrintCityManager.json @@ -0,0 +1,24 @@ +{ + "title": "市管理员登录账号", + "sheetName": "管理员账号", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrintParent.json b/dsBase/target/classes/ExcelExportTemplate/getPrintParent.json new file mode 100644 index 00000000..15a3e0f2 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrintParent.json @@ -0,0 +1,24 @@ +{ + "title": "家长登录信息", + "sheetName": "家长登录信息", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getPrintStudent.json b/dsBase/target/classes/ExcelExportTemplate/getPrintStudent.json new file mode 100644 index 00000000..c5c996c2 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getPrintStudent.json @@ -0,0 +1,24 @@ +{ + "title": "学生登录信息", + "sheetName": "学生登录信息", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "学生姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelExportTemplate/getTeacherListByBureauId.json b/dsBase/target/classes/ExcelExportTemplate/getTeacherListByBureauId.json new file mode 100644 index 00000000..fb311492 --- /dev/null +++ b/dsBase/target/classes/ExcelExportTemplate/getTeacherListByBureauId.json @@ -0,0 +1,24 @@ +{ + "title": "县区级单位管理员登录账号", + "sheetName": "管理员账号", + "titleHeight": 30, + "rowHeight": 30, + "showNumber": true, + "colInfo": [ + { + "show_column_name": "姓名", + "list_column_name": "person_name", + "width": 40 + }, + { + "show_column_name": "登录名", + "list_column_name": "login_name", + "width": 40 + }, + { + "show_column_name": "原始密码", + "list_column_name": "original_pwd", + "width": 40 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelImportTemplate/Student.json b/dsBase/target/classes/ExcelImportTemplate/Student.json new file mode 100644 index 00000000..ea70e7f8 --- /dev/null +++ b/dsBase/target/classes/ExcelImportTemplate/Student.json @@ -0,0 +1,85 @@ +{ + "rowHeight": 28, + "colInfo": [ + { + "column": 0, + "name": "stage", + "value": "学段", + "width": 20, + "promptContent": "请按下拉框进行选择!", + "need":1 + }, + { + "column":1, + "name": "class", + "value": "班级名称", + "width": 24, + "promptContent": "只支持入学年份+班号的形式,比如2017级8班", + "need":1 + }, + { + "column": 2, + "name": "person_name", + "value": "姓名", + "width": 18, + "promptContent": "人员姓名。", + "need":1 + }, + { + "column": 3, + "name":"xb", + "value": "性别", + "width": 14, + "promptContent": "性别请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 4, + "value": "民族", + "name":"mz", + "width": 20, + "promptContent": "民族请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 5, + "value": "政治面貌", + "name":"zzmm", + "width": 34, + "promptContent": "政治面貌请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 6, + "value": "身份证号", + "name":"cardNumber", + "width": 30, + "promptContent": "支持身份证号15位或18位。", + "need":1 + }, + { + "column": 7, + "value": "学籍号", + "name":"xjh", + "width": 18, + "promptContent": "可以为空!", + "need":0 + }, + { + "column": 8, + "value": "学籍辅号", + "name":"xjfh", + "width": 18, + "promptContent": "可以为空!", + "need":0 + }, + { + "column": 9, + "value": "学生来源", + "name":"stage", + "width": 16, + "promptContent": "学生来源请在下拉框中选择,或者将内容复制!", + "need":1 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelImportTemplate/Student.xls b/dsBase/target/classes/ExcelImportTemplate/Student.xls new file mode 100644 index 0000000000000000000000000000000000000000..87e6f3da2e2b1d28c175cf7c358013f9b600a46b GIT binary patch literal 534016 zcmeIu0Sy2E0K%a6Pi+qe5hx58Fkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r K3>YwA;BjCkcmM$a literal 0 HcmV?d00001 diff --git a/dsBase/target/classes/ExcelImportTemplate/StudentSample.xls b/dsBase/target/classes/ExcelImportTemplate/StudentSample.xls new file mode 100644 index 0000000000000000000000000000000000000000..a121db676345911de72622fee048b8dae7c60ec9 GIT binary patch literal 563200 zcmeIufdBvi0K=g9Qy=7oP+`D;0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r z3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r h3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0Rsm91_qdT00961 literal 0 HcmV?d00001 diff --git a/dsBase/target/classes/ExcelImportTemplate/Teacher.json b/dsBase/target/classes/ExcelImportTemplate/Teacher.json new file mode 100644 index 00000000..1878e155 --- /dev/null +++ b/dsBase/target/classes/ExcelImportTemplate/Teacher.json @@ -0,0 +1,93 @@ +{ + "rowHeight": 28, + "colInfo": [ + { + "column": 0, + "name": "department", + "value": "部门", + "width": 25, + "promptContent": "只支持一级部门,系统中存在将重用,不存在将创建!", + "need":0 + }, + { + "column": 1, + "name": "person_name", + "value": "姓名", + "width": 18, + "promptContent": "人员姓名。", + "need":1 + }, + { + "column": 2, + "name":"xb", + "value": "性别", + "width": 14, + "promptContent": "性别请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 3, + "value": "民族", + "name":"mz", + "width": 16, + "promptContent": "民族请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 4, + "value": "政治面貌", + "name":"zzmm", + "width": 34, + "promptContent": "政治面貌请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 5, + "value": "身份证号", + "name":"cardNumber", + "width": 30, + "promptContent": "支持身份证号15位或18位。", + "need":1 + }, + { + "column": 6, + "value": "最高学历", + "name":"xl", + "width": 18, + "promptContent": "最高学历请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 7, + "value": "职称", + "name":"zc", + "width": 18, + "promptContent": "职称请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 8, + "value": "学段", + "name":"stage", + "width": 16, + "promptContent": "学段请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 9, + "value": "主教学科", + "name":"subject", + "width": 22, + "promptContent": "主教学科请在下拉框中选择,或者将内容复制!", + "need":1 + }, + { + "column": 10, + "value": "从教年月日", + "name":"teach_date", + "width": 18, + "promptContent": "例:1978-01-01", + "need":1 + } + ] +} \ No newline at end of file diff --git a/dsBase/target/classes/ExcelImportTemplate/Teacher.xls b/dsBase/target/classes/ExcelImportTemplate/Teacher.xls new file mode 100644 index 0000000000000000000000000000000000000000..8eb916938c01ed0f3c97b0a01283f3c9b66fc1eb GIT binary patch literal 588288 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

?yI!yx1iMkNn*_UAuv-MXRj}Ix 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 LyBqp{bou`S$zT){ literal 0 HcmV?d00001 diff --git a/dsBase/target/classes/SetMinioDownload.json b/dsBase/target/classes/SetMinioDownload.json new file mode 100644 index 00000000..5955e673 --- /dev/null +++ b/dsBase/target/classes/SetMinioDownload.json @@ -0,0 +1,18 @@ +{ + "Version": "2012-10-17", + "Statement": [{ + "Effect": "Allow", + "Principal": { + "AWS": ["*"] + }, + "Action": ["s3:GetBucketLocation", "s3:ListBucket"], + "Resource": ["arn:aws:s3:::dsideal"] + }, { + "Effect": "Allow", + "Principal": { + "AWS": ["*"] + }, + "Action": ["s3:GetObject"], + "Resource": ["arn:aws:s3:::dsideal/*"] + }] +} \ No newline at end of file diff --git a/dsBase/target/classes/Sql/ClearDataBase.sql b/dsBase/target/classes/Sql/ClearDataBase.sql new file mode 100644 index 00000000..b51df13d --- /dev/null +++ b/dsBase/target/classes/Sql/ClearDataBase.sql @@ -0,0 +1,26 @@ +#namespace("clearDataBase") + #sql("clearAll") + truncate table t_base_class; + truncate table t_base_graduation; + truncate table t_base_organization; + truncate table t_import_student_by_excel; + truncate table t_import_teacher_by_excel; + truncate table t_person_duty_charge; + truncate table t_sys_account_mount; + truncate table t_transfer_apply; + truncate table t_sys_loginperson; + truncate table t_base_app_visiable; + #end + + #sql("set_install_area") + update t_base_global set global_value=? where global_code='install_area' + #end + + #sql("setPwd") + update t_sys_loginperson set original_pwd=?,pwd=?,pwdmd5=? where login_name=? + #end + + #sql("getAreaByCityId") + select * from t_dm_area where city_id=? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/YltWxGzh.sql b/dsBase/target/classes/Sql/YltWxGzh.sql new file mode 100644 index 00000000..89c3134b --- /dev/null +++ b/dsBase/target/classes/Sql/YltWxGzh.sql @@ -0,0 +1,20 @@ +#namespace("YltWxGzh") + -- 获取绑定微信用户 + #sql("QuerybindWxUser") + SELECT + o.id, + o.operate_workers_name, + o.operate_workers_phone_number, + o.station_id, + DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') as create_time, + s.station_name, + o.wx_openid, + o.wx_bindtime + FROM + t_operate_workers_info o + LEFT JOIN t_station s + ON o.station_id=s.id + where o.operate_workers_name=#para(operate_workers_name) and + o.operate_workers_phone_number=#para(operate_workers_phone_number) + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/app.sql b/dsBase/target/classes/Sql/app.sql new file mode 100644 index 00000000..b721e6df --- /dev/null +++ b/dsBase/target/classes/Sql/app.sql @@ -0,0 +1,62 @@ +-- 应用接入命名空间 +#namespace("app") + -- 根据appid获取app信息 + #sql("getAppInfoByAppid") + select t1.appid,t1.appkey,t1.appname,t1.sort_id,t1.system_type_id,t1.create_time,t1.update_ts,t1.bureau_id,t1.developer, + (select t2.org_name from t_base_organization as t2 where t1.bureau_id=t2.org_id) as bureau_name, + (select t2.system_type_name from t_dm_integrated_system_type as t2 where t2.system_type_id=t1.system_type_id) as system_type_name, + t1.is_system from t_base_app as t1 where appid=? + #end + + -- 获取应用系统的列表 + #sql("getAppList") + select t1.appid,t1.appkey,t1.appname,t1.sort_id,t1.system_type_id,t1.create_time,t1.update_ts,bureau_id,developer, + is_system,(select t2.system_type_name from t_dm_integrated_system_type as t2 where t2.system_type_id=t1.system_type_id) + as system_type_name, + (case when (select count(*) as c from t_integrated_system as t2 where t2.appid=t1.appid)>0 then 1 else 0 end) + as integrated_exist, + (case when (select count(*) as c from t_datashare_publish as t2 where t2.appid=t1.appid)>0 then 1 else 0 end) + as publish_exist, + (case when (select count(*) as c from t_datashare_subscribe as t2 where t2.appid=t1.appid)>0 then 1 else 0 end) + as subscribe_exist, + t1.b_use from t_base_app as t1 order by t1.sort_id + #end + + -- 获取集成系统的系统类型 + #sql("getIntegratedSystemType") + select system_type_id,system_type_name from t_dm_integrated_system_type + #end + + -- 通过appid 获取app的info信息 + #sql("getAppInfo") + select appid,appkey,appname,sort_id,system_type_id,create_time,update_ts,bureau_id,developer,is_system from t_base_app + where appid=? + #end + + -- 设置app为禁用或启用 + #sql("changeAppStatus") + update t_base_app set b_use=ABS(b_use-1) where appid=? + #end + + -- 通过appid清空它的发布系统配置 + #sql("deletePublishByAppid") + delete from t_datashare_publish where appid=? + #end + + -- 通过appid清空它的订阅系统配置 + #sql("deleteSubscribeByAppid") + delete from t_datashare_subscribe where appid=? + #end + + -- 删除一个集成的系统(可视范围表) + #sql("deleteVisiableByAppid") + delete from t_base_app_visiable where appid=? + #end + + --按系统获取系统与可视范围的关系 + #sql("appid_visible") + select t1.id,t1.appid,t1.city_id,t1.area_id,t1.bureau_id,t1.level_id,t1.update_ts, + (select t2.org_name from t_base_organization as t2 where t1.bureau_id=t2.org_id) as bureau_name + from t_base_app_visiable as t1 where appid=? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/base.sql b/dsBase/target/classes/Sql/base.sql new file mode 100644 index 00000000..e4a90d53 --- /dev/null +++ b/dsBase/target/classes/Sql/base.sql @@ -0,0 +1,339 @@ +-- 基础类命名空间 +#namespace("Base") + -- 获取整个单位类型与职务+分管信息树数据 + #sql("getLoginInfoByUserName") + select person_id,person_name,pwd,ifnull(wx_openid,0) as wx_openid,ifnull(qq_openid,0) as qq_openid, + identity_id,bureau_id,city_id,area_id + from t_sys_loginperson where b_use = 1 and login_name =? + #end + -- 获取整个单位类型与职务+分管信息树数据 + #sql("getOrgTypePrincipalshipTree") + select t1.id,t1.code,t1.name,t1.parent_id as pId,(case when length(t1.code)>6 then 0 else 1 end) as open, + (case when length(t1.code)=10 then 1 else 0 end ) as nocheck, + (select count(1) from t_base_org_type_principalship as t2 where t2.parent_id=t1.id) as is_leaf,sort_id,b_use, + is_school,level,bureau_level + from t_base_org_type_principalship as t1 where b_use=1 order by sort_id + #end + + -- 获取单位类型与职务+分管信息树数据指定结点的信息 + #sql("getOrgTypePrincipalshipById") + select t1.id,t1.code,t1.name,t1.parent_id as pId,t1.sort_id,t1.b_use,t1.is_school,t1.level,t1.bureau_level, + (select count(1) from t_base_org_type_principalship as t2 where t2.parent_id=t1.id) as is_leaf + from t_base_org_type_principalship as t1 where t1.id=#para(0) order by t1.sort_id + #end + + -- 获取单位类型与职务+分管信息树数据指定结点的信息 + #sql("getOrgTypePrincipalshipByParentId") + select t1.id,t1.code,t1.name,t1.parent_id as pId,t1.sort_id,t1.b_use,t1.is_school,t1.level,t1.bureau_level, + (select count(1) from t_base_org_type_principalship as t2 where t2.parent_id=t1.id) as is_leaf + from t_base_org_type_principalship as t1 where t1.parent_id=#para(0) and t1.b_use=1 order by sort_id + #end + + -- 和上面的是一个东西,但要细分一下,比如幼儿园+中小学 + #sql("getOrgTypePrincipalshipByParentIdAndBigType") + select t1.id,t1.name,t1.parent_id as pId,t1.sort_id,t1.b_use,t1.is_school,t1.level,t1.bureau_level, + (select count(1) from t_base_org_type_principalship as t2 where t2.parent_id=t1.id) as is_leaf + from t_base_org_type_principalship as t1 where t1.parent_id=#para(0) and t1.b_use=1 and t1.is_school=#para(1) order by sort_id + #end + + -- 修改一个OrgTypePrincipalship节点 + #sql("updateOrgTypePrincipalshipNode") + update t_base_org_type_principalship set code=?,name=?,parent_id=?,sort_id=?,b_use=?,is_school=? where id=? + #end + + -- 删除一个OrgTypePrincipalship节点 + #sql("delOrgTypePrincipalshipById") + delete from t_base_org_type_principalship where id=? + #end + + -- 获取单位类型与职务+分管信息树数据指定结点下一级的数据ByCode + #sql("getOrgTypePrincipalshipByParentparent_code") + select id,code,name,parent_id as pId,sort_id,b_use,is_school,level,bureau_level + from t_base_org_type_principalship where code like ? and length(code)=length(?)+2 and b_use=1 order by sort_id + #end + + -- 获取指定CODE的个数 + #sql("t_base_org_type_principalship_CountByCode") + select count(1) as c from t_base_org_type_principalship where code=? and b_use=1 + #end + + -- 获取指定CODE的个数,不包括自己 + #sql("t_base_org_type_principalship_CountByCodeExceptSelf") + select count(1) as c from t_base_org_type_principalship where code=? and id!=? and b_use=1 + #end + + -- 通过单位ID获取职务权限树 + #sql("getPrincipalshipTreeByBureauId") + select t1.id,t1.code,t1.name,t1.sort_id,t1.b_use,t1.is_school,t1.level,t1.bureau_level, + (case when length(t1.code)=6 then -1 else t1.parent_id end ) as parent_id, + (select count(1) from t_base_org_type_principalship as t2 where t2.parent_id=t1.id and t2.b_use=1) as is_leaf + from t_base_org_type_principalship as t1 + where t1.code like concat((select code from t_base_org_type_principalship + where id=(select org_type_id from t_base_organization where org_id=?)),'%') and t1.b_use=1 + order by t1.sort_id + #end + + -- 获取职务列表打印EXCEL,用来方便第三方系统提供接入的职务与系统对应关系 + #sql("getPrincipalshipThirdParty") + select (case when substr(t1.code,1,4)='0101' then '市级' else '县区级' end ) as level_name, + (select t2.name from t_base_org_type_principalship as t2 where t2.code=SUBSTR(t1.code,1,6)) as org_type_name, + t1.name as zhiwu_name , + ifnull((select group_concat(name) as cols from t_base_org_type_principalship where parent_id=t1.id),'无') as fenguan + from t_base_org_type_principalship as t1 where t1.level =4 and t1.b_use=1 order by t1.code + #end + + -- 获取当前学期 + #sql("getCurrentTerm") + select xq_id,(case xq_code when '09' then xn else xn+1 end) as xn,xq, + xqmc,ksrq,jsrq,memo,xq_code,is_current from t_base_term where is_current=1 + #end + -- 按年份获取学期列表 + #sql("getTermListByYear") + select xq_id,(case xq_code when '09' then xn else xn+1 end) as xn,xq, + xqmc,ksrq,jsrq,memo,xq_code,is_current from t_base_term where xn=#(batch_year) + #end + -- 获取当前人员 + #sql("getCurrentPerson") + select t1.*,t4.rule_id + from t_sys_loginperson as t1 + left join t_base_student as t2 on t2.sfzh=AES_DECRYPT(from_base64(t1.idcard_code),'DsideaL4r5t6y7u!') + left join t_base_class as t3 on t2.class_id=t3.class_id + LEFT JOIN t_jw_major_rule AS t4 ON t3.zydm = t4.zhuanye_code + AND t3.entry_year = t4.entry_year + AND t3.type_id = t4.zhaosheng_type_id + AND t3.xq_code = t4.entry_term_code AND t4.rule_type_id=1 + where t1.person_id='#(person_id)' + #end + + -- 获取当前学生所在班级 + #sql("getCurrentClass") + select c.* from t_base_class as c left join t_sys_loginperson as l on c.class_id=l.s_class_id where l.person_id='#(person_id)' and l.identity_id=6 + #end + -- 获取人员(主部门)系列表 + #sql("getZhuDepartmentTypeId1List") + select l.login_name,case + when o.department_type_id=1 then o.org_id + when po.department_type_id=1 then po.org_id + end as org_id + from t_sys_loginperson as l + LEFT JOIN t_base_organization as o on l.org_id=o.org_id + LEFT JOIN t_base_organization as po on o.parent_id=po.org_id + where l.person_id='#(person_id)' and (o.department_type_id=1 or po.department_type_id=1 ) + #end + -- 获取人员(辅部门)系列表 + #sql("getFuDepartmentTypeId1List") + select l.login_name,case + when o.department_type_id=1 then o.org_id + when po.department_type_id=1 then po.org_id + end as org_id + from t_sys_loginperson as l + LEFT JOIN t_base_teacher_org as bto on l.person_id=bto.person_id + LEFT JOIN t_base_organization as o on bto.org_id=o.org_id + LEFT JOIN t_base_organization as po on o.parent_id=po.org_id + where l.person_id='#(person_id)' and (o.department_type_id=1 or po.department_type_id=1 ) + #end + -- 获取某人是管理员的专业列表 + #sql("getZhuanYeList") + select zt.zhuanye_id,z.zhuanye_code,z.zhuanye_name + from t_zhaosheng_zhuanye as z + left join t_zhaosheng_zhuanye_teacher as zt on zt.zhuanye_id=z.zhuanye_id + where zt.person_id='#(person_id)' + and z.b_use=1 and #(batch_year) BETWEEN z.begin_year AND z.end_year + #end + -- 获取所有专业列表 + #sql("getAllZhuanYeList") + select z.zhuanye_id,z.zhuanye_code,z.zhuanye_name + from t_zhaosheng_zhuanye as z + where z.b_use=1 and #(batch_year) BETWEEN z.begin_year AND z.end_year + #end + -- 获取学期列表 + #sql("getTermList") + select xq_id,xn,xq,xqmc, + date_format(ksrq,'%Y-%m-%d') as ksrq, + date_format(jsrq,'%Y-%m-%d') as jsrq,is_current + from t_base_term where + xq_id<=(select xq_id from t_base_term where is_current=1) + #if(addOne) + +1 + #end + and xn>=2018 order by xq_id + #if(action_asc) + asc + #else + desc + #end + #end + -- 获取校历的文字描述信息 + #sql("getXiaoLiMemo") + select memo from t_base_term where xq_id=#(xq_id) + #end + + -- 修改校历的文字描述信息 + #sql("updateXiaoLiMemo") + update t_base_term set memo='#(memo)',ksrq='#(ksrq)',jsrq='#(jsrq)' where xq_id=#(xq_id) + #end + + -- 是不是在职务列表中 + #sql("isInDutyList") + select count(*) as c from t_person_duty_charge where person_id='#(person_id)' and duties_id in + ( + #for(x:ids) + #(for.index == 0 ? "" : ",") #para(x) + #end + ) + #end + -- 查询人员职务列表 + #sql("selectDutyList") + select `name` from t_base_org_type_principalship where id in + ( #for(x:ids) + #(for.index == 0 ? "" : ",") + #para(x) + #end ) + #end + -- 获取所有的用户城市列表 + #sql("getAllUserCity") + select city_id,city_name,sort_id from t_base_user_city where b_use=1 order by sort_id + #end + + -- 教师选择器专用(多选) + #sql("selectPersonsByBureauId") + select person_id,person_name from t_sys_loginperson where bureau_id=? and b_use=1 and identity_id=5 + order by person_name,sort_id + #end + -- 系内人员选择器(主部门待选) + #sql("selectZhuPersonsByOrgId") + select sl.person_id,sl.person_name + from t_sys_loginperson as sl + LEFT JOIN t_base_organization AS bo ON bo.org_id = sl.org_id + where sl.bureau_id=? and sl.b_use=1 and sl.identity_id=5 + and (bo.org_id=? or bo.parent_id=?) + order by sl.person_name,sl.sort_id + #end + -- 系内人员选择器(辅部门待选) + #sql("selectFuPersonsByOrgId") + select sl.person_id,sl.person_name + from t_sys_loginperson as sl + LEFT JOIN t_base_teacher_org as bto on sl.person_id=bto.person_id + LEFT JOIN t_base_organization AS bo ON bo.org_id = bto.org_id + where sl.bureau_id=? and sl.b_use=1 and sl.identity_id=5 + and (bo.org_id=? or bo.parent_id=?) + order by sl.person_name,sl.sort_id + #end + -- 系内人员选择器(已选) + #sql("selectAlreadyPersonsByOrgId") + select sl.person_id,sl.person_name + from t_zhaosheng_zhuanye_teacher as sl + LEFT JOIN t_base_organization AS bo ON bo.org_id = sl.org_id + where sl.zhuanye_id=? and sl.org_id=? + order by sl.person_name + #end + --把原已选清空 + #sql("clearZhuanyeOrgTeacher") + delete from t_zhaosheng_zhuanye_teacher where zhuanye_id=? and org_id=? + #end + -- 获取场地列表 + #sql("getSiteList") + select t1.site_id,t1.type_id,t2.type_name,t1.site_code,t1.site_name,t1.site_storied_building, + t3.building_name as site_storied_building_name,t1.floor,t1.room_number,t1.capacity_normal, + (case t1.for_examination when 1 then '是' else '否' end) as for_examination_memo, + t1.for_examination,t1.capacity_examination,t1.sort_id, + ( + select t5.class_name as class_name + from t_base_class as t5 inner join t_base_term as t2 on t5.xq_id=t2.xq_id + inner join t_zhaosheng_zhuanye as t3 on t5.zydm=t3.zhuanye_code + inner join t_zhaosheng_person_type as t4 on t5.person_type_id=t4.person_type_id + where t5.class_id=t1.class_id + ) as class_name + from t_base_site as t1 left join t_base_site_type as t2 on t1.type_id=t2.type_id + left join t_base_site_storied_building as t3 on t1.site_storied_building=t3.building_id + where 1=1 + #if(site_storied_building>0) + and t1.site_storied_building=#(site_storied_building) + #end + #if(floor>0) + and t1.floor=#(floor) + #end + #if(type_id) + and t1.type_id=#(type_id) + #end + #if(for_class_id>0) + and (t1.class_id is not null and t1.class_id<>'') + #else + and (t1.class_id is null or t1.class_id='') + #end + order by t1.sort_id + #end + + -- 获取场地类型 + #sql("getSiteTypeList") + select type_id,type_name,sort_id from t_base_site_type order by sort_id + #end + + -- 获取教学楼列表 + #sql("getBindBuildingList") + select building_id,building_name,sort_id from t_base_site_storied_building order by sort_id + #end + -- 获取教学楼楼层列表 + #sql("getBuildingLevelList") + select DISTINCT floor from t_base_site where site_storied_building=#(site_storied_building) order by floor + #end + + -- 获取指定单位下多机构的教师列表 + #sql("getBureauPersonListByOrgId") + select t1.person_id,t1.person_name from t_sys_loginperson as t1 + where t1.b_use=1 + #if(org_id) + and (t1.org_id in ( + select t2.org_id from t_base_organization as t2 where t2.parent_id='#(org_id)' + union + select '#(org_id)' + ) + ) + or t1.person_id in ( + select person_id from t_base_teacher_org as t2 where t2.org_id in ( + select t2.org_id from t_base_organization as t2 where t2.parent_id='#(org_id)' + union + select '#(org_id)' + ) + ) + #end + order by t1.person_name; + #end + -- 获取指定单位下的场地列表 + #sql("getBureauBuildingList") + select distinct t1.building_id,t1.building_name from t_base_site_storied_building as t1 + order by t1.sort_id; + #end + -- 获取指定单位下的场地列表 + #sql("getBaseSiteList") + select distinct t1.site_id,t1.site_name from t_base_site as t1 + where t1.site_storied_building=#(building_id) + order by t1.sort_id; + #end + -- 获取指定单位下的班级列表 + #sql("getBureauClassList") + select distinct t1.class_id,t1.class_name from t_base_class as t1 + where ifnull(graduate_flag,0)=0 + #if(zhuanye_code) + and t1.zydm='#(zhuanye_code)' + #end + #if(batch_year) + and t1.entry_year=#(batch_year); + #end + #end + + -- 获取固定的班级 + #sql("getfixedClass") + select t1.class_id,t1.class_name + from t_base_class as t1 inner join t_base_term as t2 on t1.xq_id=t2.xq_id + inner join t_zhaosheng_zhuanye as t3 on t1.zydm=t3.zhuanye_code + inner join t_zhaosheng_person_type as t4 on t1.person_type_id=t4.person_type_id + order by t1.zydm,t1.xq_id,t1.class_name + #end + + #sql("getZyyxClassTree") + select bureau_id,org_id,org_name,parent_id from t_base_organization where bureau_id=? and department_type_id in (1,2) and b_use=1 + union + select bureau_id,org_id,org_name,'-1' as parent_id from t_base_organization where org_id=? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/class.sql b/dsBase/target/classes/Sql/class.sql new file mode 100644 index 00000000..2668784c --- /dev/null +++ b/dsBase/target/classes/Sql/class.sql @@ -0,0 +1,55 @@ +-- 班级命名空间 +#namespace("class") + + -- 根据单位号获取下面正常班级的个数 + #sql("getClassCountByBureauId") + select count(1) as c from t_base_class where bureau_id=? and b_use=1 + #end + + -- 根据单位ID、学段、入学年份获取班级List + #sql("getClassListByBureauIdStageIdEntryYear") + select class_name from t_base_class where b_use = 1 and bureau_id= ? and stage_id = ? and entry_year = ? + order by class_num + #end + + -- 获取班级列表 + #sql("getClassList") + select class_id, class_name, ifnull(altas_name,'') as altas_name, entry_year, + (select count(1) from t_sys_loginperson t2 where t2.b_use = 1 and identity_id = 6 and t2.s_class_id = t1.class_id) + as studentcount, bureau_id,org_id + from t_base_class t1 where b_use = 1 and bureau_id = #para(0) and org_id=#para(1) and stage_id = #para(2) + and entry_year =#para(3) order by class_num + #end + + -- 获取班级信息 + #sql("getClassInfoByClassId") + select class_name,ifnull(altas_name,'') as altas_name, stage_id,entry_year, bureau_id, city_id, area_id, main_school_id + from t_base_class where b_use = 1 and class_id = ? + #end + + -- 检查重名班级 + #sql("checkClassNameExists") + select class_id from t_base_class where b_use = 1 and bureau_id = ? and stage_id = ? and entry_year = ? + and class_name = ? and class_id <> ? + #end + + -- 修改班级名称 + #sql("updateClassName") + update t_base_class set altas_name = ?,operator=?,ip_address=? where class_id = ? + #end + + -- 删除班级 + #sql("deleteClassById") + update t_base_class set b_use = 0,operator=?,ip_address=?,class_code=UPPER(UUID()) where class_id = ? + #end + + #sql("getStudentCountByClassId") + select person_id from t_sys_loginperson where b_use = 1 and identity_id=6 and s_class_id = ? + #end + + -- 获取指定单位下有哪些班级名称 + #sql("getClassName") + select class_id,class_name,stage_id from t_base_class where bureau_id=? and b_use=1 + #end + +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/dm.sql b/dsBase/target/classes/Sql/dm.sql new file mode 100644 index 00000000..1db967d6 --- /dev/null +++ b/dsBase/target/classes/Sql/dm.sql @@ -0,0 +1,121 @@ +-- 字典命名空间 +#namespace("dm") + + -- 获取学校办别 + #sql("getDmSchoolProperty") + select property_id,property_name from t_dm_schoolproperty + #end + + -- 获取学校隶属关系 + #sql("getDmSchoolLevel") + select * from t_dm_schoollevel + #end + + -- 获取编制的字典 + #sql("getDmBz") + select bz_id,bz_name from t_dm_bz + #end + + -- 获取性别的字典 + #sql("getDmXb") + select xb_id,xb_name from t_dm_xb + #end + + -- 获取民族的字典 + #sql("getDmMz") + select mz_id,mz_name from t_dm_mz + #end + + -- 获取学段字典 + #sql("getDmStage") + select stage_id,stage_name from t_dm_stage order by stage_id + #end + + -- 获取指定学段下的学科 + #sql("getDmSubject") + select subject_id,subject_name from t_dm_subject where stage_id=? order by sort_id + #end + + --获取学历字典信息 + #sql("getDmXl") + select xl_id,xl_name from t_dm_xl + #end + + --获取职称字典信息 + #sql("getDmZc") + select zc_id,zc_name from t_dm_zc + #end + + --获取政治面貌字典信息 + #sql("getDmZzmm") + select zzmm_id,zzmm_name from t_dm_zzmm + #end + + -- 获取全量的行政区划树 + #sql("getAreaAll") + select id,area_code,area_name,parent_id,(case when parent_id='-1' then 1 else 0 end ) as open from t_dm_area order by area_code + #end + + -- 获取指定父节点的行政区划 + #sql("getAreaByParentId") + select t1.id,t1.area_code,t1.area_name,t1.parent_id, + (case when parent_id='-1' then 1 else 0 end ) as open, + (select count(1) from t_dm_area as t2 where t2.parent_id=t1.id) as is_leaf + from t_dm_area as t1 where t1.parent_id=? order by t1.area_code + #end + + -- 获取指定节点的行政区划 + #sql("getAreaById") + select t1.id,t1.area_code,t1.area_name,t1.parent_id,t1.province_id, + (select area_name from t_dm_area as t2 where t1.province_id=t2.id) as province_name,t1.city_id,t1.area_id,t1.level_id,t1.sort_id from t_dm_area as t1 + where t1.id=? order by t1.sort_id + #end + + -- 获取指定父节点的行政区划 + #sql("getOrgLevel") + select org_id,org_code,org_name,parent_id,org_type_id,school_type_id,sort_id,create_time,update_ts,b_use,org_pk_num,city_id,area_id,main_school_id,bureau_id + from t_base_organization where org_id=? + #end + + -- 获取学校类型 + #sql("getSchoolType") + select school_type_id,school_type_name from t_dm_schooltype + #end + + -- 将学校类型换算成组织机构类型 + #sql("convertSchoolTypeToOrgType") + select shi_org_type,area_org_type from t_dm_schooltype where school_type_id=? + #end + + -- 通过ID获取区域的信息 + #sql("getAreaInfoById") + select * from t_dm_area where id=? + #end + + -- 获取学段下学科名称集合,用于EXCEL导入 + #sql("getStageSubjectNameRecord") + select t2.stage_name,t1.subject_name from t_dm_subject as t1 inner join t_dm_stage as t2 + on t1.stage_id=t2.stage_id where t2.b_use=1 + #end + + -- 获取有哪些学生来源 + #sql("getStudentSource") + select source_id,source_name from t_dm_student_source + #end + + -- 获取当前安装市下有哪些县区 + #sql("getAllAreaInfoByInstallCity") + select id,area_code,area_name from t_dm_area where parent_id= + (select global_value from t_base_global where global_code='install_area') order by sort_id + #end + + -- 系统中共有多少种身份 + #sql("getDmIdentity") + select identity_id,identity_name from t_dm_identity + #end + + -- 获取城市的坐标 + #sql("getCityCoordinate") + select * from t_city_coordinate where city_id=? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/global.sql b/dsBase/target/classes/Sql/global.sql new file mode 100644 index 00000000..662b7e91 --- /dev/null +++ b/dsBase/target/classes/Sql/global.sql @@ -0,0 +1,59 @@ +-- 全局变量命名空间 +#namespace("global") + + -- 获取全局变量的分类类型 + #sql("getGlobalType") + select global_type_id,global_type_name from t_base_global_type + #end + + -- 获取所有分类 + #sql("getGlobalList") + select global_id,global_type_id,global_code,global_value,global_name,sort_id from t_base_global order by sort_id + #end + + -- 检查一个globalCode是不是重复 + #sql("checkGlobalCodeCount") + select count(1) as c from t_base_global where global_id!=? and global_code=? + #end + + -- 增加一个全局变量设置 + #sql("addGlobal") + insert into t_base_global(global_type_id,global_code,global_value,global_name,sort_id) values(?,?,?,?,?) + #end + + -- 修改一个全局变量设置 + #sql("updateGlobalById") + update t_base_global set global_type_id=?,global_code=?,global_value=?,global_name=?,sort_id=? where global_id=? + #end + + -- 删除一个全局变量设置 + #sql("delGlobalById") + delete from t_base_global where global_id=? + #end + + -- 获取一个全局变量设置 + #sql("getGlobalById") + select global_type_id,global_code,global_value,global_name from t_base_global where global_id=? + #end + + -- 传入一组global_code 返回对应的数据 + #sql("getGlobalByCodes") + select global_id,global_type_id,global_code,global_value,global_name from t_base_global where global_code=? + #end + + -- 获取area_id通过area_name + #sql("getAreaIdByAreaName") + select id from t_dm_area as t2 where t2.area_name=? and parent_id=(select id from t_dm_area as t1 where t1.area_name=?) + #end + #sql("getAreaIdByAreaNameOnlyCityName") + select id from t_dm_area as t1 where t1.area_name=? + #end + -- 保存设置安装地区 + #sql("saveInstallArea") + update t_base_global set global_value=? where global_code='install_area' + #end + -- 根据全局变量的KEY获取VALUE + #sql("getGlobalValueByKey") + select ifnull(global_value,'') as global_value from t_base_global where global_code = ? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/graduationAction.sql b/dsBase/target/classes/Sql/graduationAction.sql new file mode 100644 index 00000000..0ddc7b01 --- /dev/null +++ b/dsBase/target/classes/Sql/graduationAction.sql @@ -0,0 +1,23 @@ +#namespace("graduation") + + -- 获取当前年份是否已处理完毕业 + #sql("checkCurrentYearIsGraduation") + select count(1) as count from t_base_graduation where finish_year=? + #end + + -- 获取需要处理的班级个数 + #sql("getNeedActionClass") + select class_id from t_base_class where entry_year+school_length=? and b_use=1 limit ? + #end + + -- 修改指定班级下的学生和家长为毕业状态 + #sql("changeToGraduationByClassId") + update t_sys_loginperson set b_use=0,status_code='07' where s_class_id=? + #end + + -- 修改班级为毕业状态 + #sql("changeClassBuse") + update t_base_class set b_use=0 where class_id=? + #end + +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/gtzz.sql b/dsBase/target/classes/Sql/gtzz.sql new file mode 100644 index 00000000..8579cd42 --- /dev/null +++ b/dsBase/target/classes/Sql/gtzz.sql @@ -0,0 +1,521 @@ +-- 命名空间 +#namespace("Gtzz") + -- 获取指定步骤的项目列表(待办) max()...group by 只显示同一个项目+步骤CODE的最后一条 + #sql("getToDoStepList") + select '#(person_id)' as operator_id,progress_id,subject_id,subject_name,org_code,subject_type_id,subject_type_name, + step_code,step_name,action_bureau,year,check_status,is_current,begin_time, + task_number,data_type,is_back_log,lixiang_time,org_name as xmdw + from t_gtzz_progress as ta where is_finish_flag <3 and progress_id in + ( + select max(progress_id) from t_gtzz_progress where step_code in + ( + #for(id:step_codes) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + and is_current = #(is_current) + #if(org_code) + and org_code='#(org_code)' + #end + #if(keyword) + and ((subject_name like '%#(keyword)%') or (task_number like '%#(keyword)%') or (org_name like '%#(keyword)%')) + #end + #if(begin_date) + and lixiang_time >= '#(begin_date)' + #end + #if(end_date) + and lixiang_time <= '#(end_date)' + #end + -- 专家 + #if(expert_person_id) + and subject_id in (select subject_id from t_gtzz_subject_expert where progress_id=0 and step_code in + ( + #for(id:step_codes) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + and person_id='#(expert_person_id)') + #end + -- 监理 + #if(jianli_person_id) + and subject_id in (select subject_id from t_gtzz_subject_jianli where step_code in + ( + #for(id:step_codes) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + and person_id='#(jianli_person_id)') + #end + -- 已上报,不显示退回 + #if(is_current==0) + and check_status<>2 + #end + group by subject_id, step_code + ) order by progress_id desc + #end + + + -- 哪些步骤有上传附件的需要 + #sql("getStepDocument") + select t1.step_code,t1.type_id,t2.type_name from t_gtzz_step_document as t1 + inner join t_gtzz_document_type as t2 on t1.type_id=t2.type_id + where 1=1 + #if(step_code) + and t1.step_code='#(step_code)' + #end + #end + + -- 获取指定项目的详细信息 + #sql("getSubjectExtInfo") + -- pay_flag:第二阶段业务完成标记(项目资金支付)(0:未完成 1:完成) + -- use_flag:项目启用废除标记(0:废除,1:启用) + -- delete_flag 删除标记(0:有效 1:删除) + -- task_type: 0培训 1新建 2维修 3绿化 4校园文化 5软件平台 6 购买服务 7安全 8装备 + -- 数据类型(0-新建 1-支付 2-续拨) + -- process_node_id: 流程节点id + -- process_node_name: 流程节点名称 + select t1.sn,(select parent_name from t_pro_detail where task_sn=t1.sn limit 1) as subject_type_name,t1.task_number,t1.task_title,t1.task_year,t1.ex_send_org_name,t1.pay_flag,t1.use_flag,t1.delete_flag,t1.task_type,t1.create_time,t1.data_type,t1.process_node_id,t1.process_node_name, + t2.itemvalue11 as xmjj, -- 项目简介 + t2.itemValue20 as ztz, -- 总投资 + t2.itemValue47 as zbj, -- 中标价(合同金额) + t2.itemValue20211 as pfje2021, -- 批复金额2021 + t2.itemValue20221 as pfje2022, -- 批复金额2022 + t2.itemValue20231 as pfje2023, -- 批复金额2023 + t2.itemValue20241 as pfje2024, -- 批复金额2024 + t2.itemValue20251 as pfje2025 -- 批复金额2025 + from t_pro_task as t1 left join t_pro_form_value as t2 on t2.task_sn=t1.sn + where t1.sn='#(task_sn)' + #end + + -- 填充项目数据 + #sql("fillSubject") + select t1.sn,t1.task_number,t1.task_title,t1.task_year,t1.ex_send_org_name,t1.task_type as subject_type_id , + t3.subject_type_name, t3.subject_type_name,t1.create_time + from t_pro_task as t1 + left join t_pro_form_value as t2 on t2.task_sn=t1.sn + left join t_gtzz_subject_type as t3 on t1.task_type=t3.subject_type_id + where + -- 只关心市直属学校的数据 + t1.ex_send_org_name in (select org_name from t_gtzz_school) + -- 立项通过,审批完成 + and t1.use_flag=1 and t1.draft_flag=0 and t1.close_flag=1 and t1.data_type=0 + -- 按申报时间倒序 + order by t1.create_time desc + #end + + -- 获取项目财务审批流水 + #sql("getSubjectPreInfo") + select handle_node_name,receive_user_name as send_user_name,msg_title, handle_opinion,create_time,modify_time + from t_pro_message where task_sn='#(task_sn)' and DELETE_FLAG=0 order by create_time + #end + -- 获取指定年份的项目查询列表 + #sql("getXmxcList") + select * from t_gtzz_progress where progress_id in + (select max(progress_id) from t_gtzz_progress group by subject_id) + #if(year) + and year=#(year) + #end + #if(org_code) + and org_code='#(org_code)' + #end + #if(year) + and year='#(year)' + #end + #if(subject_type_id) + and subject_type_id=#(subject_type_id) + #end + #if(keyword) + and subject_name like '%#(keyword)%' + #end + and step_code like '#(step_code)%' order by begin_time desc + #end + -- 获取符合条件的专家列表 + #sql("getExpertList") + select t1.*, + (select group_concat(zc_name) from t_gtzz_expert_domain as t2 where t1.person_id=t2.person_id group by t2.zc_id) zc_name + from t_gtzz_expert as t1 where b_use=1 + #if(keyword) + and t1.person_name like '%#(keyword)%' + #end + #if(zc_id) + and t1.person_id in (select person_id from t_gtzz_expert_domain where zc_id=#(zc_id)) + #end + order by t1.bureau_name,t1.person_name + #end + -- 项目查询列表之专家分配 + #sql("getSubjectListForSettingExpert") + select * from ( + select t1.*, + (select count(1) from t_gtzz_subject_expert as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(step_code)' and t2.progress_id=0) as zj_count, + (select count(1) from t_gtzz_progress as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(end_step_code)' ) as can_update + from t_gtzz_subject as t1 where + subject_id in (select subject_id from t_gtzz_progress where + step_code>='#(start_step_code)' and step_code<='#(end_step_code)' + #if(not_setting_zj) + and is_current=1 + #end + ) + #if(data_type) + and t1.data_type=#(data_type) + #end + + #if(begin_date) + and t1.lixiang_time between '#(begin_date)' and '#(end_date)' + #end + + #if(keyword) + and (t1.xmmc like '%#(keyword)%' or t1.xmdw like '%#(keyword)%' or t1.task_number like '%#(keyword)%') + #end + order by t1.lixiang_time + ) as ta where 1=1 + #if(setting_zj) + and ta.zj_count>0 + #end + #if(not_setting_zj) + and ta.zj_count=0 + #end + #end + -- 项目查询列表之监理公司分配 + #sql("getFenPeiJianLiList") + select * from ( + select t1.*, + (select progress_id from t_gtzz_progress as t2 where t1.subject_id=t2.subject_id order by progress_id desc limit 1 ) as progress_id, + (select max(step_code) from t_gtzz_progress as t2 where t2.subject_id=t1.subject_id) as last_step_code, + (select count(1) from t_gtzz_subject_jianli as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(step_code)' and t2.person_id='-1') as no_need_jl, + (select count(1) from t_gtzz_subject_jianli as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(step_code)') as jl_count, + (select count(1) from t_gtzz_progress as t2 where t1.subject_id=t2.subject_id and t2.step_code='#(end_step_code)') as can_update + from t_gtzz_subject as t1 where t1.bureau_id='#(bureau_id)' + #if(data_type) + and t1.data_type=#(data_type) + #end + #if(begin_date) + and t1.lixiang_time between '#(begin_date)' and '#(end_date)' + #end + #if(keyword) + and (t1.xmmc like '%#(keyword)%' or t1.xmdw like '%#(keyword)%' or t1.task_number like '%#(keyword)%' ) + #end + ) as ta where last_step_code>='0206' + #if(setting_jl) + and ta.jl_count>0 + #end + #if(not_setting_jl) + and ta.jl_count=0 + #end + order by ta.progress_id desc + #end + -- 获取指定处理流水中指定流水号的上传文件类型列表 + #sql("getProgressIdDocTypeList") + select ta.document_type_id,count(1) as c from + (select t1.progress_id,t2.* from t_gtzz_progress_file as t1 inner join t_gtzz_file as t2 on t1.file_id=t2.file_id) as ta + where ta.progress_id=#(progress_id) group by ta.document_type_id + #end + -- 综合查询(项目) + #sql("querySubject") + select t1.*, + (select progress_id from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as progress_id, + (select step_code from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as step_code + from t_gtzz_subject as t1 where 1=1 + #if(keyword) + and (t1.xmmc like '%#(keyword)%' or t1.task_number like '%#(keyword)%') + #end + #if(subject_type_ids) + and t1.subject_type_id in + ( + #for(id:subject_type_ids) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + #end + #if(org_code) + and t1.org_code='#(org_code)' + #end + #if(begin_date) + and (t1.lixiang_time between '#(begin_date)' and '#(end_date)') + #end + #if(data_type) + and t1.data_type=#(data_type) + #end + #if(sbnd) + and t1.sbnd=#(sbnd) + #end + #if(step_code) + and t1.subject_id in (select subject_id from t_gtzz_progress where is_current=#(is_current) and step_code like '#(step_code)%') + #end + #end + + -- 综合查询(项目关闭) + #sql("querySubjectForClose") + select *, + (select progress_id from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as progress_id, + (select step_code from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as step_code, + (select is_finish_flag from t_gtzz_progress where subject_id=t1.subject_id order by progress_id desc limit 1) as is_finish_flag + from t_gtzz_subject as t1 + where 1=1 + #if(keyword) + and (t1.xmmc like '%#(keyword)%' or t1.task_number like '%#(keyword)%') + #end + #if(subject_type_ids) + and t1.subject_type_id in + ( + #for(id:subject_type_ids) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + #end + #if(org_code) + and t1.org_code='#(org_code)' + #end + #if(begin_date) + and (t1.lixiang_time between '#(begin_date)' and '#(end_date)') + #end + #if(data_type) + and t1.data_type=#(data_type) + #end + #if(sbnd) + and t1.sbnd=#(sbnd) + #end + and (select t2.is_finish_flag from t_gtzz_progress as t2 where t2.subject_id=t1.subject_id order by t2.progress_id desc limit 1)=2 + #end + + -- 综合查询(文件) + #sql("queryFile") + select t2.*,t3.*,concat('/dsBase/upload/',t2.file_id,'.', t2.suffix) as url from t_gtzz_progress_file as t1 inner join t_gtzz_file as t2 on t1.file_id=t2.file_id + inner join t_gtzz_progress as t3 on t1.progress_id=t3.progress_id + where 1=1 + #if(keyword) + and((t3.subject_name like '%#(keyword)%') or (t3.task_number like '%#(keyword)%')) + #end + #if(document_type_ids) + and t2.document_type_id in + ( + #for(id:document_type_ids) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + #end + #if(subject_type_ids) + and t3.subject_type_id in + ( + #for(id:subject_type_ids) + #(for.index > 0 ? ", " : "") '#(id)' + #end + ) + #end + #if(org_code) + and t1.org_code='#(org_code)' + #end + #if(begin_date) + and t2.update_ts between '#(begin_date)' and '#(end_date)' + #end + #if(data_type) + and t3.data_type=#(data_type) + #end + #if(sbnd) + and t3.year=#(sbnd) + #end + #if(step_code) + and t3.step_code like '#(step_code)%' + #end + #end + -- 四个阶段的统计信息(市、校两级兼容) + #sql("tjTopFourStep") + select + (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 + #if(org_code) + and org_code='#(org_code)' + #end + ) as xmlx, + (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 + #if(org_code) + and org_code='#(org_code)' + #end + and step_code like '02%') as zbcg, + (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 + #if(org_code) + and org_code='#(org_code)' + #end + and is_finish_flag=0 and step_code like '03%') as ssys, + (select count(1) from t_gtzz_sy_laststep where year=year(now())-1 + #if(org_code) + and org_code='#(org_code)' + #end + and is_finish_flag=1) as xmbf + #end + -- 今年项目概览(市专用) + #sql("tjSubjectSummaryCurrentYear") + select sum(subject_count) as subject_count, + sum(finish_count) as finish_count, + sum(close_count) as close_count, + sum(jz_count) as jz_count, + sum(yq_count) as yq_count, + ROUND(sum(money),2) as money + from t_gtzz_sy_base_year where year=year(now())-1 + #end + -- 逾期提醒(市、校两级兼容) + #sql("tjYqList") + select * from t_gtzz_sy_laststep where 1=1 + #if(org_code) + and org_code='#(org_code)' + #end + and yq_count>0; + #end + -- 项目待办(市、校两级兼容) + #sql("tjSubjectWaitStep") + select t1.step_code,t1.step_name,ifnull(t2.count,0) as count from t_gtzz_step as t1 left join ( + select step_code,count(1) as count from t_gtzz_sy_laststep + where is_current=1 and is_finish_flag<3 + #if(org_code) + and org_code='#(org_code)' + #end + group by step_code) as t2 on t1.step_code=t2.step_code where (t1.step_code like '02%' or t1.step_code like '03%') + #end + -- 今年项目分布(市专用) -- year=year(now()) + #sql("tjFenBu") + select * from + ( + select org_code,org_name,sum(subject_count) as subject_count,sum(finish_count) as finish_count, + sum(close_count) as close_count, + sum(jz_count) as jz_count, + sum(yq_count) as yq_count, + ROUND(sum(money),2) as money + from t_gtzz_sy_base_year where year=year(now())-1 + group by org_code,org_name + ) as ta order by ta.subject_count desc,money desc,finish_count desc + #end + -- 项目进展(学校专用) + #sql("tjxmJz") + select id,year,subject_id,subject_name,date_format(lixiang_time, '%Y-%m-%d') as lixiang_time,step_code,step_name, + step_order_id,big_step_name, + all_step_count,is_finish_flag,is_current,org_code,begin_time,end_time,duration,days_limit, + date_diff_count,create_time,yq_count from t_gtzz_sy_laststep where org_code='#(org_code)' + #end + -- 获取结转的项目列表 + #sql("getJzList") + select max(progress_id) as progress_id, + subject_id,org_code,org_name,subject_name,subject_type_id,subject_type_name, + year,step_code,step_name,begin_time,end_time,action_bureau,input_value,radio_id, + is_current,is_back_log,is_finish_flag,check_status,lixiang_time,bxlx_name,cxlx_name, + jsfa_type_id,task_number,data_type,is_finish_time from t_gtzz_progress where org_code='#(org_code)' + and is_finish_flag=#(is_finish_flag) + group by subject_id order by progress_id + #end + -- 归档列表 + #sql("getGdList") + select org_code,org_name, sum(subject_count) as subject_count, sum(finish_count) as finish_count, + sum(close_count) as close_count, sum(jz_count) as jz_count, sum(yq_count) as yq_count,ROUND(sum(money),2) as money + from t_gtzz_sy_base_year where 1=1 + #if(year) + and year=#(year) + #end + #if(org_code) + and org_code='#(org_code)' + #end + group by org_code,org_name order by sum(subject_count) desc + #end + -- 获取监理项目列表 + #sql("getJlSubjectList") + select * from (select t1.*, + ifnull((select count(distinct group_question_id) from t_gtzz_jianli_question as t2 where t2.subject_id=t1.subject_id),0) as question_count, + ifnull((select count(distinct group_question_id) from t_gtzz_jianli_question as t2 where t2.subject_id=t1.subject_id and t2.state_id=3),0) as finish_count, + (select t4.begin_time from t_gtzz_progress as t4 where t4.subject_id=t1.subject_id and t4.step_code='0301' and t4.progress_id='#(being_date)' and ta.qd_time <='#(end_date) 23:59:59' + #end + #if(keyword) + and (ta.subject_name like '%#(keyword)%' or ta.org_name like '%#(keyword)%') + #end + order by ta.begin_time desc + #end + -- 获取指定项目的监理流水 + #sql("getSubjectQuestion") + select t1.* from t_gtzz_jianli_question as t1 where t1.group_question_id=t1.progress_id + and t1.subject_id=#(subject_id) + #if(question_level_id) + and t1.question_level_id=#(question_level_id) + #end + #if(question_type_id) + and t1.question_type_id=#(question_type_id) + #end + #if(begin_date) + and t1.create_time between '#(begin_date)' and '#(end_date) 23:59:59' + #end + #if(state_id) + and t1.state_id=#(state_id) + #end + order by t1.progress_id desc + #end + -- ==========统计分析 ============================================================================================================================================ + -- p_shouye_init_base_year + -- 插入单位数据 + -- 刷新频率:项目变更+项目单位变更 + -- 策略:项目变更时更新 + #sql("insertBureauData") + insert into t_gtzz_sy_base_year(org_code,org_name,year) + select t1.org_code,t1.org_name,t2.year from t_gtzz_school as t1 cross join + (select distinct sbnd as year from t_gtzz_subject) as t2 + #end + + -- 按年度更新项目总数 + -- 策略:项目变更时更新 + #sql("updateProjectCountByYear") + update t_gtzz_sy_base_year as t1, (select org_code,sbnd,count(1) as subject_count from t_gtzz_subject group by org_code,sbnd) as t2 + set t1.subject_count=t2.subject_count where t1.org_code=t2.org_code and t1.year=t2.sbnd; + #end + + -- 按年度更新预算金额 + #sql("updateMoneyByYear") + update t_gtzz_sy_base_year p,(select org_code,sbnd, sum(ifnull(money,0)) as money + from t_gtzz_subject group by org_code,sbnd) as s set p.money = s.money + where p.org_code = s.org_code and p.year=s.sbnd + #end + + -- p_shouye_init_laststep + #sql("get_02_step_count") + select count(1) as c from (select step_order_id from t_gtzz_step where step_code like '02%' and LENGTH(step_code)=4 group by step_order_id ) as t1 + #end + + #sql("get_03_step_count") + select count(1) as c from (select step_order_id from t_gtzz_step where step_code like '03%' and LENGTH(step_code)=4 group by step_order_id ) as t1 + #end + + -- 按年度+单位查询完成个数、关闭个数、延期个数 + #sql("getRefreshCountByYearOrgCode") + select t1.id, t1.year,t1.org_code, + (select count(distinct t2.subject_id) from t_gtzz_progress as t2 where t2.is_finish_flag=1 and t2.year=t1.year and t2.org_code=t1.org_code) as c1, + (select count(distinct t2.subject_id) from t_gtzz_progress as t2 where t2.is_finish_flag=2 and t2.year=t1.year and t2.org_code=t1.org_code) as c2, + (select ifnull(sum(t2.yq_count),0) from t_gtzz_sy_laststep as t2 where t2.year =t1.year and t2.org_code =t1.org_code) as c3 + from t_gtzz_sy_base_year as t1 + #end + -- 0:未完成项目流程,1:已完成项目流程,2:项目流程已取消,3:项目结转,本年结束,转入明年。 + #sql("laststep_1") + insert into t_gtzz_sy_laststep(year,subject_id,step_code,is_finish_flag,is_current,org_code,begin_time,end_time,subject_name,lixiang_time) + select year,subject_id,step_code,is_finish_flag,is_current,org_code,begin_time,end_time,subject_name,lixiang_time from t_gtzz_progress where progress_id in + (select progress_id from (select max(progress_id),subject_id from t_gtzz_progress group by subject_id) as ta) + #end + -- 对于结束时间为空的,写入当前时间 + #sql("laststep_2") + update t_gtzz_sy_laststep set end_time=now() where end_time is null + #end + -- 补充步骤名称和内部排序号 + #sql("laststep_3") + update t_gtzz_sy_laststep as t1,t_gtzz_step as t2 set t1.step_name=t2.step_name,t1.days_limit=t2.days_limit where t1.step_code=t2.step_code + #end + #sql("laststep_4") + update t_gtzz_sy_laststep as t1,t_gtzz_step as t2 set t1.step_order_id=t2.in_order_id where t1.step_code=t2.step_code and t1.step_code like '02%' + #end + #sql("laststep_5") + update t_gtzz_sy_laststep as t1,t_gtzz_step as t2 set t1.step_order_id=#para(v_02_step_count)+t2.in_order_id where t1.step_code=t2.step_code and t1.step_code like '03%' + #end + -- 补充大类名称 + -- 写入运行时长 + -- 写入超时时长 + #sql("laststep_6") + update t_gtzz_sy_laststep as t1 set t1.duration=datediff(end_time,begin_time), + t1.date_diff_count=days_limit-duration, + t1.big_step_name=(select step_name from t_gtzz_step as t2 where substr(t1.step_code,1,2)=t2.step_code), + t1.all_step_count=#para(v_02_step_count)+#para(v_03_step_count) + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/loginPerson.sql b/dsBase/target/classes/Sql/loginPerson.sql new file mode 100644 index 00000000..7a150e6f --- /dev/null +++ b/dsBase/target/classes/Sql/loginPerson.sql @@ -0,0 +1,251 @@ +-- 登录命名空间 +#namespace("loginPerson") + + -- 获取指定身份的最大主键号 + #sql("getMaxPkByIdentityId") + select ifnull(max(identity_pk_num),0) as identity_pk_num from t_sys_loginperson where identity_id=? + #end + -- 删除一个人员:通过单位ID + #sql("deletePersonByBureauId") + update t_sys_loginperson set b_use=0,operator=?,ip_address=? where bureau_id=? and identity_id=4 + #end + + -- 删除一个人员:通过人员编号 + #sql("deletePersonById") + UPDATE t_sys_loginperson + SET b_use = 0,status_code=?,operator=?,ip_address=? + WHERE + person_id = ? + #end + + -- 根据学生ID获取家长ID + #sql("getParentInfoByStudentId") + select person_id from t_sys_loginperson where p_child_id=? + #end + + -- 修改密码 + #sql("changePwd") + update t_sys_loginperson set operator=?,ip_address=?,original_pwd=?,pwd=?,pwdmd5=? where person_id=? + #end + + -- 获取指定人员所在的区域信息 + #sql("getLoginPersonAreaInfo") + select city_id,area_id from t_sys_loginperson where person_id=? + #end + + -- 根据person_id获取是否已绑定了手机号 + #sql("getIsBindPhoneNum") + select ifnull(telephone, 0) as telephone from t_sys_loginperson where b_use = 1 and person_id = ? + #end + + -- 根据person_id获取是否已绑定了邮箱 + #sql("getIsBindEmail") + select ifnull(email, 0) as email from t_sys_loginperson where b_use = 1 and person_id = ? + #end + + -- 根据person_id获取是否已绑定了QQ + #sql("getIsBindQq") + select ifnull(qq_openid, 0) as qq_openid from t_sys_loginperson where b_use = 1 and person_id = ? + #end + + -- 根据person_id获取是否已绑定了微信 + #sql("getIsBindWx") + select ifnull(wx_openid, 0) as wx_openid from t_sys_loginperson where b_use = 1 and person_id = ? + #end + + -- 人员与手机号绑定 + #sql("bindPersonPhoneNum") + update t_sys_loginperson set telephone= ?,operator=?,ip_address=? where person_id = ? + #end + + -- 人员与邮箱绑定 + #sql("bindPersonEmail") + update t_sys_loginperson set email= ?,operator=?,ip_address=? where person_id = ? + #end + + -- 获取一个QQ的openId获了是否已存在 + #sql("getQqOpenIdIsExist") + select person_id from t_sys_loginperson where b_use = 1 and qq_openid =? + #end + + -- 绑定QQ + #sql("bindPersonQq") + update t_sys_loginperson set qq_openid= ?,operator=?,ip_address=? where person_id = ? + #end + + -- 获取一个微信的openId获了是否已存在 + #sql("getWxOpenIdIsExist") + select person_id from t_sys_loginperson where b_use = 1 and wx_openid =? + #end + + -- 绑定微信 + #sql("bindPersonWx") + update t_sys_loginperson set wx_openid= ?,operator=?,ip_address=? where person_id = ? + #end + + -- 根据人员的ID获取此人员的登录信息 + #sql("getLoginInfoByPersonId") +select person_id,person_name,identity_id,login_name,pwd,original_pwd,xb,zzmm,mz,idcard_code,birthday,create_time,sort_id,telephone,wx_openid,qq_openid,email,status_code,b_use,identity_pk_num,city_id,area_id,main_school_id,bureau_id,org_id,s_class_id,s_xjh,s_xjfh,s_source, + t_duty_charge,t_xl_id,t_zc_id,t_stage_id,t_subject_id,telephone,date_format(t_teaching_date,'%Y-%m-%d') as t_teaching_date,p_child_id, + update_ts from t_sys_loginperson where person_id =? + #end + + -- 根据单位号获取下面正常教师的个数 + #sql("getTeacherCountByBureauId") + select count(1) as c from t_sys_loginperson where bureau_id=? and b_use=1 and identity_id=5 + #end + + -- 根据部门获取下面正常教师的个数 + #sql("getTeacherCountByOrgId") + select count(1) as c from t_sys_loginperson where org_id=? and b_use=1 and identity_id=5 + #end + + -- 根据单位号获取下面正常学生的个数 + #sql("getStudentCountByBureauId") + select count(1) as c from t_sys_loginperson where bureau_id=? and b_use=1 and identity_id=6 + #end + + -- 根据单位号获取下面正常家长的个数 + #sql("getParentCountByBureauId") + select count(1) as c from t_sys_loginperson where bureau_id=? and b_use=1 and identity_id=7 + #end + + -- 根据身份证号获取是否存在 + #sql("getIdCardIsExist") + select person_id from t_sys_loginperson where b_use = 1 and idcard_code=? + #end + + -- 根据手机号获取是否存在 + #sql("getTelephoneIsExist") + select person_id from t_sys_loginperson where b_use = 1 and telephone=? + #end + + -- 根据邮箱获取是否存在 + #sql("getEmailIsExist") + select person_id from t_sys_loginperson where b_use = 1 and email=? + #end + + -- 根据身份证号和人员ID获取是否存在 + #sql("getIdCardIsExistByPersonId") + select person_id from t_sys_loginperson where b_use = 1 and idcard_code=? and person_id<>? + #end + + -- 根据手机号和人员ID获取是否存在 + #sql("getTelephoneIsExistByPersonId") + select person_id from t_sys_loginperson where b_use = 1 and telephone=? and person_id<>? + #end + + -- 根据邮箱获和人员ID获取是否存在 + #sql("getEmailIsExistByPersonId") + select person_id from t_sys_loginperson where b_use = 1 and email=? and person_id<>? + #end + + + -- 市管理员 + #sql("getPrintCityManager") + select person_id,person_name,login_name,original_pwd,pwd from t_sys_loginperson where identity_id =2 order by sort_id + #end + + -- 市直属单位 + #sql("getPrintCityBureau") + select person_id,person_name,login_name,original_pwd,pwd from t_sys_loginperson where identity_id =4 + order by sort_id + #end + + -- 县区管理员 + #sql("getPrintAreaManager") + select person_id,person_name,login_name,original_pwd,pwd from t_sys_loginperson where identity_id =3 order by sort_id + #end + + -- 指定县区的单位 + #sql("getPrintAreaBureau") + select person_id,person_name,login_name,original_pwd,pwd from t_sys_loginperson where identity_id =4 and area_id=#para(0) order by sort_id + #end + -- 更改人员的所在部门 + #sql("changePersonBureau") + update t_sys_loginperson set city_id=?,area_id=?,main_school_id=?,bureau_id=?,org_id=?,operator=?,ip_address=? where person_id=? + #end + + -- 更改学生、家长的所在班级 + #sql("changePersonClass") + update t_sys_loginperson set city_id=?,area_id=?,main_school_id=?,bureau_id=?,s_class_id=?,operator=?,ip_address=? where person_id=? + #end + + -- 检查身份证号与数据库中的身份证号重复,教师 + #sql("checkRepeatidcardByTeacherImport") + select t1.idcard_code from t_import_teacher_by_excel as t1 where t1.batch_id=? + and t1.idcard_code_aes in (select idcard_code from t_sys_loginperson as t2 where t2.b_use=1) + #end + -- 检查身份证号与数据库中的身份证号重复,学生 + #sql("checkRepeatidcardByStudentImport") + select t1.idcard_code from t_import_student_by_excel as t1 where t1.batch_id=? + and t1.idcard_code_aes in (select idcard_code from t_sys_loginperson as t2 where t2.b_use=1) + #end + + -- 使用单位ID填充部门ID + #sql("fillOrgIdByBureauId") + update t_import_teacher_by_excel set org_id=bureau_id where batch_id=? and org_name='' + #end + + -- 有哪些部门需要检查 + #sql("needCheckOrgName") + select org_name from t_import_teacher_by_excel where batch_id=? and org_name!='' group by org_name + #end + + -- 有哪些班级需要检查 + #sql("needCheckClassName") + select class_name,stage_id from t_import_student_by_excel where batch_id=? group by class_name,stage_id + #end + + -- 找到本次教师导入批次的组织机构名称有哪些 + #sql("selectBatchInfoTeacher") + select * from t_import_teacher_by_excel where batch_id=? + #end + #sql("selectBatchInfoStudent") + select * from t_import_student_by_excel where batch_id=? + #end + + -- 根据导入的ID,修改部门编号 + #sql("UpdateOrgIdByImportTeacherId") + update t_import_teacher_by_excel set org_id=? where id=? + #end + + -- 根据导入的ID,修改班级编号 + #sql("UpdateOrgIdByImportStudentId") + update t_import_student_by_excel set class_id=? where id=? + #end + + --删除导入的临时数据,通过batchId + #sql("deleteByBatchId") + delete from t_import_teacher_by_excel where batch_id=? + #end + + -- 根据人员ID,获取教师的学段id + #sql("getStageInfoByTeacherId") + select t_stage_id as s_stage_id from t_sys_loginperson where person_id=? + #end + -- 根据人员ID,获取学生的学段id + #sql("getStageInfoByStudentId") + select s_stage_id from t_sys_loginperson where person_id=? + #end +-- 根据人员ID,获取家长的学段id + #sql("getStageInfoByParentId") + select s_stage_id from t_sys_loginperson where person_id=? + #end + + -- 根据主、子账号获取信息 + #sql("getMountAccountInfo") + select id,person_id,identity_id,main_person_id,main_identity_id,account_type from t_sys_account_mount where main_person_id = ? and person_id = ? + #end + + -- 挂载子账号 + #sql("mountSubAccount") + insert into t_sys_account_mount (person_id,identity_id,main_person_id,main_identity_id,account_type) values (?,?,?,?,?) + #end + + -- 根据人员ID和密码,验证是不是合法,用于修改新密码 + #sql("checkPwdByPersonId") + select count(*) as c from t_sys_loginperson where person_id=? and pwd=? + #end + +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/menu.sql b/dsBase/target/classes/Sql/menu.sql new file mode 100644 index 00000000..360b8830 --- /dev/null +++ b/dsBase/target/classes/Sql/menu.sql @@ -0,0 +1,78 @@ +-- 菜单命名空间 +#namespace("menu") + -- 获取获取异步接口 + #sql("selectChildAsync") +select t1.menu_id,t1.menu_name,t1.parent_id,t1.sort_id,t1.url,t1.memo,t1.create_time,t1.update_ts,t1.level_id, + (select count(1) from t_base_menu as t2 where t1.menu_id=t2.parent_id) as is_leaf +from t_base_menu as t1 where parent_id=? order by t1.sort_id + #end + + -- 获取全部菜单 + #sql("selectAll") + select t1.menu_id as id,t1.menu_name as name,t1.parent_id as pId,t1.sort_id,t1.url,t1.memo,t1.create_time,t1.update_ts,t1.level_id, + (select count(1) from t_base_menu as t2 where t1.menu_id=t2.parent_id) as is_leaf + from t_base_menu as t1 order by t1.sort_id + #end + -- 获取所有不为学校提供的数据 + #sql("selectNotForSchool") + select menu_id from t_base_menu where for_school=0 + #end + -- 获取所有不为单位提供的数据 + #sql("selectNotForBureau") + select menu_id from t_base_menu where for_bureau=0 + #end + + --删除指定菜单ID + #sql("deletePrivilageByMenuId") + delete from t_base_menu_privilage where menu_id=? + #end + + -- 根据菜单ID返回这个菜单的可用身份 + #sql("selectIdentityByMenuId") +select identity_id from t_base_menu_privilage where menu_id=? + #end + + -- 获取指定的节点信息 + #sql("selectSingle") + select t1.menu_id,t1.menu_name,t1.parent_id,t1.sort_id,t1.url,t1.memo, + t1.create_time,t1.update_ts,t1.level_id,t1.for_school,t1.for_bureau, + t1.icon,t1.isFull, + (select count(1) from t_base_menu as t2 where t1.menu_id=t2.parent_id) as is_leaf + from t_base_menu as t1 where t1.menu_id=? + #end + + -- 通过身份获取有哪些菜单ID + #sql("selectMenuByIdentityId") + select menu_id from t_base_menu_privilage where identity_id=? + union + select 1 + #end + + -- 查询菜单的ids + #sql("selectMenuForIds") + select t1.menu_id,t1.menu_name,t1.parent_id,t1.sort_id,t1.url,t1.memo,t1.create_time,t1.update_ts,t1.level_id, + (select count(1) from t_base_menu as t2 where t1.menu_id=t2.parent_id) as is_leaf + from t_base_menu as t1 where t1.menu_id in + ( + #for(x:ids) + #(for.index == 0 ? "" : ",") #para(x) + #end + ) order by t1.sort_id + #end + + -- 删除指定职务+分管工作的所有菜单,准备重新设置 + #sql("deleteMenuByDutyInCharge") + delete from t_base_principalship_menu where duties_id=#(duties_id) and in_charge_id=#(in_charge_id) + #end + + -- 获取指定职务+分管工作的所有菜单,用于显示 + #sql("selectMenuByDutyInCharge") + select duties_id,in_charge_id,menu_id from t_base_principalship_menu where duties_id=? and in_charge_id=? + #end + + -- 人员根据职务+分管工作可见的菜单 + #sql("selectMenuByPersonId") + select distinct menu_id from t_base_principalship_menu as t1 inner join t_person_duty_charge as t2 on t1.duties_id=t2.`duties_id` + and t1.in_charge_id=t2.`in_charge_id` where t2.person_id=? and t2.b_use=1 + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/organization.sql b/dsBase/target/classes/Sql/organization.sql new file mode 100644 index 00000000..09c0c270 --- /dev/null +++ b/dsBase/target/classes/Sql/organization.sql @@ -0,0 +1,122 @@ +-- 组织机构命名空间 +#namespace("organization") + + -- 获取组织机构的最大主键号 + #sql("getMaxPkByOrg") + select ifnull(max(org_pk_num),0) as org_pk_num from t_base_organization + #end + -- 获取指定单位或组织机构的信息 + #sql("getOrgInfoById") + select org_id,org_code,org_name,parent_id,org_type_id,school_type_id,sort_id,create_time,department_type_id, + update_ts,b_use,org_pk_num,ifnull(city_id, -1) as city_id,ifnull(area_id, -1) as area_id, + ifnull(main_school_id, -1) as main_school_id,bureau_id,property_id,level_id + from t_base_organization where org_id=? and b_use=1 + #end + + -- 判断一个组织机构号是不是单位 + #sql("IsBureau") + select count(1) as c from t_base_organization where org_id=? and org_id=bureau_id + #end + + + -- 根据单位号获取下面正常部门的个数 + #sql("getOrgCountByBureauId") + select count(1) as c from t_base_organization where bureau_id=? and org_id<>? and b_use=1 + #end + + + -- 删除一个机构 + #sql("deleteOrgById") + update t_base_organization set b_use=0,operator=?,ip_address=? where org_id=? + #end + + -- 判断此ORG_CODE是不是存在 + #sql("getOrgCodeCount") + select count(1) as c from t_base_organization where org_code=? and b_use=1 + #end + + -- 判断此ORG_CODE是不是存在(排除自己用于修改) + #sql("getOrgCodeCountExceptSelf") + select count(1) as c from t_base_organization where org_code=? and org_id!=? and b_use=1 + #end + + -- 获取部门列表 + #sql("getOrgList") + select * from t_base_organization where parent_id=#para(0) and b_use=1 order by sort_id + #end + + -- 获取学校列表 + #sql("getSchoolList") + select t1.org_id,t1.org_code,t1.org_name,t1.parent_id,t1.org_type_id,t1.school_type_id,t1.sort_id, + t1.create_time,t1.update_ts,t1.b_use,t1.org_pk_num,t1.city_id,t1.area_id,t1.main_school_id,t1.bureau_id, + (select t2.school_type_name from t_dm_schooltype as t2 where t2.school_type_id=t1.school_type_id) as school_type_name + from t_base_organization as t1 where t1.parent_id=#para(0) and t1.b_use=1 and t1.school_type_id>0 + #end + + -- 获取学校列表(指定学校类型) + #sql("getSchoolListBySchoolType") + select t1.org_id,t1.org_code,t1.org_name,t1.parent_id,t1.org_type_id, + t1.school_type_id,t1.sort_id,t1.create_time,t1.update_ts,t1.b_use, + t1.org_pk_num,t1.city_id,t1.area_id,t1.main_school_id,t1.bureau_id, + (select t2.school_type_name from t_dm_schooltype as t2 where t2.school_type_id=t1.school_type_id) as school_type_name + from t_base_organization as t1 where t1.parent_id=#para(0) and t1.b_use=1 and t1.school_type_id =#para(1) + #end + + + -- 获取单位列表 + #sql("getBureauList") + select t1.org_id,t1.org_code,t1.org_name,t1.parent_id,t1.org_type_id, + (select t2.name from t_base_org_type_principalship as t2 WHERE t2.id=t1.org_type_id) as org_type_name, + t1.school_type_id,t1.sort_id,t1.create_time, + t1.update_ts,t1.b_use,t1.org_pk_num,t1.city_id,t1.area_id,t1.main_school_id,t1.bureau_id + from t_base_organization as t1 where t1.parent_id=#para(0) and t1.school_type_id<=0 and t1.b_use=1 order by t1.sort_id,t1.update_ts + #end + + -- 获取单位列表(指定单位类型) + #sql("getBureauListByBureauType") + select t1.org_id,t1.org_code,t1.org_name,t1.parent_id,t1.org_type_id, + (select t2.name from t_base_org_type_principalship as t2 WHERE t2.id=t1.org_type_id) as org_type_name, + t1.school_type_id,t1.sort_id,t1.create_time, + t1.update_ts,t1.b_use,t1.org_pk_num,t1.city_id,t1.area_id,t1.main_school_id,t1.bureau_id + from t_base_organization as t1 where t1.parent_id=#para(0) and t1.school_type_id<=0 and t1.org_type_id = #para(1) + and t1.b_use=1 order by t1.sort_id,t1.update_ts + #end + + -- 组织机构部门树 + #sql("getOrgTreeByBureauId") + select org_id,org_name,(case when bureau_id=org_id then '-1' else parent_id end) as parent_id,bureau_id,school_type_id,department_type_id from t_base_organization where bureau_id=? + and b_use=1 order by sort_id,update_ts + #end + + -- 传入一个区域ID,获取它下面的学校 + #sql("getSchoolListByAreaId") + select org_id,org_code,org_name from t_base_organization where (city_id=#para(0) or area_id=#para(1)) and b_use=1 and is_bureau=1 + and org_name like #para(2) and school_type_id>0 order by area_id,sort_id + #end + -- 传入一个区域ID,获取它下面的单位 + #sql("getBureauListByAreaId") + select org_id,org_code,org_name from t_base_organization where (city_id=#para(0) or area_id=#para(1)) and b_use=1 and is_bureau=1 + and org_name like #para(2) and school_type_id<=0 order by area_id,sort_id + #end + -- 传入一个区域ID,获取它下面全部 + #sql("getAllListByAreaId") + select org_id,org_code,org_name from t_base_organization where (city_id=#para(0) or area_id=#para(1)) and b_use=1 and is_bureau=1 + and org_name like #para(2) order by area_id,sort_id + #end + + --传入一个单位ID,获取它的一级部门有哪些 + #sql("getFirstLevelOrgName") + select org_id,org_name from t_base_organization where bureau_id=? and parent_id=? and b_use=1 + #end + + #sql("getZyClassSelectTreeLevel1") + select t1.org_id,t1.org_name,t1.parent_id,(select count(1) from t_base_organization as t2 where t1.parent_id=t2.org_id) as cnt + from t_base_organization as t1 where t1.bureau_id='#(bureau_id)' + and ((t1.department_type_id =1) or (t1.department_type_id =2 and t1.parent_id='#(bureau_id)')) + #end + + #sql("getZyClassSelectTreeLevel2") + select org_id,org_name,parent_id,0 as cnt from t_base_organization where bureau_id='#(bureau_id)' + and (department_type_id =2 and parent_id<>'#(bureau_id)') + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/student.sql b/dsBase/target/classes/Sql/student.sql new file mode 100644 index 00000000..283f6939 --- /dev/null +++ b/dsBase/target/classes/Sql/student.sql @@ -0,0 +1,67 @@ +#namespace("student") + + -- 根据学生的ID获取家长的信息 + #sql("getParentByChildId") + select * from t_sys_loginperson where p_child_id=? + #end + + -- 获取学生列表 + #sql("getStudentOrParentList") + SELECT + t1.person_id, + t1.person_name, + t1.login_name, + IFNULL(t1.xb, '1') AS xb, + t1.original_pwd, + t1.pwd, + (select count(*) as c from t_transfer_apply as t2 where t2.person_id=t1.person_id and t2.status_id=1 and t2.b_use=1) + as apply_status + FROM + t_sys_loginperson as t1 + WHERE + t1.b_use = 1 + AND t1.identity_id = #para(0) + AND t1.s_class_id = #para(1) order by t1.sort_id + #end + + -- 获取学生列表按学生姓名 + #sql("getStudentOrParentListByPersonName") + SELECT + t1.person_id, + t1.person_name, + t1.login_name, + IFNULL(t1.xb, '1') AS xb, + t1.original_pwd, + (select count(*) as c from t_transfer_apply as t2 where t2.person_id=t1.person_id and t2.status_id=1 and t2.b_use=1) + as apply_status + FROM + t_sys_loginperson as t1 + WHERE + t1.b_use = 1 + AND t1.identity_id = #para(0) + AND t1.s_class_id = #para(1) + AND t1.person_name LIKE concat('%',#para(2),'%') order by t1.sort_id + #end + + + -- 根据学生ID获取学生信息 + #sql("getStudentInfoByPersonId") + SELECT + person_id, + person_name, + IFNULL(xb, '1') AS xb, + IFNULL(mz, '01') AS mz, + idcard_code, + birthday, + zzmm, + (case when s_xjh='-1' then '' else s_xjh end) AS xjh, + (case when s_xjfh='-1' then '' else s_xjfh end) AS xjfh, + s_source AS stu_source, + sort_id + FROM + t_sys_loginperson + WHERE + b_use = 1 + AND person_id = ? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/studentYd.sql b/dsBase/target/classes/Sql/studentYd.sql new file mode 100644 index 00000000..c5b9d4bb --- /dev/null +++ b/dsBase/target/classes/Sql/studentYd.sql @@ -0,0 +1,91 @@ +#namespace("studentYd") + + -- 获取学生状态列表 + #sql("get_dm_status_student") + select status_code,status_name,b_use,change_person_b_use,is_show from t_dm_status_student where b_use=1 and is_show=1 + #end + + -- 获取学生状态列表ByCode + #sql("get_dm_status_student_by_code") + select status_code,status_name,b_use,change_person_b_use,is_show from t_dm_status_student where b_use=1 and is_show=1 and status_code=? + #end + + -- 修改人员主表的人员状态 + #sql("updateStudentStatus") + update t_sys_loginperson set b_use=?,status_code=?,operator=?,ip_address=? where person_id=? + #end + + + -- 判断一个学生是不是可以申请调转 + #sql("checkAllowStudentTransferApply") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where t1.b_use=1 and t1.person_id=? order by t1.apply_time desc + #end + + -- 获取学生调动申请列表 + #sql("getStudentTransferApplyList") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.class_name from t_base_class as t2 where t2.class_id=(select t3.s_class_id from t_sys_loginperson as t3 where t3.person_id=t1.person_id)) as class_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where t1.source_bureau_id=#para(0) and t1.person_name LIKE concat('%',#para(1),'%') + and t1.b_use=1 and t1.identity_id=6 order by t1.apply_time desc + #end + + -- 获取学生调动反馈列表 + #sql("getStudentTransferEchoList") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.class_name from t_base_class as t2 where t2.class_id=(select t3.s_class_id from t_sys_loginperson as t3 where t3.person_id=t1.person_id)) as class_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where t1.target_bureau_id=#para(0) + and t1.person_name LIKE concat('%',#para(1),'%') and t1.b_use=1 and t1.identity_id=6 + order by t1.apply_time desc + #end + + -- 获取指定ID的学生调转申请 + #sql("getStudentTransferInfoById") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.class_name from t_base_class as t2 where t2.class_id=(select t3.s_class_id from t_sys_loginperson as t3 where t3.person_id=t1.person_id)) as class_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where id=? + #end + + -- 删除指定的调转ID + #sql("deleteTransferInfoById") + update t_transfer_apply set b_use=0,operator=?,ip_address=? where id=? + #end + + -- 获取学生调转申请的未读取个数 + #sql("getNewStudentTransferApplyCount") + select count(1) as c from t_transfer_apply where b_use=1 and target_is_read=0 and status_id=1 + and target_bureau_id=? and identity_id=6 + #end + + -- 教师调转提醒(收到新的回执) + #sql("getNewStudentTransferEchoCount") + select count(1) as c from t_transfer_apply where b_use=1 and source_is_read=0 and status_id>1 + and source_bureau_id=? and identity_id=6 + #end + + -- 调转的三种状态 + #sql("getTransferApplyStatus") + select apply_status_id,apply_status_name,for_check from t_transfer_apply_status where for_check=1 + #end + + --判断一个人是不是处于待审核状态 + #sql("getPersonStatus") + select count(*) as c from t_transfer_apply where person_id=? and b_use=1 and status_id=1 + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/teacher.sql b/dsBase/target/classes/Sql/teacher.sql new file mode 100644 index 00000000..5b33494c --- /dev/null +++ b/dsBase/target/classes/Sql/teacher.sql @@ -0,0 +1,90 @@ +#namespace("teacher") + + -- 通过部门ID获取教师列表 + #sql("getTeacherListByOrgId") + SELECT + t1.person_id, + t1.person_name, + t1.login_name, + IFNULL(t1.xb, '1') AS xb, + t1.original_pwd, + t1.pwd, + (select count(*) as c from t_transfer_apply as t2 where t2.person_id=t1.person_id and t2.status_id=1 and t2.b_use=1) + as apply_status + FROM + t_sys_loginperson as t1 + WHERE + t1.b_use = 1 + AND t1.identity_id = 5 + AND t1.org_id = #para(0) order by t1.sort_id + #end + + -- 通过单位ID获取教师列表 + #sql("getTeacherListByBureauId") + SELECT + t1.person_id, + t1.person_name, + t1.login_name, + IFNULL(t1.xb, '1') AS xb, + t1.original_pwd, + t1.pwd, + (select count(*) as c from t_transfer_apply as t2 where t2.person_id=t1.person_id and t2.status_id=1 and t2.b_use=1) + as apply_status + FROM + t_sys_loginperson as t1 + WHERE + t1.b_use = 1 + AND t1.identity_id = 5 + AND t1.bureau_id = #para(0) order by t1.sort_id + #end + + -- 按教师姓名获取教师列表 + #sql("getTeacherListByOrgIdPersonName") + SELECT + t1.person_id, + t1.person_name, + t1.login_name, + IFNULL(t1.xb, '1') AS xb, + t1.original_pwd, + t1.pwd, + (select count(*) as c from t_transfer_apply as t2 where t2.person_id=t1.person_id and t2.status_id=1 and t2.b_use=1) + as apply_status + FROM + t_sys_loginperson as t1 + WHERE + t1.b_use = 1 + AND t1.identity_id = 5 + AND t1.org_id = #para(0) + AND t1.person_name LIKE concat('%',#para(1),'%') order by t1.sort_id + #end + + -- 按教师姓名,通过单位 获取教师列表 + #sql("getTeacherListByPersonNameAndBureauId") + SELECT + t1.person_id, + t1.person_name, + t1.login_name, + IFNULL(t1.xb, '1') AS xb, + t1.original_pwd, + t1.pwd, + (select count(*) as c from t_transfer_apply as t2 where t2.person_id=t1.person_id and t2.status_id=1 and t2.b_use=1) + as apply_status + FROM + t_sys_loginperson as t1 + WHERE + t1.b_use = 1 + AND t1.identity_id = 5 + AND t1.bureau_id = #para(0) + AND t1.person_name LIKE concat('%',#para(1),'%') order by t1.sort_id + #end + + -- 更改人员的部门 + #sql("changeOrgByPersonIdAndOrgId") + update t_sys_loginperson set org_id=?,operator=?,ip_address=? where person_id=? + #end + + --删除指定人员的职务与分管工作 + #sql("deleteDutuesAndChargeByPersonId") + update t_person_duty_charge set b_use=0,operator=?,ip_address=? where person_id=? + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/Sql/teacherYd.sql b/dsBase/target/classes/Sql/teacherYd.sql new file mode 100644 index 00000000..ba4c82c9 --- /dev/null +++ b/dsBase/target/classes/Sql/teacherYd.sql @@ -0,0 +1,88 @@ +#namespace("teacherYd") + + -- 获取教师状态列表 + #sql("get_dm_status_teacher") + select status_code,status_name,b_use,change_person_b_use,is_show from t_dm_status_teacher where b_use=1 and is_show=1 + #end + + -- 获取教师状态列表ByCode + #sql("get_dm_status_teacher_by_code") + select status_code,status_name,b_use,change_person_b_use from t_dm_status_teacher where b_use=1 and is_show=1 and status_code=? + #end + + -- 修改人员主表的人员状态 + #sql("updateTeacherStatus") + update t_sys_loginperson set b_use=?,status_code=?,operator=?,ip_address=? where person_id=? + #end + + + -- 判断一个教师是不是可以申请调转 + #sql("checkAllowTeacherTransferApply") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where t1.b_use=1 and t1.person_id=? order by t1.apply_time desc + #end + + -- 获取教师调动申请列表 + #sql("getTeacherTransferApplyList") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where t1.source_bureau_id=#para(0) and t1.person_name LIKE concat('%',#para(1),'%') + and t1.b_use=1 and t1.identity_id=5 order by t1.apply_time desc + #end + + -- 获取教师调动反馈列表 + #sql("getTeacherTransferEchoList") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where t1.target_bureau_id=#para(0) + and t1.person_name LIKE concat('%',#para(1),'%') and t1.b_use=1 and t1.identity_id=5 + order by t1.apply_time desc + #end + + -- 获取指定ID的教师调转申请 + #sql("getTeacherTransferInfoById") + select t1.id,t1.source_bureau_id,t1.target_bureau_id, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.source_bureau_id) as source_bureau_name, + (select t2.org_name from t_base_organization as t2 where t2.org_id=t1.target_bureau_id) as target_bureau_name, + t1.identity_id,t1.person_id,t1.person_name,t1.status_id,t1.target_is_read,t1.source_is_read,t1.apply_time, + t1.apply_message,t1.echo_time,t1.echo_message,t1.b_use + from t_transfer_apply as t1 where id=? + #end + + -- 删除指定的调转ID + #sql("deleteTransferInfoById") + update t_transfer_apply set b_use=0,operator=?,ip_address=? where id=? + #end + + -- 获取教师调转申请的未读取个数 + #sql("getNewTeacherTransferApplyCount") + select count(1) as c from t_transfer_apply where b_use=1 and target_is_read=0 and status_id=1 and + target_bureau_id=? and identity_id=5 + #end + + -- 教师调转提醒(收到新的回执) + #sql("getNewTeacherTransferEchoCount") + select count(1) as c from t_transfer_apply where b_use=1 and source_is_read=0 and status_id>1 + and source_bureau_id=? and identity_id=5 + #end + + -- 调转的三种状态 + #sql("getTransferApplyStatus") + select apply_status_id,apply_status_name,for_check from t_transfer_apply_status where for_check=1 + #end + + --判断一个人是不是处于待审核状态 + #sql("getPersonStatus") + select count(*) as c from t_transfer_apply where person_id=? and b_use=1 and status_id=1 + #end +#end \ No newline at end of file diff --git a/dsBase/target/classes/application_ali.yaml b/dsBase/target/classes/application_ali.yaml new file mode 100644 index 00000000..0af87d49 --- /dev/null +++ b/dsBase/target/classes/application_ali.yaml @@ -0,0 +1,31 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +mysql: + # 数据库信息 + driverClassName: com.mysql.cj.jdbc.Driver + user: ylt + password: Ycharge666 + jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8 + + +redis: + ip: r-bp14c1p5j5lkpw1jc2.redis.rds.aliyuncs.com + port: 6379 + password: Ycharge666 + +# ============================================================== +jwt: + # 生成Token的密码 + CookieMd5SingPwd: DsideaL4r5t6y7u + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + diff --git a/dsBase/target/classes/application_dev.yaml b/dsBase/target/classes/application_dev.yaml new file mode 100644 index 00000000..7673bd7f --- /dev/null +++ b/dsBase/target/classes/application_dev.yaml @@ -0,0 +1,28 @@ +# 上传文件的临时路径 +uploadTempPath: c:/Windows/Temp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +mysql: + # 数据库信息 + driverClassName: com.mysql.cj.jdbc.Driver + user: root + password: DsideaL147258369 + jdbcUrl : jdbc:mysql://10.10.14.210:22066/ds_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai + + +redis: + ip: 10.10.14.210 + port: 18890 + password: + +# ============================================================== + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + diff --git a/dsBase/target/classes/application_pro.yaml b/dsBase/target/classes/application_pro.yaml new file mode 100644 index 00000000..0af87d49 --- /dev/null +++ b/dsBase/target/classes/application_pro.yaml @@ -0,0 +1,31 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +mysql: + # 数据库信息 + driverClassName: com.mysql.cj.jdbc.Driver + user: ylt + password: Ycharge666 + jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8 + + +redis: + ip: r-bp14c1p5j5lkpw1jc2.redis.rds.aliyuncs.com + port: 6379 + password: Ycharge666 + +# ============================================================== +jwt: + # 生成Token的密码 + CookieMd5SingPwd: DsideaL4r5t6y7u + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + diff --git a/dsBase/target/classes/cron4j.properties b/dsBase/target/classes/cron4j.properties new file mode 100644 index 00000000..b75e22f0 --- /dev/null +++ b/dsBase/target/classes/cron4j.properties @@ -0,0 +1,24 @@ +# cron 表达式由五部分组成:分 时 天 月 周 # 分 :从 0 到 59 # 时 :从 0 到 23 # 天 :从 1 到 31,字母 L 可以表示月的最后一天 # 月 :从 1 到 12,可以别名:jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov" and "dec" +# 周 :从 0 到 6,0 表示周日,6 表示周六,可以使用别名: "sun", "mon", "tue", "wed", "thu", "fri" and "sat" +# +# 数字 n:表示一个具体的时间点,例如 5 * * * * 表示 5 分这个时间点时执行 +# 逗号 , :表示指定多个数值,例如 3,5 * * * * 表示 3 和 5 分这两个时间点执行 +# 减号 -:表示范围,例如 1-3 * * * * 表示 1 分、2 分再到 3 分这三个时间点执行 +# 星号 *:表示每一个时间点,例如 * * * * * 表示每分钟执行 +# 除号 /:表示指定一个值的增加幅度。例如 n/m表示从 n 开始,每次增加 m 的时间点执行 +# cron4j 集成cron 只有 分 时 天 月 周 没有秒 +cron4j=clearRubbish,backup + +# 每天凌晨2点执行一次 +clearRubbish.cron=0 2 * * * +clearRubbish.class=com.dsideal.dsBase.clearRubbish.clearRubbishAction +clearRubbish.daemon=true +clearRubbish.enable=true + +# 每天凌晨2点执行一次,备份数据库 +backup.cron=0 2 * * * +backup.class=Backup.BackupAll +backup.daemon=true +backup.enable=true + + diff --git a/dsBase/target/classes/log4j.properties b/dsBase/target/classes/log4j.properties new file mode 100644 index 00000000..625cca1e --- /dev/null +++ b/dsBase/target/classes/log4j.properties @@ -0,0 +1,12 @@ +log4j.rootLogger=WARN, console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n + +log4j.appender.mq=org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender +log4j.appender.mq.Topic=TOPIC_MEIWEI_SMS_NOTICE_TEST +log4j.appender.mq.Tag=PID_MEIWEI_SMS_RETRY_TIMEOUT +log4j.appender.mq.ProducerGroup=meiwei-producer-retry +log4j.appender.mq.NameServerAddress=127.0.0.1:9876;127.0.0.1:9877 +log4j.appender.mq.layout=org.apache.log4j.PatternLayout +log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r [%t] (%F:%L) % \ No newline at end of file diff --git a/dsBase/target/classes/logback.xml b/dsBase/target/classes/logback.xml new file mode 100644 index 00000000..2c24fb65 --- /dev/null +++ b/dsBase/target/classes/logback.xml @@ -0,0 +1,39 @@ + + + + + + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} %boldYellow([%thread]) %highlight(%-5level) %boldGreen(%logger{40}) + - %msg%n + + + + + + ${LOG_HOME}/dsBase.log + + + ${LOG_HOME}/dsBase.log.%d{yyyy-MM-dd}.log + + 30 + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n + + + + 100MB + + + + + + + + + + \ No newline at end of file diff --git a/dsBase/target/classes/logo.txt b/dsBase/target/classes/logo.txt new file mode 100644 index 00000000..450e2587 --- /dev/null +++ b/dsBase/target/classes/logo.txt @@ -0,0 +1,13 @@ + + __ _______ + / | / \ + ____$$ | _______ $$$$$$$ | ______ _______ ______ + / $$ | / |$$ |__$$ | / \ / | / \ +/$$$$$$$ |/$$$$$$$/ $$ $$< $$$$$$ |/$$$$$$$/ /$$$$$$ | +$$ | $$ |$$ \ $$$$$$$ | / $$ |$$ \ $$ $$ | +$$ \__$$ | $$$$$$ |$$ |__$$ |/$$$$$$$ | $$$$$$ |$$$$$$$$/ +$$ $$ |/ $$/ $$ $$/ $$ $$ |/ $$/ $$ | + $$$$$$$/ $$$$$$$/ $$$$$$$/ $$$$$$$/ $$$$$$$/ $$$$$$$/ + + +power by http://patorjk.com/software/taag/ \ No newline at end of file diff --git a/dsBase/target/classes/undertow_dev.properties b/dsBase/target/classes/undertow_dev.properties new file mode 100644 index 00000000..0308a392 --- /dev/null +++ b/dsBase/target/classes/undertow_dev.properties @@ -0,0 +1,36 @@ +# true 值支持热加载 +undertow.devMode=true +undertow.port=8001 +undertow.host=0.0.0.0 +#undertow.resourcePath =/root/dsBase/WebRoot,classpath:static +#undertow.resourcePath =D:/dsWork/dsProject/dsbase/WebRoot,classpath:static + +# 目录名称 +undertow.contextPath=/dsBase + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# 查询当前某程序的线程或进程数 +# yum install psmisc -y +# ps -e | grep java | awk '{print $1} +# pstree -p 15453 | wc -l + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=true +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) + +# ssl 开启时,是否开启 http2。检测该配置是否生效在 chrome 地址栏中输入: chrome://net-internals/#http2 +#undertow.http2.enable=true + +#http://www.jfinal.com/doc/1-4 diff --git a/dsBase/target/classes/undertow_pro.properties b/dsBase/target/classes/undertow_pro.properties new file mode 100644 index 00000000..63bd941a --- /dev/null +++ b/dsBase/target/classes/undertow_pro.properties @@ -0,0 +1,35 @@ +# true 值支持热加载 +undertow.devMode=true +undertow.port=8001 +undertow.host=0.0.0.0 +#undertow.resourcePath =/root/WebRoot,classpath:static + +# 目录名称 +undertow.contextPath=/dsBase + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# 查询当前某程序的线程或进程数 +# yum install psmisc -y +# ps -e | grep java | awk '{print $1} +# pstree -p 15453 | wc -l + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=true +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) + +# ssl 开启时,是否开启 http2。检测该配置是否生效在 chrome 地址栏中输入: chrome://net-internals/#http2 +#undertow.http2.enable=true + +#http://www.jfinal.com/doc/1-4 diff --git a/dsBuild/target/classes/.kube/config b/dsBuild/target/classes/.kube/config new file mode 100644 index 00000000..d9277637 --- /dev/null +++ b/dsBuild/target/classes/.kube/config @@ -0,0 +1,19 @@ +apiVersion: v1 +clusters: +- cluster: + certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURCVENDQWUyZ0F3SUJBZ0lJQ3pNUkpBbEJVSzB3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNU1URXdPREUyTlRSYUZ3MHpOREE1TURrd09ESXhOVFJhTUJVeApFekFSQmdOVkJBTVRDbXQxWW1WeWJtVjBaWE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLCkFvSUJBUUNobzZhakc4RVFiNktyUDhnd3BpOEoyMFFNRGxRNGYvYkJJSGVCVS9mN28yc3ZjcmRPUktvVGxDVnQKMHpvWmJuZHhrd0pNaURBZVJ4Z3R2NHBQTnFwNlV4M2tMZ1NqRE55Mnl4NThUOXdEc3M5YkJvNUlza01GZ2JNUQp3K3NGWEVCelN5R3B0aVA2L3FKbU5mYVlQcWhIRkRpdlJkRjFqTVJKK2JpNlNTakhPSmJ6aXhnd2VjSFMxdVY0CmZldkczNWROckZCZEI4WVNmczY0cGwvOXdiWC84S0s5M1ovWUF1K1RVNUF4T0FhY0c5U3FKWEZQajJoS01QT3gKcHYwc1ExTVIxSmduazF1MEx6T2RoWDdOOTkydThRRVZHQ1hwQmRjOWxVQSt4MmhPc2lUWjE1WW1GWmxQdStmYgo4UjhvYitNZ0NIdGNkUUtzOXFFSnB3L1h3aU1qQWdNQkFBR2pXVEJYTUE0R0ExVWREd0VCL3dRRUF3SUNwREFQCkJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJUZk9hNWlyRmJBSGdxaVZkMFFnRURia2s1QlpEQVYKQmdOVkhSRUVEakFNZ2dwcmRXSmxjbTVsZEdWek1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQWpzQ3pXUTFnKwprc0lvNTg5Y1ZncFVOSFlIaWhVRXlpcDhUbE1ySGR3eFBuU0dOaFNyS0haTGJkVWZnWWorR2x3QlRHcXVrL3JzCmR0dWZWUmxaNXA1ZlUzZSs2SW5CY0xmWFdEaGRRMFlvSUpzSU4rbUZCL01haDBjQkxlQzZqOWN1eXArcWllUXAKMml6ZDJzb1F6cjN2TmlQM3l1T0NOU0dGdFBvdXRHUis5YWJzVC9lYUMzVTJvcFo4Tm5KenVFb2ljQnV4ZWt2SApIZVZadHhCT3l5QkpWbzEyZzdmTVhuSm1PRlR6TmhCdVpzVFZ1cndTZTdPTmtLOUVsbHBXeCtWcGRhOXdPZ3NOCmFId010Qkc1YUJVTDU0T0Fac004eXpJaldtb0dPZzBySkl1Mjk0YTNXTjJhR2UrMHFWdVdpV2U4N2k1SWVNcHAKSE05amswUVBrbjFaCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + server: https://10.10.14.200:6443 + name: kubernetes +contexts: +- context: + cluster: kubernetes + user: kubernetes-admin + name: kubernetes-admin@kubernetes +current-context: kubernetes-admin@kubernetes +kind: Config +preferences: {} +users: +- name: kubernetes-admin + user: + client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQWhHZ0F3SUJBZ0lJWmVoaXMzR3dHVUF3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TkRBNU1URXdPREUyTlRSYUZ3MHlOVEE1TVRFd09ESXlNREJhTUR3eApIekFkQmdOVkJBb1RGbXQxWW1WaFpHMDZZMngxYzNSbGNpMWhaRzFwYm5NeEdUQVhCZ05WQkFNVEVHdDFZbVZ5CmJtVjBaWE10WVdSdGFXNHdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEcDFvNzcKNzJaOWhERVdJQWVldm5YYXVWRG5aZkdlNGF2Ly90cDhudjlHTHBNd2hOT0JaaEpZNE55SkhhQTdYVTAvVTVBYwpSWG01VVNJb0NaRU9FQXpjNW9kOGNZNm5sOE9qMUhxa0dDZG1ZcllpMUVKRElDdnJ4d1phQ2RCRVYxNzJ1WFJYCitSY1hxaDdlcWRPRDJ4SHl0N2ZBZXFHQ3NSVjNnbFJ3ak5DMUovalFnRmtYUGs3NXdXZDRDcXh4VVEvcXdNeUUKVVRlVTg0SHFTZzRzVzRpU1gwbm83YnBlNTZNRG8rMnZYTmVDQzQwZGNJMVRWZDAyc21PbEx6VGhtd1M4U05PSAo3bUdlSkJWZ2hlaXRyR3kwSjlWT1NXdyszVHl1NEdQZm1YbmhPeU5DUVR6UVMzUDNQNmlyNzR4UGRUci9JT2JrCno3bGE3SjdIdjV6MGZUcnhBZ01CQUFHalZqQlVNQTRHQTFVZER3RUIvd1FFQXdJRm9EQVRCZ05WSFNVRUREQUsKQmdnckJnRUZCUWNEQWpBTUJnTlZIUk1CQWY4RUFqQUFNQjhHQTFVZEl3UVlNQmFBRk44NXJtS3NWc0FlQ3FKVgozUkNBUU51U1RrRmtNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUUI5dzRmd2RhS1R3L3YxODlhK01LbHM3c3NTCml5SnNDd0RDQUtHMnY4UmhNTXl6N2JkaTM0M1JOMFJHQnU5bGZKWk0zNWlpNXA1c29nK2NGcnlBb1FYVVI5cmEKS0NBS1VXNUg5eE90Qm95S3hYaXFkNTd6WWs5VVlUNDdEYkh4VllSaVgwNWZpaWM0NVNxT0pBNUdzUGNDdmlObwowYVo0MnFISTkrVnB5WXN5TGN1eGd3U1lkR1h5VjdiR1liclVDZmpwNk5USnVOTEh0NTl4VGtaNWNsZzdCTEFNCkVPV2E3WWVZWDE3VUdHbmh6YUN1WngvNzJZaXBWdkNLdjR5VXRTZVJpMm1HRnpZWXBoSmpXdm9wR1VoQUM5MWYKTlFUWEE1ZU9VTTZpOFo2OG5YRE9WUWFTb3BNbnZvZGM2UDlwSFR6YkVHdGdmdW82czI2dkoyRTZsUlVUCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K + client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBNmRhTysrOW1mWVF4RmlBSG5yNTEycmxRNTJYeG51R3IvLzdhZko3L1JpNlRNSVRUCmdXWVNXT0RjaVIyZ08xMU5QMU9RSEVWNXVWRWlLQW1SRGhBTTNPYUhmSEdPcDVmRG85UjZwQmduWm1LMkl0UkMKUXlBcjY4Y0dXZ25RUkZkZTlybDBWL2tYRjZvZTNxblRnOXNSOHJlM3dIcWhnckVWZDRKVWNJelF0U2Y0MElCWgpGejVPK2NGbmVBcXNjVkVQNnNETWhGRTNsUE9CNmtvT0xGdUlrbDlKNk8yNlh1ZWpBNlB0cjF6WGdndU5IWENOClUxWGROckpqcFM4MDRac0V2RWpUaCs1aG5pUVZZSVhvcmF4c3RDZlZUa2xzUHQwOHJ1QmozNWw1NFRzalFrRTgKMEV0ejl6K29xKytNVDNVNi95RG01TSs1V3V5ZXg3K2M5SDA2OFFJREFRQUJBb0lCQVFDcklpNlVyTmxLUk9PVAp1Szg2KzFMUFYwNmhleGRBMnhJQkVTZ2ZpbEZ5c0lWaVBlTjQwUlhlVy9xcWtyY0FtMEQ4ZHBDQ1VFcE1XTmR4Cmk4YlFEdWtMQmQva01FdGgxZzBGS216ekNRWlV4U3RkQkJEV2hZWC9VVElSMVJySjJWT1RwNWhCQmZoamhrcC8KVkxTS3pGb3ZVMHMwbjhyeUZkMkxFQ1B5RnV4cmxzWWk3dlAwSmIyMllFTTJqZXBaZ1dVU3FyR2xQWmo3YmZ2SApZbC9MSGZ3bmM5cU1VUzJHV2tDeUR5bWdCSVJ1SnA1S0FSTTNRaHd1UlhsekFiT1hSUFZyd3FXKzlEdHpzT0x3CkRITDNXYytYVG90QkJmZ2RkdG1leHNlRmp2TFF1QlQ5ZUI1RHg1dDRGQU9lRUM2T09Fa0R1RHM2dWpmYUNIK3IKa0s5RE56TTlBb0dCQU82dGkyS0xjaEkvYUZEQ3ZDcGJpUWl3RUg1QnhNeU5rTVFnbDAxbUg4Vi9VckFxUTZxawpRcTRkSkZzYnl5NC9tVjZNTGE3eDRGM1c2Z04rQ1lvZEh3WmlDOGQzM3o5RzRFYjVrZUFZTml2VUR3bHRGYU54Clp4M0hRQ0RYV05LRzV4U2NVRmxIOU1iQjAyM2h3d2Y2ZmNEa0N6c2pHanJlWHpYOVJzT2dHOGF6QW9HQkFQclAKR0N6QXJ0QUh1YUVhbUVBMm9SN1kzWDJwaEdxQ3p4eWR5VWdNb1Zab0w5S0hhdmZqb3h3UW5leElMcDlZSnpXegpSUHlKRm5qK2JmU1VWYUdxMWNGTWhyVGZUL1NOSTZadUxEbmhybzczaWNnbXNIZG5lVURidUt4Nkg5NSs3Q1RkCmRJY1dxWXpBMncxOWk1UXlyMlM4RU91K0Fmb0QzREp0dk1OM3pDbkxBb0dBZEdGQzJlWk0xUUQrQ0lNcjVTdUYKQWl0M24xaktjVU9HRjF3YzZxeWxTVlB3S2Q0eDZINzMxSlo1SjhQQnF1ZHdEVjRrMkcwd2poRkJRanF1eEIyMwpCeEcvMUo5cXlCdnpPQ2h4TE9naFlmV2c3Mk8xYldEYWV2YXhHbEpuQ1NDbWhMSkRxNFVlb2R2WkVIZEk5aGI2ClFwZnZzZ0pIdy9TeVVFMFR1RWZWdzJrQ2dZQVQwOTFvWkU4dG1QNiswcmhva3lrSHBFTldWTmxvQmpGVFpOSHQKeFRuWDkrS1g5U2FxdEM5SDM3UnNZb1IxQ21ZSEk4WDNaT3NHNDY1VG9JcG9mblhwa3lBdkdseGF5L0dlamFVbgpha1QvZm1oQkQzWHg2cGMyWG1ocUVqbUV3R253dkNVakxOSjRreUorSFllMFRwRjVHRGtLT2ZvMEJxd1l2SDRvCndjYTlJd0tCZ0RPLzVxcnFzZFZOdHljZFduQ1BhU1orR3QyMGIyMDI1QzFXZXBraVd4ZWs4eTEzNDRkWnRQaWYKOFhoTVZpNzBhYkt3QWNBeVdlWmdKNXM5bm41NlFFcHlCRFN1L2o0Tk5CczZieGNwbUZ4d3phaTFJdkd5NGRVRwpialorZ2NXMXVFQTZDQ3FrYnQ0Smh2RkVEVUZmUUlQMUZaZ1JNc2g4OFpnZ2FjV2YrRktMCi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCg== diff --git a/dsBuild/target/classes/publishImage.json b/dsBuild/target/classes/publishImage.json new file mode 100644 index 00000000..6e6528b2 --- /dev/null +++ b/dsBuild/target/classes/publishImage.json @@ -0,0 +1,6 @@ +{ + "host": "10.10.14.212", + "user": "root", + "pwd": "dsideal", + "port": 22 +} diff --git a/dsGw/target/classes/application_ali.yaml b/dsGw/target/classes/application_ali.yaml new file mode 100644 index 00000000..7604cfe6 --- /dev/null +++ b/dsGw/target/classes/application_ali.yaml @@ -0,0 +1,23 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +# 路由 +route: + # 基础数据 + dsBase: + url: http://ds-base:8001 + # 资源库 + dsRes: + url: http://ds-res:8002 + +# 白名单 +whitelist: + # 全局变量获取 + - /dsBase/global/getGlobalValueByKey + # 登录 + - /dsBase/loginPerson/doLogin + diff --git a/dsGw/target/classes/application_dev.yaml b/dsGw/target/classes/application_dev.yaml new file mode 100644 index 00000000..a1ad96f6 --- /dev/null +++ b/dsGw/target/classes/application_dev.yaml @@ -0,0 +1,28 @@ +# 上传文件的临时路径 +uploadTempPath: c:/Windows/Temp + +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +# 路由 +route: + # 基础数据 + dsBase: + url: http://ds-base:8001 + # 资源库 + dsRes: + url: http://ds-res:8002 + + + +# 白名单 +whitelist: + # 全局变量获取 + - /dsBase/global/getGlobalValueByKey + # 登录 + - /dsBase/loginPerson/doLogin + - /dsBase/loginPerson/doLoginV2 + # 登录首页 + - /dsBase/ diff --git a/dsGw/target/classes/application_pro.yaml b/dsGw/target/classes/application_pro.yaml new file mode 100644 index 00000000..7604cfe6 --- /dev/null +++ b/dsGw/target/classes/application_pro.yaml @@ -0,0 +1,23 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +# 路由 +route: + # 基础数据 + dsBase: + url: http://ds-base:8001 + # 资源库 + dsRes: + url: http://ds-res:8002 + +# 白名单 +whitelist: + # 全局变量获取 + - /dsBase/global/getGlobalValueByKey + # 登录 + - /dsBase/loginPerson/doLogin + diff --git a/dsGw/target/classes/logback.xml b/dsGw/target/classes/logback.xml new file mode 100644 index 00000000..9f487643 --- /dev/null +++ b/dsGw/target/classes/logback.xml @@ -0,0 +1,39 @@ + + + + + + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} %boldYellow([%thread]) %highlight(%-5level) %boldGreen(%logger{40}) + - %msg%n + + + + + + ${LOG_HOME}/QingLong.log + + + ${LOG_HOME}/dsGw.log.%d{yyyy-MM-dd}.log + + 30 + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n + + + + 100MB + + + + + + + + + + \ No newline at end of file diff --git a/dsGw/target/classes/logo.txt b/dsGw/target/classes/logo.txt new file mode 100644 index 00000000..b5406466 --- /dev/null +++ b/dsGw/target/classes/logo.txt @@ -0,0 +1,11 @@ + + $$\ $$$$$$\ + $$ | $$ __$$\ + $$$$$$$ | $$$$$$$\ $$ / \__|$$\ $$\ $$\ +$$ __$$ |$$ _____|$$ |$$$$\ $$ | $$ | $$ | +$$ / $$ |\$$$$$$\ $$ |\_$$ |$$ | $$ | $$ | +$$ | $$ | \____$$\ $$ | $$ |$$ | $$ | $$ | +\$$$$$$$ |$$$$$$$ |\$$$$$$ |\$$$$$\$$$$ | + \_______|\_______/ \______/ \_____\____/ + +power by http://patorjk.com/software/taag/ \ No newline at end of file diff --git a/dsGw/target/classes/undertow_dev.properties b/dsGw/target/classes/undertow_dev.properties new file mode 100644 index 00000000..0d46552b --- /dev/null +++ b/dsGw/target/classes/undertow_dev.properties @@ -0,0 +1,24 @@ +# true 值支持热加载 +undertow.devMode=false +undertow.port=8000 +undertow.host=0.0.0.0 + +# 目录名称 +undertow.contextPath=/ + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=false +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) diff --git a/dsGw/target/classes/undertow_pro.properties b/dsGw/target/classes/undertow_pro.properties new file mode 100644 index 00000000..eb94762a --- /dev/null +++ b/dsGw/target/classes/undertow_pro.properties @@ -0,0 +1,25 @@ +# true 值支持热加载 +undertow.devMode=false +undertow.port=8000 +undertow.host=0.0.0.0 + +# 目录名称 +undertow.contextPath=/ + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=false +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) + diff --git a/dsRes.iml b/dsRes.iml new file mode 100644 index 00000000..0c5c4d56 --- /dev/null +++ b/dsRes.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/dsRes/target/classes/SetMinioDownload.json b/dsRes/target/classes/SetMinioDownload.json new file mode 100644 index 00000000..5955e673 --- /dev/null +++ b/dsRes/target/classes/SetMinioDownload.json @@ -0,0 +1,18 @@ +{ + "Version": "2012-10-17", + "Statement": [{ + "Effect": "Allow", + "Principal": { + "AWS": ["*"] + }, + "Action": ["s3:GetBucketLocation", "s3:ListBucket"], + "Resource": ["arn:aws:s3:::dsideal"] + }, { + "Effect": "Allow", + "Principal": { + "AWS": ["*"] + }, + "Action": ["s3:GetObject"], + "Resource": ["arn:aws:s3:::dsideal/*"] + }] +} \ No newline at end of file diff --git a/dsRes/target/classes/Start.sh b/dsRes/target/classes/Start.sh new file mode 100644 index 00000000..25b5b05d --- /dev/null +++ b/dsRes/target/classes/Start.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +# 容器名称 +CONTAINER_NAME=dsRes + +# 登录镜像仓库 +docker login --username=东师黄海 registry.cn-hangzhou.aliyuncs.com --password DsideaL4r5t6y7u +# 镜像名称 +IMAGE_NAME=registry.cn-hangzhou.aliyuncs.com/dsideal/ds_base:dev_20240924140624 + +# 删除容器 +docker rm -f ${CONTAINER_NAME} + +# 运行容器 +docker run -d --network=host --name "${CONTAINER_NAME}" \ +--privileged=true --env WORKING_ENV=dev -w /home -p 8002:8002 -v "$PWD/logs:/home/logs" --restart=always "${IMAGE_NAME}" + +# 查看日志 +docker logs -f --tail 500 "${CONTAINER_NAME}" diff --git a/dsRes/target/classes/application_ali.yaml b/dsRes/target/classes/application_ali.yaml new file mode 100644 index 00000000..0af87d49 --- /dev/null +++ b/dsRes/target/classes/application_ali.yaml @@ -0,0 +1,31 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +mysql: + # 数据库信息 + driverClassName: com.mysql.cj.jdbc.Driver + user: ylt + password: Ycharge666 + jdbcUrl : jdbc:mysql://rm-bp1ux6tuk49er80t9.mysql.rds.aliyuncs.com:3306/ds_db?useUnicode=true&characterEncoding=UTF-8 + + +redis: + ip: r-bp14c1p5j5lkpw1jc2.redis.rds.aliyuncs.com + port: 6379 + password: Ycharge666 + +# ============================================================== +jwt: + # 生成Token的密码 + CookieMd5SingPwd: DsideaL4r5t6y7u + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + diff --git a/dsRes/target/classes/application_dev.yaml b/dsRes/target/classes/application_dev.yaml new file mode 100644 index 00000000..7673bd7f --- /dev/null +++ b/dsRes/target/classes/application_dev.yaml @@ -0,0 +1,28 @@ +# 上传文件的临时路径 +uploadTempPath: c:/Windows/Temp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +mysql: + # 数据库信息 + driverClassName: com.mysql.cj.jdbc.Driver + user: root + password: DsideaL147258369 + jdbcUrl : jdbc:mysql://10.10.14.210:22066/ds_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai + + +redis: + ip: 10.10.14.210 + port: 18890 + password: + +# ============================================================== + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + diff --git a/dsRes/target/classes/application_pro.yaml b/dsRes/target/classes/application_pro.yaml new file mode 100644 index 00000000..c7378e3a --- /dev/null +++ b/dsRes/target/classes/application_pro.yaml @@ -0,0 +1,28 @@ +# 上传文件的临时路径 +uploadTempPath: /tmp +# JWT +SECRET: ZXZnZWVr5b+r5LmQ5L2g55qE5Ye66KGM +# 生成Token的密码 +CookieMd5SingPwd: DsideaL4r5t6y7u + +mysql: + # 数据库信息 + driverClassName: com.mysql.cj.jdbc.Driver + user: root + password: DsideaL147258369 + jdbcUrl : jdbc:mysql://10.10.14.210:22066/ds_db?rewriteBatchedStatements=true&useUnicode=true&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai + + +redis: + ip: 10.10.14.210 + port: 18890 + password: + +# ============================================================== + +excel: + # 导出excel 的模板配置路径 + excelExportTemplatePathSuffix: /ExcelExportTemplate/ + # 导入excel 的模板配置路径 + ExcelImportTemplatePathSuffix: /ExcelImportTemplate/ + diff --git a/dsRes/target/classes/log4j.properties b/dsRes/target/classes/log4j.properties new file mode 100644 index 00000000..625cca1e --- /dev/null +++ b/dsRes/target/classes/log4j.properties @@ -0,0 +1,12 @@ +log4j.rootLogger=WARN, console +log4j.appender.console=org.apache.log4j.ConsoleAppender +log4j.appender.console.layout=org.apache.log4j.PatternLayout +log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n + +log4j.appender.mq=org.apache.rocketmq.logappender.log4j.RocketmqLog4jAppender +log4j.appender.mq.Topic=TOPIC_MEIWEI_SMS_NOTICE_TEST +log4j.appender.mq.Tag=PID_MEIWEI_SMS_RETRY_TIMEOUT +log4j.appender.mq.ProducerGroup=meiwei-producer-retry +log4j.appender.mq.NameServerAddress=127.0.0.1:9876;127.0.0.1:9877 +log4j.appender.mq.layout=org.apache.log4j.PatternLayout +log4j.appender.mq.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4r [%t] (%F:%L) % \ No newline at end of file diff --git a/dsRes/target/classes/logback.xml b/dsRes/target/classes/logback.xml new file mode 100644 index 00000000..2c24fb65 --- /dev/null +++ b/dsRes/target/classes/logback.xml @@ -0,0 +1,39 @@ + + + + + + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} %boldYellow([%thread]) %highlight(%-5level) %boldGreen(%logger{40}) + - %msg%n + + + + + + ${LOG_HOME}/dsBase.log + + + ${LOG_HOME}/dsBase.log.%d{yyyy-MM-dd}.log + + 30 + + + + %date{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n + + + + 100MB + + + + + + + + + + \ No newline at end of file diff --git a/dsRes/target/classes/logo.txt b/dsRes/target/classes/logo.txt new file mode 100644 index 00000000..b48587cd --- /dev/null +++ b/dsRes/target/classes/logo.txt @@ -0,0 +1,11 @@ + + $$\ $$$$$$$\ + $$ | $$ __$$\ + $$$$$$$ | $$$$$$$\ $$ | $$ | $$$$$$\ $$$$$$$\ +$$ __$$ |$$ _____|$$$$$$$ |$$ __$$\ $$ _____| +$$ / $$ |\$$$$$$\ $$ __$$< $$$$$$$$ |\$$$$$$\ +$$ | $$ | \____$$\ $$ | $$ |$$ ____| \____$$\ +\$$$$$$$ |$$$$$$$ |$$ | $$ |\$$$$$$$\ $$$$$$$ | + \_______|\_______/ \__| \__| \_______|\_______/ + +power by http://patorjk.com/software/taag/ \ No newline at end of file diff --git a/dsRes/target/classes/undertow_dev.properties b/dsRes/target/classes/undertow_dev.properties new file mode 100644 index 00000000..f3c54a2e --- /dev/null +++ b/dsRes/target/classes/undertow_dev.properties @@ -0,0 +1,34 @@ +# true 值支持热加载 +undertow.devMode=true +undertow.port=8002 +undertow.host=0.0.0.0 + +# 目录名称 +undertow.contextPath=/dsRes + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# 查询当前某程序的线程或进程数 +# yum install psmisc -y +# ps -e | grep java | awk '{print $1} +# pstree -p 15453 | wc -l + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=true +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) + +# ssl 开启时,是否开启 http2。检测该配置是否生效在 chrome 地址栏中输入: chrome://net-internals/#http2 +#undertow.http2.enable=true + +#http://www.jfinal.com/doc/1-4 diff --git a/dsRes/target/classes/undertow_pro.properties b/dsRes/target/classes/undertow_pro.properties new file mode 100644 index 00000000..f3c54a2e --- /dev/null +++ b/dsRes/target/classes/undertow_pro.properties @@ -0,0 +1,34 @@ +# true 值支持热加载 +undertow.devMode=true +undertow.port=8002 +undertow.host=0.0.0.0 + +# 目录名称 +undertow.contextPath=/dsRes + +# 设定I/O线程数. +server.undertow.io-threads=8 + +# 设定工作线程数 +server.undertow.worker-threads=60 + +# 查询当前某程序的线程或进程数 +# yum install psmisc -y +# ps -e | grep java | awk '{print $1} +# pstree -p 15453 | wc -l + +# gzip 压缩开关 +undertow.gzip.enable=true +# 配置压缩级别,默认值 -1。 可配置 1 到 9。 1 拥有最快压缩速度,9 拥有最高压缩率 +undertow.gzip.level=-1 +# 触发压缩的最小内容长度 +undertow.gzip.minLength=1024 + +# 开启access日志 +server.undertow.accesslog.enabled=true +server.undertow.accesslog.pattern=%t %a "%r" %s (%D ms) + +# ssl 开启时,是否开启 http2。检测该配置是否生效在 chrome 地址栏中输入: chrome://net-internals/#http2 +#undertow.http2.enable=true + +#http://www.jfinal.com/doc/1-4