diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java index fd7099dde..9b5953d1a 100644 --- a/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryarchive/dto/SingleSalaryItemAdjustRecordListDTO.java @@ -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; } diff --git a/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java b/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java index 98516c604..079cb5405 100644 --- a/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java +++ b/src/com/engine/salary/entity/salaryarchive/dto/SingleTaxAgentAdjustRecordListDTO.java @@ -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; + } diff --git a/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java index 87cfb9420..7afb346a0 100644 --- a/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java +++ b/src/com/engine/salary/entity/salaryarchive/param/SalaryItemAdjustRecordQueryParam.java @@ -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 effectiveTime; + private List effectiveTime; //操作日期 - private List operateTime; + private List operateTime; //操作人id private List operatorIds; diff --git a/src/com/engine/salary/enums/salaryarchive/SalaryArchiveTaxAgentAdjustReasonEnum.java b/src/com/engine/salary/enums/salaryarchive/SalaryArchiveTaxAgentAdjustReasonEnum.java index 04489e908..717040b32 100644 --- a/src/com/engine/salary/enums/salaryarchive/SalaryArchiveTaxAgentAdjustReasonEnum.java +++ b/src/com/engine/salary/enums/salaryarchive/SalaryArchiveTaxAgentAdjustReasonEnum.java @@ -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 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 optionalAdjustReason = Arrays.stream(SalaryArchiveTaxAgentAdjustReasonEnum.values()).filter(r->r.getValue().equals(value)).findFirst(); + return optionalAdjustReason.isPresent()? SalaryI18nUtil.getI18nLabel(optionalAdjustReason.get().getLabelId(), optionalAdjustReason.get().getDefaultLabel()):""; } } diff --git a/src/com/engine/salary/service/SalaryArchiveItemService.java b/src/com/engine/salary/service/SalaryArchiveItemService.java index b91feab36..3b514341e 100644 --- a/src/com/engine/salary/service/SalaryArchiveItemService.java +++ b/src/com/engine/salary/service/SalaryArchiveItemService.java @@ -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 salaryItemAdjustRecordListPage( SalaryItemAdjustRecordQueryParam queryParam, List salaryItemIds); @@ -88,10 +87,7 @@ public interface SalaryArchiveItemService { /** * 导出薪资项目的调整记录列表 * - * @param map - * @param username - * @param eteamsId * @param queryParam */ -// void exportAdjustRecordList(Map map, String username, String eteamsId, SalaryItemAdjustRecordQueryParam queryParam); + XSSFWorkbook exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam); } diff --git a/src/com/engine/salary/service/SalaryArchiveTaxAgentService.java b/src/com/engine/salary/service/SalaryArchiveTaxAgentService.java index 913edcfe2..ef1b72a5e 100644 --- a/src/com/engine/salary/service/SalaryArchiveTaxAgentService.java +++ b/src/com/engine/salary/service/SalaryArchiveTaxAgentService.java @@ -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 taxAgentAdjustRecordListPage(Page page, TaxAgentAdjustRecordQueryParam queryParam); + PageInfo taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam); /** * 个税扣缴义务人的调整记录 @@ -77,10 +78,7 @@ public interface SalaryArchiveTaxAgentService { /** * 导出-个税扣缴义务人的调整记录列表 * - * @param map - * @param username - * @param eteamsId * @param queryParam */ -// void exportAdjustRecordList(Map map, String username, String eteamsId, TaxAgentAdjustRecordQueryParam queryParam); + XSSFWorkbook exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam); } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java index 979129748..e51396451 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveItemServiceImpl.java @@ -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 map, String username, String eteamsId, SalaryItemAdjustRecordQueryParam queryParam) { -// List 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 salaryItemList = getCanAdjustSalaryItems(currentTenantKey); -// List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); -// // 获取记录 -// List list = salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds, currentTenantKey); -// List 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 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> rows = new ArrayList<>(); -// for (SalaryItemAdjustRecordListDTO dto : list) { -// List 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 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 headerList = new ArrayList<>(Arrays.asList(header)); + + // 3.表数据 + // 获取所有可被引用的薪资项目 + List salaryItemList = getCanAdjustSalaryItems(); + List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + // 获取记录 + List list = salaryArchiveItemMapper.salaryItemAdjustRecordList(queryParam, salaryItemIds); + List 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 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> rows = new ArrayList<>(); + for (SalaryItemAdjustRecordListDTO dto : list) { + List 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); + } } diff --git a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java index 4fb08bb7d..21248b880 100644 --- a/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java +++ b/src/com/engine/salary/service/impl/SalaryArchiveTaxAgentServiceImpl.java @@ -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 taxAgentAdjustRecordListPage(Page page, TaxAgentAdjustRecordQueryParam queryParam, String tenantKey) { -// salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(page, queryParam, tenantKey); -// return page; -// } + @Override + public PageInfo taxAgentAdjustRecordListPage(TaxAgentAdjustRecordQueryParam queryParam) { + PageUtil.start(queryParam.getCurrent(), queryParam.getPageSize()); + List taxAgentAdjustRecordListDTOS = salaryArchiveTaxAgentMapper.taxAgentAdjustRecordList(queryParam); + PageInfo pageInfo = new PageInfo(taxAgentAdjustRecordListDTOS, TaxAgentAdjustRecordListDTO.class); + return pageInfo; + } @Override public List taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) { @@ -189,11 +194,9 @@ public class SalaryArchiveTaxAgentServiceImpl extends Service implements SalaryA return StringUtils.EMPTY; } -// @Override -// public void exportAdjustRecordList(Map map, String username, String eteamsId, TaxAgentAdjustRecordQueryParam queryParam, Long currentEmployeeId, String currentTenantKey) { -// List 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) { diff --git a/src/com/engine/salary/util/SalaryDateUtil.java b/src/com/engine/salary/util/SalaryDateUtil.java index d652449d9..cf0e2d598 100644 --- a/src/com/engine/salary/util/SalaryDateUtil.java +++ b/src/com/engine/salary/util/SalaryDateUtil.java @@ -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; + } + + } diff --git a/src/com/engine/salary/web/SalaryArchiveController.java b/src/com/engine/salary/web/SalaryArchiveController.java index 42fbccf8c..1c1fbc9d1 100644 --- a/src/com/engine/salary/web/SalaryArchiveController.java +++ b/src/com/engine/salary/web/SalaryArchiveController.java @@ -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>().run(getSalaryArchiveItemWrapper(user)::adjustRecordList, queryParam); + return new ResponseResult>().run(getSalaryArchiveItemWrapper(user)::adjustRecordList, queryParam); } -// /** -// * 单个档案的薪资项目调整记录列表 -// * -// * @param queryParam -// * @return -// */ -// @PostMapping("/adjustRecord/singleSalaryItemList") -// @ApiOperation("单个档案的薪资项目调整记录列表") -// @WeaPermission -// public WeaResult> singleSalaryItemAdjustRecordList(@RequestBody SingleSalaryItemAdjustRecordQueryParam queryParam) { -// return WeaResult.success(salaryArchiveItemWrapper.singleSalaryItemAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } -// -// /** -// * 导出薪资项目调整记录列表 -// * -// * @param queryParam -// * @return -// */ -// @PostMapping("/adjustRecord/exportSalaryItemList") -// @ApiOperation("导出薪资项目调整记录列表") -// @WeaPermission -// public WeaResult> exportSalaryItemList(@RequestBody SalaryItemAdjustRecordQueryParam queryParam) { -// return WeaResult.success(salaryArchiveItemWrapper.exportAdjustRecordList(queryParam, UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } -// /******** 薪资项目调整记录 end ***********************************************************************************************/ -// -// /******** 个税扣缴义务人调整记录 start ***********************************************************************************************/ -// /** -// * 个税扣缴义务人调整记录列表的高级搜索 -// * -// * @return -// */ -// @GetMapping("/adjustRecord/getTaxAgentSearchCondition") -// @ApiOperation("个税扣缴义务人调整记录列表的高级搜索") -// @WeaPermission -// public WeaResult getTaxAgentSearchCondition() { -// return WeaResult.success(getSalaryArchiveTaxAgentWrapper(user).getAdjustRecordSearchCondition(UserContext.getCurrentEmployeeId(), TenantContext.getCurrentTenantKey())); -// } -// -// /** -// * 个税扣缴义务人调整记录列表 -// * -// * @param queryParam -// * @return -// */ -// @PostMapping("/adjustRecord/taxAgentList") -// @ApiOperation("个税扣缴义务人调整记录列表") -// @WeaPermission -// public WeaResult> 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> 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> 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>().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 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 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>().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>().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 ***********************************************************************************************/ } diff --git a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java index 2f094fc9d..765fd6cce 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveItemWrapper.java @@ -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 adjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) { + public PageInfo adjustRecordList(SalaryItemAdjustRecordQueryParam queryParam) { // 获取所有可被引用的薪资项目 List salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(); List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); List listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds); - List list = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(queryParam, salaryItemIds); + PageInfo list = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(queryParam, salaryItemIds); + List 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 singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam) { -// if (queryParam.getSalaryArchiveId() == null) { -// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空")); -// } -// // 获取所有可被引用的薪资项目 -// List salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(); -// List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); -// -// SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam(); -// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam); -// PageInfo page = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(adjustRecordQueryParam, salaryItemIds); -// -// PageInfo listPage = new PageInfo(); -// -// List listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds); -// List list = page.getList(); -// List resultList = Lists.newArrayList(); -// list.forEach(m -> { -// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { -// listAll.removeIf(a -> a.getId().equals(m.getId())); -// } -// Optional 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 weaTable = FormatManager.getInstance() -// .genTable(SingleSalaryItemAdjustRecordListDTO.class, listPage); -// weaTable.setModule("hrmsalary"); -// List salaryItemPageIds = listPage.getList().stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList()); -// List effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds); -// // 行记录按钮权限控制 -// for (int i = 0; i < listPage.getList().size(); i++) { -// SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = (SingleSalaryItemAdjustRecordListDTO)listPage.getList().get(i); -// Optional optional = effectiveSalaryItems.stream().filter(f -> f.getSalaryItemId().equals(singleSalaryItemAdjustRecord.getSalaryItemId())).findFirst(); -// Date effectiveDate = optional.map(SalaryArchiveItemPO::getEffectiveTime).orElse(null); -// List 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 exportAdjustRecordList(SalaryItemAdjustRecordQueryParam queryParam, Long employeeId, String tenantKey) { -// // 构建异步导出参数 -// Map 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 singleSalaryItemAdjustRecordList(SingleSalaryItemAdjustRecordQueryParam queryParam) { + if (queryParam.getSalaryArchiveId() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空")); + } + // 获取所有可被引用的薪资项目 + List salaryItemList = getSalaryArchiveItemService(user).getCanAdjustSalaryItems(); + List salaryItemIds = salaryItemList.stream().map(SalaryItemPO::getId).collect(Collectors.toList()); + + SalaryItemAdjustRecordQueryParam adjustRecordQueryParam = new SalaryItemAdjustRecordQueryParam(); + BeanUtils.copyProperties(queryParam, adjustRecordQueryParam); + + //所有调整记录 + List listAll = getSalaryArchiveItemService(user).salaryItemAdjustRecordList(SalaryItemAdjustRecordQueryParam.builder().build(), salaryItemIds); + + //操作记录 + //根据条件分页查询调整记录 + PageInfo adjustlistByParamPage = getSalaryArchiveItemService(user).salaryItemAdjustRecordListPage(adjustRecordQueryParam, salaryItemIds); + List adjustPageList = adjustlistByParamPage.getList(); + List resultList = Lists.newArrayList(); + adjustPageList.forEach(m -> { + if (CollectionUtils.isNotEmpty(listAll)) { + listAll.removeIf(a -> a.getId().equals(m.getId())); + } + Optional 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 salaryItemPageIds = resultList.stream().map(SingleSalaryItemAdjustRecordListDTO::getSalaryItemId).collect(Collectors.toList()); + List effectiveSalaryItems = getSalaryArchiveItemService(user).getEffectiveSalaryItems(queryParam.getSalaryArchiveId(), salaryItemPageIds); + // 行记录按钮权限控制 + for (int i = 0; i < resultList.size(); i++) { + SingleSalaryItemAdjustRecordListDTO singleSalaryItemAdjustRecord = resultList.get(i); + Optional 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 listPage = new PageInfo(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); + } } diff --git a/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java b/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java index 99d410aaa..e88ec02b4 100644 --- a/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java +++ b/src/com/engine/salary/wrapper/SalaryArchiveTaxAgentWrapper.java @@ -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 adjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) { -// Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true); -// page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(page, queryParam, tenantKey); -// -// Page listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount()); -// // 个税扣缴义务人 -// Collection taxAgentList = taxAgentService.findAll(tenantKey); -// List listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build()); -// List list = page.getRecords(); -// list.stream().forEach(m -> { -// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { -// listAll.removeIf(a -> a.getId().equals(m.getId())); -// } -// Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst(); -// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); -// Optional optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst(); -// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : ""); -// Optional 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 weaTable = FormatManager.getInstance() -// .genTable(TaxAgentAdjustRecordListDTO.class, listPage); -// weaTable.setModule("hrmsalary"); -// return weaTable; -// } -// -// /** -// * 单个档案的个税扣缴义务人调整记录列表 -// * -// * @param queryParam -// * @param employeeId -// * @param tenantKey -// * @return -// */ -// public WeaTable singleTaxAgentAdjustRecordList(SingleTaxAgentAdjustRecordQueryParam queryParam) { -// if (queryParam.getSalaryArchiveId() == null) { -// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空")); -// } -// -// Page page = new Page<>(queryParam.getCurrent(), queryParam.getPageSize(), true); -// TaxAgentAdjustRecordQueryParam adjustRecordQueryParam = new TaxAgentAdjustRecordQueryParam(); -// BeanUtils.copyProperties(queryParam, adjustRecordQueryParam); -// page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(page, adjustRecordQueryParam, tenantKey); -// -// Page listPage = new Page<>(page.getCurrent(), page.getSize(), page.getTotal(), page.isSearchCount()); -// // 个税扣缴义务人 -// Collection taxAgentList = taxAgentService.findAll(tenantKey); -// List listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build(), tenantKey); -// List list = page.getRecords(); -// List resultList = Lists.newArrayList(); -// list.forEach(m -> { -// if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { -// listAll.removeIf(a -> a.getId().equals(m.getId())); -// } -// Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst(); -// m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); -// Optional optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst(); -// m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : ""); -// Optional 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 weaTable = FormatManager.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 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 exportAdjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) { -// // 构建异步导出参数 -// Map map = salaryBatchService.buildeExportParam("exportSalaryArchiveTaxAgentAdjustRecord"); -// -// String username = UserContext.getCurrentUser().getUsername(); -// String eteamsId = TenantRpcContext.getEteamsId(); -// salaryArchiveTaxAgentService.exportAdjustRecordList(map, username, eteamsId, queryParam); -// return map; -// } + public PageInfo adjustRecordList(TaxAgentAdjustRecordQueryParam queryParam) { + + // 个税扣缴义务人 + Collection taxAgentList = taxAgentService.findAll(); + List listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build()); + PageInfo page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(queryParam); + List list = page.getList(); + list.forEach(m -> { + if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { + listAll.removeIf(a -> a.getId().equals(m.getId())); + } + Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst(); + m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); + Optional optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst(); + m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : ""); + Optional 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 singleTaxAgentAdjustRecordList(SingleTaxAgentAdjustRecordQueryParam queryParam) { + if (queryParam.getSalaryArchiveId() == null) { + throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(100425, "薪资档案id不能为空")); + } + + TaxAgentAdjustRecordQueryParam adjustRecordQueryParam = new TaxAgentAdjustRecordQueryParam(); + BeanUtils.copyProperties(queryParam, adjustRecordQueryParam); + PageInfo page = salaryArchiveTaxAgentService.taxAgentAdjustRecordListPage(adjustRecordQueryParam); + + // 个税扣缴义务人 + Collection taxAgentList = taxAgentService.findAll(); + List listAll = salaryArchiveTaxAgentService.taxAgentAdjustRecordList(TaxAgentAdjustRecordQueryParam.builder().build()); + List list = page.getList(); + List resultList = Lists.newArrayList(); + list.forEach(m -> { + if (!org.springframework.util.CollectionUtils.isEmpty(listAll)) { + listAll.removeIf(a -> a.getId().equals(m.getId())); + } + Optional optional = listAll.stream().filter(f -> f.getSalaryArchiveId().equals(m.getSalaryArchiveId())).findFirst(); + m.setAdjustBefore(optional.isPresent() ? optional.get().getAdjustAfter() : ""); + Optional optionalBefore = taxAgentList.stream().filter(t -> t.getId().toString().equals(m.getAdjustBefore())).findFirst(); + m.setAdjustBefore(optionalBefore.isPresent() ? optionalBefore.get().getName() : ""); + Optional 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 listPage = new PageInfo(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); + } }