diff --git a/src/main/java/com/xujie/sys/modules/quote/entity/QuoteDetailRouting.java b/src/main/java/com/xujie/sys/modules/quote/entity/QuoteDetailRouting.java index 6c7f3377..4237d25d 100644 --- a/src/main/java/com/xujie/sys/modules/quote/entity/QuoteDetailRouting.java +++ b/src/main/java/com/xujie/sys/modules/quote/entity/QuoteDetailRouting.java @@ -98,6 +98,8 @@ public class QuoteDetailRouting { private BigDecimal workCenterCost; + private BigDecimal manuCost; + @TableField(exist = false) private String partDesc; diff --git a/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java b/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java index cc48d547..a4f19851 100644 --- a/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java +++ b/src/main/java/com/xujie/sys/modules/quote/service/impl/QuoteDetailRoutingServiceImpl.java @@ -78,11 +78,14 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl 0){ 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 efficiencyFactor = quoteDetailRouting.getEfficiencyFactor(); BigDecimal crewSize = quoteDetailRouting.getCrewSize(); // 人工生产时间/(效率*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); } return setupCost.add(laborCost).setScale(4, RoundingMode.HALF_UP); @@ -90,15 +93,18 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl 0){ - BigDecimal workCenterCost = quoteDetailRouting.getWorkCenterCost(); + if (Objects.nonNull(quoteDetailRouting.getManuCost()) && quoteDetailRouting.getManuCost().compareTo(BigDecimal.ZERO) > 0){ + BigDecimal manuCost = quoteDetailRouting.getManuCost(); 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 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(); - 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); } return setupCost.setScale(4, RoundingMode.HALF_UP); @@ -113,8 +119,11 @@ public class QuoteDetailRoutingServiceImpl extends ServiceImpl