2022-03-31 18:41:41 +08:00
|
|
|
package com.engine.salary.wrapper;
|
|
|
|
|
|
|
|
|
|
import com.engine.common.util.ServiceUtil;
|
|
|
|
|
import com.engine.core.impl.Service;
|
|
|
|
|
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO;
|
|
|
|
|
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
|
|
|
|
|
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveItemSaveParam;
|
|
|
|
|
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustBeforeParam;
|
|
|
|
|
import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryParam;
|
|
|
|
|
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
|
|
|
|
|
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
|
|
|
|
import com.engine.salary.enums.SalaryUserStatusEnum;
|
|
|
|
|
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
|
|
|
|
|
import com.engine.salary.exception.SalaryRunTimeException;
|
|
|
|
|
import com.engine.salary.service.SalaryArchiveItemService;
|
|
|
|
|
import com.engine.salary.service.impl.SalaryArchiveItemServiceImpl;
|
|
|
|
|
import com.engine.salary.util.SalaryI18nUtil;
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
import weaver.hrm.User;
|
|
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 薪资项目
|
|
|
|
|
* <p>Copyright: Copyright (c) 2022</p>
|
|
|
|
|
* <p>Company: 泛微软件</p>
|
|
|
|
|
*
|
|
|
|
|
* @author qiantao
|
|
|
|
|
* @version 1.0
|
|
|
|
|
**/
|
|
|
|
|
@Component
|
|
|
|
|
public class SalaryArchiveItemWrapper extends Service {
|
|
|
|
|
|
|
|
|
|
private SalaryArchiveItemService getSalaryArchiveItemService(User user) {
|
|
|
|
|
return (SalaryArchiveItemService) ServiceUtil.getService(SalaryArchiveItemServiceImpl.class, user);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private ExecutorService taskExecutor;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构建薪资项目基础信息表单
|
|
|
|
|
*
|
|
|
|
|
* @param effectiveTime
|
|
|
|
|
* @param adjustReason
|
|
|
|
|
* @param description
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private Map<String, Object> buildSalaryArchiveItemForm(Date effectiveTime, String adjustReason, String description) {
|
|
|
|
|
|
|
|
|
|
// 控件数据
|
|
|
|
|
Map<String, Object> data = new HashMap<>();
|
|
|
|
|
data.put("effectiveTime", effectiveTime + "");
|
|
|
|
|
data.put("adjustReason", adjustReason);
|
|
|
|
|
data.put("description", description);
|
|
|
|
|
|
|
|
|
|
return data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构建薪资档案调整明细
|
|
|
|
|
*
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
private Map<String, Object> buildSalaryArchiveItemAdjustDetailTable(List<Map<String, Object>> tableData) {
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
// 表头
|
|
|
|
|
List<String> headers = new ArrayList<>();
|
|
|
|
|
headers.add(SalaryI18nUtil.getI18nLabel(84960, "薪资项目"));
|
|
|
|
|
headers.add(SalaryI18nUtil.getI18nLabel(85433, "调整前"));
|
|
|
|
|
headers.add(SalaryI18nUtil.getI18nLabel(85434, "调整后"));
|
|
|
|
|
// 获取所有可被引用的薪资项目
|
|
|
|
|
List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
|
|
|
|
|
List<Map<String, Object>> salaryItems = salaryItemList.stream().map(m -> {
|
|
|
|
|
Map<String, Object> salaryItemMap = new LinkedHashMap<>();
|
|
|
|
|
salaryItemMap.put("id", String.valueOf(m.getId()));
|
|
|
|
|
salaryItemMap.put("content", m.getName());
|
|
|
|
|
return salaryItemMap;
|
|
|
|
|
}).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
map.put("headers", headers);
|
|
|
|
|
map.put("list", tableData);
|
|
|
|
|
map.put("salaryItemList", salaryItems);
|
|
|
|
|
|
|
|
|
|
return map;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取薪资项目调整前的值
|
|
|
|
|
*
|
|
|
|
|
* @param adjustBeforeParam
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public String getSalaryItemAdjustBeforeValue(SalaryItemAdjustBeforeParam adjustBeforeParam) {
|
|
|
|
|
return getSalaryArchiveItemService(user).getSalaryItemAdjustBeforeValue(adjustBeforeParam);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 通过薪资档案的薪资项目id获取薪资项目调整表单
|
|
|
|
|
*
|
|
|
|
|
* @param salaryArchiveItemId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public SalaryArchiveItemFormDTO getSalaryItemFormBySalaryArchiveItemId(Long salaryArchiveItemId) {
|
|
|
|
|
if (salaryArchiveItemId == null) {
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100427, "薪资档案的薪资项目id不能为空"));
|
|
|
|
|
}
|
|
|
|
|
SalaryArchiveItemPO salaryArchiveItem = getSalaryArchiveItemService(user).getById(salaryArchiveItemId);
|
|
|
|
|
if (salaryArchiveItem == null) {
|
|
|
|
|
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100428, "该薪资档案的薪资项目的调整记录不存在"));
|
|
|
|
|
}
|
|
|
|
|
Long salaryArchiveId = salaryArchiveItem.getSalaryArchiveId();
|
|
|
|
|
Date effectiveTime;
|
|
|
|
|
String adjustReason;
|
|
|
|
|
String description;
|
|
|
|
|
// 调整明细数据
|
|
|
|
|
List<Map<String, Object>> tableData = Lists.newArrayList();
|
|
|
|
|
// 获取调整前
|
|
|
|
|
String archiveItemBeforeValue = getSalaryArchiveItemService(user).getSalaryItemAdjustBeforeValue(SalaryItemAdjustBeforeParam.builder()
|
|
|
|
|
.salaryArchiveId(salaryArchiveItem.getSalaryArchiveId())
|
|
|
|
|
.salaryArchiveItemId(salaryArchiveItem.getId())
|
|
|
|
|
.salaryItemId(salaryArchiveItem.getSalaryItemId())
|
|
|
|
|
.build());
|
|
|
|
|
|
|
|
|
|
effectiveTime = salaryArchiveItem.getEffectiveTime();
|
|
|
|
|
adjustReason = salaryArchiveItem.getAdjustReason();
|
|
|
|
|
description = salaryArchiveItem.getDescription();
|
|
|
|
|
Map<String, Object> map = new HashMap<>(3);
|
|
|
|
|
map.put("salaryItem", String.valueOf(salaryArchiveItem.getSalaryItemId()));
|
|
|
|
|
map.put("salaryBefore", archiveItemBeforeValue);
|
|
|
|
|
map.put("adjustAfter", salaryArchiveItem.getItemValue());
|
|
|
|
|
tableData.add(map);
|
|
|
|
|
|
|
|
|
|
return SalaryArchiveItemFormDTO.builder()
|
|
|
|
|
.salaryArchiveId(salaryArchiveId)
|
|
|
|
|
.salaryArchiveItemForm(buildSalaryArchiveItemForm(effectiveTime, adjustReason, description))
|
|
|
|
|
.salaryArchiveItemDetail(buildSalaryArchiveItemAdjustDetailTable(tableData))
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 保存薪资项目调整
|
|
|
|
|
*
|
|
|
|
|
* @param saveParam
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public String saveSalaryItem(SalaryArchiveItemSaveParam saveParam) {
|
|
|
|
|
return getSalaryArchiveItemService(user).saveSalaryItem(saveParam);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 删除薪资项目调整
|
|
|
|
|
*
|
|
|
|
|
* @param salaryArchiveItemId
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public String deleteSalaryItem(Long salaryArchiveItemId) {
|
|
|
|
|
return getSalaryArchiveItemService(user).deleteSalaryItem(salaryArchiveItemId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 薪资项目调整记录列表
|
|
|
|
|
*
|
|
|
|
|
* @param queryParam
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
public List<SalaryItemAdjustRecordListDTO> adjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) {
|
|
|
|
|
// 获取所有可被引用的薪资项目
|
|
|
|
|
List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
|
|
|
|
|
List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
|
List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
|
|
|
|
|
List<SalaryItemAdjustRecordListDTO> list = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds);
|
|
|
|
|
//获取上次更改的记录
|
|
|
|
|
list.forEach(m -> {
|
|
|
|
|
if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
|
|
|
|
|
listAll.removeIf(a -> a.getId().equals(m.getId()));
|
|
|
|
|
}
|
|
|
|
|
Optional<SalaryItemAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst();
|
|
|
|
|
m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
|
|
|
|
|
|
|
|
|
|
m.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(m.getEmployeeStatus()));
|
|
|
|
|
m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
return list;
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-01 18:25:24 +08:00
|
|
|
/**
|
|
|
|
|
* 单个档案的薪资项目调整记录列表
|
|
|
|
|
*
|
|
|
|
|
* @param queryParam
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
// public WeaTable<SingleSalaryItemAdjustRecordListDTO> singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam) {
|
2022-03-31 18:41:41 +08:00
|
|
|
// if (queryParam.getSalaryArchiveId() == null) {
|
|
|
|
|
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
|
|
|
|
|
// }
|
|
|
|
|
// // 获取所有可被引用的薪资项目
|
2022-04-01 18:25:24 +08:00
|
|
|
// List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
|
2022-03-31 18:41:41 +08:00
|
|
|
// List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
|
|
|
|
|
//
|
|
|
|
|
// SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam();
|
|
|
|
|
// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
|
2022-04-01 18:25:24 +08:00
|
|
|
// PageInfo<SalaryItemAdjustRecordListDTO> page = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(adjustRecordQueryParam, salaryItemIds);
|
|
|
|
|
//
|
|
|
|
|
// PageInfo<SingleSalaryItemAdjustRecordListDTO> listPage = new PageInfo<SingleSalaryItemAdjustRecordListDTO>();
|
2022-03-31 18:41:41 +08:00
|
|
|
//
|
2022-04-01 18:25:24 +08:00
|
|
|
// List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
|
|
|
|
|
// List<SalaryItemAdjustRecordListDTO> list = page.getList();
|
2022-03-31 18:41:41 +08:00
|
|
|
// List<SingleSalaryItemAdjustRecordListDTO> resultList = Lists.newArrayList();
|
|
|
|
|
// list.forEach(m -> {
|
|
|
|
|
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
|
|
|
|
|
// listAll.removeIf(a -> a.getId().equals(m.getId()));
|
|
|
|
|
// }
|
|
|
|
|
// Optional<SalaryItemAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId()) && f.getSalaryItemId().equals(m.getSalaryItemId())).findFirst();
|
|
|
|
|
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
|
|
|
|
|
//
|
2022-04-01 18:25:24 +08:00
|
|
|
// m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
|
2022-03-31 18:41:41 +08:00
|
|
|
//
|
|
|
|
|
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecordList = new SingleSalaryItemAdjustRecordListDTO();
|
|
|
|
|
// BeanUtils.copyProperties(m, singleSalaryItemAdjustRecordList);
|
|
|
|
|
// resultList.add(singleSalaryItemAdjustRecordList);
|
|
|
|
|
// });
|
2022-04-01 18:25:24 +08:00
|
|
|
// listPage.setList(resultList);
|
2022-03-31 18:41:41 +08:00
|
|
|
//
|
|
|
|
|
// WeaTable<SingleSalaryItemAdjustRecordListDTO> weaTable = FormatManager.<SingleSalaryItemAdjustRecordListDTO>getInstance()
|
|
|
|
|
// .genTable(SingleSalaryItemAdjustRecordListDTO.class, listPage);
|
|
|
|
|
// weaTable.setModule("hrmsalary");
|
2022-04-01 18:25:24 +08:00
|
|
|
// List<Long> salaryItemPageIds = listPage.getList().stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList());
|
|
|
|
|
// List<SalaryArchiveItemPO> effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds);
|
2022-03-31 18:41:41 +08:00
|
|
|
// // 行记录按钮权限控制
|
2022-04-01 18:25:24 +08:00
|
|
|
// for (int i = 0; i < listPage.getList().size(); i++) {
|
|
|
|
|
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = (SingleSalaryItemAdjustRecordListDTO)listPage.getList().get(i);
|
2022-03-31 18:41:41 +08:00
|
|
|
// Optional<SalaryArchiveItemPO> optional = effectiveSalaryItems.stream().filter(f -> f.getSalaryItemId().equals(singleSalaryItemAdjustRecord.getSalaryItemId())).findFirst();
|
2022-04-01 18:25:24 +08:00
|
|
|
// Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
|
2022-03-31 18:41:41 +08:00
|
|
|
// List<Permission> permissions = weaTable.getOperatesPermission().get(i);
|
|
|
|
|
// for (int j = 0; j < permissions.size(); j++) {
|
|
|
|
|
// Permission permission = permissions.get(j);
|
|
|
|
|
// if (effectiveDate != null && singleSalaryItemAdjustRecord.getEffectiveTime().isBefore(effectiveDate)) {
|
|
|
|
|
// permission.setVisible(false);
|
|
|
|
|
// permission.setDisabled(true);
|
|
|
|
|
// }
|
|
|
|
|
// if (j > 0 && singleSalaryItemAdjustRecord.getEffectiveTime().equals(effectiveDate)) {
|
|
|
|
|
// permission.setVisible(false);
|
|
|
|
|
// permission.setDisabled(false);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// return weaTable;
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// /**
|
|
|
|
|
// * 导出薪资项目调整记录列表
|
|
|
|
|
// *
|
|
|
|
|
// * @param queryParam
|
|
|
|
|
// * @param employeeId
|
|
|
|
|
// * @param tenantKey
|
|
|
|
|
// * @return
|
|
|
|
|
// */
|
|
|
|
|
// public Map<String, Object> exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam, Long employeeId, String tenantKey) {
|
|
|
|
|
// // 构建异步导出参数
|
|
|
|
|
// Map<String, Object> map = salaryBatchService.buildeExportParam("exportSalaryArchiveItemAdjustRecord");
|
|
|
|
|
//
|
|
|
|
|
// String username = UserContext.getCurrentUser().getUsername();
|
|
|
|
|
// String eteamsId = TenantRpcContext.getEteamsId();
|
|
|
|
|
// taskExecutor.execute(() -> {
|
|
|
|
|
// try {
|
|
|
|
|
// DSTenantKeyThreadVar.tenantKey.set(tenantKey);
|
|
|
|
|
//
|
|
|
|
|
// getSalaryArchiveItemService(user).exportAdjustRecordList(map, username, eteamsId, queryParam, employeeId, tenantKey);
|
|
|
|
|
// } finally {
|
|
|
|
|
// DSTenantKeyThreadVar.tenantKey.remove();
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// return map;
|
|
|
|
|
// }
|
|
|
|
|
}
|