From 46db47413fe873a67eb60f4c9215195b7d65754f Mon Sep 17 00:00:00 2001 From: bai <1643359946@qq.com> Date: Wed, 10 Jul 2024 22:32:01 +0800 Subject: [PATCH] =?UTF-8?q?2024=E5=B9=B47=E6=9C=8810=E6=97=A5=20=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .../controller/BlStuAnswerController.java | 30 +- .../mapper/xml/BlStuAnswerMapper.xml | 170 +-- .../service/impl/BlStuAnswerServiceImpl.java | 1290 +++++++++-------- .../demo/blStuInfo/entity/BlStuInfo.java | 11 + .../jeecg/modules/tools/WebDriverUtil.java | 6 +- .../modules/tools/word/WordOperator.java | 13 +- .../officetemplates/exp1/student-tjfx.docx | Bin 301051 -> 302068 bytes 8 files changed, 818 insertions(+), 704 deletions(-) diff --git a/.gitignore b/.gitignore index 5d05004..528334e 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,5 @@ os_del_doc.cmd derby.log application-local.yml + +applicationTemp \ No newline at end of file diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/controller/BlStuAnswerController.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/controller/BlStuAnswerController.java index 77e3bd1..1518213 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/controller/BlStuAnswerController.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/controller/BlStuAnswerController.java @@ -13,8 +13,8 @@ import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.demo.blStuAnswer.entity.BlStuAnswer; import org.jeecg.modules.demo.blStuAnswer.service.IBlStuAnswerService; -import org.jeecg.modules.demo.blStuInfo.entity.BlStuInfo; import org.jeecg.modules.demo.blStuInfo.service.IBlStuInfoService; +import org.jeecg.modules.demo.blStuInfo.entity.BlStuInfo; import org.jeecg.modules.tools.word.ExportWord; import org.jeecg.modules.tools.word.WordOperator; import org.jeecgframework.poi.excel.ExcelImportUtil; @@ -191,17 +191,6 @@ public class BlStuAnswerController extends JeecgController(); -// updateWp.lambda().eq(BlStuInfo::getId, id); -// updateWp.lambda().set() -// blStuInfoService.update(updateWp); - - //update-end-author:taoyan date:20190528 for:批量插入数据 return Result.ok("文件导入成功!数据行数:" + list.size()); } catch (Exception e) { @@ -235,4 +224,21 @@ public class BlStuAnswerController extends JeecgController createWord(@RequestParam(name="id",required=true) String id) throws Exception { + //直接导出附件 + WordOperator wo = service.createWordTjfx(id); + BlStuInfo blStuInfo = blStuInfoService.getById(id); + //保存到本地附件里 + String exportWordPath = ExportWord.wordPathToLocalFile(wo,"["+blStuInfo.getSchoolName()+"]-"+blStuInfo.getPgrq()+"-问卷分析情况.docx", "exportWords"); + //保存到主表里 + var updateWp = new UpdateWrapper(); + updateWp.lambda().eq(BlStuInfo::getId, id); + updateWp.lambda().set(BlStuInfo::getFilePath,exportWordPath); + blStuInfoService.update(updateWp); + return Result.OK("生成成功"); + } + + } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/mapper/xml/BlStuAnswerMapper.xml b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/mapper/xml/BlStuAnswerMapper.xml index 1082948..09fc645 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/mapper/xml/BlStuAnswerMapper.xml +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/mapper/xml/BlStuAnswerMapper.xml @@ -6,13 +6,13 @@ - select a.sex as 'key',a.sex_cnt as '01',round(round(a.sex_cnt/b.total_cnt,2)*100) as '02' from (select sex,count('x') as sex_cnt from bl_stu_answer where main_id = #{id} GROUP BY sex order by sex) a, (select count('x') as total_cnt from bl_stu_answer where main_id = #{id}) b - select '大一' as 'key',b.d1_cnt as '01',round(round(b.d1_cnt/a.tot_cnt,2)*100) as '02' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a, @@ -34,18 +34,18 @@ (select count('x') as d1_cnt from bl_stu_answer where NIANJI = '大四' and main_id = #{id})b - select a.POLITICS as 'key',a.POLITICS_cnt as '01',round(round(a.POLITICS_cnt/b.total_cnt,2)*100) as '02' from (select POLITICS,count('x') as POLITICS_cnt from bl_stu_answer where main_id = #{id} GROUP BY POLITICS order by POLITICS) a, (select count('x') as total_cnt from bl_stu_answer where main_id = #{id}) b where POLITICS is not null and POLITICS != '' - select CONCAT(dep,'-',major_maj) as 'key', dep as '01', major_maj as '02', maj_cnt as '03', `round((b.maj_cnt/a.dep_cnt)*100)` as '04' from view_bl_major_static - select '课前运用网络课程平台、教材或资料进行自主预学,梳理知识并发现问题' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常符合', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较符合', @@ -115,7 +115,7 @@ select round(sum(AFTER_CLASS_READ2)/count('x'),2) from bl_stu_answer where main_id = #{id} - select 'key' as 'key', round(sum(PRE_CLASS_PREVIEW2)/count('x'),2) as '课前运用网络课程平台、教材或资料进行自主预学,梳理知识并发现问题', @@ -125,7 +125,7 @@ from bl_stu_answer where main_id = #{id} - select '课前运用网络课程平台、教材或资料进行自主预学,梳理知识并发现问题' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(PRE_CLASS_PREVIEW2)/count('x'),2)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -155,7 +155,7 @@ (select round(sum(AFTER_CLASS_READ2)/count('x'),2)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(PRE_CLASS_PREVIEW2)/count('x'),2) as '01', @@ -181,7 +181,7 @@ select round(sum(STUDYTIME_ONLINE)/count('x')) from bl_stu_answer where main_id = #{id} - select '完成作业' as 'key',e.d5 as '01',a.d1 as '02',b.d2 as '03',c.d3 as '04',d.d4 as '05' from (select round(round(sum(STUDYTIME_HOMEWORK)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -215,7 +215,7 @@ (select round(round(sum(STUDYTIME_ONLINE)/count('x'),2))as d5 from bl_stu_answer where main_id = #{id} )e - select major as 'key', round(sum(STUDYTIME_HOMEWORK)/count('x')) as '01', @@ -241,7 +241,7 @@ select round(sum(STUDYTIME_OTHER)/count('x')) from bl_stu_answer where main_id = #{id} - select '做实验/科研项目' as 'key',e.d5 as '01',a.d1 as '02',b.d2 as '03',c.d3 as '04',d.d4 as '05' from (select round(round(sum(STUDYTIME_EXPERIMENT)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -275,7 +275,7 @@ (select round(round(sum(STUDYTIME_OTHER)/count('x'),2))as d5 from bl_stu_answer where main_id = #{id} )e - select major as 'key', round(sum(STUDYTIME_EXPERIMENT)/count('x')) as '01', @@ -301,7 +301,7 @@ select concat(round(round(sum(INTERACT_RESEARCH1)/count('x'),2)*100)) from bl_stu_answer where main_id = #{id} - select '和同学合作完成课程任务或作业' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '总是', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '经常', @@ -347,7 +347,7 @@ (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})f - select '和同学合作完成课程任务或作业' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(INTERACT_TASK1)/count('x'),2)*100)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -377,7 +377,7 @@ (select round(round(sum(INTERACT_RESEARCH1)/count('x'),2)*100)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(round(sum(INTERACT_TASK1)/count('x'),2)*100) as '01', @@ -399,7 +399,7 @@ (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})b - select a as 'key',c as '01' from (select a.EXCHANGE_FREQ as a,a.EXCHANGE_FREQ_cnt as b,round(round(a.EXCHANGE_FREQ_cnt/b.total_cnt,2)*100) as c from (select EXCHANGE_FREQ,count('x') as EXCHANGE_FREQ_cnt from bl_stu_answer where main_id = #{id} GROUP BY EXCHANGE_FREQ order by EXCHANGE_FREQ) a, @@ -407,7 +407,7 @@ order by 3 desc)e - select '大一' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '每周至少一次', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '每月至少一次', @@ -453,7 +453,7 @@ (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id} and NIANJI = '大四')f - select z.major as 'key',round(round(z.z_cnt/t.tot_cnt,2)*100) as '01',round(round(y.y_cnt/t.tot_cnt,2)*100) as '02',round(round(x.x_cnt/t.tot_cnt,2)*100) as '03',round(round(n.n_cnt/t.tot_cnt,2)*100) as '04' from (select major,count('x') as z_cnt from bl_stu_answer where main_id = #{id} and EXCHANGE_FREQ = '每周至少一次' GROUP BY major)z, @@ -493,7 +493,7 @@ (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})b - select '思政课程总体满意度' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -511,11 +511,11 @@ select concat(round(sum(SXZZK_SATI2)/count(*))) from bl_stu_answer where main_id = #{id} - select '思政课程总体满意度' as 'key',concat(round(sum(SXZZK_SATI2)/count(*))) as '01' from bl_stu_answer where main_id = #{id} - select '思政课程总体满意度' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(SXZZK_SATI2)/count(*))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -524,14 +524,14 @@ (select round(sum(SXZZK_SATI2)/count(*))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(SXZZK_SATI2)/count(*)) as '01' from bl_stu_answer where main_id = #{id} GROUP BY MAJOR - select '教学形式' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -593,7 +593,7 @@ select concat(round(round(sum(SXZZK_XIAOGUO2)/count('x'),2))) from bl_stu_answer where main_id = #{id} - select '思政课程各分项满意度' as 'key', round(round(sum(SXZZK_NEIRONG2)/count('x'),2)) as '教学内容', @@ -603,7 +603,7 @@ from bl_stu_answer where main_id = #{id} - select '教学内容' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(SXZZK_NEIRONG2)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -633,7 +633,7 @@ (select round(round(sum(SXZZK_XIAOGUO2)/count('x'),2))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select '课程将知识、能力、素养进行了有机融合' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常符合', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较符合', @@ -737,7 +737,7 @@ select round(sum(ZYK_EFFORT2)/count('x'),2) from bl_stu_answer where main_id = #{id}; - select '学生对专业课“两性一度”评价' as 'key', round(sum(ZYK_SKILL2)/count('x'),2) as '课程将知识、能力、素养进行了有机融合', @@ -749,7 +749,7 @@ from bl_stu_answer where main_id = #{id} - select '高阶性' as 'key','课程将知识、能力、素养进行了有机融合' as '01',a.d1 as '02',b.d2 as '03',c.d3 as '04',d.d4 as '05' from (select round(sum(ZYK_SKILL2)/count('x'),2)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, (select round(sum(ZYK_SKILL2)/count('x'),2)as d2 from bl_stu_answer where main_id = #{id} and nianji = '大二' )b, @@ -787,7 +787,7 @@ (select round(sum(ZYK_EFFORT2)/count('x'),2)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(ZYK_SKILL2)/count('x'),2) as '01', @@ -799,7 +799,7 @@ from bl_stu_answer GROUP BY major order by major; - select '提供案例或实例讨论' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常符合', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较符合', @@ -869,7 +869,7 @@ select round(sum(METHOD_XIANGMU2)/count('x'),2) from bl_stu_answer where main_id = #{id} - select '学生对专业课教学方式评价' as 'key', round(sum(METHOD_JIANGSHOU2)/count('x'),2) as '课程以传统的教师讲授为主', @@ -879,7 +879,7 @@ from bl_stu_answer where main_id = #{id} - select '课程以传统的教师讲授为主' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(METHOD_JIANGSHOU2)/count('x'),2)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -909,7 +909,7 @@ (select round(sum(METHOD_XIANGMU2)/count('x'),2)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(METHOD_JIANGSHOU2)/count('x'),2) as '01', @@ -943,7 +943,7 @@ select concat(round(round(sum(EVALUATE_LUNWEN)/count('x'),2)*100)) from bl_stu_answer where main_id = #{id} - select '卷面考试' as 'key' ,round(round(b.no_cnt/a.tot_cnt,2)*100) as '01' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and EVALUATE_JUANMIAN = #{id})b union all select '随堂提问或测试' as 'key' ,round(round(b.no_cnt/a.tot_cnt,2)*100) as '01' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and EVALUATE_TIWEN = #{id})b @@ -957,7 +957,7 @@ select '过课程论文或实验报告' as 'key' ,round(round(b.no_cnt/a.tot_cnt,2)*100) as '01' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and EVALUATE_LUNWEN = #{id})b - select '体育教育' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -1016,7 +1016,7 @@ from bl_stu_answer where main_id = #{id} - select '体美劳教育满意度' as 'key', round(sum(EDUSATI_TI2)/count('x')) as '体育教育', @@ -1025,7 +1025,7 @@ from bl_stu_answer where main_id = #{id} - select '体育教育' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(EDUSATI_TI2)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -1048,7 +1048,7 @@ (select round(round(sum(EDUSATI_LAO2)/count('x'),2))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(EDUSATI_TI2)/count('x')) as '01', @@ -1077,7 +1077,7 @@ select concat(round(round(sum(ACTIVITY_GLOBAL)/count('x'),2)*100)) from bl_stu_answer where main_id = #{id} - select '学生社团活动' as 'key' ,round(round(sum(ACTIVITY_SOCIETY)/count('x'),2)*100) as '01' from bl_stu_answer where main_id = #{id} UNION all select '校园文化活动' as 'key' ,round(round(sum(ACTIVITY_CULTURE)/count('x'),2)*100) as '01' from bl_stu_answer where main_id = #{id} @@ -1089,7 +1089,7 @@ select '国际交流活动' as 'key' ,round(round(sum(ACTIVITY_GLOBAL)/count('x'),2)*100) as '01' from bl_stu_answer where main_id = #{id} - select '国际交流活动' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -1166,7 +1166,7 @@ select concat(round(avg(ACTISATI_INTERN2))) from bl_stu_answer where main_id = #{id} and ACTISATI_INTERN2 + 0 > 0 - select '各项学生发展活动满意度' as 'key', a.a as '学生社团活动',b.b as '校园文化活动',c.c as '创新创业活动',d.d as '国际交流活动',e.e as '社会实践活动' from (select round(avg(ACTISATI_SOCIETY2)) as a from bl_stu_answer where main_id = #{id} and ACTISATI_SOCIETY2 + 0 > 0)a, (select round(avg(ACTISATI_CULTURE2)) as b from bl_stu_answer where main_id = #{id} and ACTISATI_CULTURE2 + 0 > 0)b, @@ -1175,7 +1175,7 @@ (select round(avg(ACTISATI_INTERN2)) as e from bl_stu_answer where main_id = #{id} and ACTISATI_INTERN2 + 0 > 0)e - select '学生社团活动' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '07' from (select round(avg(ACTISATI_SOCIETY2)) as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' and ACTISATI_SOCIETY2 + 0 > 0)a, @@ -1212,7 +1212,7 @@ (select round(avg(ACTISATI_INTERN2)) as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' and ACTISATI_INTERN2 + 0 > 0 )d - select a.MAJOR as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04',e.d5 as '05' from (select major,round(avg(ACTISATI_SOCIETY2)) as d1 from bl_stu_answer where main_id = #{id} and ACTISATI_SOCIETY2 + 0 > 0 GROUP BY MAJOR)a, (select major,round(avg(ACTISATI_CULTURE2)) as d2 from bl_stu_answer where main_id = #{id} and ACTISATI_CULTURE2 + 0 > 0 GROUP BY MAJOR)b, @@ -1225,7 +1225,7 @@ and a.major = e.major - select '实习实践指导情况' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -1295,7 +1295,7 @@ select concat(round(round(sum(INTERN_EQUIP_SATIS2)/count('x'),2))) from bl_stu_answer where main_id = #{id} - select '本校实习实践各方面满意度' as 'key', round(round(sum(INTERN_CONTENT_SATIS2)/count('x'),2)) as '实习实践内容', @@ -1305,7 +1305,7 @@ from bl_stu_answer where main_id = #{id} - select major as 'key', round(sum(INTERN_CONTENT_SATIS2)/count('x')) as '01', @@ -1315,7 +1315,7 @@ from bl_stu_answer where main_id = #{id} GROUP BY major order by major - select '自主学习能力提升' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常符合', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较符合', @@ -1402,7 +1402,7 @@ select round(sum(ABILITY_PLAN2)/count('x'),2) from bl_stu_answer where main_id = #{id} - select '学生对学习收获的评价' as 'key', round(sum(ABILITY_ANALYSE2)/count('x'),2) as '分析问题、解决问题能力提升', @@ -1413,7 +1413,7 @@ from bl_stu_answer where main_id = #{id} - select '分析问题、解决问题能力提升' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(ABILITY_ANALYSE2)/count('x'),2)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -1450,7 +1450,7 @@ (select round(sum(ABILITY_PLAN2)/count('x'),2)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(ABILITY_ANALYSE2)/count('x'),2) as '01', @@ -1461,7 +1461,7 @@ from bl_stu_answer where main_id = #{id} GROUP BY major order by major - select '责任担当' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -1582,7 +1582,7 @@ select concat(round(round(sum(SUYANG_TISHENG2)/count('x'),2))) from bl_stu_answer where main_id = #{id} - select '学生评价核心素养满意度' as 'key', round(round(sum(SUYANG_RENWEN2)/count('x'),2)) as '人文底蕴', @@ -1595,7 +1595,7 @@ from bl_stu_answer where main_id = #{id} - select '人文底蕴' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(SUYANG_RENWEN2)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -1646,7 +1646,7 @@ (select round(round(sum(SUYANG_TISHENG2)/count('x'),2))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(SUYANG_RENWEN2)/count('x')) as '01', round(sum(SUYANG_KEXUE2)/count('x')) as '02', @@ -1658,7 +1658,7 @@ from bl_stu_answer where main_id = #{id} GROUP BY major order by major - select '依法依规,履行教师职责' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -1728,7 +1728,7 @@ select concat(round(round(sum(TEACHERSATI_CARE2)/count('x'),2))) from bl_stu_answer where main_id = #{id} - select '教学工作各方面满意度' as 'key', concat(round(round(sum(TEACHERSATI_MORAL2)/count('x'),2))) as '师德师风及精神面貌', @@ -1738,7 +1738,7 @@ from bl_stu_answer where main_id = #{id} - select '师德师风及精神面貌' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(TEACHERSATI_MORAL2)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -1768,7 +1768,7 @@ (select round(round(sum(TEACHERSATI_CARE2)/count('x'),2))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(TEACHERSATI_MORAL2)/count('x')) as '01', round(sum(TEACHERSATI_INPUT2)/count('x')) as '02', @@ -1801,7 +1801,7 @@ (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})b - select '教学满意度' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -1819,11 +1819,11 @@ select concat(round(sum(TEACHERSATI_ZONGTI2)/count(*))) from bl_stu_answer where main_id = #{id} - select '教学满意度' as 'key',concat(round(sum(TEACHERSATI_ZONGTI2)/count(*))) as '01' from bl_stu_answer where main_id = #{id} - select '教学满意度' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(TEACHERSATI_ZONGTI2)/count(*))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -1832,11 +1832,11 @@ (select round(sum(TEACHERSATI_ZONGTI2)/count(*))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key',round(sum(TEACHERSATI_ZONGTI2)/count(*))as '01' from bl_stu_answer where main_id = #{id} GROUP BY MAJOR - select '清楚地向学生解释了所学课程的目标和要求' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常符合', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较符合', @@ -1923,7 +1923,7 @@ select round(sum(TEACHER_AFTER2)/count('x'),2) from bl_stu_answer where main_id = #{id} - select '教师各方面教学行为评价' as 'key', round(sum(TEACHER_YUREN2)/count('x'),2) as '重视立德树人,注重发挥课程育人的作用', @@ -1934,7 +1934,7 @@ from bl_stu_answer where main_id = #{id}; - select '重视立德树人,注重发挥课程育人的作用' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(TEACHER_YUREN2)/count('x'),2)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, (select round(sum(TEACHER_YUREN2)/count('x'),2)as d2 from bl_stu_answer where main_id = #{id} and nianji = '大二' )b, @@ -1966,7 +1966,7 @@ (select round(sum(TEACHER_AFTER2)/count('x'),2)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(TEACHER_YUREN2)/count('x'),2) as '01', round(sum(TEACHER_OBJECT2)/count('x'),2) as '02', @@ -1976,7 +1976,7 @@ from bl_stu_answer where main_id = #{id} GROUP BY major order by major - select '校内学术讲座报告活动多' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常符合', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较符合', @@ -2046,7 +2046,7 @@ select round(sum(STUDENTCENTER_LECTURE2)/count('x'),2) from bl_stu_answer where main_id = #{id} - select '本校体现“学生中心”和安全管理评价各项占比' as 'key', round(sum(STUDENTCENTER_STUDENT2)/count('x'),2) as '学生服务能够做到“一站式”的服务与解决,体现了对学生的关怀', @@ -2056,7 +2056,7 @@ from bl_stu_answer where main_id = #{id} - select '学生服务能够做到“一站式”的服务与解决,体现了对学生的关怀' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(STUDENTCENTER_STUDENT2)/count('x'),2)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, (select round(sum(STUDENTCENTER_STUDENT2)/count('x'),2)as d2 from bl_stu_answer where main_id = #{id} and nianji = '大二' )b, @@ -2082,7 +2082,7 @@ (select round(sum(STUDENTCENTER_LECTURE2)/count('x'),2)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(STUDENTCENTER_STUDENT2)/count('x'),2) as '01', round(sum(STUDENTCENTER_EXPERIMENT2)/count('x'),2) as '02', @@ -2115,7 +2115,7 @@ select concat(round(round(b.no_cnt/a.tot_cnt,2)*100)) from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and XYZD_NO = #{id})b - select '学校或学院提供的辅导课程或相关活动' as 'key' ,round(round(b.no_cnt/a.tot_cnt,2)*100) as '01' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and XYZD_KECHENG = #{id})b union all select '任课教师帮助解决相关问题' as 'key' ,round(round(b.no_cnt/a.tot_cnt,2)*100) as '01' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and XYZD_JIAOSHI = #{id})b @@ -2129,7 +2129,7 @@ select '没有接受过本校提供的学业指导服务' as 'key' ,round(round(b.no_cnt/a.tot_cnt,2)*100) as '01' from (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})a,(select count('x') as no_cnt from bl_stu_answer where main_id = #{id} and XYZD_NO = #{id})b - select '学校或学院提供的辅导课程或相关活动' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(XYZD_KECHENG)/count('x'),2)*100)as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, (select round(round(sum(XYZD_KECHENG)/count('x'),2)*100)as d2 from bl_stu_answer where main_id = #{id} and nianji = '大二' )b, @@ -2167,7 +2167,7 @@ (select round(round(sum(XYZD_NO)/count('x'),2)*100)as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(round(sum(XYZD_KECHENG)/count('x'),2)*100) as '01', round(round(sum(XYZD_WANGZHAN)/count('x'),2)*100) as '02', @@ -2178,7 +2178,7 @@ from bl_stu_answer where main_id = #{id} GROUP BY major order by major - select '班主任、辅导员工作' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -2265,7 +2265,7 @@ select concat(round(round(sum(STUSATI_ZZ2)/count('x'),2))) from bl_stu_answer where main_id = #{id} - select '各项学生工作满意度' as 'key', round(round(sum(STUSATI_PHYCHO2)/count('x'),2)) as '心理健康教育/咨询', @@ -2276,7 +2276,7 @@ from bl_stu_answer where main_id = #{id} - select '心理健康教育/咨询' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(STUSATI_PHYCHO2)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, (select round(round(sum(STUSATI_PHYCHO2)/count('x'),2))as d2 from bl_stu_answer where main_id = #{id} and nianji = '大二' )b, @@ -2308,7 +2308,7 @@ (select round(round(sum(STUSATI_ZZ2)/count('x'),2))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(STUSATI_PHYCHO2)/count('x')) as '01', round(sum(STUSATI_PLAN2)/count('x')) as '02', @@ -2318,7 +2318,7 @@ from bl_stu_answer where main_id = #{id} GROUP BY major order by major - select '图书馆资源' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -2422,7 +2422,7 @@ select concat(round(round(sum(CAMPUS_RESIDENCE2)/count('x'),2))) from bl_stu_answer where main_id = #{id} - select 'key' as 'key', round(round(sum(CAMPUS_EQUIPMENT2)/count('x'),2)) as '教室及教学设备', @@ -2434,7 +2434,7 @@ from bl_stu_answer where main_id = #{id} - select '教室及教学设备' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(round(sum(CAMPUS_EQUIPMENT2)/count('x'),2))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, (select round(round(sum(CAMPUS_EQUIPMENT2)/count('x'),2))as d2 from bl_stu_answer where main_id = #{id} and nianji = '大二' )b, @@ -2472,7 +2472,7 @@ (select round(round(sum(CAMPUS_RESIDENCE2)/count('x'),2))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key', round(sum(CAMPUS_EQUIPMENT2)/count('x')) as '01', round(sum(CAMPUS_LAB2)/count('x')) as '02', @@ -2507,7 +2507,7 @@ (select count('x') as tot_cnt from bl_stu_answer where main_id = #{id})b - select '教学满意度' as 'key', round(round(a.fc_cnt/f.tot_cnt,2)*100) as '非常满意', round(round(b.bj_cnt/f.tot_cnt,2)*100) as '比较满意', @@ -2525,11 +2525,11 @@ select concat(round(sum(SATI_ZONGTI2)/count(*))) from bl_stu_answer where main_id = #{id} - select '总体满意度',round(sum(SATI_ZONGTI2)/count(*)) as '01' from bl_stu_answer where main_id = #{id} - select '对学校的总体满意度' as 'key',a.d1 as '01',b.d2 as '02',c.d3 as '03',d.d4 as '04' from (select round(sum(SATI_ZONGTI2)/count(*))as d1 from bl_stu_answer where main_id = #{id} and nianji = '大一' )a, @@ -2538,7 +2538,7 @@ (select round(sum(SATI_ZONGTI2)/count(*))as d4 from bl_stu_answer where main_id = #{id} and nianji = '大四' )d - select major as 'key',round(sum(SATI_ZONGTI2)/count(*)) as '01' from bl_stu_answer where main_id = #{id} GROUP BY MAJOR diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/service/impl/BlStuAnswerServiceImpl.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/service/impl/BlStuAnswerServiceImpl.java index b8c424f..cee203e 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/service/impl/BlStuAnswerServiceImpl.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuAnswer/service/impl/BlStuAnswerServiceImpl.java @@ -10,6 +10,7 @@ import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.Lists; import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.demo.blStuAnswer.entity.BlStuAnswer; import org.jeecg.modules.demo.blStuAnswer.mapper.BlStuAnswerMapper; import org.jeecg.modules.demo.blStuAnswer.service.IBlStuAnswerService; @@ -22,6 +23,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.List; import java.util.Map; import java.util.Set; @@ -29,6 +31,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Function; @@ -56,478 +59,504 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result = Maps.newHashMap(); - result.put("schoolName", blStuMain.getSchoolName());//学校名称 - result.put("pgdw", blStuMain.getPgdw());//评估单位 - result.put("pgrq", blStuMain.getPgrq());//评估日期 - result.put("xuenian", blStuMain.getXuenian());//学年 - result.put("dysd", blStuMain.getDysd());//调研时点 - result.put("stuSumno", stuSumno);//学校名称 - result.put("dtsl", dtsl);//答题数量 - result.put("dtl", dtl);//答题率 - //尝试异步加快导出速度 - log.info("多线程主线程开始执行"); - //多线程执行 - CompletionService threadService = ThreadUtil.newCompletionService(Executors.newFixedThreadPool(100)); - List> calls = com.google.common.collect.Lists.newArrayList(); - calls.add(() -> { - t1_1(wo, result, id); - return true; - }); - calls.add(() -> { - i1_1(wo, result, id); - return true; - }); - calls.add(() -> { - b1_1(wo, result, id); - return true; - }); - calls.add(() -> { - i1_2(wo, result, id); - return true; - }); - calls.add(() -> { - t1_3(wo, result, id); - return true; - }); - calls.add(() -> { - t1_4(wo, result, id); - return true; - }); - calls.add(() -> { - b1_2(wo, result, id); - return true; - }); - calls.add(() -> { - t1_5(wo, result, id); - return true; - }); - calls.add(() -> { - t1_6(wo, result, id); - return true; - }); - calls.add(() -> { - b1_2_5(wo, result, id); - return true; - }); - calls.add(() -> { - t1_7(wo, result, id); - return true; - }); - calls.add(() -> { - t1_8(wo, result, id); - return true; - }); - calls.add(() -> { - b1_3(wo, result, id); - return true; - }); - calls.add(() -> { - i1_9(wo, result, id); - return true; - }); - calls.add(() -> { - t1_10(wo, result, id); - return true; - }); - calls.add(() -> { - t1_11(wo, result, id); - return true; - }); - calls.add(() -> { - b1_4(wo, result, id); - return true; - }); - calls.add(() -> { - i1_12(wo, result, id); - return true; - }); - calls.add(() -> { - i1_13(wo, result, id); - return true; - }); - calls.add(() -> { - t1_14(wo, result, id); - return true; - }); - calls.add(() -> { - b2_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_1(wo, result, id); - return true; - }); - calls.add(() -> { - b2_1_5(wo, result, id); - return true; - }); - calls.add(() -> { - i2_2(wo, result, id); - return true; - }); - calls.add(() -> { - t2_3(wo, result, id); - return true; - }); - calls.add(() -> { - t2_4(wo, result, id); - return true; - }); - calls.add(() -> { - i2_5(wo, result, id); - return true; - }); - calls.add(() -> { - b2_1_6(wo, result, id); - return true; - }); - calls.add(() -> { - i2_6(wo, result, id); - return true; - }); - calls.add(() -> { - t2_7(wo, result, id); - return true; - }); - calls.add(() -> { - i2_8(wo, result, id); - return true; - }); - calls.add(() -> { - b2_2_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_9(wo, result, id); - return true; - }); - calls.add(() -> { - t2_10(wo, result, id); - return true; - }); - calls.add(() -> { - t2_11(wo, result, id); - return true; - }); - calls.add(() -> { - i2_12(wo, result, id); - return true; - }); - calls.add(() -> { - b2_3_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_13(wo, result, id); - return true; - }); - calls.add(() -> { - t2_14(wo, result, id); - return true; - }); - calls.add(() -> { - t2_15(wo, result, id); - return true; - }); - calls.add(() -> { - b2_4_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_16(wo, result, id); - return true; - }); - calls.add(() -> { - i2_17(wo, result, id); - return true; - }); - calls.add(() -> { - b2_5_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_18(wo, result, id); - return true; - }); - calls.add(() -> { - t2_19(wo, result, id); - return true; - }); - calls.add(() -> { - t2_20(wo, result, id); - return true; - }); - calls.add(() -> { - b2_6_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_21(wo, result, id); - return true; - }); - calls.add(() -> { - i2_22(wo, result, id); - return true; - }); - calls.add(() -> { - b2_6_6(wo, result, id); - return true; - }); - calls.add(() -> { - i2_23(wo, result, id); - return true; - }); - calls.add(() -> { - t2_24(wo, result, id); - return true; - }); - calls.add(() -> { - t2_25(wo, result, id); - return true; - }); - calls.add(() -> { - i2_26(wo, result, id); - return true; - }); - calls.add(() -> { - b2_7_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_27(wo, result, id); - return true; - }); - calls.add(() -> { - t2_28(wo, result, id); - return true; - }); - calls.add(() -> { - i2_29(wo, result, id); - return true; - }); - calls.add(() -> { - b2_8_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_30(wo, result, id); - return true; - }); - calls.add(() -> { - t2_31(wo, result, id); - return true; - }); - calls.add(() -> { - t2_32(wo, result, id); - return true; - }); - calls.add(() -> { - i2_33(wo, result, id); - return true; - }); - calls.add(() -> { - b2_9_1(wo, result, id); - return true; - }); - calls.add(() -> { - i2_34(wo, result, id); - return true; - }); - calls.add(() -> { - t2_35(wo, result, id); - return true; - }); - calls.add(() -> { - t2_36(wo, result, id); - return true; - }); - calls.add(() -> { - i3_1(wo, result, id); - return true; - }); - calls.add(() -> { - b3_1_1(wo, result, id); - return true; - }); - calls.add(() -> { - i3_2(wo, result, id); - return true; - }); - calls.add(() -> { - t3_3(wo, result, id); - return true; - }); - calls.add(() -> { - t3_4(wo, result, id); - return true; - }); - calls.add(() -> { - b3_2_1(wo, result, id); - return true; - }); - calls.add(() -> { - i3_5(wo, result, id); - return true; - }); - calls.add(() -> { - b3_2_5(wo, result, id); - return true; - }); - calls.add(() -> { - i3_6(wo, result, id); - return true; - }); - calls.add(() -> { - t3_7(wo, result, id); - return true; - }); - calls.add(() -> { - t3_8(wo, result, id); - return true; - }); - calls.add(() -> { - i3_9(wo, result, id); - return true; - }); - calls.add(() -> { - b3_3_1(wo, result, id); - return true; - }); - calls.add(() -> { - i3_10(wo, result, id); - return true; - }); - calls.add(() -> { - t3_11(wo, result, id); - return true; - }); - calls.add(() -> { - t3_12(wo, result, id); - return true; - }); - calls.add(() -> { - i4_1(wo, result, id); - return true; - }); - calls.add(() -> { - b4_1_1(wo, result, id); - return true; - }); - calls.add(() -> { - i4_2(wo, result, id); - return true; - }); - calls.add(() -> { - t4_3(wo, result, id); - return true; - }); - calls.add(() -> { - t4_4(wo, result, id); - return true; - }); - calls.add(() -> { - b4_2_1(wo, result, id); - return true; - }); - calls.add(() -> { - i4_5(wo, result, id); - return true; - }); - calls.add(() -> { - t4_6(wo, result, id); - return true; - }); - calls.add(() -> { - t4_7(wo, result, id); - return true; - }); - calls.add(() -> { - i4_8(wo, result, id); - return true; - }); - calls.add(() -> { - b4_3_1(wo, result, id); - return true; - }); - calls.add(() -> { - i4_9(wo, result, id); - return true; - }); - calls.add(() -> { - t4_10(wo, result, id); - return true; - }); - calls.add(() -> { - t4_11(wo, result, id); - return true; - }); - calls.add(() -> { - i4_12(wo, result, id); - return true; - }); - calls.add(() -> { - b4_4_1(wo, result, id); - return true; - }); - calls.add(() -> { - i4_13(wo, result, id); - return true; - }); - calls.add(() -> { - t4_14(wo, result, id); - return true; - }); - calls.add(() -> { - t4_15(wo, result, id); - return true; - }); - calls.add(() -> { - b5_1_1(wo, result, id); - return true; - }); - calls.add(() -> { - i5_1(wo, result, id); - return true; - }); - calls.add(() -> { - b5_1_5(wo, result, id); - return true; - }); - calls.add(() -> { - i5_2(wo, result, id); - return true; - }); - calls.add(() -> { - t5_3(wo, result, id); - return true; - }); - calls.add(() -> { - t5_4(wo, result, id); - return true; - }); + return createWordTjfxB(id); + } - calls.forEach(threadService::submit); - calls.forEach(fn -> { - try { - threadService.take(); - } catch (Exception e) { - log.error(e.getMessage(),e); + public WordOperator createWordTjfxA(String id) { + String templateName = "exp1\\student-tjfx.docx"; + try { + final WordOperator wo = ExportWord.getWordOperator(templateName); + BlStuInfo blStuMain = blStuInfoMapper.selectById(id); + String stuSumno = blStuMain.getStuSumno(); + if (StringUtils.isBlank(stuSumno)) { + stuSumno = "26765"; } - }); - log.info("多线程主线程结束执行"); - WordOperator wo2 = WordOperator.twoReplaceWord(wo); - wo2.replaceTextPlus(result); - return wo2; + String dtsl = baseMapper.selectDtsl(id);//答题数量 + String dtl = String.format("%.2f", Double.parseDouble(dtsl) / Double.parseDouble(stuSumno) * 100);//答题率 + Map result = Maps.newHashMap(); + result.put("schoolName", blStuMain.getSchoolName());//学校名称 + result.put("pgdw", blStuMain.getPgdw());//评估单位 + result.put("pgrq", blStuMain.getPgrq());//评估日期 + result.put("xuenian", blStuMain.getXuenian());//学年 + result.put("dysd", blStuMain.getDysd());//调研时点 + result.put("stuSumno", stuSumno);//学校名称 + result.put("dtsl", dtsl);//答题数量 + result.put("dtl", dtl);//答题率 + //尝试异步加快导出速度 + log.info("多线程主线程开始执行"); + //多线程执行 + CompletionService threadService = ThreadUtil.newCompletionService(Executors.newFixedThreadPool(100)); + List> calls = com.google.common.collect.Lists.newArrayList(); + calls.add(() -> { + t1_1(wo, result, id); + return true; + }); + calls.add(() -> { + i1_1(wo, result, id); + return true; + }); + calls.add(() -> { + b1_1(wo, result, id); + return true; + }); + calls.add(() -> { + i1_2(wo, result, id); + return true; + }); + calls.add(() -> { + t1_3(wo, result, id); + return true; + }); + calls.add(() -> { + t1_4(wo, result, id); + return true; + }); + calls.add(() -> { + b1_2(wo, result, id); + return true; + }); + calls.add(() -> { + t1_5(wo, result, id); + return true; + }); + calls.add(() -> { + t1_6(wo, result, id); + return true; + }); + calls.add(() -> { + b1_2_5(wo, result, id); + return true; + }); + calls.add(() -> { + t1_7(wo, result, id); + return true; + }); + calls.add(() -> { + t1_8(wo, result, id); + return true; + }); + calls.add(() -> { + b1_3(wo, result, id); + return true; + }); + calls.add(() -> { + i1_9(wo, result, id); + return true; + }); + calls.add(() -> { + t1_10(wo, result, id); + return true; + }); + calls.add(() -> { + t1_11(wo, result, id); + return true; + }); + calls.add(() -> { + b1_4(wo, result, id); + return true; + }); + calls.add(() -> { + i1_12(wo, result, id); + return true; + }); + calls.add(() -> { + i1_13(wo, result, id); + return true; + }); + calls.add(() -> { + t1_14(wo, result, id); + return true; + }); + calls.add(() -> { + b2_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_1(wo, result, id); + return true; + }); + calls.add(() -> { + b2_1_5(wo, result, id); + return true; + }); + calls.add(() -> { + i2_2(wo, result, id); + return true; + }); + calls.add(() -> { + t2_3(wo, result, id); + return true; + }); + calls.add(() -> { + t2_4(wo, result, id); + return true; + }); + calls.add(() -> { + i2_5(wo, result, id); + return true; + }); + calls.add(() -> { + b2_1_6(wo, result, id); + return true; + }); + calls.add(() -> { + i2_6(wo, result, id); + return true; + }); + calls.add(() -> { + t2_7(wo, result, id); + return true; + }); + calls.add(() -> { + i2_8(wo, result, id); + return true; + }); + calls.add(() -> { + b2_2_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_9(wo, result, id); + return true; + }); + calls.add(() -> { + t2_10(wo, result, id); + return true; + }); + calls.add(() -> { + t2_11(wo, result, id); + return true; + }); + calls.add(() -> { + i2_12(wo, result, id); + return true; + }); + calls.add(() -> { + b2_3_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_13(wo, result, id); + return true; + }); + calls.add(() -> { + t2_14(wo, result, id); + return true; + }); + calls.add(() -> { + t2_15(wo, result, id); + return true; + }); + calls.add(() -> { + b2_4_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_16(wo, result, id); + return true; + }); + calls.add(() -> { + i2_17(wo, result, id); + return true; + }); + calls.add(() -> { + b2_5_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_18(wo, result, id); + return true; + }); + calls.add(() -> { + t2_19(wo, result, id); + return true; + }); + calls.add(() -> { + t2_20(wo, result, id); + return true; + }); + calls.add(() -> { + b2_6_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_21(wo, result, id); + return true; + }); + calls.add(() -> { + i2_22(wo, result, id); + return true; + }); + calls.add(() -> { + b2_6_6(wo, result, id); + return true; + }); + calls.add(() -> { + i2_23(wo, result, id); + return true; + }); + calls.add(() -> { + t2_24(wo, result, id); + return true; + }); + calls.add(() -> { + t2_25(wo, result, id); + return true; + }); + calls.add(() -> { + i2_26(wo, result, id); + return true; + }); + calls.add(() -> { + b2_7_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_27(wo, result, id); + return true; + }); + calls.add(() -> { + t2_28(wo, result, id); + return true; + }); + calls.add(() -> { + i2_29(wo, result, id); + return true; + }); + calls.add(() -> { + b2_8_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_30(wo, result, id); + return true; + }); + calls.add(() -> { + t2_31(wo, result, id); + return true; + }); + calls.add(() -> { + t2_32(wo, result, id); + return true; + }); + calls.add(() -> { + i2_33(wo, result, id); + return true; + }); + calls.add(() -> { + b2_9_1(wo, result, id); + return true; + }); + calls.add(() -> { + i2_34(wo, result, id); + return true; + }); + calls.add(() -> { + t2_35(wo, result, id); + return true; + }); + calls.add(() -> { + t2_36(wo, result, id); + return true; + }); + calls.add(() -> { + i3_1(wo, result, id); + return true; + }); + calls.add(() -> { + b3_1_1(wo, result, id); + return true; + }); + calls.add(() -> { + i3_2(wo, result, id); + return true; + }); + calls.add(() -> { + t3_3(wo, result, id); + return true; + }); + calls.add(() -> { + t3_4(wo, result, id); + return true; + }); + calls.add(() -> { + b3_2_1(wo, result, id); + return true; + }); + calls.add(() -> { + i3_5(wo, result, id); + return true; + }); + calls.add(() -> { + b3_2_5(wo, result, id); + return true; + }); + calls.add(() -> { + i3_6(wo, result, id); + return true; + }); + calls.add(() -> { + t3_7(wo, result, id); + return true; + }); + calls.add(() -> { + t3_8(wo, result, id); + return true; + }); + calls.add(() -> { + i3_9(wo, result, id); + return true; + }); + calls.add(() -> { + b3_3_1(wo, result, id); + return true; + }); + calls.add(() -> { + i3_10(wo, result, id); + return true; + }); + calls.add(() -> { + t3_11(wo, result, id); + return true; + }); + calls.add(() -> { + t3_12(wo, result, id); + return true; + }); + calls.add(() -> { + i4_1(wo, result, id); + return true; + }); + calls.add(() -> { + b4_1_1(wo, result, id); + return true; + }); + calls.add(() -> { + i4_2(wo, result, id); + return true; + }); + calls.add(() -> { + t4_3(wo, result, id); + return true; + }); + calls.add(() -> { + t4_4(wo, result, id); + return true; + }); + calls.add(() -> { + b4_2_1(wo, result, id); + return true; + }); + calls.add(() -> { + i4_5(wo, result, id); + return true; + }); + calls.add(() -> { + t4_6(wo, result, id); + return true; + }); + calls.add(() -> { + t4_7(wo, result, id); + return true; + }); + calls.add(() -> { + i4_8(wo, result, id); + return true; + }); + calls.add(() -> { + b4_3_1(wo, result, id); + return true; + }); + calls.add(() -> { + i4_9(wo, result, id); + return true; + }); + calls.add(() -> { + t4_10(wo, result, id); + return true; + }); + calls.add(() -> { + t4_11(wo, result, id); + return true; + }); + calls.add(() -> { + i4_12(wo, result, id); + return true; + }); + calls.add(() -> { + b4_4_1(wo, result, id); + return true; + }); + calls.add(() -> { + i4_13(wo, result, id); + return true; + }); + calls.add(() -> { + t4_14(wo, result, id); + return true; + }); + calls.add(() -> { + t4_15(wo, result, id); + return true; + }); + calls.add(() -> { + b5_1_1(wo, result, id); + return true; + }); + calls.add(() -> { + i5_1(wo, result, id); + return true; + }); + calls.add(() -> { + b5_1_5(wo, result, id); + return true; + }); + calls.add(() -> { + i5_2(wo, result, id); + return true; + }); + calls.add(() -> { + t5_3(wo, result, id); + return true; + }); + calls.add(() -> { + t5_4(wo, result, id); + return true; + }); + + calls.forEach(threadService::submit); + calls.forEach(fn -> { + try { + threadService.take(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + }); + log.info("多线程主线程结束执行"); + WordOperator wo2 = WordOperator.twoReplaceWord(wo); + wo2.replaceTextPlus(result); + return wo2; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new JeecgBootException(e); + } + } + + public WordOperator createWordTjfxB(String id) { + String templateName = "exp1\\student-tjfx.docx"; + try { + final WordOperator wo = ExportWord.getWordOperator(templateName); + Map result = Maps.newHashMap(); + + i1_13(wo, result, id); + + WordOperator wo2 = WordOperator.twoReplaceWord(wo); + wo2.replaceTextPlus(result); + return wo2; + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new JeecgBootException(e); + } } /** @@ -536,18 +565,34 @@ public class BlStuAnswerServiceImpl extends ServiceImpl dataList, int i) { + var data = dataList.get(i); + if(Integer.parseInt(data) == 0){ + return getNotZeroData(dataList, --i); + } else { + return i; + } + } + /** * 堆叠横向柱状图 * @param list * @return */ public String getStackHistogram(List> list) { - var colorList = List.of("#0f447f","#2350a0", "#008ac8", "#57b8e7", "beedf8"); + return getStackHistogram(list, true); + } + + /** + * 堆叠横向柱状图 + * @param list + * @return + */ + public String getStackHistogram(List> list, boolean isAutoCompletionPercentage ) { + var colorList = List.of("#0f447f","#2350a0", "#008ac8", "#57b8e7", "#beedf8"); AtomicInteger i = new AtomicInteger(0); Function getColor = _i -> { if(colorList.size() - 1 < _i.get()) { @@ -608,6 +672,37 @@ public class BlStuAnswerServiceImpl extends ServiceImpl data = list.get(0); Set nameSet = Sets.filter(data.keySet(), key -> !KEY.equals(key)); nameList.addAll(nameSet); + + //先计算是否100 + if(isAutoCompletionPercentage) { + list.forEach(map -> { + List keys = Lists.newArrayList(); + List __l = Lists.newArrayList(); + //清洗数据,不足100最后一个补n,超过100最后一个-1,减后为负数返还,找前一个减,同理,直到第0个 + var sumAtom = new AtomicReference<>(new BigDecimal("0")); + map.keySet().forEach(key -> { + if (!StringUtils.equals(KEY, key)) { + keys.add(key); + __l.add(getMapStr(map.get(key))); + sumAtom.set(sumAtom.get().add(new BigDecimal(getMapStr(map.get(key))))); + } + }); + var sumi = Integer.parseInt(NumberUtil.decimalFormat("#", sumAtom.get())); + var diffi = sumi - 100; + //计算差值 + if(diffi != 0){ + //大了,减一减 + var index = getNotZeroData(__l,__l.size()-1); + var lastNumStr = __l.get(index); + //加上﹣的差值 + var outNum = new BigDecimal(lastNumStr).add(new BigDecimal(diffi).negate()); + var key = keys.get(index); + //返还过去 + map.put(key, NumberUtil.decimalFormat("#", outNum)); + } + }); + } + Map> valueListMap = Maps.newHashMap(); //组装数据 list.forEach(x -> { @@ -622,6 +717,8 @@ public class BlStuAnswerServiceImpl extends ServiceImpl { if(valueListMap.containsKey(x)) { @@ -632,9 +729,6 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b1_1_1", baseMapper.b1_1_1(id)); - result.put("b1_1_2", baseMapper.b1_1_2(id)); - result.put("b1_1_3", baseMapper.b1_1_3(id)); - result.put("b1_1_4", baseMapper.b1_1_4(id)); + result.put("b1_1_1", getMapStr(baseMapper.b1_1_1(id))); + result.put("b1_1_2", getMapStr(baseMapper.b1_1_2(id))); + result.put("b1_1_3", getMapStr(baseMapper.b1_1_3(id))); + result.put("b1_1_4", getMapStr(baseMapper.b1_1_4(id))); } //图片i1_2 @@ -939,10 +1033,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b1_2_1", baseMapper.b1_2_1(id)); - result.put("b1_2_2", baseMapper.b1_2_2(id)); - result.put("b1_2_3", baseMapper.b1_2_3(id)); - result.put("b1_2_4", baseMapper.b1_2_4(id)); + result.put("b1_2_1", getMapStr(baseMapper.b1_2_1(id))); + result.put("b1_2_2", getMapStr(baseMapper.b1_2_2(id))); + result.put("b1_2_3", getMapStr(baseMapper.b1_2_3(id))); + result.put("b1_2_4", getMapStr(baseMapper.b1_2_4(id))); } //表格 t1_5 @@ -981,10 +1075,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b1_2_5", baseMapper.b1_2_5(id)); - result.put("b1_2_6", baseMapper.b1_2_6(id)); - result.put("b1_2_7", baseMapper.b1_2_7(id)); - result.put("b1_2_8", baseMapper.b1_2_8(id)); + result.put("b1_2_5", getMapStr(baseMapper.b1_2_5(id))); + result.put("b1_2_6", getMapStr(baseMapper.b1_2_6(id))); + result.put("b1_2_7", getMapStr(baseMapper.b1_2_7(id))); + result.put("b1_2_8", getMapStr(baseMapper.b1_2_8(id))); } //表格 t1_7 @@ -1024,10 +1118,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b1_3_1", baseMapper.b1_3_1(id)); - result.put("b1_3_2", baseMapper.b1_3_2(id)); - result.put("b1_3_3", baseMapper.b1_3_3(id)); - result.put("b1_3_4", baseMapper.b1_3_4(id)); + result.put("b1_3_1", getMapStr(baseMapper.b1_3_1(id))); + result.put("b1_3_2", getMapStr(baseMapper.b1_3_2(id))); + result.put("b1_3_3", getMapStr(baseMapper.b1_3_3(id))); + result.put("b1_3_4", getMapStr(baseMapper.b1_3_4(id))); } //图片i1_9 @@ -1073,8 +1167,8 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b1_4_1", baseMapper.b1_4_1(id)); - result.put("b1_4_2", baseMapper.b1_4_2(id)); + result.put("b1_4_1", getMapStr(baseMapper.b1_4_1(id))); + result.put("b1_4_2", getMapStr(baseMapper.b1_4_2(id))); } //图片i1_12 @@ -1110,10 +1204,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_1_1", baseMapper.b2_1_1(id)); - result.put("b2_1_2", baseMapper.b2_1_2(id)); - result.put("b2_1_3", baseMapper.b2_1_3(id)); - result.put("b2_1_4", baseMapper.b2_1_4(id)); + result.put("b2_1_1", getMapStr(baseMapper.b2_1_1(id))); + result.put("b2_1_2", getMapStr(baseMapper.b2_1_2(id))); + result.put("b2_1_3", getMapStr(baseMapper.b2_1_3(id))); + result.put("b2_1_4", getMapStr(baseMapper.b2_1_4(id))); } //图片i2_1 @@ -1124,7 +1218,7 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_1_5", baseMapper.b2_1_5(id)); + result.put("b2_1_5", getMapStr(baseMapper.b2_1_5(id))); } //图片i2_2 public void i2_2(WordOperator wo, Map result, String id) { @@ -1171,10 +1265,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_1_6", baseMapper.b2_1_6(id)); - result.put("b2_1_7", baseMapper.b2_1_7(id)); - result.put("b2_1_8", baseMapper.b2_1_8(id)); - result.put("b2_1_9", baseMapper.b2_1_9(id)); + result.put("b2_1_6", getMapStr(baseMapper.b2_1_6(id))); + result.put("b2_1_7", getMapStr(baseMapper.b2_1_7(id))); + result.put("b2_1_8", getMapStr(baseMapper.b2_1_8(id))); + result.put("b2_1_9", getMapStr(baseMapper.b2_1_9(id))); } //图片i2_6 @@ -1211,12 +1305,12 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_2_1", baseMapper.b2_2_1(id)); - result.put("b2_2_2", baseMapper.b2_2_2(id)); - result.put("b2_2_3", baseMapper.b2_2_3(id)); - result.put("b2_2_4", baseMapper.b2_2_4(id)); - result.put("b2_2_5", baseMapper.b2_2_5(id)); - result.put("b2_2_6", baseMapper.b2_2_6(id)); + result.put("b2_2_1", getMapStr(baseMapper.b2_2_1(id))); + result.put("b2_2_2", getMapStr(baseMapper.b2_2_2(id))); + result.put("b2_2_3", getMapStr(baseMapper.b2_2_3(id))); + result.put("b2_2_4", getMapStr(baseMapper.b2_2_4(id))); + result.put("b2_2_5", getMapStr(baseMapper.b2_2_5(id))); + result.put("b2_2_6", getMapStr(baseMapper.b2_2_6(id))); } //图片i2_9 @@ -1272,10 +1366,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_3_1", baseMapper.b2_3_1(id)); - result.put("b2_3_2", baseMapper.b2_3_2(id)); - result.put("b2_3_3", baseMapper.b2_3_3(id)); - result.put("b2_3_4", baseMapper.b2_3_4(id)); + result.put("b2_3_1", getMapStr(baseMapper.b2_3_1(id))); + result.put("b2_3_2", getMapStr(baseMapper.b2_3_2(id))); + result.put("b2_3_3", getMapStr(baseMapper.b2_3_3(id))); + result.put("b2_3_4", getMapStr(baseMapper.b2_3_4(id))); } //图片i2_13 public void i2_13(WordOperator wo, Map result, String id) { @@ -1321,12 +1415,12 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_4_1", baseMapper.b2_4_1(id)); - result.put("b2_4_2", baseMapper.b2_4_2(id)); - result.put("b2_4_3", baseMapper.b2_4_3(id)); - result.put("b2_4_4", baseMapper.b2_4_4(id)); - result.put("b2_4_5", baseMapper.b2_4_5(id)); - result.put("b2_4_6", baseMapper.b2_4_6(id)); + result.put("b2_4_1", getMapStr(baseMapper.b2_4_1(id))); + result.put("b2_4_2", getMapStr(baseMapper.b2_4_2(id))); + result.put("b2_4_3", getMapStr(baseMapper.b2_4_3(id))); + result.put("b2_4_4", getMapStr(baseMapper.b2_4_4(id))); + result.put("b2_4_5", getMapStr(baseMapper.b2_4_5(id))); + result.put("b2_4_6", getMapStr(baseMapper.b2_4_6(id))); } //图片i2_16 @@ -1345,9 +1439,9 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_5_1", baseMapper.b2_5_1(id)); - result.put("b2_5_2", baseMapper.b2_5_2(id)); - result.put("b2_5_3", baseMapper.b2_5_3(id)); + result.put("b2_5_1", getMapStr(baseMapper.b2_5_1(id))); + result.put("b2_5_2", getMapStr(baseMapper.b2_5_2(id))); + result.put("b2_5_3", getMapStr(baseMapper.b2_5_3(id))); } //图片i2_18 public void i2_18(WordOperator wo, Map result, String id) { @@ -1390,11 +1484,11 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_6_1", baseMapper.b2_6_1(id)); - result.put("b2_6_2", baseMapper.b2_6_2(id)); - result.put("b2_6_3", baseMapper.b2_6_3(id)); - result.put("b2_6_4", baseMapper.b2_6_4(id)); - result.put("b2_6_5", baseMapper.b2_6_5(id)); + result.put("b2_6_1", getMapStr(baseMapper.b2_6_1(id))); + result.put("b2_6_2", getMapStr(baseMapper.b2_6_2(id))); + result.put("b2_6_3", getMapStr(baseMapper.b2_6_3(id))); + result.put("b2_6_4", getMapStr(baseMapper.b2_6_4(id))); + result.put("b2_6_5", getMapStr(baseMapper.b2_6_5(id))); } //图片i2_21 @@ -1413,11 +1507,11 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_6_6", baseMapper.b2_6_6(id)); - result.put("b2_6_7", baseMapper.b2_6_7(id)); - result.put("b2_6_8", baseMapper.b2_6_8(id)); - result.put("b2_6_9", baseMapper.b2_6_9(id)); - result.put("b2_6_10", baseMapper.b2_6_10(id)); + result.put("b2_6_6", getMapStr(baseMapper.b2_6_6(id))); + result.put("b2_6_7", getMapStr(baseMapper.b2_6_7(id))); + result.put("b2_6_8", getMapStr(baseMapper.b2_6_8(id))); + result.put("b2_6_9", getMapStr(baseMapper.b2_6_9(id))); + result.put("b2_6_10", getMapStr(baseMapper.b2_6_10(id))); } //图片i2_23 @@ -1473,10 +1567,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_7_1", baseMapper.b2_7_1(id)); - result.put("b2_7_2", baseMapper.b2_7_2(id)); - result.put("b2_7_3", baseMapper.b2_7_3(id)); - result.put("b2_7_4", baseMapper.b2_7_4(id)); + result.put("b2_7_1", getMapStr(baseMapper.b2_7_1(id))); + result.put("b2_7_2", getMapStr(baseMapper.b2_7_2(id))); + result.put("b2_7_3", getMapStr(baseMapper.b2_7_3(id))); + result.put("b2_7_4", getMapStr(baseMapper.b2_7_4(id))); } //图片i2_27 public void i2_27(WordOperator wo, Map result, String id) { @@ -1509,11 +1603,11 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_8_1", baseMapper.b2_8_1(id)); - result.put("b2_8_2", baseMapper.b2_8_2(id)); - result.put("b2_8_3", baseMapper.b2_8_3(id)); - result.put("b2_8_4", baseMapper.b2_8_4(id)); - result.put("b2_8_5", baseMapper.b2_8_5(id)); + result.put("b2_8_1", getMapStr(baseMapper.b2_8_1(id))); + result.put("b2_8_2", getMapStr(baseMapper.b2_8_2(id))); + result.put("b2_8_3", getMapStr(baseMapper.b2_8_3(id))); + result.put("b2_8_4", getMapStr(baseMapper.b2_8_4(id))); + result.put("b2_8_5", getMapStr(baseMapper.b2_8_5(id))); } //图片i2_30 public void i2_30(WordOperator wo, Map result, String id) { @@ -1564,13 +1658,13 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b2_9_1", baseMapper.b2_9_1(id)); - result.put("b2_9_2", baseMapper.b2_9_2(id)); - result.put("b2_9_3", baseMapper.b2_9_3(id)); - result.put("b2_9_4", baseMapper.b2_9_4(id)); - result.put("b2_9_5", baseMapper.b2_9_5(id)); - result.put("b2_9_6", baseMapper.b2_9_6(id)); - result.put("b2_9_7", baseMapper.b2_9_7(id)); + result.put("b2_9_1", getMapStr(baseMapper.b2_9_1(id))); + result.put("b2_9_2", getMapStr(baseMapper.b2_9_2(id))); + result.put("b2_9_3", getMapStr(baseMapper.b2_9_3(id))); + result.put("b2_9_4", getMapStr(baseMapper.b2_9_4(id))); + result.put("b2_9_5", getMapStr(baseMapper.b2_9_5(id))); + result.put("b2_9_6", getMapStr(baseMapper.b2_9_6(id))); + result.put("b2_9_7", getMapStr(baseMapper.b2_9_7(id))); } //图片i2_34 public void i2_34(WordOperator wo, Map result, String id) { @@ -1623,10 +1717,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b3_1_1", baseMapper.b3_1_1(id)); - result.put("b3_1_2", baseMapper.b3_1_2(id)); - result.put("b3_1_3", baseMapper.b3_1_3(id)); - result.put("b3_1_4", baseMapper.b3_1_4(id)); + result.put("b3_1_1", getMapStr(baseMapper.b3_1_1(id))); + result.put("b3_1_2", getMapStr(baseMapper.b3_1_2(id))); + result.put("b3_1_3", getMapStr(baseMapper.b3_1_3(id))); + result.put("b3_1_4", getMapStr(baseMapper.b3_1_4(id))); } //图片i3_2 public void i3_2(WordOperator wo, Map result, String id) { @@ -1670,10 +1764,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b3_2_1", baseMapper.b3_2_1(id)); - result.put("b3_2_2", baseMapper.b3_2_2(id)); - result.put("b3_2_3", baseMapper.b3_2_3(id)); - result.put("b3_2_4", baseMapper.b3_2_4(id)); + result.put("b3_2_1", getMapStr(baseMapper.b3_2_1(id))); + result.put("b3_2_2", getMapStr(baseMapper.b3_2_2(id))); + result.put("b3_2_3", getMapStr(baseMapper.b3_2_3(id))); + result.put("b3_2_4", getMapStr(baseMapper.b3_2_4(id))); } //图片i3_5 public void i3_5(WordOperator wo, Map result, String id) { @@ -1684,7 +1778,7 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b3_2_5", baseMapper.b3_2_5(id)); + result.put("b3_2_5", getMapStr(baseMapper.b3_2_5(id))); } //图片i3_6 public void i3_6(WordOperator wo, Map result, String id) { @@ -1730,11 +1824,11 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b3_3_1", baseMapper.b3_3_1(id)); - result.put("b3_3_2", baseMapper.b3_3_2(id)); - result.put("b3_3_3", baseMapper.b3_3_3(id)); - result.put("b3_3_4", baseMapper.b3_3_4(id)); - result.put("b3_3_5", baseMapper.b3_3_5(id)); + result.put("b3_3_1", getMapStr(baseMapper.b3_3_1(id))); + result.put("b3_3_2", getMapStr(baseMapper.b3_3_2(id))); + result.put("b3_3_3", getMapStr(baseMapper.b3_3_3(id))); + result.put("b3_3_4", getMapStr(baseMapper.b3_3_4(id))); + result.put("b3_3_5", getMapStr(baseMapper.b3_3_5(id))); } //图片i3_10 public void i3_10(WordOperator wo, Map result, String id) { @@ -1785,10 +1879,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b4_1_1", baseMapper.b4_1_1(id)); - result.put("b4_1_2", baseMapper.b4_1_2(id)); - result.put("b4_1_3", baseMapper.b4_1_3(id)); - result.put("b4_1_4", baseMapper.b4_1_4(id)); + result.put("b4_1_1", getMapStr(baseMapper.b4_1_1(id))); + result.put("b4_1_2", getMapStr(baseMapper.b4_1_2(id))); + result.put("b4_1_3", getMapStr(baseMapper.b4_1_3(id))); + result.put("b4_1_4", getMapStr(baseMapper.b4_1_4(id))); } //图片i4_2 public void i4_2(WordOperator wo, Map result, String id) { @@ -1833,12 +1927,12 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b4_2_1", baseMapper.b4_2_1(id)); - result.put("b4_2_2", baseMapper.b4_2_2(id)); - result.put("b4_2_3", baseMapper.b4_2_3(id)); - result.put("b4_2_4", baseMapper.b4_2_4(id)); - result.put("b4_2_5", baseMapper.b4_2_5(id)); - result.put("b4_2_6", baseMapper.b4_2_6(id)); + result.put("b4_2_1", getMapStr(baseMapper.b4_2_1(id))); + result.put("b4_2_2", getMapStr(baseMapper.b4_2_2(id))); + result.put("b4_2_3", getMapStr(baseMapper.b4_2_3(id))); + result.put("b4_2_4", getMapStr(baseMapper.b4_2_4(id))); + result.put("b4_2_5", getMapStr(baseMapper.b4_2_5(id))); + result.put("b4_2_6", getMapStr(baseMapper.b4_2_6(id))); } //图片i4_5 public void i4_5(WordOperator wo, Map result, String id) { @@ -1892,11 +1986,11 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b4_3_1", baseMapper.b4_3_1(id)); - result.put("b4_3_2", baseMapper.b4_3_2(id)); - result.put("b4_3_3", baseMapper.b4_3_3(id)); - result.put("b4_3_4", baseMapper.b4_3_4(id)); - result.put("b4_3_5", baseMapper.b4_3_5(id)); + result.put("b4_3_1", getMapStr(baseMapper.b4_3_1(id))); + result.put("b4_3_2", getMapStr(baseMapper.b4_3_2(id))); + result.put("b4_3_3", getMapStr(baseMapper.b4_3_3(id))); + result.put("b4_3_4", getMapStr(baseMapper.b4_3_4(id))); + result.put("b4_3_5", getMapStr(baseMapper.b4_3_5(id))); } //图片i4_9 @@ -1952,12 +2046,12 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b4_4_1", baseMapper.b4_4_1(id)); - result.put("b4_4_2", baseMapper.b4_4_2(id)); - result.put("b4_4_3", baseMapper.b4_4_3(id)); - result.put("b4_4_4", baseMapper.b4_4_4(id)); - result.put("b4_4_5", baseMapper.b4_4_5(id)); - result.put("b4_4_6", baseMapper.b4_4_6(id)); + result.put("b4_4_1", getMapStr(baseMapper.b4_4_1(id))); + result.put("b4_4_2", getMapStr(baseMapper.b4_4_2(id))); + result.put("b4_4_3", getMapStr(baseMapper.b4_4_3(id))); + result.put("b4_4_4", getMapStr(baseMapper.b4_4_4(id))); + result.put("b4_4_5", getMapStr(baseMapper.b4_4_5(id))); + result.put("b4_4_6", getMapStr(baseMapper.b4_4_6(id))); } //图片i4_13 @@ -2007,10 +2101,10 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b5_1_1", baseMapper.b5_1_1(id)); - result.put("b5_1_2", baseMapper.b5_1_2(id)); - result.put("b5_1_3", baseMapper.b5_1_3(id)); - result.put("b5_1_4", baseMapper.b5_1_4(id)); + result.put("b5_1_1", getMapStr(baseMapper.b5_1_1(id))); + result.put("b5_1_2", getMapStr(baseMapper.b5_1_2(id))); + result.put("b5_1_3", getMapStr(baseMapper.b5_1_3(id))); + result.put("b5_1_4", getMapStr(baseMapper.b5_1_4(id))); } //图片i5_1 @@ -2022,7 +2116,7 @@ public class BlStuAnswerServiceImpl extends ServiceImpl result, String id) { - result.put("b5_1_5", baseMapper.b5_1_5(id)); + result.put("b5_1_5", getMapStr(baseMapper.b5_1_5(id))); } //图片i5_2 diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuInfo/entity/BlStuInfo.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuInfo/entity/BlStuInfo.java index 41907b9..cdbf936 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuInfo/entity/BlStuInfo.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/demo/blStuInfo/entity/BlStuInfo.java @@ -76,4 +76,15 @@ public class BlStuInfo implements Serializable { @Excel(name = "教师总人数", width = 15) @ApiModelProperty(value = "学生总人数") private java.lang.String stuSumno; + + /**最小样本数*/ + @Excel(name = "最小样有效本数", width = 15) + @ApiModelProperty(value = "最小样有效本数") + private Integer minNum; + + /**附件*/ + @Excel(name = "附件", width = 15) + @ApiModelProperty(value = "附件") + private java.lang.String filePath; + } diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/WebDriverUtil.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/WebDriverUtil.java index a0c2710..8ffd2f6 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/WebDriverUtil.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/WebDriverUtil.java @@ -74,12 +74,14 @@ public class WebDriverUtil { var file = new File(currentDir + File.separator + "applicationTemp"); var tempFile = new File(file.getPath() + File.separator + path); if(!tempFile.exists()){ + log.info("往缓存写入jar包里的资源:{}",tempFile.getPath()); var is = ResourceUtil.getStream(path); var out = FileUtil.getOutputStream(tempFile); IoUtil.copy(is, out); - IoUtil.close(is); IoUtil.close(out); + } else { + log.info("缓存文件【{}】已存在资源,如果源码中有变更,请删除“applicationTemp文件夹”",tempFile.getPath()); } return tempFile; } @@ -109,7 +111,7 @@ public class WebDriverUtil { try { driver = getWebDriver(); //访问网址 - log.info("往缓存写入jar包里的资源"); + //往缓存写入jar包里的资源 //把js拉过来 getUrl(global.getConfig("webDriver.webHTMLPath") + "/echarts.min.js"); if(StringUtils.isNotBlank(path)){ diff --git a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/word/WordOperator.java b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/word/WordOperator.java index 678d5dc..7be4f4a 100644 --- a/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/word/WordOperator.java +++ b/jeecg-boot/jeecg-module-demo/src/main/java/org/jeecg/modules/tools/word/WordOperator.java @@ -172,12 +172,10 @@ public class WordOperator { // run.addPicture(is,res,picPath,width, height); IoUtil.close(is); } catch (InvalidFormatException e) { - logger.error(e.toString()); - e.printStackTrace(); + logger.error(e.getMessage(),e); } catch (IOException e) { logger.error("没有找到相应的文件!"); - logger.error(e.toString()); - e.printStackTrace(); + logger.error(e.getMessage(),e); } } @@ -944,7 +942,7 @@ public class WordOperator { //染上背景色 // r.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.YELLOW); } catch (Exception e) { - e.printStackTrace(); + logger.error(e.getMessage(),e); r.setText("", 0); } return; @@ -970,7 +968,7 @@ public class WordOperator { //染上背景色 // r.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.YELLOW); } catch (Exception e) { - e.printStackTrace(); + logger.error(e.getMessage(),e); r.setText("", 0); } return; @@ -1018,6 +1016,7 @@ public class WordOperator { //染上背景色 // r.getCTR().addNewRPr().addNewHighlight().setVal(STHighlightColor.YELLOW); } catch (Exception e) { + logger.error(e.getMessage(),e); r.setText("", 0); } @@ -1243,7 +1242,7 @@ public class WordOperator { w2o = twoReplaceWord(wo); w2o.replaceTextPlus(result); } catch (Exception e) { - e.printStackTrace(); + logger.error(e.getMessage(),e); } //再次替换 return w2o; diff --git a/jeecg-boot/jeecg-module-demo/src/main/resources/officetemplates/exp1/student-tjfx.docx b/jeecg-boot/jeecg-module-demo/src/main/resources/officetemplates/exp1/student-tjfx.docx index 0933c862947c15b14255c1dce393d5809124081a..0f483feee439cc3e6d7af8bb573ece40b0ce2b96 100644 GIT binary patch delta 40414 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 A7XSbN delta 39347 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