From 325665bc20aa57005cea3a8630825423de11528c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Fri, 10 Jan 2025 08:05:08 +0800 Subject: [PATCH] 'commit' --- .../985dbb6c-8b37-4330-a821-589b57475e08.xlsx | Bin 0 -> 32841 bytes src/main/java/UnitTest/getUndertowPath.java | 16 ++++++ .../MaxKB/Controller/MaxKbController.java | 22 ++++---- .../com/dsideal/QingLong/Util/CommonUtil.java | 3 ++ .../YunXiao/Controller/YunXiaoController.java | 49 ++++++++++++------ src/main/resources/application.properties | 3 -- 6 files changed, 65 insertions(+), 28 deletions(-) create mode 100644 WebRoot/upload/985dbb6c-8b37-4330-a821-589b57475e08.xlsx create mode 100644 src/main/java/UnitTest/getUndertowPath.java diff --git a/WebRoot/upload/985dbb6c-8b37-4330-a821-589b57475e08.xlsx b/WebRoot/upload/985dbb6c-8b37-4330-a821-589b57475e08.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d0fea2a25c22324facd1a4559d1e73df0c664125 GIT binary patch literal 32841 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 BAEf{Q literal 0 HcmV?d00001 diff --git a/src/main/java/UnitTest/getUndertowPath.java b/src/main/java/UnitTest/getUndertowPath.java new file mode 100644 index 00000000..17043716 --- /dev/null +++ b/src/main/java/UnitTest/getUndertowPath.java @@ -0,0 +1,16 @@ +package UnitTest; + +import com.jfinal.kit.PathKit; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Properties; + +public class getUndertowPath { + + + public static void main(String[] args) throws IOException { + } +} diff --git a/src/main/java/com/dsideal/QingLong/MaxKB/Controller/MaxKbController.java b/src/main/java/com/dsideal/QingLong/MaxKB/Controller/MaxKbController.java index 1266cc83..93ece04f 100644 --- a/src/main/java/com/dsideal/QingLong/MaxKB/Controller/MaxKbController.java +++ b/src/main/java/com/dsideal/QingLong/MaxKB/Controller/MaxKbController.java @@ -113,16 +113,20 @@ public class MaxKbController extends Controller { public void exportExcel(String gather_regionc) { List list = mkm.SchoolClassStudentTeacherList(gather_regionc); ExportExcelUtil exporter = new ExportExcelUtil(); - //获取系统临时目录 - String tmpDir = System.getProperty("java.io.tmpdir"); + //使用guid生成一个临时文件名,然后拼接到tmpDir后面,生成完整的临时文件路径 - String tmpFile = tmpDir + File.separator + UUID.randomUUID().toString() + ".xlsx"; - exporter.exportToExcel(tmpFile, list); - //提供下载 - String fileName = "统计报表.xlsx"; - if(!StrKit.isBlank(gather_regionc)){ - fileName = gather_regionc + fileName; + if (!new File(CommonUtil.webUploadPath).exists()) { + //创建目录 + new File(CommonUtil.webUploadPath).mkdirs(); } - renderFile(new File(tmpFile), fileName); + String fileName = UUID.randomUUID() + ".xlsx"; + String tmpFile = CommonUtil.webUploadPath + fileName; + exporter.exportToExcel(tmpFile, list); + //提供文件路径 + Kv kv = Kv.create(); + kv.set("success", true); + kv.set("message", "生成成功!"); + kv.set("url", "/QingLong/upload/" + fileName); + renderJson(kv); } } diff --git a/src/main/java/com/dsideal/QingLong/Util/CommonUtil.java b/src/main/java/com/dsideal/QingLong/Util/CommonUtil.java index fe214b2e..049b1463 100644 --- a/src/main/java/com/dsideal/QingLong/Util/CommonUtil.java +++ b/src/main/java/com/dsideal/QingLong/Util/CommonUtil.java @@ -36,6 +36,9 @@ public class CommonUtil { public static String WebRoot; + //文件上传路径 + public static String webUploadPath = CommonUtil.WebRoot + File.separator + "upload" + File.separator; + /** * 功能:将jsonObject转换为Record * diff --git a/src/main/java/com/dsideal/QingLong/YunXiao/Controller/YunXiaoController.java b/src/main/java/com/dsideal/QingLong/YunXiao/Controller/YunXiaoController.java index 6bd0e520..d911c70a 100644 --- a/src/main/java/com/dsideal/QingLong/YunXiao/Controller/YunXiaoController.java +++ b/src/main/java/com/dsideal/QingLong/YunXiao/Controller/YunXiaoController.java @@ -3,6 +3,7 @@ package com.dsideal.QingLong.YunXiao.Controller; import com.dsideal.QingLong.Interceptor.EmptyInterface; import com.dsideal.QingLong.Interceptor.IsLoginInterface; import com.dsideal.QingLong.Render.ImageRender; +import com.dsideal.QingLong.Util.AsposeUtil; import com.dsideal.QingLong.Util.CommonUtil; import com.dsideal.QingLong.YunXiao.Model.YunXiaoModel; import com.dsideal.QingLong.YunXiao.Util.YunXiaoExportExcelUtil; @@ -11,6 +12,7 @@ import com.jfinal.aop.Before; import com.jfinal.core.Controller; import com.jfinal.ext.interceptor.GET; import com.jfinal.ext.interceptor.POST; +import com.jfinal.kit.Kv; import com.jfinal.plugin.activerecord.Page; import com.jfinal.plugin.activerecord.Record; @@ -86,8 +88,8 @@ public class YunXiaoController extends Controller { */ @Before({POST.class}) @IsLoginInterface({}) - @EmptyInterface({"lesson_id","organization_name","teacher_name"}) - public void saveLessonMatchSchoolName(String lesson_id, String organization_name,String teacher_name) { + @EmptyInterface({"lesson_id", "organization_name", "teacher_name"}) + public void saveLessonMatchSchoolName(String lesson_id, String organization_name, String teacher_name) { //1、获取标准名称的单位,它的单位代码,隶属的区县等信息 Record record = ym.getBzSchoolByName(organization_name); if (record == null) { @@ -97,7 +99,7 @@ public class YunXiaoController extends Controller { String organization_no = record.getStr("organization_no"); String gather_regionc = record.getStr("gather_regionc"); //2、将关系表中,课程id为lesson_id的单位名称修改为organization_name - ym.saveLessonMatchSchoolName(lesson_id, organization_name,teacher_name, organization_no, gather_regionc); + ym.saveLessonMatchSchoolName(lesson_id, organization_name, teacher_name, organization_no, gather_regionc); renderJson(CommonUtil.returnMessageJson(true, "修改成功!")); } @@ -107,40 +109,55 @@ public class YunXiaoController extends Controller { */ // http://10.10.21.20:9000/QingLong/yx/LessonConstructionExportExcel @Before(GET.class) - public void LessonConstructionExportExcel() { + public void LessonConstructionExportExcel() throws Exception { List list1 = ym.LessonConstructionInfoByStageSubject(); List list2 = ym.LessonConstructionInfoByStageSubjectBook(); List list3 = ym.previewRank(); YunXiaoExportExcelUtil exporter = new YunXiaoExportExcelUtil(); - //获取系统临时目录 - String tmpDir = System.getProperty("java.io.tmpdir"); //使用guid生成一个临时文件名,然后拼接到tmpDir后面,生成完整的临时文件路径 - String tmpFile = tmpDir + UUID.randomUUID() + ".xlsx"; + if (!new File(CommonUtil.webUploadPath).exists()) { + //创建目录 + new File(CommonUtil.webUploadPath).mkdirs(); + } + String fileName = UUID.randomUUID() + ".xlsx"; + String tmpFile = CommonUtil.webUploadPath + fileName; exporter.LessonConstructionExportExcel(tmpFile, list1, list2, list3); - //提供下载 - renderFile(new File(tmpFile), "课程建设情况报表.xlsx"); + + //提供文件路径 + Kv kv = Kv.create(); + kv.set("success", true); + kv.set("message", "生成成功!"); + kv.set("url", "/QingLong/upload/" + fileName); + renderJson(kv); } /** * 区域、学校提供课程的统计情况 */ // http://10.10.21.20:9000/QingLong/yx/LessonConstructionInfoByXzqhSchool + // http://10.10.21.20:9000/QingLong/yx/LessonConstructionInfoByXzqhSchool?type_id=1 @Before(GET.class) - public void LessonConstructionInfoByXzqhSchool() { + public void LessonConstructionInfoByXzqhSchool(int type_id) throws Exception { List list1 = ym.LessonConstructionInfoByXzqh(); List list2 = ym.LessonConstructionInfoByXzqhStage(); List list3 = ym.LessonConstructionInfoByXzqhSchool(); List list4 = ym.LessonConstructionInfo(); - YunXiaoExportExcelUtil exporter = new YunXiaoExportExcelUtil(); - //获取系统临时目录 - String tmpDir = System.getProperty("java.io.tmpdir"); //使用guid生成一个临时文件名,然后拼接到tmpDir后面,生成完整的临时文件路径 - String tmpFile = tmpDir + UUID.randomUUID() + ".xlsx"; + if (!new File(CommonUtil.webUploadPath).exists()) { + //创建目录 + new File(CommonUtil.webUploadPath).mkdirs(); + } + String fileName = UUID.randomUUID() + ".xlsx"; + String tmpFile = CommonUtil.webUploadPath + fileName; exporter.LessonConstructionInfoByXzqhSchool(tmpFile, list1, list2, list3, list4); - //提供下载 - renderFile(new File(tmpFile), "【区域+学校】课程建设情况报表.xlsx"); + //提供文件路径 + Kv kv = Kv.create(); + kv.set("success", true); + kv.set("message", "生成成功!"); + kv.set("url", "/QingLong/upload/" + fileName); + renderJson(kv); } /** diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index fcbe4a14..f63ae536 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -22,9 +22,6 @@ MaxKB_modelName=DeepSeek redis_ip=10.10.14.14 redis_port=18890 -# 接入系统的REDIS缓存主键键值 -SYS_JRXT=SYS_JRXT - #TjThread TjThread=1