diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index c277d49..c1da250 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -66,16 +66,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -86,6 +86,9 @@ org.springframework.boot spring-boot-maven-plugin ${spring-boot.version} + + true + diff --git a/ruoyi-modules/rouyi-scale/lib/aspose-words-15.8.0-jdk16.jar b/ruoyi-modules/rouyi-scale/lib/aspose-words-15.8.0-jdk16.jar new file mode 100644 index 0000000..c0e699f Binary files /dev/null and b/ruoyi-modules/rouyi-scale/lib/aspose-words-15.8.0-jdk16.jar differ diff --git a/ruoyi-modules/rouyi-scale/pom.xml b/ruoyi-modules/rouyi-scale/pom.xml index b7f18ea..e1ca38e 100644 --- a/ruoyi-modules/rouyi-scale/pom.xml +++ b/ruoyi-modules/rouyi-scale/pom.xml @@ -89,6 +89,14 @@ com.deepoove poi-tl + + + com.aspose.words + aspose-words + 15.12.0 + system + ${project.basedir}/lib/aspose-words-15.8.0-jdk16.jar + diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/EvaluationRecordController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/EvaluationRecordController.java index c2dcb38..b547243 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/EvaluationRecordController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/EvaluationRecordController.java @@ -1,12 +1,13 @@ package org.dromara.scale.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.util.PoitlIOUtils; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; @@ -17,12 +18,15 @@ import org.dromara.scale.domain.bo.BaseQueryBo; import org.dromara.scale.domain.bo.SysEvaluationRecordBo; import org.dromara.scale.domain.vo.SysEvaluationRecordVo; import org.dromara.scale.service.ISysEvaluationRecordService; +import org.dromara.scale.utils.AsposeUtil; +import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; -import java.io.OutputStream; +import java.io.InputStream; /** * 量测记录 @@ -54,16 +58,23 @@ public class EvaluationRecordController extends BaseController { @Log(title = "个人量测记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(BaseQueryBo bo, HttpServletResponse response) throws IOException { - XWPFTemplate template = sysEvaluationRecordService.getWordTemplate(bo); - //ExcelUtil.exportExcel(list, "量测记录", SysEvaluationRecordVo.class, response); + String filePath = sysEvaluationRecordService.getWordTemplate(bo); + File pdf = FileUtil.createTempFile(".pdf", true); + String pdfPath = pdf.getPath(); + File pdfFile = new File(pdfPath); + AsposeUtil.wordToPdf(filePath, pdfFile); FileUtils.setAttachmentResponseHeader(response, bo.getNickName() + "的报告" + "-" + bo.getScaleName()); - response.setContentType("application/octet-stream"); - OutputStream out = response.getOutputStream(); - BufferedOutputStream bos = new BufferedOutputStream(out); - template.write(bos); - bos.flush(); - out.flush(); - PoitlIOUtils.closeQuietlyMulti(template, bos, out); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8"); + try (InputStream inputStream = new FileInputStream(pdfFile)) { + int available = inputStream.available(); + IoUtil.copy(inputStream, response.getOutputStream(), available); + response.setContentLength(available); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } finally { + FileUtil.del(filePath); + FileUtil.del(pdfPath); + } } /** diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java index 1e9c8d0..9a53e82 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/controller/ScalePublishController.java @@ -1,12 +1,13 @@ package org.dromara.scale.controller; import cn.dev33.satoken.annotation.SaCheckPermission; -import com.deepoove.poi.XWPFTemplate; -import com.deepoove.poi.util.PoitlIOUtils; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.io.IoUtil; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; +import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.utils.file.FileUtils; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; @@ -22,12 +23,15 @@ import org.dromara.scale.domain.bo.SysScalePublishBo; import org.dromara.scale.domain.vo.EvaluationVo; import org.dromara.scale.domain.vo.SysScalePublishVo; import org.dromara.scale.service.ISysScalePublishService; +import org.dromara.scale.utils.AsposeUtil; +import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; import java.io.IOException; -import java.io.OutputStream; +import java.io.InputStream; import java.util.List; /** @@ -129,7 +133,6 @@ public class ScalePublishController extends BaseController { public R delete(@NotNull(message = "主键不能为空") @PathVariable Long batchNo) { return toAjax(sysScalePublishService.deleteById(batchNo)); } - /** * 导出量测记录列表 */ @@ -137,15 +140,22 @@ public class ScalePublishController extends BaseController { @Log(title = "场次量测记录", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(BaseQueryBo bo, HttpServletResponse response) throws IOException { - XWPFTemplate template = sysScalePublishService.getWordTemplate(bo); - //ExcelUtil.exportExcel(list, "量测记录", SysEvaluationRecordVo.class, response); - FileUtils.setAttachmentResponseHeader(response, bo.getSessionName() + "的报告"); - response.setContentType("application/octet-stream"); - OutputStream out = response.getOutputStream(); - BufferedOutputStream bos = new BufferedOutputStream(out); - template.write(bos); - bos.flush(); - out.flush(); - PoitlIOUtils.closeQuietlyMulti(template, bos, out); + String filePath = sysScalePublishService.getWordTemplate(bo); + File pdf = FileUtil.createTempFile(".pdf", true); + String pdfPath = pdf.getPath(); + File pdfFile = new File(pdfPath); + AsposeUtil.wordToPdf(filePath, pdfFile); + FileUtils.setAttachmentResponseHeader(response, bo.getSessionName() + "的报告"); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8"); + try (InputStream inputStream = new FileInputStream(pdfFile)) { + int available = inputStream.available(); + IoUtil.copy(inputStream, response.getOutputStream(), available); + response.setContentLength(available); + } catch (Exception e) { + throw new ServiceException(e.getMessage()); + } finally { + FileUtil.del(filePath); + FileUtil.del(pdfPath); + } } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/EvaluationRecordWordData.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/EvaluationRecordWordData.java index eea4860..04ae7fc 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/EvaluationRecordWordData.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/EvaluationRecordWordData.java @@ -17,6 +17,7 @@ import java.util.List; public class EvaluationRecordWordData { private String createTime; + private String schoolName; private String useTime; private String nickName; private String deptName; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/WordEvaluationFactor.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/WordEvaluationFactor.java index 77bd215..314df4a 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/WordEvaluationFactor.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/domain/word/WordEvaluationFactor.java @@ -19,6 +19,9 @@ public class WordEvaluationFactor { private BigDecimal totalScore; private BigDecimal score; private Integer status; + private String rangeName; + private BigDecimal minValue; + private BigDecimal maxValue; private String evalDesc; private String evalPropose; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java index c31f4f6..b0c197d 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/mapper/SysScalePublishMapper.java @@ -35,4 +35,6 @@ public interface SysScalePublishMapper extends BaseMapperPlus queryList(SysEvaluationRecordBo bo); - XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException; + String getWordTemplate(BaseQueryBo bo) throws IOException; diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java index eda564e..ddbbc8f 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/ISysScalePublishService.java @@ -1,6 +1,5 @@ package org.dromara.scale.service; -import com.deepoove.poi.XWPFTemplate; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.scale.domain.bo.BaseQueryBo; @@ -56,7 +55,7 @@ public interface ISysScalePublishService { List queryUndoneExportList(BaseQueryBo query); - XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException; + String getWordTemplate(BaseQueryBo bo) throws IOException; } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java index 2bb2386..a4eee0e 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysEvaluationRecordServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.scale.service.impl; +import cn.hutool.core.io.FileUtil; import cn.hutool.http.HtmlUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -27,10 +28,13 @@ import org.dromara.scale.mapper.SysScaleMapper; import org.dromara.scale.service.ISysEvaluationRecordService; import org.dromara.system.domain.vo.SysUserVo; import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysConfigService; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; +import java.io.File; import java.io.IOException; +import java.math.BigDecimal; import java.rmi.ServerException; import java.util.Date; import java.util.LinkedList; @@ -52,6 +56,8 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi private final SysScaleMapper scaleMapper; + private final ISysConfigService configService; + /** * 查询量测记录 */ @@ -90,7 +96,7 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi } @Override - public XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException { + public String getWordTemplate(BaseQueryBo bo) throws IOException { Long userId = bo.getUserId(); if (userId == null) { throw new ServerException("用户ID不能为空"); @@ -105,11 +111,14 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi } EvaluationRecordWordData wordData = new EvaluationRecordWordData(); + String name = configService.selectConfigByKey("sys.school.name"); + wordData.setScaleName(name); + SysEvaluationRecord sysEvaluationRecord = baseMapper.selectById(recordId); Date createTime = sysEvaluationRecord.getCreateTime(); Date updateTime = sysEvaluationRecord.getUpdateTime(); wordData.setCreateTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, createTime)); - wordData.setUseTime(DateUtils.getDatePoor(createTime,updateTime)); + wordData.setUseTime(DateUtils.getDatePoor(createTime, updateTime)); SysUserVo user = userMapper.selectUserById(userId); wordData.setNickName(user.getNickName()); @@ -125,10 +134,10 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi borderStyle.setColor("A6A6A6"); borderStyle.setSize(4); borderStyle.setType(XWPFTable.XWPFBorderType.SINGLE); - RowRenderData factorHeader = Rows.of("名称", "包含题目", "原始分", "得分").bgColor("F2F2F2").center() + RowRenderData factorHeader = Rows.of("名称", "包含题目", "原始分", "得分", "命中区间", "区间描述").bgColor("F2F2F2").center() .textColor("7F7f7F").textFontFamily("Hei").textFontSize(9).create(); TableRenderData factorTable = Tables.ofA4MediumWidth().addRow(factorHeader).border(borderStyle) - .width(14.63d,null).center().create(); + .width(14.63d, null).center().create(); //一并处理数据 int size = answerVos.size(); LinkedList factors = new LinkedList<>(); @@ -138,9 +147,19 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi for (int i = 0; i < size; i++) { WordEvaluationFactor answerVo = answerVos.get(i); double score = answerVo.getScore().doubleValue(); + StringBuilder range = new StringBuilder(); + BigDecimal minValue = answerVo.getMinValue(); + BigDecimal maxValue = answerVo.getMaxValue(); + if (minValue != null) { + range.append(minValue.doubleValue()); + } + range.append("~"); + if (maxValue != null) { + range.append(maxValue.doubleValue()); + } //处理因子得分表格 RowRenderData one = Rows.of(answerVo.getFactorName(), answerVo.getQuestionNum().toString(), - answerVo.getTotalScore().toString(), answerVo.getScore().toString()).center().create(); + answerVo.getTotalScore().toString(), answerVo.getScore().toString(), range.toString(), answerVo.getRangeName()).center().create(); factorTable.addRow(one); //处理测评结果 WordFactor wordFactor = new WordFactor(); @@ -171,6 +190,11 @@ public class SysEvaluationRecordServiceImpl implements ISysEvaluationRecordServi ClassPathResource classPathResource = new ClassPathResource("word/personalTemplate.docx"); Configure config = Configure.builder() .bind("factors", new LoopRowTableRenderPolicy()).useSpringEL().build(); - return XWPFTemplate.compile(classPathResource.getInputStream(),config).render(wordData); + XWPFTemplate template = XWPFTemplate.compile(classPathResource.getInputStream(), config).render(wordData); + + File docx = FileUtil.createTempFile(".docx", true); + String wordPath = docx.getPath(); + template.writeToFile(wordPath); + return wordPath; } } diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java index 0a5aeec..75add79 100644 --- a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/service/impl/SysScalePublishServiceImpl.java @@ -1,5 +1,6 @@ package org.dromara.scale.service.impl; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -37,9 +38,11 @@ import org.dromara.system.domain.SysUser; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.mapper.SysDeptMapper; import org.dromara.system.mapper.SysUserMapper; +import org.dromara.system.service.ISysConfigService; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; +import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; @@ -72,6 +75,8 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { private final SysWarnRecordMapper warnMapper; + private final ISysConfigService configService; + /** * 查询量发布 */ @@ -115,6 +120,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { */ @Override public Boolean insertByBo(SysScalePublishBo bo) { + int i = baseMapper.selectCountScalePublish(); + String s = configService.selectConfigByKey("sys.publish.limit"); + int limit = Integer.parseInt(s); + if(limit != -1 && i>=limit){ + throw new ServiceException("发布数量超出系统限制"); + } LoginUser loginUser = getLoginUser(); SysScalePublish add = MapstructUtils.convert(bo, SysScalePublish.class); add.setStatus(StatusEnum.IN_USE.getValue()); @@ -273,7 +284,7 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { } @Override - public XWPFTemplate getWordTemplate(BaseQueryBo bo) throws IOException { + public String getWordTemplate(BaseQueryBo bo) throws IOException { Long batchNo = bo.getBatchNo(); if (batchNo == null) { throw new ServerException("场次Id不能为空"); @@ -314,7 +325,6 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { .series("", new Integer[]{maleNum, femaleNum}).create(); wordData.setSexChart(sexChart); - int undoneNum = recordMapper.selectUndoneNumByBatchNo(batchNo); int recordNum = completeNum + undoneNum; int completePercent = processHalfUpPercent(completeNum, recordNum); @@ -402,7 +412,12 @@ public class SysScalePublishServiceImpl implements ISysScalePublishService { ClassPathResource classPathResource = new ClassPathResource("word/groupTemplate.docx"); Configure config = Configure.builder() .bind("warnCharts", new LoopRowTableRenderPolicy()).useSpringEL().build(); - return XWPFTemplate.compile(classPathResource.getInputStream(), config).render(wordData); + XWPFTemplate template = XWPFTemplate.compile(classPathResource.getInputStream(), config).render(wordData); + + File docx = FileUtil.createTempFile(".docx", true); + String wordPath = docx.getPath(); + template.writeToFile(wordPath); + return wordPath; } private int processHalfUpPercent(int num, int total) { diff --git a/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/utils/AsposeUtil.java b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/utils/AsposeUtil.java new file mode 100644 index 0000000..7ac1a62 --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/java/org/dromara/scale/utils/AsposeUtil.java @@ -0,0 +1,46 @@ +package org.dromara.scale.utils; + +import com.aspose.words.Document; +import com.aspose.words.License; +import com.aspose.words.SaveFormat; +import lombok.SneakyThrows; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +/** + *

TODO

+ * + * @author cjw + * @version V1.0.0 + * @date 2024/5/20 15:03 + */ +public class AsposeUtil { + /** + * 加载license 用于破解 不生成水印 + */ + @SneakyThrows + private static void getLicense() { + try (InputStream is = AsposeUtil.class.getClassLoader().getResourceAsStream("License.xml")) { + License license = new License(); + license.setLicense(is); + } + } + + /** + * word转pdf + * + * @param wordPath word文件保存的路径 + * @param pdfFile 转换后pdf文件保存的路径 + */ + @SneakyThrows + public static void wordToPdf(String wordPath, File pdfFile) { + getLicense(); + try (FileOutputStream os = new FileOutputStream(pdfFile)) { + Document doc = new Document(wordPath); + doc.save(os, SaveFormat.PDF); + } + } + +} diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/License.xml b/ruoyi-modules/rouyi-scale/src/main/resources/License.xml new file mode 100644 index 0000000..2cbce45 --- /dev/null +++ b/ruoyi-modules/rouyi-scale/src/main/resources/License.xml @@ -0,0 +1,15 @@ + + + + Aspose.Total for Java + Aspose.Words for Java + + Enterprise + 20991231 + 20991231 + 8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7 + + + sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU= + + diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml index 1e98d61..48f478c 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysEvaluationRecordMapper.xml @@ -39,6 +39,9 @@ sf.question_score as `totalScore`, ec.score as `score`, ec.status as `status`, + sfr.range_name as `rangeName`, + sfr.min_value as `minValue`, + sfr.max_value as `maxValue`, sfr.eval_desc as `evalDesc`, sfr.eval_propose as `evalPropose` from sys_evaluation_conclusion ec diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml index 76e07f6..d0c7526 100644 --- a/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml +++ b/ruoyi-modules/rouyi-scale/src/main/resources/mapper/scale/SysScalePublishMapper.xml @@ -84,4 +84,9 @@ where er.batch_no = #{batchNo} order by u.user_id + + diff --git a/ruoyi-modules/rouyi-scale/src/main/resources/word/personalTemplate.docx b/ruoyi-modules/rouyi-scale/src/main/resources/word/personalTemplate.docx index fc5ba33..802723b 100644 Binary files a/ruoyi-modules/rouyi-scale/src/main/resources/word/personalTemplate.docx and b/ruoyi-modules/rouyi-scale/src/main/resources/word/personalTemplate.docx differ