美之高薪酬二开

This commit is contained in:
Harryxzy 2025-04-21 09:30:30 +08:00
parent a27391ac1b
commit 857475347e
4 changed files with 100 additions and 13 deletions

View File

@ -235,4 +235,11 @@ public interface SalaryAcctResultService {
void generateMzgCpjsgzcl(MzqQueryParam param);
void generateMzgCpjsgzdj(MzqQueryParam param);
/**
* 美之高 - 统计需要渲染到流程字段中的值
* @param param
* @return
*/
Map<String, String> sumSalaryApprovalFields(SalaryAcctResultQueryParam param);
}

View File

@ -1738,4 +1738,58 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
return resultList;
}
/**
* 美之高 - 统计需要渲染到流程字段中的值
* @param param
* @return
*/
@Override
public Map<String, String> sumSalaryApprovalFields(SalaryAcctResultQueryParam param) {
Map<String, String> resultMap = new HashMap<>();
// 查询核算记录
if (param.getSalaryAcctRecordId() == null) {
throw new SalaryRunTimeException("参数错误!");
}
SalaryAcctRecordPO salaryAcctRecord = getSalaryAcctRecordService(user).getById(param.getSalaryAcctRecordId());
if (salaryAcctRecord == null) {
throw new SalaryRunTimeException("核算记录不存在或已被删除!");
}
List<SalaryAcctEmployeePO> salaryAcctEmployeeList = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordId(param.getSalaryAcctRecordId());
if (CollectionUtils.isEmpty(salaryAcctEmployeeList)) {
return resultMap;
}
// 获取账套信息
SalarySobPO salarySobPO = getSalarySobService(user).getById(salaryAcctRecord.getSalarySobId());
if (salarySobPO != null) {
resultMap.put("salarySobName", salarySobPO.getName());
}
resultMap.put("salaryMonth", SalaryDateUtil.getFormatYearMonth(salaryAcctRecord.getSalaryMonth()));
List<Long> salaryAcctEmpIds = salaryAcctEmployeeList.stream().map(SalaryAcctEmployeePO::getId).collect(Collectors.toList());
BaseBean baseBean = new BaseBean();
String needSumFields = baseBean.getPropValue("mzgSalaryReport", "need_sum_fields");
List<String> fieldList = Arrays.stream(needSumFields.split(",")).collect(Collectors.toList());
Map<String, Long> fieldItemMap = new HashMap<>();
for (String field : fieldList) {
String fieldItemIdStr = baseBean.getPropValue("mzgSalaryReport", field + "_item_id");
Long salaryItemId = NumberUtils.isCreatable(fieldItemIdStr) ? Long.valueOf(fieldItemIdStr) : 0L;
fieldItemMap.put(field, salaryItemId);
}
List<Long> salaryItemIds = fieldItemMap.values().stream().collect(Collectors.toList());
// 查询薪资核算结果
List<SalaryAcctResultPO> acctResultList = getSalaryAcctResultService(user).listByAcctEmployeeIdsAndSalaryItemIds(salaryAcctEmpIds, salaryItemIds);
Map<Long, List<SalaryAcctResultPO>> acctResultMap = SalaryEntityUtil.group2Map(acctResultList, SalaryAcctResultPO::getSalaryItemId);
for (Map.Entry<String, Long> entry : fieldItemMap.entrySet()) {
Long salaryItemId = entry.getValue();
List<SalaryAcctResultPO> singeItemResultList = acctResultMap.get(salaryItemId);
if (CollectionUtils.isNotEmpty(singeItemResultList)) {
BigDecimal sumValue = singeItemResultList.stream()
.map(SalaryAcctResultPO::getResultValue)
.filter(NumberUtils::isCreatable)
.map(BigDecimal::new)
.reduce(new BigDecimal("0"), BigDecimal::add);
resultMap.put(entry.getKey(), sumValue.toPlainString());
}
}
return resultMap;
}
}

