薪资档案后续接口

This commit is contained in:
钱涛 2022-04-02 15:34:27 +08:00
parent 126444b9f3
commit 3307c5c67e
12 changed files with 520 additions and 424 deletions

View File

@ -1,5 +1,6 @@
package com.engine.salary.entity.salaryarchive.dto;
import com.engine.salary.annotation.TableTitle;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
@ -36,6 +37,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// labelId = 85432,
// tableColumn = @TableColumn(width = "20%")
// )
@TableTitle(title = "调整项目", dataIndex = "adjustItem", key = "adjustItem")
private String adjustItem;
//
// //调整前")
@ -44,6 +46,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// labelId = 85433,
// tableColumn = @TableColumn(width = "20%")
// )
@TableTitle(title = "调整前", dataIndex = "adjustBefore", key = "adjustBefore")
private String adjustBefore;
//
// //调整后")
@ -52,6 +55,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// labelId = 85434,
// tableColumn = @TableColumn(width = "20%")
// )
@TableTitle(title = "调整后", dataIndex = "adjustAfter", key = "adjustAfter")
private String adjustAfter;
//
// //调整原因")
@ -60,6 +64,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// labelId = 85431,
// tableColumn = @TableColumn(width = "10%")
// )
@TableTitle(title = "调整原因", dataIndex = "adjustReason", key = "adjustReason")
private String adjustReason;
//
// //生效日期")
@ -69,6 +74,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "15%")
// )
// @JsonFormat(pattern = "yyyy-MM-dd")
@TableTitle(title = "生效日期", dataIndex = "effectiveTime", key = "effectiveTime")
private Date effectiveTime;
//
// //操作人")
@ -77,6 +83,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// labelId = 85435,
// tableColumn = @TableColumn(width = "10%")
// )
@TableTitle(title = "操作人", dataIndex = "operator", key = "operator")
private String operator;
//
// //操作时间")
@ -86,6 +93,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "20%")
// )
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@TableTitle(title = "操作时间", dataIndex = "operateTime", key = "operateTime")
private Date operateTime;
//
// //备注")
@ -94,6 +102,7 @@ public class SingleSalaryItemAdjustRecordListDTO {
// labelId = 84961,
// tableColumn = @TableColumn(width = "10%")
// )
@TableTitle(title = "备注", dataIndex = "description", key = "description")
private String description;
//
// /**
@ -107,4 +116,10 @@ public class SingleSalaryItemAdjustRecordListDTO {
// */
// @JsonIgnore
private Long salaryItemId;
/**
* 是否能操作
*/
private Boolean canOperator;
}

View File

@ -5,6 +5,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Description: 个税扣缴义务人调整记录列表
* @Author: wangxiangzhong
@ -46,7 +48,7 @@ public class SingleTaxAgentAdjustRecordListDTO {
// labelId = 85431,
// tableColumn = @TableColumn(width = "10%")
// )
// private String adjustReason;
private String adjustReason;
//
// //生效日期")
// @WeaFormat(
@ -55,7 +57,7 @@ public class SingleTaxAgentAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "15%")
// )
// @JsonFormat(pattern = "yyyy-MM-dd")
// private LocalDate effectiveTime;
private Date effectiveTime;
//
// //操作人")
// @WeaFormat(
@ -63,7 +65,7 @@ public class SingleTaxAgentAdjustRecordListDTO {
// labelId = 85435,
// tableColumn = @TableColumn(width = "10%")
// )
// private String operator;
private String operator;
//
// //操作时间")
// @WeaFormat(
@ -72,7 +74,7 @@ public class SingleTaxAgentAdjustRecordListDTO {
// tableColumn = @TableColumn(width = "20%")
// )
// @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
// private Date operateTime;
private Date operateTime;
//
// //备注")
// @WeaFormat(
@ -80,18 +82,24 @@ public class SingleTaxAgentAdjustRecordListDTO {
// labelId = 84961,
// tableColumn = @TableColumn(width = "10%")
// )
// private String description;
private String description;
//
// /**
// * 薪资档案id
// */
// @JsonIgnore
// private Long salaryArchiveId;
private Long salaryArchiveId;
//
// /**
// * 个税扣缴义务人id
// */
// @JsonIgnore
// private Long taxAgentId;
private Long taxAgentId;
/**
* 是否有操作按钮
*/
private Boolean canOperator;
}

View File

@ -6,8 +6,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.time.LocalDate;
import java.util.Collection;
import java.util.Date;
import java.util.List;
/**
@ -56,10 +56,10 @@ public class SalaryItemAdjustRecordQueryParam extends BaseQueryParam {
private String adjustReason;
//生效日期
private List<LocalDate> effectiveTime;
private List<Date> effectiveTime;
//操作日期
private List<LocalDate> operateTime;
private List<Date> operateTime;
//操作人id
private List<Long> operatorIds;

View File

@ -1,6 +1,9 @@
package com.engine.salary.enums.salaryarchive;
import com.engine.salary.util.SalaryI18nUtil;
import java.util.Arrays;
import java.util.Optional;
/**
* @Description: 薪资档案-个税扣缴义务人调整原因
@ -41,15 +44,12 @@ public enum SalaryArchiveTaxAgentAdjustReasonEnum {
}
public static String getValueByDefaultLabel(String defaultLabel) {
if (defaultLabel == null) {
return "";
}
SalaryArchiveTaxAgentAdjustReasonEnum[] enumAry = SalaryArchiveTaxAgentAdjustReasonEnum.values();
for(int i = 0; i < Arrays.asList(enumAry).size(); i++){
if (enumAry[i].getDefaultLabel().equals(defaultLabel)) {
return enumAry[i].getValue();
}
}
return "";
Optional<SalaryArchiveTaxAgentAdjustReasonEnum> optionalAdjustReason = Arrays.stream(SalaryArchiveTaxAgentAdjustReasonEnum.values()).filter(r->SalaryI18nUtil.getI18nLabel(r.getLabelId(), r.getDefaultLabel()).equals(defaultLabel)).findFirst();
return optionalAdjustReason.isPresent()?optionalAdjustReason.get().getValue():"";
}
public static String getDefaultLabelByValue(String value) {
Optional<SalaryArchiveTaxAgentAdjustReasonEnum> optionalAdjustReason = Arrays.stream(SalaryArchiveTaxAgentAdjustReasonEnum.values()).filter(r->r.getValue().equals(value)).findFirst();
return optionalAdjustReason.isPresent()? SalaryI18nUtil.getI18nLabel(optionalAdjustReason.get().getLabelId(), optionalAdjustReason.get().getDefaultLabel()):"";
}
}

View File

@ -7,6 +7,7 @@ import com.engine.salary.entity.salaryarchive.param.SalaryItemAdjustRecordQueryP
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.util.page.PageInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.List;
@ -68,10 +69,8 @@ public interface SalaryArchiveItemService {
/**
* 薪资调整记录列表分页
*
* @param page
* @param queryParam
* @param salaryItemIds
* @param tenantKey
* @return
*/
PageInfo<SalaryItemAdjustRecordListDTO> salaryItemAdjustRecordListPage( SalaryItemAdjustRecordQueryParam queryParam, List<Long> salaryItemIds);
@ -88,10 +87,7 @@ public interface SalaryArchiveItemService {
/**
* 导出薪资项目的调整记录列表
*
* @param map
* @param username
* @param eteamsId
* @param queryParam
*/
// void exportAdjustRecordList(Map<String, Object> map, String username, String eteamsId, SalaryItemAdjustRecordQueryParam queryParam);
XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam);
}

View File

@ -4,6 +4,8 @@ import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.util.page.PageInfo;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.List;
@ -44,11 +46,10 @@ public interface SalaryArchiveTaxAgentService {
/**
* 个税扣缴义务人的调整记录分页
*
* @param page
* @param queryParam
* @return
*/
// Page<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(Page<TaxAgentAdjustRecordListDTO> page, TaxAgentAdjustRecordQueryParam queryParam);
PageInfo<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam);
/**
* 个税扣缴义务人的调整记录
@ -77,10 +78,7 @@ public interface SalaryArchiveTaxAgentService {
/**
* 导出-个税扣缴义务人的调整记录列表
*
* @param map
* @param username
* @param eteamsId
* @param queryParam
*/
// void exportAdjustRecordList(Map<String, Object> map, String username, String eteamsId, TaxAgentAdjustRecordQueryParam queryParam);
XSSFWorkbook exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam);
}

