核算结果导出

This commit is contained in:
钱涛 2022-05-05 14:10:19 +08:00
parent fafd206101
commit 231961663f
6 changed files with 37 additions and 33 deletions

View File

@ -89,11 +89,11 @@ public class SalaryAcctResultBO {
* @param salarySobItemAggregateDTO
* @return
*/
public static List<WeaTableColumn> buildTableColumns(SalarySobItemAggregateDTO salarySobItemAggregateDTO) {
List<WeaTableColumn> columns = Lists.newArrayList();
public static List<WeaTableColumnGroup> buildTableColumns(SalarySobItemAggregateDTO salarySobItemAggregateDTO) {
List<WeaTableColumnGroup> columns = Lists.newArrayList();
// 员工信息字段
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) {
columns.add(new WeaTableColumn("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId()));
}
// 薪资项目分组下的薪资项目
// 薪资项目分组下的薪资项目
@ -110,7 +110,7 @@ public class SalaryAcctResultBO {
}
// 没有分类的薪资项目
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
columns.add(new WeaTableColumn("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId()));
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId()));
}
return columns;
}

View File

@ -74,8 +74,8 @@ public class SalaryItemListDTO {
//公式内容
private String formulaContent;
@SalaryTableColumn(text = "个税申报表对应字段", width = "10%", column = "taxDeclarationColumn")
@TableTitle(title = "个税申报表对应字段",dataIndex = "taxDeclarationColumn",key = "taxDeclarationColumn")
// @SalaryTableColumn(text = "个税申报表对应字段", width = "10%", column = "taxDeclarationColumn")
// @TableTitle(title = "个税申报表对应字段",dataIndex = "taxDeclarationColumn",key = "taxDeclarationColumn")
private String taxDeclarationColumn;
//备注

View File

@ -1,6 +1,6 @@
package com.engine.salary.service;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctImportFieldDTO;
import com.engine.salary.entity.salaryacct.param.*;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
@ -43,7 +43,7 @@ public interface SalaryAcctExcelService {
*/
XSSFWorkbook exportSalaryAcctResult(SalaryAcctResultQueryParam queryParam);
List<WeaTableColumn> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO);
List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO);
/**
* 薪资核算导入时候薪资项目按取值方式分组

View File

@ -4,6 +4,7 @@ import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.biz.TaxAgentBiz;
import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.bo.SalaryAcctEmployeeBO;
@ -210,10 +211,13 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
if (Objects.isNull(salaryAcctRecordPO)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
}
// 查询列表的表头
List<WeaTableColumn> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
// excel导出的表头
String[] headers = weaTableColumns.stream()
List<WeaTableColumnGroup> headerColumnGroup = Lists.newArrayList();
// 查询列表的表头
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
parseHeader(headerColumnGroup, weaTableColumns);
// excel导出的表头
String[] headers = headerColumnGroup.stream()
.map(WeaTableColumn::getText)
.toArray(String[]::new);
List<Object> headerList = new ArrayList<>(Arrays.asList(headers));
@ -223,8 +227,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
List<List<Object>> rows = new ArrayList<>();
rows.add(headerList);
for (Map<String, Object> map : resultMapList) {
List<Object> row = Lists.newArrayListWithExpectedSize(weaTableColumns.size());
for (WeaTableColumn weaTableColumn : weaTableColumns) {
List<Object> row = Lists.newArrayListWithExpectedSize(headerColumnGroup.size());
for (WeaTableColumnGroup weaTableColumn : headerColumnGroup) {
row.add(map.getOrDefault(weaTableColumn.getColumn(), StringUtils.EMPTY));
}
rows.add(row);
@ -240,28 +244,29 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
* @param salaryAcctRecordPO 薪资核算记录
* @return
*/
public List<WeaTableColumn> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO) {
public List<WeaTableColumnGroup> listWeaTableColumn(SalaryAcctRecordPO salaryAcctRecordPO) {
// 查询薪资账套下的薪资项目+员工信息字段
SalarySobItemAggregateDTO salarySobItemAggregateDTO = getSalarySobItemService(user).getAggregateBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// 构建薪资核算结果列表表头
return SalaryAcctResultBO.buildTableColumns(salarySobItemAggregateDTO);
}
// /**
// * 解析表头
// *
// * @param headerList
// * @param weaTableColumns
// */
// private void parseHeader(List<WeaTableColumnWapper> headerList, List<WeaTableColumnWapper> weaTableColumns) {
// for (WeaTableColumnWapper weaTableColumnWapper : weaTableColumns) {
// if (CollectionUtils.isEmpty(weaTableColumnWapper.getChildren())) {
// headerList.add(weaTableColumnWapper);
// continue;
// }
// parseHeader(headerList, weaTableColumnWapper.getChildren());
// }
// }
/**
* 解析表头
*
* @param headerList
* @param weaTableColumns
*/
private void parseHeader(List<WeaTableColumnGroup> headerList, List<WeaTableColumnGroup> weaTableColumns) {
for (WeaTableColumnGroup weaTableColumnGroup : weaTableColumns) {
if (CollectionUtils.isEmpty(weaTableColumnGroup.getChildren())) {
headerList.add(weaTableColumnGroup);
continue;
}
parseHeader(headerList, weaTableColumnGroup.getChildren());
}
}
@Override
public SalaryAcctImportFieldDTO getImportField(Long salaryAcctRecordId) {
// 查询薪资核算记录

View File

@ -368,8 +368,7 @@ public class SalaryAcctController {
setSalaryAcctResultQueryParam(request, param);
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getSalaryAcctExcelWrapper(user).exportSalaryAcctResult(param);
String time = LocalDate.now().toString();
String fileName = "薪资核算结果" + time;
String fileName = "薪资核算结果" + LocalDate.now();
try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
} catch (UnsupportedEncodingException e) {

View File

@ -1,9 +1,9 @@
package com.engine.salary.wrapper;
import com.cloudstore.eccom.pc.table.WeaTableColumn;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.cache.SalaryCacheKey;
import com.engine.salary.component.WeaTableColumnGroup;
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
import com.engine.salary.entity.salaryacct.dto.ConsolidatedTaxDetailDTO;
import com.engine.salary.entity.salaryacct.dto.SalaryAcctProgressDTO;
@ -86,7 +86,7 @@ public class SalaryAcctResultWrapper extends Service {
PageInfo<Map<String, Object>> page = getSalaryAcctResultService(user).listPageByParam(queryParam);
// 构建薪资核算结果列表的表头
List<WeaTableColumn> columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO);
List<WeaTableColumnGroup> columns = getSalaryAcctExcelService(user).listWeaTableColumn(salaryAcctRecordPO);
Map<String,Object> datas = new HashMap<>();
datas.put("pageInfo", page);