diff --git a/app/controllers/api/pm/issues_controller.rb b/app/controllers/api/pm/issues_controller.rb index 991265db3..2fad5bc18 100644 --- a/app/controllers/api/pm/issues_controller.rb +++ b/app/controllers/api/pm/issues_controller.rb @@ -10,6 +10,7 @@ class Api::Pm::IssuesController < Api::Pm::BaseController @total_issues_count = @object_result[:total_issues_count] @opened_issues_count = @object_result[:opened_issues_count] @closed_issues_count = @object_result[:closed_issues_count] + @complete_issues_count = @object_result[:complete_issues_count] if params[:only_name].present? @issues = kaminary_select_paginate( @object_result[:data].select(:id, :subject, :project_issues_index, :updated_on, :created_on)) diff --git a/app/controllers/api/pm/sprint_issues_controller.rb b/app/controllers/api/pm/sprint_issues_controller.rb index 72e0d367d..6aff44379 100644 --- a/app/controllers/api/pm/sprint_issues_controller.rb +++ b/app/controllers/api/pm/sprint_issues_controller.rb @@ -20,11 +20,15 @@ class Api::Pm::SprintIssuesController < Api::Pm::BaseController @issues_hour_count = @issues.group(:pm_sprint_id).sum(:time_scale) @issues_hour_type_count = @issues.group(:pm_sprint_id, :status_id).sum(:time_scale) pm_sprint_ids.map(&:to_i).map do |sprint_id| + # count_closed 工作项已完成/已关闭数量,需排除已修复的缺陷数量 + count_closed = @issues_type_count[[sprint_id, 5]].to_i + @issues_type_count[[sprint_id, 3]].to_i - @issues.where(pm_issue_type: 3, status_id: 3).size + # hour_closed 已完成/已关闭 预估工时之和,需排除已修复的缺陷预估工时 + hour_closed = @issues_hour_type_count[[sprint_id, 5]].to_f + @issues_hour_type_count[[sprint_id, 3]].to_f - @issues.where(pm_issue_type: 3, status_id: 3).sum(:time_scale).to_f data[sprint_id] = { count_total: @issues_count[sprint_id] || 0, - count_closed: @issues_type_count[[sprint_id, 5]] || 0, - hour_total: @issues_hour_count[sprint_id] || 0, - hour_closed: @issues_hour_type_count[[sprint_id, 5]] || 0, + count_closed: count_closed || 0, + hour_total: @issues_hour_count[sprint_id].to_f || 0, + hour_closed: hour_closed || 0, requirement: @issues_pm_type_count[[sprint_id, 1]] || 0, task: @issues_pm_type_count[[sprint_id, 2]] || 0, bug: @issues_pm_type_count[[sprint_id, 3]] || 0 diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index 17db797a6..5183fbdb9 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -5,7 +5,7 @@ class Api::V1::Issues::ListService < ApplicationService attr_reader :begin_date, :end_date attr_reader :milestone_id, :assigner_id, :status_id, :sort_by, :sort_direction, :current_user attr_reader :pm_project_id, :pm_sprint_id, :root_id, :pm_issue_type, :status_ids - attr_accessor :queried_issues, :total_issues_count, :closed_issues_count, :opened_issues_count + attr_accessor :queried_issues, :total_issues_count, :closed_issues_count, :opened_issues_count, :complete_issues_count validates :category, inclusion: { in: %w[all opened closed], message: '请输入正确的Category'} validates :participant_category, inclusion: { in: %w[all aboutme authoredme assignedme atme], message: '请输入正确的ParticipantCategory'} @@ -41,7 +41,13 @@ class Api::V1::Issues::ListService < ApplicationService # begin issue_query_data - {data: queried_issues, total_issues_count: @total_issues_count, closed_issues_count: @closed_issues_count, opened_issues_count: @opened_issues_count} + { + data: queried_issues, + total_issues_count: @total_issues_count, + closed_issues_count: @closed_issues_count, + opened_issues_count: @opened_issues_count, + complete_issues_count: @complete_issues_count + } # rescue # raise Error, "服务器错误,请联系系统管理员!" # end @@ -108,6 +114,7 @@ class Api::V1::Issues::ListService < ApplicationService @total_issues_count = issues.distinct.size @closed_issues_count = issues.closed.distinct.size @opened_issues_count = issues.opened.distinct.size + @complete_issues_count = issues.closed.distinct.size + issues.where(status_id: 3).distinct.size - issues.where(pm_issue_type: 3, status_id: 3).size case category when 'closed' diff --git a/app/views/api/v1/issues/index.json.jbuilder b/app/views/api/v1/issues/index.json.jbuilder index c6a5f526c..30e26d2ca 100644 --- a/app/views/api/v1/issues/index.json.jbuilder +++ b/app/views/api/v1/issues/index.json.jbuilder @@ -1,6 +1,7 @@ json.total_issues_count @total_issues_count json.opened_count @opened_issues_count json.closed_count @closed_issues_count +json.complete_count @complete_issues_count json.total_count @issues.total_count json.has_created_issues @project.present? ? @project.issues.size > 0 : 0 json.issues @issues.each do |issue|