educode_sales 0.7.8 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/educode_sales/application_controller.rb +14 -0
  3. data/app/controllers/educode_sales/assessments_controller.rb +126 -259
  4. data/app/controllers/educode_sales/businesses_controller.rb +66 -2
  5. data/app/controllers/educode_sales/customers_controller.rb +0 -3
  6. data/app/helpers/educode_sales/application_helper.rb +2 -2
  7. data/app/models/educode_sales/business.rb +8 -0
  8. data/app/models/educode_sales/business_relation_ship.rb +6 -0
  9. data/app/models/educode_sales/customer_follow.rb +1 -0
  10. data/app/models/educode_sales/filter.rb +15 -0
  11. data/app/models/educode_sales/follow_up.rb +2 -0
  12. data/app/models/educode_sales/role_area.rb +1 -1
  13. data/app/views/educode_sales/assessments/_setup.html.erb +92 -22
  14. data/app/views/educode_sales/assessments/edit.html.erb +3 -2
  15. data/app/views/educode_sales/assessments/index.html.erb +1 -2
  16. data/app/views/educode_sales/assessments/index.json.jbuilder +1 -1
  17. data/app/views/educode_sales/assessments/new.html.erb +2 -1
  18. data/app/views/educode_sales/assessments/progress.json.jbuilder +2 -198
  19. data/app/views/educode_sales/businesses/following_businesses.jbuilder +44 -0
  20. data/app/views/educode_sales/businesses/index.html.erb +189 -33
  21. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  22. data/app/views/educode_sales/businesses/show_follow.html.erb +1 -3
  23. data/app/views/educode_sales/money_plans/index.json.jbuilder +1 -1
  24. data/app/views/layouts/educode_sales/application.html.erb +1 -1
  25. data/config/routes.rb +4 -0
  26. data/db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb +10 -0
  27. data/db/migrate/20220507020149_create_filter.rb +10 -0
  28. data/db/migrate/20220507091959_change_educode_sales_filter_column_length.rb +5 -0
  29. data/db/migrate/20220509073936_update_educode_sales_filters_filter_data.rb +9 -0
  30. data/lib/educode_sales/version.rb +1 -1
  31. metadata +9 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2972ed1989662bb4f717d0a4d84bd29f5605fa53006e744de50836bde4273d51
4
- data.tar.gz: 9c64c442924ed94d857c29c9141d22ea66714f237671d46964033e46a075fcef
3
+ metadata.gz: 6c7d5af9d8ef299b488469e4641429c5f7ef51411ee9749817d215920ab2eefe
4
+ data.tar.gz: 8ecea150b2f7ebf1c83b46873d79aad3561a803d45c3d96b28be8d96d6ac6d7e
5
5
  SHA512:
6
- metadata.gz: 25648696a64348151f0380b1c8c160b12ed21263f06417a48aaff9529252048764edd343a78ef88e899c336bbd19cb007168d41dbbbaa7f90d2b75cff656a2aa
7
- data.tar.gz: 7e519c3723917de704f95e17d809503aab65401b56a979c48c0a45d3a88f1837b8080305af33994a410c2e10cbff1ccc2d9cdba1ac8652cfe8221ddb1ff21b18
6
+ metadata.gz: 670ed7ce415e605c9d93dd0eaf7f369beed38af7f5f576726181fb2232281e6eafcbbf9678fb97fb7b4263abfe9c857f19d80e81b55e23186d2e5fc0a08fe11a
7
+ data.tar.gz: cad4aa2546734ae5cc3807c0947c0d194449867d0086efffeb36248040dba564bd145f06cc96bbe87a2c094b9b62abb364a99d98a6149d0eb54ccf31019ec367
@@ -27,6 +27,20 @@ module EducodeSales
27
27
  end
28
28
  end
29
29
 
