From c19ebe0f6a1035c130147808dbb90d565a7528e8 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 19 Jun 2025 15:13:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9Aplan=5Fstart=5Fdate?= =?UTF-8?q?=E5=92=8Cplan=5Fend=5Fdate?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/issue.rb | 3 +++ app/services/api/v1/issues/create_service.rb | 6 +++++- app/services/api/v1/issues/list_service.rb | 6 ++++++ app/services/api/v1/issues/update_service.rb | 6 +++++- ...65222_add_plan_start_date_and_plan_end_date_to_issues.rb | 6 ++++++ 5 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 db/migrate/20250619065222_add_plan_start_date_and_plan_end_date_to_issues.rb diff --git a/app/models/issue.rb b/app/models/issue.rb index c2d72c5f8..cb508b2bf 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -42,6 +42,8 @@ # changer_id :integer # fake_id :integer # enterprise_identifier :string(255) +# plan_start_date :date +# plan_end_date :date # # Indexes # @@ -62,6 +64,7 @@ # issues_project_id (project_id) # + class Issue < ApplicationRecord #issue_type 1为普通,2为悬赏 belongs_to :project, counter_cache: true, touch: true, optional: true diff --git a/app/services/api/v1/issues/create_service.rb b/app/services/api/v1/issues/create_service.rb index fdbdc71ed..ad7a24f3c 100644 --- a/app/services/api/v1/issues/create_service.rb +++ b/app/services/api/v1/issues/create_service.rb @@ -4,7 +4,7 @@ class Api::V1::Issues::CreateService < ApplicationService include Api::V1::Issues::Concerns::Loadable attr_reader :project, :current_user - attr_reader :status_id, :priority_id, :milestone_id, :branch_name, :start_date, :due_date, :subject, :description, :blockchain_token_num, :root_subject + attr_reader :status_id, :priority_id, :milestone_id, :branch_name, :plan_start_date, :plan_end_date, :start_date, :due_date, :subject, :description, :blockchain_token_num, :root_subject attr_reader :issue_tag_ids, :assigner_ids, :attachment_ids, :receivers_login attr_accessor :created_issue @@ -22,6 +22,8 @@ class Api::V1::Issues::CreateService < ApplicationService @branch_name = params[:branch_name] @start_date = params[:start_date] @due_date = params[:due_date] + @plan_start_date = params[:plan_start_date] + @plan_end_date = params[:plan_end_date] @subject = params[:subject] @description = params[:description] @blockchain_token_num = params[:blockchain_token_num] @@ -135,6 +137,8 @@ class Api::V1::Issues::CreateService < ApplicationService issue_attributes.merge!({due_date: due_date}) if due_date.present? issue_attributes.merge!({branch_name: branch_name}) if branch_name.present? issue_attributes.merge!({blockchain_token_num: blockchain_token_num}) if blockchain_token_num.present? + issue_attributes.merge!({plan_start_date: plan_start_date}) if plan_start_date.present? + issue_attributes.merge!({plan_end_date: plan_end_date}) if plan_end_date.present? issue_attributes end diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index e074d1e59..060978df8 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -44,6 +44,7 @@ class Api::V1::Issues::ListService < ApplicationService @function_type = params[:function_type] @identifier = params[:identifier] @status_ids = params[:status_ids].present? ? params[:status_ids].split(',') : [] + @pms_product_module_ids = params[:pms_product_module_ids].present?? params[:pms_product_module_ids].split(',') : [] @pm_issue_types = params[:pm_issue_types].present? ? params[:pm_issue_types].split(',') : [] @sort_direction = (params[:sort_direction].present? ? params[:sort_direction] : 'desc').downcase @participator = params[:participator_id].present? ? User.find_by_id(params[:participator_id]) : current_user @@ -182,6 +183,11 @@ class Api::V1::Issues::ListService < ApplicationService issues = issues.joins(:requirement_issue_ext).where(requirement_issue_exts: {identifier: identifier}) end + # pms_product_module_id + if pms_product_module_ids.present? + issues = issues.joins(:requirement_issue_ext).where(requirement_issue_exts: {pms_product_module_id: pms_product_module_ids}) + end + @closed_issues_count = issues.closed.distinct.size @opened_issues_count = issues.opened.distinct.size @complete_issues_count = issues.closed.distinct.size + issues.where(status_id: 3).distinct.size - issues.where(pm_issue_type: 3, status_id: 3).distinct.size diff --git a/app/services/api/v1/issues/update_service.rb b/app/services/api/v1/issues/update_service.rb index dbdebf932..e26e39f71 100644 --- a/app/services/api/v1/issues/update_service.rb +++ b/app/services/api/v1/issues/update_service.rb @@ -4,7 +4,7 @@ class Api::V1::Issues::UpdateService < ApplicationService include Api::V1::Issues::Concerns::Loadable attr_reader :project, :issue, :current_user, :operate_by - attr_reader :status_id, :priority_id, :milestone_id, :branch_name, :start_date, :due_date, :subject, :description, :blockchain_token_num + attr_reader :status_id, :priority_id, :milestone_id, :branch_name, :plan_start_date, :plan_end_date, :start_date, :due_date, :subject, :description, :blockchain_token_num attr_reader :target_pm_project_id, :pm_sprint_id, :pm_issue_type, :root_id, :time_scale attr_reader :issue_tag_ids, :assigner_ids, :attachment_ids, :receivers_login, :before_issue_tag_ids, :before_assigner_ids, :project_id attr_accessor :add_assigner_ids, :previous_issue_changes, :updated_issue, :atme_receivers @@ -23,6 +23,8 @@ class Api::V1::Issues::UpdateService < ApplicationService @branch_name = params[:branch_name] @start_date = params[:start_date] @due_date = params[:due_date] + @plan_start_date = params[:plan_start_date] + @plan_end_date = params[:plan_end_date] @subject = params[:subject] @description = params[:description] @blockchain_token_num = params[:blockchain_token_num] @@ -131,6 +133,8 @@ class Api::V1::Issues::UpdateService < ApplicationService @updated_issue.branch_name = branch_name unless branch_name.nil? @updated_issue.start_date = start_date unless start_date.nil? @updated_issue.due_date = due_date unless due_date.nil? + @updated_issue.plan_start_date = plan_start_date unless plan_start_date.nil? + @updated_issue.plan_end_date = plan_end_date unless plan_end_date.nil? @updated_issue.subject = subject if subject.present? @updated_issue.description = description unless description.nil? end diff --git a/db/migrate/20250619065222_add_plan_start_date_and_plan_end_date_to_issues.rb b/db/migrate/20250619065222_add_plan_start_date_and_plan_end_date_to_issues.rb new file mode 100644 index 000000000..4399861a6 --- /dev/null +++ b/db/migrate/20250619065222_add_plan_start_date_and_plan_end_date_to_issues.rb @@ -0,0 +1,6 @@ +class AddPlanStartDateAndPlanEndDateToIssues < ActiveRecord::Migration[5.2] + def change + add_column :issues, :plan_start_date, :date + add_column :issues, :plan_end_date, :date + end +end