西部信托二开,报表合计
This commit is contained in:
parent
682f7d0493
commit
c2242a1659
|
|
@ -142,4 +142,12 @@ public class SalaryStatisticsEmployeeController {
|
|||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryStatisticsEmployeeSalaryQueryParam, Map<String, Object>>(user).run(getSalaryStatisticsEmployeeWrapper(user)::salaryReport, queryParam);
|
||||
}
|
||||
|
||||
@POST
|
||||
@Path("/salaryReportSum")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String salaryReportSum(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryStatisticsEmployeeSalaryQueryParam queryParam) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryStatisticsEmployeeSalaryQueryParam, Map<String, Object>>(user).run(getSalaryStatisticsEmployeeWrapper(user)::salaryReportSum, queryParam);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -427,8 +427,6 @@ public class SalaryStatisticsEmployeeWrapper extends Service {
|
|||
List<WeaTableColumn> weaTableColumns = new ArrayList<>();
|
||||
weaTableColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(87614, "薪资所属月"), "salaryMonth"));
|
||||
weaTableColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "姓名"), "userName"));
|
||||
weaTableColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "部门"), "department"));
|
||||
weaTableColumns.add(new WeaTableColumn("100px", SalaryI18nUtil.getI18nLabel(0, "工号"), "workCode"));
|
||||
|
||||
String salaryItemIds = new BaseBean().getPropValue("xbxtSalaryReport", "salaryItemIds");
|
||||
List<Long> ids = Arrays.stream(salaryItemIds.split(",")).map(Long::valueOf).collect(Collectors.toList());
|
||||
|
|
@ -446,4 +444,74 @@ public class SalaryStatisticsEmployeeWrapper extends Service {
|
|||
resultMap.put("pageInfo", pageInfo);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
public Map<String, Object> salaryReportSum(SalaryStatisticsEmployeeSalaryQueryParam queryParam) {
|
||||
|
||||
Map<String, Object> resultMap = Maps.newHashMap();
|
||||
Map<String, Object> sumResultMap = Maps.newHashMap();
|
||||
resultMap.put("sumRow", sumResultMap);
|
||||
if (StringUtils.isBlank(queryParam.getStartDateStr()) || StringUtils.isBlank(queryParam.getEndDateStr())) {
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
||||
// 获取发薪人员
|
||||
List<Date> dataParam = new ArrayList<>();
|
||||
if (StringUtils.isNotBlank(queryParam.getStartDateStr())) {
|
||||
dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getStartDateStr() + "-01 00:00:00"));
|
||||
}
|
||||
if (StringUtils.isNotBlank(queryParam.getEndDateStr())) {
|
||||
dataParam.add(SalaryDateUtil.dateStrToLocalTime(queryParam.getEndDateStr() + "-01 00:00:00"));
|
||||
}
|
||||
Set<Date> salaryMonths = SalaryStatisticsEmployeeBO.getSalaryMonths(null, dataParam)
|
||||
.stream()
|
||||
.map(SalaryDateUtil::dateStrToLocalYearMonth)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
//工资单数据,按照已发放的工资单分页
|
||||
SalarySendInfoPO build = SalarySendInfoPO.builder().salaryMonths(salaryMonths).employeeId((long) user.getUID()).build();
|
||||
List<SalarySendInfoPO> list = getSalarySendInfoMapper().listSome(build);
|
||||
List<Long> recordIds = SalaryEntityUtil.properties(list, SalarySendInfoPO::getSalaryAcctRecordId, Collectors.toList());
|
||||
|
||||
SalaryAcctEmployeeQueryParam salaryAcctEmployeeQueryParam = SalaryAcctEmployeeQueryParam.builder()
|
||||
.salaryAcctRecordIds(recordIds)
|
||||
.employeeIds(Collections.singletonList((long) user.getUID()))
|
||||
.build();
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listByParam(salaryAcctEmployeeQueryParam);
|
||||
salaryAcctEmployeeList = salaryAcctEmployeeList.stream().sorted((a,b)->-a.getSalaryMonth().compareTo(b.getSalaryMonth())).collect(Collectors.toList());
|
||||
|
||||
List<List<SalaryAcctEmployeePO>> empParts = Lists.partition(salaryAcctEmployeeList, 500);
|
||||
|
||||
for (int i = 0; i < empParts.size(); i++) {
|
||||
// 获取薪资核算结果
|
||||
SalaryStatisticsEmployeeDetailResultDTO salaryStatisticsEmployeeDetailResult = getSalaryStatisticsEmployeeService(user).getDetailSalaryAcctResultByAcctEmp(empParts.get(i));
|
||||
List<Map<String, Object>> records = getSalaryStatisticsEmployeeService(user).listDetailPage(salaryStatisticsEmployeeDetailResult, null);
|
||||
|
||||
if (CollectionUtils.isNotEmpty(records)) {
|
||||
List<SalaryItemPO> salaryItems = salaryStatisticsEmployeeDetailResult.getSalaryItemList();
|
||||
// 过滤只统计数值型薪资项目
|
||||
salaryItems = salaryItems.stream().filter(salaryItemPO -> salaryItemPO.getDataType().equals(SalaryDataTypeEnum.NUMBER.getValue())).collect(Collectors.toList());
|
||||
for (SalaryItemPO item : salaryItems) {
|
||||
BigDecimal sumBigDecimal = new BigDecimal(SalaryStatisticsReportBO.ZERO);
|
||||
String itemKey = item.getId() + SalaryConstant.DYNAMIC_SUFFIX;
|
||||
for (Map<String, Object> record : records) {
|
||||
if (record.containsKey(itemKey)) {
|
||||
if (Objects.nonNull(record.get(itemKey)) && NumberUtils.isCreatable(record.get(itemKey).toString())) {
|
||||
sumBigDecimal = sumBigDecimal.add(new BigDecimal(record.get(itemKey).toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
Object o = sumResultMap.get(itemKey + "_n");
|
||||
if (o != null) {
|
||||
sumBigDecimal = sumBigDecimal.add((BigDecimal) o);
|
||||
}
|
||||
sumResultMap.put(itemKey + "_n", sumBigDecimal);
|
||||
// 薪资项目合计
|
||||
sumResultMap.put(itemKey, ReportDataUtil.thousandthConvert(sumBigDecimal.toString()));
|
||||
}
|
||||
}
|
||||
}
|
||||
resultMap.put("sumRow", sumResultMap);
|
||||
return resultMap;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue