From abdda27b123dd41da666fbb55ddc1f49a4c55c0c Mon Sep 17 00:00:00 2001 From: Mzaxd Date: Mon, 29 May 2023 10:41:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=88=91=E7=9A=84=E6=94=B6=E8=97=8F?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ReportLogBookController.java | 18 ++- .../controller/ReportManageConroller.java | 12 ++ .../adc/da/report/dao/mysql/ReportDao.java | 2 + .../report/service/IReportLogBookService.java | 21 ++++ .../adc/da/report/service/IReportService.java | 23 ++++ .../impl/IReportLogBookServiceImpl.java | 72 +++++++++++ .../service/impl/IReportServiceImpl.java | 118 +++++++++++++----- .../java/com/adc/da/report/vo/ReportVo.java | 5 + .../mapper/mysql/ReportManageMapper.xml | 91 ++++++++++++++ 9 files changed, 329 insertions(+), 33 deletions(-) diff --git a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportLogBookController.java b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportLogBookController.java index 0759e92..5c9179e 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/controller/ReportLogBookController.java +++ b/adc-da-report/src/main/java/com/adc/da/report/controller/ReportLogBookController.java @@ -133,7 +133,7 @@ public class ReportLogBookController { * @return com.adc.da.util.http.ResponseMessage * @author bu * @date 2023-05-08 - * @description 根据报告id和当前登录用户id获取点赞数 + * @description 根据报告id和当前登录用户id点赞或取消点赞 */ @GetMapping("/thumbUpOrDown") @ApiOperation(value = "点赞或者取消点赞") @@ -144,4 +144,20 @@ public class ReportLogBookController { return Result.success(result); } + /** + * @param reportId + * @return com.adc.da.util.http.ResponseMessage + * @author bu + * @date 2023-05-08 + * @description 根据报告id和当前登录用户id点赞或取消点赞 + */ + @GetMapping("/collectOrCancelCollect") + @ApiOperation(value = "收藏或取消收藏") + public ResponseMessage collectOrCancelCollect(String reportId){ + + //根据报告id和当前登录用户id获取点赞数 + return reportLogBookService.collectOrCancelCollect(reportId); + + } + } 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 2a84953..513bc2a 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 @@ -202,6 +202,18 @@ public class ReportManageConroller { return reportService.changeUploader(changeUploaderVo); } + /** + * 报告管理列表 + * @param vo + * @return + * @throws Exception + */ + @ApiOperation("报告管理列表") + @PostMapping("/myCollectPage") + public ResponseMessage myCollectPage(@RequestBody ReportQueryVo vo) throws Exception { + IPage list = reportService.myCollectPage(vo); + return Result.success(list); + } /** diff --git a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportDao.java b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportDao.java index 44c8ca8..3519ec6 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportDao.java +++ b/adc-da-report/src/main/java/com/adc/da/report/dao/mysql/ReportDao.java @@ -48,6 +48,8 @@ public interface ReportDao extends BaseMapper { */ IPage page(IPage page, @Param("pageVO") ReportQueryVo vo, @Param("idSet") Set idSet); + IPage myCollectPage(IPage page, @Param("pageVO") ReportQueryVo vo, @Param("idSet") Set idSet, @Param("collectReportIds") List collectReportIds); + /** * 报告列表 * diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/IReportLogBookService.java b/adc-da-report/src/main/java/com/adc/da/report/service/IReportLogBookService.java index 3f72548..153fdd7 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/IReportLogBookService.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/IReportLogBookService.java @@ -4,6 +4,7 @@ import com.adc.da.report.eo.ReportLogBook; import com.adc.da.report.vo.DeleteParamRequestVO; import com.adc.da.report.vo.ReportDetailThumbUpVo; import com.adc.da.report.vo.ReportLogPageVO; +import com.adc.da.util.http.ResponseMessage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.util.List; @@ -64,6 +65,13 @@ public interface IReportLogBookService { */ Integer getPreviewCount(String reportId); + /** + * 获取收藏量 + * @param reportId + * @return + */ + Integer getCollectCount(String reportId); + /** * 获取点赞量 * @param reportId @@ -71,4 +79,17 @@ public interface IReportLogBookService { */ Integer getThumbUpCount(String reportId); + /** + * 收藏或取消收藏 + * @param reportId + * @return + */ + ResponseMessage collectOrCancelCollect(String reportId); + + /** + * 根据用户id获取所有报告id + * @param userId + * @return + */ + List getCollectReportIdByUser(String userId); } 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 79c853a..bd9dcf8 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 @@ -51,8 +51,25 @@ public interface IReportService { IPage addReportPage(ReportQueryVo vo) throws Exception; + /** + * 报告查询页面列表接口 + * @param vo + * @return + */ IPage page(ReportQueryVo vo); + /** + * 我的收藏页面列表接口 + * @param vo + * @return + */ + IPage myCollectPage(ReportQueryVo vo); + + /** + * 报告管理页面列表接口 + * @param vo + * @return + */ IPage reportManagerPage(ReportQueryVo vo); List isAct(ReportQueryVo vo); @@ -102,4 +119,10 @@ public interface IReportService { void delFile(ReportFile reportFile); IPage filePage(ReportFilePageVO ReportFilePageVO); + + /** + * 刷新报告内容 + * @return + */ + ResponseMessage refreshReportContent(); } diff --git a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportLogBookServiceImpl.java b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportLogBookServiceImpl.java index 834b4a4..fdc2d6a 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportLogBookServiceImpl.java +++ b/adc-da-report/src/main/java/com/adc/da/report/service/impl/IReportLogBookServiceImpl.java @@ -8,6 +8,8 @@ import com.adc.da.report.service.IReportLogBookService; import com.adc.da.report.vo.DeleteParamRequestVO; import com.adc.da.report.vo.ReportDetailThumbUpVo; import com.adc.da.report.vo.ReportLogPageVO; +import com.adc.da.util.http.ResponseMessage; +import com.adc.da.util.http.Result; import com.adc.da.util.utils.StringUtils; import com.adc.da.util.utils.UUID; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -20,6 +22,7 @@ import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; /** * @author bu @@ -145,18 +148,35 @@ public class IReportLogBookServiceImpl extends ServiceImpl reportLogBookLambdaQueryWrapper = new LambdaQueryWrapper<>(); reportLogBookLambdaQueryWrapper.eq(ReportLogBook::getReportId, reportId); @@ -176,6 +200,34 @@ public class IReportLogBookServiceImpl extends ServiceImpl reportLogBookLambdaQueryWrapper = new LambdaQueryWrapper<>(); + reportLogBookLambdaQueryWrapper.eq(ReportLogBook::getReportId, reportId); + reportLogBookLambdaQueryWrapper.eq(ReportLogBook::getType, 4); + reportLogBookLambdaQueryWrapper.eq(ReportLogBook::getUserId, UserUtils.getUserId()); + remove(reportLogBookLambdaQueryWrapper); + } + @Override public ReportDetailThumbUpVo thumbUpOrDown(String reportId) { ReportLogBook entity = findThumbUpLog(reportId); @@ -191,4 +243,24 @@ public class IReportLogBookServiceImpl extends ServiceImpl getCollectReportIdByUser(String userId) { + LambdaQueryWrapper collectWrapper = new LambdaQueryWrapper<>(); + collectWrapper.eq(ReportLogBook::getType, 4); + collectWrapper.eq(ReportLogBook::getUserId, userId); + List list = list(collectWrapper).stream().map(ReportLogBook::getReportId).collect(Collectors.toList()); + return list; + } } 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 3f0e533..9fef497 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 @@ -560,39 +560,93 @@ public class IReportServiceImpl extends ServiceImpl } }); } + return list; + } -// 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()); -// }); + @Override + public IPage myCollectPage(ReportQueryVo vo) { + IPage page = new Page<>(); + page.setCurrent(vo.getPageNo()); + page.setSize(vo.getPageSize()); + + //按照labelId筛选 + Set idSet = new HashSet<>(); + if (CollectionUtils.isNotEmpty(vo.getLabelId())) { + LambdaQueryWrapper reportLabelEntityWrapper = new LambdaQueryWrapper<>(); + reportLabelEntityWrapper.in(ReportLabelEntity::getLastLabel, vo.getLabelId()); + List reportLabelEntities = reportLabelDao.selectList(reportLabelEntityWrapper); + reportLabelEntities.forEach(reportLabelEntity -> { + idSet.add(reportLabelEntity.getReportId()); + }); + if (CollectionUtils.isEmpty(idSet)) { + idSet.add("默认搜索条件"); + } + } + //找到当前用户收藏的reportId + List collectReportIds = reportLogBookService.getCollectReportIdByUser(UserUtils.getUserId()); + if (CollectionUtils.isEmpty(collectReportIds)) { + collectReportIds.add("默认搜索条件"); + } + + vo.setUsid(UserUtils.getUserId()); + IPage list = reportDao.myCollectPage(page, vo, idSet, collectReportIds); + + //设置权限 + UserEO userEo = userEODao.selectById(UserUtils.getUserId()); + String levelId = StringUtils.isEmpty(userEo.getLevelId()) ? "0.8" : userEo.getLevelId(); + String employeeTypeId = StringUtils.isEmpty(userEo.getEmployeeTypeId()) ? "0.8" : userEo.getEmployeeTypeId(); + //用户级别 + double level = Double.parseDouble(levelId); + double employeeType = Double.parseDouble(employeeTypeId); + //总监拥有全部报告的预览和下载权力 + if ((level == SPECIAL_LEVEL_ONE || level == SPECIAL_LEVEL_TWO || + level == SPECIAL_LEVEL_THREE || level == SPECIAL_LEVEL_FOUL) && + (employeeType == EMPLOYEE_TYPE_ID_ONE)) { + list.getRecords().forEach(reportVo -> { + reportVo.setPower(PREVIEW_DOWNLOAD); + }); + } else { + //其余员工 + //用户自己申请的权限 + List powerList = new ArrayList<>(); + powerList.add(PREVIEW_DOWNLOAD); + powerList.add(PREVIEW); + powerList.add(DOWNLOAD); + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.in(CollectionUtils.isNotEmpty(list.getRecords()) ,PowerApply::getReportId, list.getRecords().stream().map(ReportVo::getId).collect(Collectors.toList())); + wrapper.in(PowerApply::getPower, powerList); + wrapper.eq(PowerApply::getUserId, UserUtils.getUserId()); + wrapper.eq(PowerApply::getDelFlag, 0); + List powerApplyList = iPowerApplyService.list(wrapper).stream().distinct().collect(Collectors.toList()); + + Map> reportPowerMap = powerApplyList.stream() + .collect(Collectors.groupingBy(PowerApply::getReportId)); + + //设置权限 + list.getRecords().forEach(reportVo -> { + //无权限要求的报告自带预览权限 + if (reportVo.getConfidentialLevel().equals(PUBLIC_REPORT) && + reportVo.getPrivacyLevel().equals(NO_USER_PRIVACY_INVOLVED)) { + reportVo.setPower(PREVIEW); + } else { + reportVo.setPower(NONE); + } + List powerApplies = reportPowerMap.get(reportVo.getId()); + if (powerApplies != null) { + //只有当PA表只有一条申请的权限且并不是公开表的时候才给权限 + if (powerApplies.size() == 1 && reportVo.getPower().equals(NONE)) { + reportVo.setPower(powerApplies.get(0).getPower()); + } else { + reportVo.setPower(PREVIEW_DOWNLOAD); + } + } + + //如果上传人是自己也有预览下载权限 + if (UserUtils.getUserId().equals(reportVo.getCreateUserId())) { + reportVo.setPower(PREVIEW_DOWNLOAD); + } + }); + } return list; } 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 ea02cfb..cdf5a3d 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 @@ -108,6 +108,11 @@ public class ReportVo { */ private Integer download; + /** + * 受否收藏 + */ + private Integer collect; + /** * 创建人id */ 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 f7efaeb..f0af4d9 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 @@ -40,6 +40,7 @@ + @@ -154,6 +155,7 @@ clicksCount.clicks AS clicks, downloadCount.download AS download, AVG( trur.user_rating ) AS reportRating, + IF(rlb.type = 4, 1, 0) AS collect, IF(bpn.id is null,1, IF(bpn.SUBMIT_STATUS = 1 and bpn.CREAT_USER = #{pageVO.usid} ,0,1) ) as isAct @@ -170,6 +172,88 @@ 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 + LEFT JOIN report_log_book AS rlb ON rlb.user_id = #{pageVO.usid} AND rlb.report_id = eo.id AND rlb.type = 4 + WHERE + eo.DEL_FLAG = 0 + + + and rc.report_content like CONCAT(CONCAT('%',#{pageVO.keyContent}),'%') + + + and name like CONCAT(CONCAT('%',#{pageVO.name}),'%') + + + + + and year in + + #{year} + + + + + and eo.id in + + #{id} + + + + + and eo.id in + + #{id} + + + GROUP BY + eo.id + + ORDER BY + eo.createDate DESC + + + ORDER BY + clicksCount.clicks DESC + + + ORDER BY + downloadCount.download DESC + + + +