From 93514e8a73c80f6e413027f01e8f5660b8e11e28 Mon Sep 17 00:00:00 2001 From: yystopf Date: Fri, 1 Dec 2023 09:19:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E9=A1=B9=E5=AE=B9=E9=87=8F=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E9=A2=84=E4=BC=B0=E5=B7=A5=E6=97=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/pm/issues_controller.rb | 1 + app/controllers/api/pm/sprint_issues_controller.rb | 10 +++++++--- app/services/api/v1/issues/list_service.rb | 11 +++++++++-- app/views/api/v1/issues/index.json.jbuilder | 1 + 4 files changed, 18 insertions(+), 5 deletions(-) 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|