社保福利台账合计列

This commit is contained in:
Harryxzy 2023-03-16 11:17:18 +08:00
parent 712f30ddfa
commit 6a7e5eacdc
3 changed files with 101 additions and 2 deletions

View File

@ -275,5 +275,14 @@ public interface SIAccountService {
* 将福利台账-补差模板导入的数据更新到数据库
*/
Map<String, Object> importBalanceInsuranceDetail(InsuranceAcctImportParam importParam);
/**
* 合计行
*
* @param queryParam
* @return
*/
Map<String, Object> listCommonSum(InsuranceAccountDetailParam queryParam);
}

View File

@ -77,7 +77,6 @@ import weaver.hrm.User;
import java.io.InputStream;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@ -2834,7 +2833,79 @@ public class SIAccountServiceImpl extends Service implements SIAccountService {
}
return apidatas;
}
@Override
public Map<String, Object> listCommonSum(InsuranceAccountDetailParam queryParam) {
Long employeeId = (long) user.getUID();
Map<String, Object> datas = new HashMap<>();
// 正常缴纳列表
queryParam.setPageSize(10000000);
PageInfo<InsuranceAccountDetailPO> pageInfo = getSiAccountBiz(user).listCommonPage(queryParam);
List<InsuranceAccountDetailPO> insuranceAccountDetailPOS = pageInfo.getList();
// 数据组装
List<Map<String, Object>> records = getService(user).buildCommonRecords(insuranceAccountDetailPOS, employeeId);
Map<String, Object> maxSizeRecord = records.stream().reduce(new HashMap<>(), (a, b) -> a.size() > b.size() ? a : b);
// 获取需要统计的列
String[] keys = {"Base", "Com", "Sum", "Per", "total"};
List<String> numKeys = new ArrayList<>();
for(String key : maxSizeRecord.keySet()){
if(StringUtils.containsAny(key,keys)){
numKeys.add(key);
}
}
Map<String, Object> sumRow = new HashMap<>();
for(String numKey : numKeys){
BigDecimal value = new BigDecimal(0);
for(Map<String, Object> record : records){
value = value.add( new BigDecimal(record.get(numKey) == null ? "0" : record.get(numKey).toString()) );
}
sumRow.put(numKey,value);
}
datas.put("sumRow", sumRow);
return datas;
// records.stream().collect(Collectors.groupingBy(record -> record.getk))
//
//
// .collect(Collectors.groupingBy(Main::getMapKey, Collectors.counting()));
// records.stream().flatMap(Collectors.toList());
//
//
// // 查询薪资核算人员
// List<SalaryAcctEmployeePO> salaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listByResultQueryParam(queryParam);
//
// if (CollectionUtils.isEmpty(salaryAcctEmployeePOS)) {
// return null;
// }
// // 查询薪资核算记录
// SalaryAcctRecordPO salaryAcctRecordPO = getSalaryAcctRecordService(user).getById(queryParam.getSalaryAcctRecordId());
// if (Objects.isNull(salaryAcctRecordPO)) {
// throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98747, "薪资核算记录不存在或已被删除"));
// }
// // 查询薪资核算所用薪资账套的薪资项目
// List<SalarySobItemPO> salarySobItemPOS = getSalarySobItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// Set<Long> salaryItemIds = SalaryEntityUtil.properties(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
// List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds);
// // 查询薪资核算结果
// Set<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOS, SalaryAcctEmployeePO::getId);
// List<SalaryAcctResultPO> salaryAcctResultPOS = listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
//
// Map<String, Object> map = new HashMap<>();
// Map<Long, List<SalaryAcctResultPO>> acctResultMap = SalaryEntityUtil.group2Map(salaryAcctResultPOS, SalaryAcctResultPO::getSalaryItemId);
// salaryItemPOS.stream().filter(item -> SalaryDataTypeEnum.NUMBER.getValue().equals(item.getDataType())).forEach(item -> {
// BigDecimal sum = Optional.ofNullable(acctResultMap.get(item.getId()))
// .orElse(new ArrayList<>())
// .stream()
// .map(SalaryAcctResultPO::getResultValue)
// .filter(NumberUtils::isCreatable)
// .map(BigDecimal::new)
// .reduce(BigDecimal.ZERO, BigDecimal::add);
// map.put(item.getId().toString(), SalaryAcctFormulaBO.roundResultValue(sum.toString(), item, Collections.emptyList(), Collections.emptyMap()));
// });
// return null;
}
/**
* 检查补差数据中的福利缴纳费用相关福利类别是否在正常缴纳中有设置缴纳
* @param po

View File

@ -97,6 +97,25 @@ public class SIAccountController {
return new ResponseResult<InsuranceAccountDetailParam, Map<String, Object>>(user).run(getService(user)::listCommonPage, insuranceAccountDetailParam);
}
/**
* 获取正常缴纳列表合计行
*
* @param request
* @param response
* @param insuranceAccountDetailParam
* @return
*/
@POST
@Path("/detail/common/list/sum")
@Produces(MediaType.APPLICATION_JSON)
public String commonListSum(@Context HttpServletRequest request, @Context HttpServletResponse response,
@RequestBody InsuranceAccountDetailParam insuranceAccountDetailParam) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<InsuranceAccountDetailParam, Map<String, Object>>(user).run(getService(user)::listCommonSum, insuranceAccountDetailParam);
}
/**
* 根据姓名获取正常缴纳列表
*