万德隆 定薪调薪

This commit is contained in:
Harryxzy 2025-05-30 15:02:54 +08:00
parent 5435a5a736
commit 8876d9b491
15 changed files with 395 additions and 6 deletions

View File

@ -815,6 +815,11 @@ public class SalaryArchiveExcelBO extends Service {
String key, String cellVal, Map<String, Object> map, User user) {
String rowindex = "" + map.get("index") + "";
String cellValDescription = Optional.ofNullable(map.get(key.toString() + "_description")).orElse("").toString();
String cellValEffectiveTime = Optional.ofNullable(map.get(key.toString() + "_effectivetime")).orElse("").toString();
if (StringUtils.isNotBlank(cellValEffectiveTime) && SalaryDateUtil.stringToDate(cellValEffectiveTime) != null) {
effectiveTime = SalaryDateUtil.stringToDate(cellValEffectiveTime);
}
// 薪资项目数据
if (isError || importHandleParam.isSuspendList() || (importHandleParam.isSalaryItemAdjust() && effectiveTime == null) || finalSalaryArchive == null) {
return isError;
@ -888,7 +893,7 @@ public class SalaryArchiveExcelBO extends Service {
.adjustReason(StringUtils.isEmpty(salaryItemAdjustReason) ? SalaryArchiveItemAdjustReasonEnum.INIT.getValue() : salaryItemAdjustReason)
.salaryItemId(salaryItemId)
.itemValue(cellVal)
.description(importHandleParam.getDescription() == null ? "" : importHandleParam.getDescription())
.description(StringUtils.isNotBlank(cellValDescription) ? cellValDescription : (importHandleParam.getDescription() == null ? "" : importHandleParam.getDescription()))
.operator(importHandleParam.getCurrentEmployeeId())
.operateTime(importHandleParam.getNowTime())
.createTime(importHandleParam.getNowTime())

View File

@ -47,4 +47,6 @@ public class SalaryArchiveImportActionParam {
* 档案状态是否保持不变
*/
private Boolean keepStatus;
private Boolean isWdlWorkflow;
}

View File

@ -0,0 +1,40 @@
package com.engine.salary.entity.salaryarchive.param;
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Harryxzy
* @ClassName SalaryArchiveItemBatchSaveParam
* @date 2025/05/26 15:25
* @description
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SalaryArchiveItemBatchSaveParam {
private String taxAgentName;
private String employeeId;
private String effectiveTime;
private SalaryArchiveItemAdjustReasonEnum adjustReason;
private String description;
private String salaryItemId;
private String adjustValue;
private String salaryStartDate;
private String salaryEndDate;
}

View File

@ -25,4 +25,7 @@ public class SalaryArchiveItemDetailSaveParam {
//调整值")
private String adjustValue;
// 说明
private String description;
}

View File

@ -52,6 +52,14 @@ public class SalaryArchiveItemSaveParam {
//备注
private String description;
private String taxAgentName;
private Long employeeId;
private String salaryStartDate;
private String salaryEndDate;
//薪资项目
private List<SalaryArchiveItemDetailSaveParam> salaryArchiveItems;

View File

@ -118,4 +118,6 @@ public class SalaryArchiveQueryParam extends BaseQueryParam {
// 调薪结束日期
private Date adjustSalaryEndDate;
private Long salaryItemId;
}

View File

@ -143,4 +143,6 @@ public interface SalaryArchiveMapper {
* @param date
*/
void updatePayStartDateById(@Param("id")Long salaryArchiveId, @Param("payStartDate")Date date);
SalaryArchivePO getByTaxAgentIdAndEmployeeId(@Param("taxAgentId")Long taxAgentId, @Param("employeeId")Long employeeId);
}

View File

@ -760,6 +760,15 @@
AND pay_start_date is null
AND run_status = #{runStatus}
</select>
<select id="getByTaxAgentIdAndEmployeeId"
resultType="com.engine.salary.entity.salaryarchive.po.SalaryArchivePO">
SELECT
<include refid="baseColumns"/>
FROM hrsa_salary_archive t
WHERE t.delete_type=0
AND tax_agent_id = #{taxAgentId}
AND employee_id = #{employeeId}
</select>
<update id="updateStatus" parameterType="com.engine.salary.entity.salaryarchive.po.SalaryArchivePO">
UPDATE hrsa_salary_archive

View File

@ -256,4 +256,8 @@ public interface SalaryArchiveService {
* @return
*/
List<SalaryArchivePO> listPayStartDateIsNull(String runStatus);
SalaryArchivePO getByTaxAgentIdAndEmployeeId(Long id, Long employeeId);
String getEffectiveItemValue(SalaryArchiveQueryParam param);
}

View File

@ -626,10 +626,17 @@ public class SalaryArchiveExcelServiceImpl extends Service implements SalaryArch
}
// 4.数据入库处理
if (param.isAddData()) {
handleImportData(importHandleParam);
if (param.getIsWdlWorkflow()) {
if (CollectionUtils.isEmpty(excelComments)) {
handleImportData(importHandleParam);
}
} else {
if (param.isAddData()) {
handleImportData(importHandleParam);
}
}
Map<String, Object> apidatas = new HashMap<>();
apidatas.put("successCount", successCount);

View File

@ -484,7 +484,7 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
if (ineffectiveSalaryItem != null && saveEffectiveTime.after(today)) {
effectiveSalaryItemDels.add(ineffectiveSalaryItem.getId());
}
salaryArchiveItemNews.add(buildInsert(salaryArchive, e.getSalaryItemId(), e.getAdjustValue(), saveParam, nowTime));
salaryArchiveItemNews.add(buildInsert(salaryArchive, e.getSalaryItemId(), e.getAdjustValue(), saveParam, nowTime, e.getDescription()));
});
// 落库处理
@ -581,13 +581,13 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
* @param salaryArchive
* @param saveParam
*/
private SalaryArchiveItemPO buildInsert(SalaryArchivePO salaryArchive, Long salaryItemId, String adjustValue, SalaryArchiveItemSaveParam saveParam, Date now) {
private SalaryArchiveItemPO buildInsert(SalaryArchivePO salaryArchive, Long salaryItemId, String adjustValue, SalaryArchiveItemSaveParam saveParam, Date now, String description) {
return SalaryArchiveItemPO.builder()
.salaryArchiveId(saveParam.getSalaryArchiveId())
.employeeId(salaryArchive.getEmployeeId())
.effectiveTime(saveParam.getEffectiveTime())
.adjustReason(saveParam.getAdjustReason())
.description(saveParam.getDescription())
.description(StringUtils.isBlank(description) ? saveParam.getDescription() : description)
.salaryItemId(salaryItemId)
// 调整后
.itemValue(adjustValue)

View File

@ -1400,4 +1400,33 @@ public class SalaryArchiveServiceImpl extends Service implements SalaryArchiveSe
}
return getSalaryArchiveMapper().listPayStartDateIsNull(runStatus);
}
@Override
public SalaryArchivePO getByTaxAgentIdAndEmployeeId(Long taxAgentId, Long employeeId) {
if (taxAgentId == null || employeeId == null) {
return null;
}
return getSalaryArchiveMapper().getByTaxAgentIdAndEmployeeId(taxAgentId, employeeId);
}
@Override
public String getEffectiveItemValue(SalaryArchiveQueryParam param) {
if (param.getEmployeeId() == null || StringUtils.isBlank(param.getTaxAgentName()) || param.getSalaryItemId() == null) {
return "";
}
Map<String, Long> taxAgentNameMap = SalaryEntityUtil.convert2Map(getTaxAgentService(user).listAll(), TaxAgentPO::getName, TaxAgentPO::getId);
Long taxAgentId = taxAgentNameMap.get(param.getTaxAgentName());
if (taxAgentId == null) {
return "";
}
SalaryArchivePO salaryArchivePO = getByTaxAgentIdAndEmployeeId(taxAgentId, param.getEmployeeId());
if (salaryArchivePO == null) {
return "";
}
List<SalaryArchiveItemPO> currentEffectiveItemList = getCurrentEffectiveItemList(Collections.singletonList(salaryArchivePO.getId()), Collections.singletonList(param.getSalaryItemId()));
if (CollectionUtils.isNotEmpty(currentEffectiveItemList)) {
return currentEffectiveItemList.get(0).getItemValue();
}
return "";
}
}

View File

@ -708,6 +708,60 @@ public class SalaryArchiveController {
}
/**
* 调薪单个人
*/
@POST
@Path("/saveSalaryItem4Workflow")
@Produces(MediaType.APPLICATION_JSON)
public String saveSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveItemSaveParam saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveItemSaveParam, String>(user).run(getSalaryArchiveItemWrapper(user)::saveSalaryItem4Workflow, saveParam);
}
/**
* 调薪多个人
*/
@POST
@Path("/batchAdjustSalaryItem4Workflow")
@Produces(MediaType.APPLICATION_JSON)
public String batchAdjustSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List<SalaryArchiveItemBatchSaveParam> saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<List<SalaryArchiveItemBatchSaveParam>, String>(user).run(getSalaryArchiveItemWrapper(user)::batchAdjustSalaryItem4Workflow, saveParam);
}
/**
* 定薪单个人
*/
@POST
@Path("/initSalaryItem4Workflow")
@Produces(MediaType.APPLICATION_JSON)
public String initSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveItemSaveParam saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveItemSaveParam, String>(user).run(getSalaryArchiveItemWrapper(user)::initSalaryItem4Workflow, saveParam);
}
/**
* 定薪多个人
*/
@POST
@Path("/batchInitSalaryItem4Workflow")
@Produces(MediaType.APPLICATION_JSON)
public String batchInitSalaryItem4Workflow(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody List<SalaryArchiveItemBatchSaveParam> saveParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<List<SalaryArchiveItemBatchSaveParam>, String>(user).run(getSalaryArchiveItemWrapper(user)::batchInitSalaryItem4Workflow, saveParam);
}
@POST
@Path("/getEffectiveItemValue")
@Produces(MediaType.APPLICATION_JSON)
public String getEffectiveItemValue(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryArchiveQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryArchiveQueryParam, String>(user).run(getSalaryArchiveItemWrapper(user)::getEffectiveItemValue, param);
}
/**
* 删除薪资项目调整
*/

