Merge pull request '迭代中工作项进度和工时容量统计' (#228) from yystopf/forgeplus:pm_project_develop into pm_project_develop
This commit is contained in:
commit
3a693b88c0
|
@ -1,12 +1,45 @@
|
||||||
class Api::Pm::SprintIssuesController < Api::Pm::BaseController
|
class Api::Pm::SprintIssuesController < Api::Pm::BaseController
|
||||||
|
|
||||||
before_action :require_login, except: [:index]
|
before_action :require_login, except: [:index]
|
||||||
|
|
||||||
def index
|
def index
|
||||||
@issues = Api::Pm::SprintIssues::ListService.call(query_params, current_user)
|
@issues = Api::Pm::SprintIssues::ListService.call(query_params, current_user)
|
||||||
@issues = kaminari_paginate(@issues)
|
@issues = kaminari_paginate(@issues)
|
||||||
render 'api/v1/issues/index'
|
render 'api/v1/issues/index'
|
||||||
end
|
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
|
def query_params
|
||||||
params.permit(
|
params.permit(
|
||||||
:category,
|
:category,
|
||||||
|
|
|
@ -21,7 +21,12 @@ defaults format: :json do
|
||||||
end
|
end
|
||||||
end
|
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
|
resources :projects do
|
||||||
collection do
|
collection do
|
||||||
get :convert
|
get :convert
|
||||||
|
|
Loading…
Reference in New Issue