30
+ def filter
31
+ params[:check] = params[:check] == "true" ? 0:1
32
+ begin
33
+ filter = Filter.find_or_create_by!(staff_id: @current_admin.id, clazz: params[:type])
34
+ filter.extras["#{params[:name]}"] = params[:check]
35
+ filter.save!
36
+ render json: {success: true ,hidden: params[:check]}
37
+ rescue => e
38
+ render_failure("操作失败")
39
+ end
40
+ end
41
+
42
+
43
+
30
44
  rescue_from CanCan::AccessDenied do |exception|
31
45
  redirect_to no_permission_path
32
46
  end
@@ -2,6 +2,9 @@ require_dependency "educode_sales/application_controller"
2
2
 
3
3
  module EducodeSales
4
4
  class AssessmentsController < ApplicationController
5
+ before_action :progress_or_get_export_data, only: [:progress, :get_export_data]
6
+
7
+
5
8
  def index
6
9
  respond_to do |format|
7
10
  format.html do
@@ -12,45 +15,47 @@ module EducodeSales
12
15
  gon.export_menus << { title: '导出到Csv文件', event: 'export_csv' }
13
16
  gon.export_menus << { title: '导出到Excel文件', event: 'export_excel' }
14
17
  # index页面new弹出层下使用
15
- gon.demo = Staff.joins(:user).where(job_type: common.id).map do |d|
18
+ gon.staff_ids = Staff.joins(:user).where(job_type: common.id).map do |d|
16
19
  {value: d.id, name: d.user.real_name }
17
20
  end
21
+ filter = Filter.find_or_create_by(staff_id: @current_admin.id, clazz: "assessments_setup")
22
+ if filter.extras.present?
23
+ gon.filter = filter.extras
24
+ else
25
+ gon.filter = {}
26
+ end
18
27
  end
19
28
  format.json do
20
- @assessments = AssessmentsSetting.all
21
29
  @year = params[:q].present? && params[:q][:assessment_year].present? ? params[:q][:assessment_year]:'2022'
22
30
  @assessments_id = params[:q].present? && params[:q][:assessment_id].present? ? params[:q][:assessment_id]: '1'
23
- @assessments = @assessments.where("assessment_year >= ? and assessment_year <= ?", "#{@year}-01-01 00:00:00".to_date, "#{@year}-12-31 23:59:00".to_date)
31
+ @assessments = AssessmentsSetting.where("assessment_year >= ? and assessment_year <= ?", "#{@year}-01-01 00:00:00".to_date, "#{@year}-12-31 23:59:00".to_date)
24
32
  @assessments = @assessments.where(assessment: @assessments_id).order("updated_at desc")
25
33
  if params[:q].present? && params[:q][:staff_id].present?
26
34
  @assessments = @assessments.where(staff_id: params[:q][:staff_id]).order("updated_at desc")
27
35
  end
28
- # 对数据进行分页 默认为page=1 limit=10
29
- # @assessments = @assessments.order("id desc").page(params[:page]).per(params[:limit])
30
36
  end
31
37
  end
32
38
  end
33
39
 
34
-
35
-
36
40
  # 新增
37
41
  def create
38
42
  begin
39
- demo = AssessmentsSetting.new(params_create)
40
- demo.user_id = current_user.user_id
41
- demo.assessment_year = "#{params[:assessment_year]}-01-01"
43
+ assessment = AssessmentsSetting.new(params_create)
44
+ assessment.user_id = current_user.user_id
45
+ assessment.assessment_year = "#{params[:assessment_year]}-01-01"
46
+ AssessmentsSetting.transaction do
42
47
  params[:staffs_ids].split(",").each do |d|
43
- staff = demo.dup
48
+ staff = assessment.dup
44
49
  staff.staff_id = d.to_i
45
50
  staff.save
46
51
  end
52
+ end
47
53
  render_success
48
54
  rescue => e
49
55
  render_failure '增加数据错误'
50
56
  end
51
57
  end
52
58
 
53
-
54
59
  def new
55
60
  render layout: false
56
61
  end
@@ -73,166 +78,106 @@ module EducodeSales
73
78
  render layout: false
74
79
  end
75
80
 
76
- # 根新数据
81
+ # 根新
77
82
  def update
78
83
  @assessment = AssessmentsSetting.find_by(id: params[:id])
79
84
  @assessment.update_attributes(params_update)
80
85
  render_success
81
86
  end
82
87
 
83
-
84
-
85
-
86
-
87
88
  # 删除接口
88
89
  def destroy
89
90
  begin
90
91
  assessment = AssessmentsSetting.find(params[:id])
91
92
  assessment.destroy
92
93
  render_success
93
- rescue ActiveRecord::DeleteRestrictionError => e
94
- render_failure '渠道下已有关联数据产生,暂不能删除'
94
+ rescue => e
95
+ render_failure '暂不能删除'
95
96
  end
96
97
  end
97
98
 
98
99
 
99
100
 
100
101
 
101
-
102
102
  # 导出数据
103
103
  def get_export_data
104
- common = Common.find_by(clazz: 'staff_type', name: '销售')
105
- @staff_ids = Staff.joins(:user).where(job_type: common.id).pluck(:id)
106
- @assessment_id = params[:assessment_id].present? ? params[:assessment_id]:'1'
107
- @assessment_year = params[:assessment_year] ? params[:assessment_year] : '2022'
108
- @assessments =AssessmentsSetting.where(assessment: @assessment_id).
109
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
110
- if params[:staff_id].present?
111
- @assessments = @assessments.where(staff_id: params[:staff_id])
112
- progress_main
113
- else
114
- # @assessments = @assessments.where(staff_id: @staff_ids) 注意 这样写有问题
115
- @staff_ids.each do |s|
116
- @assessments = @assessments.where(staff_id: s).order("updated_at desc")
117
- progress_main
118
- end
119
- @assessments = AssessmentsSetting.where(assessment: @assessment_id).
120
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
121
- end
104
+ p 'get_export_data'
122
105
  end
123
106
 
124
107
 
125
108
 
109
+ # 考核完成情况
110
+ def progress
111
+ p 'progress'
112
+ end
126
113
 
127
114
 
128
115
 
129
-
130
-
131
- # 考核完成情况
132
- def progress
133
- common = Common.find_by(clazz: 'staff_type', name: '销售')
134
- @staff_ids = Staff.joins(:user).where(job_type: common.id).pluck(:id)
116
+ def progress_or_get_export_data
117
+ # common = Common.find_by(clazz: 'staff_type', name: '销售')
118
+ # @staff_ids = Staff.joins(:user).where(job_type: common.id).pluck(:id)
135
119
  @assessment_id = params[:q].present? && params[:q][:assessment_id].present? ? params[:q][:assessment_id]:'1'
136
- @assessment_year = params[:q].present? && params[:q][:assessment_year] ? params[:q][:assessment_year] : '2022'
137
- @assessments =AssessmentsSetting.where(assessment: @assessment_id).
138
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
139
- if params[:q].present? && params[:q][:staff_id].present?
140
- @assessments = @assessments.where(staff_id: params[:q][:staff_id])
120
+ @assessment_year = params[:q].present? && params[:q][:assessment_year].present? ? params[:q][:assessment_year] : Time.now.year
121
+ @assessments =AssessmentsSetting.where(assessment: @assessment_id)
122
+ .where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
123
+ .order("created_at desc")
124
+ if @assessments.present?
125
+ # 小优化
126
+ @staff_ids = params[:q].present? && params[:q][:staff_id].present? ? [params[:q][:staff_id].to_i]:@assessments.distinct.pluck(:staff_id)
141
127
  progress_main
142
- else
143
- # @assessments = @assessments.where(staff_id: @staff_ids) 注意 这样写有问题
144
- @staff_ids.each do |s|
145
- @staff_id = s
146
- @assessments = @assessments.where(staff_id: s)
147
- progress_main
148
- end
149
- @assessments = AssessmentsSetting.where(assessment: @assessment_id)
150
- .where("assessment_year >= ? and assessment_year <= ?","#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:59".to_date )
151
- .order("updated_at desc")
128
+ # 注意一下
129
+ @assessments = @assessments.where(staff_id: @staff_ids)
152
130
  end
153
131
  end
154
132
 
155
133
 
