diff --git a/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java b/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java index 9ef92b0..accbd25 100644 --- a/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java +++ b/adc-da-report/src/main/java/com/adc/da/report/eo/PowerApply.java @@ -8,6 +8,7 @@ import lombok.Data; import lombok.experimental.Accessors; import java.util.Date; +import java.util.Objects; /** * @author bu @@ -94,4 +95,21 @@ public class PowerApply { */ @TableField("power_source") private Integer powerSource; + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (!(o instanceof PowerApply)) { + return false; + } + PowerApply other = (PowerApply) o; + return this.reportId.equals(other.reportId) && this.power.equals(other.power); + } + + @Override + public int hashCode() { + return Objects.hash(reportId, power); + } } 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 8e80341..07be563 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 @@ -415,7 +415,33 @@ public class IReportServiceImpl extends ServiceImpl 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(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 -> { + List powerApplies = reportPowerMap.get(reportVo.getId()); + if (powerApplies != null) { + if (powerApplies.size() == 1) { + reportVo.setPower(powerApplies.get(0).getPower()); + } else { + reportVo.setPower(PREVIEW_DOWNLOAD); + } + } + //只有用户没有权限的时候才给默认权限 if (reportVo.getPower() == null) { //其余人员只能预览公开报告(涉密等级:公开(内部公开)、隐私等级:不涉及用户隐私) 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 253af63..bbf0338 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 @@ -109,7 +109,6 @@ eo.createUserId AS createUserId, tu.USNAME AS uploader, eo.createDate AS createDate, - pa.power AS power, thumbUpCount.thumbUp AS thumbUp, clicksCount.clicks AS clicks, downloadCount.download AS download, @@ -118,7 +117,6 @@ TT_REPORT_MANAGE eo LEFT JOIN ts_user tu ON tu.USID = eo.createUserId LEFT JOIN tr_report_user ru ON eo.id = ru.reportId - LEFT JOIN power_apply pa ON pa.report_id = eo.id LEFT JOIN (SELECT report_id, COUNT(id) AS thumbUp FROM report_log_book WHERE type = 3 GROUP BY report_id) AS thumbUpCount ON eo.id = thumbUpCount.report_id LEFT JOIN (SELECT report_id, COUNT(id) AS clicks FROM report_log_book WHERE type = 1 GROUP BY report_id) AS clicksCount ON eo.id = clicksCount.report_id 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