核算优先级
This commit is contained in:
parent
d03aed1d1b
commit
43cdf98411
|
|
@ -3,7 +3,6 @@ package com.engine.salary.entity.salaryacct.bo;
|
|||
import com.engine.salary.entity.salaryformula.ExpressFormula;
|
||||
import com.engine.salary.enums.SalaryRoundingModeEnum;
|
||||
import com.engine.salary.enums.salaryitem.SalaryDataTypeEnum;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
/**
|
||||
|
|
@ -13,7 +12,6 @@ import lombok.experimental.Accessors;
|
|||
* @date: Created in 2023/5/19 16:00
|
||||
* @version:v1.0
|
||||
*/
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
public class SalaryCalcItem {
|
||||
|
||||
|
|
@ -54,4 +52,82 @@ public class SalaryCalcItem {
|
|||
*/
|
||||
private ExpressFormula expressFormula;
|
||||
|
||||
|
||||
public Long getSalaryItemId() {
|
||||
return salaryItemId;
|
||||
}
|
||||
|
||||
public void setSalaryItemId(Long salaryItemId) {
|
||||
this.salaryItemId = salaryItemId;
|
||||
}
|
||||
|
||||
public String getSalaryItemCode() {
|
||||
return salaryItemCode;
|
||||
}
|
||||
|
||||
public void setSalaryItemCode(String salaryItemCode) {
|
||||
this.salaryItemCode = salaryItemCode;
|
||||
}
|
||||
|
||||
public String getIncomeCategory() {
|
||||
return incomeCategory;
|
||||
}
|
||||
|
||||
public void setIncomeCategory(String incomeCategory) {
|
||||
this.incomeCategory = incomeCategory;
|
||||
}
|
||||
|
||||
public Integer getUseInEmployeeSalary() {
|
||||
return useInEmployeeSalary;
|
||||
}
|
||||
|
||||
public void setUseInEmployeeSalary(Integer useInEmployeeSalary) {
|
||||
this.useInEmployeeSalary = useInEmployeeSalary;
|
||||
}
|
||||
|
||||
public String getDataType() {
|
||||
return dataType;
|
||||
}
|
||||
|
||||
public void setDataType(String dataType) {
|
||||
this.dataType = dataType;
|
||||
}
|
||||
|
||||
public Integer getRoundingMode() {
|
||||
return roundingMode;
|
||||
}
|
||||
|
||||
public void setRoundingMode(Integer roundingMode) {
|
||||
this.roundingMode = roundingMode;
|
||||
}
|
||||
|
||||
public Integer getPattern() {
|
||||
return pattern;
|
||||
}
|
||||
|
||||
public void setPattern(Integer pattern) {
|
||||
this.pattern = pattern;
|
||||
}
|
||||
|
||||
public ExpressFormula getExpressFormula() {
|
||||
return expressFormula;
|
||||
}
|
||||
|
||||
public void setExpressFormula(ExpressFormula expressFormula) {
|
||||
this.expressFormula = expressFormula;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SalaryCalcItem{" +
|
||||
"salaryItemId=" + salaryItemId +
|
||||
", salaryItemCode='" + salaryItemCode + '\'' +
|
||||
", incomeCategory='" + incomeCategory + '\'' +
|
||||
", useInEmployeeSalary=" + useInEmployeeSalary +
|
||||
", dataType='" + dataType + '\'' +
|
||||
", roundingMode=" + roundingMode +
|
||||
", pattern=" + pattern +
|
||||
", expressFormula=" + expressFormula +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,10 +30,8 @@ public class SalaryCalcItemGraph {
|
|||
* @param expressFormulas 公式详情
|
||||
*/
|
||||
public SalaryCalcItemGraph(List<SalarySobItemPO> salarySobItems, List<ExpressFormula> expressFormulas) {
|
||||
Map<String, SalarySobItemPO> salaryItemMap = SalaryEntityUtil.convert2Map(salarySobItems,
|
||||
SalarySobItemPO::getSalaryItemCode);
|
||||
Map<Long, ExpressFormula> expressFormulaMap = SalaryEntityUtil.convert2Map(expressFormulas,
|
||||
ExpressFormula::getId);
|
||||
Map<String, SalarySobItemPO> salaryItemMap = SalaryEntityUtil.convert2Map(salarySobItems, SalarySobItemPO::getSalaryItemCode);
|
||||
Map<Long, ExpressFormula> expressFormulaMap = SalaryEntityUtil.convert2Map(expressFormulas, ExpressFormula::getId);
|
||||
Map<Long, List<FormulaVar>> formulaVarMap = ExpressFormulaBO.buildFormulaVar(expressFormulas);
|
||||
|
||||
Map<Long, SalaryCalcItemGraphNode> nodeMap = new HashMap<>();
|
||||
|
|
@ -42,7 +40,7 @@ public class SalaryCalcItemGraph {
|
|||
SalaryCalcItemGraphNode node = nodeMap.computeIfAbsent(salarySobItem.getSalaryItemId(), key -> new SalaryCalcItemGraphNode(salarySobItem, expressFormula));
|
||||
List<FormulaVar> formulaVars = expressFormula == null ? Collections.emptyList() : formulaVarMap.getOrDefault(expressFormula.getId(), Collections.emptyList());
|
||||
for (FormulaVar formulaVar : formulaVars) {
|
||||
if ( StringUtils.isNotEmpty(formulaVar.getFieldId())) {
|
||||
if (StringUtils.isNotEmpty(formulaVar.getFieldId())) {
|
||||
String salaryItemCode = formulaVar.getFieldId().split(SalaryConstant.FORMULA_VAR_SEPARATOR)[1];
|
||||
SalarySobItemPO subSalarySobItem = salaryItemMap.get(salaryItemCode);
|
||||
if (subSalarySobItem == null) {
|
||||
|
|
@ -150,15 +148,16 @@ public class SalaryCalcItemGraph {
|
|||
private List<SalaryCalcItemGraphNode> destNodes;
|
||||
|
||||
public SalaryCalcItemGraphNode(SalarySobItemPO salarySobItem, ExpressFormula expressFormula) {
|
||||
this.salaryCalcItem = new SalaryCalcItem()
|
||||
.setSalaryItemId(salarySobItem.getSalaryItemId())
|
||||
.setSalaryItemCode(salarySobItem.getSalaryItemCode())
|
||||
.setIncomeCategory(salarySobItem.getIncomeCategory())
|
||||
// .setUseInEmployeeSalary(salarySobItem.getUseInEmployeeSalary())
|
||||
// .setDataType(salarySobItem.getDataType())
|
||||
.setRoundingMode(salarySobItem.getRoundingMode())
|
||||
.setPattern(salarySobItem.getPattern())
|
||||
.setExpressFormula(expressFormula);
|
||||
SalaryCalcItem salaryCalcItem = new SalaryCalcItem();
|
||||
salaryCalcItem.setSalaryItemId(salarySobItem.getSalaryItemId());
|
||||
salaryCalcItem.setSalaryItemCode(salarySobItem.getSalaryItemCode());
|
||||
salaryCalcItem.setIncomeCategory(salarySobItem.getIncomeCategory());
|
||||
// salaryCalcItem.setUseInEmployeeSalary(salarySobItem.getUseInEmployeeSalary());
|
||||
// salaryCalcItem.setDataType(salarySobItem.getDataType());
|
||||
salaryCalcItem.setRoundingMode(salarySobItem.getRoundingMode());
|
||||
salaryCalcItem.setPattern(salarySobItem.getPattern());
|
||||
salaryCalcItem.setExpressFormula(expressFormula);
|
||||
this.salaryCalcItem = salaryCalcItem;
|
||||
this.inDegree = 0;
|
||||
this.visited = false;
|
||||
this.destNodes = new ArrayList<>();
|
||||
|
|
|
|||
|
|
@ -733,12 +733,12 @@ public class SalaryAcctResultServiceImpl extends Service implements SalaryAcctRe
|
|||
// 本次运算的回算薪资项目所涉及的变量
|
||||
Set<String> issuedFieldIds = new HashSet<>();
|
||||
// 9、计算薪资项目的运算优先级
|
||||
// List<List<Long>> salarySobItemsWithPriority = SalaryAcctCalculatePriorityBO.calculatePriority(salarySobItemPOS, salaryItemPOS, expressFormulas, salarySobBackItems, issuedFieldIds);
|
||||
List<List<Long>> salarySobItemsWithPriority = new ArrayList<>();
|
||||
SalaryCalcItemGraph salaryCalcItemGraph = new SalaryCalcItemGraph(salarySobItemPOS, expressFormulas);
|
||||
List<SalaryCalcItem> salaryCalcItems = salaryCalcItemGraph.sort();
|
||||
List<Long> properties = SalaryEntityUtil.properties(salaryCalcItems, SalaryCalcItem::getSalaryItemId, Collectors.toList());
|
||||
salarySobItemsWithPriority.add(properties);
|
||||
List<List<Long>> salarySobItemsWithPriority = SalaryAcctCalculatePriorityBO.calculatePriority(salarySobItemPOS, salaryItemPOS, expressFormulas, salarySobBackItems, issuedFieldIds);
|
||||
// List<List<Long>> salarySobItemsWithPriority = new ArrayList<>();
|
||||
// SalaryCalcItemGraph salaryCalcItemGraph = new SalaryCalcItemGraph(salarySobItemPOS, expressFormulas);
|
||||
// List<SalaryCalcItem> salaryCalcItems = salaryCalcItemGraph.sort();
|
||||
// List<Long> properties = SalaryEntityUtil.properties(salaryCalcItems, SalaryCalcItem::getSalaryItemId, Collectors.toList());
|
||||
// salarySobItemsWithPriority.add(properties);
|
||||
|
||||
// 10、根据id查询其他合并计税的薪资核算记录
|
||||
List<SalaryAcctRecordPO> otherSalaryAcctRecordPOS = getSalaryAcctRecordService(user).listById4OtherConsolidatedTax(salaryAcctRecordPO.getId());
|
||||
|
|
|
|||
Loading…
Reference in New Issue