万君报表需求变更

This commit is contained in:
Harryxzy 2025-06-05 15:20:20 +08:00
parent b2f9e14b07
commit b4e5eb4342
3 changed files with 77 additions and 1 deletions

View File

@ -73,6 +73,8 @@ public class SalaryAcctResultQueryParam extends BaseQueryParam {
//其他条件
private List<OtherCondition> otherConditions;
private boolean isSum;
@Data
@NoArgsConstructor

View File

@ -69,6 +69,7 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.util.StopWatch;
import weaver.general.BaseBean;
import weaver.hrm.User;
import weaver.hrm.company.DepartmentComInfo;
import weaver.wechat.util.Utils;
import java.math.BigDecimal;
@ -1312,10 +1313,40 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
.filter(NumberUtils::isCreatable)
.map(Long::valueOf)
.collect(Collectors.toList());
List<Long> needSumToFDepDepartmentIds = Arrays.stream(baseBean.getPropValue("wjztkjSalary", "need_sum_to_fdep_department_ids").split(","))
.filter(NumberUtils::isCreatable)
.map(Long::valueOf)
.collect(Collectors.toList());
// 获取父节点的下级部门id
List<Long> needSumDepIds = new ArrayList<>();
DepartmentComInfo departmentComInfo = new DepartmentComInfo();
Map<Long, List<Long>> depRelationMap = new HashMap<>();
if(CollectionUtils.isNotEmpty(needSumToFDepDepartmentIds)) {
needSumToFDepDepartmentIds.stream().forEach(depId -> {
// 获取所有下级部门id
try {
String allChildDepartId = departmentComInfo.getAllChildDepartId(depId.toString(), depId.toString());
if (StringUtils.isNotBlank(allChildDepartId)) {
List<Long> subDepIds = Arrays.stream(allChildDepartId.split(","))
.filter(NumberUtils::isCreatable)
.map(Long::valueOf)
.filter(id -> !id.equals(depId))
.collect(Collectors.toList());
depRelationMap.put(depId, subDepIds);
needSumDepIds.addAll(subDepIds);
needSumDepIds.add(depId);
}
} catch (Exception e) {
}
});
}
salaryAcctEmployeePOList = salaryAcctEmployeePOList.stream()
.filter(acctEmp -> acctEmp.getDepartmentName().contains("")
|| needSumToLdbzDepartmentIds.contains(acctEmp.getDepartmentId())
|| acctEmp.getDepartmentId().equals(ldbzDepartmentId))
|| acctEmp.getDepartmentId().equals(ldbzDepartmentId)
|| needSumDepIds.contains(acctEmp.getDepartmentId()))
.collect(Collectors.toList());
if (CollectionUtils.isEmpty(salaryAcctEmployeePOList)) {
@ -1341,6 +1372,18 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
// 查询薪资核算结果
List<SalaryAcctResultPO> acctResultList = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, needSumItemIds);
if (queryParam.isSum()) {
Map<String, Object> sumMap = new HashMap<>();
Map<Long, List<SalaryAcctResultPO>> acctResultMap = SalaryEntityUtil.group2Map(acctResultList, SalaryAcctResultPO::getSalaryItemId);
needSumItemIds.stream().forEach(item -> {
BigDecimal sum = Optional.ofNullable(acctResultMap.get(item)).orElse(new ArrayList<>()).stream().map(SalaryAcctResultPO::getResultValue).filter(NumberUtils::isCreatable).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add);
sumMap.put(item.toString(), sum.toString());
});
List<Long> acctEmpIds = acctResultList.stream().map(SalaryAcctResultPO::getSalaryAcctEmpId).distinct().collect(Collectors.toList());
sumMap.put("empNums", acctEmpIds.size());
map.put("sumRow", sumMap);
return map;
}
// 查询薪资核算结果
List<SalarySobEmpFieldPO> salarySobEmpFields = new ArrayList<>();
@ -1362,6 +1405,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
resultMap.put("departmentName", ldbzDepartmentName);
}
}
for (Map.Entry<Long, List<Long>> entry : depRelationMap.entrySet()) {
List<Long> subDepIds = entry.getValue();
DeptInfo fartherDepartment = getSalaryEmployeeService(user).getDeptInfoById(entry.getKey());
Long fartherDepartmentId = fartherDepartment == null ? 0L : fartherDepartment.getId();
String fartherDepartmentName = fartherDepartment == null ? "" : fartherDepartment.getName();
for (Map<String, Object> resultMap : acctResultMap) {
Long departmentId = NumberUtils.isCreatable(Utils.null2String(resultMap.get("departmentId"))) ? Long.valueOf(Utils.null2String(resultMap.get("departmentId"))) : null;
if (departmentId != null && subDepIds.contains(departmentId)) {
resultMap.put("departmentId", fartherDepartmentId);
resultMap.put("departmentName", fartherDepartmentName);
}
}
}
// 根据部门分组
Map<String, List<Map<String, Object>>> acctResultGroupMap = SalaryEntityUtil.group2Map(acctResultMap, resultMap -> resultMap.getOrDefault("departmentId", "").toString());
LinkedHashMap<String, Map<String, Object>> sumResultByGroup = getSumResultByGroup(acctResultGroupMap, Collections.emptyList(), needSumItemList);

View File

@ -685,6 +685,24 @@ public class SalarySobController {
@Produces(MediaType.APPLICATION_JSON)
public String listSalaryApprovalDepartmentReport(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
param.setSum(false);
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, Object>>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalDepartmentReport, param);
}
/**
* 获取审批时薪资核算部门报表
* @param request
* @param response
* @param param
* @return
*/
@POST
@Path("/salaryApproval/acctresult/departmentReportSum")
@Produces(MediaType.APPLICATION_JSON)
public String departmentReportSum(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
param.setSum(true);
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, Object>>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalDepartmentReport, param);
}