diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index c1de23cf2..d48072db8 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -1,10 +1,10 @@ package com.engine.salary.service.impl; +import com.engine.common.util.ServiceUtil; import com.engine.core.impl.Service; import com.engine.salary.biz.SalaryArchiveBiz; import com.engine.salary.biz.SalaryArchiveItemBiz; import com.engine.salary.biz.SalaryItemBiz; -import com.engine.salary.constant.SalaryArchiveConstant; import com.engine.salary.constant.SalaryDefaultTenantConstant; import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO; import com.engine.salary.entity.salaryarchive.param.*; @@ -12,6 +12,7 @@ import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO; import com.engine.salary.entity.salaryarchive.po.SalaryArchivePO; import com.engine.salary.entity.salaryitem.po.SalaryItemPO; import com.engine.salary.enums.UserStatusEnum; +import com.engine.salary.enums.salaryarchive.SalaryArchiveFieldTypeEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum; import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum; import com.engine.salary.exception.SalaryRunTimeException; @@ -25,6 +26,7 @@ import com.google.common.collect.Lists; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import weaver.hrm.User; import java.text.SimpleDateFormat; import java.util.*; @@ -50,6 +52,10 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi return salaryArchiveItemMapper.getById(salaryArchiveItemId); } + private SalaryArchiveItemService getSalaryArchiveItemService(User user) { + return ServiceUtil.getService(SalaryArchiveItemServiceImpl.class, user); + } + /** * 获取未生效 lt * @@ -235,6 +241,8 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi * @date 2022/11/14 14:24 */ private SalaryArchiveItemPO buildUpdateSalaryArchiveItemPO(SalaryArchiveItemSaveParam salaryArchiveItemSaveParam,List salaryArchiveItems,List salaryItemIds,SalaryArchiveItemPO salaryArchiveItem) { + // 获取所有可被引用的薪资项目 + List salaryItems = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(); // 获取生效+未生效的数据 List salaryItemsBySalaryArchiveIdAndItemIds = getSalaryItemsBySalaryArchiveIdAndItemIds(salaryArchiveItemSaveParam.getSalaryArchiveId(), salaryItemIds); // 获取当前已生效数据 @@ -247,9 +255,15 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi // 当前已生效 // SalaryArchiveItemPO effectiveSalaryItem = CollectionUtils.isNotEmpty(effectiveList) && effectiveList.size() > 0 ? effectiveList.get(0) : null; List list = salaryItemsBySalaryArchiveIdAndItemIds.stream().filter(i -> i.getSalaryItemId().equals(e.getSalaryItemId())).collect(Collectors.toList()); - boolean isNotNumber = StringUtils.isNotEmpty(e.getAdjustValue()) && !Pattern.matches(SalaryArchiveConstant.NUMBER_REGEX, e.getAdjustValue()); - if (isNotNumber) { - throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100581, "请输入数字")); + // 判断该薪资项目是否是数字 + Optional optional = salaryItems.stream().filter(i -> i.getId().equals(e.getSalaryItemId())).findFirst(); + + if (optional.isPresent()) { + SalaryItemPO salaryItemPO = optional.get(); + boolean isNotNumber = salaryItemPO.getDataType().equals(SalaryArchiveFieldTypeEnum.NUMBER.getValue()) && StringUtils.isNotEmpty(e.getAdjustValue()) && !Pattern.matches(SalaryEntityUtil.NUMBER_REGEX, e.getAdjustValue()); + if (isNotNumber) { + throw new SalaryRunTimeException(salaryItemPO.getName() + ":" + SalaryI18nUtil.getI18nLabel(100581, "请输入数字")); + } } // 修改了生效日期