diff --git a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java index 35f02da4a..a7c57a733 100644 --- a/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryAcctExcelServiceImpl.java @@ -567,12 +567,27 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc @Override public XSSFWorkbook exportImportTemplate(SalaryAcctImportTemplateParam param) { - ValidUtil.doValidator(param); - +// ValidUtil.doValidator(param); + // 从缓存中获取所选的薪资项目 + String cacheKey = user.getUID() + SalaryItemConstant.RESULT_IMPORT_FIELD_SIGN; + String cacheValue = (String)Util_DataCache.getObjVal(cacheKey); + List checkItems = JsonUtil.parseList(cacheValue, Long.class) == null ? new ArrayList<>() : JsonUtil.parseList(cacheValue, Long.class); // 必须选择导入模板所需的薪资项目 - if (CollectionUtils.isEmpty(param.getSalaryItemIds())) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(99019, "参数错误,请选择导入模板所需的薪资项目")); + if (CollectionUtils.isEmpty(checkItems)) { + // 获取所有可以选择的薪资项目 + SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); + if (Objects.isNull(salaryAcctRecordPO)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除")); + } + // 查询薪资核算记录所用的薪资账套的薪资项目副本 + List salarySobItems = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId()); + List salaryItemIds = SalaryEntityUtil.properties(salarySobItems, SalarySobItemPO::getSalaryItemId, Collectors.toList()); + if (CollectionUtils.isEmpty(salaryItemIds)) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(0, "该核算记录不存在薪资项目")); + } + checkItems = salaryItemIds; } + param.setSalaryItemIds(checkItems); // 查询薪资核算记录 SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId()); if (Objects.isNull(salaryAcctRecordPO)) {