156
-
157
-
158
134
  # todo 主方法 统计用户的数据
159
135
  def progress_main
160
- if @assessments.present?
161
- a = []
162
136
  case @assessment_id
163
137
  when '1' # 签单金额
164
138
  busniness_jurisdiction
165
- signed_amount(a)
139
+ signed_count
166
140
  when '2' # 回款金额
167
- collection_amount(a)
141
+ collection_count
168
142
  when '3' # 拜访量
169
143
  visits
170
- school_ids = EducodeSales::CustomerExtension.where(customer_staff_id: @staff_id).pluck(:school_id)
171
- @customers = @customers.where(id: school_ids)
172
- busniness_visits(a) # 商机拜访量
173
- customer_visits(a) # 客户拜访量
144
+ customer_and_busniness_visits
174
145
  when '4' # 新增商机数
175
146
  busniness_jurisdiction
176
- busniness_add(a)
147
+ busniness_add
177
148
  end
178
- update_assessments_progress(a)
179
- else
180
- end
181
149
  end
182
150
 
183
151
 
184
152
 
185
-
186
153
  # 签单金额
187
- def signed_amount(a)
154
+ def signed_count
188
155
  # 过滤x类商机
189
- ids = Common.where(extras: %w[a_class b_class c_class d_claass e_class o_class]).pluck(:id)
190
- @businesses = @businesses.joins("JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id").where("educode_sales_follow_ups.clazz_id in (?) ",ids)
156
+ ids = Common.where.not(extras: %w[x_class]).pluck(:id)
157
+ @businesses = @businesses.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id in (?) ",ids)
158
+ .where("educode_sales_follow_ups.signed_date >= ? and educode_sales_follow_ups.signed_date <= ?",
159
+ "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:59".to_date)
191
160
  # 得到最新阶段为已签单商机
192
161
  s_stage_ids = Common.where(clazz: '商机阶段', name: ['已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
193
162
  @businesses = @businesses.joins("
194
163
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
195
164
  ").where("educode_sales_follow_ups.stage_id IN (?)",s_stage_ids)
196
- # 得到指定staff的商机------------先暂时指定
197
- @businesses = @businesses.where(staff_id: @staff_id)
198
- # businesses each操作并 获取最新根新记录
199
- @businesses.each { |d| d
200
- @follow_ups = d.follow_ups.where.not(signed_date: nil).order("signed_date desc")
201
- if @follow_ups.first.present?
202
- signed_date = @follow_ups.first.signed_date.to_time || '1000-01-01 00:00:00'.to_time
203
- case signed_date.to_s[0..6]
204
- when "#{@assessment_year}-01"
205
- a[0] = a[0].to_i + @follow_ups.first.actual_amount.to_i
206
- when "#{@assessment_year}-02"
207
- a[1] = a[1].to_i + @follow_ups.first.actual_amount.to_i
208
- when "#{@assessment_year}-03"
209
- a[2] = a[2].to_i + @follow_ups.first.actual_amount.to_i
210
- when "#{@assessment_year}-04"
211
- a[3] = a[3].to_i + @follow_ups.first.actual_amount.to_i
212
- when "#{@assessment_year}-05"
213
- a[4] = a[4].to_i + @follow_ups.first.actual_amount.to_i
214
- when "#{@assessment_year}-06"
215
- a[5] = a[5].to_i + @follow_ups.first.actual_amount.to_i
216
- when "#{@assessment_year}-07"
217
- a[6] = a[6].to_i + @follow_ups.first.actual_amount.to_i
218
- when "#{@assessment_year}-08"
219
- a[7] = a[7].to_i + @follow_ups.first.actual_amount.to_i
220
- when "#{@assessment_year}-09"
221
- a[8] = a[8].to_i + @follow_ups.first.actual_amount.to_i
222
- when "#{@assessment_year}-10"
223
- a[9] = a[9].to_i + @follow_ups.first.actual_amount.to_i
224
- when "#{@assessment_year}-11"
225
- a[10] = a[10].to_i + @follow_ups.first.actual_amount.to_i
226
- when "#{@assessment_year}-12"
227
- a[11] = a[11].to_i + @follow_ups.first.actual_amount.to_i
165
+ @staff_ids.each do |d|
166
+ # 注意
167
+ businesses = @businesses.where(staff_id: d)
168
+ data_count=[]
169
+ data_list = FollowUp.joins("JOIN educode_sales_businesses ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id")
170
+ .where("educode_sales_businesses.id in (?)",businesses.pluck(:id)).map do |m|
171
+ {value: m.actual_amount.to_i, date:m.signed_date.to_s[5..6].to_i}
228
172
  end
173
+ count_data(data_list,data_count) # 统计数据
174
+ update_assessments_progress(data_count,d) # 批量更新assessment数据 事物 一个commit
229
175
  end
230
- }
231
176
  end
232
177
 
233
178
 
234
- # 回款金额
235
- def collection_amount(a)
179
+ # 回款金额 权限
180
+ def collection_count
236
181
  follow_up_ids = Business.pluck(:last_follow_up_id)
237
182
  if @current_admin.is_admin?
238
183
  @money_plans = MoneyPlan.joins(:follow_up).where(follow_up_id: follow_up_ids)
@@ -247,43 +192,25 @@ module EducodeSales
247
192
  b_ids = Business.where(school_id: school_ids).pluck(:last_follow_up_id)
248
193
  ids = a_ids + b_ids
249
194
  @money_plans = MoneyPlan.joins(:follow_up).where(follow_up_id: ids)
250
- else
195
+ else
251
196
  @money_plans = MoneyPlan.joins(:follow_up).where(follow_up_id: follow_up_ids)
252
197
  end
253
198
  end
254
- # todo 1 :实际回款 0:计划回款 where(clazz: 1 OR 实际回款 ) 先把staff写死
255
- @money_plans = @money_plans.where(clazz: 1).where.not(date_at: nil ).where(staff_id: @staff_id)
256
- @money_plans.each do |d|
257
- case d.date_at.to_s[0..6]
258
- when "#{@assessment_year}-01"
259
- a[0] = a[0].to_i + d.amount.to_i
260
- when "#{@assessment_year}-02"
261
- a[1] = a[1].to_i + d.amount.to_i
262
- when "#{@assessment_year}-03"
263
- a[2] = a[2].to_i + d.amount.to_i
264
- when "#{@assessment_year}-04"
265
- a[3] = a[3].to_i + d.amount.to_i
266
- when "#{@assessment_year}-05"
267
- a[4] = a[4].to_i + d.amount.to_i
268
- when "#{@assessment_year}-06"
269
- a[5] = a[5].to_i + d.amount.to_i
270
- when "#{@assessment_year}-07"
271
- a[6] = a[6].to_i + d.amount.to_i
272
- when "#{@assessment_year}-08"
273
- a[7] = a[7].to_i + d.amount.to_i
274
- when "#{@assessment_year}-09"
275
- a[8] = a[8].to_i + d.amount.to_i
276
- when "#{@assessment_year}-10"
277
- a[9] = a[9].to_i + d.amount.to_i
278
- when "#{@assessment_year}-11"
279
- a[10] = a[10].to_i + d.amount.to_i
280
- when "#{@assessment_year}-12"
281
- a[11] = a[11].to_i + d.amount.to_i
199
+ # todo 1 :实际回款 0:计划回款 where(clazz: 1 OR 实际回款 )
200
+ @money_plans = @money_plans.where(clazz: 1).where.not(date_at: nil)
201
+ @staff_ids.each do |d|
202
+ data_count = []
203
+ data_list = @money_plans.where(staff_id: d).map do |m|
204
+ {date:m.date_at.to_s[5..6].to_i, value:m.amount.to_i}
282
205
  end
206
+ count_data(data_list,data_count)
207
+ update_assessments_progress(data_count, d)
283
208
  end
284
209
  end
285
210
 
286
- # 拜访量
211
+
212
+
213
+ # 权限获取拜访量
287
214
  def visits
288
215
  if @current_admin.is_admin?
289
216
  @customers = School.all
@@ -308,120 +235,44 @@ module EducodeSales
308
235
  @customers = @customers.where(id: ids)
309
236
  end
310
237
 
311
- # 客户拜访量
312
- def customer_visits(a)
313
- @customers.each do |d|
314
- customer_follows = EducodeSales::CustomerFollow.where(school_id: d.id)
315
- customer_follows.each do |f|
316
- case f.created_at.to_time.to_s[0..6]
317
- when "#{@assessment_year}-01"
318
- a[0] = a[0].to_i + 1
319
- when "#{@assessment_year}-02"
320
- a[1] = a[1].to_i + 1
321
- when "#{@assessment_year}-03"
322
- a[2] = a[2].to_i + 1
323
- when "#{@assessment_year}-04"
324
- a[3] = a[3].to_i + 1
325
- when "#{@assessment_year}-05"
326
- a[4] = a[4].to_i + 1
327
- when "#{@assessment_year}-06"
328
- a[5] = a[5].to_i + 1
329
- when "#{@assessment_year}-07"
330
- a[6] = a[6].to_i + 1
331
- when "#{@assessment_year}-08"
332
- a[7] = a[7].to_i + 1
333
- when "#{@assessment_year}-09"
334
- a[8] = a[8].to_i + 1
335
- when "#{@assessment_year}-10"
336
- a[9] = a[9].to_i + 1
337
- when "#{@assessment_year}-11"
338
- a[10] = a[10].to_i + 1
339
- when "#{@assessment_year}-12"
340
- a[11] = a[11].to_i + 1
341
- end
342
- end
343
- end
344
- end
345
-
346
238
 
347
- # 商机拜访量
348
- def busniness_visits(a)
349
- @customers.each do |d|
350
- business_ids = EducodeSales::Business.where(school_id: d.id).ids
351
- follow_ups = EducodeSales::FollowUp.where(business_id: business_ids)
352
- follow_ups.each do |f|
353
- case f.created_at.to_time.to_s[0..6]
354
- when "#{@assessment_year}-01"
355
- a[0] = a[0].to_i + 1
356
- when "#{@assessment_year}-02"
357
- a[1] = a[1].to_i + 1
358
- when "#{@assessment_year}-03"
359
- a[2] = a[2].to_i + 1
360
- when "#{@assessment_year}-04"
361
- a[3] = a[3].to_i + 1
362
- when "#{@assessment_year}-05"
363
- a[4] = a[4].to_i + 1
364
- when "#{@assessment_year}-06"
365
- a[5] = a[5].to_i + 1
366
- when "#{@assessment_year}-07"
367
- a[6] = a[6].to_i + 1
368
- when "#{@assessment_year}-08"
369
- a[7] = a[7].to_i + 1
370
- when "#{@assessment_year}-09"
371
- a[8] = a[8].to_i + 1
372
- when "#{@assessment_year}-10"
373
- a[9] = a[9].to_i + 1
374
- when "#{@assessment_year}-11"
375
- a[10] = a[10].to_i + 1
376
- when "#{@assessment_year}-12"
377
- a[11] = a[11].to_i + 1
378
- end
239
+ # 拜访量
240
+ def customer_and_busniness_visits
241
+ @staff_ids.each do |m|
242
+ customers = @customers.where(id: EducodeSales::CustomerExtension.where(customer_staff_id: m).pluck(:school_id))
243
+ data_list = []
244
+ data_count = []
245
+ CustomerFollow.joins(:school).where(school_id: customers.pluck(:id))
246
+ .where("Educode_Sales_customer_follows.created_at >= ? and Educode_Sales_customer_follows.created_at <= ?","#{@assessment_year}-01-01 ","#{@assessment_year}-12-31 23:59:59" )
247
+ .each do |d|
248
+ data_list << {value: 1, date: d.created_at.to_s[5..6].to_i}
379
249
  end
250
+ FollowUp.joins(:business).where("Educode_Sales_businesses.id in (?)",EducodeSales::Business.where(school_id: customers.pluck(:id)).pluck(:id))
251
+ .where("Educode_Sales_follow_ups.created_at >= ? and Educode_Sales_follow_ups.created_at <= ?","#{@assessment_year}-01-01 00:00:00", "#{@assessment_year}-12-31 23:59:59").each do |d|
252
+ data_list << {date: d.created_at.to_s[5..6].to_i, value: 1}
253
+ end
254
+ count_data(data_list,data_count)
255
+ assessment = @assessments.where(staff_id: m)
256
+ update_assessments_progress(data_count, assessment)
380
257
  end
381
- end
382
- # busniness_jurisdiction
383
- # ids = Common.where(extras: %w[a_class b_class c_class d_claass e_class o_class x_class]).pluck(:id)
384
- # @businesses = @businesses.joins("JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id").where("educode_sales_follow_ups.clazz_id in (?) ",ids)
385
- # @businesses = @businesses.where("educode_sales_businesses.follow_ups_count > ?",'0').where(staff_id: @staff_id)
258
+ end
386
259
 
387
260
 
388
261
 
389
262
 
390
263
  # 新增商机数
391
- def busniness_add(a)
392
- # 1.新增商机数统计在哪一个时间段?以商机的创建时间为准;先默认 过滤2022之前的 businesses -created_et deleted_at follow_ups_count
393
- @businesses = @businesses.where("educode_sales_businesses.created_at >= ? and educode_sales_businesses.created_at <= ?", "#{@assessment_year}-01-01 00:00:00".to_date,"#{@assessment_year}-12-31 23:59:59".to_date)
394
- # 2.销售人员新增的商机数量,过滤E、O、X类商机,包含:ABCD类商机; 上面有连接follow_up表
395
- ids = Common.where(extras: %w[a_class b_class c_class d_class]).pluck(:id) # 数组[1,5,2,15]
264
+ def busniness_add
265
+ @businesses = @businesses.where("educode_sales_businesses.created_at >= ? and educode_sales_businesses.created_at <= ?", "#{@assessment_year}-01-01 00:00:00","#{@assessment_year}-12-31 23:59:59")
266
+ ids = Common.where(extras: %w[a_class b_class c_class d_class]).pluck(:id)
396
267
  @businesses = @businesses.joins("JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id").where("educode_sales_follow_ups.clazz_id in (?) ",ids)
397
- @businesses = @businesses.where(staff_id: @staff_id)
398
- @businesses.each do |d|
399
- case d.created_at.to_time.to_s[0..6]
400
- when "#{@assessment_year}-01"
401
- a[0] = a[0].to_i + 1
402
- when "#{@assessment_year}-02"
403
- a[1] = a[1].to_i + 1
404
- when "#{@assessment_year}-03"
405
- a[2] = a[2].to_i + 1
406
- when "#{@assessment_year}-04"
407
- a[3] = a[3].to_i + 1
408
- when "#{@assessment_year}-05"
409
- a[4] = a[4].to_i + 1
410
- when "#{@assessment_year}-06"
411
- a[5] = a[5].to_i + 1
412
- when "#{@assessment_year}-07"
413
- a[6] = a[6].to_i + 1
414
- when "#{@assessment_year}-08"
415
- a[7] = a[7].to_i + 1
416
- when "#{@assessment_year}-09"
417
- a[8] = a[8].to_i + 1
418
- when "#{@assessment_year}-10"
419
- a[9] = a[9].to_i + 1
420
- when "#{@assessment_year}-11"
421
- a[10] = a[10].to_i + 1
422
- when "#{@assessment_year}-12"
423
- a[11] = a[11].to_i + 1
268
+ @staff_ids.each do |d|
269
+ businesses = @businesses.where(staff_id: d)
270
+ data_count = []
271
+ data_list = businesses.map do |m|
272
+ {date: m.created_at.to_s[5..6].to_i, value: 1}
424
273
  end
274
+ count_data(data_list,data_count) # 统计数据
275
+ update_assessments_progress(data_count, d) # 批量更新assessment数据 事物 一个commit
425
276
  end
426
277
  end
427
278
 
@@ -430,7 +281,7 @@ module EducodeSales
430
281
  def busniness_jurisdiction
431
282
  # busniness 权限
432
283
  if @current_admin.is_admin?
433
- @businesses = Business
284
+ @businesses = Business.all
434
285
  else
435
286
  level = @current_admin.role.role_areas.find_by(clazz: '商机管理').level
436
287
  case level
@@ -443,29 +294,45 @@ module EducodeSales
443
294
  business_ids = Business.joins(last_follow_up: :assign_follow_ups).where("educode_sales_assign_follow_ups.staff_id = ?", @current_admin.id).pluck(:id)
444
295
  @businesses = Business.joins("JOIN departments ON educode_sales_businesses.department_id = departments.id").where("departments.school_id in (?) OR educode_sales_businesses.staff_id = #{@current_admin.id} OR educode_sales_businesses.id in (?)", school_ids, business_ids)
445
296
  else
446
- @businesses = Business
297
+ @businesses = Business.all
447
298
  end
448
299
  end
449
300
  end
450
301
 
302
+
451
303
  # 更新assessments_settings表中数据
452
- def update_assessments_progress(a)
453
- a[12] = a[0].to_i + a[1].to_i + a[2].to_i
454
- a[13] = a[3].to_i + a[4].to_i + a[5].to_i
455
- a[14] = a[6].to_i + a[7].to_i + a[8].to_i
456
- a[15] = a[9].to_i + a[10].to_i + a[11].to_i
457
- a[16] = a[12].to_i + a[13].to_i + a[14].to_i + a[15].to_i
458
- @assessments.each do |d|
459
- d.update(annual_progress: a[16], first_quarter_progress: a[12], second_quarter_progress: a[13], third_quarter_progress: a[14], fourth_quarter_progress: a[15],
460
- january_progress: a[0], february_progress: a[1], march_progress: a[2], april_progress: a[3], may_progress: a[4], june_progress: a[5],
461
- july_progress: a[6], august_progress: a[7], september_progress: a[8], october_progress: a[9], november_progress: a[10], december_progress: a[11])
304
+ def update_assessments_progress(data_count,staff_id)
305
+ data_count[12] = data_count[0].to_i + data_count[1].to_i + data_count[2].to_i
306
+ data_count[13] = data_count[3].to_i + data_count[4].to_i + data_count[5].to_i
307
+ data_count[14] = data_count[6].to_i + data_count[7].to_i + data_count[8].to_i
308
+ data_count[15] = data_count[9].to_i + data_count[10].to_i + data_count[11].to_i
309
+ data_count[16] = data_count[12].to_i + data_count[13].to_i + data_count[14].to_i + data_count[15].to_i
310
+ # 开启事物 处理 批量修改数据
311
+ assessments = @assessments.where(staff_id: staff_id)
312
+ assessments.update(annual_progress: data_count[16], first_quarter_progress: data_count[12], second_quarter_progress: data_count[13], third_quarter_progress: data_count[14], fourth_quarter_progress: data_count[15],
313
+ january_progress: data_count[0], february_progress: data_count[1], march_progress: data_count[2], april_progress: data_count[3], may_progress: data_count[4], june_progress: data_count[5],
314
+ july_progress: data_count[6], august_progress: data_count[7], september_progress: data_count[8], october_progress: data_count[9], november_progress: data_count[10], december_progress: data_count[11])
315
+
316
+ end
317
+
318
+ # 将统计到的数据转入a中
319
+ def count_data(data_list,data_count)
320
+ data_list.each do |d|
321
+ if data_count[d[:date]-1].present?
322
+ data_count[d[:date]-1] = data_count[d[:date]-1] + d[:value]
323
+ else
324
+ data_count[d[:date]-1] = d[:value]
462
325
  end
463
- @assessments.order("created_at desc")
326
+ end
464
327
  end
465
328
 
466
329
 
467
330
 
468
331
 
332
+
333
+
334
+
335
+
469
336
  private
470
337
  def params_create
471
338
  params.permit( :annual, :assessment,:assessment_year, :first_quarter, :second_quarter, :third_quarter, :fourth_quarter,