From 1af19175792089967bc6485f32ec218742518372 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 21 May 2025 16:14:08 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=94=9F=E6=88=90=E5=91=A8=E6=8A=A5=E6=95=B0=E6=8D=AE=E8=BF=94?= =?UTF-8?q?=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/pm/weekly_issues_controller.rb | 47 +++++++++++++++++++ .../pm/weekly_issues/personal.json.jbuilder | 16 +++++++ config/routes/api.rb | 6 +++ 3 files changed, 69 insertions(+) create mode 100644 app/controllers/api/pm/weekly_issues_controller.rb create mode 100644 app/views/api/pm/weekly_issues/personal.json.jbuilder diff --git a/app/controllers/api/pm/weekly_issues_controller.rb b/app/controllers/api/pm/weekly_issues_controller.rb new file mode 100644 index 000000000..e31869fbf --- /dev/null +++ b/app/controllers/api/pm/weekly_issues_controller.rb @@ -0,0 +1,47 @@ +class Api::Pm::WeeklyIssuesController < ApplicationController + + def personal + @enterprise_identifier = params[:enterprise_identifier] || '' + @all_issues = Issue.where(enterprise_identifier: @enterprise_identifier, pm_issue_type: [1,2,3]) + @this_week_all_issues = @all_issues.where("due_date >= ? and start_date <= ?", Date.today.beginning_of_week.to_s, Date.today.end_of_week.to_s) + @this_week_all_issues = @this_week_all_issues.order('created_on desc') + @next_week_all_issues = @all_issues.where("due_date >= ? and start_date <=?", (Date.today.beginning_of_week+1.week).to_s, (Date.today.end_of_week+1.week).to_s) + @next_week_all_issues = @next_week_all_issues.order('created_on desc') + @this_week_requirement_issues = @this_week_all_issues.where(pm_issue_type: 1) + @this_week_task_issues = @this_week_all_issues.where(pm_issue_type: 2) + @this_week_bug_issues = @this_week_all_issues.where(pm_issue_type: 3) + @close_requirement_issues = @this_week_requirement_issues.where(status_id: [3,5]) + @close_task_issues = @this_week_task_issues.where(status_id: [3,5]) + @close_bug_issues = @this_week_bug_issues.where(status_id: [3,5]) + end + + def group + @enterprise_identifier = params[:enterprise_identifier] || '' + @all_issues = Issue.where(enterprise_identifier: @enterprise_identifier, pm_issue_type: [1,2,3]) + @this_week_all_issues = @all_issues.where("due_date >= ? and start_date <= ?", Date.today.beginning_of_week.to_s, Date.today.end_of_week.to_s) + @this_week_all_issues_group_count = @this_week_all_issues.group(:pm_project_id).count + data = {} + @this_week_all_issues_group_count.keys.each do |pm_project_id| + this_project_id_requirements = @this_week_all_issues.where(pm_project_id: pm_project_id, pm_issue_type: 1) + this_project_id_tasks = @this_week_all_issues.where(pm_project_id: pm_project_id, pm_issue_type: 2) + this_project_id_bugs = @this_week_all_issues.where(pm_project_id: pm_project_id, pm_issue_type: 3) + this_project_id_close_requirements = this_project_id_requirements.where(status_id: [3,5]) + this_project_id_close_tasks = this_project_id_tasks.where(status_id: [3,5]) + this_project_id_close_bugs = this_project_id_bugs.where(status_id: [3,5]) + data[pm_project_id] = { + this_week_requirement_issues_count: this_project_id_requirements.count, + this_week_task_issues_count: this_project_id_tasks.count, + this_week_bug_issues_count: this_project_id_bugs.count, + close_requirement_issues_count: this_project_id_close_requirements.count, + close_task_issues_count: this_project_id_close_tasks.count, + close_bug_issues_count: this_project_id_close_bugs.count, + this_week_task_issues: this_project_id_tasks + } + + + end + + render :json => data + end + +end \ No newline at end of file diff --git a/app/views/api/pm/weekly_issues/personal.json.jbuilder b/app/views/api/pm/weekly_issues/personal.json.jbuilder new file mode 100644 index 000000000..6b3d532aa --- /dev/null +++ b/app/views/api/pm/weekly_issues/personal.json.jbuilder @@ -0,0 +1,16 @@ +json.this_week_all_issues @this_week_all_issues.each do |issue| + json.partial! "api/v1/issues/simple_detail", locals: {issue: issue} +end +json.next_week_all_issues @next_week_all_issues.each do |issue| + json.partial! "api/v1/issues/simple_detail", locals: {issue: issue} +end +json.this_week_requirement_issues_count @this_week_requirement_issues.count +json.this_week_task_issues_count @this_week_task_issues.count +json.this_week_bug_issues_count @this_week_bug_issues.count +json.close_requirement_issues_count @close_requirement_issues.count +json.close_task_issues_count @close_task_issues.count +json.close_bug_issues_count @close_bug_issues.count +json.unclose_count @this_week_all_issues.count - @close_requirement_issues.count - @close_task_issues.count - @close_bug_issues.count +json.close_task_issues @close_task_issues.each do |issue| + json.partial! "api/v1/issues/simple_detail", locals: {issue: issue} +end \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index be80bac3f..e63473624 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -1,6 +1,12 @@ defaults format: :json do namespace :api do namespace :pm do + resources :weekly_issues, only: [:index] do + collection do + get :personal + get :group + end + end resources :dashboards,only: [:index] do collection do get :todo