新增: 项目概览更新
This commit is contained in:
parent
9cdc593763
commit
3b55009473
|
@ -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
|
||||
|
|
|
@ -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] = {
|
||||
|
|
|
@ -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 += "<b>#{self.issue.subject}</b>"
|
||||
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 += "<b>#{self.issue.subject}</b>"
|
||||
content = prefix + content
|
||||
end
|
||||
content
|
||||
end
|
||||
|
||||
def pm_operate_content
|
||||
content = "#{operate_by_content}"
|
||||
detail = self.journal_details.take
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -1,3 +1,5 @@
|
|||
json.status 0
|
||||
json.message "success"
|
||||
json.total_count @issues.total_count
|
||||
|
||||
json.issues @issues.each do |issue|
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue