万德隆 定薪调薪
This commit is contained in:
parent
5435a5a736
commit
8876d9b491
|
|
@ -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())
|
||||
|
|
|
|||
|
|
@ -47,4 +47,6 @@ public class SalaryArchiveImportActionParam {
|
|||
* 档案状态是否保持不变
|
||||
*/
|
||||
private Boolean keepStatus;
|
||||
|
||||
private Boolean isWdlWorkflow;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
@ -25,4 +25,7 @@ public class SalaryArchiveItemDetailSaveParam {
|
|||
|
||||
//调整值")
|
||||
private String adjustValue;
|
||||
|
||||
// 说明
|
||||
private String description;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -118,4 +118,6 @@ public class SalaryArchiveQueryParam extends BaseQueryParam {
|
|||
// 调薪结束日期
|
||||
private Date adjustSalaryEndDate;
|
||||
|
||||
private Long salaryItemId;
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -256,4 +256,8 @@ public interface SalaryArchiveService {
|
|||
* @return
|
||||
*/
|
||||
List<SalaryArchivePO> listPayStartDateIsNull(String runStatus);
|
||||
|
||||
SalaryArchivePO getByTaxAgentIdAndEmployeeId(Long id, Long employeeId);
|
||||
|
||||
String getEffectiveItemValue(SalaryArchiveQueryParam param);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 "";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除薪资项目调整
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ public interface SalaryArchiveItemWrapperProxy {
|
|||
*/
|
||||
String saveSalaryItem(SalaryArchiveItemSaveParam saveParam);
|
||||
|
||||
String saveSalaryItem4Workflow(SalaryArchiveItemSaveParam saveParam);
|
||||
|
||||
/**
|
||||
* 删除薪资项目调整
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in New Issue