diff --git a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java index 5343ae9b7..6acfff40d 100644 --- a/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java +++ b/src/com/engine/salary/report/entity/po/SalaryStatisticsItemPO.java @@ -1,10 +1,7 @@ package com.engine.salary.report.entity.po; import com.engine.salary.report.enums.UnitTypeEnum; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; import java.io.Serializable; import java.util.Collection; @@ -14,6 +11,7 @@ import java.util.Date; @Builder @NoArgsConstructor @AllArgsConstructor +@ToString //hrsa_salary_statistics_item") //薪酬报表统计子表自定义统计项") public class SalaryStatisticsItemPO implements Serializable { diff --git a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java index 72846cd1f..8c56dc7ef 100644 --- a/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java +++ b/src/com/engine/salary/report/service/impl/SalaryStatisticsItemServiceImpl.java @@ -46,7 +46,7 @@ public class SalaryStatisticsItemServiceImpl extends Service implements SalarySt @Override public List listByStatisticsReportId(Long statisticsReportId) { if (statisticsReportId == null) { - return null; + return new ArrayList<>(); } return getSalaryStatisticsItemMapper().listSome(SalaryStatisticsItemPO.builder().statReportId(statisticsReportId).build()); } diff --git a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java index 8b2f1b08b..d86adfee1 100644 --- a/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java +++ b/src/com/engine/salary/report/wrapper/SalaryStatisticsReportWrapper.java @@ -260,11 +260,12 @@ public class SalaryStatisticsReportWrapper extends Service { throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(161845, "薪酬统计报表不存在")); } + // 查询自定义统计项目 + List salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId()); + // 参数转换 SalaryStatisticsReportBO.poToQueryParam(param, po); - - - String paramMd5 = SecureUtil.md5(param.toString()); + String paramMd5 = SecureUtil.md5(param + salaryStatisticsItemList.toString()); //已缓存的报表id String salaryReportIds = Utils.null2String(getSalaryCacheService(user).get(SalaryCacheKey.SALARY_REPORT_IDS)); @@ -278,8 +279,6 @@ public class SalaryStatisticsReportWrapper extends Service { } - // 查询自定义统计项目 - List salaryStatisticsItemList = this.getSalaryStatisticsItemService(user).listByStatisticsReportId(po.getId()); // 列表data PageInfo> page = this.getSalaryStatisticsReportService(user).buildReportRecords(dimension, param, salaryStatisticsItemList); diff --git a/src/com/engine/salary/service/SalaryAcctResultService.java b/src/com/engine/salary/service/SalaryAcctResultService.java index a2af68ac5..b15cf93bd 100644 --- a/src/com/engine/salary/service/SalaryAcctResultService.java +++ b/src/com/engine/salary/service/SalaryAcctResultService.java @@ -200,4 +200,11 @@ public interface SalaryAcctResultService { List listByAcctEmployeeIdsAndSalaryItemIds(Collection salaryAcctEmpIds, Collection salaryItemIds); List listAcctEmpIdByAcctEmpId(List salaryAcctEmployeeIds); + + /** + * 检查当前用户是否有查看权限 + * @param salaryAcctRecordId + * @return + */ + Boolean checkAuth(Long salaryAcctRecordId); } diff --git a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java index 1a7a539de..555738118 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctResultServiceImpl.java @@ -7,11 +7,11 @@ import com.engine.salary.common.LocalDateRange; import com.engine.salary.encrypt.EncryptUtil; import com.engine.salary.entity.datacollection.DataCollectionEmployee; import com.engine.salary.entity.datacollection.dto.AttendQuoteFieldListDTO; +import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.report.bo.SalaryAcctResultReportBO; import com.engine.salary.entity.report.po.SalaryAcctResultReportPO; import com.engine.salary.entity.salaryacct.bo.*; import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; -import com.engine.salary.entity.progress.ProgressDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; import com.engine.salary.entity.salaryacct.param.*; @@ -20,6 +20,7 @@ import com.engine.salary.entity.salaryformula.ExpressFormula; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.entity.salarysob.dto.*; import com.engine.salary.entity.salarysob.po.*; +import com.engine.salary.entity.taxagent.po.TaxAgentAdminPO; import com.engine.salary.entity.taxagent.po.TaxAgentPO; import com.engine.salary.enums.SalaryValueTypeEnum; import com.engine.salary.enums.salaryaccounting.LockStatusEnum; @@ -173,6 +174,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe return ServiceUtil.getService(SalaryStatisticsReportServiceImpl.class, user); } + private TaxAgentAdminService getTaxAgentAdminService(User user) { + return ServiceUtil.getService(TaxAgentAdminServiceImpl.class, user); + } + private SalaryCheckResultService salaryCheckResultService; @@ -1031,4 +1036,21 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe // } return salaryItemIds; } + + @Override + public Boolean checkAuth(Long salaryAcctRecordId) { + // 获取该核算记录的个税扣缴义务 + SalaryAcctRecordPO recordPO = getSalaryAcctRecordService(user).getById(salaryAcctRecordId); + if(Objects.isNull(recordPO)) { + return false; + } + SalarySobPO salarySobPO = getSalarySobService(user).getById(recordPO.getSalarySobId()); + Long taxAgentId = salarySobPO.getTaxAgentId(); + List adminTaxAgentList = getTaxAgentAdminService(user).listByEmployeeId(Long.valueOf(user.getUID())); + Optional canOperate = adminTaxAgentList.stream().filter(po -> NumberUtils.compare(taxAgentId, po.getTaxAgentId()) == 0).findFirst(); + if(!canOperate.isPresent()){ + return false; + } + return true; + } } \ No newline at end of file diff --git a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java index 7d1362e50..3d4724e55 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveServiceImpl.java @@ -390,7 +390,7 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe List salaryItemIds = salaryItems.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); // 1.获取薪资档案所对应的当前生效的薪资项目数据 List salaryArchiveItemList = Collections.emptyList(); - if(CollectionUtils.isNotEmpty(ids) && CollectionUtils.isNotEmpty(salaryItemIds)){ + if(CollectionUtils.isNotEmpty(ids) && CollectionUtils.isNotEmpty(salaryItemIds) || !isPage){ salaryArchiveItemList = getCurrentEffectiveItemList(ids, salaryItemIds); } List finalSalaryArchiveItemList = salaryArchiveItemList; diff --git a/src/com/engine/salary/web/SalaryAcctController.java b/src/com/engine/salary/web/SalaryAcctController.java index 1fdd0a7a6..8df680db0 100644 --- a/src/com/engine/salary/web/SalaryAcctController.java +++ b/src/com/engine/salary/web/SalaryAcctController.java @@ -371,6 +371,13 @@ public class SalaryAcctController { // **********************************薪资核算人员相关 end*********************************/ // **********************************薪资核算结果 start*********************************/ + @GET + @Path("/acctresult/checkAuth") + @Produces(MediaType.APPLICATION_JSON) + public String checkAuth(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("salaryAcctRecordId") Long salaryAcctRecordId) { + User user = HrmUserVarify.getUser(request, response); + return new ResponseResult(user).run(getSalaryAcctResultWrapper(user)::checkAuth, salaryAcctRecordId); + } //薪资核算结果列表 @POST diff --git a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java index 13b292d0c..8c0e6404d 100644 --- a/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryAcctResultWrapper.java @@ -5,8 +5,8 @@ import com.engine.core.impl.Service; import com.engine.salary.cache.SalaryCacheKey; import com.engine.salary.component.WeaTableColumnGroup; import com.engine.salary.entity.datacollection.DataCollectionEmployee; -import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.progress.ProgressDTO; +import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultDetailDTO; import com.engine.salary.entity.salaryacct.dto.SalaryAcctResultListColumnDTO; import com.engine.salary.entity.salaryacct.param.SalaryAcctCalculateParam; @@ -249,6 +249,17 @@ public class SalaryAcctResultWrapper extends Service { } + /** + * 检查是否有薪资核算结果的查看权限 + * @param salaryAcctRecordId + */ + public Boolean checkAuth(Long salaryAcctRecordId) { + if(Objects.isNull(salaryAcctRecordId)){ + return false; + } + return getSalaryAcctResultService(user).checkAuth(salaryAcctRecordId); + } + /** * 薪资核算-校验