View File

@ -10,20 +10,22 @@ 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.enums.UserStatusEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveItemAdjustReasonEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalaryArchiveItemService;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.excel.ExcelUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.valid.ValidUtil;
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 org.springframework.transaction.annotation.Transactional;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
@ -261,85 +263,64 @@ public class SalaryArchiveItemServiceImpl extends Service implements SalaryArchi
return salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
}
// @Override
// public void exportAdjustRecordList(Map<String, Object> map, String username, String eteamsId, SalaryItemAdjustRecordQueryParam queryParam) {
// List<ExcelSheetData> sheetList = new ArrayList<>();
//
// ExcelSheetData excelSheetData = new ExcelSheetData();
// // 1.工作簿名称
// String nameI18n = SalaryI18nUtil.getI18nLabel( 100438, "薪资项目调整记录");
// excelSheetData.setSheetName(nameI18n);
// String[] header = {
// SalaryI18nUtil.getI18nLabel( 85429, "姓名"),
// SalaryI18nUtil.getI18nLabel( 86187, "员工状态"),
// SalaryI18nUtil.getI18nLabel( 86185, "部门"),
// SalaryI18nUtil.getI18nLabel( 84960, "薪资项目"),
// SalaryI18nUtil.getI18nLabel( 85433, "调整前"),
// SalaryI18nUtil.getI18nLabel( 85434, "调整后"),
// SalaryI18nUtil.getI18nLabel( 85431, "调整原因"),
// SalaryI18nUtil.getI18nLabel( 85904, "生效日期"),
// SalaryI18nUtil.getI18nLabel( 85435, "操作人"),
// SalaryI18nUtil.getI18nLabel( 85436, "操作时间"),
// SalaryI18nUtil.getI18nLabel( 84961, "备注")
// };
// // 2.表头
// excelSheetData.setHeaders(Collections.singletonList(header));
// // 获取所有可被引用的薪资项目
// List<SalaryItemPO> salaryItemList = getCanAdjustSalaryItems(currentTenantKey);
// List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
// // 获取记录
// List<SalaryItemAdjustRecordListDTO> list = salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds, currentTenantKey);
// List<SalaryItemAdjustRecordListDTO> listAll = salaryArchiveItemMapper.salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds, currentTenantKey);
// // 人员信息赋值
// 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(), currentEmployeeId, currentTenantKey));
// m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason(), currentEmployeeId, currentTenantKey));
// });
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// List<List<Object>> rows = new ArrayList<>();
// for (SalaryItemAdjustRecordListDTO dto : list) {
// List<Object> row = new ArrayList<>();
// row.add(dto.getUsername());
// row.add(dto.getEmployeeStatus());
// row.add(dto.getDepartmentName());
// row.add(dto.getAdjustItem());
// row.add(dto.getAdjustBefore());
// row.add(dto.getAdjustAfter());
// row.add(dto.getAdjustReason());
// row.add(dto.getEffectiveTime() + "");
// row.add(dto.getOperator());
// row.add(format.format(dto.getOperateTime()));
// row.add(dto.getDescription());
// rows.add(row);
// }
// // 3.表数据
// excelSheetData.setRows(rows);
//
// sheetList.add(excelSheetData);
//
// salaryBatchService.simpleExportExcel(ExportExcelInfo.builder()
// .bizId(map.get("biz").toString())
// .flag(true)
// .userId(currentEmployeeId)
// .eteamsId(eteamsId)
// .tenantKey(currentTenantKey)
// .operator(username)
// .module(map.get("module").toString())
// .fileName(nameI18n + SalaryDateUtil.getFormatLocalDateTime(LocalDateTime.now()))
// .handlerName(map.get("function").toString())
// .dataType(nameI18n)
// .function(map.get("function").toString()).build(), sheetList);
// }
//
// @BatchExportHandler("exportSalaryArchiveItemAdjustRecord")
// public void exportSalaryArchiveItemAdjustRecordHandler() {
// BatchCallbackMessage message = BatchExportContext.getBatchCallbackMessage();
// log.info("接受到薪资项目操作记录导出的结果:{}", JSONObject.toJSONString(message));
// }
@Override
public XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) {
// 1.工作簿名称
String sheetName = SalaryI18nUtil.getI18nLabel(85368, "薪资项目调整记录");
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItems = salaryItemMapper.getCanAdjustSalaryItems();
String[] header = {
SalaryI18nUtil.getI18nLabel( 85429, "姓名"),
SalaryI18nUtil.getI18nLabel( 86187, "员工状态"),
SalaryI18nUtil.getI18nLabel( 86185, "部门"),
SalaryI18nUtil.getI18nLabel( 84960, "薪资项目"),
SalaryI18nUtil.getI18nLabel( 85433, "调整前"),
SalaryI18nUtil.getI18nLabel( 85434, "调整后"),
SalaryI18nUtil.getI18nLabel( 85431, "调整原因"),
SalaryI18nUtil.getI18nLabel( 85904, "生效日期"),
SalaryI18nUtil.getI18nLabel( 85435, "操作人"),
SalaryI18nUtil.getI18nLabel( 85436, "操作时间"),
SalaryI18nUtil.getI18nLabel( 84961, "备注")
};
// 2.表头
List<Object> headerList = new ArrayList<>(Arrays.asList(header));
// 3.表数据
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItemList = getCanAdjustSalaryItems();
List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
// 获取记录
List<SalaryItemAdjustRecordListDTO> list = salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds);
List<SalaryItemAdjustRecordListDTO> listAll = salaryArchiveItemMapper.salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), 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(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(m.getEmployeeStatus())));
m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
});
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<List<Object>> rows = new ArrayList<>();
for (SalaryItemAdjustRecordListDTO dto : list) {
List<Object> row = new ArrayList<>();
row.add(dto.getUsername());
row.add(dto.getEmployeeStatus());
row.add(dto.getDepartmentName());
row.add(dto.getAdjustItem());
row.add(dto.getAdjustBefore());
row.add(dto.getAdjustAfter());
row.add(dto.getAdjustReason());
row.add(dto.getEffectiveTime() + "");
row.add(dto.getOperator());
row.add(format.format(dto.getOperateTime()));
row.add(dto.getDescription());
rows.add(row);
}
return ExcelUtil.genWorkbookV2(rows, sheetName);
}
}

