diff --git a/lib/tasks/import_issues_from_chandao.rake b/lib/tasks/import_issues_from_chandao.rake index 325b90934..142db7874 100644 --- a/lib/tasks/import_issues_from_chandao.rake +++ b/lib/tasks/import_issues_from_chandao.rake @@ -11,7 +11,7 @@ namespace :import_from_chandao do issue = Issue.new author = User.like(randd_field_hash['由谁创建']).take issue.author_id = author&.id - assigner = User.like(randd_field_hash['指派给']).take + assigner = randd_field_hash['指派给'].present? ? User.like(randd_field_hash['指派给']).take : nil if assigner.present? issue.assigners << assigner end @@ -29,28 +29,77 @@ namespace :import_from_chandao do end end - # 执行示例 bundle exec rake "import_from_chandao:requirements[企业网站第二期.csv, 3]" - # RAILS_ENV=production bundle exec rake "import_from_chandao:requirements[企业网站第二期.csv, 3]" - task :requirements, [:name, :pm_project_id] => :environment do |t, args| + # 执行示例 bundle exec rake "import_from_chandao:tasks[复杂智能软件项目-所有任务.csv, 365]" + # RAILS_ENV=production bundle exec rake "import_from_chandao:tasks[复杂智能软件项目-所有任务.csv, 365]" + task :tasks, [:name, :pm_project_id] => :environment do |t, args| + def trans_status(str) + h={ + "未开始" => 1, + "进行中" => 2, + "已完成" => 3, + "已关闭" => 4 + } + h[str] + end + name = args.name - CSV.foreach("#{Rails.root}/#{args.name}", headers: true) do | row | + pm_project_id = args.pm_project_id + CSV.foreach("#{Rails.root}/#{name}", headers: true) do | row | randd_field_hash = row.to_hash issue = Issue.new author = User.like(randd_field_hash['由谁创建']).take issue.author_id = author&.id - assigner = User.like(randd_field_hash['指派给']).take + assigner = randd_field_hash['指派给'].present? ? User.like(randd_field_hash['指派给']).take : nil if assigner.present? issue.assigners << assigner end + issue.status_id = trans_status(randd_field_hash['任务状态']) + issue.tracker_id = Tracker.first.id + issue.priority_id = randd_field_hash['优先级'].to_i + issue.subject = randd_field_hash['任务名称'] + issue.description = randd_field_hash['任务描述'] + issue.created_on = randd_field_hash['创建日期'].to_time + issue.updated_on = randd_field_hash['最后修改日期'].to_time rescue randd_field_hash['创建日期'].to_time + issue.time_scale = randd_field_hash['最初预计'].to_i + issue.start_date = randd_field_hash['预计开始'].to_time rescue nil + issue.due_date = randd_field_hash['截止日期'].to_time rescue nil + issue.project_id = 0 + issue.pm_project_id = pm_project_id + issue.pm_issue_type = 2 + issue.save! + requirement_issue = Issue.find_by(project_issues_index: randd_field_hash['相关需求'].split('(#')[1].split(')')[0], pm_project_id: pm_project_id, pm_issue_type: 1) rescue nil + if requirement_issue.present? + requirement_issue.pm_links.find_or_create_by(be_linkable_type: 'Issue', be_linkable_id: issue.id) + end + end + end +end + + # 执行示例 bundle exec rake "import_from_chandao:requirements[企业网站第二期.csv, 3]" + # RAILS_ENV=production bundle exec rake "import_from_chandao:requirements[企业网站第二期.csv, 3]" + task :requirements, [:name, :pm_project_id] => :environment do |t, args| + name = args.name + pm_project_id = args.pm_project_id + CSV.foreach("#{Rails.root}/#{name}", headers: true) do | row | + randd_field_hash = row.to_hash + issue = Issue.new + author = User.like(randd_field_hash['由谁创建']).take + issue.author_id = author&.id + assigner = randd_field_hash['指派给'].present? ? User.like(randd_field_hash['指派给']).take : nil + if assigner.present? + issue.assigners << assigner + end + issue.project_issues_index = randd_field_hash['编号'].to_i issue.status_id = IssueStatus.first.id issue.tracker_id = Tracker.first.id issue.priority_id = randd_field_hash['优先级'].to_i issue.subject = randd_field_hash['需求名称'] issue.description = randd_field_hash['需求描述'] - issue.created_on = randd_field_hash['创建日期'].to_time + issue.created_on = randd_field_hash['创建日期'].to_time + issue.updated_on = randd_field_hash['最后修改日期'].to_time rescue randd_field_hash['创建日期'].to_time issue.time_scale = randd_field_hash['预计工时'].to_i issue.project_id = 0 - issue.pm_project_id = args.pm_project_id + issue.pm_project_id = pm_project_id issue.pm_issue_type = 1 issue.save! end