diff --git a/Doc/TODO.txt b/Doc/TODO.txt new file mode 100644 index 00000000..535b7626 --- /dev/null +++ b/Doc/TODO.txt @@ -0,0 +1,2 @@ +1、当提示词大,超过32K时,需要多次提交API +2、不再强依赖于DeepSeek,开发一个基于阿里云的多模型调用代码,生成速度可以大大提高。 \ No newline at end of file diff --git a/WebRoot/ai.html b/WebRoot/ai.html new file mode 100644 index 00000000..8bc949cf --- /dev/null +++ b/WebRoot/ai.html @@ -0,0 +1,670 @@ + + + + + + 云南省市州教育数据AI对比分析器 + + + +
+

云南省市州教育数据AI对比分析器

+ +
+

请选择两个市州进行教育数据对比

+
+ +
+
请选择恰好两个市州
+
+ +
+ + + +
+ +
准备就绪
+ +
等待数据...
+ + + +
+

下载文件:

+ +
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/029D0D70-80DC-4E7E-BBCD-B395BA3EAB19.xlsx b/WebRoot/upload/029D0D70-80DC-4E7E-BBCD-B395BA3EAB19.xlsx deleted file mode 100644 index 8a47f0ae..00000000 Binary files a/WebRoot/upload/029D0D70-80DC-4E7E-BBCD-B395BA3EAB19.xlsx and /dev/null differ diff --git a/WebRoot/upload/06716DFE-5DD7-44D1-AE28-E3331FEBCF0E.xlsx b/WebRoot/upload/06716DFE-5DD7-44D1-AE28-E3331FEBCF0E.xlsx deleted file mode 100644 index d4639b47..00000000 Binary files a/WebRoot/upload/06716DFE-5DD7-44D1-AE28-E3331FEBCF0E.xlsx and /dev/null differ diff --git a/WebRoot/upload/06973F3A-9187-46A8-920F-4987624A2889.xlsx b/WebRoot/upload/06973F3A-9187-46A8-920F-4987624A2889.xlsx deleted file mode 100644 index 8a446aaa..00000000 Binary files a/WebRoot/upload/06973F3A-9187-46A8-920F-4987624A2889.xlsx and /dev/null differ diff --git a/WebRoot/upload/1114267F-DB0E-4541-8732-ABE4F0DFDBE5.xlsx b/WebRoot/upload/1114267F-DB0E-4541-8732-ABE4F0DFDBE5.xlsx deleted file mode 100644 index 195b2a18..00000000 Binary files a/WebRoot/upload/1114267F-DB0E-4541-8732-ABE4F0DFDBE5.xlsx and /dev/null differ diff --git a/WebRoot/upload/113B0DB8-CB28-4A54-BD93-65EA611FD9C1.xlsx b/WebRoot/upload/113B0DB8-CB28-4A54-BD93-65EA611FD9C1.xlsx deleted file mode 100644 index 8d94c7b7..00000000 Binary files a/WebRoot/upload/113B0DB8-CB28-4A54-BD93-65EA611FD9C1.xlsx and /dev/null differ diff --git a/WebRoot/upload/138726DF-F49D-4167-AAC8-57294E426B8E.xlsx b/WebRoot/upload/138726DF-F49D-4167-AAC8-57294E426B8E.xlsx deleted file mode 100644 index d1d7ecef..00000000 Binary files a/WebRoot/upload/138726DF-F49D-4167-AAC8-57294E426B8E.xlsx and /dev/null differ diff --git a/WebRoot/upload/18DD5E3D-DFC5-4423-B4ED-CB4D258D0596.xlsx b/WebRoot/upload/18DD5E3D-DFC5-4423-B4ED-CB4D258D0596.xlsx deleted file mode 100644 index 600eeefe..00000000 Binary files a/WebRoot/upload/18DD5E3D-DFC5-4423-B4ED-CB4D258D0596.xlsx and /dev/null differ diff --git a/WebRoot/upload/193C82A4-9094-42E4-9AE5-E6B76BE16363.xlsx b/WebRoot/upload/193C82A4-9094-42E4-9AE5-E6B76BE16363.xlsx deleted file mode 100644 index 42b2e342..00000000 Binary files a/WebRoot/upload/193C82A4-9094-42E4-9AE5-E6B76BE16363.xlsx and /dev/null differ diff --git a/WebRoot/upload/19ABB473-B626-408A-9E68-035A060F38C4.xlsx b/WebRoot/upload/19ABB473-B626-408A-9E68-035A060F38C4.xlsx deleted file mode 100644 index e8203d62..00000000 Binary files a/WebRoot/upload/19ABB473-B626-408A-9E68-035A060F38C4.xlsx and /dev/null differ diff --git a/WebRoot/upload/19D0B801-B1C2-4884-9648-5A1C1FFEA306.xlsx b/WebRoot/upload/19D0B801-B1C2-4884-9648-5A1C1FFEA306.xlsx deleted file mode 100644 index d461ced7..00000000 Binary files a/WebRoot/upload/19D0B801-B1C2-4884-9648-5A1C1FFEA306.xlsx and /dev/null differ diff --git a/WebRoot/upload/1B268058-1055-44F2-A7DC-894707976375.xlsx b/WebRoot/upload/1B268058-1055-44F2-A7DC-894707976375.xlsx deleted file mode 100644 index 2534afe2..00000000 Binary files a/WebRoot/upload/1B268058-1055-44F2-A7DC-894707976375.xlsx and /dev/null differ diff --git a/WebRoot/upload/1F5AB0D8-9867-421C-9BF4-C9A206F5375C.xlsx b/WebRoot/upload/1F5AB0D8-9867-421C-9BF4-C9A206F5375C.xlsx deleted file mode 100644 index 5c44660f..00000000 Binary files a/WebRoot/upload/1F5AB0D8-9867-421C-9BF4-C9A206F5375C.xlsx and /dev/null differ diff --git a/WebRoot/upload/1FADEE1F-1933-445F-AC6E-BEACA980DA8F.xlsx b/WebRoot/upload/1FADEE1F-1933-445F-AC6E-BEACA980DA8F.xlsx deleted file mode 100644 index 8e3bbbb7..00000000 Binary files a/WebRoot/upload/1FADEE1F-1933-445F-AC6E-BEACA980DA8F.xlsx and /dev/null differ diff --git a/WebRoot/upload/1ea93467-f6d4-42b9-b260-697b16047941.xlsx b/WebRoot/upload/1ea93467-f6d4-42b9-b260-697b16047941.xlsx deleted file mode 100644 index ece766f8..00000000 Binary files a/WebRoot/upload/1ea93467-f6d4-42b9-b260-697b16047941.xlsx and /dev/null differ diff --git a/WebRoot/upload/206B95F9-EBB6-4989-A70F-F752B337EEED.xlsx b/WebRoot/upload/206B95F9-EBB6-4989-A70F-F752B337EEED.xlsx deleted file mode 100644 index bf056a33..00000000 Binary files a/WebRoot/upload/206B95F9-EBB6-4989-A70F-F752B337EEED.xlsx and /dev/null differ diff --git a/WebRoot/upload/229F1533-FD2A-46B3-91DA-D2655C00D110.xlsx b/WebRoot/upload/229F1533-FD2A-46B3-91DA-D2655C00D110.xlsx deleted file mode 100644 index a07abcb0..00000000 Binary files a/WebRoot/upload/229F1533-FD2A-46B3-91DA-D2655C00D110.xlsx and /dev/null differ diff --git a/WebRoot/upload/238463B8-A635-4E1D-85F8-91092E0A60AF.xlsx b/WebRoot/upload/238463B8-A635-4E1D-85F8-91092E0A60AF.xlsx deleted file mode 100644 index b8f90cf5..00000000 Binary files a/WebRoot/upload/238463B8-A635-4E1D-85F8-91092E0A60AF.xlsx and /dev/null differ diff --git a/WebRoot/upload/27C066F2-4E9A-47D1-BCC8-A7B87F451501.xlsx b/WebRoot/upload/27C066F2-4E9A-47D1-BCC8-A7B87F451501.xlsx deleted file mode 100644 index 9a780a8a..00000000 Binary files a/WebRoot/upload/27C066F2-4E9A-47D1-BCC8-A7B87F451501.xlsx and /dev/null differ diff --git a/WebRoot/upload/2B6DCFBD-60FD-477F-884F-5457BF616ECF.xlsx b/WebRoot/upload/2B6DCFBD-60FD-477F-884F-5457BF616ECF.xlsx deleted file mode 100644 index 30b657bd..00000000 Binary files a/WebRoot/upload/2B6DCFBD-60FD-477F-884F-5457BF616ECF.xlsx and /dev/null differ diff --git a/WebRoot/upload/2CAF4B36-AF18-44BB-AE97-3BAB9D63EC09.xlsx b/WebRoot/upload/2CAF4B36-AF18-44BB-AE97-3BAB9D63EC09.xlsx deleted file mode 100644 index a7acf030..00000000 Binary files a/WebRoot/upload/2CAF4B36-AF18-44BB-AE97-3BAB9D63EC09.xlsx and /dev/null differ diff --git a/WebRoot/upload/2E965D9C-055D-4143-8800-6CB2AA695539.xlsx b/WebRoot/upload/2E965D9C-055D-4143-8800-6CB2AA695539.xlsx deleted file mode 100644 index 160f780a..00000000 Binary files a/WebRoot/upload/2E965D9C-055D-4143-8800-6CB2AA695539.xlsx and /dev/null differ diff --git a/WebRoot/upload/2EE74397-819F-4F71-BADC-DD522F976481.xlsx b/WebRoot/upload/2EE74397-819F-4F71-BADC-DD522F976481.xlsx deleted file mode 100644 index 061dea91..00000000 Binary files a/WebRoot/upload/2EE74397-819F-4F71-BADC-DD522F976481.xlsx and /dev/null differ diff --git a/WebRoot/upload/3204E25D-FAE1-4208-9E24-2970E35F526A.xlsx b/WebRoot/upload/3204E25D-FAE1-4208-9E24-2970E35F526A.xlsx deleted file mode 100644 index 98987a50..00000000 Binary files a/WebRoot/upload/3204E25D-FAE1-4208-9E24-2970E35F526A.xlsx and /dev/null differ diff --git a/WebRoot/upload/350F48D1-2E48-4A05-BD8F-52668FEED2A5.xlsx b/WebRoot/upload/350F48D1-2E48-4A05-BD8F-52668FEED2A5.xlsx deleted file mode 100644 index 7c8fa07b..00000000 Binary files a/WebRoot/upload/350F48D1-2E48-4A05-BD8F-52668FEED2A5.xlsx and /dev/null differ diff --git a/WebRoot/upload/35CB4B9E-8017-473F-8742-5E1B812FBCBB.xlsx b/WebRoot/upload/35CB4B9E-8017-473F-8742-5E1B812FBCBB.xlsx deleted file mode 100644 index 1c28c33b..00000000 Binary files a/WebRoot/upload/35CB4B9E-8017-473F-8742-5E1B812FBCBB.xlsx and /dev/null differ diff --git a/WebRoot/upload/370C3393-4B84-42C4-8E29-1ED0F51F5ED5.xlsx b/WebRoot/upload/370C3393-4B84-42C4-8E29-1ED0F51F5ED5.xlsx deleted file mode 100644 index a206bcbe..00000000 Binary files a/WebRoot/upload/370C3393-4B84-42C4-8E29-1ED0F51F5ED5.xlsx and /dev/null differ diff --git a/WebRoot/upload/377CF8A1-DAEA-4188-8730-F077FFAA3078.xlsx b/WebRoot/upload/377CF8A1-DAEA-4188-8730-F077FFAA3078.xlsx deleted file mode 100644 index af774196..00000000 Binary files a/WebRoot/upload/377CF8A1-DAEA-4188-8730-F077FFAA3078.xlsx and /dev/null differ diff --git a/WebRoot/upload/3847638B-B617-4A0D-9FE6-7FD68B400AC2.xlsx b/WebRoot/upload/3847638B-B617-4A0D-9FE6-7FD68B400AC2.xlsx deleted file mode 100644 index c3601d75..00000000 Binary files a/WebRoot/upload/3847638B-B617-4A0D-9FE6-7FD68B400AC2.xlsx and /dev/null differ diff --git a/WebRoot/upload/39BD0F35-D205-4356-9F16-1F2837C87498.xlsx b/WebRoot/upload/39BD0F35-D205-4356-9F16-1F2837C87498.xlsx deleted file mode 100644 index c6cece70..00000000 Binary files a/WebRoot/upload/39BD0F35-D205-4356-9F16-1F2837C87498.xlsx and /dev/null differ diff --git a/WebRoot/upload/3A73D884-78BB-41FE-81F7-7FC44BDB7C75.xlsx b/WebRoot/upload/3A73D884-78BB-41FE-81F7-7FC44BDB7C75.xlsx deleted file mode 100644 index 229f23d1..00000000 Binary files a/WebRoot/upload/3A73D884-78BB-41FE-81F7-7FC44BDB7C75.xlsx and /dev/null differ diff --git a/WebRoot/upload/3CCB711C-1861-4FF5-88E7-CA42FCA82E48.xlsx b/WebRoot/upload/3CCB711C-1861-4FF5-88E7-CA42FCA82E48.xlsx deleted file mode 100644 index 5f2a7b73..00000000 Binary files a/WebRoot/upload/3CCB711C-1861-4FF5-88E7-CA42FCA82E48.xlsx and /dev/null differ diff --git a/WebRoot/upload/3F3335B5-A0C5-4EF5-8BB5-A075F9E715C8.xlsx b/WebRoot/upload/3F3335B5-A0C5-4EF5-8BB5-A075F9E715C8.xlsx deleted file mode 100644 index 26481561..00000000 Binary files a/WebRoot/upload/3F3335B5-A0C5-4EF5-8BB5-A075F9E715C8.xlsx and /dev/null differ diff --git a/WebRoot/upload/4052E90A-2207-48C6-96C6-787AD4DD855D.xlsx b/WebRoot/upload/4052E90A-2207-48C6-96C6-787AD4DD855D.xlsx deleted file mode 100644 index 67eeb5b1..00000000 Binary files a/WebRoot/upload/4052E90A-2207-48C6-96C6-787AD4DD855D.xlsx and /dev/null differ diff --git a/WebRoot/upload/412E2178-1704-4997-97C5-22A42F478ED8.xlsx b/WebRoot/upload/412E2178-1704-4997-97C5-22A42F478ED8.xlsx deleted file mode 100644 index 77e7b51c..00000000 Binary files a/WebRoot/upload/412E2178-1704-4997-97C5-22A42F478ED8.xlsx and /dev/null differ diff --git a/WebRoot/upload/4415B735-0350-4834-B81D-E5298B18B2EC.xlsx b/WebRoot/upload/4415B735-0350-4834-B81D-E5298B18B2EC.xlsx deleted file mode 100644 index d8d7603e..00000000 Binary files a/WebRoot/upload/4415B735-0350-4834-B81D-E5298B18B2EC.xlsx and /dev/null differ diff --git a/WebRoot/upload/4596BE53-919E-4AC3-B0F1-3FBA0C1D8208.xlsx b/WebRoot/upload/4596BE53-919E-4AC3-B0F1-3FBA0C1D8208.xlsx deleted file mode 100644 index d646e965..00000000 Binary files a/WebRoot/upload/4596BE53-919E-4AC3-B0F1-3FBA0C1D8208.xlsx and /dev/null differ diff --git a/WebRoot/upload/45E7245B-1059-4AC8-9550-AE12CB4A0624.xlsx b/WebRoot/upload/45E7245B-1059-4AC8-9550-AE12CB4A0624.xlsx deleted file mode 100644 index 3f46e983..00000000 Binary files a/WebRoot/upload/45E7245B-1059-4AC8-9550-AE12CB4A0624.xlsx and /dev/null differ diff --git a/WebRoot/upload/4644FA74-8B9F-4230-8199-AB4B6BC0C121.xlsx b/WebRoot/upload/4644FA74-8B9F-4230-8199-AB4B6BC0C121.xlsx deleted file mode 100644 index 374291b0..00000000 Binary files a/WebRoot/upload/4644FA74-8B9F-4230-8199-AB4B6BC0C121.xlsx and /dev/null differ diff --git a/WebRoot/upload/48697D31-12A2-4418-B3A8-6DA85427BF6C.xlsx b/WebRoot/upload/48697D31-12A2-4418-B3A8-6DA85427BF6C.xlsx deleted file mode 100644 index 8443c31f..00000000 Binary files a/WebRoot/upload/48697D31-12A2-4418-B3A8-6DA85427BF6C.xlsx and /dev/null differ diff --git a/WebRoot/upload/4AE1714B-DBE6-4210-9B9D-9185CB657D83.xlsx b/WebRoot/upload/4AE1714B-DBE6-4210-9B9D-9185CB657D83.xlsx deleted file mode 100644 index 9a780a8a..00000000 Binary files a/WebRoot/upload/4AE1714B-DBE6-4210-9B9D-9185CB657D83.xlsx and /dev/null differ diff --git a/WebRoot/upload/4B50300C-3A59-4DB3-A328-FD7DC5790A63.xlsx b/WebRoot/upload/4B50300C-3A59-4DB3-A328-FD7DC5790A63.xlsx deleted file mode 100644 index 4106d99a..00000000 Binary files a/WebRoot/upload/4B50300C-3A59-4DB3-A328-FD7DC5790A63.xlsx and /dev/null differ diff --git a/WebRoot/upload/4DA142BC-FE87-4759-9BB2-3DB865BEE312.xlsx b/WebRoot/upload/4DA142BC-FE87-4759-9BB2-3DB865BEE312.xlsx deleted file mode 100644 index 3343e7c5..00000000 Binary files a/WebRoot/upload/4DA142BC-FE87-4759-9BB2-3DB865BEE312.xlsx and /dev/null differ diff --git a/WebRoot/upload/4FEA74DB-5F3E-43C3-B134-AB3753DAC4B9.xlsx b/WebRoot/upload/4FEA74DB-5F3E-43C3-B134-AB3753DAC4B9.xlsx deleted file mode 100644 index 6590a0da..00000000 Binary files a/WebRoot/upload/4FEA74DB-5F3E-43C3-B134-AB3753DAC4B9.xlsx and /dev/null differ diff --git a/WebRoot/upload/4ef5be05-6be6-48e6-b5bc-e2a24f440a9e.xlsx b/WebRoot/upload/4ef5be05-6be6-48e6-b5bc-e2a24f440a9e.xlsx deleted file mode 100644 index ece766f8..00000000 Binary files a/WebRoot/upload/4ef5be05-6be6-48e6-b5bc-e2a24f440a9e.xlsx and /dev/null differ diff --git a/WebRoot/upload/50F88E15-AA31-47E6-8D0B-9447553720C6.xlsx b/WebRoot/upload/50F88E15-AA31-47E6-8D0B-9447553720C6.xlsx deleted file mode 100644 index e35a411a..00000000 Binary files a/WebRoot/upload/50F88E15-AA31-47E6-8D0B-9447553720C6.xlsx and /dev/null differ diff --git a/WebRoot/upload/52FF654A-29FE-4633-B5FB-C927CC7405E3.xlsx b/WebRoot/upload/52FF654A-29FE-4633-B5FB-C927CC7405E3.xlsx deleted file mode 100644 index 43ed9e46..00000000 Binary files a/WebRoot/upload/52FF654A-29FE-4633-B5FB-C927CC7405E3.xlsx and /dev/null differ diff --git a/WebRoot/upload/54D143F0-13D6-40C5-AA09-CD28FD6A1F80.xlsx b/WebRoot/upload/54D143F0-13D6-40C5-AA09-CD28FD6A1F80.xlsx deleted file mode 100644 index f20a69da..00000000 Binary files a/WebRoot/upload/54D143F0-13D6-40C5-AA09-CD28FD6A1F80.xlsx and /dev/null differ diff --git a/WebRoot/upload/562A8FFE-818F-4C3E-84A5-BCB76C0BB700.xlsx b/WebRoot/upload/562A8FFE-818F-4C3E-84A5-BCB76C0BB700.xlsx deleted file mode 100644 index 91c398e3..00000000 Binary files a/WebRoot/upload/562A8FFE-818F-4C3E-84A5-BCB76C0BB700.xlsx and /dev/null differ diff --git a/WebRoot/upload/5867C934-1437-4CCC-8170-6F79BBA86E72.xlsx b/WebRoot/upload/5867C934-1437-4CCC-8170-6F79BBA86E72.xlsx deleted file mode 100644 index 0e92b95f..00000000 Binary files a/WebRoot/upload/5867C934-1437-4CCC-8170-6F79BBA86E72.xlsx and /dev/null differ diff --git a/WebRoot/upload/59CD5185-FFA4-43B7-A937-841E44560446.xlsx b/WebRoot/upload/59CD5185-FFA4-43B7-A937-841E44560446.xlsx deleted file mode 100644 index a41d04f8..00000000 Binary files a/WebRoot/upload/59CD5185-FFA4-43B7-A937-841E44560446.xlsx and /dev/null differ diff --git a/WebRoot/upload/5AC8B30C-2253-4996-8626-D89D6201DB02.xlsx b/WebRoot/upload/5AC8B30C-2253-4996-8626-D89D6201DB02.xlsx deleted file mode 100644 index 95407fb1..00000000 Binary files a/WebRoot/upload/5AC8B30C-2253-4996-8626-D89D6201DB02.xlsx and /dev/null differ diff --git a/WebRoot/upload/5C50A4AC-5A76-42B3-8840-F376D2CF5C9B.xlsx b/WebRoot/upload/5C50A4AC-5A76-42B3-8840-F376D2CF5C9B.xlsx deleted file mode 100644 index 0cd10ce4..00000000 Binary files a/WebRoot/upload/5C50A4AC-5A76-42B3-8840-F376D2CF5C9B.xlsx and /dev/null differ diff --git a/WebRoot/upload/5CC2F74B-2F33-4032-97D1-78E645E682E4.xlsx b/WebRoot/upload/5CC2F74B-2F33-4032-97D1-78E645E682E4.xlsx deleted file mode 100644 index 7d5de717..00000000 Binary files a/WebRoot/upload/5CC2F74B-2F33-4032-97D1-78E645E682E4.xlsx and /dev/null differ diff --git a/WebRoot/upload/636FCF96-809A-4A44-87F8-FF75475DCF24.xlsx b/WebRoot/upload/636FCF96-809A-4A44-87F8-FF75475DCF24.xlsx deleted file mode 100644 index 22022714..00000000 Binary files a/WebRoot/upload/636FCF96-809A-4A44-87F8-FF75475DCF24.xlsx and /dev/null differ diff --git a/WebRoot/upload/638BBBC7-85E8-42CA-A6E6-9A6E0F7F7EAC.xlsx b/WebRoot/upload/638BBBC7-85E8-42CA-A6E6-9A6E0F7F7EAC.xlsx deleted file mode 100644 index 5a162524..00000000 Binary files a/WebRoot/upload/638BBBC7-85E8-42CA-A6E6-9A6E0F7F7EAC.xlsx and /dev/null differ diff --git a/WebRoot/upload/66BA7EA4-EEE8-4D1F-8283-9F33E1526D32.xlsx b/WebRoot/upload/66BA7EA4-EEE8-4D1F-8283-9F33E1526D32.xlsx deleted file mode 100644 index a5626fc6..00000000 Binary files a/WebRoot/upload/66BA7EA4-EEE8-4D1F-8283-9F33E1526D32.xlsx and /dev/null differ diff --git a/WebRoot/upload/677BA7FE-7535-4BD1-80EE-E2DB242AFC4C.xlsx b/WebRoot/upload/677BA7FE-7535-4BD1-80EE-E2DB242AFC4C.xlsx deleted file mode 100644 index 007890a9..00000000 Binary files a/WebRoot/upload/677BA7FE-7535-4BD1-80EE-E2DB242AFC4C.xlsx and /dev/null differ diff --git a/WebRoot/upload/69AE027D-3A29-4090-8246-8CE206D16E6B.xlsx b/WebRoot/upload/69AE027D-3A29-4090-8246-8CE206D16E6B.xlsx deleted file mode 100644 index 2da4d40d..00000000 Binary files a/WebRoot/upload/69AE027D-3A29-4090-8246-8CE206D16E6B.xlsx and /dev/null differ diff --git a/WebRoot/upload/69E3851E-9A96-45B1-BE26-DF82C87FF715.xlsx b/WebRoot/upload/69E3851E-9A96-45B1-BE26-DF82C87FF715.xlsx deleted file mode 100644 index 41083e27..00000000 Binary files a/WebRoot/upload/69E3851E-9A96-45B1-BE26-DF82C87FF715.xlsx and /dev/null differ diff --git a/WebRoot/upload/6C5E545F-36F3-45B7-9040-0B9649F48D4A.xlsx b/WebRoot/upload/6C5E545F-36F3-45B7-9040-0B9649F48D4A.xlsx deleted file mode 100644 index 813de9fb..00000000 Binary files a/WebRoot/upload/6C5E545F-36F3-45B7-9040-0B9649F48D4A.xlsx and /dev/null differ diff --git a/WebRoot/upload/6D78014C-90EE-452F-95F7-66E418557AFB.xlsx b/WebRoot/upload/6D78014C-90EE-452F-95F7-66E418557AFB.xlsx deleted file mode 100644 index 78555ab1..00000000 Binary files a/WebRoot/upload/6D78014C-90EE-452F-95F7-66E418557AFB.xlsx and /dev/null differ diff --git a/WebRoot/upload/6E50128C-3B15-4B3B-91BD-133F9A7BC73E.xlsx b/WebRoot/upload/6E50128C-3B15-4B3B-91BD-133F9A7BC73E.xlsx deleted file mode 100644 index 3f5f2a30..00000000 Binary files a/WebRoot/upload/6E50128C-3B15-4B3B-91BD-133F9A7BC73E.xlsx and /dev/null differ diff --git a/WebRoot/upload/6E989941-01FF-430B-BEE9-59EC46E1FA14.xlsx b/WebRoot/upload/6E989941-01FF-430B-BEE9-59EC46E1FA14.xlsx deleted file mode 100644 index 38c546f2..00000000 Binary files a/WebRoot/upload/6E989941-01FF-430B-BEE9-59EC46E1FA14.xlsx and /dev/null differ diff --git a/WebRoot/upload/6FDA88D6-FE34-4195-9517-B0345D8FD7B9.xlsx b/WebRoot/upload/6FDA88D6-FE34-4195-9517-B0345D8FD7B9.xlsx deleted file mode 100644 index 7fe395a8..00000000 Binary files a/WebRoot/upload/6FDA88D6-FE34-4195-9517-B0345D8FD7B9.xlsx and /dev/null differ diff --git a/WebRoot/upload/7039B283-0D0B-4B1C-8F6C-77F0FA053006.xlsx b/WebRoot/upload/7039B283-0D0B-4B1C-8F6C-77F0FA053006.xlsx deleted file mode 100644 index ff20b503..00000000 Binary files a/WebRoot/upload/7039B283-0D0B-4B1C-8F6C-77F0FA053006.xlsx and /dev/null differ diff --git a/WebRoot/upload/70A6D6EA-409C-46AD-AE21-9B5FD115DB92.xlsx b/WebRoot/upload/70A6D6EA-409C-46AD-AE21-9B5FD115DB92.xlsx deleted file mode 100644 index db4ed272..00000000 Binary files a/WebRoot/upload/70A6D6EA-409C-46AD-AE21-9B5FD115DB92.xlsx and /dev/null differ diff --git a/WebRoot/upload/7150D11E-88F2-41E8-8DC4-78DADDD74F3B.xlsx b/WebRoot/upload/7150D11E-88F2-41E8-8DC4-78DADDD74F3B.xlsx deleted file mode 100644 index e6f80431..00000000 Binary files a/WebRoot/upload/7150D11E-88F2-41E8-8DC4-78DADDD74F3B.xlsx and /dev/null differ diff --git a/WebRoot/upload/718561B1-52DE-423C-9D07-1451DAA1F03A.xlsx b/WebRoot/upload/718561B1-52DE-423C-9D07-1451DAA1F03A.xlsx deleted file mode 100644 index aace817b..00000000 Binary files a/WebRoot/upload/718561B1-52DE-423C-9D07-1451DAA1F03A.xlsx and /dev/null differ diff --git a/WebRoot/upload/771397f5-7a98-45d1-9e19-8371d3be3d70.txt b/WebRoot/upload/771397f5-7a98-45d1-9e19-8371d3be3d70.txt deleted file mode 100644 index a68d0116..00000000 --- a/WebRoot/upload/771397f5-7a98-45d1-9e19-8371d3be3d70.txt +++ /dev/null @@ -1,1276 +0,0 @@ -CREATE MATERIALIZED VIEW "public"."mv_dp_baner_area" -AS -SELECT '小学'::text AS stage, - j212_r.gatherregionc, - CASE j212_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j212_r.recordyear, - j212_r.c AS didgroup, - j212_r.did, - sum((((((j212_r.f + j212_r.g) + j212_r.h) + j212_r.i) + j212_r.j) + j212_r.k)) AS total - FROM j212_r - WHERE ((j212_r.did = ANY (ARRAY[3, 4, 5, 6, 7, 8, 9, 10, 11, 12])) AND ((j212_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j212_r.gatherregionc, j212_r.citycountrygroup, j212_r.recordyear, j212_r.c, j212_r.did -UNION ALL - SELECT '初中'::text AS stage, - j213_r.gatherregionc, - CASE j213_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j213_r.recordyear, - j213_r.c AS didgroup, - j213_r.did, - sum(((j213_r.g + j213_r.h) + j213_r.i)) AS total - FROM j213_r - WHERE ((j213_r.did = ANY (ARRAY[3, 4, 5, 6, 7, 8, 9, 10, 11, 12])) AND ((j213_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j213_r.gatherregionc, j213_r.citycountrygroup, j213_r.recordyear, j213_r.c, j213_r.did -UNION ALL - SELECT '高中'::text AS stage, - j213_r.gatherregionc, - CASE j213_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j213_r.recordyear, - j213_r.c AS didgroup, - j213_r.did, - sum(((j213_r.l + j213_r.m) + j213_r.n)) AS total - FROM j213_r - WHERE ((j213_r.did = ANY (ARRAY[3, 4, 5, 6, 7, 8, 9, 10, 11, 12])) AND ((j213_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j213_r.gatherregionc, j213_r.citycountrygroup, j213_r.recordyear, j213_r.c, j213_r.did; - -ALTER MATERIALIZED VIEW "public"."mv_dp_baner_area" OWNER TO "postgres"; - - -CREATE MATERIALIZED VIEW "public"."mv_dp_banxuetiaojian_organization" -AS -SELECT stage, - gatherregionc, - CASE citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - organizationno, - recordyear, - sum(xiaosheno) AS xiaosheno, - sum(jiaoxuejiaofuno) AS jiaoxuejiaofuno, - sum(xueshengsusheno) AS xueshengsusheno, - sum(zhandimianjino) AS zhandimianjino, - sum(lvhuamianjino) AS lvhuamianjino, - sum(yundongchangdino) AS yundongchangdino - FROM ( SELECT '小学'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 1) AND ((j512_r.schooltypegroup)::text = '小学'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 1) AND ((j512_r.schooltypegroup)::text = '普通初中'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 1) AND ((j512_r.schooltypegroup)::text = '普通高中'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - 0 AS xiaosheno, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 4) AND ((j512_r.schooltypegroup)::text = '小学'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - 0 AS xiaosheno, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 4) AND ((j512_r.schooltypegroup)::text = '普通初中'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - 0 AS xiaosheno, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 4) AND ((j512_r.schooltypegroup)::text = '普通高中'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 16) AND ((j512_r.schooltypegroup)::text = '小学'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 16) AND ((j512_r.schooltypegroup)::text = '普通初中'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j512_r.gatherregionc, - j512_r.citycountrygroup, - j512_r.organizationno, - j512_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - sum((((j512_r.f + j512_r.g) + j512_r.h) + j512_r.i)) AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j512_r - WHERE ((j512_r.did = 16) AND ((j512_r.schooltypegroup)::text = '普通高中'::text) AND ((j512_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j512_r.gatherregionc, j512_r.citycountrygroup, j512_r.organizationno, j512_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - sum(j522_r.d) AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '小学'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - sum(j522_r.d) AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '普通初中'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - sum(j522_r.d) AS zhandimianjino, - 0 AS lvhuamianjino, - 0 AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '普通高中'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - sum(j522_r.e) AS lvhuamianjino, - 0 AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '小学'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - sum(j522_r.e) AS lvhuamianjino, - 0 AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '普通初中'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - sum(j522_r.e) AS lvhuamianjino, - 0 AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '普通高中'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - sum(j522_r.f) AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '小学'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - sum(j522_r.f) AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '普通初中'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j522_r.gatherregionc, - j522_r.citycountrygroup, - j522_r.organizationno, - j522_r.recordyear, - 0 AS xiaosheno, - 0 AS jiaoxuejiaofuno, - 0 AS xueshengsusheno, - 0 AS zhandimianjino, - 0 AS lvhuamianjino, - sum(j522_r.f) AS yundongchangdino - FROM j522_r - WHERE (((j522_r.schooltypegroup)::text = '普通高中'::text) AND ((j522_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j522_r.gatherregionc, j522_r.citycountrygroup, j522_r.organizationno, j522_r.recordyear) t - GROUP BY stage, gatherregionc, citycountrygroup, organizationno, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_banxuetiaojian_organization" OWNER TO "postgres"; - - -CREATE MATERIALIZED VIEW "public"."mv_dp_banxuetiaojian_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - sum(xiaosheno) AS xiaosheno, - sum(jiaoxuejiaofuno) AS jiaoxuejiaofuno, - sum(xueshengsusheno) AS xueshengsusheno, - sum(zhandimianjino) AS zhandimianjino, - sum(lvhuamianjino) AS lvhuamianjino, - sum(yundongchangdino) AS yundongchangdino - FROM mv_dp_banxuetiaojian_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_banxuetiaojian_area" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_class_organization" -AS -SELECT stage, - gatherregionc, - CASE citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - organizationno, - recordyear, - didgroup, - sum(classno) AS classno, - sum(studentno) AS studentno - FROM ( SELECT '小学'::text AS stage, - j212_r.gatherregionc, - j212_r.citycountrygroup, - j212_r.organizationno, - j212_r.recordyear, - unnest(ARRAY['一年级'::text, '二年级'::text, '三年级'::text, '四年级'::text, '五年级'::text, '六年级'::text]) AS didgroup, - unnest(ARRAY[j212_r.f, j212_r.g, j212_r.h, j212_r.i, j212_r.j, j212_r.k]) AS classno, - 0 AS studentno - FROM j212_r - WHERE ((j212_r.did = 1) AND ((j212_r.gatherregionb)::text = '长春市'::text)) - UNION ALL - SELECT '初中'::text AS stage, - j213_r.gatherregionc, - j213_r.citycountrygroup, - j213_r.organizationno, - j213_r.recordyear, - unnest(ARRAY['初一年级'::text, '初二年级'::text, '初三年级'::text]) AS didgroup, - unnest(ARRAY[j213_r.g, j213_r.h, j213_r.i]) AS classno, - 0 AS studentno - FROM j213_r - WHERE ((j213_r.did = 1) AND ((j213_r.gatherregionb)::text = '长春市'::text)) - UNION ALL - SELECT '高中'::text AS stage, - j213_r.gatherregionc, - j213_r.citycountrygroup, - j213_r.organizationno, - j213_r.recordyear, - unnest(ARRAY['高一年级'::text, '高二年级'::text, '高三年级'::text]) AS didgroup, - unnest(ARRAY[j213_r.l, j213_r.m, j213_r.n]) AS classno, - 0 AS studentno - FROM j213_r - WHERE ((j213_r.did = 1) AND ((j213_r.gatherregionb)::text = '长春市'::text)) - UNION ALL - SELECT '小学'::text AS stage, - j312_r.gatherregionc, - j312_r.citycountrygroup, - j312_r.organizationno, - j312_r.recordyear, - unnest(ARRAY['一年级'::text, '二年级'::text, '三年级'::text, '四年级'::text, '五年级'::text, '六年级'::text]) AS didgroup, - 0 AS classno, - unnest(ARRAY[j312_r.j, j312_r.k, j312_r.l, j312_r.m, j312_r.n, j312_r.o]) AS studentno - FROM j312_r - WHERE ((j312_r.did = 1) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - j313_r.citycountrygroup, - j313_r.organizationno, - j313_r.recordyear, - unnest(ARRAY['初一年级'::text, '初二年级'::text, '初三年级'::text]) AS didgroup, - 0 AS classno, - unnest(ARRAY[j313_r.i, j313_r.j, j313_r.k]) AS studentno - FROM j313_r - WHERE ((j313_r.did = 1) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - UNION ALL - SELECT '高中'::text AS stage, - j314_r.gatherregionc, - j314_r.citycountrygroup, - j314_r.organizationno, - j314_r.recordyear, - unnest(ARRAY['高一年级'::text, '高二年级'::text, '高三年级'::text]) AS didgroup, - 0 AS classno, - unnest(ARRAY[j314_r.i, j314_r.j, j314_r.k]) AS studentno - FROM j314_r - WHERE ((j314_r.did = 1) AND ((j314_r.gatherregionb)::text = '长春市'::text))) t - GROUP BY stage, gatherregionc, citycountrygroup, organizationno, recordyear, didgroup; - -ALTER MATERIALIZED VIEW "public"."mv_dp_class_organization" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_class_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - didgroup, - sum(classno) AS classno, - sum(studentno) AS studentno - FROM mv_dp_class_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear, didgroup; - -ALTER MATERIALIZED VIEW "public"."mv_dp_class_area" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_zyjszw_organization" -AS -SELECT '小学'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - j422_r.b AS didgroup, - sum(((((((((j422_r.f + j422_r.g) + j422_r.h) + j422_r.i) + j422_r.j) + j422_r.k) + j422_r.l) + j422_r.m) + j422_r.n)) AS total - FROM j422_r - WHERE ((j422_r.did = ANY (ARRAY[4, 5, 6, 7, 8, 9])) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.schooltypegroup, j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear, j422_r.b -UNION ALL - SELECT '初中'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - j422_r.b AS didgroup, - sum(((((((((j422_r.f + j422_r.g) + j422_r.h) + j422_r.i) + j422_r.j) + j422_r.k) + j422_r.l) + j422_r.m) + j422_r.n)) AS total - FROM j422_r - WHERE ((j422_r.did = ANY (ARRAY[13, 14, 15, 16, 17, 18])) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.schooltypegroup, j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear, j422_r.b -UNION ALL - SELECT '高中'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - j422_r.b AS didgroup, - sum(((((((((j422_r.f + j422_r.g) + j422_r.h) + j422_r.i) + j422_r.j) + j422_r.k) + j422_r.l) + j422_r.m) + j422_r.n)) AS total - FROM j422_r - WHERE ((j422_r.did = ANY (ARRAY[22, 23, 24, 25, 26, 27])) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.schooltypegroup, j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear, j422_r.b; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_zyjszw_organization" OWNER TO "postgres"; - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_zyjszw_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - didgroup, - sum(total) AS total - FROM mv_dp_teacher_zrjs_zyjszw_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear, didgroup; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_zyjszw_area" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_xl_organization" -AS -SELECT '小学'::text AS stage, - j423_r.gatherregionc, - CASE j423_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j423_r.organizationno, - j423_r.recordyear, - j423_r.b AS didgroup, - sum((((((((((((j423_r.f + j423_r.g) + j423_r.h) + j423_r.i) + j423_r.m) + j423_r.n) + j423_r.o) + j423_r.p) + j423_r.q) + j423_r.r) + j423_r.u) + j423_r.v)) AS total - FROM j423_r - WHERE (((j423_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('312'::character varying)::text, ('345'::character varying)::text])) AND (j423_r.did = ANY (ARRAY[4, 5, 6, 7, 8])) AND ((j423_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j423_r.schooltypegroup, j423_r.gatherregionc, j423_r.citycountrygroup, j423_r.organizationno, j423_r.recordyear, j423_r.b -UNION ALL - SELECT '初中'::text AS stage, - j424_r.gatherregionc, - CASE j424_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j424_r.organizationno, - j424_r.recordyear, - j424_r.b AS didgroup, - sum((((((((((((((((((((j424_r.f + j424_r.g) + j424_r.h) + j424_r.i) + j424_r.m) + j424_r.n) + j424_r.o) + j424_r.p) + j424_r.q) + j424_r.r) + j424_r.s) + j424_r.t) + j424_r.u) + j424_r.v) + j424_r.w) + j424_r.x) + j424_r.y) + j424_r.z) + j424_r.ac) + j424_r.ad)) AS total - FROM j424_r - WHERE (((j424_r.businesstypeno)::text = ANY (ARRAY[('311'::character varying)::text, ('312'::character varying)::text, ('321'::character varying)::text, ('341'::character varying)::text, ('345'::character varying)::text])) AND (j424_r.did = ANY (ARRAY[5, 6, 7, 8, 9])) AND ((j424_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j424_r.schooltypegroup, j424_r.gatherregionc, j424_r.citycountrygroup, j424_r.organizationno, j424_r.recordyear, j424_r.b -UNION ALL - SELECT '高中'::text AS stage, - j424_r.gatherregionc, - CASE j424_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j424_r.organizationno, - j424_r.recordyear, - j424_r.b AS didgroup, - sum((((((((((((((((((((j424_r.f + j424_r.g) + j424_r.h) + j424_r.i) + j424_r.m) + j424_r.n) + j424_r.o) + j424_r.p) + j424_r.q) + j424_r.r) + j424_r.s) + j424_r.t) + j424_r.u) + j424_r.v) + j424_r.w) + j424_r.x) + j424_r.y) + j424_r.z) + j424_r.ac) + j424_r.ad)) AS total - FROM j424_r - WHERE ((j424_r.did = ANY (ARRAY[13, 14, 15, 16, 17])) AND ((j424_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j424_r.schooltypegroup, j424_r.gatherregionc, j424_r.citycountrygroup, j424_r.organizationno, j424_r.recordyear, j424_r.b; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_xl_organization" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_xl_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - didgroup, - sum(total) AS total - FROM mv_dp_teacher_zrjs_xl_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear, didgroup; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_xl_area" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_count_organization" -AS -SELECT '小学'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - sum(((((((((j422_r.f + j422_r.g) + j422_r.h) + j422_r.i) + j422_r.j) + j422_r.k) + j422_r.l) + j422_r.m) + j422_r.n)) AS total, - sum(j422_r.e) AS nvno - FROM j422_r - WHERE ((j422_r.did = 1) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear -UNION ALL - SELECT '初中'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - sum(((((((((j422_r.f + j422_r.g) + j422_r.h) + j422_r.i) + j422_r.j) + j422_r.k) + j422_r.l) + j422_r.m) + j422_r.n)) AS total, - sum(j422_r.e) AS nvno - FROM j422_r - WHERE ((j422_r.did = 10) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear -UNION ALL - SELECT '高中'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - sum(((((((((j422_r.f + j422_r.g) + j422_r.h) + j422_r.i) + j422_r.j) + j422_r.k) + j422_r.l) + j422_r.m) + j422_r.n)) AS total, - sum(j422_r.e) AS nvno - FROM j422_r - WHERE ((j422_r.did = 19) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_count_organization" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_count_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - sum(total) AS total, - sum(nvno) AS nvno - FROM mv_dp_teacher_zrjs_count_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_count_area" OWNER TO "postgres"; - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_age_organization" -AS -SELECT '小学'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - unnest(ARRAY['24岁及以下'::text, '25-29岁'::text, '30-34岁'::text, '35-39岁'::text, '40-44岁'::text, '45-49岁'::text, '50-54岁'::text, '55-59岁'::text, '60岁及以上'::text]) AS didgroup, - unnest(ARRAY[sum(j422_r.f), sum(j422_r.g), sum(j422_r.h), sum(j422_r.i), sum(j422_r.j), sum(j422_r.k), sum(j422_r.l), sum(j422_r.m), sum(j422_r.n)]) AS total - FROM j422_r - WHERE ((j422_r.did = 1) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear -UNION ALL - SELECT '初中'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - unnest(ARRAY['24岁及以下'::text, '25-29岁'::text, '30-34岁'::text, '35-39岁'::text, '40-44岁'::text, '45-49岁'::text, '50-54岁'::text, '55-59岁'::text, '60岁及以上'::text]) AS didgroup, - unnest(ARRAY[sum(j422_r.f), sum(j422_r.g), sum(j422_r.h), sum(j422_r.i), sum(j422_r.j), sum(j422_r.k), sum(j422_r.l), sum(j422_r.m), sum(j422_r.n)]) AS total - FROM j422_r - WHERE ((j422_r.did = 10) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear -UNION ALL - SELECT '高中'::text AS stage, - j422_r.gatherregionc, - CASE j422_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j422_r.organizationno, - j422_r.recordyear, - unnest(ARRAY['24岁及以下'::text, '25-29岁'::text, '30-34岁'::text, '35-39岁'::text, '40-44岁'::text, '45-49岁'::text, '50-54岁'::text, '55-59岁'::text, '60岁及以上'::text]) AS didgroup, - unnest(ARRAY[sum(j422_r.f), sum(j422_r.g), sum(j422_r.h), sum(j422_r.i), sum(j422_r.j), sum(j422_r.k), sum(j422_r.l), sum(j422_r.m), sum(j422_r.n)]) AS total - FROM j422_r - WHERE ((j422_r.did = 19) AND ((j422_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j422_r.gatherregionc, j422_r.citycountrygroup, j422_r.organizationno, j422_r.recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_age_organization" OWNER TO "postgres"; - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_age_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - didgroup, - sum(total) AS total - FROM mv_dp_teacher_zrjs_age_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear, didgroup; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_zrjs_age_area" OWNER TO "postgres"; - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_jzg_count_organization" -AS -SELECT schooltype, - gatherregionc, - citycountrygroup, - organizationno, - recordyear, - sum(total) AS total, - sum(nvno) AS nvno, - sum(zaibianno) AS zaibianno - FROM ( SELECT - CASE j412_r.schooltype - WHEN '小学教学点'::text THEN '小学'::character varying - ELSE j412_r.schooltype - END AS schooltype, - j412_r.gatherregionc, - CASE j412_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j412_r.organizationno, - j412_r.recordyear, - sum(((((j412_r.e + j412_r.f) + j412_r.g) + j412_r.h) + j412_r.i)) AS total, - 0 AS nvno, - 0 AS zaibianno - FROM j412_r - WHERE ((j412_r.did = 1) AND ((j412_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text])) AND ((j412_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j412_r.schooltype, j412_r.gatherregionc, j412_r.citycountrygroup, j412_r.organizationno, j412_r.recordyear - UNION ALL - SELECT - CASE j412_r.schooltype - WHEN '小学教学点'::text THEN '小学'::character varying - ELSE j412_r.schooltype - END AS schooltype, - j412_r.gatherregionc, - CASE j412_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j412_r.organizationno, - j412_r.recordyear, - 0 AS total, - sum(((((j412_r.e + j412_r.f) + j412_r.g) + j412_r.h) + j412_r.i)) AS nvno, - 0 AS zaibianno - FROM j412_r - WHERE ((j412_r.did = 2) AND ((j412_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text])) AND ((j412_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j412_r.schooltype, j412_r.gatherregionc, j412_r.citycountrygroup, j412_r.organizationno, j412_r.recordyear - UNION ALL - SELECT - CASE j412_r.schooltype - WHEN '小学教学点'::text THEN '小学'::character varying - ELSE j412_r.schooltype - END AS schooltype, - j412_r.gatherregionc, - CASE j412_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j412_r.organizationno, - j412_r.recordyear, - 0 AS total, - 0 AS nvno, - sum(((((j412_r.e + j412_r.f) + j412_r.g) + j412_r.h) + j412_r.i)) AS zaibianno - FROM j412_r - WHERE ((j412_r.did = 4) AND ((j412_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text])) AND ((j412_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j412_r.schooltype, j412_r.gatherregionc, j412_r.citycountrygroup, j412_r.organizationno, j412_r.recordyear) t - GROUP BY schooltype, gatherregionc, citycountrygroup, organizationno, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_jzg_count_organization" OWNER TO "postgres"; - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_jzg_count_area" -AS -SELECT schooltype, - gatherregionc, - citycountrygroup, - recordyear, - sum(total) AS total, - sum(nvno) AS nvno, - sum(zaibianno) AS zaibianno - FROM mv_dp_teacher_jzg_count_organization - GROUP BY schooltype, gatherregionc, citycountrygroup, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_jzg_count_area" OWNER TO "postgres"; - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_teacher_jzg_bzlb_organization" -AS -SELECT gatherregionc, - CASE citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - organizationno, - recordyear, - unnest(ARRAY['专任教师'::text, '行政人员'::text, '教辅人员'::text, '工勤人员'::text, '校办企业职工'::text, '代课教师'::text, '兼任教师'::text]) AS didgroup, - unnest(ARRAY[sum(e), sum(f), sum(g), sum(h), sum(i), sum(j), sum(k)]) AS total - FROM j412_r - WHERE ((did = 1) AND ((gatherregionb)::text = '长春市'::text)) - GROUP BY gatherregionc, citycountrygroup, organizationno, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_teacher_jzg_bzlb_organization" OWNER TO "postgres"; - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_student_suiqian_area" -AS -SELECT '小学'::text AS stage, - j312_r.gatherregionc, - CASE j312_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j312_r.recordyear, - CASE j312_r.did - WHEN 10 THEN '外省迁入'::text - WHEN 11 THEN '本省外县迁入'::text - ELSE NULL::text - END AS didgroup, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS total - FROM j312_r - WHERE ((j312_r.did = ANY (ARRAY[10, 11])) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j312_r.gatherregionc, j312_r.citycountrygroup, j312_r.recordyear, j312_r.did -UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - CASE j313_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j313_r.recordyear, - CASE j313_r.did - WHEN 9 THEN '外省迁入'::text - WHEN 10 THEN '本省外县迁入'::text - ELSE NULL::text - END AS didgroup, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS total - FROM j313_r - WHERE ((j313_r.did = ANY (ARRAY[9, 10])) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j313_r.gatherregionc, j313_r.citycountrygroup, j313_r.recordyear, j313_r.did -UNION ALL - SELECT '高中'::text AS stage, - j314_r.gatherregionc, - CASE j314_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j314_r.recordyear, - CASE j314_r.did - WHEN 9 THEN '外省迁入'::text - WHEN 10 THEN '本省外县迁入'::text - ELSE NULL::text - END AS didgroup, - sum(((j314_r.i + j314_r.j) + j314_r.k)) AS total - FROM j314_r - WHERE ((j314_r.did = ANY (ARRAY[9, 10])) AND ((j314_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j314_r.gatherregionc, j314_r.citycountrygroup, j314_r.recordyear, j314_r.did; - -ALTER MATERIALIZED VIEW "public"."mv_dp_student_suiqian_area" OWNER TO "postgres"; - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_student_schooltype_area" -AS -SELECT gatherregionc, - schooltype, - recordyear, - sum(zhaoshengno) AS zhaoshengno, - sum(zaixiaono) AS zaixiaono, - sum(biyeno) AS biyeno, - sum(nvno) AS nvno - FROM ( SELECT j312_r.gatherregionc, - CASE j312_r.schooltype - WHEN '小学教学点'::text THEN '小学'::character varying - ELSE j312_r.schooltype - END AS schooltype, - j312_r.recordyear, - sum(j312_r.f) AS zhaoshengno, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS zaixiaono, - sum(j312_r.e) AS biyeno, - sum(j312_r.i) AS nvno - FROM j312_r - WHERE ((j312_r.did = 1) AND ((j312_r.gatherregionb)::text = '长春市'::text) AND ((j312_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text]))) - GROUP BY j312_r.gatherregionc, j312_r.schooltype, j312_r.recordyear - UNION ALL - SELECT j313_r.gatherregionc, - j313_r.schooltype, - j313_r.recordyear, - sum(j313_r.f) AS zhaoshengno, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS zaixiaono, - sum(j313_r.e) AS biyeno, - sum(j313_r.h) AS nvno - FROM j313_r - WHERE ((j313_r.did = 1) AND ((j313_r.gatherregionb)::text = '长春市'::text) AND ((j313_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text]))) - GROUP BY j313_r.gatherregionc, j313_r.schooltype, j313_r.recordyear - UNION ALL - SELECT j314_r.gatherregionc, - j314_r.schooltype, - j314_r.recordyear, - sum(j314_r.f) AS zhaoshengno, - sum(((j314_r.i + j314_r.j) + j314_r.k)) AS zaixiaono, - sum(j314_r.e) AS biyeno, - sum(j314_r.h) AS nvno - FROM j314_r - WHERE ((j314_r.did = 1) AND ((j314_r.gatherregionb)::text = '长春市'::text) AND ((j314_r.businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('218'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text]))) - GROUP BY j314_r.gatherregionc, j314_r.schooltype, j314_r.recordyear) t - GROUP BY gatherregionc, schooltype, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_student_schooltype_area" OWNER TO "postgres"; - - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_student_organization" -AS -SELECT stage, - gatherregionc, - CASE citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - organizationno, - recordyear, - sum(zhaoshengno) AS zhaoshengno, - sum(zaixiaono) AS zaixiaono, - sum(biyeno) AS biyeno, - sum(nvno) AS nvno, - sum(shaoshuno) AS shaoshuno, - sum(jisuno) AS jisuno, - sum(liushou) AS liushou - FROM ( SELECT '小学'::text AS stage, - j312_r.gatherregionc, - j312_r.citycountrygroup, - j312_r.organizationno, - j312_r.recordyear, - sum(j312_r.f) AS zhaoshengno, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS zaixiaono, - sum(j312_r.e) AS biyeno, - sum(j312_r.i) AS nvno, - 0 AS shaoshuno, - 0 AS jisuno, - 0 AS liushou - FROM j312_r - WHERE ((j312_r.did = 1) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j312_r.gatherregionc, j312_r.citycountrygroup, j312_r.organizationno, j312_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - j313_r.citycountrygroup, - j313_r.organizationno, - j313_r.recordyear, - sum(j313_r.f) AS zhaoshengno, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS zaixiaono, - sum(j313_r.e) AS biyeno, - sum(j313_r.h) AS nvno, - 0 AS shaoshuno, - 0 AS jisuno, - 0 AS liushou - FROM j313_r - WHERE ((j313_r.did = 1) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j313_r.gatherregionc, j313_r.citycountrygroup, j313_r.organizationno, j313_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j314_r.gatherregionc, - j314_r.citycountrygroup, - j314_r.organizationno, - j314_r.recordyear, - sum(j314_r.f) AS zhaoshengno, - sum(((j314_r.i + j314_r.j) + j314_r.k)) AS zaixiaono, - sum(j314_r.e) AS biyeno, - sum(j314_r.h) AS nvno, - 0 AS shaoshuno, - 0 AS jisuno, - 0 AS liushou - FROM j314_r - WHERE ((j314_r.did = 1) AND ((j314_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j314_r.gatherregionc, j314_r.citycountrygroup, j314_r.organizationno, j314_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j312_r.gatherregionc, - j312_r.citycountrygroup, - j312_r.organizationno, - j312_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS shaoshuno, - 0 AS jisuno, - 0 AS liushou - FROM j312_r - WHERE ((j312_r.did = 3) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j312_r.gatherregionc, j312_r.citycountrygroup, j312_r.organizationno, j312_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - j313_r.citycountrygroup, - j313_r.organizationno, - j313_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS shaoshuno, - 0 AS jisuno, - 0 AS liushou - FROM j313_r - WHERE ((j313_r.did = 3) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j313_r.gatherregionc, j313_r.citycountrygroup, j313_r.organizationno, j313_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j314_r.gatherregionc, - j314_r.citycountrygroup, - j314_r.organizationno, - j314_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - sum(((j314_r.i + j314_r.j) + j314_r.k)) AS shaoshuno, - 0 AS jisuno, - 0 AS liushou - FROM j314_r - WHERE ((j314_r.did = 3) AND ((j314_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j314_r.gatherregionc, j314_r.citycountrygroup, j314_r.organizationno, j314_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j312_r.gatherregionc, - j312_r.citycountrygroup, - j312_r.organizationno, - j312_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - 0 AS shaoshuno, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS jisuno, - 0 AS liushou - FROM j312_r - WHERE ((j312_r.did = 8) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j312_r.gatherregionc, j312_r.citycountrygroup, j312_r.organizationno, j312_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - j313_r.citycountrygroup, - j313_r.organizationno, - j313_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - 0 AS shaoshuno, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS jisuno, - 0 AS liushou - FROM j313_r - WHERE ((j313_r.did = 7) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j313_r.gatherregionc, j313_r.citycountrygroup, j313_r.organizationno, j313_r.recordyear - UNION ALL - SELECT '高中'::text AS stage, - j314_r.gatherregionc, - j314_r.citycountrygroup, - j314_r.organizationno, - j314_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - 0 AS shaoshuno, - sum(((j314_r.i + j314_r.j) + j314_r.k)) AS jisuno, - 0 AS liushou - FROM j314_r - WHERE ((j314_r.did = 6) AND ((j314_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j314_r.gatherregionc, j314_r.citycountrygroup, j314_r.organizationno, j314_r.recordyear - UNION ALL - SELECT '小学'::text AS stage, - j312_r.gatherregionc, - j312_r.citycountrygroup, - j312_r.organizationno, - j312_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - 0 AS shaoshuno, - 0 AS jisuno, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS liushou - FROM j312_r - WHERE ((j312_r.did = 15) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j312_r.gatherregionc, j312_r.citycountrygroup, j312_r.organizationno, j312_r.recordyear - UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - j313_r.citycountrygroup, - j313_r.organizationno, - j313_r.recordyear, - 0 AS zhaoshengno, - 0 AS zaixiaono, - 0 AS biyeno, - 0 AS nvno, - 0 AS shaoshuno, - 0 AS jisuno, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS liushou - FROM j313_r - WHERE ((j313_r.did = 14) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j313_r.gatherregionc, j313_r.citycountrygroup, j313_r.organizationno, j313_r.recordyear) t - GROUP BY stage, gatherregionc, citycountrygroup, organizationno, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_student_organization" OWNER TO "postgres"; - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_student_age_organization" -AS -SELECT '小学'::text AS stage, - j312_r.gatherregionc, - CASE j312_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j312_r.organizationno, - j312_r.recordyear, - j312_r.b AS didgroup, - j312_r.did, - sum((((((j312_r.j + j312_r.k) + j312_r.l) + j312_r.m) + j312_r.n) + j312_r.o)) AS total - FROM j312_r - WHERE ((j312_r.did = ANY (ARRAY[37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47])) AND ((j312_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j312_r.gatherregionc, j312_r.citycountrygroup, j312_r.organizationno, j312_r.recordyear, j312_r.b, j312_r.did -UNION ALL - SELECT '初中'::text AS stage, - j313_r.gatherregionc, - CASE j313_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j313_r.organizationno, - j313_r.recordyear, - j313_r.b AS didgroup, - j313_r.did, - sum(((j313_r.i + j313_r.j) + j313_r.k)) AS total - FROM j313_r - WHERE ((j313_r.did = ANY (ARRAY[36, 37, 38, 39, 40, 41, 42, 43, 44])) AND ((j313_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j313_r.gatherregionc, j313_r.citycountrygroup, j313_r.organizationno, j313_r.recordyear, j313_r.b, j313_r.did -UNION ALL - SELECT '高中'::text AS stage, - j314_r.gatherregionc, - CASE j314_r.citycountrygroup - WHEN '城市'::text THEN '城区'::text - WHEN '县镇'::text THEN '镇区'::text - WHEN '农村'::text THEN '乡村'::text - ELSE NULL::text - END AS citycountrygroup, - j314_r.organizationno, - j314_r.recordyear, - j314_r.b AS didgroup, - j314_r.did, - sum(((j314_r.i + j314_r.j) + j314_r.k)) AS total - FROM j314_r - WHERE ((j314_r.did = ANY (ARRAY[11, 12, 13, 14, 15, 16, 17, 18, 19])) AND ((j314_r.gatherregionb)::text = '长春市'::text)) - GROUP BY j314_r.gatherregionc, j314_r.citycountrygroup, j314_r.organizationno, j314_r.recordyear, j314_r.b, j314_r.did; - -ALTER MATERIALIZED VIEW "public"."mv_dp_student_age_organization" OWNER TO "postgres"; - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_student_area" -AS -SELECT stage, - gatherregionc, - citycountrygroup, - recordyear, - sum(zhaoshengno) AS zhaoshengno, - sum(zaixiaono) AS zaixiaono, - sum(biyeno) AS biyeno, - sum(nvno) AS nvno, - sum(shaoshuno) AS shaoshuno, - sum(jisuno) AS jisuno, - sum(liushou) AS liushou - FROM mv_dp_student_organization - GROUP BY stage, gatherregionc, citycountrygroup, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_student_area" OWNER TO "postgres"; - - - - - - -CREATE MATERIALIZED VIEW "public"."mv_dp_school_count_area" -AS -SELECT schooltype, - gatherregionc, - recordyear, - count(*) AS total - FROM j412_r - WHERE ((did = 1) AND ((businesstypeno)::text = ANY (ARRAY[('211'::character varying)::text, ('341'::character varying)::text, ('342'::character varying)::text, ('345'::character varying)::text, ('311'::character varying)::text, ('312'::character varying)::text])) AND ((gatherregionb)::text = '长春市'::text)) - GROUP BY schooltype, gatherregionc, recordyear; - -ALTER MATERIALIZED VIEW "public"."mv_dp_school_count_area" OWNER TO "postgres"; \ No newline at end of file diff --git a/WebRoot/upload/7874EC07-E5F5-49D4-AA5E-12FA83DBC9C6.xlsx b/WebRoot/upload/7874EC07-E5F5-49D4-AA5E-12FA83DBC9C6.xlsx deleted file mode 100644 index 577e1d0d..00000000 Binary files a/WebRoot/upload/7874EC07-E5F5-49D4-AA5E-12FA83DBC9C6.xlsx and /dev/null differ diff --git a/WebRoot/upload/79EC54FA-EDBB-4524-AC1B-47CDA620C67E.xlsx b/WebRoot/upload/79EC54FA-EDBB-4524-AC1B-47CDA620C67E.xlsx deleted file mode 100644 index bb846fc4..00000000 Binary files a/WebRoot/upload/79EC54FA-EDBB-4524-AC1B-47CDA620C67E.xlsx and /dev/null differ diff --git a/WebRoot/upload/7CF12805-E31D-4D3D-BAD3-77C5431681ED.xlsx b/WebRoot/upload/7CF12805-E31D-4D3D-BAD3-77C5431681ED.xlsx deleted file mode 100644 index 8dcbd9c7..00000000 Binary files a/WebRoot/upload/7CF12805-E31D-4D3D-BAD3-77C5431681ED.xlsx and /dev/null differ diff --git a/WebRoot/upload/7D165DFF-595F-403E-8C69-AC14279395A6.xlsx b/WebRoot/upload/7D165DFF-595F-403E-8C69-AC14279395A6.xlsx deleted file mode 100644 index 77a6a9bf..00000000 Binary files a/WebRoot/upload/7D165DFF-595F-403E-8C69-AC14279395A6.xlsx and /dev/null differ diff --git a/WebRoot/upload/7EA91AD7-AD91-4A80-B9BE-F6C31477A063.xlsx b/WebRoot/upload/7EA91AD7-AD91-4A80-B9BE-F6C31477A063.xlsx deleted file mode 100644 index 0cad74c2..00000000 Binary files a/WebRoot/upload/7EA91AD7-AD91-4A80-B9BE-F6C31477A063.xlsx and /dev/null differ diff --git a/WebRoot/upload/80A99637-9194-44BF-98D4-CFD95FB4F7E7.xlsx b/WebRoot/upload/80A99637-9194-44BF-98D4-CFD95FB4F7E7.xlsx deleted file mode 100644 index 4a3ab946..00000000 Binary files a/WebRoot/upload/80A99637-9194-44BF-98D4-CFD95FB4F7E7.xlsx and /dev/null differ diff --git a/WebRoot/upload/81D48881-6DCD-4537-AE43-C64C6347E6E3.xlsx b/WebRoot/upload/81D48881-6DCD-4537-AE43-C64C6347E6E3.xlsx deleted file mode 100644 index 825b046b..00000000 Binary files a/WebRoot/upload/81D48881-6DCD-4537-AE43-C64C6347E6E3.xlsx and /dev/null differ diff --git a/WebRoot/upload/8241C30C-6958-43D0-BC72-5D8E44D39C5D.xlsx b/WebRoot/upload/8241C30C-6958-43D0-BC72-5D8E44D39C5D.xlsx deleted file mode 100644 index b56847d0..00000000 Binary files a/WebRoot/upload/8241C30C-6958-43D0-BC72-5D8E44D39C5D.xlsx and /dev/null differ diff --git a/WebRoot/upload/8BA07BA3-51DF-4A68-A715-A683E61AA726.xlsx b/WebRoot/upload/8BA07BA3-51DF-4A68-A715-A683E61AA726.xlsx deleted file mode 100644 index 9d6d4e64..00000000 Binary files a/WebRoot/upload/8BA07BA3-51DF-4A68-A715-A683E61AA726.xlsx and /dev/null differ diff --git a/WebRoot/upload/8BC0AE71-C3E6-48C9-A33B-C8FEF7A52A83.xlsx b/WebRoot/upload/8BC0AE71-C3E6-48C9-A33B-C8FEF7A52A83.xlsx deleted file mode 100644 index 14a5cd39..00000000 Binary files a/WebRoot/upload/8BC0AE71-C3E6-48C9-A33B-C8FEF7A52A83.xlsx and /dev/null differ diff --git a/WebRoot/upload/8C666243-8718-48A4-B2A5-50E46C6AE0D2.xlsx b/WebRoot/upload/8C666243-8718-48A4-B2A5-50E46C6AE0D2.xlsx deleted file mode 100644 index 6e2aedf9..00000000 Binary files a/WebRoot/upload/8C666243-8718-48A4-B2A5-50E46C6AE0D2.xlsx and /dev/null differ diff --git a/WebRoot/upload/8CB10B70-9F77-4BB9-AF6E-D89074100626.xlsx b/WebRoot/upload/8CB10B70-9F77-4BB9-AF6E-D89074100626.xlsx deleted file mode 100644 index cdf79a98..00000000 Binary files a/WebRoot/upload/8CB10B70-9F77-4BB9-AF6E-D89074100626.xlsx and /dev/null differ diff --git a/WebRoot/upload/8DA2CE99-77DD-4BBD-9D1E-6814F26986B4.xlsx b/WebRoot/upload/8DA2CE99-77DD-4BBD-9D1E-6814F26986B4.xlsx deleted file mode 100644 index f85c0e87..00000000 Binary files a/WebRoot/upload/8DA2CE99-77DD-4BBD-9D1E-6814F26986B4.xlsx and /dev/null differ diff --git a/WebRoot/upload/8FCBB7C3-0023-44D5-B8EF-68E212DE6B28.xlsx b/WebRoot/upload/8FCBB7C3-0023-44D5-B8EF-68E212DE6B28.xlsx deleted file mode 100644 index 89ef7082..00000000 Binary files a/WebRoot/upload/8FCBB7C3-0023-44D5-B8EF-68E212DE6B28.xlsx and /dev/null differ diff --git a/WebRoot/upload/923DE2A0-5BDD-4169-A865-09F209C88ADA.xlsx b/WebRoot/upload/923DE2A0-5BDD-4169-A865-09F209C88ADA.xlsx deleted file mode 100644 index 2ea1fa7a..00000000 Binary files a/WebRoot/upload/923DE2A0-5BDD-4169-A865-09F209C88ADA.xlsx and /dev/null differ diff --git a/WebRoot/upload/93EA3E11-FD86-4622-AE0D-4C8D9A80E404.xlsx b/WebRoot/upload/93EA3E11-FD86-4622-AE0D-4C8D9A80E404.xlsx deleted file mode 100644 index 0c06d441..00000000 Binary files a/WebRoot/upload/93EA3E11-FD86-4622-AE0D-4C8D9A80E404.xlsx and /dev/null differ diff --git a/WebRoot/upload/97079B19-9883-490B-9EEE-4CF03B6DC2C8.xlsx b/WebRoot/upload/97079B19-9883-490B-9EEE-4CF03B6DC2C8.xlsx deleted file mode 100644 index dfb3c088..00000000 Binary files a/WebRoot/upload/97079B19-9883-490B-9EEE-4CF03B6DC2C8.xlsx and /dev/null differ diff --git a/WebRoot/upload/98190F52-3514-4869-8191-7CAF8CE5B9CF.xlsx b/WebRoot/upload/98190F52-3514-4869-8191-7CAF8CE5B9CF.xlsx deleted file mode 100644 index bf3bba06..00000000 Binary files a/WebRoot/upload/98190F52-3514-4869-8191-7CAF8CE5B9CF.xlsx and /dev/null differ diff --git a/WebRoot/upload/98D4390C-9F01-4021-B7F6-A2B5EC3247BD.xlsx b/WebRoot/upload/98D4390C-9F01-4021-B7F6-A2B5EC3247BD.xlsx deleted file mode 100644 index 8800cfcb..00000000 Binary files a/WebRoot/upload/98D4390C-9F01-4021-B7F6-A2B5EC3247BD.xlsx and /dev/null differ diff --git a/WebRoot/upload/9A803CB9-0634-45F7-8370-2050A448AEF9.xlsx b/WebRoot/upload/9A803CB9-0634-45F7-8370-2050A448AEF9.xlsx deleted file mode 100644 index c36d04b9..00000000 Binary files a/WebRoot/upload/9A803CB9-0634-45F7-8370-2050A448AEF9.xlsx and /dev/null differ diff --git a/WebRoot/upload/9A8D6C5A-7707-45FD-8F69-D9DCBB88FE76.xlsx b/WebRoot/upload/9A8D6C5A-7707-45FD-8F69-D9DCBB88FE76.xlsx deleted file mode 100644 index 44724ce3..00000000 Binary files a/WebRoot/upload/9A8D6C5A-7707-45FD-8F69-D9DCBB88FE76.xlsx and /dev/null differ diff --git a/WebRoot/upload/A309EE42-48C4-48AB-8619-406941221DC9.xlsx b/WebRoot/upload/A309EE42-48C4-48AB-8619-406941221DC9.xlsx deleted file mode 100644 index 727de993..00000000 Binary files a/WebRoot/upload/A309EE42-48C4-48AB-8619-406941221DC9.xlsx and /dev/null differ diff --git a/WebRoot/upload/A4941CF3-0825-4B66-B301-9AB5897D5B25.xlsx b/WebRoot/upload/A4941CF3-0825-4B66-B301-9AB5897D5B25.xlsx deleted file mode 100644 index 4a6214de..00000000 Binary files a/WebRoot/upload/A4941CF3-0825-4B66-B301-9AB5897D5B25.xlsx and /dev/null differ diff --git a/WebRoot/upload/A5B2D8CE-166B-467D-BE56-041D8E8C15CD.xlsx b/WebRoot/upload/A5B2D8CE-166B-467D-BE56-041D8E8C15CD.xlsx deleted file mode 100644 index 02c3649b..00000000 Binary files a/WebRoot/upload/A5B2D8CE-166B-467D-BE56-041D8E8C15CD.xlsx and /dev/null differ diff --git a/WebRoot/upload/A651B429-B24C-45E3-8F90-49C12BF940F4.xlsx b/WebRoot/upload/A651B429-B24C-45E3-8F90-49C12BF940F4.xlsx deleted file mode 100644 index 326af6dd..00000000 Binary files a/WebRoot/upload/A651B429-B24C-45E3-8F90-49C12BF940F4.xlsx and /dev/null differ diff --git a/WebRoot/upload/AA296A27-1312-4090-960F-57E55BDC0F45.xlsx b/WebRoot/upload/AA296A27-1312-4090-960F-57E55BDC0F45.xlsx deleted file mode 100644 index 3980fbfe..00000000 Binary files a/WebRoot/upload/AA296A27-1312-4090-960F-57E55BDC0F45.xlsx and /dev/null differ diff --git a/WebRoot/upload/AB8F8E05-CCCC-4DC0-B744-12C3EEA1F676.xlsx b/WebRoot/upload/AB8F8E05-CCCC-4DC0-B744-12C3EEA1F676.xlsx deleted file mode 100644 index 4e82619d..00000000 Binary files a/WebRoot/upload/AB8F8E05-CCCC-4DC0-B744-12C3EEA1F676.xlsx and /dev/null differ diff --git a/WebRoot/upload/ACEC7036-248F-4C1D-A5FE-9860015DA022.xlsx b/WebRoot/upload/ACEC7036-248F-4C1D-A5FE-9860015DA022.xlsx deleted file mode 100644 index 61cdf4d0..00000000 Binary files a/WebRoot/upload/ACEC7036-248F-4C1D-A5FE-9860015DA022.xlsx and /dev/null differ diff --git a/WebRoot/upload/BC104D30-C7F5-46B7-8F26-AC4E396A2266.xlsx b/WebRoot/upload/BC104D30-C7F5-46B7-8F26-AC4E396A2266.xlsx deleted file mode 100644 index 4f109583..00000000 Binary files a/WebRoot/upload/BC104D30-C7F5-46B7-8F26-AC4E396A2266.xlsx and /dev/null differ diff --git a/WebRoot/upload/BEF26C40-D609-4C55-8BED-79285B3611C0.xlsx b/WebRoot/upload/BEF26C40-D609-4C55-8BED-79285B3611C0.xlsx deleted file mode 100644 index 509d0703..00000000 Binary files a/WebRoot/upload/BEF26C40-D609-4C55-8BED-79285B3611C0.xlsx and /dev/null differ diff --git a/WebRoot/upload/BF2B3E82-7942-438A-B04C-469CF159F5D9.xlsx b/WebRoot/upload/BF2B3E82-7942-438A-B04C-469CF159F5D9.xlsx deleted file mode 100644 index 0f89441d..00000000 Binary files a/WebRoot/upload/BF2B3E82-7942-438A-B04C-469CF159F5D9.xlsx and /dev/null differ diff --git a/WebRoot/upload/BFE33EA6-9C97-4A10-8D8D-D26F105F7100.xlsx b/WebRoot/upload/BFE33EA6-9C97-4A10-8D8D-D26F105F7100.xlsx deleted file mode 100644 index c5f8a8fa..00000000 Binary files a/WebRoot/upload/BFE33EA6-9C97-4A10-8D8D-D26F105F7100.xlsx and /dev/null differ diff --git a/WebRoot/upload/C11EAB3C-5E14-43DB-8FC7-51DD1A4CA73D.xlsx b/WebRoot/upload/C11EAB3C-5E14-43DB-8FC7-51DD1A4CA73D.xlsx deleted file mode 100644 index 7fe951ba..00000000 Binary files a/WebRoot/upload/C11EAB3C-5E14-43DB-8FC7-51DD1A4CA73D.xlsx and /dev/null differ diff --git a/WebRoot/upload/C18AB493-3C77-4D3D-A95F-637B2B6C388C.xlsx b/WebRoot/upload/C18AB493-3C77-4D3D-A95F-637B2B6C388C.xlsx deleted file mode 100644 index 798c353f..00000000 Binary files a/WebRoot/upload/C18AB493-3C77-4D3D-A95F-637B2B6C388C.xlsx and /dev/null differ diff --git a/WebRoot/upload/C1AF51AC-88BD-47BE-9D40-4E922C5D8E5E.xlsx b/WebRoot/upload/C1AF51AC-88BD-47BE-9D40-4E922C5D8E5E.xlsx deleted file mode 100644 index 8f49722a..00000000 Binary files a/WebRoot/upload/C1AF51AC-88BD-47BE-9D40-4E922C5D8E5E.xlsx and /dev/null differ diff --git a/WebRoot/upload/C331AC03-3E84-4B0A-9488-DA1D6ACB4455.xlsx b/WebRoot/upload/C331AC03-3E84-4B0A-9488-DA1D6ACB4455.xlsx deleted file mode 100644 index 62a50070..00000000 Binary files a/WebRoot/upload/C331AC03-3E84-4B0A-9488-DA1D6ACB4455.xlsx and /dev/null differ diff --git a/WebRoot/upload/C518B382-B552-46B4-8A9E-AFAC78D6C27E.xlsx b/WebRoot/upload/C518B382-B552-46B4-8A9E-AFAC78D6C27E.xlsx deleted file mode 100644 index 3cf54398..00000000 Binary files a/WebRoot/upload/C518B382-B552-46B4-8A9E-AFAC78D6C27E.xlsx and /dev/null differ diff --git a/WebRoot/upload/C67EE628-37AA-4CAE-AA24-87B44778EE37.xlsx b/WebRoot/upload/C67EE628-37AA-4CAE-AA24-87B44778EE37.xlsx deleted file mode 100644 index c4031fef..00000000 Binary files a/WebRoot/upload/C67EE628-37AA-4CAE-AA24-87B44778EE37.xlsx and /dev/null differ diff --git a/WebRoot/upload/C67F1A88-A247-459B-AD26-D5BAB3A371EB.xlsx b/WebRoot/upload/C67F1A88-A247-459B-AD26-D5BAB3A371EB.xlsx deleted file mode 100644 index 9c737dd0..00000000 Binary files a/WebRoot/upload/C67F1A88-A247-459B-AD26-D5BAB3A371EB.xlsx and /dev/null differ diff --git a/WebRoot/upload/C6E9809C-7A60-49AE-993D-E6D9DABD0C2E.xlsx b/WebRoot/upload/C6E9809C-7A60-49AE-993D-E6D9DABD0C2E.xlsx deleted file mode 100644 index f7144fe9..00000000 Binary files a/WebRoot/upload/C6E9809C-7A60-49AE-993D-E6D9DABD0C2E.xlsx and /dev/null differ diff --git a/WebRoot/upload/C7748AEE-6C6E-4A14-89F1-E0FC3518E971.xlsx b/WebRoot/upload/C7748AEE-6C6E-4A14-89F1-E0FC3518E971.xlsx deleted file mode 100644 index 9e7857c4..00000000 Binary files a/WebRoot/upload/C7748AEE-6C6E-4A14-89F1-E0FC3518E971.xlsx and /dev/null differ diff --git a/WebRoot/upload/C77A56CF-F3DD-435E-A8DA-EDC9D8FE1CCB.xlsx b/WebRoot/upload/C77A56CF-F3DD-435E-A8DA-EDC9D8FE1CCB.xlsx deleted file mode 100644 index 31d71553..00000000 Binary files a/WebRoot/upload/C77A56CF-F3DD-435E-A8DA-EDC9D8FE1CCB.xlsx and /dev/null differ diff --git a/WebRoot/upload/C79BE710-E624-4E94-B455-2C4F727D1385.xlsx b/WebRoot/upload/C79BE710-E624-4E94-B455-2C4F727D1385.xlsx deleted file mode 100644 index dbea3235..00000000 Binary files a/WebRoot/upload/C79BE710-E624-4E94-B455-2C4F727D1385.xlsx and /dev/null differ diff --git a/WebRoot/upload/C7DD4498-9E4D-44D3-9C5B-E6EF0964E43B.xlsx b/WebRoot/upload/C7DD4498-9E4D-44D3-9C5B-E6EF0964E43B.xlsx deleted file mode 100644 index 5e1eae9a..00000000 Binary files a/WebRoot/upload/C7DD4498-9E4D-44D3-9C5B-E6EF0964E43B.xlsx and /dev/null differ diff --git a/WebRoot/upload/C7E022EC-E098-484C-8B04-6F841946CFC9.xlsx b/WebRoot/upload/C7E022EC-E098-484C-8B04-6F841946CFC9.xlsx deleted file mode 100644 index 8f7ecab7..00000000 Binary files a/WebRoot/upload/C7E022EC-E098-484C-8B04-6F841946CFC9.xlsx and /dev/null differ diff --git a/WebRoot/upload/CC734B0E-B348-45A1-A60A-36DB7B3B8B22.xlsx b/WebRoot/upload/CC734B0E-B348-45A1-A60A-36DB7B3B8B22.xlsx deleted file mode 100644 index c07b74d1..00000000 Binary files a/WebRoot/upload/CC734B0E-B348-45A1-A60A-36DB7B3B8B22.xlsx and /dev/null differ diff --git a/WebRoot/upload/CF48C546-2D48-438E-A5C0-CB7AEC4212E2.xlsx b/WebRoot/upload/CF48C546-2D48-438E-A5C0-CB7AEC4212E2.xlsx deleted file mode 100644 index 80328232..00000000 Binary files a/WebRoot/upload/CF48C546-2D48-438E-A5C0-CB7AEC4212E2.xlsx and /dev/null differ diff --git a/WebRoot/upload/D037AB8D-22CA-4BA4-AF79-37A95874DC3A.xlsx b/WebRoot/upload/D037AB8D-22CA-4BA4-AF79-37A95874DC3A.xlsx deleted file mode 100644 index 358f7ac6..00000000 Binary files a/WebRoot/upload/D037AB8D-22CA-4BA4-AF79-37A95874DC3A.xlsx and /dev/null differ diff --git a/WebRoot/upload/D27BF3BC-B991-4B63-A680-B67E1EC569C1.xlsx b/WebRoot/upload/D27BF3BC-B991-4B63-A680-B67E1EC569C1.xlsx deleted file mode 100644 index 3f5366b2..00000000 Binary files a/WebRoot/upload/D27BF3BC-B991-4B63-A680-B67E1EC569C1.xlsx and /dev/null differ diff --git a/WebRoot/upload/D51B1743-0E2D-4175-BAF7-43FF554B8E4E.xlsx b/WebRoot/upload/D51B1743-0E2D-4175-BAF7-43FF554B8E4E.xlsx deleted file mode 100644 index 82eb7974..00000000 Binary files a/WebRoot/upload/D51B1743-0E2D-4175-BAF7-43FF554B8E4E.xlsx and /dev/null differ diff --git a/WebRoot/upload/D56BA178-EEE6-49E6-88CF-228B1334269B.xlsx b/WebRoot/upload/D56BA178-EEE6-49E6-88CF-228B1334269B.xlsx deleted file mode 100644 index 878bc260..00000000 Binary files a/WebRoot/upload/D56BA178-EEE6-49E6-88CF-228B1334269B.xlsx and /dev/null differ diff --git a/WebRoot/upload/D5E45A96-058C-4E9F-9100-ACB538389C98.xlsx b/WebRoot/upload/D5E45A96-058C-4E9F-9100-ACB538389C98.xlsx deleted file mode 100644 index fb96054a..00000000 Binary files a/WebRoot/upload/D5E45A96-058C-4E9F-9100-ACB538389C98.xlsx and /dev/null differ diff --git a/WebRoot/upload/D60EA4E1-1AB2-4FC3-B757-59FBF4CA7928.xlsx b/WebRoot/upload/D60EA4E1-1AB2-4FC3-B757-59FBF4CA7928.xlsx deleted file mode 100644 index 8f7f506d..00000000 Binary files a/WebRoot/upload/D60EA4E1-1AB2-4FC3-B757-59FBF4CA7928.xlsx and /dev/null differ diff --git a/WebRoot/upload/D6A0A388-BB57-4CEA-B060-51C17D779ED7.xlsx b/WebRoot/upload/D6A0A388-BB57-4CEA-B060-51C17D779ED7.xlsx deleted file mode 100644 index 86cced0c..00000000 Binary files a/WebRoot/upload/D6A0A388-BB57-4CEA-B060-51C17D779ED7.xlsx and /dev/null differ diff --git a/WebRoot/upload/D7FDBAA4-448C-46DB-A945-5F0C2281099D.xlsx b/WebRoot/upload/D7FDBAA4-448C-46DB-A945-5F0C2281099D.xlsx deleted file mode 100644 index 2d1bcb99..00000000 Binary files a/WebRoot/upload/D7FDBAA4-448C-46DB-A945-5F0C2281099D.xlsx and /dev/null differ diff --git a/WebRoot/upload/D8527BE5-1821-4F0A-A3DB-0E93D32E9F75.xlsx b/WebRoot/upload/D8527BE5-1821-4F0A-A3DB-0E93D32E9F75.xlsx deleted file mode 100644 index 08a9d4d2..00000000 Binary files a/WebRoot/upload/D8527BE5-1821-4F0A-A3DB-0E93D32E9F75.xlsx and /dev/null differ diff --git a/WebRoot/upload/D90F0328-6C35-43D1-B308-3F18B4FA7B4F.xlsx b/WebRoot/upload/D90F0328-6C35-43D1-B308-3F18B4FA7B4F.xlsx deleted file mode 100644 index 839ddf4c..00000000 Binary files a/WebRoot/upload/D90F0328-6C35-43D1-B308-3F18B4FA7B4F.xlsx and /dev/null differ diff --git a/WebRoot/upload/D966F4B1-D620-4998-9BA8-3F869683EE67.xlsx b/WebRoot/upload/D966F4B1-D620-4998-9BA8-3F869683EE67.xlsx deleted file mode 100644 index 2a7161c4..00000000 Binary files a/WebRoot/upload/D966F4B1-D620-4998-9BA8-3F869683EE67.xlsx and /dev/null differ diff --git a/WebRoot/upload/DB0305D7-2BD0-4EDB-9AD5-5DAE8A5D8314.xlsx b/WebRoot/upload/DB0305D7-2BD0-4EDB-9AD5-5DAE8A5D8314.xlsx deleted file mode 100644 index 99669637..00000000 Binary files a/WebRoot/upload/DB0305D7-2BD0-4EDB-9AD5-5DAE8A5D8314.xlsx and /dev/null differ diff --git a/WebRoot/upload/DE4A8246-3185-46B3-AF90-E1DEB877D22A.xlsx b/WebRoot/upload/DE4A8246-3185-46B3-AF90-E1DEB877D22A.xlsx deleted file mode 100644 index f19d45fc..00000000 Binary files a/WebRoot/upload/DE4A8246-3185-46B3-AF90-E1DEB877D22A.xlsx and /dev/null differ diff --git a/WebRoot/upload/E0A445F4-7B43-41E3-AD20-9F79EACA85C0.xlsx b/WebRoot/upload/E0A445F4-7B43-41E3-AD20-9F79EACA85C0.xlsx deleted file mode 100644 index 343ad499..00000000 Binary files a/WebRoot/upload/E0A445F4-7B43-41E3-AD20-9F79EACA85C0.xlsx and /dev/null differ diff --git a/WebRoot/upload/E220DB56-BF27-4C98-A462-01914B61BEA9.xlsx b/WebRoot/upload/E220DB56-BF27-4C98-A462-01914B61BEA9.xlsx deleted file mode 100644 index 2caeb690..00000000 Binary files a/WebRoot/upload/E220DB56-BF27-4C98-A462-01914B61BEA9.xlsx and /dev/null differ diff --git a/WebRoot/upload/E5A2918D-ED14-4A06-AF03-03F9E0691664.xlsx b/WebRoot/upload/E5A2918D-ED14-4A06-AF03-03F9E0691664.xlsx deleted file mode 100644 index 33115a41..00000000 Binary files a/WebRoot/upload/E5A2918D-ED14-4A06-AF03-03F9E0691664.xlsx and /dev/null differ diff --git a/WebRoot/upload/E8001DB4-EEF1-4677-BB04-4A1A531C273A.xlsx b/WebRoot/upload/E8001DB4-EEF1-4677-BB04-4A1A531C273A.xlsx deleted file mode 100644 index 6e947dfc..00000000 Binary files a/WebRoot/upload/E8001DB4-EEF1-4677-BB04-4A1A531C273A.xlsx and /dev/null differ diff --git a/WebRoot/upload/E84E1EF4-4F7D-4CD9-A8EC-A0A931EBC601.xlsx b/WebRoot/upload/E84E1EF4-4F7D-4CD9-A8EC-A0A931EBC601.xlsx deleted file mode 100644 index 68bcf3c1..00000000 Binary files a/WebRoot/upload/E84E1EF4-4F7D-4CD9-A8EC-A0A931EBC601.xlsx and /dev/null differ diff --git a/WebRoot/upload/E8DF259B-97A4-4E9F-9189-89B818148B28.xlsx b/WebRoot/upload/E8DF259B-97A4-4E9F-9189-89B818148B28.xlsx deleted file mode 100644 index 85429a59..00000000 Binary files a/WebRoot/upload/E8DF259B-97A4-4E9F-9189-89B818148B28.xlsx and /dev/null differ diff --git a/WebRoot/upload/EA272D6F-528F-425D-9811-190D6826F0A9.xlsx b/WebRoot/upload/EA272D6F-528F-425D-9811-190D6826F0A9.xlsx deleted file mode 100644 index feccbdc8..00000000 Binary files a/WebRoot/upload/EA272D6F-528F-425D-9811-190D6826F0A9.xlsx and /dev/null differ diff --git a/WebRoot/upload/EC280506-076E-4A98-95E3-6AE85F6BF48A.xlsx b/WebRoot/upload/EC280506-076E-4A98-95E3-6AE85F6BF48A.xlsx deleted file mode 100644 index a57fbf4a..00000000 Binary files a/WebRoot/upload/EC280506-076E-4A98-95E3-6AE85F6BF48A.xlsx and /dev/null differ diff --git a/WebRoot/upload/ED66A85E-293A-46FA-8D74-68B2A8FD1C9D.xlsx b/WebRoot/upload/ED66A85E-293A-46FA-8D74-68B2A8FD1C9D.xlsx deleted file mode 100644 index 90fc39c3..00000000 Binary files a/WebRoot/upload/ED66A85E-293A-46FA-8D74-68B2A8FD1C9D.xlsx and /dev/null differ diff --git a/WebRoot/upload/ED6CA89C-615E-4BB9-BF03-84E319740998.xlsx b/WebRoot/upload/ED6CA89C-615E-4BB9-BF03-84E319740998.xlsx deleted file mode 100644 index 8cb7af82..00000000 Binary files a/WebRoot/upload/ED6CA89C-615E-4BB9-BF03-84E319740998.xlsx and /dev/null differ diff --git a/WebRoot/upload/EF737C21-0DDA-43AF-A602-AB00B01BD391.xlsx b/WebRoot/upload/EF737C21-0DDA-43AF-A602-AB00B01BD391.xlsx deleted file mode 100644 index a18bce77..00000000 Binary files a/WebRoot/upload/EF737C21-0DDA-43AF-A602-AB00B01BD391.xlsx and /dev/null differ diff --git a/WebRoot/upload/F1178A8F-28AC-4805-AC07-A8B638095F75.xlsx b/WebRoot/upload/F1178A8F-28AC-4805-AC07-A8B638095F75.xlsx deleted file mode 100644 index a291b80e..00000000 Binary files a/WebRoot/upload/F1178A8F-28AC-4805-AC07-A8B638095F75.xlsx and /dev/null differ diff --git a/WebRoot/upload/F30EF9B8-C51C-4A9A-AAF5-D0110DBE9276.xlsx b/WebRoot/upload/F30EF9B8-C51C-4A9A-AAF5-D0110DBE9276.xlsx deleted file mode 100644 index afe8c8a9..00000000 Binary files a/WebRoot/upload/F30EF9B8-C51C-4A9A-AAF5-D0110DBE9276.xlsx and /dev/null differ diff --git a/WebRoot/upload/F32B4FAE-79AB-4622-86ED-27B28A56F936.xlsx b/WebRoot/upload/F32B4FAE-79AB-4622-86ED-27B28A56F936.xlsx deleted file mode 100644 index 114a75bd..00000000 Binary files a/WebRoot/upload/F32B4FAE-79AB-4622-86ED-27B28A56F936.xlsx and /dev/null differ diff --git a/WebRoot/upload/F7DF195F-B0DE-422D-A0CF-C00CE65E0464.xlsx b/WebRoot/upload/F7DF195F-B0DE-422D-A0CF-C00CE65E0464.xlsx deleted file mode 100644 index 57621de6..00000000 Binary files a/WebRoot/upload/F7DF195F-B0DE-422D-A0CF-C00CE65E0464.xlsx and /dev/null differ diff --git a/WebRoot/upload/FA98EA46-B46C-4D9C-B10D-1FCDDECA460D.xlsx b/WebRoot/upload/FA98EA46-B46C-4D9C-B10D-1FCDDECA460D.xlsx deleted file mode 100644 index f9f0fea4..00000000 Binary files a/WebRoot/upload/FA98EA46-B46C-4D9C-B10D-1FCDDECA460D.xlsx and /dev/null differ diff --git a/WebRoot/upload/FC755234-65A0-453D-9FA1-05B77840423D.xlsx b/WebRoot/upload/FC755234-65A0-453D-9FA1-05B77840423D.xlsx deleted file mode 100644 index f59cacd0..00000000 Binary files a/WebRoot/upload/FC755234-65A0-453D-9FA1-05B77840423D.xlsx and /dev/null differ diff --git a/WebRoot/upload/FD9447B4-D009-43FA-91D1-B60204121ECA.xlsx b/WebRoot/upload/FD9447B4-D009-43FA-91D1-B60204121ECA.xlsx deleted file mode 100644 index 7eaad673..00000000 Binary files a/WebRoot/upload/FD9447B4-D009-43FA-91D1-B60204121ECA.xlsx and /dev/null differ diff --git a/WebRoot/upload/FE32B206-B480-42ED-B269-C2C658754573.xlsx b/WebRoot/upload/FE32B206-B480-42ED-B269-C2C658754573.xlsx deleted file mode 100644 index 21ece8e3..00000000 Binary files a/WebRoot/upload/FE32B206-B480-42ED-B269-C2C658754573.xlsx and /dev/null differ diff --git a/WebRoot/upload/FE33F30E-3844-406B-84BA-D811064AD836.xlsx b/WebRoot/upload/FE33F30E-3844-406B-84BA-D811064AD836.xlsx deleted file mode 100644 index 0f1f3e1d..00000000 Binary files a/WebRoot/upload/FE33F30E-3844-406B-84BA-D811064AD836.xlsx and /dev/null differ diff --git a/WebRoot/upload/FE658230-B072-4605-AF4E-C542E6786227.xlsx b/WebRoot/upload/FE658230-B072-4605-AF4E-C542E6786227.xlsx deleted file mode 100644 index 66ffb06b..00000000 Binary files a/WebRoot/upload/FE658230-B072-4605-AF4E-C542E6786227.xlsx and /dev/null differ diff --git a/WebRoot/upload/FF0DFD0B-AA25-49B5-8BF1-AD68614FF0EC.xlsx b/WebRoot/upload/FF0DFD0B-AA25-49B5-8BF1-AD68614FF0EC.xlsx deleted file mode 100644 index b36f5cb9..00000000 Binary files a/WebRoot/upload/FF0DFD0B-AA25-49B5-8BF1-AD68614FF0EC.xlsx and /dev/null differ diff --git a/WebRoot/upload/bb587d0c-6223-4648-8e0f-dc736b5e97bd.xlsx b/WebRoot/upload/bb587d0c-6223-4648-8e0f-dc736b5e97bd.xlsx deleted file mode 100644 index 6197993c..00000000 Binary files a/WebRoot/upload/bb587d0c-6223-4648-8e0f-dc736b5e97bd.xlsx and /dev/null differ diff --git a/WebRoot/upload/feb3c33b-d93a-4cd5-9c1b-087d194942fd.xlsx b/WebRoot/upload/feb3c33b-d93a-4cd5-9c1b-087d194942fd.xlsx deleted file mode 100644 index a837cb51..00000000 Binary files a/WebRoot/upload/feb3c33b-d93a-4cd5-9c1b-087d194942fd.xlsx and /dev/null differ diff --git a/WebRoot/upload/null与null_教育分析报告_20250615_111719.html b/WebRoot/upload/null与null_教育分析报告_20250615_111719.html new file mode 100644 index 00000000..397398b7 --- /dev/null +++ b/WebRoot/upload/null与null_教育分析报告_20250615_111719.html @@ -0,0 +1,607 @@ + + + + + + null与null人口变化趋势对基础教育的影响分析报告 + + + + +
+

null与null人口变化趋势对基础教育的影响分析报告

+
+ +
+

报告摘要

+
+

本报告分析了null与null地区的人口变化趋势及其对基础教育资源配置的影响。通过对比两个地区的人口结构、城乡分布、学生数量变化等关键指标,评估了基础教育资源需求的未来发展趋势。

+

报告显示,两个地区在未来10年内将面临不同的人口变化模式,这将直接影响学校建设、师资配备和教育投入的规划。本报告通过9个关键图表,直观展示了这些变化趋势,并提出了相应的政策建议。

+
+
+ +
+

详细分析

+

人口变化趋势

+

null与null地区的人口变化呈现出不同的特点。null地区预计将保持稳定增长,而null地区则可能出现人口老龄化加速的趋势。

+ +
+

总人口变化趋势

+ +
+ +
+

城乡人口变化趋势1

+ +
+ +
+

城乡人口变化趋势2

+ +
+ +

学生数量变化

+

随着人口结构的变化,两个地区的学生数量将呈现不同的发展趋势,这对教育资源配置提出了新的要求。

+ +
+

学生数量变化趋势1

+ +
+ +
+

学生数量变化趋势2

+ +
+ +
+

学生数量对比

+ +
+ +

教职工需求变化

+

学生数量的变化将直接影响教职工的需求,需要提前规划师资培养和引进工作。

+ +
+

教职工需求变化趋势1

+ +
+ +
+

教职工需求变化趋势2

+ +
+ +

学校占地面积需求

+

根据学生数量预测,两个地区的学校占地面积需求将呈现不同的变化趋势。

+ +
+

学校占地面积需求对比

+ +
+
+ +
+

结论与建议

+

1. null地区应重点关注城镇化进程中的教育资源配置问题,提前规划新建学校。

+

2. null地区需要应对人口老龄化带来的学生数量减少问题,优化现有教育资源利用效率。

+

3. 两个地区都应建立动态监测机制,根据人口变化及时调整教育资源配置策略。

+

4. 建议加强区域间教育资源共享,提高整体教育资源配置效率。

+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/~$资源对比分析报告_20250613_192741.docx b/WebRoot/upload/~$资源对比分析报告_20250613_192741.docx new file mode 100644 index 00000000..1778373a Binary files /dev/null and b/WebRoot/upload/~$资源对比分析报告_20250613_192741.docx differ diff --git a/WebRoot/upload/微服务架构教育项目组成1.txt b/WebRoot/upload/微服务架构教育项目组成1.txt deleted file mode 100644 index b34a337b..00000000 --- a/WebRoot/upload/微服务架构教育项目组成1.txt +++ /dev/null @@ -1,43 +0,0 @@ -技术上采用微服务架构,支持K8S,JFinal+JDK21+Mysql5.7+Docker+Pika+Vue+UniApp构成技术栈。 -目标: -1、基础功能一次开发,以后项目迭代可以随时拉取镜像就可以有支撑服务,无需重复开发。 -2、高性能,高并发,横向可扩展 -3、WEB端,手机端健全,各种技术全面得到实践应用 - - -模块 -一、基础支撑系统 -0、学段表 -1、科目 -2、支持多套章节目录结构 scheme+structure -3、支持知识点目录结构 - -二、资源库 -1、上传资源,上传到支持S3协议的Minio服务或者华为云、阿里云存储 -2、支持文件在线预览功能,需要整合下面的服务 -3、支持系统提供的资源和自己上传的资源,共享、上级等概念暂不支持 - -https://file.kkview.cn/ -https://gitee.com/kekingcn/file-online-preview - -三、题库 -1、录入试题 -暂不支持导入试题 - -2、支持单选,判断,多选,子母题(比如一个题干,多个小题),简答 - -3、支持根据试题级卷,包括手动组卷,自动级卷 - - -四、考试系统 -1、发布考试 -2、在规定的时间内答题 -2、导入考生名单,生成准考证,生成用户名和密码 -3、考生高并发答题,最终系统输出成绩,导出成绩 -4、针对题目的得分率进行分析 - -五、调查问卷系统 -1、发布调查问卷 -2、在规定的时间内答题 -3、针对题目的得分率进行分析 -4、输出问卷结果报告 \ No newline at end of file diff --git a/WebRoot/upload/微服务架构教育项目组成2.txt b/WebRoot/upload/微服务架构教育项目组成2.txt deleted file mode 100644 index b34a337b..00000000 --- a/WebRoot/upload/微服务架构教育项目组成2.txt +++ /dev/null @@ -1,43 +0,0 @@ -技术上采用微服务架构,支持K8S,JFinal+JDK21+Mysql5.7+Docker+Pika+Vue+UniApp构成技术栈。 -目标: -1、基础功能一次开发,以后项目迭代可以随时拉取镜像就可以有支撑服务,无需重复开发。 -2、高性能,高并发,横向可扩展 -3、WEB端,手机端健全,各种技术全面得到实践应用 - - -模块 -一、基础支撑系统 -0、学段表 -1、科目 -2、支持多套章节目录结构 scheme+structure -3、支持知识点目录结构 - -二、资源库 -1、上传资源,上传到支持S3协议的Minio服务或者华为云、阿里云存储 -2、支持文件在线预览功能,需要整合下面的服务 -3、支持系统提供的资源和自己上传的资源,共享、上级等概念暂不支持 - -https://file.kkview.cn/ -https://gitee.com/kekingcn/file-online-preview - -三、题库 -1、录入试题 -暂不支持导入试题 - -2、支持单选,判断,多选,子母题(比如一个题干,多个小题),简答 - -3、支持根据试题级卷,包括手动组卷,自动级卷 - - -四、考试系统 -1、发布考试 -2、在规定的时间内答题 -2、导入考生名单,生成准考证,生成用户名和密码 -3、考生高并发答题,最终系统输出成绩,导出成绩 -4、针对题目的得分率进行分析 - -五、调查问卷系统 -1、发布调查问卷 -2、在规定的时间内答题 -3、针对题目的得分率进行分析 -4、输出问卷结果报告 \ No newline at end of file diff --git a/WebRoot/upload/微服务架构教育项目组成3.txt b/WebRoot/upload/微服务架构教育项目组成3.txt deleted file mode 100644 index b34a337b..00000000 --- a/WebRoot/upload/微服务架构教育项目组成3.txt +++ /dev/null @@ -1,43 +0,0 @@ -技术上采用微服务架构,支持K8S,JFinal+JDK21+Mysql5.7+Docker+Pika+Vue+UniApp构成技术栈。 -目标: -1、基础功能一次开发,以后项目迭代可以随时拉取镜像就可以有支撑服务,无需重复开发。 -2、高性能,高并发,横向可扩展 -3、WEB端,手机端健全,各种技术全面得到实践应用 - - -模块 -一、基础支撑系统 -0、学段表 -1、科目 -2、支持多套章节目录结构 scheme+structure -3、支持知识点目录结构 - -二、资源库 -1、上传资源,上传到支持S3协议的Minio服务或者华为云、阿里云存储 -2、支持文件在线预览功能,需要整合下面的服务 -3、支持系统提供的资源和自己上传的资源,共享、上级等概念暂不支持 - -https://file.kkview.cn/ -https://gitee.com/kekingcn/file-online-preview - -三、题库 -1、录入试题 -暂不支持导入试题 - -2、支持单选,判断,多选,子母题(比如一个题干,多个小题),简答 - -3、支持根据试题级卷,包括手动组卷,自动级卷 - - -四、考试系统 -1、发布考试 -2、在规定的时间内答题 -2、导入考生名单,生成准考证,生成用户名和密码 -3、考生高并发答题,最终系统输出成绩,导出成绩 -4、针对题目的得分率进行分析 - -五、调查问卷系统 -1、发布调查问卷 -2、在规定的时间内答题 -3、针对题目的得分率进行分析 -4、输出问卷结果报告 \ No newline at end of file diff --git a/WebRoot/upload/怒江州与昆明市_教育分析报告_20250615_115808.docx b/WebRoot/upload/怒江州与昆明市_教育分析报告_20250615_115808.docx new file mode 100644 index 00000000..1f3fb429 Binary files /dev/null and b/WebRoot/upload/怒江州与昆明市_教育分析报告_20250615_115808.docx differ diff --git a/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_114831.html b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_114831.html new file mode 100644 index 00000000..5a9e973c --- /dev/null +++ b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_114831.html @@ -0,0 +1,758 @@ + + + + + + 怒江州与昭通市人口变化趋势对基础教育的影响分析报告 + + + + +
+

怒江州与昭通市人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测数据对比分析

+
+ +
+

报告摘要

+

本报告基于怒江州与昭通市2012-2035年的人口变化趋势数据,分析了两地城乡人口结构变化、学生数量变化以及教职工需求变化对基础教育资源配置的影响。报告显示,两地人口均呈现下降趋势,但城乡人口结构变化存在差异,这对基础教育资源配置提出了新的挑战和要求。

+
+ +
+

一、总人口变化趋势

+

怒江州总人口在2012-2019年呈平稳增长趋势,2019年达到顶峰55.7万人后开始下降,预计2035年将下降至48.4万人。昭通市总人口在2012-2019年持续大幅增长,2020年后迅速下降,预计2035年将减少至393.6万人。

+ +
+ +
+
+ +
+

二、城乡人口变化趋势

+

怒江州城镇人口数量呈缓慢增长趋势,乡村人口数量显著减少。昭通市乡村人口明显下降,城镇人口呈现稳步增长趋势,但2026年后城乡人口均呈现下降趋势。

+ +
+ +
+ +
+ +
+
+ +
+

三、学生数量变化趋势

+

怒江州各学段学生数量总体呈下降趋势,城区学生数量略有增长,镇区和乡村学生数量明显减少。昭通市各学段学生数量也呈现明显下降趋势,城区相对稳定,乡村下降显著。

+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+

四、教职工需求变化趋势

+

怒江州基础教育教职工数总体需求保持平缓,但存在区域性、结构性、学科性短缺。昭通市基础教育教职工数总体需求呈现减少趋势,各学段教职工需求均有不同程度减少。

+ +
+ +
+ +
+ +
+
+ +
+

五、学校占地面积需求对比

+

怒江州基础教育学校占地面积总量需求略有下降,各学段占地面积总体满足需求。昭通市基础教育学校占地面积总量需求逐步减少,各学段占地面积需求均有不同程度减少。

+ +
+ +
+
+ +
+

六、结论与建议

+

1. 两地人口均呈现下降趋势,但城乡结构变化不同,怒江州城镇化进程相对缓慢,昭通市城镇化进程较快。

+

2. 学生数量总体下降,但城区学生数量相对稳定或略有增长,乡村学生数量明显减少,需调整教育资源城乡配置。

+

3. 教职工需求怒江州保持平稳,昭通市明显减少,但两地均存在结构性短缺问题,需优化教师队伍结构。

+

4. 学校占地面积需求总体减少,为教育资源整合提供了空间,可考虑合并乡村小型学校,提高城区学校资源利用效率。

+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_115051.docx b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_115051.docx new file mode 100644 index 00000000..88c045d6 Binary files /dev/null and b/WebRoot/upload/怒江州与昭通市_教育分析报告_20250615_115051.docx differ diff --git a/WebRoot/upload/怒江州与迪庆州_教育分析报告_20250615_115706.docx b/WebRoot/upload/怒江州与迪庆州_教育分析报告_20250615_115706.docx new file mode 100644 index 00000000..ae863839 Binary files /dev/null and b/WebRoot/upload/怒江州与迪庆州_教育分析报告_20250615_115706.docx differ diff --git a/WebRoot/upload/文山州与怒江州_教育分析报告_20250615_115552.docx b/WebRoot/upload/文山州与怒江州_教育分析报告_20250615_115552.docx new file mode 100644 index 00000000..82d374b5 Binary files /dev/null and b/WebRoot/upload/文山州与怒江州_教育分析报告_20250615_115552.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250614_081335.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250614_081335.html new file mode 100644 index 00000000..ada92ca0 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250614_081335.html @@ -0,0 +1,602 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+
+ +
+

报告摘要

+

本报告基于文山州与楚雄州2012-2022年人口数据及未来预测数据,分析两州人口变化趋势及其对基础教育资源配置的影响。报告显示两州人口均呈下降趋势,城乡人口结构变化显著,对教育资源配置提出新的挑战。

+

报告通过9个关键图表展示了两州人口变化、城乡人口迁移、学生数量变化及教职工需求等核心指标,为教育资源配置决策提供数据支持。

+
+ +
+

详细分析

+

1. 总人口变化趋势

+

文山州2012-2022年总人口持续下降,年均增长率约-2.04%。2022年较2021年增长近1万人,其他年份基本保持每年减少约5000人。预测至2035年将减少41.9万人,年均增长率为-0.93%。

+

楚雄州2012-2022年常住人口呈先增长后下降趋势,峰值出现在2019年达275.5万人。2020年大幅下降33.8万人,此后持续下降。预测2022-2035年将年均下降约2.54万人。

+ +
+ +
+ +

2. 城乡人口变化

+

文山州2023-2035年城镇人口缓慢增长,乡村人口显著减少,人口向州府所在地转移。

+

楚雄州2012-2022年城乡常住人口波浪式下降,2019年峰值128.2万人。2020年拐点后城镇人口上升,2022年达111.08万人。预测2023-2035年城镇人口缓慢增长,乡村人口年均下降3.2万人。

+ +
+ +
+ +
+ +
+ +

3. 学生数量变化

+

文山州学前教育幼儿入园人数2035年预计降至5.72万,较2022年减少7900人。小学招生数2035年预计降至4.8万人,减少约0.68万人。

+

楚雄州学前教育幼儿入园人数2035年预计2.57万人,减少0.33万人。小学招生数2035年预计2.01万人,减少约0.27万人。

+ +
+ +
+ +
+ +
+ +
+ +
+ +

4. 教职工需求变化

+

文山州基础教育教职工数总体需求呈缓慢下降趋势,教职工的区域性、结构性、学科性短缺将长期存在。

+

楚雄州基础教育教职工数总体需求下降平缓,学前教育教职工数从2023年1.06万人减少至2035年0.95万人。

+ +
+ +
+ +
+ +
+ +

5. 学校占地面积需求

+

文山州基础教育学校占地面积总量需求增长放缓,各学段占地面积基本满足需求。

+

楚雄州基础教育学校占地面积总量需求减少平缓,学前幼儿园占地面积从2023年74.30万平方米减少至2035年66.40万平方米。

+ +
+ +
+
+ +
+

结论与建议

+
+

1. 两州人口均呈下降趋势,需根据人口变化动态调整教育资源配置。

+

2. 城乡人口结构变化显著,城镇教育资源需求增加,乡村教育资源需优化整合。

+

3. 学生数量下降趋势明显,应提前规划教师队伍结构调整,避免资源浪费。

+

4. 教职工区域性、结构性短缺问题将长期存在,需加强教师队伍建设。

+

5. 学校占地面积需求变化不大,未来应注重现有资源的优化利用而非新建扩建。

+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250614_084618.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250614_084618.docx new file mode 100644 index 00000000..0a1b6b1b Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250614_084618.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_110951.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_110951.docx new file mode 100644 index 00000000..4ce808dd Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_110951.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_111333.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_111333.docx new file mode 100644 index 00000000..2399e8bb Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_111333.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_111953.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_111953.html new file mode 100644 index 00000000..91d08131 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_111953.html @@ -0,0 +1,694 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测数据分析

+
+ +
+

报告摘要

+
+

本报告基于文山州和楚雄州2012-2022年的人口数据及教育资源配置数据,分析了两州人口变化趋势及其对基础教育的影响。报告显示,两州人口均呈现下降趋势,城乡人口结构发生显著变化,这对基础教育资源配置提出了新的挑战。

+

文山州总人口从2012年起持续下降,预计到2035年将降至303.5万人;楚雄州常住人口峰值出现在2019年,此后呈现下降趋势。两州均出现人口向城镇集中的现象,特别是向州府所在地转移。

+

学生数量方面,两州各学段学生人数均呈现下降趋势,乡村地区下降尤为明显。教职工需求和学校占地面积需求也随之下降,但区域性、结构性短缺问题将长期存在。

+
+
+ +
+

详细分析

+

人口变化趋势

+

文山州和楚雄州的人口变化呈现不同特点。文山州自2012年起人口持续下降,年均增长率约为-2.04%;楚雄州人口在2019年达到峰值后开始下降,2020年出现大幅减少。

+ +
+

总人口变化趋势

+ +
+ +

城乡人口结构方面,两州均呈现城镇人口缓慢增长、乡村人口显著减少的趋势。文山州城镇人口缓慢增长,为文山市发展成为50万人口区域性中心城市奠定基础;楚雄州城镇人口从2022年的111.08万人开始缓慢增长,而乡村人口从126.1万人下降至2035年的81.0万人。

+ +
+

城乡人口变化趋势

+ +
+ +
+

城乡人口比例变化

+ +
+ +

学生数量变化

+

两州各学段学生数量均呈现下降趋势。文山州学前幼儿入园人数预计到2035年降至5.72万左右,较2022年减少7900人;楚雄州学前幼儿入园人数预计减少0.33万人。

+ +
+

学前在园幼儿数量变化

+ +
+ +
+

小学在校生数量变化

+ +
+ +
+

两州学生数量对比

+ +
+ +

教职工需求变化

+

两州基础教育教职工需求均呈下降趋势。文山州教职工需求缓慢下降,但区域性、结构性短缺将长期存在;楚雄州学前教育教职工预计从2023年的1.06万人减少至2035年的0.95万人。

+ +
+

文山州教职工需求变化

+ +
+ +
+

楚雄州教职工需求变化

+ +
+ +

学校占地面积需求

+

两州学校占地面积需求均呈下降趋势。楚雄州学前幼儿园占地面积预计从2023年的74.30万平方米减少至2035年的66.40万平方米。

+ +
+

学校占地面积需求对比

+ +
+
+ +
+

结论与建议

+
+

主要结论

+
    +
  1. 两州人口均呈现下降趋势,且乡村人口减少速度明显快于城镇,城镇化进程加速。
  2. +
  3. 各学段学生数量普遍下降,乡村地区尤为明显,这将导致乡村教育资源利用率下降。
  4. +
  5. 教职工需求总量下降,但区域性、结构性短缺问题将长期存在。
  6. +
  7. 学校占地面积需求普遍下降,为优化资源配置提供了空间。
  8. +
+ +

政策建议

+
    +
  1. 根据人口变化趋势,动态调整教育资源配置,避免资源浪费。
  2. +
  3. 重点关注城镇教育资源供给,应对人口向城镇集中的趋势。
  4. +
  5. 优化乡村教育资源配置,在保障基本教育需求的同时提高资源利用效率。
  6. +
  7. 加强教师队伍建设,解决结构性短缺问题,提高教育质量。
  8. +
  9. 建立人口变化与教育资源配置的动态监测和调整机制。
  10. +
+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_112957.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_112957.html new file mode 100644 index 00000000..86445a57 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_112957.html @@ -0,0 +1,825 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测分析报告

+
+ +
+

报告摘要

+
+

本报告基于文山州和楚雄州2012-2022年的人口数据及教育资源配置数据,分析了两州人口变化趋势及其对基础教育的影响。报告显示,两州总人口均呈现下降趋势,城乡人口结构发生显著变化,城镇人口缓慢增长而乡村人口明显减少。这种人口变化对基础教育资源配置提出了新的挑战,包括学生数量减少、教职工需求下降、学校占地面积需求变化等。

+

报告通过9个图表系统展示了两州人口变化趋势、学生数量变化、教职工需求变化和学校占地面积需求变化,并提出了相应的政策建议,为两州未来基础教育资源配置提供决策参考。

+
+
+ +
+

详细分析

+

1. 总人口变化趋势

+

2012-2022年间,文山州总人口呈现持续下降趋势,年均增长率约为-2.04%。2022年较2021年人口增长近1万人,其他年份基本保持每年约减少5000人的速度在缓慢下降。预测显示,自2022年起至2035年,文山州人口总数将持续下降,未来13年人口将减少41.9万人,年均增长率为-0.93%。

+

楚雄州常住人口呈先增长后下降趋势,峰值出现在2019年达275.5万人;从2020年后呈现下降趋势,尤其是2020年,由2019年的275.5万人直接下降至241.7万人,减少33.8万人。此后继续下降,2022-2035年,楚雄州常住人口将呈逐步下降趋势,年均下降约2.54万人。

+ +

2. 城乡人口变化

+

文山州2023-2035年城镇人口数量呈缓慢增长趋势,乡村人口数量呈显著减少趋势。人口向州府所在地转移,为文山市发展成为50万人口区域性中心城市奠定基础,同时也对文山市城区教育发展提出新挑战。

+

楚雄州2012-2022年城乡常住人口数量呈现波浪式下降趋势,峰值出现在2019年。2023-2035年城乡人口数量呈缓慢增长趋势,而乡村人口数量呈显著减少趋势,从2022年126.1万人下降至2035年的81.0万人,年均下降3.2万人。

+ +

3. 学生数量变化

+

文山州各学段学生数量均呈现下降趋势。以小学为例,2022-2035年小学在校生数预计降至32.02万人左右,较2022年减少约4.43万人。乡村学生数量减少明显,城区和镇区学生数量略有上升或保持稳定。

+

楚雄州学生数量变化趋势与文山州类似,但下降幅度相对较小。小学在校生人数至2035年预计达到13.12万人左右,较2022年减少1.71万人左右。城区学生数量增长不大,乡村学生数量明显减少。

+ +

4. 教职工需求变化

+

两州基础教育教职工数总体需求均呈缓慢下降趋势。文山州各学段教职工数总体上基本满足需求,但区域性、结构性、学科性短缺将长期存在。楚雄州教职工需求下降平缓,学前教育教职工数从2023年的1.06万人减少至2035年的0.95万人左右。

+ +

5. 学校占地面积需求

+

两州基础教育学校占地面积总量需求均增长放缓或减少。文山州各学段学校占地面积总体上基本满足需求。楚雄州学前幼儿园占地面积从2023年的74.30万平方米减少至2035年的66.40万平方米,减少7.9万平方米。

+
+ +
+

图表展示

+ +

1. 总人口变化趋势

+
+ +
+ +

2. 城乡人口变化趋势

+
+ +
+
+ +
+ +

3. 学生数量变化趋势

+
+ +
+
+ +
+
+ +
+ +

4. 教职工需求变化趋势

+
+ +
+
+ +
+ +

5. 学校占地面积需求对比

+
+ +
+
+ +
+

结论与建议

+
+

主要结论

+
    +
  1. 两州总人口均呈现下降趋势,文山州下降更为平缓,楚雄州下降速度加快。
  2. +
  3. 城乡人口结构发生显著变化,城镇人口缓慢增长而乡村人口明显减少。
  4. +
  5. 各学段学生数量均呈现下降趋势,乡村学生数量减少尤为明显。
  6. +
  7. 教职工需求总体呈下降趋势,但结构性短缺问题将长期存在。
  8. +
  9. 学校占地面积需求增长放缓或减少,现有资源基本满足需求。
  10. +
+ +

政策建议

+
    +
  1. 优化城乡教育资源配置,适应人口流动趋势,加强城镇学校建设。
  2. +
  3. 建立教师流动机制,解决区域性、结构性教师短缺问题。
  4. +
  5. 合理规划学校布局,避免资源浪费,提高资源利用效率。
  6. +
  7. 加强乡村小规模学校建设,保障乡村学生受教育权利。
  8. +
  9. 建立动态监测机制,定期评估人口变化对教育的影响,及时调整政策。
  10. +
+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_114421.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_114421.docx new file mode 100644 index 00000000..cc74c8d2 Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_114421.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115240.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115240.docx new file mode 100644 index 00000000..ed5ea33e Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115240.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115345.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115345.docx new file mode 100644 index 00000000..253209bd Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_115345.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120033.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120033.docx new file mode 100644 index 00000000..a4ee2d22 Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120033.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120231.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120231.docx new file mode 100644 index 00000000..9a5ed5cc Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120231.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120655.docx b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120655.docx new file mode 100644 index 00000000..5120a3f1 Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_120655.docx differ diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_121223.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_121223.html new file mode 100644 index 00000000..196b7cd7 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_121223.html @@ -0,0 +1,802 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测分析

+
+ +
+

报告摘要

+
+

本报告基于文山州与楚雄州2012-2022年人口变化数据及2035年预测数据,分析了两州人口变化趋势及其对基础教育资源配置的影响。报告显示,两州总人口均呈下降趋势,城乡人口结构发生显著变化,城镇人口增加而乡村人口减少。这种人口变化对基础教育各学段的学生数量、教职工需求和学校占地面积都产生了深远影响。

+

文山州总人口年均增长率为-0.93%,预计2035年将降至303.5万人;楚雄州总人口年均下降约2.54万人,2030年后下降速度加快。两州均呈现人口向城镇集中的趋势,这对城镇教育资源供给提出了新的挑战,同时乡村教育资源可能出现过剩。

+
+
+ +
+

详细分析

+

1. 总人口变化趋势

+

2012-2022年间,文山州总人口呈持续下降趋势,年增长率约为-2.04%。2022年较2021年人口增长近1万人,其他年份基本保持每年约减少5000人的速度在缓慢下降。预测显示,未来13年人口将减少41.9万人,至2035年降至303.5万人,年均增长率为-0.93%。

+

楚雄州常住人口呈先增长后下降趋势,峰值出现在2019年达275.5万人;从2020年后呈现下降趋势,尤其是2020年,由2019年的275.5万人直接下降至241.7万人,减少33.8万人。此后逐步下降至2022年的237.2万人。预测2022-2035年,常住人口将呈逐步下降趋势,年均下降约2.54万人。

+ +
+ +
+ +

2. 城乡人口变化趋势

+

文山州2023-2035年全州城镇人口数量呈缓慢增长趋势,乡村人口数量呈显著减少趋势。人口向州府所在地转移,为文山市发展成为50万人口区域性中心城市奠定基础,同时,也对文山市城区教育发展提出新挑战。

+

楚雄州2012-2022年全州城乡常住人口数量呈现波浪式下降趋势,峰值出现在2019年的128.2万人,城镇化率达46.53%。2020年出现拐点,城镇人口下降至108.3万人,城镇化率调整为44.82%;此后呈现上升趋势,至2022年城镇人口达111.08万人,城镇化率46.83%。2023-2035年全州城乡人口数量呈缓慢增长趋势,而乡村人口数量呈显著减少趋势,从2022年126.1万人下降至2035年的81.0万人,年均下降3.2万人。

+ +
+ +
+ +
+ +
+ +

3. 学生数量变化趋势

+

文山州学前教育幼儿入园人数持续下降,至2035年预计降至5.72万左右;在园幼儿数至2035年预计降至14.83万人左右。小学招生数缓慢下降,至2035年预计降至4.8万人左右;在校生数至2035年预计降至32.02万人左右。初中招生数明显下降,至2035年预计降至5.7万人左右;在校生数至2035年降至16.2万人左右。普通高中招生数减少约0.39万人左右,2035年预计降至2.78万人左右;在校生数减少约1.08万人左右,2035年预计降至7.86万人左右。

+

楚雄州学前教育幼儿入园人数至2035年预计招生2.57万人左右;在园幼儿数至2035年预计达6.64万人左右。小学招生数至2035年预计达2.01万人左右;在校生人数至2035年预计达到13.12万人左右。初中招生数至2035年预计在2.26万人左右;在校生数至2035年预计达6.74万人左右。高中招生人数至2035年预计达在1.53万人左右;在校生人数至2035年预计达4.34万人左右。

+ +
+ +
+ +
+ +
+ +
+ +
+ +

4. 教职工需求变化

+

文山州基础教育教职工数总体需求呈缓慢下降趋势,各学段教职工数总体上基本满足需求,但是教职工的区域性、结构性、学科性短缺将长期存在。

+

楚雄州基础教育教职工数总体需求下降平缓,学前教育教职工数需求从2023年的1.06万人减少至2035年的0.95万人左右;小学教育教职工数需求从2023年的0.77万人减少至2035年的0.69万人左右;初中教育教职工数需求从2023年的0.56万人减少至2035年的0.50万人左右;普通高中教职工数需求从2023年的0.40万人减少至2035年的0.35万人左右。

+ +
+ +
+ +
+ +
+ +

5. 学校占地面积需求

+

文山州基础教育学校占地面积总量需求增长放缓,各学段学校占地面积总体上基本满足需求。

+

楚雄州基础教育学校占地面积总量需求减少平缓,学前幼儿园占地面积需求从2023年的74.30万平方米减少至2035年的66.40万平方米;小学占地面积需求从2023年的186.5万平方米减少至2035年的166.6万平方米;初中占地面积需求从2023年的124.4万平方米减少至2035年的111.2万平方米;普通高中占地面积需求从2023年的166.6万平方米减少至2035年的143.2万平方米。

+ +
+ +
+
+ +
+

结论与建议

+
+

主要结论

+
    +
  1. 两州总人口均呈现下降趋势,但城乡人口结构变化显著,城镇人口增加而乡村人口减少。
  2. +
  3. 基础教育各学段学生数量普遍呈现下降趋势,乡村地区下降尤为明显。
  4. +
  5. 教职工需求总体呈下降趋势,但存在区域性、结构性短缺问题。
  6. +
  7. 学校占地面积需求增长放缓或减少,乡村教育资源可能出现过剩。
  8. +
+ +

政策建议

+
    +
  1. 优化城乡教育资源配置,应对人口流动带来的结构性变化。
  2. +
  3. 加强城镇教育资源建设,满足人口集中带来的需求增长。
  4. +
  5. 合理调整乡村学校布局,避免资源浪费。
  6. +
  7. 加强教师队伍建设,解决结构性短缺问题。
  8. +
  9. 建立动态监测机制,及时调整教育资源配置策略。
  10. +
+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_155241.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_155241.html new file mode 100644 index 00000000..a8576913 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_155241.html @@ -0,0 +1,613 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+

基于2012-2035年人口与教育资源配置预测数据

+
+ +
+

报告摘要

+

本报告分析了文山州与楚雄州2012-2022年的人口变化趋势,并预测了2023-2035年的人口发展对基础教育资源配置的影响。数据显示,两州总人口均呈现下降趋势,城乡人口结构发生显著变化,城镇人口增加而乡村人口减少。这种人口变化对基础教育资源配置提出了新的挑战,特别是在教职工需求、学校占地面积和学生数量等方面。

+
+ +
+

详细分析

+

人口变化趋势

+

文山州2012-2022年总人口持续下降,年增长率约为-2.04%。2022年较2021年人口增长近1万人,其他年份基本保持每年约减少5000人的速度在缓慢下降。预测显示,未来13年人口将减少41.9万人,至2035年降至303.5万人,年均增长率为-0.93%。

+

楚雄州2012-2022年常住人口呈先增长后下降趋势,峰值出现在2019年达275.5万人;从2020年后呈现下降趋势,尤其是2020年,由2019年的275.5万人直接下降至241.7万人,减少33.8万人。预测显示,2022-2035年常住人口将呈逐步下降趋势,年均下降约2.54万人。

+ +

城乡人口变化

+

文山州2023-2035年城镇人口数量呈缓慢增长趋势,乡村人口数量呈显著减少趋势。人口向州府所在地转移,为文山市发展成为50万人口区域性中心城市奠定基础,同时也对文山市城区教育发展提出新挑战。

+

楚雄州城乡人口变化呈现复杂趋势。2012-2022年全州城乡常住人口数量呈现波浪式下降趋势,2023-2035年城镇人口数量呈缓慢增长趋势,而乡村人口数量从2022年126.1万人下降至2035年的81.0万人,年均下降3.2万人。

+
+ +
+

图表展示

+ +
+

图表1:总人口变化趋势图

+ +
+ +
+

图表2:城乡人口变化趋势图1

+ +
+ +
+

图表3:城乡人口变化趋势图2

+ +
+ +
+

图表4:学生数量变化趋势图1

+ +
+ +
+

图表5:学生数量变化趋势图2

+ +
+ +
+

图表6:学生数量对比图

+ +
+ +
+

图表7:教职工需求变化趋势图1

+ +
+ +
+

图表8:教职工需求变化趋势图2

+ +
+ +
+

图表9:学校占地面积需求对比图

+ +
+
+ +
+

结论与建议

+
+

主要结论

+

1. 两州总人口均呈现下降趋势,但城乡人口结构变化显著,城镇人口增加而乡村人口减少。

+

2. 学生数量整体呈下降趋势,特别是乡村地区下降明显,城镇地区相对稳定或有小幅增长。

+

3. 教职工需求总体呈下降趋势,但存在区域性、结构性和学科性短缺问题。

+

4. 学校占地面积需求增长放缓或减少,现有资源基本能满足需求。

+ +

政策建议

+

1. 优化教育资源配置,适应城乡人口结构变化,加强城镇教育资源建设。

+

2. 关注教职工结构性短缺问题,加强师资培训和引进。

+

3. 合理规划学校布局,提高现有教育资源使用效率。

+

4. 加强乡村教育质量提升,防止城乡教育差距进一步扩大。

+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_160127.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_160127.html new file mode 100644 index 00000000..768ee267 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_160127.html @@ -0,0 +1,749 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测分析报告

+
+ +
+

报告摘要

+
+

本报告基于文山州与楚雄州2012-2022年人口数据及2035年预测数据,分析了两州人口变化趋势及其对基础教育资源配置的影响。报告显示,两州总人口均呈下降趋势,城乡人口结构发生显著变化,城镇人口增加而乡村人口减少。这种人口变化对基础教育资源配置提出了新的挑战,包括教职工需求变化、学校占地面积调整以及城乡教育资源重新分配等问题。

+

报告通过9个图表系统展示了人口变化趋势、学生数量变化、教职工需求变化和学校占地面积需求变化等关键指标,为教育资源配置决策提供了数据支持。

+
+
+ +
+

详细分析

+

1. 总人口变化趋势

+

2012-2022年间,文山州总人口持续下降,年均增长率约为-2.04%。2022年较2021年人口增长近1万人,其他年份基本保持每年约减少5000人的速度缓慢下降。预测显示,2022-2035年文山州人口将减少41.9万人,至2035年降至303.5万人,年均增长率为-0.93%。

+

楚雄州常住人口呈先增长后下降趋势,峰值出现在2019年达275.5万人;2020年后呈现下降趋势,尤其是2020年,由2019年的275.5万人直接下降至241.7万人,减少33.8万人。2022-2035年,楚雄州常住人口将呈逐步下降趋势,年均下降约2.54万人。

+ +
+ +
+ +

2. 城乡人口变化趋势

+

文山州2023-2035年城镇人口数量呈缓慢增长趋势,乡村人口数量呈显著减少趋势。人口向州府所在地转移,为文山市发展成为50万人口区域性中心城市奠定基础,同时也对文山市城区教育发展提出新挑战。

+

楚雄州2012-2022年城乡常住人口数量呈现波浪式下降趋势,峰值出现在2019年的128.2万人。2023-2035年全州城乡人口数量呈缓慢增长趋势,但乡村人口数量呈显著减少趋势,从2022年126.1万人下降至2035年的81.0万人,年均下降3.2万人。

+ +
+ +
+ +
+ +
+ +

3. 学生数量变化趋势

+

文山州学前幼儿入园总数总体呈现波动变化,未来13年将持续下降,至2035年预计降至5.72万左右。小学生在校生数至2035年预计降至32.02万人左右,较2022年减少约4.43万人。初中在校生数至2035年降至16.2万人左右,减少约2.23万人。高中在校生数2035年预计降至7.86万人左右,减少约1.08万人。

+

楚雄州学前在园幼儿数呈现明显持续上升趋势,但未来将大幅减少,至2035年预计达6.64万人左右。小学生在校生人数至2035年预计达到13.12万人左右,减少1.71万人左右。初中在校生数至2035年预计达6.74万人左右,减少约0.87万人。高中在校生人数至2035年预计达4.34万人左右,减少约0.76万人。

+ +
+ +
+ +
+ +
+ +
+ +
+ +

4. 教职工需求变化

+

文山州基础教育教职工数总体需求呈缓慢下降趋势,各学段教职工数总体上基本满足需求,但是教职工的区域性、结构性、学科性短缺将长期存在。

+

楚雄州基础教育教职工数总体需求下降平缓,学前教育教职工数需求从2023年的1.06万人减少至2035年的0.95万人左右,小学教育教职工数从2023年的0.77万人减少至2035年的0.69万人左右,初中教育教职工数从2023年的0.56万人减少至2035年的0.50万人左右。

+ +
+ +
+ +
+ +
+ +

5. 学校占地面积需求

+

文山州基础教育学校占地面积总量需求增长放缓,各学段学校占地面积总体上基本满足需求。

+

楚雄州基础教育学校占地面积总量需求减少平缓,学前幼儿园占地面积从2023年的74.30万平方米减少至2035年的66.40万平方米,小学占地面积从2023年的186.5万平方米减少至2035年的166.6万平方米,初中占地面积从2023年的124.4万平方米减少至2035年的111.2万平方米。

+ +
+ +
+
+ +
+

结论与建议

+
+

主要结论

+
    +
  1. 两州总人口均呈现下降趋势,文山州下降更为平缓,楚雄州下降速度较快且波动较大。
  2. +
  3. 城乡人口结构发生显著变化,城镇人口增加而乡村人口减少,人口向中心城市集中。
  4. +
  5. 各学段学生数量总体呈下降趋势,但不同学段、不同区域变化幅度不一。
  6. +
  7. 教职工需求总体呈下降趋势,但区域性、结构性短缺问题将长期存在。
  8. +
  9. 学校占地面积需求增长放缓或减少,为优化资源配置提供了空间。
  10. +
+ +

政策建议

+
    +
  1. 建立动态调整机制,根据人口变化趋势优化教育资源配置。
  2. +
  3. 加强城乡教育资源统筹,应对人口向城镇集中的趋势。
  4. +
  5. 关注教职工结构性短缺问题,加强师资队伍建设。
  6. +
  7. 利用学校占地面积需求变化的机会,优化学校布局,提高资源利用效率。
  8. +
  9. 建立长期监测机制,持续跟踪人口变化对教育的影响。
  10. +
+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_161748.html b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_161748.html new file mode 100644 index 00000000..90606da2 --- /dev/null +++ b/WebRoot/upload/文山州与楚雄州_教育分析报告_20250615_161748.html @@ -0,0 +1,686 @@ + + + + + + 文山州与楚雄州人口变化趋势对基础教育的影响分析报告 + + + + +
+

文山州与楚雄州人口变化趋势对基础教育的影响分析报告

+

云南省教育资源配置发展预测数据分析

+
+ +
+

报告摘要

+
+

本报告基于文山州与楚雄州2012-2022年人口数据及2035年预测数据,分析了两州人口变化趋势及其对基础教育资源配置的影响。数据显示,两州总人口均呈现下降趋势,城乡人口结构发生显著变化,城镇人口缓慢增长而乡村人口明显减少。这种人口变化对基础教育各学段的学生数量、教职工需求和学校占地面积都产生了深远影响。

+

报告通过9个关键图表展示了人口变化趋势、学生数量变化、教职工需求变化和学校占地面积需求变化,为教育资源配置决策提供数据支持。

+
+
+ +
+

详细分析

+

人口变化趋势

+

2012-2022年间,文山州总人口持续下降,年增长率约为-2.04%。2022年较2021年人口增长近1万人,其他年份基本保持每年约减少5000人的速度在缓慢下降。预测显示,未来13年人口将减少41.9万人,至2035年降至303.5万人,年均增长率为-0.93%。

+

楚雄州常住人口呈先增长后下降趋势,峰值出现在2019年达275.5万人;从2020年后呈现下降趋势,尤其是2020年,由2019年的275.5万人直接下降至241.7万人,减少33.8万人。预测显示,2022-2035年,楚雄州常住人口将呈逐步下降趋势,年均下降约2.54万人。

+ +

城乡人口变化

+

文山州城镇人口数量呈缓慢增长趋势,乡村人口数量呈显著减少趋势。人口向州府所在地转移,为文山市发展成为50万人口区域性中心城市奠定基础,同时也对文山市城区教育发展提出新挑战。

+

楚雄州城乡人口数量呈波浪式变化,2023-2035年全州城乡人口数量呈缓慢增长趋势,但乡村人口数量呈显著减少趋势,从2022年126.1万人下降至2035年的81.0万人,年均下降3.2万人。

+ +

基础教育影响

+

两州各学段学生数量均呈现下降趋势,其中乡村学生数量减少最为明显。教职工需求总体呈下降趋势,但存在区域性、结构性、学科性短缺问题。学校占地面积需求增长放缓或减少,现有资源基本能满足需求。

+
+ +
+

图表展示

+ +

总人口变化趋势

+
+ +
+ +

城乡人口变化趋势

+
+ +
+ +
+ +
+ +

学生数量变化趋势

+
+ +
+ +
+ +
+ +
+ +
+ +

教职工需求变化趋势

+
+ +
+ +
+ +
+ +

学校占地面积需求对比

+
+ +
+
+ +
+

结论与建议

+
+

主要结论

+
    +
  1. 两州总人口均呈现下降趋势,乡村人口减少尤为明显,城镇化进程加速。
  2. +
  3. 基础教育各学段学生数量总体下降,乡村学生数量减少最为显著。
  4. +
  5. 教职工需求总体呈下降趋势,但存在结构性短缺问题。
  6. +
  7. 学校占地面积需求增长放缓或减少,现有资源基本能满足需求。
  8. +
+ +

政策建议

+
    +
  1. 优化城乡教育资源配置,适应城镇化进程和人口流动趋势。
  2. +
  3. 调整教职工编制和结构,解决区域性、学科性短缺问题。
  4. +
  5. 合理规划学校布局,提高教育资源利用效率。
  6. +
  7. 加强乡村小规模学校建设,保障乡村学生教育质量。
  8. +
  9. 建立动态监测机制,及时调整教育资源配置策略。
  10. +
+
+
+ + + + \ No newline at end of file diff --git a/WebRoot/upload/文山州与楚雄州教育资源配置发展预测分析报告.pptx b/WebRoot/upload/文山州与楚雄州教育资源配置发展预测分析报告.pptx new file mode 100644 index 00000000..1e4960b4 Binary files /dev/null and b/WebRoot/upload/文山州与楚雄州教育资源配置发展预测分析报告.pptx differ diff --git a/pom.xml b/pom.xml index 4d30fad2..cd08476d 100644 --- a/pom.xml +++ b/pom.xml @@ -16,8 +16,8 @@ UTF-8 UTF-8 - 5.2.3 - 3.6 + 5.2.4 + 3.7 2022.2 5.1.0 @@ -321,6 +321,23 @@ poi-scratchpad 5.2.5 + + + + org.commonmark + commonmark + 0.21.0 + + + org.commonmark + commonmark-ext-gfm-tables + 0.21.0 + + + org.commonmark + commonmark-ext-heading-anchor + 0.21.0 + diff --git a/src/main/java/com/dsideal/base/AI/Controller/AiController.java b/src/main/java/com/dsideal/base/AI/Controller/AiController.java new file mode 100644 index 00000000..fdd934e0 --- /dev/null +++ b/src/main/java/com/dsideal/base/AI/Controller/AiController.java @@ -0,0 +1,232 @@ +package com.dsideal.base.AI.Controller; + +import com.dsideal.base.AI.Generator.WordGenerator; +import com.dsideal.base.AI.Generator.HtmlGenerator; +import com.dsideal.base.AI.Generator.PptGenerator; +import com.dsideal.base.AI.Model.YunNanModel; +import com.dsideal.base.Util.CallDeepSeek; +import com.dsideal.base.Util.CommonUtil; +import com.dsideal.base.Util.PptAIKit; +import com.jfinal.aop.Before; +import com.jfinal.core.Controller; +import com.jfinal.ext.interceptor.GET; +import com.jfinal.kit.PathKit; +import com.jfinal.kit.SseEmitter; +import com.jfinal.plugin.activerecord.Record; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; + +public class AiController extends Controller { + YunNanModel ym = new YunNanModel(); + + /** + * 获取云南所有市州【JSON】 + */ + public void getYunNanCity() { + List list = ym.getYunNanCity(); + renderJson(CommonUtil.renderJsonForLayUI(list, list.size())); + } + + /** + * 对比市州,生成对比报告【Word】 + * + * @param shiZhouA 市州A + * @param shiZhouB 市州B + * http://10.10.21.20:9200/dsBase/ai/compareShiZhouWord?shiZhouA=文山州&shiZhouB=楚雄州 + */ + @Before({GET.class}) + public void compareShiZhouWord(String shiZhouA, String shiZhouB) throws Exception { + // 数据获取 + String content = ym.collectEducationData(new String[]{shiZhouA, shiZhouB}); + //创建sse + final SseEmitter sseEmitter = new SseEmitter(getResponse()); + // 发送开始分析的消息 + sseEmitter.sendMessage("data: 开始数据分析...\n\n"); + + // 调用DeepSeek API进行流式分析 + CallDeepSeek.callDeepSeekStream(content, new CallDeepSeek.SSEListener() { + @Override + public void onData(String data) { + sseEmitter.sendMessage("data: " + data + "\n\n"); // 将DeepSeek返回的数据实时推送给前端 + } + + @Override + public void onComplete(String fullResponse) { + try { + // AI分析完成,开始生成Word文档 + sseEmitter.sendMessage("data: AI深度分析完成,正在生成报告文档...\n\n"); + String fileName = "/upload/" + shiZhouA + "与" + shiZhouB + "_教育分析报告_" + + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".docx"; + String filePath = PathKit.getWebRootPath() + fileName; + WordGenerator.generateWordDocument(fullResponse, filePath, new String[]{shiZhouA, shiZhouB}); + + String baseUrl = CommonUtil.getBaseUrl(getRequest()); + sseEmitter.sendMessage("data: 报告生成完成!文件Http 相对路径:" + baseUrl + "/dsBase" + fileName + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + + // 完成SSE连接 + sseEmitter.complete(); + } catch (Exception e) { + sseEmitter.sendMessage("data: 生成报告时发生错误:" + e.getMessage() + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + sseEmitter.complete(); + } + } + + @Override + public void onError(String error) { + // 发送错误信息给前端 + sseEmitter.sendMessage("data: 调用DeepSeek API异常:" + error + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + sseEmitter.complete(); + } + }); + + //锁住等待子线程推送完成 + sseEmitter.waiting(100); + renderNull(); + } + + /** + * 对比市州,生成对比报告【HTML】 + * + * @param shiZhouA 市州A + * @param shiZhouB 市州B + * http://10.10.21.20:9200/dsBase/ai/compareShiZhouHtml?shiZhouA=文山州&shiZhouB=楚雄州 + */ + @Before({GET.class}) + public void compareShiZhouHtml(String shiZhouA, String shiZhouB) throws Exception { + // 数据获取 + String content = ym.collectEducationData(new String[]{shiZhouA, shiZhouB}); + //创建sse + final SseEmitter sseEmitter = new SseEmitter(getResponse()); + // 发送开始分析的消息 + sseEmitter.sendMessage("data: 开始数据分析...\n\n"); + + // 构建HTML提示词,直接生成HTML报告 + String regionName = shiZhouA + "与" + shiZhouB; + String htmlPrompt = HtmlGenerator.buildHtmlPrompt(content, regionName); + + + System.out.println("提交到DeepSeek的提示词大小:"+htmlPrompt.length()); + + // 调用DeepSeek API生成HTML报告 + CallDeepSeek.callDeepSeekStream(htmlPrompt, new CallDeepSeek.SSEListener() { + @Override + public void onData(String data) { + // 实时推送HTML生成进度 + sseEmitter.sendMessage("data: " + data + "\n\n"); + } + + @Override + public void onComplete(String fullResponse) { + try { + // HTML生成完成,保存文件 + sseEmitter.sendMessage("data: HTML报告生成完成,正在保存文件...\n\n"); + String fileName = "/upload/" + shiZhouA + "与" + shiZhouB + "_教育分析报告_" + + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".html"; + String filePath = PathKit.getWebRootPath() + fileName; + + // 清理并保存HTML内容 + HtmlGenerator htmlGenerator = new HtmlGenerator(); + htmlGenerator.saveHtmlContent(fullResponse, filePath); + + String baseUrl = CommonUtil.getBaseUrl(getRequest()); + sseEmitter.sendMessage("data: HTML报告生成完成!文件Http 相对路径:" + baseUrl + "/dsBase" + fileName + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + + // 完成SSE连接 + sseEmitter.complete(); + } catch (Exception e) { + sseEmitter.sendMessage("data: 保存HTML文件时发生错误:" + e.getMessage() + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + sseEmitter.complete(); + } + } + + @Override + public void onError(String error) { + // 发送错误信息给前端 + sseEmitter.sendMessage("data: 调用DeepSeek API异常:" + error + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + sseEmitter.complete(); + } + }); + + //锁住等待子线程推送完成 + sseEmitter.waiting(100); + renderNull(); + } + + /** + * 对比市州,生成对比报告【PPT】 + * + * @param shiZhouA 市州A + * @param shiZhouB 市州B + * http://10.10.21.20:9200/dsBase/ai/compareShiZhouPpt?shiZhouA=文山州&shiZhouB=楚雄州 + */ + @Before({GET.class}) + public void compareShiZhouPpt(String shiZhouA, String shiZhouB) throws Exception { + // 数据获取 + String content = ym.collectEducationData(new String[]{shiZhouA, shiZhouB}); + + //创建sse + final SseEmitter sseEmitter = new SseEmitter(getResponse()); + // 发送开始分析的消息 + sseEmitter.sendMessage("data: 开始数据分析...\n\n"); + + // 构建PPT提示词,直接生成PPT大纲 + String regionName = shiZhouA + "与" + shiZhouB; + String pptPrompt = PptGenerator.buildPptPrompt(content, regionName); + + // 调用DeepSeek API生成PPT大纲,然后直接生成PPT文件 + CallDeepSeek.callDeepSeekStream(pptPrompt, new CallDeepSeek.SSEListener() { + @Override + public void onData(String data) { + // 实时推送PPT大纲生成进度 + sseEmitter.sendMessage("data: " + data + "\n\n"); + } + + @Override + public void onComplete(String fullResponse) { + try { + // PPT大纲生成完成,开始生成PPT文件 + sseEmitter.sendMessage("data: PPT大纲生成完成,正在生成PPT文件...\n\n"); + + // 直接使用生成的大纲调用PPT生成API(不再调用DeepSeek) + String token = PptAIKit.createApiToken("dsideal", 1000); + String pptFileUrl = PptGenerator.generatePptFromMarkdown(fullResponse, token); + + if (pptFileUrl != null && !pptFileUrl.trim().isEmpty()) { + sseEmitter.sendMessage("data: PPT生成完成!文件下载地址:" + pptFileUrl + "\n\n"); + } else { + sseEmitter.sendMessage("data: PPT生成失败,请检查API令牌或网络连接\n\n"); + } + + sseEmitter.sendMessage("data: [DONE]\n\n"); + + // 完成SSE连接 + sseEmitter.complete(); + } catch (Exception e) { + sseEmitter.sendMessage("data: 生成PPT时发生错误:" + e.getMessage() + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + sseEmitter.complete(); + } + } + + @Override + public void onError(String error) { + // 发送错误信息给前端 + sseEmitter.sendMessage("data: 调用DeepSeek API异常:" + error + "\n\n"); + sseEmitter.sendMessage("data: [DONE]\n\n"); + sseEmitter.complete(); + } + }); + + //锁住等待子线程推送完成 + sseEmitter.waiting(100); + renderNull(); + } +} diff --git a/src/main/java/com/dsideal/base/AI/Controller/SSEController.java b/src/main/java/com/dsideal/base/AI/Controller/SSEController.java new file mode 100644 index 00000000..ac343e3a --- /dev/null +++ b/src/main/java/com/dsideal/base/AI/Controller/SSEController.java @@ -0,0 +1,56 @@ +package com.dsideal.base.AI.Controller; + +import com.jfinal.core.Controller; +import com.jfinal.kit.SseEmitter; + +public class SSEController extends Controller { + /** + * 主线程里 + * 测试本地发送文本打字机 + */ + public void sse1() throws InterruptedException { + String msg = "111 222 333 444 555 666 777"; + //创建sse + SseEmitter sseEmitter = new SseEmitter(getResponse()); + //主线程里拿到数据推送消息 + String[] datas = msg.split(""); + for (String data : datas) { + //推送 + sseEmitter.sendMessage(data); + Thread.sleep(50); + } + //sse完成 + sseEmitter.complete(); + //结束response + renderNull(); + } + + /** + * 异步子线程模拟 + * 测试本地发送文本打字机 + * http://10.10.21.20:9200/dsBase/ai/sse2 + */ + public void sse2() { + //创建sse + final SseEmitter sseEmitter = new SseEmitter(getResponse()); + String msg = "111 222 333 444 555 666 777"; + //模拟chatgptapi 异步调用返回 + new Thread(() -> { + String[] datas = msg.split(""); + for (String data : datas) { + //推送 异步子线程里推送数据给客户端 + sseEmitter.sendMessage(data); + try { + Thread.sleep(50); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + } + //完成sse 告知主线程已经完成 + sseEmitter.complete(); + }).start(); + //锁住等待子线程推送完成 + sseEmitter.waiting(100); + renderNull(); + } +} diff --git a/src/main/java/com/dsideal/base/AI/Generator/HtmlGenerator.java b/src/main/java/com/dsideal/base/AI/Generator/HtmlGenerator.java new file mode 100644 index 00000000..84852c8f --- /dev/null +++ b/src/main/java/com/dsideal/base/AI/Generator/HtmlGenerator.java @@ -0,0 +1,111 @@ +package com.dsideal.base.AI.Generator; + +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +public class HtmlGenerator { + + /** + * 构建HTML提示词 + */ + public static String buildHtmlPrompt(String dataContent, String regionName) { + return String.format( + "请根据以下数据内容,生成一个完整的HTML格式报告。要求:\n\n" + + "1. 不要生成除HTML外的其它文字,生成完整的HTML文档结构(包含、、、等标签)\n" + + "2. 使用现代化的CSS样式,包含响应式设计\n" + + "3. 必须在中引入Chart.js库,使用以下任一可用地址:\n" + + " - \n" + + " - \n" + + " - \n" + + "4. 【重要】必须生成固定的9个图表,按以下顺序和ID生成:\n" + + " - 图表1:总人口变化趋势图(canvas id: populationTrendChart)\n" + + " - 图表2:城乡人口变化趋势图1(canvas id: urbanRuralTrendChart1)\n" + + " - 图表3:城乡人口变化趋势图2(canvas id: urbanRuralTrendChart2)\n" + + " - 图表4:学生数量变化趋势图1(canvas id: studentTrendChart1)\n" + + " - 图表5:学生数量变化趋势图2(canvas id: studentTrendChart2)\n" + + " - 图表6:学生数量对比图(canvas id: studentComparisonChart)\n" + + " - 图表7:教职工需求变化趋势图1(canvas id: teacherTrendChart1)\n" + + " - 图表8:教职工需求变化趋势图2(canvas id: teacherTrendChart2)\n" + + " - 图表9:学校占地面积需求对比图(canvas id: schoolAreaChart)\n" + + "5. 每个canvas元素必须包装在
中,并设置固定高度:
\n" + + "6. 每个canvas元素必须设置宽度和高度属性:\n" + + "7. JavaScript代码必须在前,为每个canvas创建对应的Chart实例\n" + + "8. 图表数据要根据数据内容合理推算和展示,确保数据真实有效\n" + + "9. 报告标题为:《%s人口变化趋势对基础教育的影响分析报告》\n" + + "10. 包含报告摘要、详细分析、图表展示、结论建议等章节\n" + + "11. 直接输出完整的HTML代码,不要用markdown包装\n" + + "12. 【重要】必须为所有9个图表生成完整的JavaScript初始化代码\n" + + "13. 【重要】每个canvas元素都必须有对应的完整Chart初始化代码,包含完整的data、options等配置\n" + + "14. 【重要】JavaScript代码必须完整到标签结束,不能在中间截断\n" + + "15. 【重要】必须为所有9个图表生成完整的JavaScript初始化代码,一个都不能少\n" + + "16. 【重要】生成的HTML必须是完整的,包含完整的和结束标签\n" + + "17. 【重要】检查生成的HTML,确保所有9个图表的JavaScript代码都完整,没有任何代码被截断或省略\n" + + "18. 【重要】如果某个图表的数据不足,可以使用合理的模拟数据,但必须生成所有9个图表\n" + + "19. 【重要】确保Chart.js图表能正确渲染,检查数据格式和配置是否正确\n" + + "20. 【重要】在JavaScript代码开始前添加window.onload事件确保DOM加载完成:window.onload = function() { ... };\n" + + "21. 【重要】每个图表的数据必须是有效的数字数组,不能包含null、undefined或非数字值\n\n" + + "数据内容:\n%s\n\n" + + "请根据数据内容生成包含固定9个图表的完整HTML代码。特别注意:必须生成所有9个图表的完整JavaScript代码,不能有任何截断!", + regionName, dataContent + ); + } + + /** + * 保存HTML内容到文件 + * @param htmlContent HTML内容 + * @param outputPath 输出文件路径 + */ + public void saveHtmlContent(String htmlContent, String outputPath) { + try { + // 清理HTML内容 + htmlContent = cleanHtmlContent(htmlContent); + + // 保存HTML文件 + try (FileWriter writer = new FileWriter(outputPath, StandardCharsets.UTF_8)) { + writer.write(htmlContent); + } + System.out.println("HTML文件保存成功: " + outputPath); + } catch (IOException e) { + System.err.println("保存HTML文件时出错: " + e.getMessage()); + e.printStackTrace(); + throw new RuntimeException("保存HTML文件失败", e); + } + } + + /** + * 清理HTML内容 + */ + private static String cleanHtmlContent(String htmlContent) { + // 移除可能的markdown代码块标记 + htmlContent = htmlContent.replaceAll("```html\\s*", ""); + htmlContent = htmlContent.replaceAll("```\\s*$", ""); + htmlContent = htmlContent.replaceAll("^```\\s*", ""); + + // 移除DeepSeek可能添加的说明文本 + htmlContent = htmlContent.replaceAll("Here's the complete HTML report.*?:", ""); + htmlContent = htmlContent.replaceAll("Here's.*?HTML.*?:", ""); + htmlContent = htmlContent.replaceAll("以下是.*?HTML.*?:", ""); + + // 查找真正的HTML文档开始位置 + int doctypeIndex = htmlContent.toLowerCase().indexOf(""); + int htmlIndex = htmlContent.toLowerCase().indexOf("开始截取 + htmlContent = htmlContent.substring(doctypeIndex); + } else if (htmlIndex != -1) { + // 从\n"; + } + + // 移除可能存在的重复DOCTYPE和html标签 + htmlContent = htmlContent.replaceAll("(?i)\\s*", ""); + htmlContent = htmlContent.replaceAll("(?i)]*>\\s*]*>", ""); + + return htmlContent.trim(); + } +} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/AI/Generator/PptGenerator.java b/src/main/java/com/dsideal/base/AI/Generator/PptGenerator.java new file mode 100644 index 00000000..d46b61b0 --- /dev/null +++ b/src/main/java/com/dsideal/base/AI/Generator/PptGenerator.java @@ -0,0 +1,160 @@ +package com.dsideal.base.AI.Generator; + +import com.alibaba.fastjson.JSONObject; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; + +/** + * PPT生成器 - 负责生成分析报告的PPT演示文稿 + */ +public class PptGenerator { + + private static final String PPT_API_URL = "https://open.docmee.cn/api/ppt/generatePptx"; + + /** + * 构建PPT提示词 + * @param dataContent 数据内容 + * @param regionName 地区名称 + * @return PPT生成提示词 + */ + public static String buildPptPrompt(String dataContent, String regionName) { + return String.format( + "请根据以下数据内容,生成一个适合制作PPT的大纲,要求:\n\n" + + "1. 生成标准的Markdown格式大纲,用于PPT制作\n" + + "2. 大纲应该包含清晰的章节结构,每个章节都有明确的标题\n" + + "3. 每个章节下应该有3-5个要点,适合在PPT幻灯片中展示\n" + + "4. 重点突出数据对比和分析结论\n" + + "5. 大纲应该逻辑清晰,便于制作专业的演示文稿\n" + + "6. 包含以下主要部分:\n" + + " - 概述与背景\n" + + " - 数据对比分析\n" + + " - 关键发现\n" + + " - 结论与建议\n\n" + + "地区:%s\n\n" + + "数据内容:\n%s", + regionName, dataContent + ); + } + + /** + * 直接从Markdown内容生成PPT(不调用DeepSeek) + * @param markdownContent PPT大纲的Markdown内容(由DeepSeek生成) + * @param token API访问令牌 + * @return PPT文件下载URL + */ + public static String generatePptFromMarkdown(String markdownContent, String token) { + try { + // 直接使用传入的markdown内容调用docmee API生成PPT + String pptFileUrl = callDocmeeApi(markdownContent, token); + + if (pptFileUrl != null && !pptFileUrl.trim().isEmpty()) { + System.out.println("PPT生成成功!"); + System.out.println("PPT文件下载地址: " + pptFileUrl); + return pptFileUrl; + } else { + System.err.println("PPT生成失败"); + return null; + } + + } catch (Exception e) { + System.err.println("生成PPT时出错: " + e.getMessage()); + e.printStackTrace(); + return null; + } + } + + + /** + * 调用docmee API生成PPT + * @param markdownContent Markdown内容 + * @param token API令牌 + * @return PPT文件下载URL + */ + private static String callDocmeeApi(String markdownContent, String token) { + try { + URL url = new URL(PPT_API_URL); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + + // 设置请求方法和头部 + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("token", token); + connection.setDoOutput(true); + + // 构建请求体 + JSONObject requestBody = new JSONObject(); + requestBody.put("outlineContentMarkdown", markdownContent); + requestBody.put("pptxProperty", false); // 不返回PPT数据结构 + // templateId 和 notes 为非必填,可以根据需要添加 + + // 发送请求 + try (OutputStream os = connection.getOutputStream()) { + byte[] input = requestBody.toJSONString().getBytes(StandardCharsets.UTF_8); + os.write(input, 0, input.length); + } + + // 读取响应 + int responseCode = connection.getResponseCode(); + System.out.println("API响应状态码: " + responseCode); + + if (responseCode >= 200 && responseCode < 300) { + StringBuilder response = new StringBuilder(); + + try (BufferedReader br = new BufferedReader( + new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8))) { + String line; + while ((line = br.readLine()) != null) { + response.append(line); + } + } + + // 解析响应JSON + JSONObject responseJson = JSONObject.parseObject(response.toString()); + + if (responseJson.getIntValue("code") == 0) { + JSONObject data = responseJson.getJSONObject("data"); + if (data != null) { + JSONObject pptInfo = data.getJSONObject("pptInfo"); + if (pptInfo != null) { + String fileUrl = pptInfo.getString("fileUrl"); + String coverUrl = pptInfo.getString("coverUrl"); + String pptId = pptInfo.getString("id"); + + System.out.println("PPT ID: " + pptId); + System.out.println("PPT封面: " + coverUrl); + + return fileUrl; + } + } + } else { + System.err.println("API返回错误: " + responseJson.getString("message")); + } + + return null; + } else { + // 读取错误响应 + StringBuilder errorResponse = new StringBuilder(); + try (BufferedReader br = new BufferedReader( + new InputStreamReader(connection.getErrorStream(), StandardCharsets.UTF_8))) { + String line; + while ((line = br.readLine()) != null) { + errorResponse.append(line); + } + } + + System.err.println("API调用失败,状态码: " + responseCode); + System.err.println("错误信息: " + errorResponse.toString()); + return null; + } + + } catch (Exception e) { + System.err.println("调用docmee API时出错: " + e.getMessage()); + e.printStackTrace(); + return null; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/AI/Generator/WordGenerator.java b/src/main/java/com/dsideal/base/AI/Generator/WordGenerator.java new file mode 100644 index 00000000..fed6fd68 --- /dev/null +++ b/src/main/java/com/dsideal/base/AI/Generator/WordGenerator.java @@ -0,0 +1,421 @@ +package com.dsideal.base.AI.Generator; + +import org.apache.poi.xwpf.usermodel.XWPFDocument; +import org.apache.poi.xwpf.usermodel.XWPFParagraph; +import org.apache.poi.xwpf.usermodel.XWPFRun; +import org.apache.poi.xwpf.usermodel.ParagraphAlignment; +import org.apache.poi.xwpf.usermodel.XWPFTable; +import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.apache.poi.xwpf.usermodel.XWPFTableCell; +import org.commonmark.node.*; +import org.commonmark.parser.Parser; +import org.commonmark.ext.gfm.tables.TablesExtension; +import org.commonmark.ext.heading.anchor.HeadingAnchorExtension; + +import java.io.File; +import java.io.FileOutputStream; +import java.text.SimpleDateFormat; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * Word文档生成器 - 负责生成分析报告的Word文档 + */ +public class WordGenerator { + + + /** + * 生成Word分析报告 + * @param analysisResult AI分析结果 + * @param fileName 文件名(不包含路径) + * @param regions 对比地区 + * @throws Exception 文件操作异常 + */ + public static void generateWordDocument(String analysisResult, String fileName, String[] regions) throws Exception { + XWPFDocument document = new XWPFDocument(); + try { + // 动态生成标题 + String reportTitle = generateReportTitle(regions); + + // 添加文档标题 + addDocumentTitle(document, reportTitle); + + // 添加文档信息 + addDocumentInfo(document); + + // 添加分析内容 + addAnalysisContent(document, analysisResult); + + // 添加文档结尾 + addDocumentFooter(document); + + // 保存文档 + try (FileOutputStream out = new FileOutputStream(fileName)) { + document.write(out); + } + + } finally { + document.close(); + } + } + + /** + * 生成报告标题 + */ + private static String generateReportTitle(String[] regions) { + if (regions != null && regions.length >= 2) { + return String.join("与", regions) + "教育资源配置对比分析报告"; + } else { + return "教育资源配置对比分析报告"; + } + } + + /** + * 添加文档标题 + */ + private static void addDocumentTitle(XWPFDocument document, String title) { + XWPFParagraph titleParagraph = document.createParagraph(); + titleParagraph.setAlignment(ParagraphAlignment.CENTER); + XWPFRun titleRun = titleParagraph.createRun(); + titleRun.setText(title); + titleRun.setBold(true); + titleRun.setFontSize(18); + titleRun.setFontFamily("宋体"); + + // 添加空行 + document.createParagraph(); + } + + /** + * 添加文档信息 + */ + private static void addDocumentInfo(XWPFDocument document) { + XWPFParagraph infoParagraph = document.createParagraph(); + XWPFRun infoRun = infoParagraph.createRun(); + infoRun.setText("生成时间:" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date())); + infoRun.setFontSize(12); + infoRun.setFontFamily("宋体"); + + XWPFRun toolRun = infoParagraph.createRun(); + toolRun.addBreak(); + toolRun.setText("分析工具:DeepSeek AI"); + toolRun.setFontSize(12); + toolRun.setFontFamily("宋体"); + + // 添加分隔线 + XWPFParagraph separatorParagraph = document.createParagraph(); + XWPFRun separatorRun = separatorParagraph.createRun(); + separatorRun.setText("=".repeat(50)); + separatorRun.setFontSize(10); + + // 添加空行 + document.createParagraph(); + } + + /** + * 添加分析内容 - 使用CommonMark解析Markdown + */ + private static void addAnalysisContent(XWPFDocument document, String analysisResult) { + // 创建CommonMark解析器,支持表格和标题锚点扩展 + List extensions = Arrays.asList( + TablesExtension.create(), + HeadingAnchorExtension.create() + ); + Parser parser = Parser.builder().extensions(extensions).build(); + + // 解析Markdown文档 + Node markdownDoc = parser.parse(analysisResult); + + // 遍历并处理所有节点 + processMarkdownNode(document, markdownDoc); + } + + /** + * 处理Markdown节点并转换为Word格式 + */ + private static void processMarkdownNode(XWPFDocument document, Node node) { + Node child = node.getFirstChild(); + while (child != null) { + if (child instanceof Heading) { + processHeading(document, (Heading) child); + } else if (child instanceof Paragraph) { + processParagraph(document, (Paragraph) child); + } else if (child instanceof BulletList) { + processBulletList(document, (BulletList) child); + } else if (child instanceof OrderedList) { + processOrderedList(document, (OrderedList) child); + } else if (child instanceof org.commonmark.ext.gfm.tables.TableBlock) { + processTable(document, (org.commonmark.ext.gfm.tables.TableBlock) child); + } else if (child instanceof BlockQuote) { + processBlockQuote(document, (BlockQuote) child); + } else if (child instanceof FencedCodeBlock || child instanceof IndentedCodeBlock) { + processCodeBlock(document, child); + } + child = child.getNext(); + } + } + + /** + * 处理标题 + */ + private static void processHeading(XWPFDocument document, Heading heading) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + + String text = getTextContent(heading); + run.setText(text); + run.setBold(true); + run.setFontFamily("宋体"); + + // 根据标题级别设置字体大小 + switch (heading.getLevel()) { + case 1: + run.setFontSize(18); + paragraph.setAlignment(ParagraphAlignment.CENTER); + break; + case 2: + run.setFontSize(16); + break; + case 3: + run.setFontSize(14); + break; + case 4: + run.setFontSize(13); + break; + default: + run.setFontSize(12); + break; + } + } + + /** + * 处理段落 + */ + private static void processParagraph(XWPFDocument document, Paragraph para) { + XWPFParagraph paragraph = document.createParagraph(); + processInlineNodes(paragraph, para.getFirstChild()); + } + + /** + * 处理无序列表 + */ + private static void processBulletList(XWPFDocument document, BulletList bulletList) { + Node listItem = bulletList.getFirstChild(); + while (listItem != null) { + if (listItem instanceof ListItem) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText("• " + getTextContent(listItem)); + run.setFontSize(12); + run.setFontFamily("宋体"); + } + listItem = listItem.getNext(); + } + } + + /** + * 处理有序列表 + */ + private static void processOrderedList(XWPFDocument document, OrderedList orderedList) { + Node listItem = orderedList.getFirstChild(); + int counter = orderedList.getStartNumber(); + while (listItem != null) { + if (listItem instanceof ListItem) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText(counter + ". " + getTextContent(listItem)); + run.setFontSize(12); + run.setFontFamily("宋体"); + counter++; + } + listItem = listItem.getNext(); + } + } + + /** + * 处理表格 + */ + private static void processTable(XWPFDocument document, org.commonmark.ext.gfm.tables.TableBlock table) { + // 计算表格列数 + int cols = 0; + Node firstRow = table.getFirstChild(); + if (firstRow instanceof org.commonmark.ext.gfm.tables.TableHead) { + Node headerRow = firstRow.getFirstChild(); + if (headerRow instanceof org.commonmark.ext.gfm.tables.TableRow) { + Node cell = headerRow.getFirstChild(); + while (cell != null) { + cols++; + cell = cell.getNext(); + } + } + } + + if (cols > 0) { + XWPFTable wordTable = document.createTable(); + + Node tableChild = table.getFirstChild(); + boolean isFirstRow = true; + while (tableChild != null) { + if (tableChild instanceof org.commonmark.ext.gfm.tables.TableHead || + tableChild instanceof org.commonmark.ext.gfm.tables.TableBody) { + + Node rowNode = tableChild.getFirstChild(); + while (rowNode != null) { + if (rowNode instanceof org.commonmark.ext.gfm.tables.TableRow) { + XWPFTableRow row; + if (isFirstRow) { + row = wordTable.getRow(0); + isFirstRow = false; + } else { + row = wordTable.createRow(); + } + + Node cellNode = rowNode.getFirstChild(); + int cellIndex = 0; + while (cellNode != null && cellIndex < cols) { + if (cellNode instanceof org.commonmark.ext.gfm.tables.TableCell) { + XWPFTableCell cell = row.getCell(cellIndex); + if (cell == null) { + cell = row.addNewTableCell(); + } + cell.setText(getTextContent(cellNode)); + cellIndex++; + } + cellNode = cellNode.getNext(); + } + } + rowNode = rowNode.getNext(); + } + } + tableChild = tableChild.getNext(); + } + } + } + + /** + * 处理引用块 + */ + private static void processBlockQuote(XWPFDocument document, BlockQuote blockQuote) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + run.setText("" + getTextContent(blockQuote)); + run.setFontSize(12); + run.setFontFamily("宋体"); + run.setItalic(true); + } + + /** + * 处理代码块 + */ + private static void processCodeBlock(XWPFDocument document, Node codeBlock) { + XWPFParagraph paragraph = document.createParagraph(); + XWPFRun run = paragraph.createRun(); + + String code; + if (codeBlock instanceof FencedCodeBlock) { + code = ((FencedCodeBlock) codeBlock).getLiteral(); + } else { + code = ((IndentedCodeBlock) codeBlock).getLiteral(); + } + + run.setText(code); + run.setFontSize(10); + run.setFontFamily("Courier New"); + // 设置背景色(如果支持) + } + + /** + * 处理内联节点(粗体、斜体、链接等) + */ + private static void processInlineNodes(XWPFParagraph paragraph, Node node) { + while (node != null) { + if (node instanceof Text) { + XWPFRun run = paragraph.createRun(); + run.setText(((Text) node).getLiteral()); + run.setFontSize(12); + run.setFontFamily("宋体"); + } else if (node instanceof StrongEmphasis) { + XWPFRun run = paragraph.createRun(); + run.setText(getTextContent(node)); + run.setBold(true); + run.setFontSize(12); + run.setFontFamily("宋体"); + } else if (node instanceof Emphasis) { + XWPFRun run = paragraph.createRun(); + run.setText(getTextContent(node)); + run.setItalic(true); + run.setFontSize(12); + run.setFontFamily("宋体"); + } else if (node instanceof Code) { + XWPFRun run = paragraph.createRun(); + run.setText(((Code) node).getLiteral()); + run.setFontSize(10); + run.setFontFamily("Courier New"); + } else if (node instanceof Link) { + XWPFRun run = paragraph.createRun(); + run.setText(getTextContent(node) + " (" + ((Link) node).getDestination() + ")"); + run.setFontSize(12); + run.setFontFamily("宋体"); + run.setColor("0000FF"); + } else { + // 递归处理子节点 + processInlineNodes(paragraph, node.getFirstChild()); + } + node = node.getNext(); + } + } + + /** + * 获取节点的文本内容 + */ + private static String getTextContent(Node node) { + StringBuilder text = new StringBuilder(); + extractText(node, text); + return text.toString().trim(); + } + + /** + * 递归提取文本内容 + */ + private static void extractText(Node node, StringBuilder text) { + if (node instanceof Text) { + text.append(((Text) node).getLiteral()); + } else if (node instanceof Code) { + text.append(((Code) node).getLiteral()); + } else { + Node child = node.getFirstChild(); + while (child != null) { + extractText(child, text); + child = child.getNext(); + } + } + } + + /** + * 判断是否为标题行 + */ + private static boolean isTitle(String line) { + return line.matches("^\\d+\\..+") || + line.matches("^[一二三四五六七八九十]+、.+") || + line.trim().matches("^(执行摘要|数据概览|详细对比分析|问题识别|建议与对策|结论).*"); + } + + /** + * 添加文档结尾 + */ + private static void addDocumentFooter(XWPFDocument document) { + XWPFParagraph endParagraph = document.createParagraph(); + endParagraph.createRun().addBreak(); + XWPFRun endSeparatorRun = endParagraph.createRun(); + endSeparatorRun.setText("=".repeat(50)); + endSeparatorRun.setFontSize(10); + + XWPFRun endRun = endParagraph.createRun(); + endRun.addBreak(); + endRun.setText("报告结束"); + endRun.setFontSize(12); + endRun.setFontFamily("宋体"); + endRun.setBold(true); + } +} \ No newline at end of file diff --git a/src/main/java/com/dsideal/base/AI/Model/YunNanModel.java b/src/main/java/com/dsideal/base/AI/Model/YunNanModel.java new file mode 100644 index 00000000..4220f457 --- /dev/null +++ b/src/main/java/com/dsideal/base/AI/Model/YunNanModel.java @@ -0,0 +1,64 @@ +package com.dsideal.base.AI.Model; + +import cn.hutool.json.JSONUtil; +import com.dsideal.base.DataEase.Model.DataEaseModel; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Record; + +import java.util.List; + +public class YunNanModel { + /** + * 收集指定地区的教育资源配置数据 + * + * @param regions 要对比的地区数组 + * @return 格式化的数据内容 + */ + public String collectEducationData(String[] regions) { + // 查询教育资源配置发展预测相关表【低于32K】 + String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel_报告-教育资源配置发展预测%';"; + + // 超过32K + //String sql="select table_name as TABLE_NAME from core_dataset_table where dataset_group_id in (select id from core_dataset_group where pid='1036317909951057920')"; + List tableList = Db.use(DataEaseModel.DB_NAME).find(sql); + + StringBuilder dataContent = new StringBuilder(); + + // 构建数据标题 + dataContent.append("教育资源配置发展预测数据对比分析\n\n"); + dataContent.append("对比州市:").append(String.join(" vs ", regions)).append("\n\n"); + + // 遍历所有相关数据表 + for (Record record : tableList) { + String tableName = record.getStr("TABLE_NAME"); + dataContent.append("数据表:").append(tableName).append("\n"); + + // 为每个地区收集数据 + for (String region : regions) { + sql = "select * from `" + tableName + "` where `行政区划`=?"; + List listContent = Db.use(DataEaseModel.DB_NAME).find(sql, region); + + if (!listContent.isEmpty()) { + dataContent.append("\n").append(region).append("数据:\n"); + for (Record dataRecord : listContent) { + dataContent.append(JSONUtil.toJsonPrettyStr(dataRecord.getColumns())).append("\n"); + } + } else { + dataContent.append("\n").append(region).append(":无相关数据\n"); + } + } + dataContent.append("\n----------------------------------------\n\n"); + } + return dataContent.toString(); + } + + /** + * 获取云南省下所有城市名称 + * + * @return + */ + public List getYunNanCity() { + String sql = "select id,area_code,area_name,full_name from t_dm_area where parent_id='FD61813E-70A1-42AB-9A8E-141ED4D47B98'"; + return Db.find(sql); + } +} diff --git a/src/main/java/com/dsideal/base/BaseApplication.java b/src/main/java/com/dsideal/base/BaseApplication.java index 546c688d..a5706c7b 100644 --- a/src/main/java/com/dsideal/base/BaseApplication.java +++ b/src/main/java/com/dsideal/base/BaseApplication.java @@ -1,5 +1,7 @@ package com.dsideal.base; +import com.dsideal.base.AI.Controller.SSEController; +import com.dsideal.base.AI.Controller.AiController; import com.dsideal.base.Base.Controller.BaseController; import com.dsideal.base.Classes.Controller.ClassController; import com.dsideal.base.DataAuthority.Controller.DataAuthorityController; @@ -99,7 +101,12 @@ public class BaseApplication extends JFinalConfig { //资源管理 me.add("/res", ResourceController.class); //云校 - me.add("/yx",YunXiaoController.class); + me.add("/yx", YunXiaoController.class); + //大数据AI + me.add("/ai", AiController.class); + //SSE测试 + me.add("/sse", SSEController.class); + } @Override diff --git a/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java b/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java index 67da9c2b..0758f23a 100644 --- a/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java +++ b/src/main/java/com/dsideal/base/DataEase/Util/Step1_DeleteBigScreen.java @@ -1,6 +1,6 @@ package com.dsideal.base.DataEase.Util; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import static com.dsideal.base.DataEase.Util.Step3_CopyBigScreen.clearScreen; diff --git a/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java b/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java index 40034a3b..7ac97d4f 100644 --- a/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java +++ b/src/main/java/com/dsideal/base/DataEase/Util/Step2_CopyFilter.java @@ -1,11 +1,8 @@ package com.dsideal.base.DataEase.Util; -import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.dsideal.base.Util.CommonUtil; -import com.dsideal.base.Util.FileUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.Kv; import com.jfinal.kit.PathKit; import com.jfinal.plugin.activerecord.Db; diff --git a/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java b/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java index d13cbbf9..9a18deee 100644 --- a/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java +++ b/src/main/java/com/dsideal/base/DataEase/Util/Step3_CopyBigScreen.java @@ -3,7 +3,7 @@ package com.dsideal.base.DataEase.Util; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSONObject; import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.dsideal.base.Util.CommonUtil; import com.dsideal.base.Util.FileUtil; import com.jfinal.kit.PathKit; diff --git a/src/main/java/com/dsideal/base/Test/ChangeCity.java b/src/main/java/com/dsideal/base/Test/ChangeCity.java index e2f9fad5..9332f831 100644 --- a/src/main/java/com/dsideal/base/Test/ChangeCity.java +++ b/src/main/java/com/dsideal/base/Test/ChangeCity.java @@ -3,7 +3,7 @@ package com.dsideal.base.Test; import com.dsideal.base.BaseApplication; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Plugin.YamlProp; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; public class ChangeCity { public static DataEaseModel dm = new DataEaseModel(); diff --git a/src/main/java/com/dsideal/base/Test/FixErrorFill.java b/src/main/java/com/dsideal/base/Test/FixErrorFill.java index 48ec2337..b7957bef 100644 --- a/src/main/java/com/dsideal/base/Test/FixErrorFill.java +++ b/src/main/java/com/dsideal/base/Test/FixErrorFill.java @@ -1,6 +1,6 @@ package com.dsideal.base.Test; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; diff --git a/src/main/java/com/dsideal/base/Test/ReadWordTOC.java b/src/main/java/com/dsideal/base/Test/ReadWordTOC.java index 2fb58bc3..510ef93f 100644 --- a/src/main/java/com/dsideal/base/Test/ReadWordTOC.java +++ b/src/main/java/com/dsideal/base/Test/ReadWordTOC.java @@ -15,7 +15,7 @@ import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import static com.dsideal.base.Tools.FillData.DataEaseKit.DsKit.DocxUnzipDirectory; diff --git a/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java b/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java index 7650472f..7b1c7cc8 100644 --- a/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java +++ b/src/main/java/com/dsideal/base/Test/ReadWordTOCWenZi.java @@ -1,27 +1,11 @@ package com.dsideal.base.Test; -import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.jfinal.kit.StrKit; -import org.apache.commons.io.FileUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; -import org.dom4j.Document; -import org.dom4j.DocumentException; -import org.dom4j.Element; -import org.dom4j.io.SAXReader; -import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; -import java.util.Arrays; import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; - -import static com.dsideal.base.Tools.FillData.DataEaseKit.DsKit.DocxUnzipDirectory; public class ReadWordTOCWenZi { static String filePath = "D:\\dsWork\\YunNanDsBase\\Doc\\县区研究报告\\保山市\\昌宁县人口变化及其对教育的影响.docx"; diff --git a/src/main/java/com/dsideal/base/Tools/AiGenerate.java b/src/main/java/com/dsideal/base/Tools/AiGenerate.java deleted file mode 100644 index c119bc89..00000000 --- a/src/main/java/com/dsideal/base/Tools/AiGenerate.java +++ /dev/null @@ -1,355 +0,0 @@ -package com.dsideal.base.Tools; - -import com.alibaba.fastjson.JSONObject; -import com.dsideal.base.BaseApplication; -import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Plugin.YamlProp; -import com.dsideal.base.Tools.Util.CallDeepSeek; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.dsideal.base.Tools.Util.PptAIKit; -import com.jfinal.plugin.activerecord.Db; -import com.jfinal.plugin.activerecord.Record; -import cn.hutool.json.JSONUtil; -import org.apache.poi.xwpf.usermodel.XWPFDocument; -import org.apache.poi.xwpf.usermodel.XWPFParagraph; -import org.apache.poi.xwpf.usermodel.XWPFRun; -import org.apache.poi.xwpf.usermodel.ParagraphAlignment; - -import java.io.FileOutputStream; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -public class AiGenerate extends PptAIKit { - public static DataEaseModel dm = new DataEaseModel(); - - public static void main(String[] args) { - //加载配置文件 - String configFile = "application.yaml"; - BaseApplication.PropKit = new YamlProp(configFile); - LocalMysqlConnectUtil.Init(); - - // 查询教育资源配置发展预测相关表 - String sql = "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'dataease' AND TABLE_NAME LIKE 'excel_报告-教育资源配置发展预测%';"; - List tableList = Db.find(sql); - - String[] biJiao = new String[]{"文山州", "楚雄州"}; - StringBuilder dataContent = new StringBuilder(); - - // 收集两个州的数据 - dataContent.append("教育资源配置发展预测数据对比分析\n\n"); - dataContent.append("对比州市:").append(String.join(" vs ", biJiao)).append("\n\n"); - - for (Record record : tableList) { - String tableName = record.getStr("TABLE_NAME"); - dataContent.append("数据表:").append(tableName).append("\n"); - - for (int j = 0; j < biJiao.length; j++) { - sql = "select * from `" + tableName + "` where `行政区划`=?"; - List listContent = Db.use(DataEaseModel.DB_NAME).find(sql, biJiao[j]); - - if (!listContent.isEmpty()) { - dataContent.append("\n").append(biJiao[j]).append("数据:\n"); - for (Record dataRecord : listContent) { - dataContent.append(JSONUtil.toJsonPrettyStr(dataRecord.getColumns())).append("\n"); - } - } else { - dataContent.append("\n").append(biJiao[j]).append(":无相关数据\n"); - } - } - dataContent.append("\n----------------------------------------\n\n"); - } - - // 构建分析提示词 - String analysisPrompt = createAnalysisPrompt(dataContent.toString()); - - - // 生成输出文件路径 - String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); - String outputPath = "教育资源对比分析报告_" + timestamp + ".docx"; - System.out.println("开始调用DeepSeek进行数据分析..."); - - // 调用DeepSeek进行分析 - CallDeepSeek.callDeepSeekStream(analysisPrompt, new CallDeepSeek.SSEListener() { - private StringBuilder fullResponse = new StringBuilder(); - - @Override - public void onData(String data) { - System.out.print(data); - System.out.flush(); - fullResponse.append(data); - } - - @Override - public void onComplete(String response) { - System.out.println("\n\n=== Word文档分析完成 ==="); - - try { - // 使用Apache POI生成Word文档 - generateWordDocument(fullResponse.toString(), outputPath, biJiao); - System.out.println("Word分析报告已保存到: " + outputPath); - - // 生成PPT - // 生成PPT - System.out.println("\n\n=== 开始生成PPT ==="); - generatePptPresentation(analysisPrompt, biJiao); - - } catch (Exception e) { - System.err.println("保存文件时出错: " + e.getMessage()); - e.printStackTrace(); - } - } - - @Override - public void onError(String error) { - System.err.println("DeepSeek分析出错: " + error); - } - }); - } - - /** - * 创建PPT生成提示词 - */ - private static String createPptPrompt(String dataContent, String[] cities) { - try { - // 构建给 DeepSeek 的精简提示词 - String deepseekPrompt = "你是一位专业的教育数据分析专家,请将以下教育资源配置数据进行精简总结," + - "提取关键信息和对比要点,控制在300字以内,重点突出" + String.join("与", cities) + "的对比差异:\n\n" + - dataContent; - - System.out.println("正在调用 DeepSeek 精简数据..."); - - // 调用 DeepSeek 获取精简内容 - String simplifiedContent = CallDeepSeek.callDeepSeek(deepseekPrompt); - - if (simplifiedContent != null && !simplifiedContent.trim().isEmpty()) { - System.out.println("DeepSeek 精简完成,精简后长度: " + simplifiedContent.length()); - - // 使用精简后的内容构建 PPT 提示词 - return "请基于以下教育资源配置数据,为" + String.join("与", cities) + - "教育资源配置对比分析创建一个专业的PPT大纲。\n\n" + - "PPT应包含以下主要部分:\n" + - "1. 封面 - 标题和基本信息\n" + - "2. 目录 - 分析框架\n" + - "3. 数据概览 - 关键指标对比\n" + - "4. 详细分析 - 各维度深入对比\n" + - "5. 问题识别 - 存在的主要问题\n" + - "6. 建议方案 - 改进措施\n" + - "7. 总结 - 结论和展望\n\n" + - "请确保内容简洁明了,适合PPT展示。\n\n" + - "=== 精简后的关键数据 ===\n" + simplifiedContent; - } else { - System.out.println("DeepSeek 调用失败,使用基础提示词"); - return createBasicPptPrompt(cities); - } - - } catch (Exception e) { - System.err.println("调用 DeepSeek 精简数据时出错: " + e.getMessage()); - e.printStackTrace(); - // 如果 DeepSeek 调用失败,返回基础提示词 - return createBasicPptPrompt(cities); - } - } - - /** - * 创建基础PPT提示词(作为备用方案) - */ - private static String createBasicPptPrompt(String[] cities) { - return "请为" + String.join("与", cities) + - "教育资源配置对比分析创建一个专业的PPT大纲。\n\n" + - "PPT应包含以下主要部分:\n" + - "1. 封面 - 标题和基本信息\n" + - "2. 目录 - 分析框架\n" + - "3. 数据概览 - 关键指标对比\n" + - "4. 详细分析 - 各维度深入对比\n" + - "5. 问题识别 - 存在的主要问题\n" + - "6. 建议方案 - 改进措施\n" + - "7. 总结 - 结论和展望\n\n" + - "请基于教育资源配置的一般分析框架,重点关注对比分析结果。"; - } - - /** - * 生成PPT演示文稿 - */ - private static void generatePptPresentation(String analysisContent, String[] biJiao) { - try { - String uid = "test"; - // 第一步:使用DeepSeek生成简化的PPT提示词 - String simplifiedPptPrompt = createPptPrompt(analysisContent, biJiao); - - // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效) - String apiToken = PptAIKit.createApiToken(uid, null); - System.out.println("api token: " + apiToken); - - // 生成大纲 - System.out.println("\n\n========== 正在生成大纲 =========="); - System.out.println(simplifiedPptPrompt.length()); - System.out.println(simplifiedPptPrompt); - String outline = PptAIKit.generateOutline(apiToken, null, null, simplifiedPptPrompt); - - // 生成大纲内容 - System.out.println("\n\n========== 正在生成大纲内容 =========="); - String markdown = PptAIKit.generateContent(apiToken, outline, null, simplifiedPptPrompt); - - // 随机一个模板 - System.out.println("\n\n========== 随机选择模板 =========="); - String templateId = PptAIKit.randomOneTemplateId(apiToken); - System.out.println(templateId); - - // 生成PPT - System.out.println("\n\n========== 正在生成PPT =========="); - JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false); - String pptId = pptInfo.getString("id"); - System.out.println("pptId: " + pptId); - System.out.println("ppt主题:" + pptInfo.getString("subject")); - System.out.println("ppt封面:" + pptInfo.getString("coverUrl") + "?token=" + apiToken); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 创建分析提示词 - */ - private static String createAnalysisPrompt(String dataContent) { - return "你是一位专业的教育数据分析专家,请基于以下数据对文山州和楚雄州的教育资源配置情况进行深入对比分析。\n\n" + - "重要要求:请生成结构化的纯文本格式报告,使用清晰的段落结构,不要使用markdown语法。\n\n" + - "请按照以下结构进行分析并生成专业的分析报告:\n\n" + - "1. 执行摘要\n" + - " 简要概述两州教育资源配置的整体情况和主要发现\n\n" + - "2. 数据概览\n" + - " 两州基本教育数据对比和关键指标汇总\n\n" + - "3. 详细对比分析\n" + - " 教育资源配置水平对比、发展趋势分析、优势与不足分析\n\n" + - "4. 问题识别\n" + - " 存在的主要问题和资源配置不均衡情况\n\n" + - "5. 建议与对策\n" + - " 针对性改进建议和资源优化配置方案\n\n" + - "6. 结论\n" + - " 总体评价和未来发展方向\n\n" + - "请确保分析客观、专业,数据引用准确,建议具有可操作性。\n\n" + - "=== 原始数据 ===\n" + dataContent; - } - - /** - * 使用Apache POI生成Word文档 - */ - private static void generateWordDocument(String analysisResult, String outputPath, String[] cities) throws Exception { - XWPFDocument document = new XWPFDocument(); - - try { - // 动态生成标题 - String reportTitle; - if (cities != null && cities.length >= 2) { - reportTitle = String.join("与", cities) + "教育资源配置对比分析报告"; - } else { - reportTitle = "教育资源配置对比分析报告"; // 默认标题 - } - - // 添加标题 - XWPFParagraph titleParagraph = document.createParagraph(); - titleParagraph.setAlignment(ParagraphAlignment.CENTER); - XWPFRun titleRun = titleParagraph.createRun(); - titleRun.setText(reportTitle); - titleRun.setBold(true); - titleRun.setFontSize(18); - titleRun.setFontFamily("宋体"); - - // 添加空行 - document.createParagraph(); - - // 添加生成信息 - XWPFParagraph infoParagraph = document.createParagraph(); - XWPFRun infoRun = infoParagraph.createRun(); - infoRun.setText("生成时间:" + new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss").format(new Date())); - infoRun.setFontSize(12); - infoRun.setFontFamily("宋体"); - - XWPFRun toolRun = infoParagraph.createRun(); - toolRun.addBreak(); - toolRun.setText("分析工具:DeepSeek AI"); - toolRun.setFontSize(12); - toolRun.setFontFamily("宋体"); - - // 添加分隔线 - XWPFParagraph separatorParagraph = document.createParagraph(); - XWPFRun separatorRun = separatorParagraph.createRun(); - separatorRun.setText("=".repeat(50)); - separatorRun.setFontSize(10); - - // 添加空行 - document.createParagraph(); - - // 处理分析内容 - String[] lines = analysisResult.split("\n"); - XWPFParagraph currentParagraph = null; - XWPFRun currentRun = null; - - for (String line : lines) { - if (line.trim().isEmpty()) { - // 空行,创建新段落 - document.createParagraph(); - currentParagraph = null; - currentRun = null; - } else { - // 检查是否是标题行(数字开头或特殊格式) - boolean isTitle = line.matches("^\\d+\\..+") || - line.matches("^[一二三四五六七八九十]+、.+") || - line.trim().matches("^(执行摘要|数据概览|详细对比分析|问题识别|建议与对策|结论).*"); - - if (currentParagraph == null) { - currentParagraph = document.createParagraph(); - currentRun = currentParagraph.createRun(); - currentRun.setFontFamily("宋体"); - currentRun.setFontSize(12); - } - - if (isTitle) { - // 如果当前段落已有内容,创建新段落 - String currentText = currentRun.getText(0); - if (currentText != null && !currentText.isEmpty()) { - currentParagraph = document.createParagraph(); - currentRun = currentParagraph.createRun(); - currentRun.setFontFamily("宋体"); - } - currentRun.setText(line); - currentRun.setBold(true); - currentRun.setFontSize(14); - currentParagraph = null; // 强制下一行创建新段落 - currentRun = null; - } else { - // 普通内容 - String currentText = currentRun.getText(0); - if (currentText != null && !currentText.isEmpty()) { - currentRun.addBreak(); - } - currentRun.setText(line); - currentRun.setFontSize(12); - } - } - } - - // 添加结尾 - XWPFParagraph endParagraph = document.createParagraph(); - endParagraph.createRun().addBreak(); - XWPFRun endSeparatorRun = endParagraph.createRun(); - endSeparatorRun.setText("=".repeat(50)); - endSeparatorRun.setFontSize(10); - - XWPFRun endRun = endParagraph.createRun(); - endRun.addBreak(); - endRun.setText("报告结束"); - endRun.setFontSize(12); - endRun.setFontFamily("宋体"); - endRun.setBold(true); - - // 保存文档 - try (FileOutputStream out = new FileOutputStream(outputPath)) { - document.write(out); - } - - } finally { - document.close(); - } - } -} diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo1.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo1.java deleted file mode 100644 index f0a1b681..00000000 --- a/src/main/java/com/dsideal/base/Tools/AiPptDemo1.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.dsideal.base.Tools; - -import com.alibaba.fastjson.JSONObject; -import com.dsideal.base.Tools.Util.HttpUtils; -import com.dsideal.base.Tools.Util.PptAIKit; - -import javax.swing.filechooser.FileSystemView; -import java.io.File; - -/** - * 同步流式生成 PPT - * - * @author veasion - * @date 2024/7/12 - */ -public class AiPptDemo1 extends PptAIKit { - - public static void main(String[] args) throws Exception { - // 第三方用户ID(数据隔离) - String uid = "test"; - String subject = "AI未来的发展"; - - // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效) - String apiToken = PptAIKit.createApiToken(uid, null); - System.out.println("api token: " + apiToken); - - // 生成大纲 - System.out.println("\n\n========== 正在生成大纲 =========="); - String outline = PptAIKit.generateOutline(apiToken, subject, null, null); - - // 生成大纲内容 - System.out.println("\n\n========== 正在生成大纲内容 =========="); - String markdown = PptAIKit.generateContent(apiToken, outline, null, null); - - // 随机一个模板 - System.out.println("\n\n========== 随机选择模板 =========="); - String templateId = PptAIKit.randomOneTemplateId(apiToken); - System.out.println(templateId); - - // 生成PPT - System.out.println("\n\n========== 正在生成PPT =========="); - JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false); - String pptId = pptInfo.getString("id"); - System.out.println("pptId: " + pptId); - System.out.println("ppt主题:" + pptInfo.getString("subject")); - System.out.println("ppt封面:" + pptInfo.getString("coverUrl") + "?token=" + apiToken); - - // 下载PPT到桌面 - System.out.println("\n\n========== 正在下载PPT =========="); - JSONObject result = PptAIKit.downloadPptx(apiToken, pptId); - String url = result.getString("fileUrl"); - System.out.println("ppt链接:" + url); - String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx"; - HttpUtils.download(url, new File(savePath)); - System.out.println("ppt下载完成,保存路径:" + savePath); - } -} diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo2.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo2.java deleted file mode 100644 index eef46636..00000000 --- a/src/main/java/com/dsideal/base/Tools/AiPptDemo2.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.dsideal.base.Tools; - -import com.alibaba.fastjson.JSONObject; -import com.dsideal.base.Tools.Util.HttpUtils; -import com.dsideal.base.Tools.Util.PptAIKit; - -import javax.swing.filechooser.FileSystemView; -import java.io.File; -import java.util.Map; - -/** - * 异步流式生成 PPT - * - * @author veasion - * @date 2024/7/12 - */ -public class AiPptDemo2 extends PptAIKit { - public static void main(String[] args) throws Exception { - // 第三方用户ID(数据隔离) - String uid = "test"; - // 文档文件,支持 word/excel/ppt/md/txt/pdf 等类型 - File file = new File("README.md"); - - // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效) - String apiToken = PptAIKit.createApiToken(uid, null); - System.out.println("apiToken: " + apiToken); - - // 解析文件 - String dataUrl = PptAIKit.parseFileData(apiToken, file, null, null); - - // 生成大纲 - System.out.println("\n\n========== 正在生成大纲 =========="); - String outline = PptAIKit.generateOutline(apiToken, null, dataUrl, null); - - // 异步生成大纲内容 - System.out.println("\n\n========== 正在异步生成大纲内容 =========="); - Map pptInfo = PptAIKit.asyncGenerateContent(apiToken, outline, dataUrl, null, null); - - String pptId = pptInfo.get("id"); - - // 下载PPT到桌面 - System.out.println("\n\n========== 正在下载PPT =========="); - System.out.println("pptId: " + pptId); - String url = null; - for (int i = 0; i < 30; i++) { - // 等待PPT文件可下载 - JSONObject result = PptAIKit.downloadPptx(apiToken, pptId); - if (result != null) { - url = result.getString("fileUrl"); - if (url != null) { - break; - } - } - Thread.sleep(1000); - } - System.out.println("ppt链接:" + url); - String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx"; - HttpUtils.download(url, new File(savePath)); - System.out.println("ppt下载完成,保存路径:" + savePath); - } - -} diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo3.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo3.java deleted file mode 100644 index 76785699..00000000 --- a/src/main/java/com/dsideal/base/Tools/AiPptDemo3.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.dsideal.base.Tools; - -import com.alibaba.fastjson.JSONObject; -import com.dsideal.base.Tools.Util.HttpUtils; -import com.dsideal.base.Tools.Util.PptAIKit; - -import javax.swing.filechooser.FileSystemView; -import java.io.File; - -/** - * 通过主题直接生成 PPT - * - * @author veasion - * @date 2024/7/12 - */ -public class AiPptDemo3 extends PptAIKit { - - public static void main(String[] args) throws Exception { - // 第三方用户ID(数据隔离) - String uid = "test"; - String subject = "AI未来的发展"; - - // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效) - String apiToken = PptAIKit.createApiToken(uid, null); - System.out.println("apiToken: " + apiToken); - - // 通过主题直接生成PPT - System.out.println("\n正在生成PPT...\n"); - JSONObject pptInfo = PptAIKit.directGeneratePptx(apiToken, true, null, subject, null, null, false); - - String pptId = pptInfo.getString("id"); - String fileUrl = pptInfo.getString("fileUrl"); - System.out.println("\n\n==============="); - System.out.println("pptId: " + pptId); - System.out.println("ppt主题:" + pptInfo.getString("subject")); - System.out.println("ppt封面:" + pptInfo.getString("coverUrl")); - System.out.println("ppt链接:" + fileUrl); - - // 下载PPT到桌面 - String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx"; - HttpUtils.download(fileUrl, new File(savePath)); - System.out.println("ppt下载完成,保存路径:" + savePath); - } - -} diff --git a/src/main/java/com/dsideal/base/Tools/AiPptDemo4.java b/src/main/java/com/dsideal/base/Tools/AiPptDemo4.java deleted file mode 100644 index b35b5a70..00000000 --- a/src/main/java/com/dsideal/base/Tools/AiPptDemo4.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.dsideal.base.Tools; - -import com.alibaba.fastjson.JSONObject; -import com.dsideal.base.Tools.Util.HttpUtils; -import com.dsideal.base.Tools.Util.PptAIKit; - -import javax.swing.filechooser.FileSystemView; -import java.io.File; - -/** - * 通过文件直接生成 PPT - * - * @author veasion - * @date 2024/7/12 - */ -public class AiPptDemo4 { - - public static void main(String[] args) throws Exception { - // 第三方用户ID(数据隔离) - String uid = "test"; - // 文档文件,支持 word/excel/ppt/md/txt/pdf 等类型 - File file = new File("README.md"); - - // 创建 api token (有效期2小时,建议缓存到redis,同一个 uid 创建时之前的 token 会在10秒内失效) - String apiToken = PptAIKit.createApiToken( uid, null); - System.out.println("apiToken: " + apiToken); - - // 解析文件 - String dataUrl = PptAIKit.parseFileData(apiToken, file, null, null); - - // 通过文件直接生成PPT - System.out.println("\n正在生成PPT...\n"); - JSONObject pptInfo = PptAIKit.directGeneratePptx(apiToken, true, null, null, dataUrl, null, false); - - String pptId = pptInfo.getString("id"); - String fileUrl = pptInfo.getString("fileUrl"); - System.out.println("\n\n==============="); - System.out.println("pptId: " + pptId); - System.out.println("ppt主题:" + pptInfo.getString("subject")); - System.out.println("ppt封面:" + pptInfo.getString("coverUrl")); - System.out.println("ppt链接:" + fileUrl); - - // 下载PPT到桌面 - String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx"; - HttpUtils.download(fileUrl, new File(savePath)); - System.out.println("ppt下载完成,保存路径:" + savePath); - } - -} diff --git a/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java b/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java index c3b3abda..7d1bc81d 100644 --- a/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java +++ b/src/main/java/com/dsideal/base/Tools/ChangeCityMap.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.dsideal.base.BaseApplication; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Plugin.YamlProp; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; diff --git a/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java b/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java index 177d937d..5a07c622 100644 --- a/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java +++ b/src/main/java/com/dsideal/base/Tools/DeleteNotUnique.java @@ -1,6 +1,5 @@ package com.dsideal.base.Tools; -import java.sql.SQLOutput; import java.util.List; import java.util.Map; import java.util.HashMap; @@ -8,7 +7,7 @@ import java.util.Set; import java.util.HashSet; import java.util.stream.Collectors; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.Db; diff --git a/src/main/java/com/dsideal/base/Tools/ExportExcel.java b/src/main/java/com/dsideal/base/Tools/ExportExcel.java index ffdcf64e..c04dc47a 100644 --- a/src/main/java/com/dsideal/base/Tools/ExportExcel.java +++ b/src/main/java/com/dsideal/base/Tools/ExportExcel.java @@ -1,6 +1,6 @@ package com.dsideal.base.Tools; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java index 3e5e894e..fe163fd2 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A1.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java index 7e26e1f6..d5b5dd4e 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A10.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java index dd3f0b7b..c73c62bc 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A11.java @@ -1,7 +1,7 @@ package com.dsideal.base.Tools.FillData.Area; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.SqlPara; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java index b4ae07ed..8dfa7d6d 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A12.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java index 800cea29..173df939 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A13.java @@ -12,9 +12,8 @@ import com.alibaba.dashscope.exception.NoApiKeyException; import com.alibaba.dashscope.utils.Constants; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; -import org.apache.commons.io.FileUtils; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -28,14 +27,10 @@ import org.dom4j.io.SAXReader; import java.io.File; import java.io.FileInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; -import java.util.zip.ZipEntry; -import java.util.zip.ZipInputStream; import static com.dsideal.base.Tools.FillData.DataEaseKit.DsKit.DocxUnzipDirectory; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java index 7d335161..fbcad98f 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A15.java @@ -5,7 +5,7 @@ import com.alibaba.dashscope.exception.InputRequiredException; import com.alibaba.dashscope.exception.NoApiKeyException; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java index c692104a..958cb642 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A2.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java index f18642ae..44a91792 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A3.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java index 1a86a766..f1ed2a0a 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A4.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java index 2e1a3cb7..1b9212f8 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A5.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java index 13b3872d..d227ff27 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A6.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java index a8b3e671..6e11d64b 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A7.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java index 02c3aaa1..35c777e9 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A8.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java b/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java index be6e4869..8618f47c 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/Area/A9.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.Area; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java index b8922815..a99774ea 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C1.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java index 5466dbc5..73b74ed5 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C10.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java index 396cf4e1..e3843cfb 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C11.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java index 8c744673..613850c9 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C2.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java index 398e4f31..6874611e 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C3.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import lombok.Getter; import lombok.Setter; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java index e0bbb6ef..d0e37b51 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C4.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import lombok.Getter; import lombok.Setter; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java index 56f7a6db..55f2825d 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C5.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java index c047f24b..8bd98c62 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C6.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java index 93363c1c..31803dd3 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C7.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java index fb1ceef8..d3dd635c 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C8.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java b/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java index ef655b54..b348a767 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/City/C9.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.City; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java index 4d4100f8..9d46eecf 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A1.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java index f627a097..8096fa34 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A10.java @@ -3,8 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; -import com.jfinal.kit.StrKit; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java index f470221a..1d34286f 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A11.java @@ -1,7 +1,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.SqlPara; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java index 2b1989d4..b66f7815 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A12.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java index 55e97c50..77e0ea4a 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A13.java @@ -12,7 +12,7 @@ import com.alibaba.dashscope.exception.NoApiKeyException; import com.alibaba.dashscope.utils.Constants; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java index af6afdc3..51f95a6f 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A15.java @@ -3,9 +3,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; import com.alibaba.dashscope.exception.InputRequiredException; import com.alibaba.dashscope.exception.NoApiKeyException; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFCellStyle; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java index 20aa749d..2a01c93c 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A2.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java index ffc8a40d..b30362db 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A3.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java index f5c9aa81..c222fc6d 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A4.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java index 3d946fe7..14c06525 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A5.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java index e995f375..7feec22e 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A6.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java index d748926f..eb7dd803 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A7.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java index a332e6be..9468f482 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A8.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java index a5d609fd..bd7887ab 100644 --- a/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java +++ b/src/main/java/com/dsideal/base/Tools/FillData/KaiFaArea/A9.java @@ -1,9 +1,8 @@ package com.dsideal.base.Tools.FillData.KaiFaArea; import cn.hutool.core.io.FileUtil; -import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java b/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java index 3be54839..eeec42b4 100644 --- a/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java +++ b/src/main/java/com/dsideal/base/Tools/InitOrgPerson.java @@ -1,14 +1,11 @@ package com.dsideal.base.Tools; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.dsideal.base.Util.CommonUtil; import com.dsideal.base.Util.PkUtil; -import com.dsideal.base.Plugin.YamlProp; import com.jfinal.kit.Prop; -import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; -import com.jfinal.plugin.hikaricp.HikariCpPlugin; import com.jfinal.plugin.redis.RedisPlugin; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java index cf5b2199..d0b58138 100644 --- a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountConfig.java @@ -5,7 +5,7 @@ import cn.idev.excel.FastExcel; import cn.idev.excel.read.builder.ExcelReaderBuilder; import cn.idev.excel.read.metadata.ReadSheet; import com.dsideal.base.Tools.JkyNewData.Util.CloseLogUtil; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; diff --git a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java index 00dbb44f..e90bc059 100644 --- a/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java +++ b/src/main/java/com/dsideal/base/Tools/JkyNewData/SchoolCountSummary.java @@ -1,17 +1,13 @@ package com.dsideal.base.Tools.JkyNewData; import cn.idev.excel.*; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import java.io.File; import java.io.FileNotFoundException; -import java.io.FileReader; import com.dsideal.base.Tools.JkyNewData.Util.CloseLogUtil; import com.dsideal.base.Tools.JkyNewData.Util.ColumnConfig; import com.dsideal.base.Tools.JkyNewData.Util.ExcelUtil; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; diff --git a/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java b/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java index e93259d2..d091f0ab 100644 --- a/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java +++ b/src/main/java/com/dsideal/base/Tools/Step1_DataSetInit.java @@ -1,7 +1,7 @@ package com.dsideal.base.Tools; import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import java.io.IOException; diff --git a/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java b/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java index 8caf9b3c..e05a7fb4 100644 --- a/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java +++ b/src/main/java/com/dsideal/base/Tools/Step2_DataSetAddXzqh.java @@ -1,7 +1,7 @@ package com.dsideal.base.Tools; import com.dsideal.base.DataEase.Model.DataEaseModel; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jcraft.jsch.JSchException; import com.jfinal.plugin.activerecord.Record; diff --git a/src/main/java/com/dsideal/base/Tools/Test/A12.java b/src/main/java/com/dsideal/base/Tools/Test/A12.java index 6426169f..05b608b9 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/A12.java +++ b/src/main/java/com/dsideal/base/Tools/Test/A12.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.Test; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/Test/A8.java b/src/main/java/com/dsideal/base/Tools/Test/A8.java index e40223f1..1158d1e6 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/A8.java +++ b/src/main/java/com/dsideal/base/Tools/Test/A8.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.Test; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/Test/A9.java b/src/main/java/com/dsideal/base/Tools/Test/A9.java index 0905948f..98ba9dad 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/A9.java +++ b/src/main/java/com/dsideal/base/Tools/Test/A9.java @@ -3,7 +3,7 @@ package com.dsideal.base.Tools.Test; import cn.hutool.core.io.FileUtil; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.jfinal.kit.StrKit; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; diff --git a/src/main/java/com/dsideal/base/Tools/Test/C11.java b/src/main/java/com/dsideal/base/Tools/Test/C11.java index 9252337c..37d04f74 100644 --- a/src/main/java/com/dsideal/base/Tools/Test/C11.java +++ b/src/main/java/com/dsideal/base/Tools/Test/C11.java @@ -1,7 +1,7 @@ package com.dsideal.base.Tools.Test; import com.dsideal.base.Tools.FillData.DataEaseKit.DsKit; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.dom4j.DocumentException; diff --git a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java index 50a3811e..9728d71f 100644 --- a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java +++ b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiaoFillData.java @@ -1,6 +1,6 @@ package com.dsideal.base.Tools.YunXiao; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; public class YunXiaoFillData { public static void main(String[] args) { diff --git a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java index 025e3838..f746c272 100644 --- a/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java +++ b/src/main/java/com/dsideal/base/Tools/YunXiao/YunXiao_DataSetInit.java @@ -1,6 +1,6 @@ package com.dsideal.base.Tools.YunXiao; -import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; +import com.dsideal.base.Util.LocalMysqlConnectUtil; import com.dsideal.base.YunXiao.Model.YunXiaoModel; import java.io.IOException; diff --git a/src/main/java/com/dsideal/base/Tools/Util/CallDeepSeek.java b/src/main/java/com/dsideal/base/Util/CallDeepSeek.java similarity index 76% rename from src/main/java/com/dsideal/base/Tools/Util/CallDeepSeek.java rename to src/main/java/com/dsideal/base/Util/CallDeepSeek.java index 66a956fb..fc610ead 100644 --- a/src/main/java/com/dsideal/base/Tools/Util/CallDeepSeek.java +++ b/src/main/java/com/dsideal/base/Util/CallDeepSeek.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Util; +package com.dsideal.base.Util; import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONObject; @@ -39,14 +39,20 @@ public class CallDeepSeek { new Thread(() -> { StringBuilder fullResponse = new StringBuilder(); try { + System.out.println("开始调用DeepSeek API..."); JSONObject jsonPayload = createRequestPayload(prompt); + System.out.println("请求载荷: " + jsonPayload.toString()); + HttpClient client = createHttpClient(); java.net.http.HttpRequest request = createHttpRequest(jsonPayload); + System.out.println("发送HTTP请求到: " + API_URL); CompletableFuture future = client.sendAsync(request, HttpResponse.BodyHandlers.ofLines()) .thenAccept(response -> { + System.out.println("收到响应,状态码: " + response.statusCode()); handleStreamResponse(response, fullResponse, listener, outputPath, saveToFile); }).exceptionally(e -> { + System.err.println("请求异常: " + e.getMessage()); listener.onError("请求或处理异常: " + e.getMessage()); e.printStackTrace(); return null; @@ -54,6 +60,7 @@ public class CallDeepSeek { future.join(); } catch (Exception e) { + System.err.println("发生意外错误: " + e.getMessage()); listener.onError("发生意外错误: " + e.getMessage()); e.printStackTrace(); } @@ -74,6 +81,8 @@ public class CallDeepSeek { messages.add(message); jsonPayload.set("messages", messages); jsonPayload.set("stream", true); + // 设置最大token数,确保能生成完整的HTML内容 + jsonPayload.set("max_tokens", 8000); return jsonPayload; } @@ -107,10 +116,14 @@ public class CallDeepSeek { SSEListener listener, String outputPath, boolean saveToFile) { + System.out.println("处理流式响应,状态码: " + response.statusCode()); if (response.statusCode() == 200) { + System.out.println("开始处理SSE数据流..."); response.body().forEach(line -> { + System.out.println("收到SSE行: " + line); if (line.startsWith("data:")) { String data = line.substring(5).trim(); + System.out.println("解析SSE数据: " + data); if (!data.equals("[DONE]")) { try { JSONObject jsonData = JSONUtil.parseObj(data); @@ -120,26 +133,35 @@ public class CallDeepSeek { .getJSONObject("delta") .getStr("content", ""); if (content != null && !content.isEmpty()) { + System.out.println("提取到内容: " + content); fullResponse.append(content); listener.onData(content); } } } catch (Exception e) { System.err.println("解析SSE JSON数据错误: " + data + " \nError: " + e.getMessage()); + e.printStackTrace(); + } + } else { + System.out.println("收到结束标记 [DONE]"); + // 收到[DONE]标记,流处理完成 + String responseContent = fullResponse.toString(); + System.out.println("流处理完成,总内容长度: " + responseContent.length()); + if (saveToFile && outputPath != null) { + FileUtil.writeString(responseContent, new File(outputPath), "UTF-8"); + listener.onComplete("内容已成功保存到" + outputPath); + System.out.println("内容已成功保存到" + outputPath); + } else { + listener.onComplete(responseContent); } + return; // 提前结束处理 } } }); - // 流结束后的处理 - String responseContent = fullResponse.toString(); - if (saveToFile && outputPath != null) { - FileUtil.writeString(responseContent, new File(outputPath), "UTF-8"); - listener.onComplete("内容已成功保存到" + outputPath); - } else { - listener.onComplete(responseContent); - } + System.out.println("SSE数据流处理结束"); } else { + System.err.println("API请求失败,状态码: " + response.statusCode()); listener.onError("API请求失败: " + response.statusCode() + " Body: " + response.body().toString()); } } diff --git a/src/main/java/com/dsideal/base/Util/CommonUtil.java b/src/main/java/com/dsideal/base/Util/CommonUtil.java index c7bd66b9..3c620525 100644 --- a/src/main/java/com/dsideal/base/Util/CommonUtil.java +++ b/src/main/java/com/dsideal/base/Util/CommonUtil.java @@ -15,6 +15,7 @@ import org.apache.commons.codec.digest.DigestUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.servlet.http.HttpServletRequest; import java.io.*; import java.net.JarURLConnection; import java.net.MalformedURLException; @@ -244,6 +245,26 @@ public class CommonUtil { return result; } + public static String getBaseUrl(HttpServletRequest request) { + // 获取完整的请求URL + + String requestURL = request.getRequestURL().toString(); + // 获取域名 + String serverName = request.getServerName(); + // 获取端口 + int serverPort = request.getServerPort(); + // 获取协议(http或https) + String scheme = request.getScheme(); + + // 拼接完整的基础URL + String baseUrl = scheme + "://" + serverName; + if (("http".equals(scheme) && serverPort != 80) || + ("https".equals(scheme) && serverPort != 443)) { + baseUrl += ":" + serverPort; + } + return baseUrl; + } + /** * 按照layUI格式分页获取数据 * diff --git a/src/main/java/com/dsideal/base/Tools/Util/HttpUtils.java b/src/main/java/com/dsideal/base/Util/HttpUtils.java similarity index 99% rename from src/main/java/com/dsideal/base/Tools/Util/HttpUtils.java rename to src/main/java/com/dsideal/base/Util/HttpUtils.java index a162eeea..038ffaae 100644 --- a/src/main/java/com/dsideal/base/Tools/Util/HttpUtils.java +++ b/src/main/java/com/dsideal/base/Util/HttpUtils.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Util; +package com.dsideal.base.Util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; diff --git a/src/main/java/com/dsideal/base/Tools/Util/LocalMysqlConnectUtil.java b/src/main/java/com/dsideal/base/Util/LocalMysqlConnectUtil.java similarity index 93% rename from src/main/java/com/dsideal/base/Tools/Util/LocalMysqlConnectUtil.java rename to src/main/java/com/dsideal/base/Util/LocalMysqlConnectUtil.java index 00c08771..de2a6b00 100644 --- a/src/main/java/com/dsideal/base/Tools/Util/LocalMysqlConnectUtil.java +++ b/src/main/java/com/dsideal/base/Util/LocalMysqlConnectUtil.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Util; +package com.dsideal.base.Util; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Plugin.YamlProp; @@ -7,7 +7,6 @@ import com.jfinal.kit.Prop; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.druid.DruidPlugin; -import com.jfinal.plugin.hikaricp.HikariCpPlugin; import java.io.File; diff --git a/src/main/java/com/dsideal/base/Tools/Util/PptAIKit.java b/src/main/java/com/dsideal/base/Util/PptAIKit.java similarity index 99% rename from src/main/java/com/dsideal/base/Tools/Util/PptAIKit.java rename to src/main/java/com/dsideal/base/Util/PptAIKit.java index 5b2ce019..a1eba6a9 100644 --- a/src/main/java/com/dsideal/base/Tools/Util/PptAIKit.java +++ b/src/main/java/com/dsideal/base/Util/PptAIKit.java @@ -1,4 +1,4 @@ -package com.dsideal.base.Tools.Util; +package com.dsideal.base.Util; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -20,7 +20,7 @@ import java.util.Objects; */ public class PptAIKit { protected static String BASE_URL = "https://open.docmee.cn"; - protected static String apiKey = "ak_uKoKrRF63333E2lcBq"; + protected static String apiKey = "ak_6LnaVdp3p36vEnOH6X"; public static String createApiToken(String uid, Integer limit) { String url = BASE_URL + "/api/user/createApiToken"; diff --git a/src/main/java/com/dsideal/base/Tools/Util/SshMysqlConnectUtil.java b/src/main/java/com/dsideal/base/Util/SshMysqlConnectUtil.java similarity index 94% rename from src/main/java/com/dsideal/base/Tools/Util/SshMysqlConnectUtil.java rename to src/main/java/com/dsideal/base/Util/SshMysqlConnectUtil.java index f4b3b474..29032946 100644 --- a/src/main/java/com/dsideal/base/Tools/Util/SshMysqlConnectUtil.java +++ b/src/main/java/com/dsideal/base/Util/SshMysqlConnectUtil.java @@ -1,8 +1,7 @@ -package com.dsideal.base.Tools.Util; +package com.dsideal.base.Util; import com.dsideal.base.DataEase.Model.DataEaseModel; import com.dsideal.base.Tools.Step1_DataSetInit; -import com.dsideal.base.Util.SSHConnector; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session; import com.jfinal.plugin.activerecord.ActiveRecordPlugin;