From d6fbdd87d0e3873d4873d22f41106306eec5856a Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 20 Nov 2023 16:40:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=BF=AD=E4=BB=A3?= =?UTF-8?q?=E4=B8=AD=E5=B7=A5=E4=BD=9C=E9=A1=B9=E8=BF=9B=E5=BA=A6=E5=92=8C?= =?UTF-8?q?=E5=B7=A5=E6=97=B6=E5=AE=B9=E9=87=8F=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pm/sprint_issues_controller.rb | 33 +++++++++++++++++++ config/routes/api.rb | 7 +++- 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/app/controllers/api/pm/sprint_issues_controller.rb b/app/controllers/api/pm/sprint_issues_controller.rb index a1f4281c5..6251690b4 100644 --- a/app/controllers/api/pm/sprint_issues_controller.rb +++ b/app/controllers/api/pm/sprint_issues_controller.rb @@ -1,11 +1,44 @@ class Api::Pm::SprintIssuesController < Api::Pm::BaseController before_action :require_login, except: [:index] + def index @issues = Api::Pm::SprintIssues::ListService.call(query_params, current_user) @issues = kaminari_paginate(@issues) render 'api/v1/issues/index' end + + def count + pm_sprint_ids = params[:pm_sprint_ids].split(",") rescue [] + return tip_exception '参数错误' if pm_sprint_ids.blank? + @issues = Issue.where(pm_sprint_id: pm_sprint_ids) + data = {} + @issues_count = @issues.group(:pm_sprint_id).count + @issues_type_count = @issues.group(:pm_sprint_id, :status_id).count + pm_sprint_ids.map(&:to_i).map do |sprint_id| + data[sprint_id] = { + total: @issues_count[sprint_id] || 0, + closed: @issues_type_count[[sprint_id, 5]] || 0 + } + end + render_ok(data: data) + end + + def hour + pm_sprint_ids = params[:pm_sprint_ids].split(",") rescue [] + return tip_exception '参数错误' if pm_sprint_ids.blank? + @issues = Issue.where(pm_sprint_id: pm_sprint_ids) + data = {} + @issues_count = @issues.group(:pm_sprint_id).sum(:time_scale) + @issues_type_count = @issues.group(:pm_sprint_id, :status_id).sum(:time_scale) + pm_sprint_ids.map(&:to_i).map do |sprint_id| + data[sprint_id] = { + total: @issues_count[sprint_id] || 0, + closed: @issues_type_count[[sprint_id, 5]] || 0 + } + end + render_ok(data: data) + end def query_params params.permit( diff --git a/config/routes/api.rb b/config/routes/api.rb index 3901112df..487a2abfd 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -21,7 +21,12 @@ defaults format: :json do end end end - resources :sprint_issues, only: [:index] + resources :sprint_issues, only: [:index] do + collection do + get :count + get :hour + end + end resources :projects do collection do get :convert