View File

@ -3,6 +3,7 @@ package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.hrmelog.entity.dto.LoggerContext;
import com.engine.salary.action.CheckInitSalaryAction;
import com.engine.salary.config.SalaryElogConfig;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO;
@ -11,17 +12,24 @@ import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.dto.SingleSalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.*;
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.entity.taxagent.param.TaxAgentQueryParam;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.enums.OperateTypeEnum;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.auth.AuthFilterTypeEnum;
import com.engine.salary.enums.datacollection.UseEmployeeTypeEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveStatusEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.archive.SalaryArchiveMapper;
import com.engine.salary.service.*;
import com.engine.salary.service.impl.*;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.wrapper.proxy.SalaryArchiveItemWrapperProxy;
@ -31,7 +39,11 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.soa.workflow.request.Property;
import java.util.*;
import java.util.stream.Collectors;
@ -67,6 +79,14 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
private SalaryArchiveWrapper getSalaryArchiveWrapper(User user) {
return ServiceUtil.getService(SalaryArchiveWrapper.class, user);
}
private SalaryArchiveMapper getSalaryArchiveMapper() {
return MapperProxyFactory.getProxy(SalaryArchiveMapper.class);
}
/**
* 构建薪资项目基础信息表单
@ -204,6 +224,21 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt
public String saveSalaryItem(SalaryArchiveItemSaveParam saveParam) {
return getSalaryArchiveItemService(user).saveSalaryItem(saveParam);
}
public String saveSalaryItem4Workflow(SalaryArchiveItemSaveParam saveParam) {
// 个税扣缴义务人
List<TaxAgentPO> taxAgentList = getTaxAgentService(user).listAll();
Optional<TaxAgentPO> first = taxAgentList.stream().filter(t -> t.getName().equals(saveParam.getTaxAgentName())).findFirst();
if (!first.isPresent()) {
throw new SalaryRunTimeException(saveParam.getTaxAgentName() + "个税扣缴义务人不存在");
}
// 获取薪资档案
SalaryArchivePO salaryArchivePO = getSalaryArchiveService(user).getByTaxAgentIdAndEmployeeId(first.get().getId(), saveParam.getEmployeeId());
if (salaryArchivePO == null) {
throw new SalaryRunTimeException("该个税扣缴义务人下该员工没有对应的薪资档案");
}
saveParam.setSalaryArchiveId(salaryArchivePO.getId());
return getSalaryArchiveItemService(user).saveSalaryItem(saveParam);
}
/**
* 删除薪资项目调整
@ -483,4 +518,191 @@ public class SalaryArchiveItemWrapper extends Service implements SalaryArchiveIt
}
return null;
}
public void batchAdjustSalaryItem4Workflow(List<SalaryArchiveItemBatchSaveParam> batchSaveParams) {
Optional<SalaryArchiveItemBatchSaveParam> first = batchSaveParams.stream().filter(param -> StringUtils.isBlank(param.getTaxAgentName()) || StringUtils.isBlank(param.getEmployeeId())).findFirst();
if (first.isPresent()) {
throw new SalaryRunTimeException("参数错误");
}
Map<String, String> salaryItemNameMap = SalaryEntityUtil.convert2Map(getSalaryItemService(user).listAll(), item -> item.getId().toString(), SalaryItemPO::getName);
List<Map<String, Object>> importData = new ArrayList<>();
// 根据个税扣缴义务人和人员分组
Map<String, List<SalaryArchiveItemBatchSaveParam>> paramGroupMap = SalaryEntityUtil.group2Map(batchSaveParams, param -> param.getTaxAgentName() + "_split" + param.getEmployeeId());
for (Map.Entry<String, List<SalaryArchiveItemBatchSaveParam>> entry : paramGroupMap.entrySet()) {
HashMap<String, Object> paramMap = new HashMap<>();
String[] split = entry.getKey().split("_split");
String taxAgentName = split.length > 0 ? split[0] : "";
String employeeId = split.length > 1 ? split[1] : "";
paramMap.put("员工id", employeeId);
paramMap.put("个税扣缴义务人", taxAgentName);
paramMap.put("生效日期", SalaryDateUtil.getFormatDate(new Date()));
paramMap.put("调整原因", entry.getValue().get(0).getAdjustReason() == null ? SalaryArchiveItemAdjustReasonEnum.SALARY_ADJUSTMENT.getDefaultLabel() : entry.getValue().get(0).getAdjustReason().getDefaultLabel());
List<SalaryArchiveItemBatchSaveParam> paramValueList = entry.getValue();
for (SalaryArchiveItemBatchSaveParam paramValue : paramValueList) {
String salaryItemName = salaryItemNameMap.getOrDefault(paramValue.getSalaryItemId(), "");
paramMap.put(salaryItemName + "_description", paramValue.getDescription());
paramMap.put(salaryItemName + "_effectivetime", paramValue.getEffectiveTime());
paramMap.put(salaryItemName, paramValue.getAdjustValue());
}
importData.add(paramMap);
}
SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder()
.importDatas(importData)
.build();
build.setIsWdlWorkflow(true);
Map<String, Object> checkMap = getSalaryArchiveWrapper(user).checkAdjustmentSalaryArchive(build);
List checkErrorNotice = (List) checkMap.get("errorNotice");
if (CollectionUtils.isNotEmpty(checkErrorNotice)) {
BaseBean baseBean = new BaseBean();
baseBean.writeLog("调薪流程存在异常,参数:"+build+", map:" + checkMap);
List<Map<String, String>> excelComments = (List<Map<String, String>>) checkMap.get("errorNotice");
StringBuilder message = new StringBuilder("");
for (Map<String, String> comments : excelComments) {
message.append(comments.get("message")).append("\n");
}
throw new SalaryRunTimeException(message.toString());
}
}
public String getEffectiveItemValue(SalaryArchiveQueryParam param) {
return getSalaryArchiveService(user).getEffectiveItemValue(param);
}
public void initSalaryItem4Workflow(SalaryArchiveItemSaveParam saveParam) {
// 个税扣缴义务人
List<TaxAgentPO> taxAgentList = getTaxAgentService(user).listAll();
Optional<TaxAgentPO> first = taxAgentList.stream().filter(t -> t.getName().equals(saveParam.getTaxAgentName())).findFirst();
if (!first.isPresent()) {
throw new SalaryRunTimeException(saveParam.getTaxAgentName() + "个税扣缴义务人不存在");
}
Map<String, Object> importDataMap = new HashMap<>();
importDataMap.put("个税扣缴义务人", saveParam.getTaxAgentName());
importDataMap.put("员工id", saveParam.getEmployeeId());
importDataMap.put("起始发薪日期", saveParam.getSalaryStartDate());
if (StringUtils.isNotBlank(saveParam.getSalaryEndDate()) && SalaryDateUtil.checkDay(saveParam.getSalaryEndDate())) {
importDataMap.put("最后发薪日期", saveParam.getSalaryEndDate());
} else {
importDataMap.put("最后发薪日期", "");
}
if (saveParam.getEffectiveTime() != null) {
importDataMap.put("生效日期", SalaryDateUtil.getFormatDate(saveParam.getEffectiveTime()));
} else {
importDataMap.put("生效日期", saveParam.getSalaryStartDate());
}
SalaryArchiveItemAdjustReasonEnum salaryArchiveItemAdjustReasonEnum = SalaryArchiveItemAdjustReasonEnum.parseByValue(saveParam.getAdjustReason());
if (salaryArchiveItemAdjustReasonEnum != null) {
importDataMap.put("调整原因", salaryArchiveItemAdjustReasonEnum.getDefaultLabel());
} else {
importDataMap.put("调整原因", SalaryArchiveItemAdjustReasonEnum.ONBOARD.getDefaultLabel());
}
List<SalaryArchiveItemDetailSaveParam> salaryArchiveItems = saveParam.getSalaryArchiveItems();
Map<Long, String> salaryItemNameMap = SalaryEntityUtil.convert2Map(getSalaryItemService(user).listAll(), SalaryItemPO::getId, SalaryItemPO::getName);
for (SalaryArchiveItemDetailSaveParam archiveItem : salaryArchiveItems) {
String salaryItemName = salaryItemNameMap.getOrDefault(archiveItem.getSalaryItemId(), "");
importDataMap.put(salaryItemName + "_description", archiveItem.getDescription());
importDataMap.put(salaryItemName, archiveItem.getAdjustValue());
}
List<Map<String, Object>> importData = new ArrayList<>();
importData.add(importDataMap);
// 首先判断是否已经存在薪资档案且薪资档案状态为待定薪
String empIdStr = importDataMap.getOrDefault("员工id", "").toString();
Long taxAgentId = first.get().getId();
// 获取员工id
if (NumberUtils.isCreatable(empIdStr)) {
List<SalaryArchivePO> salaryArchivePOList = getSalaryArchiveService(user).listSome(SalaryArchivePO.builder().taxAgentId(taxAgentId).employeeId(Long.valueOf(empIdStr)).build());
if (CollectionUtils.isNotEmpty(salaryArchivePOList) && !salaryArchivePOList.get(0).getRunStatus().equals(SalaryArchiveStatusEnum.PENDING.getValue())) {
// 存在薪资档案且薪资档案状态不是待定薪修改状态为待定薪
salaryArchivePOList.get(0).setRunStatus(SalaryArchiveStatusEnum.PENDING.getValue());
salaryArchivePOList.get(0).setPayEndDate(null);
getSalaryArchiveMapper().update(salaryArchivePOList.get(0));
}
}
SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder()
.importDatas(importData)
.isWdlWorkflow(true)
.build();
//操作人
Map<String, Object> map = getSalaryArchiveWrapper(user).checkSalaryArchiveInit(build);
List checkErrorNotice = (List) map.get("errorNotice");
if (CollectionUtils.isNotEmpty(checkErrorNotice)) {
BaseBean baseBean = new BaseBean();
baseBean.writeLog("定薪流程存在异常,参数:"+build+", map:" + map);
List<Map<String, String>> excelComments = (List<Map<String, String>>) map.get("errorNotice");
StringBuilder message = new StringBuilder("");
for (Map<String, String> comments : excelComments) {
message.append(comments.get("message")).append("\n");
}
throw new SalaryRunTimeException(message.toString());
}
}
public void batchInitSalaryItem4Workflow(List<SalaryArchiveItemBatchSaveParam> batchSaveParams) {
Optional<SalaryArchiveItemBatchSaveParam> first = batchSaveParams.stream().filter(param -> StringUtils.isBlank(param.getTaxAgentName()) || StringUtils.isBlank(param.getEmployeeId())).findFirst();
if (first.isPresent()) {
throw new SalaryRunTimeException("参数错误");
}
Map<String, String> salaryItemNameMap = SalaryEntityUtil.convert2Map(getSalaryItemService(user).listAll(), item -> item.getId().toString(), SalaryItemPO::getName);
List<Map<String, Object>> importData = new ArrayList<>();
// 根据个税扣缴义务人和人员分组
Map<String, List<SalaryArchiveItemBatchSaveParam>> paramGroupMap = SalaryEntityUtil.group2Map(batchSaveParams, param -> param.getTaxAgentName() + "_split" + param.getEmployeeId());
for (Map.Entry<String, List<SalaryArchiveItemBatchSaveParam>> entry : paramGroupMap.entrySet()) {
HashMap<String, Object> paramMap = new HashMap<>();
String[] split = entry.getKey().split("_split");
String taxAgentName = split.length > 0 ? split[0] : "";
String employeeId = split.length > 1 ? split[1] : "";
paramMap.put("员工id", employeeId);
paramMap.put("个税扣缴义务人", taxAgentName);
paramMap.put("生效日期", SalaryDateUtil.getFormatDate(new Date()));
paramMap.put("起始发薪日期", entry.getValue().get(0).getSalaryStartDate());
String salaryEndDate = entry.getValue().get(0).getSalaryEndDate();
if (StringUtils.isNotBlank(salaryEndDate) && SalaryDateUtil.checkDay(salaryEndDate)) {
paramMap.put("最后发薪日期", salaryEndDate);
} else {
paramMap.put("最后发薪日期", "");
}
paramMap.put("调整原因", entry.getValue().get(0).getAdjustReason() == null ? SalaryArchiveItemAdjustReasonEnum.ONBOARD.getDefaultLabel() : entry.getValue().get(0).getAdjustReason().getDefaultLabel());
List<SalaryArchiveItemBatchSaveParam> paramValueList = entry.getValue();
for (SalaryArchiveItemBatchSaveParam paramValue : paramValueList) {
String salaryItemName = salaryItemNameMap.getOrDefault(paramValue.getSalaryItemId(), "");
paramMap.put(salaryItemName + "_description", paramValue.getDescription());
String effectiveTime = "";
if (StringUtils.isNotBlank(paramValue.getEffectiveTime()) && SalaryDateUtil.checkDay(paramValue.getEffectiveTime())) {
effectiveTime = paramValue.getEffectiveTime();
} else {
effectiveTime = entry.getValue().get(0).getSalaryStartDate();
}
paramMap.put(salaryItemName + "_effectivetime",effectiveTime);
paramMap.put(salaryItemName, paramValue.getAdjustValue());
}
importData.add(paramMap);
}
SalaryArchiveImportActionParam build = SalaryArchiveImportActionParam.builder()
.importDatas(importData)
.isWdlWorkflow(true)
.build();
//操作人
Map<String, Object> map = getSalaryArchiveWrapper(user).checkSalaryArchiveInit(build);
List checkErrorNotice = (List) map.get("errorNotice");
if (CollectionUtils.isNotEmpty(checkErrorNotice)) {
BaseBean baseBean = new BaseBean();
baseBean.writeLog("定薪流程存在异常,参数:"+build+", map:" + map);
List<Map<String, String>> excelComments = (List<Map<String, String>>) map.get("errorNotice");
StringBuilder message = new StringBuilder("");
for (Map<String, String> comments : excelComments) {
message.append(comments.get("message")).append("\n");
}
throw new SalaryRunTimeException(message.toString());
}
}
}

View File

@ -30,6 +30,8 @@ public interface SalaryArchiveItemWrapperProxy {
*/
String saveSalaryItem(SalaryArchiveItemSaveParam saveParam);
String saveSalaryItem4Workflow(SalaryArchiveItemSaveParam saveParam);
/**
* 删除薪资项目调整
*