From 6dfbcfe0ded79257278f6a87ab6e5b99155d755d Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Mon, 22 May 2023 11:00:47 +0800 Subject: [PATCH 01/44] =?UTF-8?q?feat:=E6=8A=A5=E5=91=8A=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5=E2=80=9C?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E4=BA=BA=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/mybatis/mapper/mysql/ReportManageMapper.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index 982c730..51fa0ed 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -185,11 +185,14 @@ t.maincontent, t.confidentialLevel, t.privacyLevel, + t.createUserId, + tu.USNAME AS createUserName, IF(bpn.id is null,1, IF(bpn.SUBMIT_STATUS = 1,0,1) ) as isAct FROM `tt_report_manage` AS t LEFT JOIN bus_process_name as bpn on bpn.data_id = t.id and bpn.prc_type = '5' + LEFT JOIN ts_user as tu ON tu.USID = t.createUserId WHERE t.del_flag = 0 From a4a4189181f73d352d1e0e6346d55a269b1ccc4f Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Tue, 23 May 2023 10:30:48 +0800 Subject: [PATCH 02/44] =?UTF-8?q?ci:=E6=B8=85=E7=90=86=E8=A1=A8=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=90=8E=E6=97=A0=E6=95=88=E7=9A=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=92=8CSQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/IReportServiceImpl.java | 25 ++++++++----------- .../mapper/mysql/ReportManageMapper.xml | 4 --- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index b5da093..d8a6284 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -7,7 +7,6 @@ import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; import com.adc.da.report.dao.mysql.ReportLabelDao; -import com.adc.da.report.dao.mysql.ReportUserDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; @@ -68,9 +67,6 @@ public class IReportServiceImpl extends ServiceImpl @Resource private ReportDao reportDao; - @Resource - private ReportUserDao reportUserDao; - @Resource private ReportLabelDao reportLabelDao; @@ -174,6 +170,7 @@ public class IReportServiceImpl extends ServiceImpl */ @Override @Transactional(rollbackFor = Exception.class) + @Deprecated public String insert(ReportEntity entity, List labelList, List reportPreviewUserIdList, List reportPreviewAndDownloadUserIdList) throws IOException { @@ -236,10 +233,10 @@ public class IReportServiceImpl extends ServiceImpl }); } else { - entity.setUpdateDate(format.format(new Date())); - reportDao.updateById(entity); - reportUserDao.delete(new QueryWrapper() - .eq("reportId", entity.getId())); +// entity.setUpdateDate(format.format(new Date())); +// reportDao.updateById(entity); +// reportUserDao.delete(new QueryWrapper() +// .eq("reportId", entity.getId())); //修改报表标签关系表(先删后增) iReportLabelService.deleteReportLabelByReportId(new String[]{entity.getId()}); @@ -540,9 +537,9 @@ public class IReportServiceImpl extends ServiceImpl c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); c.setFileName(fileEntity.getFileName()); - List userIdList = reportUserDao.selectList( - new QueryWrapper().eq("reportId", c.getId())) - .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); +// List userIdList = reportUserDao.selectList( +// new QueryWrapper().eq("reportId", c.getId())) +// .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); }); return list; } @@ -623,9 +620,9 @@ public class IReportServiceImpl extends ServiceImpl c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); c.setFileName(fileEntity.getFileName()); - List userIdList = reportUserDao.selectList( - new QueryWrapper().eq("reportId", c.getId())) - .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); +// List userIdList = reportUserDao.selectList( +// new QueryWrapper().eq("reportId", c.getId())) +// .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); }); return list; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index 51fa0ed..cb7feca 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -28,7 +28,6 @@ + diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml index f662eeb..23731fe 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/UserEOMapper.xml @@ -290,6 +290,10 @@ and u.del_flag = 0 + From eb1c08aa53e83753987985bcb9d6b6bc197e62d9 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Tue, 23 May 2023 17:24:06 +0800 Subject: [PATCH 07/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20=E5=8B=BF=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-dev.properties | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index bbe9413..574fb15 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -35,15 +35,7 @@ #spring.datasource.mysql.password = root spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver -#spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai -#spring.datasource.url = jdbc:mysql://121.36.69\ -# .172:3307/report_library_new?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false\ -# &allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai -#spring.datasource.url = jdbc:mysql://121.36.69\ -# .172:3307/report-library-dev?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false\ -# &allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai -spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library_test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false - &allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai +spring.datasource.url = jdbc:mysql://121.36.69.172:3307/report-library?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai spring.datasource.username = root spring.datasource.password = hzwlsoft.com From f317b20682c1ccaf0db24d0bb0bb3b76356faf02 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Tue, 23 May 2023 17:25:03 +0800 Subject: [PATCH 08/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=20=E5=8B=BF=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- adc-da-main/src/main/resources/application-dev.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adc-da-main/src/main/resources/application-dev.properties b/adc-da-main/src/main/resources/application-dev.properties index 574fb15..7a10004 100644 --- a/adc-da-main/src/main/resources/application-dev.properties +++ b/adc-da-main/src/main/resources/application-dev.properties @@ -64,7 +64,7 @@ swaggerLevel=0 # \u672C\u5730\u5B58\u50A8\u6587\u4EF6\u7684\u78C1\u76D8\u5730\u5740 #uploadFile=D:\\work\\idea\\changan\\ #uploadFile=D:\\uploadfile\\tmp\\ -uploadFile=D:\\desktop\\dazhong\\uploadfile +uploadFile=/data/DeploymentPackage/report_library/uploadfile/ # \u672C\u5730\u6587\u4EF6\u8BBF\u95EE\u7684url\u5730\u5740 picPath=/api/home/pic/ From 36c9516ec1695030495417196f1d98e1a270a4f9 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Tue, 23 May 2023 17:36:12 +0800 Subject: [PATCH 09/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E9=83=A8=E9=97=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mybatis/mapper/sys/mysql/OrgEOMapper.xml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml index 054842d..b413d34 100644 --- a/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml +++ b/adc-da-sys/src/main/resources/mybatis/mapper/sys/mysql/OrgEOMapper.xml @@ -35,7 +35,24 @@ select org.* , forg.DEPARTMENT_CODE as ParentCode from TS_ORG org LEFT JOIN TS_ORG forg on org.PARENT_ID = forg.id - + + and org.DEPARTMENT_CODE LIKE CONCAT(CONCAT('%',#{pageVO.departmentCode}),'%') + + + and org.LONG_NAME LIKE CONCAT(CONCAT('%',#{pageVO.longName}) ,'%') + + + and org.LEVEL = #{pageVO.level} + + + and org.PARENT_ID = #{pageVO.parentId} + + + and org.ATTRIBUTION = #{pageVO.attribution} + + + and org.BMDM_14 = #{pageVO.bmdm14} + + SELECT + um.id AS Id, + um.user_id AS userId, + um.message_id AS messageId, + um.read_type AS readType, + m.message_title AS messageTitle, + m.content AS content, + m.message_type AS messageType, + m.createDate AS createDate, + m.createUser AS createUser + FROM + ts_user_message AS um + LEFT JOIN ts_message AS m ON um.message_id = m.id + LEFT JOIN ts_user AS u ON m.createUser = u.USID + WHERE + um.del_flag = 0 + AND + um.user_id = #{userId} + + + AND m.message_title like CONCAT(CONCAT('%', #{vo.messageTitle}), '%') + + + AND u.USNAME like CONCAT(CONCAT('%', #{vo.createUserName}), '%') + + ORDER BY + um.read_type ASC + + From 34e0852d400214e6303f712f4ee3515fcaf9028e Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 15:29:44 +0800 Subject: [PATCH 15/44] =?UTF-8?q?feat:=E9=A2=84=E8=A7=88-=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/constant/ReportConstants.java | 9 ++ .../java/com/adc/da/report/eo/ReportFile.java | 14 ++ .../service/impl/IReportServiceImpl.java | 141 ++++++++++-------- .../java/com/adc/da/report/vo/FileVo.java | 21 +++ .../com/adc/da/report/vo/ReportDetailVo.java | 13 +- .../mapper/mysql/ReportManageMapper.xml | 4 - 6 files changed, 129 insertions(+), 73 deletions(-) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java diff --git a/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java b/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java index 3801efc..fc25652 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java +++ b/adc-da-report/src/main/java/com/adc/da/report/constant/ReportConstants.java @@ -23,6 +23,15 @@ public class ReportConstants { */ public static final String NO_USER_PRIVACY_INVOLVED = "不涉及用户隐私"; + /** + * 流程中 + */ + public static final Integer IN_PROCESS = 1; + + /** + * 不在流程中 + */ + public static final Integer NOT_IN_PROCESS = 2; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 5a950c5..4315fa4 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,14 +1,28 @@ package com.adc.da.report.eo; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; @Data +@TableName("ts_report_file") +@Accessors(chain = true) public class ReportFile { + @TableId(value = "id",type = IdType.INPUT) + private String id; + @TableField("report_id") private String reportId; @TableField("file_id") private String fileId; + + @TableField("state") + private String state; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d356c1f..187b11d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -6,14 +6,12 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; -import com.adc.da.report.vo.ChangeUploaderVo; -import com.adc.da.report.vo.ReportDetailVo; -import com.adc.da.report.vo.ReportQueryVo; -import com.adc.da.report.vo.ReportVo; +import com.adc.da.report.vo.*; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.entity.MenuEO; @@ -22,6 +20,7 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; +import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -128,6 +127,9 @@ public class IReportServiceImpl extends ServiceImpl @Resource private MenuEOService menuEOService; + @Resource + private ReportFileDao reportFileDao; + @Override public void addOrUpdate(ReportEntity reportEntity) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -529,38 +531,38 @@ public class IReportServiceImpl extends ServiceImpl }); } - list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); - if (StringUtils.isEmpty(fileEntity.getFileType())) { - c.setFileType(null); - } - //ppt文件 - else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("1"); - } - //excel文件 - else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("2"); - } - //pdf文件 - else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("3"); - } - //word文件 - else { - c.setFileType("4"); - } - - //文件大小 - c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) - ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); +// list.getRecords().forEach(c -> { +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); +// if (StringUtils.isEmpty(fileEntity.getFileType())) { +// c.setFileType(null); +// } +// //ppt文件 +// else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("1"); +// } +// //excel文件 +// else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("2"); +// } +// //pdf文件 +// else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("3"); +// } +// //word文件 +// else { +// c.setFileType("4"); +// } +// +// //文件大小 +// c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) +// ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - }); +// }); return list; } @@ -612,38 +614,38 @@ public class IReportServiceImpl extends ServiceImpl } }); - list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); - if (StringUtils.isEmpty(fileEntity.getFileType())) { - c.setFileType(null); - } - //ppt文件 - else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("1"); - } - //excel文件 - else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || - ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("2"); - } - //pdf文件 - else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { - c.setFileType("3"); - } - //word文件 - else { - c.setFileType("4"); - } - - //文件大小 - c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) - ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); +// list.getRecords().forEach(c -> { +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); +// if (StringUtils.isEmpty(fileEntity.getFileType())) { +// c.setFileType(null); +// } +// //ppt文件 +// else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("1"); +// } +// //excel文件 +// else if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileEntity.getFileType()) || +// ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("2"); +// } +// //pdf文件 +// else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { +// c.setFileType("3"); +// } +// //word文件 +// else { +// c.setFileType("4"); +// } +// +// //文件大小 +// c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) +// ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); - }); +// }); return list; } @@ -716,6 +718,21 @@ public class IReportServiceImpl extends ServiceImpl @Override public ResponseMessage reportDetail(String reportId) { ReportDetailVo reportDetailVo = reportDao.reportDetail(reportId); + //设置文件信息 + LambdaQueryWrapper reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); + reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportDetailVo.getId()); + reportFileLambdaQueryWrapper.eq(ReportFile::getState, ReportConstants.NOT_IN_PROCESS); + List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); + List fileIds = new ArrayList<>(); + if (reportFiles != null) { + fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); + } + if (CollectionUtils.isNotEmpty(fileIds)) { + List fileEntities = fileDao.selectBatchIds(fileIds); + List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); + reportDetailVo.setFileList(fileVos); + } + //设置部门名称 String department = reportDetailVo.getDepartment(); if (StrUtil.isNotBlank(department)) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java new file mode 100644 index 0000000..8ef3be2 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/FileVo.java @@ -0,0 +1,21 @@ +package com.adc.da.report.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FileVo { + + /** + * 文件主键id + */ + private String fileId; + + /** + * 文件名 + */ + private String fileName; +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index 5843c73..712f15a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -44,6 +44,7 @@ public class ReportDetailVo { */ private String departmentId; + private String department; /** * 部门 @@ -65,13 +66,6 @@ public class ReportDetailVo { */ private String privacyLevel; - /** - * 文件id - */ - private String fileId; - - private String fileName; - /** * 创建人id */ @@ -111,4 +105,9 @@ public class ReportDetailVo { * 保密到期日期 */ private Date secrecyLast; + + /** + * 文件列表 + */ + private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index cb7feca..b6c6103 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -100,7 +100,6 @@ eo.maincontent AS mainContent, eo.DEPARTMENT AS department, eo.`YEAR` AS `year`, - eo.fileid AS fileId, eo.confidentialLevel AS confidentialLevel, eo.privacyLevel AS privacyLevel, eo.createUserId AS createUserId, @@ -284,15 +283,12 @@ rm.maincontent AS maincontent, rm.department AS department, rm.`year` AS `year`, - rm.fileId AS fileId, - f.file_name as fileName, rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, rm.secrecy_last AS secrecyLast FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_file as f on rm.fileId=f.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0 From b0a47208c292f54dd59b20d28a547788594a54b0 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 16:50:07 +0800 Subject: [PATCH 16/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 64 ++++------------- .../da/report/dao/mysql/ReportFileDao.java | 4 ++ .../com/adc/da/report/eo/ReportEntity.java | 5 +- .../java/com/adc/da/report/eo/ReportFile.java | 40 +++++++++++ .../adc/da/report/eo/TtReportManageAct.java | 8 ++- .../adc/da/report/service/IFileService.java | 2 + .../da/report/service/IReportFileService.java | 11 +++ .../adc/da/report/service/IReportService.java | 4 ++ .../report/service/impl/IFileServiceImpl.java | 54 ++++++++++++++ .../service/impl/IReportFileServiceImpl.java | 16 +++++ .../service/impl/IReportServiceImpl.java | 52 ++++++++++---- .../impl/ITtReportManageActServiceImpl.java | 25 +++++++ .../com/adc/da/report/vo/ReportDetailVo.java | 6 ++ .../java/com/adc/da/report/vo/ReportVo.java | 15 ++-- .../mybatis/mapper/mysql/ReportFileMapper.xml | 28 ++++++++ .../mapper/mysql/ReportManageMapper.xml | 72 +++++++++++++++---- .../mapper/mysql/TtReportManageActMapper.xml | 30 +++++--- .../service/ActivitDefineService.java | 37 +++++++++- 18 files changed, 372 insertions(+), 101 deletions(-) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java create mode 100644 adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index c7ecd61..88676fd 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -5,10 +5,7 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.annotation.ReportLog; import com.adc.da.report.dao.mysql.ReportDao; import com.adc.da.report.dao.mysql.ReportLogBookDao; -import com.adc.da.report.eo.FileEntity; -import com.adc.da.report.eo.LogEntity; -import com.adc.da.report.eo.ReportEntity; -import com.adc.da.report.eo.ReportLogBook; +import com.adc.da.report.eo.*; import com.adc.da.report.service.IFileService; import com.adc.da.report.service.ILogService; import com.adc.da.report.service.IReportService; @@ -345,53 +342,7 @@ public class ReportManageConroller { @ApiOperation(value = "详情||上传文件") @PostMapping("/uploadFile") public ResponseMessage> uploadFile(MultipartFile file) throws IOException { - Map resultMap = new HashMap(); - //上传路径 - //此路径映射到localhost - String path = uploadFile; - String realName = file.getOriginalFilename(); - Date now = new Date(); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); - String date = dateFormat.format(now); - Random r = new Random(); - String num = ""; - for (int i = 0; i < 3; i++) { - int s = r.nextInt(10); - num += String.valueOf(s); - } - - //获取上传文件名 - String fileName = file.getOriginalFilename(); - String contentType = file.getContentType(); - String ext = fileName.substring(fileName.lastIndexOf(".") + 1); - fileName = fileName.substring(0, fileName.lastIndexOf("."))+date + num + "." + ext; - log.info("fileName>>" + fileName); - try{ - String result=""; - // 上传方式:阿里云:alioss 华为云:hwobs - if ("hwobs".equals(uploadType)){ - result = obsBootUtil.upload(file, fileName); - }else if ("alioss".equals(uploadType)) { - result = ossClientUtil.uploadFile2OSS(file.getInputStream(),fileName); - }else if ("local".equals(uploadType)) { - localFileUtil.saveFile(file.getInputStream(), fileName); - } - resultMap.put("key", date + num); - resultMap.put("value", path + "//" + fileName); - resultMap.put("name", realName); - } - catch (Exception e){ - log.error(e.getMessage(),e); - } - FileEntity entity = new FileEntity(); - entity.setContentType(contentType); - entity.setCreateTime(new Date()); - entity.setFileName(realName); - entity.setFileType(ext); - entity.setFileSize(String.valueOf(file.getSize())); - entity.setFileId(date + num); - entity.setSavePath(fileName); - fileService.addFile(entity); + Map resultMap = fileService.uploadFile(file); return Result.success(resultMap); } @@ -621,4 +572,15 @@ public class ReportManageConroller { return Result.success(act); } + /** + * 删除文件 + * @return + * @throws ParseException + */ + @ApiOperation("删除文件") + @PostMapping("/delFile") + public ResponseMessage delFile(@RequestBody ReportFile reportFile) throws Exception { + reportService.delFile(reportFile); + return Result.success(); + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 6b74e34..709a416 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -2,7 +2,11 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.ReportFile; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; public interface ReportFileDao extends BaseMapper { + void delByReportId(@Param("pageVO") ReportFile reportFile); + + void actEndDelReport(@Param("pageVO")ReportFile reportFile1); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java index 222990a..f444238 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java @@ -68,7 +68,7 @@ public class ReportEntity { /** * 文件id */ - @TableField("fileId") + @TableField(exist = false) private String fileId; /** @@ -109,4 +109,7 @@ public class ReportEntity { @TableField(exist = false) private List> labelList; + + @TableField(exist = false) + private List fileList; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 5a950c5..bbe33a9 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,14 +1,54 @@ package com.adc.da.report.eo; +import com.adc.da.login.util.UserUtils; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.util.List; + @Data +@TableName("TS_REPORT_FILE") public class ReportFile { + @TableField("id") + private String Id; + @TableField("report_id") private String reportId; @TableField("file_id") private String fileId; + + /** + * 状态 1 流程中 ,2 非流程中 + */ + @TableField("state") + private Integer state; + + @TableField("user_id") + private String userId; + + + + @TableField(exist = false) + private List rfIdList; + + @TableField(exist = false) + private String fileName; + + + + public ReportFile(String reportId){ + this.reportId = reportId; + } + public ReportFile(String reportId,Integer state){ + this.reportId = reportId; + this.state = state; + this.userId = UserUtils.getUserId(); + } + + public ReportFile(){ + + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java index e6fa1af..5402925 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java @@ -128,10 +128,16 @@ public class TtReportManageAct { @TableField("secrecy_last") private Date secrecyLast; - @TableField("file_name") + @TableField(exist = false) + private String rfId; + + @TableField(exist = false) private String fileName; @TableField(exist = false) private List labelList; + @TableField(exist = false) + private List fileList; + } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java index adec625..7c875de 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java @@ -27,4 +27,6 @@ public interface IFileService { FileEntity getFile(String fileId); List> batchUploadFile(MultipartFile[] files); + + Map uploadFile(MultipartFile file); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java new file mode 100644 index 0000000..260a802 --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportFileService.java @@ -0,0 +1,11 @@ +package com.adc.da.report.service; + + +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.extension.service.IService; + +public interface IReportFileService extends IService { + + + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java index 1a50caa..46ad7c7 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java @@ -1,6 +1,7 @@ package com.adc.da.report.service; import com.adc.da.report.eo.ReportEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.vo.ChangeUploaderVo; import com.adc.da.report.vo.ReportQueryVo; import com.adc.da.report.vo.ReportVo; @@ -95,4 +96,7 @@ public interface IReportService { * @return */ ResponseMessage changeUploader(ChangeUploaderVo changeUploaderVo); + + void delFile(ReportFile reportFile); + } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java index 976d901..4ad2e85 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java @@ -6,6 +6,7 @@ import com.adc.da.report.service.IFileService; import com.adc.da.report.util.LocalFileUtil; import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; +import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -121,4 +122,57 @@ public class IFileServiceImpl implements IFileService { } return resultList; } + + @Override + @Synchronized + public Map uploadFile(MultipartFile file) { + Map resultMap = new HashMap(); + //上传路径 + //此路径映射到localhost + String path = uploadFile; + String realName = file.getOriginalFilename(); + Date now = new Date(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String date = dateFormat.format(now); + Random r = new Random(); + String num = ""; + for (int i = 0; i < 3; i++) { + int s = r.nextInt(10); + num += String.valueOf(s); + } + + //获取上传文件名 + String fileName = file.getOriginalFilename(); + String contentType = file.getContentType(); + String ext = fileName.substring(fileName.lastIndexOf(".") + 1); + fileName = fileName.substring(0, fileName.lastIndexOf("."))+date + num + "." + ext; + log.info("fileName>>" + fileName); + try{ + String result=""; + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)){ + result = obsBootUtil.upload(file, fileName); + }else if ("alioss".equals(uploadType)) { + result = ossClientUtil.uploadFile2OSS(file.getInputStream(),fileName); + }else if ("local".equals(uploadType)) { + localFileUtil.saveFile(file.getInputStream(), fileName); + } + resultMap.put("id", date + num); + resultMap.put("value", path + "//" + fileName); + resultMap.put("name", realName); + } + catch (Exception e){ + log.error(e.getMessage(),e); + } + FileEntity entity = new FileEntity(); + entity.setContentType(contentType); + entity.setCreateTime(new Date()); + entity.setFileName(realName); + entity.setFileType(ext); + entity.setFileSize(String.valueOf(file.getSize())); + entity.setFileId(date + num); + entity.setSavePath(fileName); + this.addFile(entity); + return resultMap; + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java new file mode 100644 index 0000000..e57861b --- /dev/null +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportFileServiceImpl.java @@ -0,0 +1,16 @@ +package com.adc.da.report.service.impl; + +import com.adc.da.report.dao.mysql.ReportFileDao; +import com.adc.da.report.eo.ReportFile; +import com.adc.da.report.service.IReportFileService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + + +@Service +@Slf4j +public class IReportFileServiceImpl extends ServiceImpl + implements IReportFileService { + +} diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d356c1f..6ecb9ec 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -6,6 +6,7 @@ import com.adc.da.login.util.UserUtils; import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; @@ -128,6 +129,12 @@ public class IReportServiceImpl extends ServiceImpl @Resource private MenuEOService menuEOService; + @Autowired + private IReportFileService iReportFileService; + + @Autowired + private ReportFileDao reportFileDao; + @Override public void addOrUpdate(ReportEntity reportEntity) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -143,6 +150,16 @@ public class IReportServiceImpl extends ServiceImpl reportDao.insert(reportEntity); } String reportId = reportEntity.getId(); + //文件 + reportFileDao.delByReportId(new ReportFile(reportId,2)); + List reportFiles = new ArrayList<>(); + for (String s : reportEntity.getFileList()) { + ReportFile reportFile = new ReportFile(); + reportFile.setReportId(reportId); + reportFile.setFileId(s); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); //插入报表标签关系表 //修改报表标签关系表(先删后增) iReportLabelService.deleteReportLabelByReportId(new String[]{reportId}); @@ -156,13 +173,13 @@ public class IReportServiceImpl extends ServiceImpl labelList.add(reportLabelEntity); } iReportLabelService.saveBatch(labelList); - //插入报表内容表 - try { - iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); - log.info("抽取报告内容"); - } catch (IOException e) { - log.error("获取报告内容失败", e); - } + } + //插入报表内容表 + try { + iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); + log.info("抽取报告内容"); + } catch (IOException e) { + log.error("获取报告内容失败", e); } } @@ -181,6 +198,11 @@ public class IReportServiceImpl extends ServiceImpl return Result.success("修改成功"); } + @Override + public void delFile(ReportFile reportFile) { + reportFileDao.deleteBatchIds(reportFile.getRfIdList()); + } + /** * 新增或编辑报告 * @@ -267,8 +289,6 @@ public class IReportServiceImpl extends ServiceImpl reportLabelDao.insert(reportLabelEntity); }); - //TODO 插入报表内容表(先删后增) - //删除power_apply表中的对应权限 iPowerApplyService.deleteByReportId(entity.getId()); @@ -530,7 +550,9 @@ public class IReportServiceImpl extends ServiceImpl } list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + // TODO FILE c.getFileList +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + FileEntity fileEntity = new FileEntity(); if (StringUtils.isEmpty(fileEntity.getFileType())) { c.setFileType(null); } @@ -556,7 +578,8 @@ public class IReportServiceImpl extends ServiceImpl //文件大小 c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); + // TODO FILE +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); @@ -613,7 +636,9 @@ public class IReportServiceImpl extends ServiceImpl }); list.getRecords().forEach(c -> { - FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + // TODO FILE c.getFileList +// FileEntity fileEntity = Optional.ofNullable(fileDao.selectById(c.getFileId())).orElse(new FileEntity()); + FileEntity fileEntity = new FileEntity() ; if (StringUtils.isEmpty(fileEntity.getFileType())) { c.setFileType(null); } @@ -639,7 +664,8 @@ public class IReportServiceImpl extends ServiceImpl //文件大小 c.setFileSize(StringUtils.isNotEmpty(fileEntity.getFileSize()) ? String.valueOf(Integer.parseInt(fileEntity.getFileSize()) / 1024) + "kb" : "0kb"); - c.setFileName(fileEntity.getFileName()); + //TODO FILE +// c.setFileName(fileEntity.getFileName()); // List userIdList = reportUserDao.selectList( // new QueryWrapper().eq("reportId", c.getId())) // .stream().map(ReportUserEntity::getUserId).collect(Collectors.toList()); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index d6e9916..b11fc47 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -5,12 +5,15 @@ import cn.hutool.core.bean.BeanUtil; import com.adc.da.login.util.UserUtils; import com.adc.da.report.dao.mysql.PowerApplyDao; import com.adc.da.report.dao.mysql.ReportDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.TtReportManageActDao; import com.adc.da.report.eo.LogEntity; import com.adc.da.report.eo.ReportEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.service.ILogService; import com.adc.da.report.service.IReportContentService; +import com.adc.da.report.service.IReportFileService; import com.adc.da.report.service.ITtReportManageActService; import com.adc.da.report.vo.DeleteParamRequestVO; import com.adc.da.report.vo.TtReportManageActPageVO; @@ -29,6 +32,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.UUID; /** * @author bu @@ -51,7 +55,11 @@ public class ITtReportManageActServiceImpl extends ServiceImpl @@ -152,6 +160,23 @@ public class ITtReportManageActServiceImpl extends ServiceImpl reportFiles = new ArrayList<>(); + for (ReportFile reportFile : ttReportManageAct.getFileList()) { + reportFile.setId(UUID.randomUUID().toString().replace("-","")); + reportFile.setReportId(ttReportManageAct.getDataId()); +// reportFile.setFileId(s); + reportFile.setState(2); + reportFile.setUserId(UserUtils.getUserId()); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); + try { iReportContentService.insertReportContent(ttReportManageAct.getDataId(), ttReportManageAct.getFileId()); log.info("抽取报告内容"); diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index 5843c73..b84b0fa 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -1,5 +1,7 @@ package com.adc.da.report.vo; +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -111,4 +113,8 @@ public class ReportDetailVo { * 保密到期日期 */ private Date secrecyLast; + + + @TableField(exist = false) + private List fileList; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java index 48cfc2a..ea02cfb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportVo.java @@ -1,5 +1,7 @@ package com.adc.da.report.vo; +import com.adc.da.report.eo.ReportFile; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.util.List; @@ -46,16 +48,6 @@ public class ReportVo { */ private String year; - /** - * 文件id - */ - private String fileId; - - /** - * 文件名称 - */ - private String fileName; - /** * 文件类型 */ @@ -135,5 +127,6 @@ public class ReportVo { private Integer isAct; private String prcType; - + @TableField(exist = false) + private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml new file mode 100644 index 0000000..19241a8 --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml @@ -0,0 +1,28 @@ + + + + + delete from ts_report_file + + report_id = #{pageVO.reportId} + and ( state = 2 or (state = 1 AND user_id = #{pageVO.userId} ) ) + + + + + + delete from ts_report_file + + + AND report_id = #{pageVO.reportId} + + + AND user_id = #{pageVO.userId} + + + AND state = #{pageVO.state} + + + + + diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index cb7feca..f0dde0a 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -1,15 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - id, name, keycontent, maincontent, department, year, fileId, confidentialLevel, privacyLevel, + id, name, keycontent, maincontent, department, year, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag,secrecy_last - #{Vo.id},#{Vo.name},#{Vo.keycontent},#{Vo.maincontent},#{Vo.department},#{Vo.year},#{Vo.fileId}, + #{Vo.id},#{Vo.name},#{Vo.keycontent},#{Vo.maincontent},#{Vo.department},#{Vo.year}, #{Vo.confidentialLevel},#{Vo.privacyLevel}, #{Vo.createUserId}, #{Vo.createDate},#{Vo.updateDate},#{Vo.del_flag}, @@ -19,7 +65,7 @@ insert into TT_REPORT_MANAGE () value ( - #{Vo.dataId},#{Vo.name},#{Vo.keyContent},#{Vo.mainContent},#{Vo.department},#{Vo.year},#{Vo.fileId}, + #{Vo.dataId},#{Vo.name},#{Vo.keyContent},#{Vo.mainContent},#{Vo.department},#{Vo.year}, #{Vo.confidentialLevel},#{Vo.privacyLevel}, #{Vo.createUserId}, #{Vo.createDate},#{Vo.updateDate},#{Vo.delFlag}, @@ -45,7 +91,6 @@ eo.maincontent, eo.DEPARTMENT, eo.YEAR, - eo.fileid, eo.confidentialLevel, eo.privacyLevel, eo.createUserId, @@ -91,7 +136,7 @@ - SELECT eo.id AS id, @@ -100,7 +145,6 @@ eo.maincontent AS mainContent, eo.DEPARTMENT AS department, eo.`YEAR` AS `year`, - eo.fileid AS fileId, eo.confidentialLevel AS confidentialLevel, eo.privacyLevel AS privacyLevel, eo.createUserId AS createUserId, @@ -113,6 +157,8 @@ IF(bpn.id is null,1, IF(bpn.SUBMIT_STATUS = 1 and bpn.CREAT_USER = #{pageVO.usid} ,0,1) ) as isAct + , + f.FILE_ID as fileId, f.file_name as fileName ,rf.id as rfId FROM TT_REPORT_MANAGE eo LEFT JOIN ts_report_content rc ON eo.id = rc.report_id @@ -122,6 +168,8 @@ LEFT JOIN (SELECT report_id, COUNT(id) AS download FROM report_log_book WHERE type = 2 GROUP BY report_id) AS downloadCount ON eo.id = downloadCount.report_id LEFT JOIN ts_report_user_rating AS trur ON eo.id = trur.report_id LEFT JOIN bus_process_name as bpn on bpn.data_id = eo.id and bpn.prc_type != '5' + LEFT JOIN ts_report_file rf on rf.report_id = eo.id and rf.state = 2 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id WHERE eo.DEL_FLAG = 0 @@ -175,7 +223,6 @@ t.year, t.name, t.keycontent, - t.fileId, t.createDate, t.department, t.maincontent, @@ -274,7 +321,7 @@ - SELECT rm.id AS id, rm.name AS `name`, @@ -284,18 +331,19 @@ rm.maincontent AS maincontent, rm.department AS department, rm.`year` AS `year`, - rm.fileId AS fileId, - f.file_name as fileName, rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, - rm.secrecy_last AS secrecyLast + rm.secrecy_last AS secrecyLast, + f.id as fileId, f.file_name as fileName ,rf.id as rfId FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_file as f on rm.fileId=f.file_id + LEFT JOIN ts_report_file rf on rf.report_id = rm.id on rf.state = 2 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0 + diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml index 3047e60..d0fdc99 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml @@ -15,7 +15,6 @@ - @@ -23,7 +22,11 @@ - + + + + + @@ -34,9 +37,9 @@ id, - task_id, prc_id, data_id,report_id ,name, keycontent, maincontent, department, year, fileId, confidentialLevel, + task_id, prc_id, data_id,report_id ,name, keycontent, maincontent, department, year, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag - ,secrecy_last,file_name + ,secrecy_last @@ -71,9 +74,6 @@ AND year LIKE CONCAT(CONCAT('%',#{pageVO.year}),'%') - - AND fileId LIKE CONCAT(CONCAT('%',#{pageVO.fileId}),'%') - AND confidentialLevel LIKE CONCAT(CONCAT('%',#{pageVO.confidentialLevel}),'%') @@ -135,10 +135,14 @@ a.id, task_id, prc_id, data_id,report_id, name, keycontent, maincontent, department, org.LONG_NAME as departmentName, - year, fileId, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag - ,secrecy_last,file_name + year,f.id as fileId, f.file_name as fileName ,rf.id as rfId, confidentialLevel, privacyLevel, createUserId, + createDate, + updateDate, del_flag + ,secrecy_last FROM a LEFT JOIN ts_org org on a.department = org.id + LEFT JOIN ts_report_file rf on rf.report_id = a.id on rf.state = 1 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id data_id = #{dataId} @@ -148,10 +152,14 @@ a.id, task_id, prc_id, data_id,report_id, name, keycontent, maincontent, department, org.LONG_NAME as departmentName, - year, fileId, confidentialLevel, privacyLevel, createUserId, createDate, updateDate, del_flag - ,secrecy_last,file_name + year,f.id as fileId, f.file_name as fileName ,rf.id as rfId ,confidentialLevel, privacyLevel, createUserId, + createDate, + updateDate, del_flag + ,secrecy_last FROM a LEFT JOIN ts_org org on a.department = org.id + LEFT JOIN ts_report_file rf on rf.report_id = a.id on rf.state = 1 + LEFT JOIN ts_file f on f.FILE_ID = rf.file_id prc_id = #{prcId} diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java index 611751d..82f785d 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java @@ -1,12 +1,16 @@ package com.adc.da.wkflow.business_activiti.service; +import com.adc.da.login.util.UserUtils; import com.adc.da.report.dao.mysql.PowerApplyActDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.dao.mysql.TtReportManageActDao; import com.adc.da.report.eo.PowerApplyAct; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.ReportLabelEntity; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.service.IPowerApplyActService; +import com.adc.da.report.service.IReportFileService; import com.adc.da.report.service.IReportLabelService; import com.adc.da.report.service.ITtReportManageActService; import com.adc.da.util.exception.AdcDaBaseException; @@ -19,7 +23,10 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.UUID; @Service public class ActivitDefineService { @@ -42,7 +49,11 @@ public class ActivitDefineService { private ReportLabelDao reportLabelDao; @Autowired private IReportLabelService iReportLabelService; + @Autowired + private IReportFileService iReportFileService; + @Autowired + private ReportFileDao reportFileDao; //保存data数据 public String saveOrUpdateDate(String prcType, String dataJson,String taskId,String prcId,String reportId) { if (StringUtils.isBlank(reportId)){ @@ -115,6 +126,18 @@ public class ActivitDefineService { } iReportLabelService.saveBatch(labelList); } + // 文件 + reportFileDao.delByReportId(new ReportFile(reportId,1)); + List reportFiles = new ArrayList<>(); + for (ReportFile reportFile : ttReportManageAct.getFileList()) { + reportFile.setId(UUID.randomUUID().toString().replace("-","")); + reportFile.setReportId(ttReportManageAct.getDataId()); +// reportFile.setFileId(s); + reportFile.setState(1); + reportFile.setUserId(UserUtils.getUserId()); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); }else if ("5".equals(prcType)){ // 编辑 TtReportManageAct ttReportManageAct = JSONObject.parseObject(dataJson, TtReportManageAct.class); @@ -138,6 +161,18 @@ public class ActivitDefineService { } iReportLabelService.saveBatch(labelList); } + // 文件 + reportFileDao.delByReportId(new ReportFile(reportId,1)); + List reportFiles = new ArrayList<>(); + for (ReportFile reportFile : ttReportManageAct.getFileList()) { + reportFile.setId(UUID.randomUUID().toString().replace("-","")); + reportFile.setReportId(ttReportManageAct.getDataId()); +// reportFile.setFileId(s); + reportFile.setState(1); + reportFile.setUserId(UserUtils.getUserId()); + reportFiles.add(reportFile); + } + iReportFileService.saveBatch(reportFiles); }else { throw new AdcDaBaseException("没有流程类型"+prcType); } From 777e1ab48133c0f3f6ab1db24a1f80a6926679bc Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 17:15:29 +0800 Subject: [PATCH 17/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/adc/da/report/eo/ReportFile.java | 4 +-- .../adc/da/report/eo/TtReportManageAct.java | 2 +- .../service/impl/IReportServiceImpl.java | 17 +++++++------ .../com/adc/da/report/vo/ReportDetailVo.java | 4 --- .../mapper/mysql/ReportManageMapper.xml | 25 +++++++++++++++++++ 5 files changed, 37 insertions(+), 15 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index fbe47ae..9472755 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,13 +1,11 @@ package com.adc.da.report.eo; +import com.adc.da.login.util.UserUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; -import lombok.experimental.Accessors; import java.util.List; diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java index 5402925..b225e12 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/TtReportManageAct.java @@ -94,7 +94,7 @@ public class TtReportManageAct { /** * 文件id */ - @TableField("fileId") + @TableField(exist = false) private String fileId; diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 4fdda8f..6515a44 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -11,7 +11,10 @@ import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; -import com.adc.da.report.vo.*; +import com.adc.da.report.vo.ChangeUploaderVo; +import com.adc.da.report.vo.ReportDetailVo; +import com.adc.da.report.vo.ReportQueryVo; +import com.adc.da.report.vo.ReportVo; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.entity.MenuEO; @@ -20,7 +23,6 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; -import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -743,11 +745,12 @@ public class IReportServiceImpl extends ServiceImpl if (reportFiles != null) { fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); } - if (CollectionUtils.isNotEmpty(fileIds)) { - List fileEntities = fileDao.selectBatchIds(fileIds); - List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); - reportDetailVo.setFileList(fileVos); - } + //TODO FILE +// if (CollectionUtils.isNotEmpty(fileIds)) { +// List fileEntities = fileDao.selectBatchIds(fileIds); +// List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); +// reportDetailVo.setFileList(fileVos); +// } //设置部门名称 String department = reportDetailVo.getDepartment(); diff --git a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java index f1a1d27..fe01296 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java +++ b/adc-da-report/src/main/java/com/adc/da/report/vo/ReportDetailVo.java @@ -111,8 +111,4 @@ public class ReportDetailVo { @TableField(exist = false) private List fileList; - /** - * 文件列表 - */ - private List fileList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index 7c14f02..f0dde0a 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -23,6 +23,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, name, keycontent, maincontent, department, year, confidentialLevel, privacyLevel, From 1f2c158a69f690c642c39fc707716bed207e7ac6 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 17:46:39 +0800 Subject: [PATCH 18/44] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AD=97=E6=AE=B5=20=E9=A2=84=E8=A7=88-?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/service/impl/IReportServiceImpl.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 6515a44..08ad463 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -23,6 +23,7 @@ import com.adc.da.sys.entity.RoleEO; import com.adc.da.sys.entity.UserEO; import com.adc.da.sys.service.MenuEOService; import com.adc.da.sys.service.OrgEOService; +import com.adc.da.sys.util.BeanCopyUtils; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; import com.adc.da.util.utils.CollectionUtils; @@ -745,12 +746,12 @@ public class IReportServiceImpl extends ServiceImpl if (reportFiles != null) { fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); } - //TODO FILE -// if (CollectionUtils.isNotEmpty(fileIds)) { -// List fileEntities = fileDao.selectBatchIds(fileIds); -// List fileVos = BeanCopyUtils.copyBeanList(fileEntities, FileVo.class); -// reportDetailVo.setFileList(fileVos); -// } + + if (CollectionUtils.isNotEmpty(fileIds)) { + List fileEntities = fileDao.selectBatchIds(fileIds); + List fileVos = BeanCopyUtils.copyBeanList(fileEntities, ReportFile.class); + reportDetailVo.setFileList(fileVos); + } //设置部门名称 String department = reportDetailVo.getDepartment(); From 6349af539b3eaa7cf524d256ef5447749a14c101 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Wed, 24 May 2023 17:48:04 +0800 Subject: [PATCH 19/44] =?UTF-8?q?ci:=E5=88=A0=E6=8E=89=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=AE=8C=E4=B8=8D=E9=9C=80=E8=A6=81=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index 88676fd..ae62141 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -296,31 +296,6 @@ public class ReportManageConroller { return Result.success(); } - // TODO 测试完不需要的代码请删掉,然后再把这个TODO也删掉 - /** - * 测试 - */ - @ApiOperation("testtest") - @GetMapping("/test") - @Deprecated - public void ttt() { - stringRedisTemplate.boundValueOps("1121212").set("1212"); - - } - - // TODO 测试完不需要的代码请删掉,然后再把这个TODO也删掉 - @ApiOperation("testPath") - @GetMapping("/testPath") - @Deprecated - public ResponseMessage testPath() throws URISyntaxException { - HashMap pathMap = new HashMap<>(); - String jarPath = new File(getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).getParentFile().getPath(); - String property = System.getProperty("user.dir"); - pathMap.put("jarpath", jarPath); - pathMap.put("propertyPath", property); - return Result.success(pathMap); - } - /** * 获取文件名 * @param fileId From f33fdc468a61927142c5901787403dbcc579403c Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Wed, 24 May 2023 18:02:16 +0800 Subject: [PATCH 20/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E4=BB=A3=E5=8A=9E?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/mysql/TtReportManageActMapper.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml index d0fdc99..a272517 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TtReportManageActMapper.xml @@ -133,15 +133,15 @@ SELECT a.id, - task_id, prc_id, data_id,report_id, name, keycontent, maincontent, department, + task_id, prc_id, data_id,a.report_id, name, keycontent, maincontent, department, org.LONG_NAME as departmentName, - year,f.id as fileId, f.file_name as fileName ,rf.id as rfId ,confidentialLevel, privacyLevel, createUserId, + year,f.FILE_ID as fileId, f.file_name as fileName ,rf.id as rfId ,confidentialLevel, privacyLevel, createUserId, createDate, - updateDate, del_flag + updateDate, a.del_flag ,secrecy_last FROM a LEFT JOIN ts_org org on a.department = org.id - LEFT JOIN ts_report_file rf on rf.report_id = a.id on rf.state = 1 + LEFT JOIN ts_report_file rf on rf.report_id = a.data_id and rf.state = 1 LEFT JOIN ts_file f on f.FILE_ID = rf.file_id prc_id = #{prcId} From 5d9c442cc2c5b3bf5154ebb07283fe8823a33ff1 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 10:15:42 +0800 Subject: [PATCH 21/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E5=A4=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=20=E4=B8=8A=E4=BC=A0=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/dao/mysql/ReportFileDao.java | 4 +++- .../java/com/adc/da/report/eo/ReportFile.java | 4 ---- .../service/impl/IReportServiceImpl.java | 1 + .../impl/ITtReportManageActServiceImpl.java | 19 ++----------------- .../mybatis/mapper/mysql/ReportFileMapper.xml | 11 ++++++----- .../service/ActivitDefineService.java | 3 --- 6 files changed, 12 insertions(+), 30 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 709a416..571b189 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -8,5 +8,7 @@ public interface ReportFileDao extends BaseMapper { void delByReportId(@Param("pageVO") ReportFile reportFile); - void actEndDelReport(@Param("pageVO")ReportFile reportFile1); + void actEndDelReport(@Param("reportId")String reportId); + + void updateState(@Param("reportId")String dataId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java index 9472755..b2d049c 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportFile.java @@ -1,6 +1,5 @@ package com.adc.da.report.eo; -import com.adc.da.login.util.UserUtils; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -28,8 +27,6 @@ public class ReportFile { @TableField("state") private Integer state; - @TableField("user_id") - private String userId; @@ -47,7 +44,6 @@ public class ReportFile { public ReportFile(String reportId,Integer state){ this.reportId = reportId; this.state = state; - this.userId = UserUtils.getUserId(); } public ReportFile(){ diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 08ad463..ee0a49c 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -177,6 +177,7 @@ public class IReportServiceImpl extends ServiceImpl } //插入报表内容表 try { + //TODO FILE iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); log.info("抽取报告内容"); } catch (IOException e) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index b11fc47..9790b9b 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -9,7 +9,6 @@ import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.TtReportManageActDao; import com.adc.da.report.eo.LogEntity; import com.adc.da.report.eo.ReportEntity; -import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.service.ILogService; import com.adc.da.report.service.IReportContentService; @@ -32,7 +31,6 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.UUID; /** * @author bu @@ -162,21 +160,8 @@ public class ITtReportManageActServiceImpl extends ServiceImpl reportFiles = new ArrayList<>(); - for (ReportFile reportFile : ttReportManageAct.getFileList()) { - reportFile.setId(UUID.randomUUID().toString().replace("-","")); - reportFile.setReportId(ttReportManageAct.getDataId()); -// reportFile.setFileId(s); - reportFile.setState(2); - reportFile.setUserId(UserUtils.getUserId()); - reportFiles.add(reportFile); - } - iReportFileService.saveBatch(reportFiles); - + reportFileDao.actEndDelReport(ttReportManageAct.getDataId()); + reportFileDao.updateState(ttReportManageAct.getDataId()); try { iReportContentService.insertReportContent(ttReportManageAct.getDataId(), ttReportManageAct.getFileId()); log.info("抽取报告内容"); diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml index 19241a8..7632b59 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml @@ -1,11 +1,15 @@ + + update ts_report_file set state = 2 + where report_id = #{reportId} + delete from ts_report_file - report_id = #{pageVO.reportId} - and ( state = 2 or (state = 1 AND user_id = #{pageVO.userId} ) ) + report_id = #{reportId} + and state = 2 @@ -16,9 +20,6 @@ AND report_id = #{pageVO.reportId} - - AND user_id = #{pageVO.userId} - AND state = #{pageVO.state} diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java index 82f785d..0b5fe46 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java @@ -1,6 +1,5 @@ package com.adc.da.wkflow.business_activiti.service; -import com.adc.da.login.util.UserUtils; import com.adc.da.report.dao.mysql.PowerApplyActDao; import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.dao.mysql.ReportLabelDao; @@ -134,7 +133,6 @@ public class ActivitDefineService { reportFile.setReportId(ttReportManageAct.getDataId()); // reportFile.setFileId(s); reportFile.setState(1); - reportFile.setUserId(UserUtils.getUserId()); reportFiles.add(reportFile); } iReportFileService.saveBatch(reportFiles); @@ -169,7 +167,6 @@ public class ActivitDefineService { reportFile.setReportId(ttReportManageAct.getDataId()); // reportFile.setFileId(s); reportFile.setState(1); - reportFile.setUserId(UserUtils.getUserId()); reportFiles.add(reportFile); } iReportFileService.saveBatch(reportFiles); From dc2a8b69fee3cd3631500088ecaf545357c40fda Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 10:44:02 +0800 Subject: [PATCH 22/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E5=A4=9A=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=20=E8=AF=A6=E6=83=85=E9=A2=84?= =?UTF-8?q?=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/adc/da/report/service/impl/IReportServiceImpl.java | 2 ++ .../resources/mybatis/mapper/mysql/ReportManageMapper.xml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index ee0a49c..67238fb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -156,8 +156,10 @@ public class IReportServiceImpl extends ServiceImpl List reportFiles = new ArrayList<>(); for (String s : reportEntity.getFileList()) { ReportFile reportFile = new ReportFile(); + reportFile.setId(UUID.randomUUID().replace("-","")); reportFile.setReportId(reportId); reportFile.setFileId(s); + reportFile.setState(2); reportFiles.add(reportFile); } iReportFileService.saveBatch(reportFiles); diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml index f0dde0a..f7efaeb 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportManageMapper.xml @@ -334,11 +334,11 @@ rm.confidentialLevel AS confidentialLevel, rm.privacyLevel AS privacyLevel, rm.secrecy_last AS secrecyLast, - f.id as fileId, f.file_name as fileName ,rf.id as rfId + f.FILE_ID as fileId, f.file_name as fileName ,rf.id as rfId FROM `tt_report_manage` AS rm LEFT JOIN ts_user AS u ON u.USID = rm.createUserId LEFT JOIN ts_org as org on org.id = rm.department - LEFT JOIN ts_report_file rf on rf.report_id = rm.id on rf.state = 2 + LEFT JOIN ts_report_file rf on rf.report_id = rm.id and rf.state = 2 LEFT JOIN ts_file f on f.FILE_ID = rf.file_id WHERE rm.id = #{reportId} AND rm.del_flag = 0 From 6aed66b1caef6e348b59f932a5085e96c321312c Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 10:52:21 +0800 Subject: [PATCH 23/44] =?UTF-8?q?feat:=E4=B8=8A=E4=BC=A0=E6=97=B6=E6=8A=BD?= =?UTF-8?q?=E5=8F=96=E6=8A=A5=E5=91=8A=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/service/IReportContentService.java | 4 +- .../impl/IReportContentServiceImpl.java | 62 ++++++++++++------- .../service/impl/IReportServiceImpl.java | 3 +- .../impl/ITtReportManageActServiceImpl.java | 2 +- 4 files changed, 44 insertions(+), 27 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java index 37ce02d..a592798 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportContentService.java @@ -3,7 +3,6 @@ package com.adc.da.report.service; import com.adc.da.report.eo.ReportContentEntity; import com.baomidou.mybatisplus.extension.service.IService; -import java.io.FileNotFoundException; import java.io.IOException; /** @@ -18,7 +17,6 @@ public interface IReportContentService extends IService { * 插入报告内容表 * * @param reportId 报告id - * @param fileId 文件id */ - void insertReportContent(String reportId, String fileId) throws IOException; + void insertReportContent(String reportId) throws IOException; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java index bd326c1..c77fbfd 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java @@ -1,19 +1,22 @@ package com.adc.da.report.service.impl; import com.adc.da.report.dao.mysql.FileDao; +import com.adc.da.report.dao.mysql.ReportFileDao; import com.adc.da.report.eo.FileEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.util.FileContentUtil; import com.adc.da.report.util.LocalFileUtil; import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; +import com.adc.da.util.utils.CollectionUtils; import com.adc.da.util.utils.FileUtil; import com.adc.da.util.utils.UUID; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.adc.da.report.eo.ReportContentEntity; import com.adc.da.report.service.IReportContentService; import com.adc.da.report.dao.mysql.ReportContentDao; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,6 +25,9 @@ import javax.annotation.Resource; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** * @author Caihaohan @@ -51,36 +57,50 @@ public class IReportContentServiceImpl extends ServiceImpl reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); + reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportId); + List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); + List fileIds = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(reportFiles)) { + fileIds = reportFiles.stream().map(ReportFile::getFileId).collect(Collectors.toList()); + } + StringBuilder content = new StringBuilder(); + for (String fileId : fileIds) { + //获取文件 + FileEntity fileEntity = fileDao.selectById(fileId); + String path = uploadFile + fileEntity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(fileEntity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(fileEntity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(fileEntity.getSavePath(), outputStream); + } + File file = new File(path); + //解析出内容 + content.append(FileContentUtil.readFileContent(file)); + + //将文件删除 + outputStream.close(); + FileUtil.deleteFile(path); } - File file = new File(path); - //解析出内容 - String content = FileContentUtil.readFileContent(file); //将内容存入 ReportContentEntity reportContent = query().eq("report_id", reportId).one(); if (reportContent == null) { - ReportContentEntity reportContentEntity = new ReportContentEntity(UUID.randomUUID10(), reportId, content); + ReportContentEntity reportContentEntity = new ReportContentEntity(UUID.randomUUID10(), reportId, content.toString()); save(reportContentEntity); } else { - reportContent.setReportContent(content); + reportContent.setReportContent(content.toString()); saveOrUpdate(reportContent); } - //将文件删除 - outputStream.close(); - FileUtil.deleteFile(path); } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index ee0a49c..a739bfe 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -177,8 +177,7 @@ public class IReportServiceImpl extends ServiceImpl } //插入报表内容表 try { - //TODO FILE - iReportContentService.insertReportContent(reportId, reportEntity.getFileId()); + iReportContentService.insertReportContent(reportId); log.info("抽取报告内容"); } catch (IOException e) { log.error("获取报告内容失败", e); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index 9790b9b..68011c9 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -163,7 +163,7 @@ public class ITtReportManageActServiceImpl extends ServiceImpl Date: Thu, 25 May 2023 11:12:43 +0800 Subject: [PATCH 24/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=96=B0=E5=A2=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/adc/da/report/eo/ReportEntity.java | 2 +- .../da/report/service/impl/IReportContentServiceImpl.java | 1 + .../com/adc/da/report/service/impl/IReportServiceImpl.java | 5 ++--- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java index f444238..8dea718 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportEntity.java @@ -111,5 +111,5 @@ public class ReportEntity { private List> labelList; @TableField(exist = false) - private List fileList; + private List fileList; } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java index c77fbfd..3fde68d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportContentServiceImpl.java @@ -65,6 +65,7 @@ public class IReportContentServiceImpl extends ServiceImpl reportFileLambdaQueryWrapper = new LambdaQueryWrapper<>(); reportFileLambdaQueryWrapper.eq(ReportFile::getReportId, reportId); + reportFileLambdaQueryWrapper.eq(ReportFile::getState, 2); List reportFiles = reportFileDao.selectList(reportFileLambdaQueryWrapper); List fileIds = new ArrayList<>(); if (CollectionUtils.isNotEmpty(reportFiles)) { diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index d7c8575..527fd78 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -154,11 +154,10 @@ public class IReportServiceImpl extends ServiceImpl //文件 reportFileDao.delByReportId(new ReportFile(reportId,2)); List reportFiles = new ArrayList<>(); - for (String s : reportEntity.getFileList()) { - ReportFile reportFile = new ReportFile(); + for (ReportFile reportFile : reportEntity.getFileList()) { reportFile.setId(UUID.randomUUID().replace("-","")); reportFile.setReportId(reportId); - reportFile.setFileId(s); +// reportFile.setFileId(s); reportFile.setState(2); reportFiles.add(reportFile); } From 8d3b39e9e3cadb7d425893ac178983fe19ed320c Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 14:37:48 +0800 Subject: [PATCH 25/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E5=B7=B2=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/dao/mysql/ReportFileDao.java | 4 ++++ .../mybatis/mapper/mysql/ReportFileMapper.xml | 12 +++++++++++ .../task/TodoTaskController.java | 21 +++++++++++++++---- 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 571b189..13b42d8 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -4,6 +4,8 @@ import com.adc.da.report.eo.ReportFile; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + public interface ReportFileDao extends BaseMapper { void delByReportId(@Param("pageVO") ReportFile reportFile); @@ -11,4 +13,6 @@ public interface ReportFileDao extends BaseMapper { void actEndDelReport(@Param("reportId")String reportId); void updateState(@Param("reportId")String dataId); + + List selectByReport(@Param("pageVO")ReportFile reportFile); } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml index 7632b59..03ad851 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportFileMapper.xml @@ -26,4 +26,16 @@ + diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java index 6a7cef1..41bbe1b 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java @@ -2,11 +2,9 @@ package com.adc.da.wkflow.business_activiti.task; import cn.hutool.core.util.StrUtil; import com.adc.da.login.util.UserUtils; -import com.adc.da.report.dao.mysql.PowerApplyActDao; -import com.adc.da.report.dao.mysql.ReportDao; -import com.adc.da.report.dao.mysql.TreeLabelDao; -import com.adc.da.report.dao.mysql.TtReportManageActDao; +import com.adc.da.report.dao.mysql.*; import com.adc.da.report.eo.ReportEntity; +import com.adc.da.report.eo.ReportFile; import com.adc.da.report.eo.TtReportManageAct; import com.adc.da.report.vo.PowerApplyActPageVO; import com.adc.da.sys.service.iservice.IUserEoService; @@ -87,6 +85,9 @@ public class TodoTaskController { @Autowired private TtReportManageActDao ttReportManageActDao; + @Autowired + private ReportFileDao reportFileDao; + @Autowired private ReportDao reportDao; @@ -619,6 +620,12 @@ public class TodoTaskController { }else { ttReportManageAct = ttReportManageActDao.selectByPrcId(pId); } + // 为空说明流程已经结束 + if (ttReportManageAct.getFileList().size() == 0){ + List reportFiles = + reportFileDao.selectByReport(new ReportFile(ttReportManageAct.getDataId(),2)); + ttReportManageAct.setFileList(reportFiles); + } List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId()); ttReportManageAct.setLabelList(labelList); String string = JSONArray.toJSONString(ttReportManageAct); @@ -633,6 +640,12 @@ public class TodoTaskController { }else { ttReportManageAct = ttReportManageActDao.selectByPrcId(pId); } + // 为空说明流程已经结束 + if (ttReportManageAct.getFileList().size() == 0){ + List reportFiles = + reportFileDao.selectByReport(new ReportFile(ttReportManageAct.getDataId(),2)); + ttReportManageAct.setFileList(reportFiles); + } List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId()); ttReportManageAct.setLabelList(labelList); String string = JSONArray.toJSONString(ttReportManageAct); From 04a3d4237a4fb811da9e6009ba9c926bf7dbc408 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 14:57:50 +0800 Subject: [PATCH 26/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E6=8A=BD=E5=8F=96?= =?UTF-8?q?=E7=A9=BA=E6=96=87=E4=BB=B6=E5=86=85=E5=AE=B9=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adc/da/report/util/FileContentUtil.java | 95 ++++++++++--------- 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java index 1ba8074..cff0fa3 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/FileContentUtil.java @@ -5,11 +5,11 @@ import java.io.FileInputStream; import java.io.IOException; import com.adc.da.report.constant.ReportConstants; +import lombok.extern.slf4j.Slf4j; import org.apache.poi.hslf.usermodel.HSLFShape; import org.apache.poi.hslf.usermodel.HSLFSlide; import org.apache.poi.hslf.usermodel.HSLFTextShape; import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xslf.usermodel.XMLSlideShow; @@ -22,7 +22,6 @@ import org.apache.poi.hwpf.extractor.WordExtractor; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.extractor.XWPFWordExtractor; import org.apache.poi.hslf.usermodel.HSLFSlideShow; -import org.apache.poi.hslf.extractor.PowerPointExtractor; import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.text.PDFTextStripper; @@ -31,6 +30,7 @@ import org.apache.pdfbox.text.PDFTextStripper; * * @author caihaohan */ +@Slf4j public class FileContentUtil { public static String readFileContent(File file) throws IOException { @@ -39,55 +39,58 @@ public class FileContentUtil { StringBuilder content = new StringBuilder(); FileInputStream fis = new FileInputStream(file); - - switch (fileExtension) { - case ReportConstants.FILE_EXTENSIONS_XLS: - HSSFWorkbook workbookXls = new HSSFWorkbook(fis); - content = new StringBuilder(readExcelContent(workbookXls)); - break; - case ReportConstants.FILE_EXTENSIONS_XLSX: - XSSFWorkbook workbookXlsx = new XSSFWorkbook(fis); - content = new StringBuilder(readExcelContent(workbookXlsx)); - break; - case ReportConstants.FILE_EXTENSIONS_DOC: - HWPFDocument documentDoc = new HWPFDocument(fis); - WordExtractor extractorDoc = new WordExtractor(documentDoc); - content = new StringBuilder(extractorDoc.getText()); - break; - case ReportConstants.FILE_EXTENSIONS_DOCX: - XWPFDocument documentDocx = new XWPFDocument(fis); - XWPFWordExtractor extractorDocx = new XWPFWordExtractor(documentDocx); - content = new StringBuilder(extractorDocx.getText()); - break; - case ReportConstants.FILE_EXTENSIONS_PPT: - HSLFSlideShow ppt = new HSLFSlideShow(fis); - for (HSLFSlide slide : ppt.getSlides()) { - for (HSLFShape shape : slide.getShapes()) { - if (shape instanceof HSLFTextShape) { - HSLFTextShape textShape = (HSLFTextShape) shape; - content.append(textShape.getText()).append("\n"); + try { + switch (fileExtension) { + case ReportConstants.FILE_EXTENSIONS_XLS: + HSSFWorkbook workbookXls = new HSSFWorkbook(fis); + content = new StringBuilder(readExcelContent(workbookXls)); + break; + case ReportConstants.FILE_EXTENSIONS_XLSX: + XSSFWorkbook workbookXlsx = new XSSFWorkbook(fis); + content = new StringBuilder(readExcelContent(workbookXlsx)); + break; + case ReportConstants.FILE_EXTENSIONS_DOC: + HWPFDocument documentDoc = new HWPFDocument(fis); + WordExtractor extractorDoc = new WordExtractor(documentDoc); + content = new StringBuilder(extractorDoc.getText()); + break; + case ReportConstants.FILE_EXTENSIONS_DOCX: + XWPFDocument documentDocx = new XWPFDocument(fis); + XWPFWordExtractor extractorDocx = new XWPFWordExtractor(documentDocx); + content = new StringBuilder(extractorDocx.getText()); + break; + case ReportConstants.FILE_EXTENSIONS_PPT: + HSLFSlideShow ppt = new HSLFSlideShow(fis); + for (HSLFSlide slide : ppt.getSlides()) { + for (HSLFShape shape : slide.getShapes()) { + if (shape instanceof HSLFTextShape) { + HSLFTextShape textShape = (HSLFTextShape) shape; + content.append(textShape.getText()).append("\n"); + } } } - } - break; - case ReportConstants.FILE_EXTENSIONS_PPTX: - XMLSlideShow pptx = new XMLSlideShow(fis); - for (XSLFSlide slide : pptx.getSlides()) { - for (XSLFShape shape : slide.getShapes()) { - if (shape instanceof XSLFTextShape) { - XSLFTextShape textShape = (XSLFTextShape) shape; - content.append(textShape.getText()).append("\n"); + break; + case ReportConstants.FILE_EXTENSIONS_PPTX: + XMLSlideShow pptx = new XMLSlideShow(fis); + for (XSLFSlide slide : pptx.getSlides()) { + for (XSLFShape shape : slide.getShapes()) { + if (shape instanceof XSLFTextShape) { + XSLFTextShape textShape = (XSLFTextShape) shape; + content.append(textShape.getText()).append("\n"); + } } } - } - break; - case ReportConstants.FILE_EXTENSIONS_PDF: - PDDocument document = PDDocument.load(fis); - PDFTextStripper stripper = new PDFTextStripper(); - content = new StringBuilder(stripper.getText(document)); - default: + break; + case ReportConstants.FILE_EXTENSIONS_PDF: + PDDocument document = PDDocument.load(fis); + PDFTextStripper stripper = new PDFTextStripper(); + content = new StringBuilder(stripper.getText(document)); + default: + } + } catch (Exception e) { + fis.close(); + log.info("文件内容抽取失败,原因可能是上传的文件为空文件"); } - fis.close(); return content.toString(); } From 5c886b5f02602c064a89a40dbcbaefaa4ea306e1 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 14:59:14 +0800 Subject: [PATCH 27/44] =?UTF-8?q?feat:=E6=96=B0=E7=89=88=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=A2=84=E8=A7=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../da/report/controller/ReportManageConroller.java | 11 ++++++----- .../com/adc/da/report/service/IReportService.java | 5 +++-- .../da/report/service/impl/IReportServiceImpl.java | 10 +++++----- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index ae62141..a13e4da 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -243,19 +243,20 @@ public class ReportManageConroller { /** * 获取报告预览 - * @param id + * @param reportId + * @param fileId * @return */ @ApiOperation("获取报告预览") - @GetMapping("/getReportHtml/{id}") - public ResponseMessage getReportHtml(@PathVariable("id") String id) { - String html = reportService.reportHtml(id); + @GetMapping("/getReportHtml") + public ResponseMessage getReportHtml(@RequestParam String reportId, @RequestParam String fileId) { + String html = reportService.reportHtml(reportId, fileId); Map map = new HashMap<>(); map.put("content", html); ReportLogBook reportLog = new ReportLogBook(); reportLog.setId(UUID.randomUUID().toString().replaceAll("-","")); - reportLog.setReportId(id); + reportLog.setReportId(reportId); reportLog.setType(1); reportLog.setUpdateTime(new Date()); reportLog.setUserId(UserUtils.getUserId()); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java index 46ad7c7..54a41fb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java @@ -42,10 +42,11 @@ public interface IReportService { /** * 获取报告htmlString - * @param id + * @param reportId + * @param fileId * @return */ - String reportHtml(String id); + String reportHtml(String reportId, String fileId); IPage addReportPage(ReportQueryVo vo) throws Exception; diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 527fd78..255a4bb 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -422,18 +422,18 @@ public class IReportServiceImpl extends ServiceImpl /** * 报告html * - * @param id + * @param reportId + * @param fileId * @return */ @Override - public String reportHtml(String id) { + public String reportHtml(String reportId, String fileId) { try { - ReportEntity entity = reportDao.selectById(id); - String key = entity.getId() + "-" + entity.getFileId(); + String key = reportId + fileId; String html = stringRedisTemplate.boundValueOps(key).get(); //没有的话就生成 if (StrUtil.isBlank(html)) { - html = createHtmlString(entity.getFileId()); + html = createHtmlString(fileId); log.info("执行完成html" + html); From 4f4650d3c1343611b05cb17024c5e4d9e7b146df Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 15:01:56 +0800 Subject: [PATCH 28/44] =?UTF-8?q?feat:=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8E=8B=E7=BC=A9=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 201 +++++++++++------- .../com/adc/da/report/dao/mysql/FileDao.java | 3 + .../adc/da/report/service/IFileService.java | 14 ++ .../report/service/impl/IFileServiceImpl.java | 26 +++ .../com/adc/da/report/util/LocalFileUtil.java | 36 ++++ .../com/adc/da/report/util/WaterMarkUtil.java | 86 ++++---- .../mybatis/mapper/mysql/FileDao.xml | 20 ++ 7 files changed, 276 insertions(+), 110 deletions(-) create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index a13e4da..fe6358e 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -19,6 +19,7 @@ import com.adc.da.report.vo.ReportVo; import com.adc.da.util.exception.AdcDaBaseException; import com.adc.da.util.http.ResponseMessage; import com.adc.da.util.http.Result; +import com.adc.da.util.utils.CollectionUtils; import com.adc.da.util.utils.FileUtil; import com.adc.da.util.utils.StringUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -39,11 +40,11 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.*; -import java.net.URISyntaxException; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.zip.ZipOutputStream; import static com.adc.da.report.constant.ReportConstants.FILE_EXTENSIONS_PDF; @@ -407,105 +408,157 @@ public class ReportManageConroller { } - -// /** -// * 下载文件 -// * @param response -// * @param fileId -// * @throws IOException -// */ -// @ApiOperation(value = "|下载文件") -// @GetMapping("/download") -// public void downloadPic(HttpServletResponse response, String fileId) throws IOException { -// -// try { -// FileEntity entity = fileService.getFile(fileId); -// String fileName = entity.getFileName(); -// String filename = URLEncoder.encode(fileName, "UTF-8"); -// response.setHeader("Content-Disposition", "attachment;filename=" + filename); -// response.setContentType("application/x-download"); -//// File file = new File(uploadFile, entity.getSavePath()); -// // 上传方式:阿里云:alioss 华为云:hwobs -// if ("hwobs".equals(uploadType)){ -// obsBootUtil.downFile(entity.getSavePath(), response); -// }else if ("alioss".equals(uploadType)){ -// ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); -// }else if ("local".equals(uploadType)){ -// localFileUtil.downFile(entity.getSavePath(), response); -// } -// if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { -// String text = "text"; -// PdfUtil.addWatermarkToPdf(response, text); -// } -// } catch (Exception ex) { -// log.info(ex.getMessage(),ex); -// } -// } - /** * 下载文件 * @param response - * @param fileId + * @param fileIds * @throws IOException */ @ApiOperation(value = "|下载文件") @GetMapping("/download") - public void downloadPic(HttpServletResponse response, String fileId,String repostId) throws IOException { + public void download(HttpServletResponse response, String[] fileIds, String reportId) throws IOException { + List fileIdList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(fileIds)) { + fileIdList = Arrays.asList(fileIds); + } - if (StrUtil.isNotBlank(repostId)) { + if (StrUtil.isBlank(reportId)) { + throw new AdcDaBaseException("缺少报告id"); + } + + if (StrUtil.isNotBlank(reportId)) { //校验权限 - if (!reportService.isAllowDownload(UserUtils.getUserId(), repostId)) { + if (!reportService.isAllowDownload(UserUtils.getUserId(), reportId)) { throw new AdcDaBaseException("无此报告下载权限"); } } - try { - FileEntity entity = fileService.getFile(fileId); - String fileName = entity.getFileName(); - String filename = URLEncoder.encode(fileName, "UTF-8"); - response.setHeader("Content-Disposition", "attachment;filename=" + filename); - response.setContentType("application/x-download"); + response.setContentType("application/x-download"); + //待下载的文件id List + List downLoadFileIds; - //PDF文件需要加水印 - if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { - String path = uploadFile + entity.getSavePath(); - FileOutputStream outputStream = new FileOutputStream(path); - // 上传方式:阿里云:alioss 华为云:hwobs - if ("hwobs".equals(uploadType)) { - obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); - } else if ("alioss".equals(uploadType)) { - ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); - } else if ("local".equals(uploadType)) { - localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); - } - //给文件添加水印 - waterMarkUtil.addWatermarkToPdf(new FileInputStream(path), response); + //判断是从列表页面下载 还是预览页面下载 + if (CollectionUtils.isEmpty(fileIdList)) { + //列表点击下载按钮 + downLoadFileIds = fileService.getDownloadFileIds(reportId); + if (CollectionUtils.isEmpty(downLoadFileIds)) { + log.info("无法下载,原因可能是无可下载文件(xls/xlsx文件无法下载)"); + String zipFileName = "empty.zip"; // 压缩文件名 + try { + // 设置响应头信息 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + zipFileName); - } else { - // 上传方式:阿里云:alioss 华为云:hwobs 本地:local - if ("hwobs".equals(uploadType)){ - obsBootUtil.downFile(entity.getSavePath(), response); - }else if ("alioss".equals(uploadType)){ - ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); - }else if ("local".equals(uploadType)){ - localFileUtil.downFile(entity.getSavePath(), response); + // 创建空的ZipOutputStream + ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); + zipOutputStream.close(); + return; + } catch (IOException e) { + e.printStackTrace(); } } - - } catch (Exception ex) { - log.info(ex.getMessage(),ex); + } else { + //检测是否要下载Excel文件 + if (fileService.hasExcelFileId(fileIdList)) { + throw new AdcDaBaseException("不可以下载Excel文件"); + } + //预览点击下载按钮 + downLoadFileIds = fileIdList; } - if (StringUtils.isNotEmpty(repostId)){ + + //如果只下载一个文件,则不压缩 + if (downLoadFileIds.size() == 1) { + String fileId = downLoadFileIds.get(0); + try { + FileEntity entity = fileService.getFile(fileId); + String fileName = entity.getFileName(); + // 获取编码后的文件名 + String encodedFileName = URLEncoder.encode(fileName, "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName); + + //PDF文件需要加水印 + if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { + String path = uploadFile + entity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); + } + //给文件添加水印 + waterMarkUtil.addWatermarkToPdfAndWriteToResponse(new FileInputStream(path), response); + outputStream.close(); + } else { + // 上传方式:阿里云:alioss 华为云:hwobs 本地:local + if ("hwobs".equals(uploadType)){ + obsBootUtil.downFile(entity.getSavePath(), response); + }else if ("alioss".equals(uploadType)){ + ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); + }else if ("local".equals(uploadType)){ + localFileUtil.downFile(entity.getSavePath(), response); + } + } + + } catch (Exception ex) { + log.info(ex.getMessage(),ex); + } + } else { + List filePaths = new ArrayList<>(); + String reportName = reportDao.selectById(reportId).getName() + ".zip"; + // 获取编码后的文件名 + String encodedFileName = URLEncoder.encode(reportName, "UTF-8"); + // 设置响应头信息 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName); + response.setHeader("Content-Transfer-Encoding", "binary"); + response.setHeader("Pragma", "public"); + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Expires", "0"); + + for (String fileId : downLoadFileIds) { + try { + FileEntity entity = fileService.getFile(fileId); + String fileName = entity.getFileName(); + + String path = uploadFile + entity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + filePaths.add(path); + + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); + } + //PDF文件需要加水印 + if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { + waterMarkUtil.savePdfToFile(new FileInputStream(path), path); + } + outputStream.close(); + } catch (Exception ex) { + log.info(ex.getMessage(),ex); + } + } + //将文件压缩 写入Response + localFileUtil.compressFiles(filePaths, response); + } + + if (StringUtils.isNotEmpty(reportId)){ ReportLogBook reportLog = new ReportLogBook(); reportLog.setId(UUID.randomUUID().toString().replaceAll("-","")); - reportLog.setReportId(repostId); + reportLog.setReportId(reportId); reportLog.setType(2); reportLog.setUpdateTime(new Date()); reportLog.setUserId(UserUtils.getUserId()); reportLogBookDao.insert(reportLog); //报告日志管理 - ReportEntity reportEntity = reportDao.selectById(repostId); + ReportEntity reportEntity = reportDao.selectById(reportId); reportLog(reportEntity.getName(),"下载"); } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java index 74087c8..5a71440 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java @@ -3,9 +3,12 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.FileEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; + /** * @Author doudxw * @Date 2021/6/28 15:19 */ public interface FileDao extends BaseMapper { + List getDownloadFileIds(String reportId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java index 7c875de..b5e104e 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java @@ -28,5 +28,19 @@ public interface IFileService { List> batchUploadFile(MultipartFile[] files); + /** + * 判断传进来的fileIds里有没有Excel的fileId + * @param fileIds + * @return + */ + boolean hasExcelFileId(List fileIds); + + /** + * 根据报告id返回所有可以下载的文件id + * @param reportId + * @return + */ + List getDownloadFileIds(String reportId); + Map uploadFile(MultipartFile file); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java index 4ad2e85..b78e80d 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java @@ -1,11 +1,14 @@ package com.adc.da.report.service.impl; +import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.FileDao; import com.adc.da.report.eo.FileEntity; import com.adc.da.report.service.IFileService; import com.adc.da.report.util.LocalFileUtil; import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; +import com.adc.da.util.utils.CollectionUtils; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -175,4 +178,27 @@ public class IFileServiceImpl implements IFileService { this.addFile(entity); return resultMap; } + + @Override + public boolean hasExcelFileId(List fileIds) { + boolean hasExcelFileId = false; + LambdaQueryWrapper fileEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); + fileEntityLambdaQueryWrapper.in(FileEntity::getFileId, fileIds); + List fileEntities = fileDao.selectList(fileEntityLambdaQueryWrapper); + if (CollectionUtils.isNotEmpty(fileEntities)) { + for (FileEntity fileEntity : fileEntities) { + if (ReportConstants.FILE_EXTENSIONS_XLS.equals(fileEntity.getFileType()) || + ReportConstants.FILE_EXTENSIONS_XLSX.equals(fileEntity.getFileType())) { + hasExcelFileId = true; + break; + } + } + } + return hasExcelFileId; + } + + @Override + public List getDownloadFileIds(String reportId) { + return fileDao.getDownloadFileIds(reportId); + } } diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java index 6204671..b4adc83 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/LocalFileUtil.java @@ -10,6 +10,9 @@ import javax.servlet.http.HttpServletResponse; import java.io.*; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.List; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; /** * @author Caihaohan @@ -24,6 +27,39 @@ public class LocalFileUtil { @Value("${localFilePath}") private String localFilePath; + public void compressFiles(List filePaths, HttpServletResponse response) { + try { + // 创建输出流 + OutputStream outputStream = response.getOutputStream(); + ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream); + + byte[] buffer = new byte[1024]; + + for (String filePath : filePaths) { + File sourceFile = new File(filePath); + + ZipEntry zipEntry = new ZipEntry(sourceFile.getName()); + zipOutputStream.putNextEntry(zipEntry); + + FileInputStream fileInputStream = new FileInputStream(sourceFile); + + int len; + while ((len = fileInputStream.read(buffer)) > 0) { + zipOutputStream.write(buffer, 0, len); + } + + fileInputStream.close(); + zipOutputStream.closeEntry(); + } + + zipOutputStream.close(); + + System.out.println("文件成功压缩成ZIP格式并写入 HttpServletResponse!"); + } catch (IOException e) { + e.printStackTrace(); + } + } + public void saveFile(InputStream fileInputStream, String fileName) throws IOException { String path = localFilePath + fileName; FileOutputStream fileOutputStream = new FileOutputStream(path); diff --git a/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java b/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java index 48350ae..72606e1 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java +++ b/adc-da-report/src/main/java/com/adc/da/report/util/WaterMarkUtil.java @@ -21,6 +21,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.time.LocalDate; @@ -52,49 +53,62 @@ public class WaterMarkUtil { return configValue + " " + userName + " " + formattedDate; } - public void addWatermarkToPdf(FileInputStream inputStream, HttpServletResponse response) throws IOException { + public PDDocument addWatermarkToPdf(FileInputStream inputStream) throws IOException { String watermarkText = getWaterMarkConfig(); - // 加载PDF文档 - try (PDDocument document = PDDocument.load(inputStream)) { - // 设置水印字体、字体大小、颜色和透明度 - ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf"); - PDType0Font font = PDType0Font.load(document, fontResource.getInputStream()); - float fontSize = 13.0f; - Color color = new Color(100, 100, 100, 0); - PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); - graphicsState.setNonStrokingAlphaConstant(0.4f); - graphicsState.setStrokingAlphaConstant(0.4f); + PDDocument document = PDDocument.load(inputStream); - // 遍历每一页并添加水印 - for (PDPage page : document.getPages()) { - // 获取页面尺寸以计算水印位置 - PDRectangle pageSize = page.getMediaBox(); - float xStep = pageSize.getWidth() / 4; - float yStep = pageSize.getHeight() / 4; - float rotationInRadians = (float) Math.toRadians(20); + // 设置水印字体、字体大小、颜色和透明度 + ClassPathResource fontResource = new ClassPathResource("fonts/SourceHanSerif-VF.ttf"); + PDType0Font font = PDType0Font.load(document, fontResource.getInputStream()); + float fontSize = 13.0f; + Color color = new Color(100, 100, 100, 0); + PDExtendedGraphicsState graphicsState = new PDExtendedGraphicsState(); + graphicsState.setNonStrokingAlphaConstant(0.4f); + graphicsState.setStrokingAlphaConstant(0.4f); - for (float xPosition = pageSize.getLowerLeftX(); xPosition <= pageSize.getWidth(); xPosition += xStep) { - for (float yPosition = pageSize.getLowerLeftY(); yPosition <= pageSize.getHeight(); yPosition += yStep) { - // 创建内容流并设置图形状态参数 - try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) { - contentStream.setGraphicsStateParameters(graphicsState); - contentStream.setFont(font, fontSize); - contentStream.setNonStrokingColor(color); - contentStream.beginText(); - contentStream.setRenderingMode(RenderingMode.FILL); - // 设置水印文本的旋转和位置 - contentStream.setTextMatrix(Matrix.getRotateInstance(rotationInRadians, xPosition, yPosition)); - contentStream.showText(watermarkText); - contentStream.endText(); - } + // 遍历每一页并添加水印 + for (PDPage page : document.getPages()) { + // 获取页面尺寸以计算水印位置 + PDRectangle pageSize = page.getMediaBox(); + float xStep = pageSize.getWidth() / 4; + float yStep = pageSize.getHeight() / 4; + float rotationInRadians = (float) Math.toRadians(20); + + for (float xPosition = pageSize.getLowerLeftX(); xPosition <= pageSize.getWidth(); xPosition += xStep) { + for (float yPosition = pageSize.getLowerLeftY(); yPosition <= pageSize.getHeight(); yPosition += yStep) { + // 创建内容流并设置图形状态参数 + try (PDPageContentStream contentStream = new PDPageContentStream(document, page, PDPageContentStream.AppendMode.APPEND, true, true)) { + contentStream.setGraphicsStateParameters(graphicsState); + contentStream.setFont(font, fontSize); + contentStream.setNonStrokingColor(color); + contentStream.beginText(); + contentStream.setRenderingMode(RenderingMode.FILL); + // 设置水印文本的旋转和位置 + contentStream.setTextMatrix(Matrix.getRotateInstance(rotationInRadians, xPosition, yPosition)); + contentStream.showText(watermarkText); + contentStream.endText(); } } } + } + return document; + } - // 将处理后的PDF写入HTTP响应 - try (OutputStream outputStream = response.getOutputStream()) { - document.save(outputStream); - } + + public void savePdfToFile(FileInputStream inputStream, String outputPath) throws IOException { + PDDocument pdDocument = addWatermarkToPdf(inputStream); + try (FileOutputStream outputStream = new FileOutputStream(outputPath)) { + pdDocument.save(outputStream); } } + + + public void addWatermarkToPdfAndWriteToResponse(FileInputStream inputStream, HttpServletResponse response) throws IOException { + PDDocument document = addWatermarkToPdf(inputStream); + try (OutputStream outputStream = response.getOutputStream()) { + document.save(outputStream); + } + document.close(); + } + } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml new file mode 100644 index 0000000..30a81a8 --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml @@ -0,0 +1,20 @@ + + + + + + From 93c9c4c1e63bea216f329a8c0ac171e6ea53a832 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Thu, 25 May 2023 16:31:39 +0800 Subject: [PATCH 29/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E4=BF=9D=E5=AF=86?= =?UTF-8?q?=E5=88=B0=E6=9C=9F=20=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?=E6=AF=8F=E6=99=9A1=E7=82=B9=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/adc/da/report/Timer/secrecyDDLTimer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/Timer/secrecyDDLTimer.java b/adc-da-report/src/main/java/com/adc/da/report/Timer/secrecyDDLTimer.java index 0811058..47567f6 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/Timer/secrecyDDLTimer.java +++ b/adc-da-report/src/main/java/com/adc/da/report/Timer/secrecyDDLTimer.java @@ -29,9 +29,9 @@ public class secrecyDDLTimer { @Autowired IReportServiceImpl iReportService; -// @Scheduled(cron="0 0 0 * * *") // @Scheduled(cron="0 0/1 * * * ?") - @Scheduled(cron="0 0/10 * * * ?") +// @Scheduled(cron="0 0/10 * * * ?") + @Scheduled(cron="0 1 0 * * *") //每晚1点执行 public void timingOpen() { log.info("**********************保密到期定时任务开始**********************"); List entity = reportDao.selectDDL(); From 8e5eb9fe56b5cfb9b972384701643f5c13bac342 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 17:21:07 +0800 Subject: [PATCH 30/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069851?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 站内信--排序--阅读状态一致时,应该再以时间排序,后发的排前面 --- .../src/main/resources/mybatis/mapper/mysql/MessageDao.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml index abe682f..2509bc8 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/MessageDao.xml @@ -43,6 +43,6 @@ AND u.USNAME like CONCAT(CONCAT('%', #{vo.createUserName}), '%') ORDER BY - um.read_type ASC + um.read_type ASC, m.createDate DESC From 63cdb3251c44ac72682dcc56ed2b69b49050b2b9 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 17:51:01 +0800 Subject: [PATCH 31/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069850?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 站内信--点击查看后,当前条数据应该变成已读 --- .../adc/da/report/controller/MessageController.java | 10 ++++++++++ .../com/adc/da/report/service/IMessageService.java | 7 +++++++ .../da/report/service/impl/IMessageServiceImpl.java | 13 ++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java b/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java index 79c80a7..04fb5e4 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/MessageController.java @@ -46,4 +46,14 @@ public class MessageController { return messageEntityService.allRead(); } + /** + * 已读 + * @return + */ + @ApiOperation("单条已读") + @GetMapping("/read/{id}") + public ResponseMessage readMessage(@PathVariable String id) { + return messageEntityService.readMessage(id); + } + } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java index fe1016c..fbdbdaa 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IMessageService.java @@ -33,4 +33,11 @@ public interface IMessageService extends IService { * @param userIds */ void publishMessage(MessageEntity message, boolean toAllUser, List userIds); + + /** + * 查看站内信设置为已读 + * @param messageId + * @return + */ + ResponseMessage readMessage(String messageId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java index a8987b9..4ea2c56 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IMessageServiceImpl.java @@ -33,6 +33,8 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import static com.adc.da.report.constant.MessageConstants.READ; + /** * @author ThinkBook * @description 针对表【ts_message】的数据库操作Service实现 @@ -65,7 +67,7 @@ public class IMessageServiceImpl extends ServiceImpl LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper<>(); wrapper.eq(UserMessageEntity::getReadType, MessageConstants.UNREAD); wrapper.eq(UserMessageEntity::getUserId, UserUtils.getUserId()); - wrapper.set(UserMessageEntity::getReadType, MessageConstants.READ); + wrapper.set(UserMessageEntity::getReadType, READ); userMessageService.update(wrapper); return Result.success("全部已读"); } @@ -101,6 +103,15 @@ public class IMessageServiceImpl extends ServiceImpl }); userMessageService.saveBatch(userMessageEntities); } + + @Override + public ResponseMessage readMessage(String id) { + LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); + lambdaUpdateWrapper.eq(UserMessageEntity::getId, id); + lambdaUpdateWrapper.set(UserMessageEntity::getReadType, READ); + userMessageService.update(lambdaUpdateWrapper); + return Result.success(); + } } From e2ea085317f7e2fcb426d0ff5e67c7384d8720c7 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Thu, 25 May 2023 17:53:53 +0800 Subject: [PATCH 32/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069857?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 报告里只有xls文件,下载后压缩包名称应该不变化,只是打开是空的。 --- .../report/controller/ReportManageConroller.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index fe6358e..35f3542 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -433,9 +433,11 @@ public class ReportManageConroller { } } - response.setContentType("application/x-download"); //待下载的文件id List List downLoadFileIds; + String reportName = reportDao.selectById(reportId).getName() + ".zip"; + // 获取编码后的文件名 + String encodedZipName = URLEncoder.encode(reportName, "UTF-8"); //判断是从列表页面下载 还是预览页面下载 if (CollectionUtils.isEmpty(fileIdList)) { @@ -447,7 +449,11 @@ public class ReportManageConroller { try { // 设置响应头信息 response.setContentType("application/zip"); - response.setHeader("Content-Disposition", "attachment; filename=" + zipFileName); + response.setHeader("Content-Disposition", "attachment; filename=" + encodedZipName); + response.setHeader("Content-Transfer-Encoding", "binary"); + response.setHeader("Pragma", "public"); + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Expires", "0"); // 创建空的ZipOutputStream ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); @@ -507,12 +513,9 @@ public class ReportManageConroller { } } else { List filePaths = new ArrayList<>(); - String reportName = reportDao.selectById(reportId).getName() + ".zip"; - // 获取编码后的文件名 - String encodedFileName = URLEncoder.encode(reportName, "UTF-8"); // 设置响应头信息 response.setContentType("application/zip"); - response.setHeader("Content-Disposition", "attachment; filename=" + encodedFileName); + response.setHeader("Content-Disposition", "attachment; filename=" + encodedZipName); response.setHeader("Content-Transfer-Encoding", "binary"); response.setHeader("Pragma", "public"); response.setHeader("Cache-Control", "no-store"); From d7c6203393af8fae636c30eb6b437863498fd2a8 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Fri, 26 May 2023 09:12:20 +0800 Subject: [PATCH 33/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069857?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 报告里只有xls文件,下载后压缩包名称应该不变化,只是打开是空的。 --- .../da/report/controller/ReportManageConroller.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index 35f3542..b8f5dba 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -44,6 +44,7 @@ import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; +import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import static com.adc.da.report.constant.ReportConstants.FILE_EXTENSIONS_PDF; @@ -435,9 +436,10 @@ public class ReportManageConroller { //待下载的文件id List List downLoadFileIds; - String reportName = reportDao.selectById(reportId).getName() + ".zip"; + String reportName = reportDao.selectById(reportId).getName(); + String folderName = reportName + ".zip"; // 获取编码后的文件名 - String encodedZipName = URLEncoder.encode(reportName, "UTF-8"); + String encodedZipName = URLEncoder.encode(folderName, "UTF-8"); //判断是从列表页面下载 还是预览页面下载 if (CollectionUtils.isEmpty(fileIdList)) { @@ -445,7 +447,6 @@ public class ReportManageConroller { downLoadFileIds = fileService.getDownloadFileIds(reportId); if (CollectionUtils.isEmpty(downLoadFileIds)) { log.info("无法下载,原因可能是无可下载文件(xls/xlsx文件无法下载)"); - String zipFileName = "empty.zip"; // 压缩文件名 try { // 设置响应头信息 response.setContentType("application/zip"); @@ -457,6 +458,9 @@ public class ReportManageConroller { // 创建空的ZipOutputStream ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); + // 添加空文件夹条目 + ZipEntry emptyDirectoryEntry = new ZipEntry(reportName + "/"); + zipOutputStream.putNextEntry(emptyDirectoryEntry); zipOutputStream.close(); return; } catch (IOException e) { From 206938b8d08f3be8d54cd155a764b6cc7c5a855f Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Fri, 26 May 2023 10:41:36 +0800 Subject: [PATCH 34/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069865?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 报告管理-上传了ppt或PPT文件后,该文件无法预览 --- .../da/report/service/impl/IReportServiceImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 255a4bb..0cab472 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -37,6 +37,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; +import org.apache.poi.poifs.filesystem.OfficeXmlFileException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Lazy; @@ -45,6 +46,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; @@ -429,7 +431,7 @@ public class IReportServiceImpl extends ServiceImpl @Override public String reportHtml(String reportId, String fileId) { try { - String key = reportId + fileId; + String key = reportId + "-" + fileId; String html = stringRedisTemplate.boundValueOps(key).get(); //没有的话就生成 if (StrUtil.isBlank(html)) { @@ -833,7 +835,13 @@ public class IReportServiceImpl extends ServiceImpl } else if (ReportConstants.FILE_EXTENSIONS_DOCX.equalsIgnoreCase(fileEntity.getFileType())) { html = WordUtil.doc2pdf(new FileInputStream(path), uploadFile, ipAddress); } else if (ReportConstants.FILE_EXTENSIONS_PPT.equalsIgnoreCase(fileEntity.getFileType())) { - html = PptUtil.doPpt2003toImage(new FileInputStream(path), uploadFile, ipAddress); + try { + html = PptUtil.doPpt2003toImage(new FileInputStream(path), uploadFile, ipAddress); + } catch (OfficeXmlFileException e) { + String newPath = path + "x"; + cn.hutool.core.io.FileUtil.rename(new File(path), newPath, false, false); + html = PptUtil.doPpt2007toImage(new FileInputStream(newPath), uploadFile, ipAddress); + } } else if (ReportConstants.FILE_EXTENSIONS_PPTX.equalsIgnoreCase(fileEntity.getFileType())) { html = PptUtil.doPpt2007toImage(new FileInputStream(path), uploadFile, ipAddress); } else if (ReportConstants.FILE_EXTENSIONS_PDF.equalsIgnoreCase(fileEntity.getFileType())) { From 400d5bc28a3e7cfb4efb50ea3d11c69f655b79ed Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Fri, 26 May 2023 10:55:17 +0800 Subject: [PATCH 35/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportManageConroller.java | 14 ++++++++++++ .../da/report/dao/mysql/ReportFileDao.java | 4 ++++ .../da/report/dao/mysql/ReportLabelDao.java | 4 ++++ .../adc/da/report/dao/mysql/TreeLabelDao.java | 3 ++- .../adc/da/report/eo/ReportLabelEntity.java | 13 ++++++++--- .../adc/da/report/service/IReportService.java | 2 ++ .../service/impl/IReportServiceImpl.java | 20 ++++++++++++----- .../impl/ITtReportManageActServiceImpl.java | 11 ++++++---- .../adc/da/report/vo/ReportFilePageVO.java | 15 +++++++++++++ .../mybatis/mapper/mysql/ReportFileMapper.xml | 12 ++++++++++ .../mapper/mysql/ReportLabelMapper.xml | 17 ++++++++++++++ .../mybatis/mapper/mysql/TreeLabelDao.xml | 2 +- .../service/ActivitDefineService.java | 4 ++-- .../task/TodoTaskController.java | 22 +++++++++++++++---- 14 files changed, 122 insertions(+), 21 deletions(-) create mode 100644 adc-da-report/src/main/java/com/adc/da/report/vo/ReportFilePageVO.java create mode 100644 adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportLabelMapper.xml diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index b8f5dba..5d7c54a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -14,6 +14,7 @@ import com.adc.da.report.util.OSSClientUtil; import com.adc.da.report.util.ObsBootUtil; import com.adc.da.report.util.WaterMarkUtil; import com.adc.da.report.vo.ChangeUploaderVo; +import com.adc.da.report.vo.ReportFilePageVO; import com.adc.da.report.vo.ReportQueryVo; import com.adc.da.report.vo.ReportVo; import com.adc.da.util.exception.AdcDaBaseException; @@ -619,4 +620,17 @@ public class ReportManageConroller { reportService.delFile(reportFile); return Result.success(); } + + /** + * 文件分页查询 + * @return + * @throws ParseException + */ + @ApiOperation("文件分页查询") + @PostMapping("/filePage") + public ResponseMessage filePage(@RequestBody ReportFilePageVO reportFilePageVO) throws Exception { + IPage reportFileIPage = reportService.filePage(reportFilePageVO); + return Result.success(reportFileIPage); + } + } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java index 13b42d8..feb115c 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportFileDao.java @@ -1,7 +1,9 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.ReportFile; +import com.adc.da.report.vo.ReportFilePageVO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,4 +17,6 @@ public interface ReportFileDao extends BaseMapper { void updateState(@Param("reportId")String dataId); List selectByReport(@Param("pageVO")ReportFile reportFile); + + IPage filePage(IPage page,@Param("pageVO") ReportFilePageVO reportFilePageVO); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportLabelDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportLabelDao.java index 59ffc96..fc73ffe 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportLabelDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportLabelDao.java @@ -2,6 +2,7 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.ReportLabelEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; /** * @author ThinkBook @@ -11,6 +12,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface ReportLabelDao extends BaseMapper { + void actEndDelReport(@Param("reportId")String dataId); + + void updateState(@Param("reportId")String dataId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/TreeLabelDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/TreeLabelDao.java index f96fd9d..8701748 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/TreeLabelDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/TreeLabelDao.java @@ -2,6 +2,7 @@ package com.adc.da.report.dao.mysql; import com.adc.da.report.eo.TreeLabelEntity; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -20,7 +21,7 @@ public interface TreeLabelDao extends BaseMapper { */ double getMaxNum(String parentId); - List selectIdByReport(String reportId); + List selectIdByReport(@Param("reportId") String reportId,@Param("state") Integer state); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java index 1609c06..4642098 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/ReportLabelEntity.java @@ -4,13 +4,13 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import java.io.Serializable; - import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; +import java.io.Serializable; + /** * @author Caihaohan * @TableName ts_report_label @@ -46,12 +46,19 @@ public class ReportLabelEntity implements Serializable { @TableField(value = "last_label") private String lastLabel; + /** + * 状态 1 流程中 ,2 非流程中 + */ + @TableField("state") + private Integer state; + @TableField(exist = false) private static final long serialVersionUID = 121348721347890417L; - public ReportLabelEntity(String id, String reportId, String labelId) { + public ReportLabelEntity(String id, String reportId, String labelId,Integer state) { this.id = id; this.reportId = reportId; this.labelId = labelId; + this.state = state; } } \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java index 54a41fb..79c853a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportService.java @@ -3,6 +3,7 @@ package com.adc.da.report.service; import com.adc.da.report.eo.ReportEntity; import com.adc.da.report.eo.ReportFile; import com.adc.da.report.vo.ChangeUploaderVo; +import com.adc.da.report.vo.ReportFilePageVO; import com.adc.da.report.vo.ReportQueryVo; import com.adc.da.report.vo.ReportVo; import com.adc.da.util.http.ResponseMessage; @@ -100,4 +101,5 @@ public interface IReportService { void delFile(ReportFile reportFile); + IPage filePage(ReportFilePageVO ReportFilePageVO); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index 255a4bb..6d74d76 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -11,10 +11,7 @@ import com.adc.da.report.dao.mysql.ReportLabelDao; import com.adc.da.report.eo.*; import com.adc.da.report.service.*; import com.adc.da.report.util.*; -import com.adc.da.report.vo.ChangeUploaderVo; -import com.adc.da.report.vo.ReportDetailVo; -import com.adc.da.report.vo.ReportQueryVo; -import com.adc.da.report.vo.ReportVo; +import com.adc.da.report.vo.*; import com.adc.da.sys.dao.mysql.RoleEODao; import com.adc.da.sys.dao.mysql.UserEODao; import com.adc.da.sys.entity.MenuEO; @@ -171,7 +168,7 @@ public class IReportServiceImpl extends ServiceImpl for (List list : reportEntity.getLabelList()) { String lastLabel = list.get(list.size() - 1); ReportLabelEntity reportLabelEntity = new ReportLabelEntity(com.adc.da.util.utils.UUID.randomUUID10() - ,reportId, JSON.toJSONString(list),lastLabel); + ,reportId, JSON.toJSONString(list),lastLabel,1); labelList.add(reportLabelEntity); } iReportLabelService.saveBatch(labelList); @@ -205,6 +202,15 @@ public class IReportServiceImpl extends ServiceImpl reportFileDao.deleteBatchIds(reportFile.getRfIdList()); } + @Override + public IPage filePage(ReportFilePageVO reportFilePageVO) { + IPage page = new Page<>(); + page.setCurrent(reportFilePageVO.getCurrent()); + page.setSize(reportFilePageVO.getSize()); + + return reportFileDao.filePage(page,reportFilePageVO); + } + /** * 新增或编辑报告 * @@ -287,7 +293,8 @@ public class IReportServiceImpl extends ServiceImpl //插入报表标签关系表 labelList.forEach((label) -> { - ReportLabelEntity reportLabelEntity = new ReportLabelEntity(UUID.randomUUID10(), entity.getId(), label); + ReportLabelEntity reportLabelEntity = new ReportLabelEntity(UUID.randomUUID10(), entity.getId(), + label,2); reportLabelDao.insert(reportLabelEntity); }); @@ -768,6 +775,7 @@ public class IReportServiceImpl extends ServiceImpl //设置标签列表 LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ReportLabelEntity::getReportId, reportId); + wrapper.eq(ReportLabelEntity::getState, 2); List reportLabelEntities = reportLabelDao.selectList(wrapper); if (CollectionUtils.isNotEmpty(reportLabelEntities)) { List reportLabelIds = reportLabelEntities.stream().map(ReportLabelEntity::getLabelId).collect(Collectors.toList()); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java index 68011c9..92c57a3 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/ITtReportManageActServiceImpl.java @@ -3,10 +3,7 @@ package com.adc.da.report.service.impl; import cn.hutool.core.bean.BeanUtil; import com.adc.da.login.util.UserUtils; -import com.adc.da.report.dao.mysql.PowerApplyDao; -import com.adc.da.report.dao.mysql.ReportDao; -import com.adc.da.report.dao.mysql.ReportFileDao; -import com.adc.da.report.dao.mysql.TtReportManageActDao; +import com.adc.da.report.dao.mysql.*; import com.adc.da.report.eo.LogEntity; import com.adc.da.report.eo.ReportEntity; import com.adc.da.report.eo.TtReportManageAct; @@ -58,6 +55,9 @@ public class ITtReportManageActServiceImpl extends ServiceImpl @@ -162,6 +162,9 @@ public class ITtReportManageActServiceImpl extends ServiceImpl + diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportLabelMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportLabelMapper.xml new file mode 100644 index 0000000..98dbfd9 --- /dev/null +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/ReportLabelMapper.xml @@ -0,0 +1,17 @@ + + + + + update ts_report_label set state = 2 + where report_id = #{reportId} + + + delete from ts_report_label + + report_id = #{reportId} + and state = 2 + + + + + diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TreeLabelDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TreeLabelDao.xml index f261e1d..f40b1a7 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/TreeLabelDao.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/TreeLabelDao.xml @@ -21,6 +21,6 @@ diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java index 0b5fe46..3eae4e1 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/service/ActivitDefineService.java @@ -120,7 +120,7 @@ public class ActivitDefineService { JSONArray objects = JSONObject.parseArray(label); String lastLabel =(String)objects.get(objects.size()-1); ReportLabelEntity reportLabelEntity = new ReportLabelEntity(com.adc.da.util.utils.UUID.randomUUID10() - ,ttReportManageAct.getDataId(), label,lastLabel); + ,ttReportManageAct.getDataId(), label,lastLabel,1); labelList.add(reportLabelEntity); } iReportLabelService.saveBatch(labelList); @@ -154,7 +154,7 @@ public class ActivitDefineService { JSONArray objects = JSONObject.parseArray(label); String lastLabel =(String)objects.get(objects.size()-1); ReportLabelEntity reportLabelEntity = new ReportLabelEntity(com.adc.da.util.utils.UUID.randomUUID10() - ,ttReportManageAct.getDataId(), label,lastLabel); + ,ttReportManageAct.getDataId(), label,lastLabel,1); labelList.add(reportLabelEntity); } iReportLabelService.saveBatch(labelList); diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java index 41bbe1b..1231bb8 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java @@ -626,8 +626,15 @@ public class TodoTaskController { reportFileDao.selectByReport(new ReportFile(ttReportManageAct.getDataId(),2)); ttReportManageAct.setFileList(reportFiles); } - List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId()); - ttReportManageAct.setLabelList(labelList); + List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId(),1); + if (labelList.size()>0){ + //流程未结束 + ttReportManageAct.setLabelList(labelList); + }else { + //流程已结束 + labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId(),2); + ttReportManageAct.setLabelList(labelList); + } String string = JSONArray.toJSONString(ttReportManageAct); //去对应的 数据表查数据 busProcessNewVO.setDataJson(string); @@ -646,8 +653,15 @@ public class TodoTaskController { reportFileDao.selectByReport(new ReportFile(ttReportManageAct.getDataId(),2)); ttReportManageAct.setFileList(reportFiles); } - List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId()); - ttReportManageAct.setLabelList(labelList); + List labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId(),1); + if (labelList.size()>0){ + //流程未结束 + ttReportManageAct.setLabelList(labelList); + }else { + //流程已结束 + labelList = treeLableDao.selectIdByReport(ttReportManageAct.getDataId(),2); + ttReportManageAct.setLabelList(labelList); + } String string = JSONArray.toJSONString(ttReportManageAct); //去对应的 数据表查数据 busProcessNewVO.setDataJson(string); From fddbfa765657d5874ed36db2602dcc93bc516477 Mon Sep 17 00:00:00 2001 From: bupengxiang Date: Fri, 26 May 2023 11:41:41 +0800 Subject: [PATCH 36/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E4=BB=A3=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wkflow/business_activiti/task/TodoTaskController.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java index 1231bb8..3c52146 100644 --- a/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java +++ b/report-activity/src/main/java/com/adc/da/wkflow/business_activiti/task/TodoTaskController.java @@ -210,8 +210,10 @@ public class TodoTaskController { String taskId = entry.getValue().get(0).get("id").toString(); if (busProcessName != null) { ReportEntity reportEntity = this.selectReport(busProcessName.getPrcType(),busProcessName.getDataId()); - busProcessName.setConfidentialLevel(reportEntity.getConfidentialLevel()); - busProcessName.setPrivacyLevel(reportEntity.getPrivacyLevel()); + if(reportEntity != null){ + busProcessName.setConfidentialLevel(reportEntity.getConfidentialLevel()); + busProcessName.setPrivacyLevel(reportEntity.getPrivacyLevel()); + } busProcessName.setTaskId(taskId); busProcessName.setTaskInfo(entry.getValue().get(0).get("name").toString()); busProcessName.setTaskDefinitionKey(entry.getValue().get(0).get("taskDefinitionKey").toString()); From a7cd3eb910baf4a511fe9989b24f64b94e1d39d6 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Fri, 26 May 2023 13:51:07 +0800 Subject: [PATCH 37/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E3=80=9069876?= =?UTF-8?q?=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 报告管理可以下载excel文件 --- .../java/com/adc/da/report/TestMessage.java | 26 +-- .../controller/ReportManageConroller.java | 170 +++++++++++++++++- .../com/adc/da/report/dao/mysql/FileDao.java | 3 + .../adc/da/report/service/IFileService.java | 5 + .../report/service/impl/IFileServiceImpl.java | 5 + .../service/impl/IReportServiceImpl.java | 1 + .../mybatis/mapper/mysql/FileDao.xml | 12 +- 7 files changed, 206 insertions(+), 16 deletions(-) diff --git a/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java b/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java index 7a79029..5cd8ff6 100644 --- a/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java +++ b/adc-da-main/src/test/java/com/adc/da/report/TestMessage.java @@ -23,7 +23,7 @@ import java.util.Date; import java.util.List; @RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +@SpringBootTest public class TestMessage { @Resource @@ -31,16 +31,18 @@ public class TestMessage { @Test public void testMessagePublish() { - MessageEntity messageEntity = new MessageEntity(); - messageEntity.setMessageTitle("测试批量发送标题") - .setMessageType(MessageTypeEnum.SYSTEM_MESSAGE.getValue()) - .setId(UUID.randomUUID10()) - .setContent("测试测试最后一次") - .setDelFlag(0) - .setCreateUser("ZGGJP3N7FT") - .setCreateDate(new Date()); - List userIds = new ArrayList<>(); - userIds.add("ZGGJP3N7FT"); - messageService.publishMessage(messageEntity, false, userIds); + for (int i = 0; i < 20; i++) { + MessageEntity messageEntity = new MessageEntity(); + messageEntity.setMessageTitle("测试发送标题" + java.util.UUID.randomUUID()) + .setMessageType(MessageTypeEnum.SYSTEM_MESSAGE.getValue()) + .setId(UUID.randomUUID10()) + .setContent("测试测试站内信内容" + java.util.UUID.randomUUID()) + .setDelFlag(0) + .setCreateUser("ZGGJP3N7FT") + .setCreateDate(new Date()); + List userIds = new ArrayList<>(); + userIds.add("ZGGJP3N7FT"); + messageService.publishMessage(messageEntity, false, userIds); + } } } \ No newline at end of file diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java index 5d7c54a..2a84953 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportManageConroller.java @@ -3,6 +3,7 @@ package com.adc.da.report.controller; import cn.hutool.core.util.StrUtil; import com.adc.da.login.util.UserUtils; import com.adc.da.report.annotation.ReportLog; +import com.adc.da.report.constant.ReportConstants; import com.adc.da.report.dao.mysql.ReportDao; import com.adc.da.report.dao.mysql.ReportLogBookDao; import com.adc.da.report.eo.*; @@ -253,6 +254,13 @@ public class ReportManageConroller { @ApiOperation("获取报告预览") @GetMapping("/getReportHtml") public ResponseMessage getReportHtml(@RequestParam String reportId, @RequestParam String fileId) { + //判断要预览的是不是excel文件 + FileEntity file = fileService.getFile(fileId); + String fileType = file.getFileType(); + if (ReportConstants.FILE_EXTENSIONS_XLS.equalsIgnoreCase(fileType) || ReportConstants.FILE_EXTENSIONS_XLSX.equalsIgnoreCase(fileType)) { + return Result.error("无法预览excel文件"); + } + String html = reportService.reportHtml(reportId, fileId); Map map = new HashMap<>(); map.put("content", html); @@ -411,12 +419,12 @@ public class ReportManageConroller { } /** - * 下载文件 + * 下载文件(禁止下载Excel) * @param response * @param fileIds * @throws IOException */ - @ApiOperation(value = "|下载文件") + @ApiOperation(value = "下载文件(禁止下载Excel)") @GetMapping("/download") public void download(HttpServletResponse response, String[] fileIds, String reportId) throws IOException { List fileIdList = new ArrayList<>(); @@ -445,7 +453,7 @@ public class ReportManageConroller { //判断是从列表页面下载 还是预览页面下载 if (CollectionUtils.isEmpty(fileIdList)) { //列表点击下载按钮 - downLoadFileIds = fileService.getDownloadFileIds(reportId); + downLoadFileIds = fileService.getDownloadFileIdsWithoutExcel(reportId); if (CollectionUtils.isEmpty(downLoadFileIds)) { log.info("无法下载,原因可能是无可下载文件(xls/xlsx文件无法下载)"); try { @@ -571,6 +579,162 @@ public class ReportManageConroller { } } + /** + * 下载文件 + * @param response + * @param fileIds + * @throws IOException + */ + @ApiOperation(value = "下载文件") + @GetMapping("/downloadAll") + public void downloadAll(HttpServletResponse response, String[] fileIds, String reportId) throws IOException { + List fileIdList = new ArrayList<>(); + if (CollectionUtils.isNotEmpty(fileIds)) { + fileIdList = Arrays.asList(fileIds); + } + + if (StrUtil.isBlank(reportId)) { + throw new AdcDaBaseException("缺少报告id"); + } + + if (StrUtil.isNotBlank(reportId)) { + //校验权限 + if (!reportService.isAllowDownload(UserUtils.getUserId(), reportId)) { + throw new AdcDaBaseException("无此报告下载权限"); + } + } + + //待下载的文件id List + List downLoadFileIds; + String reportName = reportDao.selectById(reportId).getName(); + String folderName = reportName + ".zip"; + // 获取编码后的文件名 + String encodedZipName = URLEncoder.encode(folderName, "UTF-8"); + + //判断是从列表页面下载 还是预览页面下载 + if (CollectionUtils.isEmpty(fileIdList)) { + //列表点击下载按钮 + downLoadFileIds = fileService.getDownloadFileIds(reportId); + if (CollectionUtils.isEmpty(downLoadFileIds)) { + try { + // 设置响应头信息 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + encodedZipName); + response.setHeader("Content-Transfer-Encoding", "binary"); + response.setHeader("Pragma", "public"); + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Expires", "0"); + + // 创建空的ZipOutputStream + ZipOutputStream zipOutputStream = new ZipOutputStream(response.getOutputStream()); + // 添加空文件夹条目 + ZipEntry emptyDirectoryEntry = new ZipEntry(reportName + "/"); + zipOutputStream.putNextEntry(emptyDirectoryEntry); + zipOutputStream.close(); + return; + } catch (IOException e) { + e.printStackTrace(); + } + } + } else { + //预览点击下载按钮 + downLoadFileIds = fileIdList; + } + + //如果只下载一个文件,则不压缩 + if (downLoadFileIds.size() == 1) { + String fileId = downLoadFileIds.get(0); + try { + FileEntity entity = fileService.getFile(fileId); + String fileName = entity.getFileName(); + // 获取编码后的文件名 + String encodedFileName = URLEncoder.encode(fileName, "UTF-8"); + response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName); + + //PDF文件需要加水印 + if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { + String path = uploadFile + entity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); + } + //给文件添加水印 + waterMarkUtil.addWatermarkToPdfAndWriteToResponse(new FileInputStream(path), response); + outputStream.close(); + } else { + // 上传方式:阿里云:alioss 华为云:hwobs 本地:local + if ("hwobs".equals(uploadType)){ + obsBootUtil.downFile(entity.getSavePath(), response); + }else if ("alioss".equals(uploadType)){ + ossClientUtil.downloadFileFromOSS(entity.getSavePath(),response); + }else if ("local".equals(uploadType)){ + localFileUtil.downFile(entity.getSavePath(), response); + } + } + + } catch (Exception ex) { + log.info(ex.getMessage(),ex); + } + } else { + List filePaths = new ArrayList<>(); + // 设置响应头信息 + response.setContentType("application/zip"); + response.setHeader("Content-Disposition", "attachment; filename=" + encodedZipName); + response.setHeader("Content-Transfer-Encoding", "binary"); + response.setHeader("Pragma", "public"); + response.setHeader("Cache-Control", "no-store"); + response.setHeader("Expires", "0"); + + for (String fileId : downLoadFileIds) { + try { + FileEntity entity = fileService.getFile(fileId); + String fileName = entity.getFileName(); + + String path = uploadFile + entity.getSavePath(); + FileOutputStream outputStream = new FileOutputStream(path); + filePaths.add(path); + + // 上传方式:阿里云:alioss 华为云:hwobs + if ("hwobs".equals(uploadType)) { + obsBootUtil.getFileFromOBS(entity.getSavePath(), outputStream); + } else if ("alioss".equals(uploadType)) { + ossClientUtil.getFileFromOSS(entity.getSavePath(), outputStream); + } else if ("local".equals(uploadType)) { + localFileUtil.getFileFromLocal(entity.getSavePath(), outputStream); + } + //PDF文件需要加水印 + if (FILE_EXTENSIONS_PDF.equalsIgnoreCase(FileUtil.getFileExtension(fileName))) { + waterMarkUtil.savePdfToFile(new FileInputStream(path), path); + } + outputStream.close(); + } catch (Exception ex) { + log.info(ex.getMessage(),ex); + } + } + //将文件压缩 写入Response + localFileUtil.compressFiles(filePaths, response); + } + + if (StringUtils.isNotEmpty(reportId)){ + ReportLogBook reportLog = new ReportLogBook(); + reportLog.setId(UUID.randomUUID().toString().replaceAll("-","")); + reportLog.setReportId(reportId); + reportLog.setType(2); + reportLog.setUpdateTime(new Date()); + reportLog.setUserId(UserUtils.getUserId()); + reportLogBookDao.insert(reportLog); + + //报告日志管理 + ReportEntity reportEntity = reportDao.selectById(reportId); + reportLog(reportEntity.getName(),"下载"); + } + } + public void reportLog(String reportName,String desc){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); LogEntity entity = new LogEntity(); diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java index 5a71440..e23d177 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/FileDao.java @@ -10,5 +10,8 @@ import java.util.List; * @Date 2021/6/28 15:19 */ public interface FileDao extends BaseMapper { + + List getDownloadFileIdsWithoutExcel(String reportId); + List getDownloadFileIds(String reportId); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java index b5e104e..b333895 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IFileService.java @@ -35,6 +35,11 @@ public interface IFileService { */ boolean hasExcelFileId(List fileIds); + /** + * 根据报告id返回所有可以下载的文件id(不要excel的) + */ + List getDownloadFileIdsWithoutExcel(String reportId); + /** * 根据报告id返回所有可以下载的文件id * @param reportId diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java index b78e80d..12c6f64 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IFileServiceImpl.java @@ -197,6 +197,11 @@ public class IFileServiceImpl implements IFileService { return hasExcelFileId; } + @Override + public List getDownloadFileIdsWithoutExcel(String reportId) { + return fileDao.getDownloadFileIdsWithoutExcel(reportId); + } + @Override public List getDownloadFileIds(String reportId) { return fileDao.getDownloadFileIds(reportId); diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java index e643cda..3f0e533 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportServiceImpl.java @@ -408,6 +408,7 @@ public class IReportServiceImpl extends ServiceImpl LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.in(ReportContentEntity::getReportId, idList); iReportContentService.remove(wrapper); + //TODO 删除文件关联 return nameList; } diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml index 30a81a8..2c4a575 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/FileDao.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - SELECT f.FILE_ID FROM @@ -17,4 +17,14 @@ AND f.FILE_TYPE != "xlsx" + + From daa0000e75009c101f5810420de43219637becb3 Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Fri, 26 May 2023 13:55:36 +0800 Subject: [PATCH 38/44] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DBug=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8=E9=80=89=E9=A1=B9=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E5=92=8C=E5=BC=BA=E5=88=B6=E6=8E=92=E5=BA=8F=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adc/da/sys/controller/DictItemController.java | 4 ++-- .../adc/da/sys/service/DictItemServiceImpl.java | 15 ++++++++++++++- .../main/java/com/adc/da/sys/vo/DictItemVo.java | 3 +++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java index 404a396..462953c 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/controller/DictItemController.java @@ -48,7 +48,7 @@ public class DictItemController { */ @ApiOperation(value = "修改数据字典记录") @PutMapping("/edit") - public ResponseMessage edit(@RequestBody DictItemVo dictItemVo) { + public ResponseMessage edit(@Valid @RequestBody DictItemVo dictItemVo) { return dictItemService.edit(dictItemVo); } @@ -66,7 +66,7 @@ public class DictItemController { */ @ApiOperation(value = "新增数据字典记录") @PostMapping("/add") - public ResponseMessage add(@RequestBody DictItemVo dictItemVo) { + public ResponseMessage add(@Valid @RequestBody DictItemVo dictItemVo) { return dictItemService.add(dictItemVo); } } diff --git a/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java b/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java index bcddedf..1e53284 100644 --- a/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java +++ b/adc-da-sys/src/main/java/com/adc/da/sys/service/DictItemServiceImpl.java @@ -62,6 +62,11 @@ public class DictItemServiceImpl extends ServiceImpl item = query().like("item_name", dictItemName).list(); + return item.size() > 0; + } + @Override public ResponseMessage add(DictItemVo dictItemVo) { //判断上级字典id是否存在 @@ -100,7 +110,10 @@ public class DictItemServiceImpl extends ServiceImpl Date: Fri, 26 May 2023 14:13:35 +0800 Subject: [PATCH 39/44] =?UTF-8?q?[=E4=BF=AE=E6=94=B9]=20=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=8A=9E=E7=90=86=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mybatis/mapper/mysql/PowerApplyActMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/adc-da-report/src/main/resources/mybatis/mapper/mysql/PowerApplyActMapper.xml b/adc-da-report/src/main/resources/mybatis/mapper/mysql/PowerApplyActMapper.xml index 4ca2bcd..4e4e488 100644 --- a/adc-da-report/src/main/resources/mybatis/mapper/mysql/PowerApplyActMapper.xml +++ b/adc-da-report/src/main/resources/mybatis/mapper/mysql/PowerApplyActMapper.xml @@ -105,7 +105,7 @@ + +