公式变量支持获取上月数据
This commit is contained in:
parent
22077f431e
commit
291cd426fe
|
|
@ -101,6 +101,11 @@ public class CalculateFormulaVarBO {
|
|||
*/
|
||||
private List<Map<String, Object>> variableArchiveList;
|
||||
|
||||
/**
|
||||
* 上月核算结果
|
||||
*/
|
||||
List<SalaryAcctResultPO> lastMonthResultPOS;
|
||||
|
||||
public CalculateFormulaVarBO(List<DataCollectionEmployee> simpleEmployees,
|
||||
List<SalaryArchiveDataDTO> salaryArchiveData,
|
||||
List<AddUpSituation> addUpSituationPOS,
|
||||
|
|
@ -109,7 +114,8 @@ public class CalculateFormulaVarBO {
|
|||
List<Map<String, Object>> welfareData,
|
||||
List<AttendQuoteDataDTO> attendQuoteDataDTOS,
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS,
|
||||
List<Map<String, Object>> variableArchiveList) {
|
||||
List<Map<String, Object>> variableArchiveList,
|
||||
List<SalaryAcctResultPO> lastMonthResultPOS) {
|
||||
this.simpleEmployees = simpleEmployees;
|
||||
this.salaryArchiveData = salaryArchiveData;
|
||||
this.addUpSituationPOS = addUpSituationPOS;
|
||||
|
|
@ -119,6 +125,7 @@ public class CalculateFormulaVarBO {
|
|||
this.attendQuoteDataDTOS = attendQuoteDataDTOS;
|
||||
this.salaryAcctResultPOS = salaryAcctResultPOS;
|
||||
this.variableArchiveList = variableArchiveList;
|
||||
this.lastMonthResultPOS = lastMonthResultPOS;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -147,7 +154,10 @@ public class CalculateFormulaVarBO {
|
|||
handleAttendQuoteData(salaryAcctCalculateBO, resultMap);
|
||||
//处理核算人员信息
|
||||
handleSalaryAcctEmployee(salaryAcctCalculateBO, resultMap);
|
||||
//处理人员信息
|
||||
handleSimpleEmployees(resultMap);
|
||||
//处理上月薪资核算结果
|
||||
handleLastMonthResult(salaryAcctCalculateBO, resultMap);
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
|
|
@ -231,6 +241,25 @@ public class CalculateFormulaVarBO {
|
|||
});
|
||||
}
|
||||
|
||||
private void handleLastMonthResult(SalaryAcctCalculateBO salaryAcctCalculateBO, Map<String, List<FormulaVarValue>> resultMap) {
|
||||
// key:薪资项目的id、value:薪资项目的code
|
||||
Map<Long, String> salaryItemCodeMap = SalaryEntityUtil.convert2Map(salaryAcctCalculateBO.getSalaryItemPOS(), SalaryItemPO::getId, SalaryItemPO::getCode);
|
||||
// key:employeeId_taxAgentId、value:薪资核算结果集合
|
||||
Map<String, List<SalaryAcctResultPO>> salaryAcctResultMap = SalaryEntityUtil.group2Map(lastMonthResultPOS,
|
||||
salaryAcctResultPO -> salaryAcctResultPO.getEmployeeId() + "_" + salaryAcctResultPO.getTaxAgentId());
|
||||
// 填充到返回结果集中
|
||||
salaryAcctResultMap.forEach((key, salaryAcctResultPOS) -> {
|
||||
List<FormulaVarValue> formulaVarValues = resultMap.computeIfAbsent(key, k -> Lists.newArrayList());
|
||||
formulaVarValues.addAll(salaryAcctResultPOS.stream()
|
||||
.map(salaryAcctResultPO -> {
|
||||
String fieldId = SalaryFormulaReferenceEnum.LAST_MONTH_CALC.getValue()
|
||||
+ SalaryFormulaFieldConstant.FIELD_ID_SEPARATOR
|
||||
+ salaryItemCodeMap.getOrDefault(salaryAcctResultPO.getSalaryItemId(), StringUtils.EMPTY);
|
||||
return new FormulaVarValue().setFieldId(fieldId).setFieldValue(salaryAcctResultPO.getResultValue());
|
||||
})
|
||||
.collect(Collectors.toList()));
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理薪资档案(会涉及调薪计薪规则)+处理核算日期
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ public enum SalaryFormulaReferenceEnum implements BaseEnum<String> {
|
|||
|
||||
SALARY_ITEM("salaryItem", "薪资项目", 84960),
|
||||
// SALARY_ITEM_OF_HISTORY("salaryItemOfHistory", "历史台账薪资项目", 85364),
|
||||
LAST_MONTH_CALC("lastMonthCalc", "上月核算", 257728),
|
||||
EMPLOYEE_INFO("employeeInfo", "员工基本信息", 85366),
|
||||
SALARY_ARCHIVES("salaryArchives", "薪资档案", 85368),
|
||||
ATTEND("attend", "考勤引用", 85367),
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
|
|||
import com.engine.salary.util.page.PageInfo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
|
@ -159,6 +160,7 @@ public interface SalaryAcctResultService {
|
|||
|
||||
/**
|
||||
* 锁定单元格
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
void lock(SalaryAcctResultLockParam param);
|
||||
|
|
@ -179,8 +181,8 @@ public interface SalaryAcctResultService {
|
|||
void batchUpdateOriginResultValue(List<SalaryAcctResultPO> salaryAcctResultValues);
|
||||
|
||||
/**
|
||||
* @description 薪资回算
|
||||
* @return void
|
||||
* @description 薪资回算
|
||||
* @author Harryxzy
|
||||
* @date 2022/11/24 20:26
|
||||
*/
|
||||
|
|
@ -196,8 +198,8 @@ public interface SalaryAcctResultService {
|
|||
List<SalaryAcctResultPO> listBySalaryAcctRecordIdsAndSalaryItemIds(Collection<Long> salaryAcctRecordIds, Collection<Long> salaryItemIds);
|
||||
|
||||
/**
|
||||
* @description 根据薪资核算人员id、薪资项目id获取薪资核算结果
|
||||
* @return List<SalaryAesultPO>
|
||||
* @description 根据薪资核算人员id、薪资项目id获取薪资核算结果
|
||||
* @author Harryxzy
|
||||
* @date 2022/12/26 22:24
|
||||
*/
|
||||
|
|
@ -207,6 +209,7 @@ public interface SalaryAcctResultService {
|
|||
|
||||
/**
|
||||
* 检查当前用户是否有查看权限
|
||||
*
|
||||
* @param salaryAcctRecordId
|
||||
* @return
|
||||
*/
|
||||
|
|
@ -214,7 +217,18 @@ public interface SalaryAcctResultService {
|
|||
|
||||
/**
|
||||
* 薪资核算结果批量更新
|
||||
*
|
||||
* @param param
|
||||
*/
|
||||
void batchUpdate(SalaryAcctResultBatchUpdateParam param);
|
||||
|
||||
/**
|
||||
* 查询指定账套月份的数据
|
||||
* <p>Copyright: Copyright (c) 2024</p>
|
||||
* <p>Company: 泛微软件</p>
|
||||
*
|
||||
* @author qiantao
|
||||
* @version 1.0
|
||||
**/
|
||||
List<SalaryAcctResultPO> listBySobSalaryMonth(Date salaryMonth, Long salarySobId, List<Long> employeeIds);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -289,7 +289,7 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
List<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
|
||||
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>());
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>(),new ArrayList<>());
|
||||
Map<String, List<CalculateFormulaVarBO.FormulaVarValue>> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO);
|
||||
|
||||
|
||||
|
|
@ -403,7 +403,7 @@ public class PushServiceImpl extends Service implements PushService {
|
|||
List<Long> salaryAcctEmployeeIds = SalaryEntityUtil.properties(salaryAcctCalculateBO.getSalaryAcctEmployeePOS(), SalaryAcctEmployeePO::getId, Collectors.toList());
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS = getSalaryAcctResultService(user).listBySalaryAcctEmployeeIds(salaryAcctEmployeeIds);
|
||||
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>());
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), new ArrayList<>(), salaryAcctResultPOS, new ArrayList<>(), new ArrayList<>());
|
||||
Map<String, List<CalculateFormulaVarBO.FormulaVarValue>> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO);
|
||||
|
||||
List<PushSettingPO> pushSettingPOS = getPushSettingMapper().listSome(PushSettingPO.builder().able(1).build());
|
||||
|
|
|
|||
|
|
@ -143,6 +143,7 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic
|
|||
if (referenceEnum != null) {
|
||||
switch (referenceEnum) {
|
||||
case SALARY_ITEM:
|
||||
case LAST_MONTH_CALC:
|
||||
case ISSUED:
|
||||
vars = salaryItem2FormulaVar(referenceEnum, extendParam);
|
||||
break;
|
||||
|
|
@ -241,6 +242,8 @@ public class RemoteExcelServiceImpl extends Service implements RemoteExcelServic
|
|||
if (ReferenceTypeEnum.FORMULA.equals(referenceTypeEnum)) {
|
||||
result.put(SalaryFormulaReferenceEnum.SALARY_ITEM.getDefaultLabel(),
|
||||
salaryItem2FormulaVar(SalaryFormulaReferenceEnum.SALARY_ITEM, null));
|
||||
result.put(SalaryFormulaReferenceEnum.LAST_MONTH_CALC.getDefaultLabel(),
|
||||
salaryItem2FormulaVar(SalaryFormulaReferenceEnum.LAST_MONTH_CALC, null));
|
||||
result.put(SalaryFormulaReferenceEnum.ISSUED.getDefaultLabel(),
|
||||
salaryItem2FormulaVar(SalaryFormulaReferenceEnum.ISSUED, null));
|
||||
result.put(SalaryFormulaReferenceEnum.SALARY_ARCHIVES.getDefaultLabel(),
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import com.engine.salary.enums.salaryformula.SalaryFormulaReferenceEnum;
|
|||
import com.engine.salary.formlua.entity.standard.ExcelResult;
|
||||
import com.engine.salary.service.*;
|
||||
import com.engine.salary.sys.enums.TaxDeclarationFunctionEnum;
|
||||
import com.engine.salary.util.SalaryDateUtil;
|
||||
import com.engine.salary.util.SalaryEntityUtil;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
|
@ -189,9 +190,13 @@ public class SalaryAcctCalculateServiceImpl extends Service implements SalaryAcc
|
|||
List<SalaryAcctEmployeePO> otherSalaryAcctEmployeePOS = getSalaryAcctEmployeeService(user).listBySalaryAcctRecordIdsAndEmployeeIds(otherSalaryAcctRecordIds, employeeIds);
|
||||
Map<String, List<SalaryAcctEmployeePO>> otherSalaryAcctEmployeePOMap = SalaryEntityUtil.group2Map(otherSalaryAcctEmployeePOS, salaryAcctEmployeePO -> salaryAcctEmployeePO.getEmployeeId() + "_" + salaryAcctEmployeePO.getTaxAgentId());
|
||||
sw.stop();
|
||||
// 查询上个薪资所属月核算人员薪资数据
|
||||
sw.start("查询上个薪资所属月核算人员薪资数据");
|
||||
List<SalaryAcctResultPO> lastMonthResultPOS = getSalaryAcctResultService(user).listBySobSalaryMonth(SalaryDateUtil.toDate(salarySobCycleDTO.getSalaryMonth().minusMonths(1), 1), salaryAcctCalculateBO.getSalarySobPO().getId(), employeeIds);
|
||||
sw.stop();
|
||||
// 10、转换成公式编辑器中的变量
|
||||
sw.start("转换成公式编辑器中的变量");
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList);
|
||||
CalculateFormulaVarBO calculateFormulaVarBO = new CalculateFormulaVarBO(simpleEmployees, salaryArchiveData, addUpSituationPOS, addUpDeductionPOS, otherDeductionPOS, welfareData, attendQuoteDataDTOS, salaryAcctResultPOS, variableArchiveList,lastMonthResultPOS);
|
||||
Map<String, List<CalculateFormulaVarBO.FormulaVarValue>> formulaVarMap = calculateFormulaVarBO.convert2FormulaVar(salaryAcctCalculateBO);
|
||||
sw.stop();
|
||||
sw.start("数据结构准备");
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.engine.salary.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.engine.common.util.ServiceUtil;
|
||||
import com.engine.core.impl.Service;
|
||||
import com.engine.hrmelog.entity.dto.LoggerContext;
|
||||
|
|
@ -192,6 +193,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
private VariableItemService getVariableItemService(User user) {
|
||||
return ServiceUtil.getService(VariableItemServiceImpl.class, user);
|
||||
}
|
||||
|
||||
private SalaryApprovalRuleService getSalaryApprovalRuleService(User user) {
|
||||
return ServiceUtil.getService(SalaryApprovalRuleServiceImpl.class, user);
|
||||
}
|
||||
|
|
@ -917,7 +919,7 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
getSalaryAcctProgressService(user).finish(SalaryCacheKey.ACCT_PROGRESS + calculateParam.getSalaryAcctRecordId(), true);
|
||||
|
||||
//更新薪资核算记录最后操作日期
|
||||
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(),new Date());
|
||||
getSalaryAcctRecordService(user).updateDate(salaryAcctRecordPO.getId(), new Date());
|
||||
|
||||
stopWatch.stop();
|
||||
log.info(stopWatch.prettyPrint());
|
||||
|
|
@ -1244,4 +1246,19 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SalaryAcctResultPO> listBySobSalaryMonth(Date salaryMonth, Long salarySobId, List<Long> employeeIds) {
|
||||
List<SalaryAcctRecordPO> salaryAcctRecordPOS = getSalaryAcctRecordService(user).listSome(SalaryAcctRecordPO.builder().salarySobId(salarySobId).salaryMonth(salaryMonth).build());
|
||||
List<Long> recordIds = SalaryEntityUtil.properties(salaryAcctRecordPOS, SalaryAcctRecordPO::getId, Collectors.toList());
|
||||
|
||||
SalaryAcctResultPO resultParam = SalaryAcctResultPO.builder().salaryAcctRecordIds(recordIds).build();
|
||||
if(CollUtil.isNotEmpty(employeeIds)){
|
||||
resultParam.setEmployeeIds(employeeIds);
|
||||
}
|
||||
List<SalaryAcctResultPO> salaryAcctResultPOS = getSalaryAcctResultMapper().listSome(resultParam);
|
||||
|
||||
encryptUtil.decryptList(salaryAcctResultPOS, SalaryAcctResultPO.class);
|
||||
return salaryAcctResultPOS;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue