|
|
@ -78,11 +78,14 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin |
|
|
BigDecimal laborCost = BigDecimal.ZERO; |
|
|
BigDecimal laborCost = BigDecimal.ZERO; |
|
|
if (Objects.nonNull(quoteDetailRouting.getLaborClassCost()) && quoteDetailRouting.getLaborClassCost().compareTo(BigDecimal.ZERO) > 0){ |
|
|
if (Objects.nonNull(quoteDetailRouting.getLaborClassCost()) && quoteDetailRouting.getLaborClassCost().compareTo(BigDecimal.ZERO) > 0){ |
|
|
BigDecimal laborClassCost = quoteDetailRouting.getLaborClassCost(); |
|
|
BigDecimal laborClassCost = quoteDetailRouting.getLaborClassCost(); |
|
|
|
|
|
if (Objects.isNull(quoteDetailRouting.getLaborCycleTime()) || quoteDetailRouting.getLaborCycleTime().compareTo(BigDecimal.ZERO) <= 0){ |
|
|
|
|
|
return setupCost.add(laborCost).setScale(4, RoundingMode.HALF_UP); |
|
|
|
|
|
} |
|
|
BigDecimal laborCycleTime = quoteDetailRouting.getLaborCycleTime(); |
|
|
BigDecimal laborCycleTime = quoteDetailRouting.getLaborCycleTime(); |
|
|
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); |
|
|
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); |
|
|
BigDecimal crewSize = quoteDetailRouting.getCrewSize(); |
|
|
BigDecimal crewSize = quoteDetailRouting.getCrewSize(); |
|
|
// 人工生产时间/(效率*100) |
|
|
// 人工生产时间/(效率*100) |
|
|
BigDecimal needTime = laborCycleTime.divide(efficiencyFactor.divide(BigDecimal.valueOf(100),6, RoundingMode.HALF_UP), 6, RoundingMode.HALF_UP); |
|
|
|
|
|
|
|
|
BigDecimal needTime = laborCycleTime.multiply(efficiencyFactor.divide(BigDecimal.valueOf(100), 6, RoundingMode.HALF_UP)); |
|
|
laborCost = needTime.multiply(laborClassCost).multiply(crewSize); |
|
|
laborCost = needTime.multiply(laborClassCost).multiply(crewSize); |
|
|
} |
|
|
} |
|
|
return setupCost.add(laborCost).setScale(4, RoundingMode.HALF_UP); |
|
|
return setupCost.add(laborCost).setScale(4, RoundingMode.HALF_UP); |
|
|
@ -90,15 +93,18 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin |
|
|
|
|
|
|
|
|
private BigDecimal manufactureCost(QuoteDetailRouting quoteDetailRouting,BigDecimal qty){ |
|
|
private BigDecimal manufactureCost(QuoteDetailRouting quoteDetailRouting,BigDecimal qty){ |
|
|
BigDecimal setupCost = BigDecimal.ZERO; |
|
|
BigDecimal setupCost = BigDecimal.ZERO; |
|
|
if (Objects.nonNull(quoteDetailRouting.getWorkCenterCost()) && quoteDetailRouting.getWorkCenterCost().compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
|
|
BigDecimal workCenterCost = quoteDetailRouting.getWorkCenterCost(); |
|
|
|
|
|
|
|
|
if (Objects.nonNull(quoteDetailRouting.getManuCost()) && quoteDetailRouting.getManuCost().compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
|
|
BigDecimal manuCost = quoteDetailRouting.getManuCost(); |
|
|
BigDecimal setupTime = quoteDetailRouting.getMachSetupTime(); |
|
|
BigDecimal setupTime = quoteDetailRouting.getMachSetupTime(); |
|
|
setupCost = workCenterCost.multiply(setupTime.divide(qty,6, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
|
setupCost = manuCost.multiply(setupTime.divide(qty,6, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
|
BigDecimal manufactureCost = BigDecimal.ZERO; |
|
|
BigDecimal manufactureCost = BigDecimal.ZERO; |
|
|
BigDecimal machCycleTime = quoteDetailRouting.getMachCycleTime(); |
|
|
BigDecimal machCycleTime = quoteDetailRouting.getMachCycleTime(); |
|
|
|
|
|
if (Objects.isNull(quoteDetailRouting.getMachCycleTime()) || quoteDetailRouting.getMachCycleTime().compareTo(BigDecimal.ZERO) <= 0){ |
|
|
|
|
|
return setupCost.add(manufactureCost).setScale(4, RoundingMode.HALF_UP); |
|
|
|
|
|
} |
|
|
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); |
|
|
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); |
|
|
manufactureCost = workCenterCost.multiply(machCycleTime.divide(efficiencyFactor.divide(BigDecimal.valueOf(100),6, RoundingMode.HALF_UP),6, RoundingMode.HALF_UP).divide(qty,6, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
|
manufactureCost = manuCost.multiply(machCycleTime.multiply(efficiencyFactor.divide(BigDecimal.valueOf(100),6, RoundingMode.HALF_UP))); |
|
|
setupCost = setupCost.add(manufactureCost); |
|
|
setupCost = setupCost.add(manufactureCost); |
|
|
} |
|
|
} |
|
|
return setupCost.setScale(4, RoundingMode.HALF_UP); |
|
|
return setupCost.setScale(4, RoundingMode.HALF_UP); |
|
|
@ -113,8 +119,11 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl<QuoteDetailRoutin |
|
|
|
|
|
|
|
|
BigDecimal manufactureCost = BigDecimal.ZERO; |
|
|
BigDecimal manufactureCost = BigDecimal.ZERO; |
|
|
BigDecimal machCycleTime = quoteDetailRouting.getMachCycleTime(); |
|
|
BigDecimal machCycleTime = quoteDetailRouting.getMachCycleTime(); |
|
|
|
|
|
if (Objects.isNull(quoteDetailRouting.getMachCycleTime()) || quoteDetailRouting.getMachCycleTime().compareTo(BigDecimal.ZERO) <= 0){ |
|
|
|
|
|
return setupCost.add(manufactureCost).setScale(4, RoundingMode.HALF_UP); |
|
|
|
|
|
} |
|
|
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); |
|
|
BigDecimal efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); |
|
|
manufactureCost = workCenterCost.multiply(machCycleTime.divide(efficiencyFactor.divide(BigDecimal.valueOf(100),6, RoundingMode.HALF_UP),6, RoundingMode.HALF_UP).divide(qty,6, RoundingMode.HALF_UP)); |
|
|
|
|
|
|
|
|
manufactureCost = workCenterCost.multiply(machCycleTime.multiply(efficiencyFactor.divide(BigDecimal.valueOf(100),6, RoundingMode.HALF_UP))); |
|
|
setupCost = setupCost.add(manufactureCost); |
|
|
setupCost = setupCost.add(manufactureCost); |
|
|
} |
|
|
} |
|
|
return setupCost.setScale(4, RoundingMode.HALF_UP); |
|
|
return setupCost.setScale(4, RoundingMode.HALF_UP); |
|
|
|