From a6b7fa02b79fdf9fa362573ea69d9ae906d8e7b3 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Mon, 6 Apr 2020 14:32:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/issue.rb | 2 +- app/models/journal.rb | 245 +++++++++++++++++++++--------------------- 2 files changed, 124 insertions(+), 123 deletions(-) diff --git a/app/models/issue.rb b/app/models/issue.rb index 5e456563a..2cdb66b04 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -42,7 +42,7 @@ class Issue < ApplicationRecord new_attachment_name = self.attachments.select(:filename,:id).where(id: issue_files).pluck(:filename).join(",") journal.journal_details.create(property: "attachment", prop_key: "#{issue_files.size}", old_value: old_attachment_names, value: new_attachment_name) end - change_values = %w(subject is_private assigned_to_id tracker_id status_id priority_id fixed_version_id start_date due_date estimated_hours done_ratio issue_tags_value issue_type token branch_name) + change_values = %w(subject description is_private assigned_to_id tracker_id status_id priority_id fixed_version_id start_date due_date estimated_hours done_ratio issue_tags_value issue_type token branch_name) change_values.each do |at| if self.send("saved_change_to_#{at}?") journal.journal_details.create(property: "attr", prop_key: "#{at}", old_value: self.send("#{at}_before_last_save"), value: self.send(at)) diff --git a/app/models/journal.rb b/app/models/journal.rb index 185cc7966..f730878df 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -19,129 +19,130 @@ class Journal < ApplicationRecord details = self.journal_details.select(:property, :prop_key, :old_value, :value).pluck(:property, :prop_key, :old_value, :value) if details.size > 0 details.each do |de| - unless de[1].to_s == "description" - if de[0] == "attr" - content = "" - else - content = "附件" - end - old_value = de[2] - value = de[3] - if de[1].to_i > 0 - prop_name = "" - else - prop_name = I18n.t("journal_detail.#{de[1]}") - case de[1] - when "is_private" - old_value = I18n.t("journal_detail.#{de[2]}") - value = I18n.t("journal_detail.#{de[3]}") - when "assigned_to_id" - u = User.select(:id, :login, :lastname, :firstname, :nickname) - old_value = de[2].to_i > 0 ? u.find_by_id(de[2]).try(:show_real_name) : "" - assign_user = de[3].to_i > 0 ? u.find_by_id(de[3]) : "" - if assign_user.present? - value = assign_user.try(:show_real_name) - else - value = "" - end - - when "tracker_id" - t = Tracker.select(:id, :name) - old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name) : "" - tracker_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" - if tracker_name - value = tracker_name.try(:name) - else - value = "" - end - - when "status_id" - t = IssueStatus.select(:id, :name) - old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name) : "" - type_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" - if type_name - value = type_name.try(:name) - else - value = "" - end - when "priority_id" - t = IssuePriority.select(:id, :name) - old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name): "" - type_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" - if type_name - value = type_name.try(:name) - else - value = "" - end - when "issue_tags_value" - t = IssueTag.select(:id, :name) - old_value = de[2].to_i > 0 ? t.where(id: de[2].split(",")).select(:id,:name,:color).as_json : "" - if de[3].present? - value = t.where(id: de[3].split(",")).select(:id,:name,:color).as_json - else - value = "" - end - when "fixed_version_id" - t = Version.select(:id, :name) - old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name) : "" - type_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" - if type_name - value = type_name.try(:name) - else - value = "" - end - when "end_time" - t = IssueTime.select(:id, :start_time, :end_time) - type_name = de[2].to_i > 0 ? t.find_by_id(de[2]) : "" - if type_name.present? - old_value = "停止工作" - d_value = type_name.end_time.to_i - type_name.start_time.to_i - value = "#{Time.at(d_value).utc.strftime('%H h %M min %S s')}" - else - old_value = "停止工作" - value = "" - end - when "issue_depend" - t = Issue.select(:id,:subject ) - type_name = de[3].present? ? t&.find_by_id(de[3]) : "" - if type_name.present? - old_value = "增加依赖" - value = { - id: de[3], - name: type_name.try(:subject) - } - else - old_value = "增加依赖" - value = "" - end - when "destroy_issue_depend" - t = Issue.select(:id,:subject ) - type_name = de[3].present? ? t&.find_by_id(de[3]) : "" - if type_name.present? - old_value = "删除依赖" - value = { - id: de[3], - name: type_name.try(:subject) - } - else - old_value = "删除依赖" - value = "" - end - when "done_ratio" - old_value = "#{de[2]}%" - value = "#{de[3]}%" - else - old_value = de[2] - value = de[3] - end - end - prop_hash = { - detail: (content + prop_name), - old_value: old_value, - value: value - } - send_details.push(prop_hash) + if de[0] == "attr" + content = "" + else + content = "附件" end + old_value = de[2] + value = de[3] + if de[1].to_i > 0 + prop_name = "" + else + prop_name = I18n.t("journal_detail.#{de[1]}") + case de[1] + when "description" + old_value = "描述已更新" + value = "修改了描述" + when "is_private" + old_value = I18n.t("journal_detail.#{de[2]}") + value = I18n.t("journal_detail.#{de[3]}") + when "assigned_to_id" + u = User.select(:id, :login, :lastname, :firstname, :nickname) + old_value = de[2].to_i > 0 ? u.find_by_id(de[2]).try(:show_real_name) : "" + assign_user = de[3].to_i > 0 ? u.find_by_id(de[3]) : "" + if assign_user.present? + value = assign_user.try(:show_real_name) + else + value = "" + end + + when "tracker_id" + t = Tracker.select(:id, :name) + old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name) : "" + tracker_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" + if tracker_name + value = tracker_name.try(:name) + else + value = "" + end + + when "status_id" + t = IssueStatus.select(:id, :name) + old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name) : "" + type_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" + if type_name + value = type_name.try(:name) + else + value = "" + end + when "priority_id" + t = IssuePriority.select(:id, :name) + old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name): "" + type_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" + if type_name + value = type_name.try(:name) + else + value = "" + end + when "issue_tags_value" + t = IssueTag.select(:id, :name) + old_value = de[2].to_i > 0 ? t.where(id: de[2].split(",")).select(:id,:name,:color).as_json : "" + if de[3].present? + value = t.where(id: de[3].split(",")).select(:id,:name,:color).as_json + else + value = "" + end + when "fixed_version_id" + t = Version.select(:id, :name) + old_value = de[2].to_i > 0 ? t.find_by_id(de[2]).try(:name) : "" + type_name = de[3].to_i > 0 ? t.find_by_id(de[3]) : "" + if type_name + value = type_name.try(:name) + else + value = "" + end + when "end_time" + t = IssueTime.select(:id, :start_time, :end_time) + type_name = de[2].to_i > 0 ? t.find_by_id(de[2]) : "" + if type_name.present? + old_value = "停止工作" + d_value = type_name.end_time.to_i - type_name.start_time.to_i + value = "#{Time.at(d_value).utc.strftime('%H h %M min %S s')}" + else + old_value = "停止工作" + value = "" + end + when "issue_depend" + t = Issue.select(:id,:subject ) + type_name = de[3].present? ? t&.find_by_id(de[3]) : "" + if type_name.present? + old_value = "增加依赖" + value = { + id: de[3], + name: type_name.try(:subject) + } + else + old_value = "增加依赖" + value = "" + end + when "destroy_issue_depend" + t = Issue.select(:id,:subject ) + type_name = de[3].present? ? t&.find_by_id(de[3]) : "" + if type_name.present? + old_value = "删除依赖" + value = { + id: de[3], + name: type_name.try(:subject) + } + else + old_value = "删除依赖" + value = "" + end + when "done_ratio" + old_value = "#{de[2]}%" + value = "#{de[3]}%" + else + old_value = de[2] + value = de[3] + end + end + prop_hash = { + detail: (content + prop_name), + old_value: old_value, + value: value + } + send_details.push(prop_hash) end end end