From 22293572acea213c4e36f3b3758c175650b9e6b1 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 14 Feb 2022 17:02:59 +0800 Subject: [PATCH] fix: issue changed about version callback --- app/controllers/issues_controller.rb | 3 ++- app/models/issue.rb | 22 ++++++++++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 5590d9e87..ad53a4b3f 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -180,6 +180,7 @@ class IssuesController < ApplicationController elsif params[:issue_tag_ids].is_a?(Array) && params[:issue_tag_ids].size == 1 @issue&.issue_tags_relates&.destroy_all params[:issue_tag_ids].each do |tag| + next if tag == [""] IssueTagsRelate.create!(issue_id: @issue.id, issue_tag_id: tag) end else @@ -246,7 +247,7 @@ class IssuesController < ApplicationController end if params[:status_id].to_i == 5 #任务由非关闭状态到关闭状态时 @issue.issue_times.update_all(end_time: Time.now) - @issue.update_closed_issues_count_in_project! + # @issue.update_closed_issues_count_in_project! if @issue.issue_type.to_s == "2" && last_status_id != 5 if @issue.assigned_to_id.present? && last_status_id == 3 #只有当用户完成100%时,才给token post_to_chain("add", @issue.token, @issue.get_assign_user.try(:login)) diff --git a/app/models/issue.rb b/app/models/issue.rb index cecc4678c..c00f4e767 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -75,7 +75,7 @@ class Issue < ApplicationRecord scope :issue_index_includes, ->{includes(:tracker, :priority, :version, :issue_status, :journals,:issue_tags,user: :user_extension)} scope :closed, ->{where(status_id: 5)} after_create :incre_project_common, :incre_user_statistic, :incre_platform_statistic - after_update :change_versions_count + after_save :change_versions_count after_destroy :update_closed_issues_count_in_project!, :decre_project_common, :decre_user_statistic, :decre_platform_statistic def incre_project_common @@ -170,11 +170,25 @@ class Issue < ApplicationRecord end def change_versions_count - if self.version.present? && self.saved_change_to_status_id? + if self.saved_change_to_fixed_version_id? + before_version = Version.find_by_id(self.fixed_version_id_before_last_save) + Rails.logger.info self.fixed_version_id_before_last_save + if before_version.present? + Rails.logger.info self.status_id + Rails.logger.info self.status_id_before_last_save + # 更改前状态为完成 或者 更改前后都为完成状态 + if self.status_id_before_last_save == 5 + percent = before_version.issues_count == 0 ? 0.0 : ((before_version.closed_issues_count - 1).to_f / before_version.issues_count) + before_version.update_attributes(closed_issues_count: (before_version.closed_issues_count - 1), percent: percent) + end + end + end + + if self.version.present? && (self.saved_change_to_status_id? || self.saved_change_to_fixed_version_id?) if self.status_id == 5 percent = self.version.issues_count == 0 ? 0.0 : ((self.version.closed_issues_count + 1).to_f / self.version.issues_count) self.version.update_attributes(closed_issues_count: (self.version.closed_issues_count + 1), percent: percent) - elsif self.status_id_before_last_save == 5 + elsif self.status_id_before_last_save == 5 && !self.saved_change_to_fixed_version_id? percent = self.version.issues_count == 0 ? 0.0 : ((self.version.closed_issues_count - 1).to_f / self.version.issues_count) self.version.update_attributes(closed_issues_count: (self.version.closed_issues_count - 1), percent: percent) end @@ -182,7 +196,7 @@ class Issue < ApplicationRecord end def update_closed_issues_count_in_project! - self.project.decrement!(:closed_issues_count) + self.project.decrement!(:closed_issues_count) if self.status_id == 5 end end