线下对比表头改造成分组的样式
This commit is contained in:
parent
2c12b10171
commit
97a5d4ab91
|
|
@ -23,7 +23,6 @@ import com.engine.salary.enums.salaryaccounting.LockStatusEnum;
|
|||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.page.Column;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
|
|
@ -86,36 +85,77 @@ public class SalaryAcctResultBO {
|
|||
// }
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 构建薪资核算结果列表的表头(线下对比)
|
||||
*
|
||||
* @param salarySobItemAggregateDTO
|
||||
* @return
|
||||
*/
|
||||
public static List<Column> buildTableColumns4ComparisonResult(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Set<Long> excludeSalaryItemIds) {
|
||||
List<Column> columns = Lists.newArrayList();
|
||||
public static List<WeaTableColumnGroup> buildTableColumns4ComparisonResult(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Set<Long> excludeSalaryItemIds) {
|
||||
List<WeaTableColumnGroup> columns = Lists.newArrayList();
|
||||
// 员工信息字段
|
||||
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) {
|
||||
columns.add(new Column(salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId(), salarySobEmpFieldDTO.getFieldId()));
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId(), salarySobEmpFieldDTO.getFieldId()));
|
||||
}
|
||||
// 薪资项目分组下的薪资项目
|
||||
for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) {
|
||||
if (CollectionUtils.isEmpty(salarySobItemGroupDTO.getItems())) {
|
||||
continue;
|
||||
}
|
||||
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
|
||||
if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
columns.add(new Column(salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId()));
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId()));
|
||||
}
|
||||
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
|
||||
columns.add(weaTableColumnWapper);
|
||||
}
|
||||
// 没有分类的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
|
||||
if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
columns.add(new Column(salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId()));
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId()));
|
||||
}
|
||||
return columns;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建薪资核算结果列表的表头(线下对比)
|
||||
*
|
||||
* @param salarySobItemAggregateDTO
|
||||
* @return
|
||||
*/
|
||||
public static List<WeaTableColumnGroup> buildTableColumns4ComparisonResultByGroup(SalarySobItemAggregateDTO salarySobItemAggregateDTO, Set<Long> excludeSalaryItemIds) {
|
||||
List<WeaTableColumnGroup> columns = Lists.newArrayList();
|
||||
// 员工信息字段
|
||||
for (SalarySobEmpFieldDTO salarySobEmpFieldDTO : salarySobItemAggregateDTO.getEmpFields()) {
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobEmpFieldDTO.getFieldName(), salarySobEmpFieldDTO.getFieldId(), salarySobEmpFieldDTO.getFieldId()));
|
||||
}
|
||||
// 薪资项目分组下的薪资项目
|
||||
for (SalarySobItemGroupDTO salarySobItemGroupDTO : salarySobItemAggregateDTO.getItemGroups()) {
|
||||
if (CollectionUtils.isEmpty(salarySobItemGroupDTO.getItems())) {
|
||||
continue;
|
||||
}
|
||||
List<WeaTableColumnGroup> childrenColumns = Lists.newArrayList();
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemGroupDTO.getItems()) {
|
||||
if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
childrenColumns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId()));
|
||||
}
|
||||
WeaTableColumnGroup weaTableColumnWapper = new WeaTableColumnGroup("150", salarySobItemGroupDTO.getName(), String.valueOf(salarySobItemGroupDTO.getId()), childrenColumns);
|
||||
columns.add(weaTableColumnWapper);
|
||||
}
|
||||
// 没有分类的薪资项目
|
||||
for (SalarySobItemDTO salarySobItemDTO : salarySobItemAggregateDTO.getItems()) {
|
||||
if (excludeSalaryItemIds.contains(salarySobItemDTO.getSalaryItemId())) {
|
||||
continue;
|
||||
}
|
||||
columns.add(new WeaTableColumnGroup("150", salarySobItemDTO.getName(), "" + salarySobItemDTO.getSalaryItemId(), "" + salarySobItemDTO.getSalaryItemId()));
|
||||
}
|
||||
return columns;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.engine.salary.entity.salaryacct.dto;
|
||||
|
||||
import com.engine.salary.util.page.Column;
|
||||
import com.engine.salary.component.WeaTableColumnGroup;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
|
|
@ -25,7 +25,7 @@ import java.util.Map;
|
|||
public class SalaryComparisonResultListDTO {
|
||||
|
||||
//列表的表头
|
||||
private List<Column> weaTableColumns;
|
||||
private List<WeaTableColumnGroup> weaTableColumns;
|
||||
|
||||
//列表数据
|
||||
private PageInfo<Map<String, Object>> data;
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ import com.engine.salary.util.SalaryI18nUtil;
|
|||
import com.engine.salary.util.excel.ExcelParseHelper;
|
||||
import com.engine.salary.util.excel.ExcelSupport;
|
||||
import com.engine.salary.util.excel.ExcelUtilPlus;
|
||||
import com.engine.salary.util.page.Column;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import com.engine.salary.wrapper.SalarySobItemWrapper;
|
||||
import com.google.common.collect.Lists;
|
||||
|
|
@ -695,16 +694,30 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// 查询薪资项目
|
||||
List<SalaryItemPO> salaryItemPOS = getSalarySobItemService(user).listBySalarySobId4SalaryItem(salaryAcctRecordPO.getSalarySobId());
|
||||
Set<String> salaryItemIds = SalaryEntityUtil.properties(salaryItemPOS, salaryItemPO -> "" + salaryItemPO.getId());
|
||||
for (Column weaTableColumn : salaryComparisonResultListDTO.getWeaTableColumns()) {
|
||||
for (WeaTableColumnGroup weaTableColumnGroup : salaryComparisonResultListDTO.getWeaTableColumns()) {
|
||||
// 员工信息字段
|
||||
if (employeeFieldCodeSet.contains(weaTableColumn.getKey())) {
|
||||
headerList.add(weaTableColumn.getTitle());
|
||||
}
|
||||
// 薪资项目的表头
|
||||
if (salaryItemIds.contains(weaTableColumn.getKey())) {
|
||||
headerList.add(weaTableColumn.getTitle() + " (线上值)");
|
||||
headerList.add(weaTableColumn.getTitle() + " (线下值)");
|
||||
if (employeeFieldCodeSet.contains(weaTableColumnGroup.getColumn())) {
|
||||
headerList.add(weaTableColumnGroup.getText());
|
||||
} else {
|
||||
// 薪资项目的表头
|
||||
List<WeaTableColumnGroup> childrenList = weaTableColumnGroup.getChildren();
|
||||
if (CollectionUtils.isEmpty(childrenList)) {
|
||||
// 是否是无分类
|
||||
if (salaryItemIds.contains(weaTableColumnGroup.getColumn())) {
|
||||
headerList.add(weaTableColumnGroup.getText() + " (线上值)");
|
||||
headerList.add(weaTableColumnGroup.getText() + " (线下值)");
|
||||
}
|
||||
} else {
|
||||
for (WeaTableColumnGroup children : childrenList) {
|
||||
if (salaryItemIds.contains(children.getColumn())) {
|
||||
headerList.add(children.getText() + " (线上值)");
|
||||
headerList.add(children.getText() + " (线下值)");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
List<Map<String, Object>> resultMapList = salaryComparisonResultListDTO.getData().getList();
|
||||
|
|
@ -713,16 +726,28 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
rows.add(headerList);
|
||||
for (Map<String, Object> map : resultMapList) {
|
||||
List<Object> row = Lists.newArrayList();
|
||||
for (Column weaTableColumn : salaryComparisonResultListDTO.getWeaTableColumns()) {
|
||||
for (WeaTableColumnGroup weaTableColumnGroup : salaryComparisonResultListDTO.getWeaTableColumns()) {
|
||||
// 员工信息字段的值
|
||||
if (employeeFieldCodeSet.contains(weaTableColumn.getKey())) {
|
||||
row.add(map.get(weaTableColumn.getKey()));
|
||||
if (employeeFieldCodeSet.contains(weaTableColumnGroup.getColumn())) {
|
||||
row.add(map.get(weaTableColumnGroup.getColumn()));
|
||||
}
|
||||
// 薪资项目的值
|
||||
if (salaryItemIds.contains(weaTableColumn.getKey())) {
|
||||
Map tempMap = (Map) map.getOrDefault(weaTableColumn.getKey(), Collections.emptyMap());
|
||||
row.add(tempMap.get("acctResultValue"));
|
||||
row.add(tempMap.get("excelResultValue"));
|
||||
List<WeaTableColumnGroup> childrenList = weaTableColumnGroup.getChildren();
|
||||
if (CollectionUtils.isEmpty(childrenList)) {
|
||||
// 是否是无分类
|
||||
if (salaryItemIds.contains(weaTableColumnGroup.getColumn())) {
|
||||
Map tempMap = (Map) map.getOrDefault(weaTableColumnGroup.getColumn(), Collections.emptyMap());
|
||||
row.add(tempMap.get("acctResultValue"));
|
||||
row.add(tempMap.get("excelResultValue"));
|
||||
}
|
||||
} else {
|
||||
for (WeaTableColumnGroup children : childrenList) {
|
||||
if (salaryItemIds.contains(children.getColumn())) {
|
||||
Map tempMap = (Map) map.getOrDefault(children.getColumn(), Collections.emptyMap());
|
||||
row.add(tempMap.get("acctResultValue"));
|
||||
row.add(tempMap.get("excelResultValue"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
rows.add(row);
|
||||
|
|
@ -775,12 +800,37 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
for (SalarySobItemDTO item : salarySobItemAggregateDTO.getItems()) {
|
||||
headerList.add(item.getName());
|
||||
}
|
||||
|
||||
|
||||
// 无分类薪资项目id
|
||||
List<String> noGroupItemIds = salarySobItemAggregateDTO.getItems().stream().map(dto -> String.valueOf(dto.getSalaryItemId())).collect(Collectors.toList());
|
||||
// 查询列表的表头
|
||||
List<WeaTableColumnGroup> weaTableColumns = listWeaTableColumn(salaryAcctRecordPO);
|
||||
List<Object> finalWeaTableColumns = new ArrayList<>();
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(85429, "姓名"), SalaryI18nUtil.getI18nLabel(85429, "姓名")));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人"), SalaryI18nUtil.getI18nLabel(86184, "个税扣缴义务人")));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", "部门", "部门"));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", "手机号", "手机号"));
|
||||
finalWeaTableColumns.add(new WeaTableColumnGroup("150", "工号", "工号"));
|
||||
for (WeaTableColumnGroup tableColumn : weaTableColumns) {
|
||||
WeaTableColumnGroup columnGroupItem = (WeaTableColumnGroup) tableColumn;
|
||||
if (columnGroupItem.getChildren() != null) {
|
||||
columnGroupItem.setChildren(columnGroupItem.getChildren());
|
||||
finalWeaTableColumns.add(columnGroupItem);
|
||||
} else if (noGroupItemIds.contains(columnGroupItem.getColumn())) {
|
||||
// 无分类
|
||||
finalWeaTableColumns.add(columnGroupItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
List<List<Object>> rows = new ArrayList<>();
|
||||
rows.add(headerList);
|
||||
rows.add(finalWeaTableColumns);
|
||||
String sheetName = "线下对比结果导入模板";
|
||||
|
||||
// return ExcelUtil.genWorkbookV2(rows, sheetName);
|
||||
return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
|
||||
// return ExcelUtilPlus.genWorkbookV2(rows, sheetName);
|
||||
return ExcelUtilPlus.genWorkbookWithChildTitleColumn(rows, sheetName, false);
|
||||
}
|
||||
|
||||
public Map<String, Object> importSalaryAcctResult(SalaryAcctImportParam param) {
|
||||
|
|
@ -804,8 +854,8 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
try {
|
||||
fileInputStream = ImageFileManager.getInputStreamById(Integer.parseInt(param.getImageId()));
|
||||
Sheet sheet = ExcelSupport.parseFile(fileInputStream, 0, EXCEL_TYPE_XLSX);
|
||||
map.put("headers", ExcelSupport.getSheetHeader(sheet, 0));
|
||||
map.put("list", ExcelParseHelper.parse2List(sheet, 1));
|
||||
map.put("headers", ExcelSupport.getSheetHeader(sheet, 1));
|
||||
map.put("list", ExcelParseHelper.parse2List(sheet, 2));
|
||||
return map;
|
||||
|
||||
} finally {
|
||||
|
|
@ -921,20 +971,20 @@ public class SalaryAcctExcelServiceImpl extends Service implements SalaryAcctExc
|
|||
// 表头
|
||||
// List<String> headers = ExcelSupport.getSheetHeader(sheet, 0);
|
||||
List<String> headers;
|
||||
if (StringUtils.equals("importSalaryAcctResult", importType)) {
|
||||
// if (StringUtils.equals("importSalaryAcctResult", importType)) {
|
||||
headers = ExcelSupport.getSheetHeader(sheet, 1);
|
||||
} else {
|
||||
headers = ExcelSupport.getSheetHeader(sheet, 0);
|
||||
}
|
||||
// } else {
|
||||
// headers = ExcelSupport.getSheetHeader(sheet, 0);
|
||||
// }
|
||||
|
||||
// 处理数值
|
||||
// List<Map<String, Object>> data = ExcelParseHelper.parse2Map(sheet, 1);
|
||||
List<Map<String, Object>> data;
|
||||
if (StringUtils.equals("importSalaryAcctResult", importType)) {
|
||||
// if (StringUtils.equals("importSalaryAcctResult", importType)) {
|
||||
data = ExcelParseHelper.parse2Map(sheet, 2, 1);
|
||||
} else {
|
||||
data = ExcelParseHelper.parse2Map(sheet, 1);
|
||||
}
|
||||
// } else {
|
||||
// data = ExcelParseHelper.parse2Map(sheet, 1);
|
||||
// }
|
||||
|
||||
if (CollectionUtils.isEmpty(headers)) {
|
||||
throw new RuntimeException("表头为空");
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.engine.salary.service.impl;
|
|||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.component.WeaTableColumnGroup;
|
||||
import com.engine.salary.encrypt.EncryptUtil;
|
||||
import com.engine.salary.entity.datacollection.DataCollectionEmployee;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctResultBO;
|
||||
|
|
@ -27,7 +28,6 @@ import com.engine.salary.service.*;
|
|||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import com.engine.salary.util.page.Column;
|
||||
import com.engine.salary.util.page.PageInfo;
|
||||
import com.engine.salary.util.page.SalaryPageUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
|
|
@ -173,7 +173,7 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary
|
|||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listByResultQueryParam(queryParam);
|
||||
if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) {
|
||||
// 构建薪资核算结果列表表头
|
||||
List<Column> weaTableColumns = SalaryAcctResultBO.buildTableColumns4ComparisonResult(salarySobItemAggregateDTO, Collections.emptySet());
|
||||
List<WeaTableColumnGroup> weaTableColumns = SalaryAcctResultBO.buildTableColumns4ComparisonResultByGroup(salarySobItemAggregateDTO, Collections.emptySet());
|
||||
// 构建列表数据
|
||||
// 返回结果
|
||||
return new SalaryComparisonResultListDTO().setWeaTableColumns(weaTableColumns).setData(new PageInfo<>());
|
||||
|
|
@ -246,7 +246,7 @@ public class SalaryComparisonResultServiceImpl extends Service implements Salary
|
|||
.collect(Collectors.toSet());
|
||||
}
|
||||
// 构建薪资核算结果列表表头
|
||||
List<Column> weaTableColumns = SalaryAcctResultBO.buildTableColumns4ComparisonResult(salarySobItemAggregateDTO, excludeSalaryItemIds);
|
||||
List<WeaTableColumnGroup> weaTableColumns = SalaryAcctResultBO.buildTableColumns4ComparisonResultByGroup(salarySobItemAggregateDTO, excludeSalaryItemIds);
|
||||
// 返回结果
|
||||
return new SalaryComparisonResultListDTO().setWeaTableColumns(weaTableColumns).setData(dtoPage);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -696,7 +696,7 @@ public class SalaryAcctController {
|
|||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String listComparisonResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryComparisonResultQueryParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryComparisonResultQueryParam, PageInfo<Map<String, Object>>>(user).run(getSalaryComparisonResultWrapper(user)::listPage, param);
|
||||
return new ResponseResult<SalaryComparisonResultQueryParam, Map<String, Object>>(user).run(getSalaryComparisonResultWrapper(user)::listPage, param);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import com.engine.salary.service.impl.SalaryComparisonResultServiceImpl;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -41,13 +42,16 @@ public class SalaryComparisonResultWrapper extends Service {
|
|||
* @param queryParam 列表查询条件
|
||||
* @return
|
||||
*/
|
||||
public PageInfo<Map<String, Object>> listPage(SalaryComparisonResultQueryParam queryParam) {
|
||||
public Map<String, Object> listPage(SalaryComparisonResultQueryParam queryParam) {
|
||||
// 查询薪资核算线下对比列表
|
||||
SalaryComparisonResultListDTO salaryComparisonResultListDTO = getSalaryComparisonResultService(user).listPageByParam(queryParam);
|
||||
|
||||
PageInfo<Map<String, Object>> pageInfo = salaryComparisonResultListDTO.getData();
|
||||
pageInfo.setColumns(salaryComparisonResultListDTO.getWeaTableColumns());
|
||||
|
||||
return pageInfo;
|
||||
Map<String, Object> datas = new HashMap<>();
|
||||
datas.put("pageInfo", pageInfo);
|
||||
datas.put("columns", salaryComparisonResultListDTO.getWeaTableColumns());
|
||||
|
||||
return datas;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue