宁波精华报表

This commit is contained in:
Harryxzy 2024-06-26 09:15:30 +08:00
parent f2ea1e983d
commit e35d5a6c71
2 changed files with 52 additions and 10 deletions

View File

@ -1317,6 +1317,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// 根据部门分类汇总
Map<String, List<Map<String, Object>>> resultGroup = SalaryEntityUtil.group2Map(resultMap, map -> Objects.isNull(map.getOrDefault("departmentId", "")) ? "" : map.getOrDefault("departmentId", "").toString());
LinkedHashMap<String, List<Map<String, Object>>> sortedGroupBy = new LinkedHashMap<>();
resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
resultGroup = sortedGroupBy;
Map<String, Map<String, Object>> sumResultByGroup = getSumResultByGroup(resultGroup, Collections.emptyList(), salaryItemList);
Map<Long, String> depMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAllDeptInfo(), DeptInfo::getId, DeptInfo::getName);
@ -1444,14 +1448,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
if (param.isYasjbfgzhzReport()) {
// 月按实际部分工资汇总表 根据部门分类汇总
resultGroup = SalaryEntityUtil.group2Map(resultMap, map ->
Objects.isNull(map.getOrDefault("departmentId", " ")) ? " " : map.getOrDefault("departmentId", " ").toString()
Objects.isNull(map.getOrDefault("departmentId", "0")) ? "0" : map.getOrDefault("departmentId", "0").toString()
);
LinkedHashMap<String, List<Map<String, Object>>> sortedGroupBy = new LinkedHashMap<>();
resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparingLong(Long::valueOf))).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
resultGroup = sortedGroupBy;
} else {
// 月发放工资分摊表 根据记账科目-记账部门分类汇总
resultGroup = SalaryEntityUtil.group2Map(resultMap, map ->
(Objects.isNull(map.getOrDefault(jzkmItemId.toString(), " ")) ? " " : map.getOrDefault(jzkmItemId.toString(), " ").toString()) + "-" +
(Objects.isNull(map.getOrDefault(jzbmItemId.toString(), " ")) ? " " : map.getOrDefault(jzbmItemId.toString(), " ").toString())
);
LinkedHashMap<String, List<Map<String, Object>>> sortedGroupBy = new LinkedHashMap<>();
resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
resultGroup = sortedGroupBy;
}
List<SalaryItemPO> numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList());
@ -1471,6 +1481,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// 获取部门信息
Map<String, String> depMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listAllDeptInfo(), dep -> dep.getId().toString(), DeptInfo::getName);
Map<String, Map<String, Object>> sumResultByGroup = getSumResultByGroup(resultGroupPage, Collections.emptyList(), numberItems);
// 排序
if (param.isYasjbfgzhzReport()) {
LinkedHashMap<String, Map<String, Object>> sortedGroupBy = new LinkedHashMap<>();
sumResultByGroup.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparingLong(Long::valueOf))).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
sumResultByGroup = sortedGroupBy;
} else {
LinkedHashMap<String, Map<String, Object>> sortedGroupBy = new LinkedHashMap<>();
sumResultByGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
sumResultByGroup = sortedGroupBy;
}
sumResultByGroup.forEach((key,value) -> {
if (param.isYasjbfgzhzReport()) {
value.put("departmentName", depMap.getOrDefault(key, ""));
@ -1712,7 +1735,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
List<SalaryAcctResultPO> resultPOList = listByAcctEmployeeIdsAndSalaryItemIds(lastMonthSalaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList()), Collections.singletonList(zwcjItemId));
List<Long> lastMonthSalaryAcctEmpIds = resultPOList.stream().filter(result -> result.getResultValue().equals(param.getZwcj())).map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList());
List<Long> finalLastMonthSalaryAcctEmpIds = lastMonthSalaryAcctEmpIds;
lastMonthSalaryAcctEmployeeList = lastMonthSalaryAcctEmployeeList.stream().filter(acctEmp -> finalLastMonthSalaryAcctEmpIds.contains(acctEmp.getId())).collect(Collectors.toList());
lastMonthSalaryAcctEmployeeList = lastMonthSalaryAcctEmployeeList.stream().filter(acctEmp -> finalLastMonthSalaryAcctEmpIds.contains(acctEmp.getId())).sorted(Comparator.comparing(SalaryAcctEmployeePO::getEmployeeId)).collect(Collectors.toList());
// 分页
PageInfo<SalaryAcctEmployeePO> lastMonthSalaryAcctEmployeePOPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), lastMonthSalaryAcctEmployeeList);
@ -1735,9 +1758,13 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
Map<String, List<Map<String, Object>>> resultGroup = SalaryEntityUtil.group2Map(resultMap, map ->
Objects.isNull(map.getOrDefault("employeeId", " ")) ? "" : map.getOrDefault("employeeId", " ").toString()
);
List<SalaryItemPO> numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList());
sumResultByGroup = getSumResultByGroup(resultGroup, Collections.emptyList(), numberItems);
LinkedHashMap<String, Map<String, Object>> sortedGroupBy = new LinkedHashMap<>();
sumResultByGroup.entrySet().stream().sorted(Map.Entry.comparingByKey(Comparator.comparingLong(Long::valueOf))).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
sumResultByGroup = sortedGroupBy;
// 获取这些员工上一年的薪资核算数据
LocalDateRange lastYearDateRange = LocalDateRange.builder().fromDate(SalaryDateUtil.localDateToDate(SalaryDateUtil.dateToLocalDate(dateRange.getFromDate()).minusYears(1)))
@ -2176,6 +2203,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
List<Long> salaryAcctRecordIds = salaryAcctRecordPOS.stream().map(SalaryAcctRecordPO::getId).collect(Collectors.toList());
// 查询薪资核算人员
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIds(salaryAcctRecordIds);
salaryAcctEmployeePOList = salaryAcctEmployeePOList.stream().sorted(Comparator.comparing(SalaryAcctEmployeePO::getEmployeeId)).collect(Collectors.toList());
// 分页
PageInfo<SalaryAcctEmployeePO> salaryAcctEmployeePOPageInfo = SalaryPageUtil.buildPage(param.getCurrent(), param.getPageSize(), salaryAcctEmployeePOList);
if (param.isExport() || param.isSum()) {
@ -2268,8 +2296,8 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
Long zffs1ItemId = baseBeanGetNumberProp(baseBean, "nbjhSalary", "sjjt_zffs1_item_id");
salaryItemIds.add(zffs1ItemId);
// 支付方式-2
Long zffs2ItemId = baseBeanGetNumberProp(baseBean, "nbjhSalary", "sjjt_zffs2_item_id");
salaryItemIds.add(zffs2ItemId);
// Long zffs2ItemId = baseBeanGetNumberProp(baseBean, "nbjhSalary", "sjjt_zffs2_item_id");
// salaryItemIds.add(zffs2ItemId);
// 查询薪资核算结果
@ -2284,6 +2312,10 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
Objects.isNull(map.getOrDefault("id", " ")) ? "" : map.getOrDefault("id", " ").toString()
);
LinkedHashMap<String, Map<String, Object>> sortedGroupBy = new LinkedHashMap<>();
resultGroup.entrySet().stream().sorted(Map.Entry.comparingByKey()).forEachOrdered(x -> sortedGroupBy.put(x.getKey(), x.getValue()));
resultGroup = sortedGroupBy;
List<SalaryItemPO> salaryItemList = getSalaryItemService(user).listByIds(salaryItemIds);
List<SalaryItemPO> numberItems = salaryItemList.stream().filter(item -> item.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList());
List<String> numberItemStrList = numberItems.stream().map(item -> item.getId().toString()).collect(Collectors.toList());
@ -2291,12 +2323,20 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// 获取人员信息
Map<Long, DataCollectionEmployee> empMap = SalaryEntityUtil.convert2Map(getSalaryEmployeeService(user).listByIds(salaryEmpIds), DataCollectionEmployee::getEmployeeId);
List<SalaryAcctResultPO> zffsResult = resultList.stream().filter(item -> salaryAcctEmpIds.contains(item.getSalaryAcctEmpId()) && item.getSalaryItemId().equals(zffs1ItemId)).collect(Collectors.toList());
Map<String, Date> zffsResultTimeMap = SalaryEntityUtil.convert2Map(zffsResult, po -> po.getSalaryAcctEmpId().toString(), SalaryAcctResultPO::getCreateTime);
// 获取薪资核算人员
resultGroup.forEach((key,value) -> {
DataCollectionEmployee employee = empMap.getOrDefault(Long.valueOf(value.getOrDefault("employeeId", "0").toString()), DataCollectionEmployee.builder().build());
value.put("rzsj", employee.getCompanystartdate());
// 支付方式
String zffs = ((value.get(zffs1ItemId.toString()) == null || StringUtils.isBlank(value.get(zffs1ItemId.toString()).toString())) ? " " : value.get(zffs1ItemId.toString()).toString()) +
((value.get(zffs2ItemId.toString()) == null || StringUtils.isBlank(value.get(zffs2ItemId.toString()).toString())) ? " " : value.get(zffs2ItemId.toString()).toString());
String zffs2= "本月已发";
Date date = zffsResultTimeMap.get(key);
if (date != null && SalaryDateUtil.getFormatYearMonth(date).equals(param.getStartDate())) {
SalaryDateUtil.getFormatYearMonth(date).equals(param.getStartDate());
zffs2 = "上月已发";
}
String zffs = ((value.get(zffs1ItemId.toString()) == null || StringUtils.isBlank(value.get(zffs1ItemId.toString()).toString())) ? " " : value.get(zffs1ItemId.toString()).toString()) + zffs2;
value.put("zffs", zffs);
});
@ -2376,7 +2416,9 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
}
});
for (WeaTableColumn column : sumColumn) {
if (!numberItemStrList.contains(column.getColumn())) {
if (column.getColumn().equals("userName") && param.isExport()) {
sumRow.put(column.getColumn(), "总计");
} else if (!numberItemStrList.contains(column.getColumn())) {
} else {
BigDecimal sumValue = list.stream().map(map -> map.get(column.getColumn()) == null ? "" : map.get(column.getColumn()).toString())

View File

@ -1223,7 +1223,7 @@ public class SalaryAcctController {
User user = HrmUserVarify.getUser(request, response);
XSSFWorkbook workbook = getSalaryAcctResultWrapper(user).exportSjjtReport(param);
String time = LocalDate.now().toString();
String fileName = "年度奖金报批" + time;
String fileName = "工资发放表" + ( param.isDyhzReport() ? "(当月汇总)" : "(当月实际计提)" ) + time;
try {
fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
} catch (UnsupportedEncodingException e) {
@ -1236,7 +1236,7 @@ public class SalaryAcctController {
response.setContentType("application/octet-stream");
return Response.ok(output).header("Content-disposition", "attachment;filename=" + fileName).header("Cache-Control", "no-cache").build();
} catch (Exception e) {
log.error("年度奖金报批", e);
log.error("工资发放表", e);
throw e;
}
}