View File

@ -14,9 +14,12 @@ import com.engine.salary.mapper.archive.SalaryArchiveTaxAgentMapper;
import com.engine.salary.service.SalaryArchiveTaxAgentService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.PageUtil;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -43,11 +46,13 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA
return salaryArchiveTaxAgentMapper.getById(salaryArchiveTaxAgentId);
}
// @Override
// public Page<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(Page<TaxAgentAdjustRecordListDTO> page, TaxAgentAdjustRecordQueryParam queryParam, String tenantKey) {
// salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(page, queryParam, tenantKey);
// return page;
// }
@Override
public PageInfo<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam) {
PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize());
List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordListDTOS = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam);
PageInfo<TaxAgentAdjustRecordListDTO> pageInfo = new PageInfo<TaxAgentAdjustRecordListDTO>(taxAgentAdjustRecordListDTOS, TaxAgentAdjustRecordListDTO.class);
return pageInfo;
}
@Override
public List<TaxAgentAdjustRecordListDTO> taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
@ -189,11 +194,9 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA
return StringUtils.EMPTY;
}
// @Override
// public void exportAdjustRecordList(Map<String, Object> map, String username, String eteamsId, TaxAgentAdjustRecordQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) {
// List<ExcelSheetData> sheetList = new ArrayList<>();
//
// ExcelSheetData excelSheetData = new ExcelSheetData();
@Override
public XSSFWorkbook exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
return null;
// // 1.工作簿名称
// String nameI18n = SalaryI18nUtil.getI18nLabel(currentTenantKey, currentEmployeeId, 99978, "个税扣缴义务人调整记录");
// excelSheetData.setSheetName(nameI18n);
@ -265,7 +268,7 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA
// .handlerName(map.get("function").toString())
// .dataType(nameI18n)
// .function(map.get("function").toString()).build(), sheetList);
// }
}
@Override
public SalaryArchiveTaxAgentPO getAdjustBeforeTaxAgent(SalaryArchiveTaxAgentPO salaryArchiveTaxAgent) {

View File

@ -4,7 +4,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.apache.commons.lang3.time.FastDateFormat;
import weaver.general.BaseBean;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
@ -32,6 +34,10 @@ public class SalaryDateUtil {
public static final DateTimeFormatter MONTH_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM");
public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
public static final String MONTH_FORMATTER_PATTERN = "yyyy-MM";
public static final String DATE_FORMATTER_PATTERN = "yyyy-MM-dd";
public static final String DATE_TIME_FORMATTER_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* yyyy-MM
**/
@ -216,4 +222,16 @@ public class SalaryDateUtil {
public static boolean checkDay(String day) {
return Pattern.matches(DAY_REGEX, day) || Pattern.matches(DAY_BAR_REGEX, day);
}
public static Date parse(String date, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
return format.parse(date);
} catch (ParseException e) {
new BaseBean().writeLog(String.format("日期解析异常: %s, %s", date, pattern));
}
return null;
}
}

View File

@ -1,19 +1,19 @@
package com.engine.salary.web;
import com.engine.common.util.ServiceUtil;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveItemFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SalaryItemAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.dto.*;
import com.engine.salary.entity.salaryarchive.param.*;
import com.engine.salary.enums.salaryarchive.SalaryArchiveImportTypeEnum;
import com.engine.salary.util.ResponseResult;
import com.engine.salary.util.SalaryDateUtil;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.wrapper.SalaryArchiveItemWrapper;
import com.engine.salary.wrapper.SalaryArchiveTaxAgentWrapper;
import com.engine.salary.wrapper.SalaryArchiveWrapper;
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
@ -27,7 +27,9 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.StreamingOutput;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -198,9 +200,9 @@ public class SalaryArchiveController {
if (StringUtils.isNotBlank(ids)) {
param.setIds(Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList()));
}
String keyword = request.getParameter("username");
if (StringUtils.isNotBlank(keyword)) {
param.setUsername(keyword);
String username = request.getParameter("username");
if (StringUtils.isNotBlank(username)) {
param.setUsername(username);
}
String taxAgentId = request.getParameter("taxAgentId");
if (StringUtils.isNotBlank(taxAgentId)) {
@ -372,11 +374,6 @@ public class SalaryArchiveController {
* @param salaryArchiveTaxAgentId
* @return
*/
/**
* 保存个税扣缴义务人调整
*
* @return
*/
@POST
@Path("/deleteTaxAgent")
@Produces(MediaType.APPLICATION_JSON)
@ -401,86 +398,190 @@ public class SalaryArchiveController {
@Produces(MediaType.APPLICATION_JSON)
public String adjustRecordList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryItemAdjustRecordQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryItemAdjustRecordQueryParam, List<SalaryItemAdjustRecordListDTO>>().run(getSalaryArchiveItemWrapper(user)::adjustRecordList, queryParam);
return new ResponseResult<SalaryItemAdjustRecordQueryParam, PageInfo<SalaryItemAdjustRecordListDTO>>().run(getSalaryArchiveItemWrapper(user)::adjustRecordList, queryParam);
}
// /**
// * 单个档案的薪资项目调整记录列表
// *
// * @param queryParam
// * @return
// */
// @PostMapping("/adjustRecord/singleSalaryItemList")
// @ApiOperation("单个档案的薪资项目调整记录列表")
// @WeaPermission
// public WeaResult<WeaTable<SingleSalaryItemAdjustRecordListDTO>> singleSalaryItemAdjustRecordList(@RequestBody SingleSalaryItemAdjustRecordQueryParam queryParam) {
// return WeaResult.success(salaryArchiveItemWrapper.singleSalaryItemAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
// * 导出薪资项目调整记录列表
// *
// * @param queryParam
// * @return
// */
// @PostMapping("/adjustRecord/exportSalaryItemList")
// @ApiOperation("导出薪资项目调整记录列表")
// @WeaPermission
// public WeaResult<Map<String, Object>> exportSalaryItemList(@RequestBody SalaryItemAdjustRecordQueryParam queryParam) {
// return WeaResult.success(salaryArchiveItemWrapper.exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
// /******** 薪资项目调整记录 end ***********************************************************************************************/
//
// /******** 个税扣缴义务人调整记录 start ***********************************************************************************************/
// /**
// * 个税扣缴义务人调整记录列表的高级搜索
// *
// * @return
// */
// @GetMapping("/adjustRecord/getTaxAgentSearchCondition")
// @ApiOperation("个税扣缴义务人调整记录列表的高级搜索")
// @WeaPermission
// public WeaResult<WeaSearchCondition> getTaxAgentSearchCondition() {
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
// * 个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @return
// */
// @PostMapping("/adjustRecord/taxAgentList")
// @ApiOperation("个税扣缴义务人调整记录列表")
// @WeaPermission
// public WeaResult<WeaTable<TaxAgentAdjustRecordListDTO>> taxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) {
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).adjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
// * 单个档案的个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @return
// */
// @PostMapping("/adjustRecord/singleTaxAgentList")
// @ApiOperation("单个档案的个税扣缴义务人调整记录列表")
// @WeaPermission
// public WeaResult<WeaTable<SingleTaxAgentAdjustRecordListDTO>> SingleTaxAgentAdjustRecordList(@RequestBody SingleTaxAgentAdjustRecordQueryParam queryParam) {
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).singleTaxAgentAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
//
// /**
// * 导出个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @return
// */
// @PostMapping("/adjustRecord/exportTaxAgentList")
// @ApiOperation("导出个税扣缴义务人调整记录列表")
// @WeaPermission
// public WeaResult<Map<String, Object>> exportTaxAgentList(@RequestBody TaxAgentAdjustRecordQueryParam queryParam) {
// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey()));
// }
// /******** 个税扣缴义务人调整记录 end ***********************************************************************************************/
/**
* 单个档案的薪资项目调整记录列表
*
* @param queryParam
* @return
*/
@POST
@Path("/adjustRecord/singleSalaryItemList")
@Produces(MediaType.APPLICATION_JSON)
public String singleSalaryItemAdjustRecordList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SingleSalaryItemAdjustRecordQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SingleSalaryItemAdjustRecordQueryParam, PageInfo<SingleSalaryItemAdjustRecordListDTO>>().run(getSalaryArchiveItemWrapper(user)::singleSalaryItemAdjustRecordList, queryParam);
}
/**
* 导出薪资项目调整记录列表
*
*/
@GET
@Path("/adjustRecord/exportSalaryItemList")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportSalaryItemList(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
SalaryItemAdjustRecordQueryParam param = getSalaryItemAdjustRecordQueryParam(request);
XSSFWorkbook workbook = getSalaryArchiveItemWrapper(user).exportAdjustRecordList(param);
String time = LocalDate.now().toString();
String fileName = "薪资项目调整记录" + time;
try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
StreamingOutput output = outputStream -> {
workbook.write(outputStream);
outputStream.flush();
};
response.setContentType("application/octet-stream");
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
}
@NotNull
private SalaryItemAdjustRecordQueryParam getSalaryItemAdjustRecordQueryParam(HttpServletRequest request) {
SalaryItemAdjustRecordQueryParam param = new SalaryItemAdjustRecordQueryParam();
String ids = request.getParameter("ids");
if (StringUtils.isNotBlank(ids)) {
param.setIds(Arrays.stream(ids.split(",")).map(Long::valueOf).collect(Collectors.toList()));
}
String salaryArchiveId = request.getParameter("salaryArchiveId");
if (StringUtils.isNotBlank(salaryArchiveId)) {
param.setSalaryArchiveId(Long.parseLong(salaryArchiveId));
}
String keyword = request.getParameter("keyword");
if (StringUtils.isNotBlank(keyword)) {
param.setKeyword(keyword);
}
String username = request.getParameter("username");
if (StringUtils.isNotBlank(username)) {
param.setUsername(username);
}
String employeeId = request.getParameter("employeeId");
if (StringUtils.isNotBlank(employeeId)) {
param.setSalaryArchiveId(Long.parseLong(employeeId));
}
String departmentIds = request.getParameter("departmentIds");
if (StringUtils.isNotBlank(departmentIds)) {
param.setDepartmentIds(Arrays.stream(departmentIds.split(",")).map(Long::valueOf).collect(Collectors.toList()));
}
String positionIds = request.getParameter("positionIds");
if (StringUtils.isNotBlank(positionIds)) {
param.setPositionIds(Arrays.stream(positionIds.split(",")).map(Long::valueOf).collect(Collectors.toList()));
}
String userstatus = request.getParameter("userstatus");
if (StringUtils.isNotBlank(userstatus)) {
param.setUserstatus(userstatus);
}
String adjustItem = request.getParameter("adjustItem");
if (StringUtils.isNotBlank(adjustItem)) {
param.setAdjustItem(adjustItem);
}
String adjustReason = request.getParameter("adjustReason");
if (StringUtils.isNotBlank(adjustReason)) {
param.setAdjustReason(adjustReason);
}
String effectiveTime = request.getParameter("effectiveTime");
if (StringUtils.isNotBlank(effectiveTime)) {
List<Date> collect = Arrays.stream(effectiveTime.split(",")).map(time -> SalaryDateUtil.parse(time, SalaryDateUtil.DATE_FORMATTER_PATTERN)).collect(Collectors.toList());
param.setEffectiveTime(collect);
}
String operateTime = request.getParameter("operateTime");
if (StringUtils.isNotBlank(operateTime)) {
List<Date> collect = Arrays.stream(operateTime.split(",")).map(time -> SalaryDateUtil.parse(time, SalaryDateUtil.DATE_FORMATTER_PATTERN)).collect(Collectors.toList());
param.setOperateTime(collect);
}
String operatorIds = request.getParameter("operatorIds");
if (StringUtils.isNotBlank(operatorIds)) {
param.setOperatorIds(Arrays.stream(operatorIds.split(",")).map(Long::valueOf).collect(Collectors.toList()));
}
String description = request.getParameter("description");
if (StringUtils.isNotBlank(description)) {
param.setUserstatus(description);
}
return param;
}
/******** 薪资项目调整记录 end ***********************************************************************************************/
/******** 个税扣缴义务人调整记录 start ***********************************************************************************************/
/**
* 个税扣缴义务人调整记录列表
*
* @param queryParam
* @return
*/
@POST
@Path("/adjustRecord/taxAgentList")
@Produces(MediaType.APPLICATION_JSON)
public String taxAgentList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody TaxAgentAdjustRecordQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<TaxAgentAdjustRecordQueryParam, PageInfo<TaxAgentAdjustRecordListDTO>>().run(getSalaryArchiveTaxAgentWrapper(user)::adjustRecordList, queryParam);
}
/**
* 单个档案的个税扣缴义务人调整记录列表
*
* @param queryParam
* @return
*/
@POST
@Path("/adjustRecord/singleTaxAgentList")
@Produces(MediaType.APPLICATION_JSON)
public String SingleTaxAgentAdjustRecordList(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SingleTaxAgentAdjustRecordQueryParam queryParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SingleTaxAgentAdjustRecordQueryParam, PageInfo<SingleTaxAgentAdjustRecordListDTO>>().run(getSalaryArchiveTaxAgentWrapper(user)::singleTaxAgentAdjustRecordList, queryParam);
}
/**
* 导出个税扣缴义务人调整记录列表
*
* @return
*/
@GET
@Path("/adjustRecord/exportTaxAgentList")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response exportTaxAgentList(@Context HttpServletRequest request, @Context HttpServletResponse response) {
User user = HrmUserVarify.getUser(request, response);
TaxAgentAdjustRecordQueryParam param =new TaxAgentAdjustRecordQueryParam();
XSSFWorkbook workbook = getSalaryArchiveTaxAgentWrapper(user).exportAdjustRecordList(param);
String time = LocalDate.now().toString();
String fileName = "个税扣缴义务人调整记录" + time;
try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
StreamingOutput output = outputStream -> {
workbook.write(outputStream);
outputStream.flush();
};
response.setContentType("application/octet-stream");
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
}
/******** 个税扣缴义务人调整记录 end ***********************************************************************************************/
}

View File

@ -4,9 +4,11 @@ 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.dto.SingleSalaryItemAdjustRecordListDTO;
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.param.SingleSalaryItemAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveItemPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.enums.SalaryUserStatusEnum;
@ -15,7 +17,11 @@ 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.engine.salary.util.page.PageInfo;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import weaver.hrm.User;
@ -37,7 +43,7 @@ public class SalaryArchiveItemWrapper extends Service {
private SalaryArchiveItemService getSalaryArchiveItemService(User user) {
return (SalaryArchiveItemService) ServiceUtil.getService(SalaryArchiveItemServiceImpl.class, user);
}
private ExecutorService taskExecutor;
@ -168,15 +174,16 @@ public class SalaryArchiveItemWrapper extends Service {
* @param queryParam
* @return
*/
public List<SalaryItemAdjustRecordListDTO> adjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) {
public PageInfo<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);
PageInfo<SalaryItemAdjustRecordListDTO> list = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(queryParam, salaryItemIds);
List<SalaryItemAdjustRecordListDTO> listResult = list.getList();
//获取上次更改的记录
list.forEach(m -> {
listResult.forEach(m -> {
if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
listAll.removeIf(a -> a.getId().equals(m.getId()));
}
@ -196,87 +203,71 @@ public class SalaryArchiveItemWrapper extends Service {
* @param queryParam
* @return
*/
// public WeaTable<SingleSalaryItemAdjustRecordListDTO> singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam) {
// if (queryParam.getSalaryArchiveId() == null) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
// }
// // 获取所有可被引用的薪资项目
// List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
// List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
//
// SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam();
// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
// PageInfo<SalaryItemAdjustRecordListDTO> page = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(adjustRecordQueryParam, salaryItemIds);
//
// PageInfo<SingleSalaryItemAdjustRecordListDTO> listPage = new PageInfo<SingleSalaryItemAdjustRecordListDTO>();
//
// List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
// List<SalaryItemAdjustRecordListDTO> list = page.getList();
// 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() : "");
//
// m.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
//
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecordList = new SingleSalaryItemAdjustRecordListDTO();
// BeanUtils.copyProperties(m, singleSalaryItemAdjustRecordList);
// resultList.add(singleSalaryItemAdjustRecordList);
// });
// listPage.setList(resultList);
//
// WeaTable<SingleSalaryItemAdjustRecordListDTO> weaTable = FormatManager.<SingleSalaryItemAdjustRecordListDTO>getInstance()
// .genTable(SingleSalaryItemAdjustRecordListDTO.class, listPage);
// weaTable.setModule("hrmsalary");
// List<Long> salaryItemPageIds = listPage.getList().stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList());
// List<SalaryArchiveItemPO> effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds);
// // 行记录按钮权限控制
// for (int i = 0; i < listPage.getList().size(); i++) {
// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = (SingleSalaryItemAdjustRecordListDTO)listPage.getList().get(i);
// Optional<SalaryArchiveItemPO> optional = effectiveSalaryItems.stream().filter(f -> f.getSalaryItemId().equals(singleSalaryItemAdjustRecord.getSalaryItemId())).findFirst();
// Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
// 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;
// }
public PageInfo<SingleSalaryItemAdjustRecordListDTO> singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam) {
if (queryParam.getSalaryArchiveId() == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
}
// 获取所有可被引用的薪资项目
List<SalaryItemPO> salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems();
List<Long> salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam();
BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
//所有调整记录
List<SalaryItemAdjustRecordListDTO> listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds);
//操作记录
//根据条件分页查询调整记录
PageInfo<SalaryItemAdjustRecordListDTO> adjustlistByParamPage = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(adjustRecordQueryParam, salaryItemIds);
List<SalaryItemAdjustRecordListDTO> adjustPageList = adjustlistByParamPage.getList();
List<SingleSalaryItemAdjustRecordListDTO> resultList = Lists.newArrayList();
adjustPageList.forEach(m -> {
if (CollectionUtils.isNotEmpty(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.setAdjustReason(SalaryArchiveItemAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecordList = new SingleSalaryItemAdjustRecordListDTO();
BeanUtils.copyProperties(m, singleSalaryItemAdjustRecordList);
resultList.add(singleSalaryItemAdjustRecordList);
});
List<Long> salaryItemPageIds = resultList.stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList());
List<SalaryArchiveItemPO> effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds);
// 行记录按钮权限控制
for (int i = 0; i < resultList.size(); i++) {
SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = resultList.get(i);
Optional<SalaryArchiveItemPO> optional = effectiveSalaryItems.stream().filter(f -> f.getSalaryItemId().equals(singleSalaryItemAdjustRecord.getSalaryItemId())).findFirst();
Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null);
if (effectiveDate != null && singleSalaryItemAdjustRecord.getEffectiveTime().before(effectiveDate)) {
singleSalaryItemAdjustRecord.setCanOperator(Boolean.FALSE);
} else {
singleSalaryItemAdjustRecord.setCanOperator(Boolean.TRUE);
}
}
PageInfo<SingleSalaryItemAdjustRecordListDTO> listPage = new PageInfo<SingleSalaryItemAdjustRecordListDTO>(resultList, SingleSalaryItemAdjustRecordListDTO.class);
listPage.setTotal(adjustlistByParamPage.getTotal());
listPage.setPageNum(adjustlistByParamPage.getPageNum());
listPage.setPageSize(adjustlistByParamPage.getPageSize());
return listPage;
}
/**
* 导出薪资项目调整记录列表
*
* @param queryParam
* @return
*/
public XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) {
return getSalaryArchiveItemService(user).exportAdjustRecordList(queryParam);
}
}

View File

@ -7,14 +7,23 @@ import com.api.browser.util.ConditionFactory;
import com.api.browser.util.ConditionType;
import com.engine.core.impl.Service;
import com.engine.salary.entity.salaryarchive.dto.SalaryArchiveTaxAgentFormDTO;
import com.engine.salary.entity.salaryarchive.dto.SingleTaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.dto.TaxAgentAdjustRecordListDTO;
import com.engine.salary.entity.salaryarchive.param.SalaryArchiveTaxAgentSaveParam;
import com.engine.salary.entity.salaryarchive.param.SingleTaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.param.TaxAgentAdjustRecordQueryParam;
import com.engine.salary.entity.salaryarchive.po.SalaryArchiveTaxAgentPO;
import com.engine.salary.entity.taxrate.TaxAgent;
import com.engine.salary.enums.UserStatusEnum;
import com.engine.salary.enums.salaryarchive.SalaryArchiveTaxAgentAdjustReasonEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalaryArchiveTaxAgentService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
import com.google.common.collect.Lists;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
import java.util.*;
@ -192,121 +201,97 @@ public class SalaryArchiveTaxAgentWrapper extends Service {
* @param queryParam
* @return
*/
// public Map<String,Object> adjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
// Page<TaxAgentAdjustRecordListDTO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
// page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(page, queryParam, tenantKey);
//
// Page<TaxAgentAdjustRecordListDTO> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
// // 个税扣缴义务人
// Collection<TaxAgentListDTO> taxAgentList = taxAgentService.findAll(tenantKey);
// List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build());
// List<TaxAgentAdjustRecordListDTO> list = page.getRecords();
// list.stream().forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
// listAll.removeIf(a -> a.getId().equals(m.getId()));
// }
// Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
// Optional<TaxAgentListDTO> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
// Optional<TaxAgentListDTO> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
// m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
//
// m.setEmployeeStatus(SalaryUserStatusEnum.getDefaultLabelByValue(m.getEmployeeStatus()));
//
// m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
// });
// listPage.setRecords(list);
// WeaTable<TaxAgentAdjustRecordListDTO> weaTable = FormatManager.<TaxAgentAdjustRecordListDTO>getInstance()
// .genTable(TaxAgentAdjustRecordListDTO.class, listPage);
// weaTable.setModule("hrmsalary");
// return weaTable;
// }
//
// /**
// * 单个档案的个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @param employeeId
// * @param tenantKey
// * @return
// */
// public WeaTable<SingleTaxAgentAdjustRecordListDTO> singleTaxAgentAdjustRecordList(SingleTaxAgentAdjustRecordQueryParam queryParam) {
// if (queryParam.getSalaryArchiveId() == null) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
// }
//
// Page<TaxAgentAdjustRecordListDTO> page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true);
// TaxAgentAdjustRecordQueryParam adjustRecordQueryParam = new TaxAgentAdjustRecordQueryParam();
// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
// page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(page, adjustRecordQueryParam, tenantKey);
//
// Page<SingleTaxAgentAdjustRecordListDTO> listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount());
// // 个税扣缴义务人
// Collection<TaxAgentListDTO> taxAgentList = taxAgentService.findAll(tenantKey);
// List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build(), tenantKey);
// List<TaxAgentAdjustRecordListDTO> list = page.getRecords();
// List<SingleTaxAgentAdjustRecordListDTO> resultList = Lists.newArrayList();
// list.forEach(m -> {
// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
// listAll.removeIf(a -> a.getId().equals(m.getId()));
// }
// Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
// Optional<TaxAgentListDTO> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
// Optional<TaxAgentListDTO> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
// m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
//
// m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
//
//
// SingleTaxAgentAdjustRecordListDTO singleTaxAgentAdjustRecordList = new SingleTaxAgentAdjustRecordListDTO();
// BeanUtils.copyProperties(m, singleTaxAgentAdjustRecordList);
// resultList.add(singleTaxAgentAdjustRecordList);
// });
// listPage.setRecords(resultList);
// WeaTable<SingleTaxAgentAdjustRecordListDTO> weaTable = FormatManager.<SingleTaxAgentAdjustRecordListDTO>getInstance()
// .genTable(SingleTaxAgentAdjustRecordListDTO.class, listPage);
// weaTable.setModule("hrmsalary");
// // 获取当前已生效
// SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = salaryArchiveTaxAgentService.getEffectiveTaxAgent(queryParam.getSalaryArchiveId(), tenantKey);
// LocalDate effectiveDate = (salaryArchiveTaxAgent == null ? null : salaryArchiveTaxAgent.getEffectiveTime());
//
// // 行记录按钮权限控制
// for (int i = 0; i < listPage.getRecords().size(); i++) {
// SingleTaxAgentAdjustRecordListDTO singleTaxAgentAdjustRecord = listPage.getRecords().get(i);
// List<Permission> permissions = weaTable.getOperatesPermission().get(i);
// for (int j = 0; j < permissions.size(); j++) {
// Permission permission = permissions.get(j);
// if (effectiveDate != null && singleTaxAgentAdjustRecord.getEffectiveTime().isBefore(effectiveDate)) {
// permission.setVisible(false);
// permission.setDisabled(true);
// }
// if (j > 0 && singleTaxAgentAdjustRecord.getEffectiveTime().equals(effectiveDate)) {
// permission.setVisible(false);
// permission.setDisabled(false);
// }
// }
// }
// // 在外展示操作按钮
// weaTable.getOperates().get(0).setOuter(Boolean.TRUE);
// return weaTable;
// }
//
// /**
// * 导出个税扣缴义务人调整记录列表
// *
// * @param queryParam
// * @return
// */
// public Map<String, Object> exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
// // 构建异步导出参数
// Map<String, Object> map = salaryBatchService.buildeExportParam("exportSalaryArchiveTaxAgentAdjustRecord");
//
// String username = UserContext.getCurrentUser().getUsername();
// String eteamsId = TenantRpcContext.getEteamsId();
// salaryArchiveTaxAgentService.exportAdjustRecordList(map, username, eteamsId, queryParam);
// return map;
// }
public PageInfo<TaxAgentAdjustRecordListDTO> adjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
// 个税扣缴义务人
Collection<TaxAgent> taxAgentList = taxAgentService.findAll();
List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build());
PageInfo<TaxAgentAdjustRecordListDTO> page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(queryParam);
List<TaxAgentAdjustRecordListDTO> list = page.getList();
list.forEach(m -> {
if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
listAll.removeIf(a -> a.getId().equals(m.getId()));
}
Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
Optional<TaxAgent> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
Optional<TaxAgent> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
m.setEmployeeStatus(UserStatusEnum.getDefaultLabelByValue(Integer.parseInt(m.getEmployeeStatus())));
m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
});
return page;
}
/**
* 单个档案的个税扣缴义务人调整记录列表
*
* @param queryParam
* @return
*/
public PageInfo<SingleTaxAgentAdjustRecordListDTO> singleTaxAgentAdjustRecordList(SingleTaxAgentAdjustRecordQueryParam queryParam) {
if (queryParam.getSalaryArchiveId() == null) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空"));
}
TaxAgentAdjustRecordQueryParam adjustRecordQueryParam = new TaxAgentAdjustRecordQueryParam();
BeanUtils.copyProperties(queryParam, adjustRecordQueryParam);
PageInfo<TaxAgentAdjustRecordListDTO> page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(adjustRecordQueryParam);
// 个税扣缴义务人
Collection<TaxAgent> taxAgentList = taxAgentService.findAll();
List<TaxAgentAdjustRecordListDTO> listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build());
List<TaxAgentAdjustRecordListDTO> list = page.getList();
List<SingleTaxAgentAdjustRecordListDTO> resultList = Lists.newArrayList();
list.forEach(m -> {
if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) {
listAll.removeIf(a -> a.getId().equals(m.getId()));
}
Optional<TaxAgentAdjustRecordListDTO> optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst();
m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : "");
Optional<TaxAgent> optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst();
m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : "");
Optional<TaxAgent> optionalAfter = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustAfter())).findFirst();
m.setAdjustAfter(optionalAfter.isPresent() ? optionalAfter.get().getName() : "");
m.setAdjustReason(SalaryArchiveTaxAgentAdjustReasonEnum.getDefaultLabelByValue(m.getAdjustReason()));
SingleTaxAgentAdjustRecordListDTO singleTaxAgentAdjustRecordList = new SingleTaxAgentAdjustRecordListDTO();
BeanUtils.copyProperties(m, singleTaxAgentAdjustRecordList);
resultList.add(singleTaxAgentAdjustRecordList);
});
// 获取当前已生效
SalaryArchiveTaxAgentPO salaryArchiveTaxAgent = salaryArchiveTaxAgentService.getEffectiveTaxAgent(queryParam.getSalaryArchiveId());
Date effectiveDate = (salaryArchiveTaxAgent == null ? null : salaryArchiveTaxAgent.getEffectiveTime());
// 行记录按钮权限控制
for (int i = 0; i < resultList.size(); i++) {
SingleTaxAgentAdjustRecordListDTO singleTaxAgentAdjustRecord = resultList.get(i);
if (effectiveDate != null && singleTaxAgentAdjustRecord.getEffectiveTime().before(effectiveDate)) {
singleTaxAgentAdjustRecord.setCanOperator(Boolean.FALSE);
} else {
singleTaxAgentAdjustRecord.setCanOperator(Boolean.TRUE);
}
}
PageInfo<SingleTaxAgentAdjustRecordListDTO> listPage = new PageInfo<SingleTaxAgentAdjustRecordListDTO>(resultList, SingleTaxAgentAdjustRecordListDTO.class);
listPage.setTotal(page.getTotal());
listPage.setPageNum(page.getPageNum());
listPage.setPageSize(page.getPageSize());
return listPage;
}
/**
* 导出个税扣缴义务人调整记录列表
*
* @param queryParam
* @return
*/
public XSSFWorkbook exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) {
return salaryArchiveTaxAgentService.exportAdjustRecordList(queryParam);
}
}