Browse Source

2025-03-11

master
qiezi 10 months ago
parent
commit
863080a4a4
  1. 24
      src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java

24
src/main/java/com/spring/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java

@ -64,18 +64,18 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
private BigDecimal unitProcessingTime(QuoteDetailRouting routing,BigDecimal qty){
private BigDecimal unitProcessingTime(QuoteDetailRouting routing,BigDecimal produceQty,BigDecimal moq){
BigDecimal processingTime = BigDecimal.ZERO; BigDecimal processingTime = BigDecimal.ZERO;
if ("小时".equals(routing.getRunTimeDesc())){ if ("小时".equals(routing.getRunTimeDesc())){
processingTime = qty;
}else if ("单位/小时".equals(routing.getRunTimeDesc())){
processingTime = qty;
processingTime = produceQty.multiply(moq);
}else if ("小时/单位".equals(routing.getRunTimeDesc())){ }else if ("小时/单位".equals(routing.getRunTimeDesc())){
processingTime = BigDecimal.ONE.divide(qty,16,RoundingMode.HALF_UP);
processingTime = produceQty;
}else if ("单位/小时".equals(routing.getRunTimeDesc())){
processingTime = BigDecimal.ONE.divide(produceQty,16,RoundingMode.HALF_UP);
}else { }else {
processingTime = BigDecimal.ONE; processingTime = BigDecimal.ONE;
} }
if (BigDecimal.ZERO.compareTo(qty)==0){
if (BigDecimal.ZERO.compareTo(produceQty)==0){
return BigDecimal.ZERO; return BigDecimal.ZERO;
} }
return processingTime; return processingTime;
@ -102,7 +102,7 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
// 单位产出 // 单位产出
BigDecimal laborCycleTime = BigDecimal.ZERO; BigDecimal laborCycleTime = BigDecimal.ZERO;
if (!(Objects.isNull(quoteDetailRouting.getLaborRunFactor()) || BigDecimal.ZERO.compareTo(quoteDetailRouting.getLaborRunFactor())== 0) ){ if (!(Objects.isNull(quoteDetailRouting.getLaborRunFactor()) || BigDecimal.ZERO.compareTo(quoteDetailRouting.getLaborRunFactor())== 0) ){
laborCycleTime = unitProcessingTime(quoteDetailRouting,quoteDetailRouting.getLaborRunFactor());
laborCycleTime = unitProcessingTime(quoteDetailRouting,quoteDetailRouting.getLaborRunFactor(),qty);
} }
// 效率 // 效率
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor();
@ -110,7 +110,7 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
BigDecimal crewSize = quoteDetailRouting.getCrewSize(); BigDecimal crewSize = quoteDetailRouting.getCrewSize();
// 损耗 // 损耗
BigDecimal shrinkageFactor = quoteDetailRouting.getShrinkageFactor(); BigDecimal shrinkageFactor = quoteDetailRouting.getShrinkageFactor();
//人员等级成本/单位产出/效率/1-损耗率*人数
//人员等级成本*单位产出/效率/1-损耗率*人数
// 调机人员等级成本*调机人员数量*人员调机时间/moq+人员等级成本/单位产出/效率/1-损耗率*人数 // 调机人员等级成本*调机人员数量*人员调机时间/moq+人员等级成本/单位产出/效率/1-损耗率*人数
// 单位产出/效率/100 // 单位产出/效率/100
BigDecimal num1 = laborCycleTime.divide(efficiencyFactor.divide(BigDecimal.valueOf(100), 16, RoundingMode.HALF_UP), 16, RoundingMode.HALF_UP); BigDecimal num1 = laborCycleTime.divide(efficiencyFactor.divide(BigDecimal.valueOf(100), 16, RoundingMode.HALF_UP), 16, RoundingMode.HALF_UP);
@ -122,9 +122,9 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
// 单位产出/效率/100/1-损耗率*人数 // 单位产出/效率/100/1-损耗率*人数
if (num2.compareTo(BigDecimal.ZERO)!=0){ if (num2.compareTo(BigDecimal.ZERO)!=0){
BigDecimal num3 = num2.multiply(crewSize);
// BigDecimal num3 = num2;
// 人员等级成本/单位产出/效率/100/1-损耗率*人数 // 人员等级成本/单位产出/效率/100/1-损耗率*人数
laborCost = laborClassCost.divide(num3, 16, RoundingMode.HALF_UP);
laborCost = laborClassCost.multiply(num2).multiply(crewSize);
} }
return setupCost.add(laborCost).setScale(4, RoundingMode.HALF_UP); return setupCost.add(laborCost).setScale(4, RoundingMode.HALF_UP);
@ -163,7 +163,7 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
BigDecimal manufactureCost = BigDecimal.ZERO; BigDecimal manufactureCost = BigDecimal.ZERO;
// 单位产出 // 单位产出
BigDecimal machCycleTime = unitProcessingTime(quoteDetailRouting,quoteDetailRouting.getMachRunFactor());
BigDecimal machCycleTime = unitProcessingTime(quoteDetailRouting,quoteDetailRouting.getMachRunFactor(),qty);
// 效率 // 效率
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor();
// 损耗率 // 损耗率
@ -173,7 +173,7 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin
// 加工中心成本/效率/100 // 加工中心成本/效率/100
BigDecimal num1 = workCenterCost.divide(efficiencyFactor.divide(BigDecimal.valueOf(100), 16, RoundingMode.HALF_UP), 16, RoundingMode.HALF_UP); BigDecimal num1 = workCenterCost.divide(efficiencyFactor.divide(BigDecimal.valueOf(100), 16, RoundingMode.HALF_UP), 16, RoundingMode.HALF_UP);
// 加工中心成本/效率/100/单位产出 // 加工中心成本/效率/100/单位产出
BigDecimal num2 = num1.divide(machCycleTime, 16, RoundingMode.HALF_UP);
BigDecimal num2 = num1.multiply(machCycleTime);
// 加工中心成本/效率/100/单位产出/1-损耗率/100 // 加工中心成本/效率/100/单位产出/1-损耗率/100
manufactureCost = num2.divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100), 16, RoundingMode.HALF_UP)), 16, RoundingMode.HALF_UP); manufactureCost = num2.divide(BigDecimal.ONE.subtract(shrinkageFactor.divide(BigDecimal.valueOf(100), 16, RoundingMode.HALF_UP)), 16, RoundingMode.HALF_UP);

Loading…
Cancel
Save