diff --git a/app/controllers/api/pm/dashboards_controller.rb b/app/controllers/api/pm/dashboards_controller.rb
index 25ebcc6d1..8acff2fe8 100644
--- a/app/controllers/api/pm/dashboards_controller.rb
+++ b/app/controllers/api/pm/dashboards_controller.rb
@@ -14,10 +14,11 @@ class Api::Pm::DashboardsController < Api::Pm::BaseController
def my_issues
return render_error('请输入正确的pm_project_ids.') if params[:pm_project_ids].blank?
+ return render_error('请输入正确的pm_issue_types.') if params[:pm_issue_types].blank?
pm_project_ids = params[:pm_project_ids].split(",") rescue []
- @all_issues = Issue.where(pm_project_id: pm_project_ids)
+ pm_issue_types = params[:pm_issue_types].split(",") rescue []
+ @all_issues = Issue.where(pm_project_id: pm_project_ids, pm_issue_type: pm_issue_types)
@issues = @all_issues.joins(:issue_participants).where(issue_participants: {participant_id: current_user.id})
- @issues = @issues.where(pm_issue_type: params[:pm_issue_type].to_i) if params[:pm_issue_type].present?
@issues = kaminari_paginate(@issues.distinct.pm_includes)
@my_assign_requirements_count = @all_issues.where(pm_issue_type: 1).joins(:issue_participants).where(issue_participants: {participant_id: current_user.id, participant_type: 'assigned'}).size
@@ -36,12 +37,15 @@ class Api::Pm::DashboardsController < Api::Pm::BaseController
@before_last_week_close_issue_count = @all_issues.where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 14.days, time_now - 7.days).size
@compare_last_week_close_issues = @before_last_week_close_issue_count.zero? ? 0 :(@last_week_close_issues_count - @before_last_week_close_issue_count).to_f / @before_last_week_close_issue_count rescue 0
@all_requirement_issues_count = @all_issues.where(pm_issue_type: 1).size
+ @open_requirement_issues_count = @all_issues.where(pm_issue_type: 1).where.not(status_id: 5).size
@last_week_close_requirement_issues_count = @all_issues.where(pm_issue_type: 1).where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 7.days, time_now).size
@last_month_close_requirement_issues_count = @all_issues.where(pm_issue_type: 1).where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 30.days, time_now).size
@all_task_issues_count = @all_issues.where(pm_issue_type: 2).size
+ @open_task_issues_count = @all_issues.where(pm_issue_type: 2).where.not(status_id: 5).size
@last_week_close_tast_issues_count = @all_issues.where(pm_issue_type: 2).where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 7.days, time_now).size
@last_month_close_task_issues_count = @all_issues.where(pm_issue_type: 2).where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 30.days, time_now).size
@all_bug_issues_count = @all_issues.where(pm_issue_type: 3).size
+ @open_bug_issues_count = @all_issues.where(pm_issue_type: 3).where.not(status_id: 5).size
@last_week_close_bug_issues_count = @all_issues.where(pm_issue_type: 3).where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 7.days, time_now).size
@last_month_close_bug_issues_count = @all_issues.where(pm_issue_type: 3).where(status_id: 5).where("updated_on > ? and updated_on < ?", time_now - 30.days, time_now).size
@@ -59,8 +63,7 @@ class Api::Pm::DashboardsController < Api::Pm::BaseController
end
@close_trend = {requirement: @requirement_close_trend, task: @task_close_trend, bug: @bug_close_trend}
-
- render :json => {
+ render_ok(data={
last_week_close_issues_count: @last_week_close_issues_count,
before_last_week_close_issue_count: @before_last_week_close_issue_count,
compare_last_week_close_issues: @compare_last_week_close_issues,
@@ -68,16 +71,19 @@ class Api::Pm::DashboardsController < Api::Pm::BaseController
before_last_week_create_issue_count: @before_last_week_create_issue_count,
compare_last_week_create_issues: @compare_last_week_create_issues,
all_requirement_issues_count: @all_requirement_issues_count,
+ open_requirement_issues_count: @open_requirement_issues_count,
last_week_close_requirement_issues_count: @last_week_close_requirement_issues_count,
last_month_close_requirement_issues_count: @last_month_close_requirement_issues_count,
all_task_issues_count: @all_task_issues_count,
+ open_task_issues_count: @open_task_issues_count,
last_week_close_tast_issues_count: @last_week_close_tast_issues_count,
last_month_close_task_issues_count: @last_month_close_task_issues_count,
all_bug_issues_count: @all_bug_issues_count,
+ open_bug_issues_count: @open_bug_issues_count,
last_week_close_bug_issues_count: @last_week_close_bug_issues_count,
last_month_close_bug_issues_count: @last_month_close_bug_issues_count,
close_trend: @close_trend
- }
+ })
end
def my_projects
@@ -98,7 +104,7 @@ class Api::Pm::DashboardsController < Api::Pm::BaseController
@last_week_commits_count = @project.commit_logs.where("created_at > ? and created_at < ?", time_now - 7.days, time_now).size
@last_month_commits_count = @project.commit_logs.where("created_at > ? and created_at < ?", time_now - 30.days, time_now).size
- render :json => {
+ render_ok(data={
branch_count: branch_tag_result["branch_count"].to_i,
tag_count: branch_tag_result["tag_count"].to_i,
license_name: @project.license&.name,
@@ -109,7 +115,14 @@ class Api::Pm::DashboardsController < Api::Pm::BaseController
last_week_commits_count: @last_week_commits_count,
last_month_commits_count: @last_month_commits_count,
language: hash_transform_precentagable(languages_result),
- }
+ })
+ end
+
+ def my_operate_journals
+ return render_error('请输入正确的pm_project_id.') if params[:pm_project_id].blank?
+ @journals = Journal.operate_journals.joins(:issue).where(issues: {pm_project_id: params[:pm_project_id], pm_issue_type: [1,2,3]})
+
+ @journals = kaminari_paginate(@journals.order(updated_on: :desc))
end
private
diff --git a/app/controllers/api/pm/projects_controller.rb b/app/controllers/api/pm/projects_controller.rb
index 8d808bf99..82b931f05 100644
--- a/app/controllers/api/pm/projects_controller.rb
+++ b/app/controllers/api/pm/projects_controller.rb
@@ -56,6 +56,8 @@ class Api::Pm::ProjectsController < Api::Pm::BaseController
def statistics
return tip_exception '参数错误' if params[:pm_project_id].blank?
@issues = Issue.where(pm_project_id: params[:pm_project_id], pm_issue_type:[1, 2, 3])
+ @last_week_close_issues = @issues.where(status_id: 5).where("updated_on > ? and updated_on < ?", Time.now - 7.days, Time.now)
+ last_week_close_type_count_data = @last_week_close_issues.group(:pm_issue_type).count
type_count_data = @issues.group(:pm_issue_type).count
type_status = @issues.group(:pm_issue_type,:status_id).count
type_status_data = {}
@@ -81,17 +83,24 @@ class Api::Pm::ProjectsController < Api::Pm::BaseController
type_count_data[e] = 0
}
end
+ if last_week_close_type_count_data.keys.size < 3
+ nedd_add = [1,2,3] - last_week_close_type_count_data.keys
+ nedd_add.map{ |e|
+ last_week_close_type_count_data[e] = 0
+ }
+ end
data = {
pie_chart: type_count_data,
bar_chart: type_status_data,
- open_data: open_data
+ open_data: open_data,
+ last_week_close_data: last_week_close_type_count_data,
}
render_ok(data: data)
end
def polyline
return tip_exception '参数错误' if params[:pm_project_id].blank?
- time_line = (Time.current.beginning_of_day - 6.day) .. Time.current
+ time_line = (Time.current.beginning_of_day - 29.day) .. Time.current
@create_issues = Issue.where(pm_project_id: params[:pm_project_id],created_on: time_line)
@due_issues = Issue.where(pm_project_id: params[:pm_project_id],status_id:[3,5],due_date: time_line)
@create_issues_count = @create_issues.group(:pm_issue_type,"DATE(created_on)").count
@@ -100,7 +109,7 @@ class Api::Pm::ProjectsController < Api::Pm::BaseController
create_issues: {},
due_issues: {}
}
- 7.times do |time|
+ 30.times do |time|
current_time = Date.current - time.day
if @create_issues_count.present?
data[:create_issues][current_time] = {
diff --git a/app/models/journal.rb b/app/models/journal.rb
index 77c806ca8..fe077ae66 100644
--- a/app/models/journal.rb
+++ b/app/models/journal.rb
@@ -52,6 +52,7 @@ class Journal < ApplicationRecord
scope :journal_includes, ->{includes(:user, :journal_details, :attachments)}
scope :parent_journals, ->{where(parent_id: nil)}
scope :children_journals, lambda{|journal_id| where(parent_id: journal_id)}
+ scope :operate_journals, ->{where(notes: nil)}
enum state: {opened: 0, resolved: 1, disabled: 2}
@@ -103,6 +104,21 @@ class Journal < ApplicationRecord
end
end
+ def pm_dashboard_operate_content
+ content = self.pm_operate_content
+ if content.start_with?('创建了')
+ content += "#{self.issue.subject}"
+ else
+ prefix = '将'
+ prefix += "计划" if self.issue.pm_issue_type == 1
+ prefix += "任务" if self.issue.pm_issue_type == 2
+ prefix += "缺陷" if self.issue.pm_issue_type == 3
+ prefix += "#{self.issue.subject}"
+ content = prefix + content
+ end
+ content
+ end
+
def pm_operate_content
content = "#{operate_by_content}"
detail = self.journal_details.take
diff --git a/app/views/api/pm/dashboards/my_issues.json.jbuilder b/app/views/api/pm/dashboards/my_issues.json.jbuilder
index fd4193e1c..d9ebf754a 100644
--- a/app/views/api/pm/dashboards/my_issues.json.jbuilder
+++ b/app/views/api/pm/dashboards/my_issues.json.jbuilder
@@ -1,3 +1,5 @@
+json.status 0
+json.message "success"
json.total_count @issues.total_count
json.my_assign_requirements_count @my_assign_requirements_count
json.my_assign_tasks_count @my_assign_tasks_count
diff --git a/app/views/api/pm/dashboards/my_operate_journals.json.jbuilder b/app/views/api/pm/dashboards/my_operate_journals.json.jbuilder
new file mode 100644
index 000000000..76ec90f97
--- /dev/null
+++ b/app/views/api/pm/dashboards/my_operate_journals.json.jbuilder
@@ -0,0 +1,21 @@
+json.status 0
+json.message "success"
+json.total_count @journals.total_count
+json.journals @journals do |journal|
+ journal.associate_attachment_container
+ json.id journal.id
+ json.is_journal_detail journal.is_journal_detail?
+ json.created_at journal.created_on.strftime("%Y-%m-%d %H:%M")
+ json.updated_at journal.updated_on.strftime("%Y-%m-%d %H:%M")
+ json.user do
+ if journal.user.present?
+ json.partial! "api/v1/users/simple_user", user: journal.user
+ else
+ json.nil!
+ end
+ end
+ detail = journal.journal_details.take
+ json.operate_category journal.pm_operate_category
+ json.operate_content journal.is_journal_detail? ? journal.pm_dashboard_operate_content : nil
+
+end
\ No newline at end of file
diff --git a/app/views/api/pm/dashboards/todo.json.jbuilder b/app/views/api/pm/dashboards/todo.json.jbuilder
index 852a36390..bea1ec07f 100644
--- a/app/views/api/pm/dashboards/todo.json.jbuilder
+++ b/app/views/api/pm/dashboards/todo.json.jbuilder
@@ -1,3 +1,5 @@
+json.status 0
+json.message "success"
json.total_count @issues.total_count
json.issues @issues.each do |issue|
diff --git a/config/routes/api.rb b/config/routes/api.rb
index 6d652f31e..242037e09 100644
--- a/config/routes/api.rb
+++ b/config/routes/api.rb
@@ -7,10 +7,7 @@ defaults format: :json do
get :my_issues
get :my_pm_projects
get :my_projects
- end
- end
- namespace :projects do
- resources :dashboards, only: [:index] do
+ get :my_operate_journals
end
end
resources :issues do