合计行
This commit is contained in:
parent
e9b347c07c
commit
425b4c7171
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.service;
|
||||
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
|
|
@ -10,6 +11,7 @@ import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
|
|||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Harryxzy
|
||||
|
|
@ -114,4 +116,8 @@ public interface SalaryApprovalRuleService {
|
|||
void deleteBySalarySobIds(Collection<Long> ids);
|
||||
|
||||
List<SalaryApprovalRulePO> listBySalarySobIds(Collection<Long> salarySobIds);
|
||||
|
||||
|
||||
Map<String, Object> sumRow(SalaryAcctResultQueryParam queryParam);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,11 @@ package com.engine.salary.service.impl;
|
|||
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.salary.entity.salaryacct.bo.SalaryAcctFormulaBO;
|
||||
import com.engine.salary.entity.salaryacct.param.SalaryAcctResultQueryParam;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctEmployeePO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
|
||||
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
|
||||
import com.engine.salary.entity.salaryitem.param.SalaryItemSearchParam;
|
||||
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
|
||||
import com.engine.salary.entity.salarysob.bo.SalaryApprovalBO;
|
||||
|
|
@ -11,8 +15,11 @@ import com.engine.salary.entity.salarysob.dto.SalarySobItemAggregateDTO;
|
|||
import com.engine.salary.entity.salarysob.param.ApprovalRequestSaveParam;
|
||||
import com.engine.salary.entity.salarysob.param.SalaryApprovalQueryParam;
|
||||
import com.engine.salary.entity.salarysob.po.SalaryApprovalRulePO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobBackItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobItemPO;
|
||||
import com.engine.salary.entity.salarysob.po.SalarySobPO;
|
||||
import com.engine.salary.enums.common.FilterEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import com.engine.salary.exception.SalaryRunTimeException;
|
||||
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
|
||||
import com.engine.salary.mapper.salarysob.SalaryApprovalRuleMapper;
|
||||
|
|
@ -22,18 +29,19 @@ import com.engine.salary.sys.entity.po.SalarySysConfPO;
|
|||
import com.engine.salary.sys.service.SalarySysConfService;
|
||||
import com.engine.salary.sys.service.impl.SalarySysConfServiceImpl;
|
||||
import com.engine.salary.util.JsonUtil;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.engine.salary.util.SalaryI18nUtil;
|
||||
import com.engine.salary.util.db.IdGenerator;
|
||||
import com.engine.salary.util.db.MapperProxyFactory;
|
||||
import com.engine.salary.util.valid.ValidUtil;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import weaver.conn.RecordSet;
|
||||
import weaver.hrm.User;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
|
@ -72,6 +80,18 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr
|
|||
return ServiceUtil.getService(SalarySysConfServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctEmployeeService getSalaryAcctEmployeeService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryAcctResultService getSalaryAcctResultService(User user) {
|
||||
return ServiceUtil.getService(SalaryAcctResultServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalarySobBackItemService getSalarySobBackItemService(User user) {
|
||||
return ServiceUtil.getService(SalarySobBackItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryApprovalRulePO> listAll() {
|
||||
return getSalaryApprovalRuleMapper().listAll();
|
||||
|
|
@ -245,4 +265,68 @@ public class SalaryApprovalRuleServiceImpl extends Service implements SalaryAppr
|
|||
}
|
||||
return getSalaryApprovalRuleMapper().listSome(SalaryApprovalRulePO.builder().salarySobIds(salarySobIds).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Object> sumRow(SalaryAcctResultQueryParam queryParam) {
|
||||
// 审批信息
|
||||
SalaryApprovalDTO approvalInfoByRecordId = getApprovalInfoByRecordId(queryParam.getSalaryAcctRecordId());
|
||||
List<Long> salaryItemIds = new ArrayList<>();
|
||||
for (SalaryApprovalDTO.approvalItemGroup groupDTO : approvalInfoByRecordId.getApprovalItemGroup()) {
|
||||
salaryItemIds.addAll(groupDTO.getApprovalItems().stream().map(SalaryApprovalDTO.approvalItem::getSalaryItemId).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
//其他条件
|
||||
List<SalaryAcctResultQueryParam.OtherCondition> otherConditions = queryParam.getOtherConditions();
|
||||
List<SalaryAcctEmployeePO> salaryAcctEmployeePOList = new ArrayList<>();
|
||||
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(otherConditions)) {
|
||||
List<Long> items = SalaryEntityUtil.properties(otherConditions, SalaryAcctResultQueryParam.OtherCondition::getItemId, Collectors.toList());
|
||||
List<SalaryAcctResultPO> list = getSalaryAcctResultService(user).listBySalaryAcctRecordIdsAndSalaryItemIds(Collections.singletonList(queryParam.getSalaryAcctRecordId()), items);
|
||||
for (int i = 0; i < otherConditions.size(); i++) {
|
||||
SalaryAcctResultQueryParam.OtherCondition otherCondition = otherConditions.get(i);
|
||||
Long itemId = otherCondition.getItemId();
|
||||
FilterEnum filter = otherCondition.getFilter();
|
||||
List<String> params = otherCondition.getParams();
|
||||
list = list.stream().filter(a -> Objects.equals(a.getSalaryItemId(), itemId)).filter(a -> filter.filter(params).test(a.getResultValue())).collect(Collectors.toList());
|
||||
}
|
||||
List<Long> salaryAcctEmpId = SalaryEntityUtil.properties(list, SalaryAcctResultPO::getSalaryAcctEmpId, Collectors.toList());
|
||||
if (org.apache.commons.collections4.CollectionUtils.isNotEmpty(salaryAcctEmpId)) {
|
||||
queryParam.setIds(salaryAcctEmpId);
|
||||
}
|
||||
}
|
||||
|
||||
// 查询薪资核算人员(分页)
|
||||
salaryAcctEmployeePOList = getSalaryAcctEmployeeService(user).listByResultQueryParam(queryParam);
|
||||
if (org.apache.commons.collections4.CollectionUtils.isEmpty(salaryAcctEmployeePOList)) {
|
||||
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());
|
||||
salarySobItemPOS = salarySobItemPOS.stream().filter(sobItem -> salaryItemIds.contains(sobItem.getSalaryItemId())).collect(Collectors.toList());
|
||||
Map<Long, SalarySobItemPO> salaryItemIdKeySalarySobItemPOMap = SalaryEntityUtil.convert2Map(salarySobItemPOS, SalarySobItemPO::getSalaryItemId);
|
||||
if (Objects.equals(salaryAcctRecordPO.getBackCalcStatus(), NumberUtils.INTEGER_ONE)) {
|
||||
// 是回算,获取回算项
|
||||
List<SalarySobBackItemPO> salarySobBackItemPOS = getSalarySobBackItemService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
|
||||
salaryItemIds.addAll(salarySobBackItemPOS.stream().map(SalarySobBackItemPO::getSalaryItemId).collect(Collectors.toList()));
|
||||
}
|
||||
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listByIds(salaryItemIds);
|
||||
List<Long> itemIds = salaryItemPOS.stream().map(SalaryItemPO::getId).collect(Collectors.toList());
|
||||
|
||||
// 查询薪资核算结果
|
||||
List<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctEmployeePOList, SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmployeeIds, itemIds);
|
||||
|
||||
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(), salaryItemIdKeySalarySobItemPOMap));
|
||||
});
|
||||
return map;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -626,6 +626,22 @@ public class SalarySobController {
|
|||
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, Object>>(user).run(getSalaryApprovalWrapper(user)::listSalaryApprovalAcctResult, param);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取审批时薪资核算结果合计行
|
||||
* @param request
|
||||
* @param response
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@POST
|
||||
@Path("/salaryApproval/acctresult/sum")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
public String sumSalaryApprovalAcctResult(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) {
|
||||
User user = HrmUserVarify.getUser(request, response);
|
||||
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, Object>>(user).run(getSalaryApprovalWrapper(user)::sumSalaryApprovalAcctResult, param);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 保存审批流程id
|
||||
* @param request
|
||||
|
|
|
|||
|
|
@ -165,4 +165,13 @@ public class SalaryApprovalWrapper extends Service {
|
|||
public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) {
|
||||
getSalaryApprovalRuleService(user).saveApprovalRequestId(saveParam);
|
||||
}
|
||||
|
||||
public Map<String, Object> sumSalaryApprovalAcctResult(SalaryAcctResultQueryParam queryParam) {
|
||||
ValidUtil.doValidator(queryParam);
|
||||
Map<String, Object> datas = new HashMap<>();
|
||||
|
||||
Map<String, Object> sumRow = getSalaryApprovalRuleService(user).sumRow(queryParam);
|
||||
datas.put("sumRow", sumRow);
|
||||
return datas;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue