|
|
@ -233,19 +233,38 @@ func generateRequirementResult(req entities.Requirement, scope scopes.Result, re |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
totalAcquired := 0.0 |
|
|
|
totalRequired := 0.0 |
|
|
|
totalPlanned := 0.0 |
|
|
|
hasRequiredStats := false |
|
|
|
for _, stat := range resReq.Stats { |
|
|
|
if stat.Required > 0 { |
|
|
|
totalAcquired += math.Min(float64(stat.Acquired), float64(stat.Required)) * stat.Weight |
|
|
|
totalRequired += float64(stat.Required) * stat.Weight |
|
|
|
totalPlanned += math.Min(float64(stat.Planned), float64(stat.Required)) * stat.Weight |
|
|
|
hasRequiredStats = true |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
resReq.TotalRequired += totalRequired |
|
|
|
resReq.TotalAcquired += math.Min(totalAcquired, totalRequired) |
|
|
|
resReq.TotalPlanned += math.Min(totalPlanned, totalRequired) |
|
|
|
|
|
|
|
if hasRequiredStats { |
|
|
|
totalAcquired := 0.0 |
|
|
|
totalRequired := 0.0 |
|
|
|
totalPlanned := 0.0 |
|
|
|
for _, stat := range resReq.Stats { |
|
|
|
if stat.Required > 0 { |
|
|
|
totalAcquired += math.Min(float64(stat.Acquired), float64(stat.Required)) * stat.Weight |
|
|
|
totalRequired += float64(stat.Required) * stat.Weight |
|
|
|
totalPlanned += math.Min(float64(stat.Planned), float64(stat.Required)) * stat.Weight |
|
|
|
} |
|
|
|
} |
|
|
|
resReq.TotalRequired += totalRequired |
|
|
|
resReq.TotalAcquired += math.Min(totalAcquired, totalRequired) |
|
|
|
resReq.TotalPlanned += math.Min(totalPlanned, totalRequired) |
|
|
|
} else { |
|
|
|
for _, item := range resReq.Items { |
|
|
|
if item.AcquiredTime != nil { |
|
|
|
resReq.TotalAcquired += item.WeightedRequired |
|
|
|
} |
|
|
|
|
|
|
|
resReq.TotalRequired += item.WeightedRequired |
|
|
|
} |
|
|
|
resReq.TotalPlanned = resReq.TotalRequired |
|
|
|
} |
|
|
|
|
|
|
|
return resReq |
|
|
|
} |