View File

@ -658,6 +658,21 @@ 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/fields/sum")
@Produces(MediaType.APPLICATION_JSON)
public String sumSalaryApprovalFields(@Context HttpServletRequest request, @Context HttpServletResponse response, @RequestBody SalaryAcctResultQueryParam param) {
User user = HrmUserVarify.getUser(request, response);
return new ResponseResult<SalaryAcctResultQueryParam, Map<String, String>>(user).run(getSalaryApprovalWrapper(user)::sumSalaryApprovalFields, param);
}
/**
* 保存审批流程id
* @param request

View File

@ -19,7 +19,6 @@ import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.sys.SalarySysConfMapper;
import com.engine.salary.service.*;
import com.engine.salary.service.impl.*;
import com.engine.salary.sys.entity.po.SalarySysConfPO;
import com.engine.salary.util.SalaryEntityUtil;
import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.page.PageInfo;
@ -27,15 +26,13 @@ import com.engine.salary.util.page.SalaryPageUtil;
import com.engine.salary.util.valid.ValidUtil;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.math.NumberUtils;
import weaver.hrm.User;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import static com.engine.salary.sys.constant.SalarySysConstant.SALARY_ACCT_FIXED_COLUMNS;
import java.util.stream.Collectors;
/**
* 薪资账套的薪资审批
@ -118,6 +115,8 @@ public class SalaryApprovalWrapper extends Service {
List<WeaTableColumnGroup> columns = Lists.newArrayList();
// 查询薪资账套的员工信息字段
List<SalarySobEmpFieldPO> salarySobEmpFieldPOS = getSalarySobEmpFieldService(user).listBySalarySobId(salaryAcctRecordPO.getSalarySobId());
// 只要展示姓名字段
salarySobEmpFieldPOS = salarySobEmpFieldPOS.stream().filter(salarySobEmpFieldPO -> salarySobEmpFieldPO.getFieldCode().equals("userName")).collect(Collectors.toList());
List<SalarySobEmpFieldDTO> salarySobEmpFieldDTOS = new SalarySobItemAggregateBO().buildEmpField(salarySobEmpFieldPOS);
// 获取薪资项目信息
List<SalaryItemPO> salaryItemPOS = getSalaryItemService(user).listAll();
@ -140,15 +139,19 @@ public class SalaryApprovalWrapper extends Service {
}
// 获取固定列头数
SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS);
if (salaryAcctFixedColumns != null) {
int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3;
if (fixedNum == 0) {
fixedNum = 3;
}
for (int i = 0; i < fixedNum; i++) {
columns.get(i).setFixed("left");
}
// SalarySysConfPO salaryAcctFixedColumns = getSalarySysConfMapper().getOneByCode(SALARY_ACCT_FIXED_COLUMNS);
// if (salaryAcctFixedColumns != null) {
// int fixedNum = NumberUtils.isCreatable(salaryAcctFixedColumns.getConfValue()) ? Integer.valueOf(salaryAcctFixedColumns.getConfValue()) : 3;
// if (fixedNum == 0) {
// fixedNum = 3;
// }
// for (int i = 0; i < fixedNum; i++) {
// columns.get(i).setFixed("left");
// }
// }
for (int i = 0; i < 1; i++) {
columns.get(i).setFixed("left");
}
Map<String, Object> datas = new HashMap<>();
@ -165,4 +168,12 @@ public class SalaryApprovalWrapper extends Service {
public void saveApprovalRequestId(ApprovalRequestSaveParam saveParam) {
getSalaryApprovalRuleService(user).saveApprovalRequestId(saveParam);
}
/**
* 美之高 - 统计需要渲染到流程字段中的值
* @param param
*/
public Map<String, String> sumSalaryApprovalFields(SalaryAcctResultQueryParam param) {
return getSalaryAcctResultService(user).sumSalaryApprovalFields(param);
}
}