作者 郑周

1. 更新周期模板时,新的模板Rule数据未赋值,导致出现null

@@ -160,6 +160,7 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf @@ -160,6 +160,7 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf
160 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext}) 160 cycleRepository := factory.CreateEvaluationCycleRepository(map[string]interface{}{"transactionContext": transactionContext})
161 cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 161 cycleTemplateRepository := factory.CreateEvaluationCycleTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
162 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext}) 162 templateRepository := factory.CreateEvaluationTemplateRepository(map[string]interface{}{"transactionContext": transactionContext})
  163 + ruleRepository := factory.CreateEvaluationRuleRepository(map[string]interface{}{"transactionContext": transactionContext})
163 164
164 // 检测名称重复(排除自己) 165 // 检测名称重复(排除自己)
165 count, err := cycleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId, "notId": in.Id}) 166 count, err := cycleRepository.Count(map[string]interface{}{"name": in.Name, "companyId": in.CompanyId, "notId": in.Id})
@@ -208,8 +209,49 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf @@ -208,8 +209,49 @@ func (rs *EvaluationCycleService) Update(in *command.UpdateCycleCommand) (interf
208 if err != nil { 209 if err != nil {
209 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 210 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
210 } 211 }
  212 +
  213 + // 获取所有模板中的规则对象数据
  214 + ruleMap := map[int64]*domain.EvaluationRule{}
211 for i := range templates { 215 for i := range templates {
212 v := templates[i] 216 v := templates[i]
  217 + for j := range v.LinkNodes {
  218 + node := v.LinkNodes[j]
  219 + for k := range node.NodeContents {
  220 + nodeContent := node.NodeContents[k]
  221 + if nodeContent.RuleId != 0 {
  222 + ruleMap[nodeContent.RuleId] = nil
  223 + }
  224 + }
  225 + }
  226 + }
  227 + ruleIds := make([]int64, 0)
  228 + for k := range ruleMap {
  229 + ruleIds = append(ruleIds, k)
  230 + }
  231 + if len(ruleIds) > 0 {
  232 + if _, rules, err := ruleRepository.Find(map[string]interface{}{"ids": ruleIds, "companyId": in.CompanyId}); err != nil {
  233 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  234 + } else {
  235 + for i := range rules {
  236 + ruleMap[rules[i].Id] = rules[i]
  237 + }
  238 + }
  239 + }
  240 +
  241 + for i := range templates {
  242 + v := templates[i]
  243 +
  244 + // 对评估模板中的评估规则进行数据赋值
  245 + for j := range v.LinkNodes {
  246 + node := v.LinkNodes[j]
  247 + for k := range node.NodeContents {
  248 + nodeContent := node.NodeContents[k]
  249 + if rule, ok := ruleMap[nodeContent.RuleId]; ok {
  250 + nodeContent.Rule = rule
  251 + }
  252 + }
  253 + }
  254 +
213 cycleTemplate := &domain.EvaluationCycleTemplate{ 255 cycleTemplate := &domain.EvaluationCycleTemplate{
214 Id: 0, 256 Id: 0,
215 Name: v.Name, 257 Name: v.Name,