diff --git a/pkg/application/summary_evaluation/service/service.go b/pkg/application/summary_evaluation/service/service.go index 25cf85e..6b0f25a 100644 --- a/pkg/application/summary_evaluation/service/service.go +++ b/pkg/application/summary_evaluation/service/service.go @@ -1944,10 +1944,18 @@ func (srv *SummaryEvaluationService) editEvaluationValue( } } } - //填充评估填写值 - err := newItemValue.FillValue(evaluationItem, v.Value, v.Remark) - if err != nil { - return err + if evaluationData.Types == domain.EvaluationSelf { + // 填充评估填写值 + err := newItemValue.EvaluationSelfFillValue(evaluationItem, v.Value, v.Remark) + if err != nil { + return err + } + } else { + //填充评估填写值 + err := newItemValue.FillValue(evaluationItem, v.Value, v.Remark) + if err != nil { + return err + } } } // 填入固定的默认值 diff --git a/pkg/domain/summary_evaluation_value.go b/pkg/domain/summary_evaluation_value.go index ffbc22d..e1f0bcd 100644 --- a/pkg/domain/summary_evaluation_value.go +++ b/pkg/domain/summary_evaluation_value.go @@ -114,3 +114,39 @@ func (itemValue *SummaryEvaluationValue) valueTypeScore(item *EvaluationItemUsed } return nil } + +// 填写综合自评 +func (itemValue *SummaryEvaluationValue) EvaluationSelfFillValue(item *EvaluationItemUsed, value string, remark string) error { + itemValue.Remark = remark + if item.Weight == 0 { + //使用评级的形式 + err := itemValue.valueTypeRating(item, value) + return err + } + //综合自评 评分的形式,特殊处理 + err := itemValue.valueTypeScoreEvaluationSelf(item, value) + return err +} + +func (itemValue *SummaryEvaluationValue) valueTypeScoreEvaluationSelf(item *EvaluationItemUsed, value string) error { + if item.Weight <= 0 { + return errors.New("评分方式错误") + } + value = strings.TrimSpace(value) + itemValue.Value = value + //处理空值 + if len(value) == 0 { + itemValue.Score = "0" + return nil + } + valueNumber, err := strconv.ParseFloat(value, 64) + if err != nil { + return fmt.Errorf("条目%d:%s-%s评分值异常", item.Id, item.Category, item.Name) + } + + // 分数保留2位小数 + score := valueNumber * item.Weight + itemValue.Score = fmt.Sprintf("%.2f", score) + + return nil +}