diff --git a/app/controllers/api/pm/issue_links_controller.rb b/app/controllers/api/pm/issue_links_controller.rb
index fe2c93c82..370e61d13 100644
--- a/app/controllers/api/pm/issue_links_controller.rb
+++ b/app/controllers/api/pm/issue_links_controller.rb
@@ -6,16 +6,40 @@ class Api::Pm::IssueLinksController < Api::Pm::BaseController
end
def create
- params[:link_ids].map { |e| @issue.pm_links.find_or_create_by(be_linkable_type: 'Issue', be_linkable_id: e) }
- render_ok
+ begin
+ ActiveRecord::Base.transaction do
+ params[:link_ids].each do |e|
+ @issue.pm_links.find_or_create_by!(be_linkable_type: 'Issue', be_linkable_id: e)
+ tag_issue = Issue.find_by_id(e)
+ next unless tag_issue.present?
+ journal = tag_issue.journals.create!({user_id: current_id.id})
+ journal.journal_details.create!({property: "tag_link_issue", prop_key: "1", value: @issue.id.to_s})
+ end
+ journal = @issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "tag_link_issue", prop_key: "#{params[:link_ids].size}", value: params[:link_ids].join(",")})
+ end
+ render_ok
+ rescue
+ render_error('创建失败!')
+ end
end
def destroy
- @links = PmLink.where(be_linkable_id: @issue.id, be_linkable_type: 'Issue', linkable_id: params[:id], linkable_type: 'Issue').or(PmLink.where(linkable_id: @issue.id, linkable_type: 'Issue', be_linkable_id: params[:id], be_linkable_type: 'Issue'))
- @link = @links.last
- if @link.try(:destroy)
+ begin
+ ActiveRecord::Base.transaction do
+ @links = PmLink.where(be_linkable_id: @issue.id, be_linkable_type: 'Issue', linkable_id: params[:id], linkable_type: 'Issue').or(PmLink.where(linkable_id: @issue.id, linkable_type: 'Issue', be_linkable_id: params[:id], be_linkable_type: 'Issue'))
+ journal = @issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "tag_link_issue", prop_key: "1", old_value: params[:id].to_s})
+ another_issue = Issue.find_by_id(params[:id])
+ if another_issue.present?
+ journal = another_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "tag_link_issue", prop_key: "1", old_value: @issue.id.to_s})
+ end
+ @link = @links.last
+ @link.destroy!
+ end
render_ok
- else
+ rescue
render_error('删除失败!')
end
end
diff --git a/app/models/issue.rb b/app/models/issue.rb
index cb8b98cce..955f903e9 100644
--- a/app/models/issue.rb
+++ b/app/models/issue.rb
@@ -109,6 +109,20 @@ class Issue < ApplicationRecord
after_save :incre_or_decre_closed_issues_count, :change_versions_count, :send_update_message_to_notice_system, :associate_attachment_container, :generate_uuid
after_destroy :update_closed_issues_count_in_project!, :decre_project_common, :decre_user_statistic, :decre_platform_statistic, :destroy_be_pm_links
+
+ def pm_issue_type_string
+ case pm_issue_type
+ when 1
+ "requirement"
+ when 2
+ "task"
+ when 3
+ "bug"
+ else
+ "issue"
+ end
+ end
+
def destroy_be_pm_links
PmLink.where(be_linkable_type:"Issue",be_linkable_id:self.id).map(&:destroy)
end
diff --git a/app/models/journal.rb b/app/models/journal.rb
index 1c37d2f1b..d387366aa 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -114,8 +114,8 @@ class Journal < ApplicationRecord
content.gsub!('拒绝', '已拒绝')
return content
when 'root_id'
- old_value = Issue.find_by_id(detail.old_value)&.subject
- new_value = Issue.find_by_id(detail.value)&.subject
+ old_value = "#{Issue.find_by_id(detail.old_value)&.subject}"
+ new_value = "#{Issue.find_by_id(detail.value)&.subject}"
if old_value.nil? || old_value.blank?
content += "关联了父需求<#{new_value}>"
else
@@ -127,28 +127,28 @@ class Journal < ApplicationRecord
end
return content
when 'leaf_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "新建了子需求#{new_value}"
+ content += "新建了子需求#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "删除了关联的子需求#{old_value}"
+ content += "删除了关联的子需求#{old_value}"
else
- content += "新建了子需求#{new_value}"
+ content += "新建了子需求#{new_value}"
end
end
return content
when 'tag_leaf_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "关联了子需求#{new_value}"
+ content += "关联了子需求#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "取消了关联的子需求#{old_value}"
+ content += "取消了关联的子需求#{old_value}"
else
- content += "关联了子需求#{new_value}"
+ content += "关联了子需求#{new_value}"
end
end
return content
@@ -174,8 +174,8 @@ class Journal < ApplicationRecord
content.gsub!('拒绝', '已拒绝')
return content
when 'root_id'
- old_value = Issue.find_by_id(detail.old_value)&.subject
- new_value = Issue.find_by_id(detail.value)&.subject
+ old_value = "#{Issue.find_by_id(detail.old_value)&.subject}"
+ new_value = "#{Issue.find_by_id(detail.value)&.subject}"
if old_value.nil? || old_value.blank?
content += "关联了父任务<#{new_value}>"
else
@@ -187,28 +187,28 @@ class Journal < ApplicationRecord
end
return content
when 'leaf_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "新建了子任务#{new_value}"
+ content += "新建了子任务#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "删除了关联的子任务#{old_value}"
+ content += "删除了关联的子任务#{old_value}"
else
- content += "新建了子任务#{new_value}"
+ content += "新建了子任务#{new_value}"
end
end
return content
when 'tag_leaf_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "关联了子任务#{new_value}"
+ content += "关联了子任务#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "取消了关联的子任务#{old_value}"
+ content += "取消了关联的子任务#{old_value}"
else
- content += "关联了子任务#{new_value}"
+ content += "关联了子任务#{new_value}"
end
end
return content
@@ -234,8 +234,8 @@ class Journal < ApplicationRecord
content.gsub!('拒绝', '已拒绝')
return content
when 'root_id'
- old_value = Issue.find_by_id(detail.old_value)&.subject
- new_value = Issue.find_by_id(detail.value)&.subject
+ old_value = "#{Issue.find_by_id(detail.old_value)&.subject}"
+ new_value = "#{Issue.find_by_id(detail.value)&.subject}"
if old_value.nil? || old_value.blank?
content += "关联了父缺陷<#{new_value}>"
else
@@ -247,28 +247,28 @@ class Journal < ApplicationRecord
end
return content
when 'leaf_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "新建了子缺陷#{new_value}"
+ content += "新建了子缺陷#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "删除了关联的子缺陷#{old_value}"
+ content += "删除了关联的子缺陷#{old_value}"
else
- content += "新建了子缺陷#{new_value}"
+ content += "新建了子缺陷#{new_value}"
end
end
return content
when 'tag_leaf_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "关联了子缺陷#{new_value}"
+ content += "关联了子缺陷#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "取消了关联的子缺陷#{old_value}"
+ content += "取消了关联的子缺陷#{old_value}"
else
- content += "关联了子缺陷#{new_value}"
+ content += "关联了子缺陷#{new_value}"
end
end
return content
@@ -429,41 +429,41 @@ class Journal < ApplicationRecord
end
return content
when 'assigner'
- old_value = User.where(id: detail.old_value.split(",")).map{|u| u.real_name}.join("、")
- new_value = User.where(id: detail.value.split(",")).map{|u| u.real_name}.join("、")
+ old_value = User.where(id: detail.old_value.split(",")).map{|u| "#{u.real_name}"}.join("、")
+ new_value = User.where(id: detail.value.split(",")).map{|u| "#{u.real_name}"}.join("、")
if old_value.nil? || old_value.blank?
- content += "添加负责人#{new_value}"
+ content += "添加负责人#{new_value}"
else
if new_value.nil? || new_value.blank?
content += "将负责人更改为未设置"
else
- content += "将负责人由#{old_value}更改为#{new_value}"
+ content += "将负责人由#{old_value}更改为#{new_value}"
end
end
return content
when 'issue_tag'
- old_value = IssueTag.where(id: detail.old_value.split(",")).pluck(:name).join("、")
- new_value = IssueTag.where(id: detail.value.split(",")).pluck(:name).join("、")
+ old_value = IssueTag.where(id: detail.old_value.split(",")).map{|t| "#{t.name}"}.join("、")
+ new_value = IssueTag.where(id: detail.value.split(",")).map{|t| "#{t.name}"}.join("、")
if old_value.nil? || old_value.blank?
- content += "添加标记#{new_value}"
+ content += "添加标记#{new_value}"
else
if new_value.nil? || new_value.blank?
content += "将标记更改为未设置"
else
- content += "将标记由#{old_value}更改为#{new_value}"
+ content += "将标记由#{old_value}更改为#{new_value}"
end
end
return content
when 'link_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "关联了工作项#{new_value}"
+ content += "新建了关联的工作项#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "取消了关联的工作项#{old_value}"
+ content += "删除了关联的工作项#{old_value}"
else
- content += "关联了工作项#{new_value}"
+ content += "新建了关联的工作项#{new_value}"
end
end
content.gsub!('1', "需求")
@@ -471,17 +471,20 @@ class Journal < ApplicationRecord
content.gsub!('3', "缺陷")
return content
when 'tag_link_issue'
- old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
- new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
+ old_value = Issue.where(id: detail.old_value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
+ new_value = Issue.where(id: detail.value.to_s.split(",")).map{|i| "[#{i.pm_issue_type}]-<#{i.subject}>"}.join("、")
if old_value.nil? || old_value.blank?
- content += "新建了关联的工作项#{new_value}"
+ content += "关联了工作项#{new_value}"
else
if new_value.nil? || new_value.blank?
- content += "删除了关联的工作项#{old_value}"
+ content += "取消了关联的工作项#{old_value}"
else
- content += "新建了关联的工作项#{new_value}"
+ content += "关联了工作项#{new_value}"
end
end
+ content.gsub!('1', "需求")
+ content.gsub!('2', "任务")
+ content.gsub!('3', "缺陷")
return content
when 'issue'
issue = self.issue
diff --git a/app/services/api/pm/issues/create_service.rb b/app/services/api/pm/issues/create_service.rb
index 796faf1e5..5412fe17d 100644
--- a/app/services/api/pm/issues/create_service.rb
+++ b/app/services/api/pm/issues/create_service.rb
@@ -55,16 +55,6 @@ class Api::Pm::Issues::CreateService < ApplicationService
load_atme_receivers(receivers_login) unless receivers_login.blank?
try_lock("Api::Pm::Issues::CreateService:#{project.id}") # 开始写数据,加锁
@created_issue = Issue.new(issue_attributes)
- build_author_participants
- build_assigner_participants unless assigner_ids.blank?
- build_atme_participants if @atme_receivers.present?
- build_issue_journal_details
- build_issue_project_trends
- @created_issue.assigners = @assigners unless assigner_ids.blank?
- @created_issue.attachments = @attachments unless attachment_ids.blank?
- @created_issue.issue_tags = @issue_tags unless issue_tag_ids.blank?
- @created_issue.pm_project_id = @pm_project_id
- @created_issue.pm_sprint_id = @pm_sprint_id
@created_issue.pm_issue_type = @pm_issue_type
if @root_subject.present? && @pm_issue_type.to_i == 4
@root_issue = Issue.find_by(subject: @root_subject, pm_issue_type: 4, pm_project_id: @pm_project_id)
@@ -75,12 +65,35 @@ class Api::Pm::Issues::CreateService < ApplicationService
else
@created_issue.root_id = @root_id
end
+ build_author_participants
+ build_assigner_participants unless assigner_ids.blank?
+ build_atme_participants if @atme_receivers.present?
+ build_issue_journal_details
+ build_issue_project_trends
+ @created_issue.assigners = @assigners unless assigner_ids.blank?
+ @created_issue.attachments = @attachments unless attachment_ids.blank?
+ @created_issue.issue_tags = @issue_tags unless issue_tag_ids.blank?
+ @created_issue.pm_project_id = @pm_project_id
+ @created_issue.pm_sprint_id = @pm_sprint_id
@created_issue.time_scale = @time_scale
@created_issue.issue_tags_value = @issue_tags.order('id asc').pluck(:id).join(',') unless issue_tag_ids.blank?
@created_issue.changer_id = @current_user.id
@created_issue.save!
-
- PmLink.create(be_linkable_type: 'Issue', be_linkable_id: @created_issue.id, linkable_type: 'Issue', linkable_id: @linkable_id) if @linkable_id.present?
+ if @created_issue.parent_issue.present?
+ parent_issue = @created_issue.parent_issue
+ if @created_issue.root_id.present? && parent_issue.present?
+ journal = parent_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: @created_issue.pm_issue_type_string, prop_key: 'leaf_issue', value: @created_issue.id.to_s})
+ end
+ end
+ if @linkable_id.present?
+ PmLink.create(be_linkable_type: 'Issue', be_linkable_id: @created_issue.id, linkable_type: 'Issue', linkable_id: @linkable_id)
+ another_issue = Issue.find_by_id(@linkable_id)
+ if another_issue.present?
+ journal = another_issue.journals.create!({user_id: @current_user.id})
+ journal.journal_details.create!({property: 'link_issue', prop_key: "1", value: @created_issue.id.to_s})
+ end
+ end
if Site.has_blockchain? && @project.use_blockchain
if @created_issue.blockchain_token_num.present? && @created_issue.blockchain_token_num > 0
Blockchain::CreateIssue.call({user_id: current_user.id, project_id: @created_issue.project_id, token_num: @created_issue.blockchain_token_num})
@@ -163,6 +176,6 @@ class Api::Pm::Issues::CreateService < ApplicationService
def build_issue_journal_details
journal = @created_issue.journals.new({user_id: current_user.id})
- journal.journal_details.new({property: 'issue', prop_key: 1, old_value: '', value: ''})
+ journal.journal_details.new({property: @created_issue.pm_issue_type_string, prop_key: 1, old_value: '', value: ''})
end
end
\ No newline at end of file
diff --git a/app/services/api/pm/issues/delete_service.rb b/app/services/api/pm/issues/delete_service.rb
index 2d5df500e..0a04094c3 100644
--- a/app/services/api/pm/issues/delete_service.rb
+++ b/app/services/api/pm/issues/delete_service.rb
@@ -14,21 +14,27 @@ class Api::Pm::Issues::DeleteService < ApplicationService
def call
raise Error, errors.full_messages.join(", ") unless valid?
try_lock("Api::V1::Issues::DeleteService:#{project.id}") # 开始写数据,加锁
+ ActiveRecord::Base.transaction do
+ parent_issue = @issue.parent_issue
+ if @issue.root_id.present? && parent_issue.present?
+ journal = parent_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: @issue.pm_issue_type_string, prop_key: 'leaf_issue', old_value: @issue.id.to_s})
+ end
- delete_issue
- #删除双向关联
- PmLink.where(be_linkable_id: @issue.id, be_linkable_type: 'Issue').or(PmLink.where(linkable_id: @issue.id, linkable_type: 'Issue')).map(&:destroy)
+ delete_issue
+ #删除双向关联
+ PmLink.where(be_linkable_id: @issue.id, be_linkable_type: 'Issue').or(PmLink.where(linkable_id: @issue.id, linkable_type: 'Issue')).map(&:destroy)
- project.incre_project_issue_cache_delete_count
+ project.incre_project_issue_cache_delete_count
- if Site.has_blockchain? && @project.use_blockchain && !project.id.zero?
- unlock_balance_on_blockchain(@issue.author_id.to_s, @project.id.to_s, @issue.blockchain_token_num.to_i) if @issue.blockchain_token_num.present?
+ if Site.has_blockchain? && @project.use_blockchain && !project.id.zero?
+ unlock_balance_on_blockchain(@issue.author_id.to_s, @project.id.to_s, @issue.blockchain_token_num.to_i) if @issue.blockchain_token_num.present?
+ end
+
+ if Site.has_notice_menu? && !project.id.zero?
+ SendTemplateMessageJob.perform_later('IssueDeleted', current_user.id, @issue&.subject, @issue.assigners.pluck(:id), @issue.author_id)
+ end
end
-
- if Site.has_notice_menu? && !project.id.zero?
- SendTemplateMessageJob.perform_later('IssueDeleted', current_user.id, @issue&.subject, @issue.assigners.pluck(:id), @issue.author_id)
- end
-
unlock("Api::V1::Issues::DeleteService:#{project.id}")
return true
diff --git a/app/services/api/pm/issues/update_service.rb b/app/services/api/pm/issues/update_service.rb
index 99896e884..7196a497e 100644
--- a/app/services/api/pm/issues/update_service.rb
+++ b/app/services/api/pm/issues/update_service.rb
@@ -196,7 +196,7 @@ class Api::Pm::Issues::UpdateService < ApplicationService
# 修改状态
if @updated_issue.previous_changes["status_id"].present?
journal = @updated_issue.journals.create!({user_id: current_user.id})
- journal.journal_details.create!({property: "attr", prop_key: "status_id", old_value: @updated_issue.previous_changes["status_id"][0], value: @updated_issue.previous_changes["status_id"][1]})
+ journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "status_id", old_value: @updated_issue.previous_changes["status_id"][0], value: @updated_issue.previous_changes["status_id"][1]})
end
# 修改优先级
@@ -205,6 +205,24 @@ class Api::Pm::Issues::UpdateService < ApplicationService
journal.journal_details.create!({property: "attr", prop_key: "priority_id", old_value: @updated_issue.previous_changes["priority_id"][0], value: @updated_issue.previous_changes["priority_id"][1]})
end
+ # 修改工作项类型
+ if @updated_issue.previous_changes["pm_issue_type"].present?
+ journal = @updated_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "attr", prop_key: "pm_issue_type", old_value: @updated_issue.previous_changes["pm_issue_type"][0], value: @updated_issue.previous_changes["pm_issue_type"][1]})
+ end
+
+ # 修改迭代
+ if @updated_issue.previous_changes["pm_sprint_id"].present?
+ journal = @updated_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "attr", prop_key: "pm_sprint_id", old_value: @updated_issue.previous_changes["pm_sprint_id"][0], value: @updated_issue.previous_changes["pm_sprint_id"][1]})
+ end
+
+ # 修改代码库
+ if @updated_issue.previous_changes["project_id"].present?
+ journal = @updated_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "attr", prop_key: "project_id", old_value: @updated_issue.previous_changes["project_id"][0], value: @updated_issue.previous_changes["project_id"][1]})
+ end
+
# 修改里程碑
if @updated_issue.previous_changes["fixed_version_id"].present?
journal = @updated_issue.journals.create!({user_id: current_user.id})
@@ -228,6 +246,31 @@ class Api::Pm::Issues::UpdateService < ApplicationService
journal = @updated_issue.journals.create!({user_id: current_user.id})
journal.journal_details.create!({property: "attr", prop_key: "due_date", old_value: @updated_issue.previous_changes["due_date"][0], value: @updated_issue.previous_changes["due_date"][1]})
end
+
+ # 更改预估工时
+ if @updated_issue.previous_changes["time_scale"].present?
+ journal = @updated_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: "attr", prop_key: "time_scale", old_value: @updated_issue.previous_changes["time_scale"][0], value: @updated_issue.previous_changes["time_scale"][1]})
+ end
+
+ # 更改父工作项
+ if @updated_issue.previous_changes["root_id"].present?
+ journal = @updated_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "root_id", old_value: @updated_issue.previous_changes["root_id"][0], value: @updated_issue.previous_changes["root_id"][1]})
+
+ # 更改子工作项
+ before_parent_issue = Issue.find_by_id(@updated_issue.previous_changes["root_id"][0])
+ if before_parent_issue.present?
+ journal = before_parent_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "tag_leaf_issue", old_value: @updated_issue.previous_changes["root_id"][0]})
+ end
+
+ after_parent_issue = Issue.find_by_id(@updated_issue.previous_changes["root_id"][1])
+ if after_parent_issue.present?
+ journal = after_parent_issue.journals.create!({user_id: current_user.id})
+ journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "tag_leaf_issue", value: @updated_issue.previous_changes["root_id"][1]})
+ end
+ end
rescue
raise Error, "创建操作记录失败!"
end