educode_sales 0.7.6 → 0.7.9

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/educode_sales/top_page.png +0 -0
  3. data/app/controllers/educode_sales/assessments_controller.rb +139 -282
  4. data/app/controllers/educode_sales/businesses_controller.rb +59 -1
  5. data/app/controllers/educode_sales/customers_controller.rb +0 -3
  6. data/app/helpers/educode_sales/application_helper.rb +3 -3
  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/follow_up.rb +2 -0
  11. data/app/models/educode_sales/role_area.rb +1 -1
  12. data/app/views/educode_sales/assessments/_progress.html.erb +7 -4
  13. data/app/views/educode_sales/assessments/_setup.html.erb +54 -10
  14. data/app/views/educode_sales/assessments/edit.html.erb +47 -54
  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 +148 -111
  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 +122 -6
  21. data/app/views/educode_sales/businesses/index.json.jbuilder +1 -0
  22. data/app/views/educode_sales/businesses/new_follow_record.html.erb +1 -1
  23. data/app/views/educode_sales/home/index.html.erb +1 -1
  24. data/app/views/educode_sales/plans/edit_month.html.erb +1 -1
  25. data/app/views/layouts/educode_sales/application.html.erb +1 -1
  26. data/config/routes.rb +3 -0
  27. data/db/migrate/20220419103842_add_column_timestamps_to_assessments_settings.rb +9 -0
  28. data/db/migrate/20220420071909_create_educode_sales_business_relation_ships.rb +10 -0
  29. data/lib/educode_sales/version.rb +1 -1
  30. metadata +7 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3f2d58705000421e8157075a93f08b67c82e9c37b9dbbb8f4e7b63c19e52280d
4
- data.tar.gz: 137a851002c239bf2588a01dc91ade03cc8c2bb145e1cf4521c912e73352897f
3
+ metadata.gz: e9403e25df2848c96f744c79481e62ea3ebe44c6da7d265bd1e107885c13b108
4
+ data.tar.gz: 994b9567c3b88d6a804b43484447932725dcfe5d3c0f1e6113233c309a1f1f62
5
5
  SHA512:
6
- metadata.gz: 24cbb94a199113c49c610c7a597e37b2f2328ac6a0802134074a2a5b8152bd4a7f006c433d02509071640e6995a04aa2d01e62f7b06e81e6ec68c3b43c43cc7c
7
- data.tar.gz: f1cc4184e39c6712f82c724f0eb9120c51ce204689ef4c7b9e27f1acfc3ee8f16672fd2f6b87950cba843ca324fda7e69c1ae52cf12d76f71b6f243f5cbb0233
6
+ metadata.gz: 202b2c2d096f7b8d949658605ed1eb1d9b288a2764ee8144e83efb60b7c718720471f3acec0f5a818302798550eef40c53b1642421465bb3370dec1160272fee
7
+ data.tar.gz: d5cd014d540019070da9da22c4b7439c4a71b242d6841d34494fdff9af0b049e9d14e22200af16b8c5a32f06bdd6ba9c18bb7b1c21a8c8a78c94f7ec446f7d7f
@@ -1,8 +1,10 @@
1
1
  require_dependency "educode_sales/application_controller"
2
2
 
3
-
4
3
  module EducodeSales
5
4
  class AssessmentsController < ApplicationController
5
+ before_action :progress_or_get_export_data, only: [:progress, :get_export_data]
6
+
7
+
6
8
  def index
7
9
  respond_to do |format|
8
10
  format.html do
@@ -12,47 +14,41 @@ module EducodeSales
12
14
  gon.export_menus = []
13
15
  gon.export_menus << { title: '导出到Csv文件', event: 'export_csv' }
14
16
  gon.export_menus << { title: '导出到Excel文件', event: 'export_excel' }
17
+ # index页面new弹出层下使用
18
+ gon.demo = Staff.joins(:user).where(job_type: common.id).map do |d|
19
+ {value: d.id, name: d.user.real_name }
20
+ end
15
21
  end
16
22
  format.json do
17
-
18
- p '--------------------------admin'
19
- p @current_admin
20
- p '----------------admin'
21
-
22
- @assessments = AssessmentsSetting.all
23
23
  @year = params[:q].present? && params[:q][:assessment_year].present? ? params[:q][:assessment_year]:'2022'
24
24
  @assessments_id = params[:q].present? && params[:q][:assessment_id].present? ? params[:q][:assessment_id]: '1'
25
- @assessments = @assessments.where("assessment_year >= ? and assessment_year <= ?", "#{@year}-01-01 00:00:00".to_date, "#{@year}-12-31 23:59:00".to_date)
26
- @assessments = @assessments.where(assessment: @assessments_id).order("id desc")
25
+ @assessments = AssessmentsSetting.where("assessment_year >= ? and assessment_year <= ?", "#{@year}-01-01 00:00:00".to_date, "#{@year}-12-31 23:59:00".to_date)
26
+ @assessments = @assessments.where(assessment: @assessments_id).order("updated_at desc")
27
27
  if params[:q].present? && params[:q][:staff_id].present?
28
- @assessments = @assessments.where(staff_id: params[:q][:staff_id]).order("id desc")
28
+ @assessments = @assessments.where(staff_id: params[:q][:staff_id]).order("updated_at desc")
29
29
  end
30
- # 对数据进行分页 默认为page=1 limit=10
31
- # @assessments = @assessments.order("id desc").page(params[:page]).per(params[:limit])
32
30
  end
33
31
  end
34
32
  end
35
33
 
36
-
37
-
38
34
  # 新增
39
35
  def create
40
- ActiveRecord::Base.transaction do
41
- demo = AssessmentsSetting.new(params_create)
42
- demo.user_id = current_user.user_id
43
- demo.assessment_year = "#{params[:assessment_year]}-01-01"
44
- demo.save
45
- p demo.assessment_year,'ok'
36
+ begin
37
+ demo = AssessmentsSetting.new(params_create)
38
+ demo.user_id = current_user.user_id
39
+ demo.assessment_year = "#{params[:assessment_year]}-01-01"
40
+ params[:staffs_ids].split(",").each do |d|
41
+ staff = demo.dup
42
+ staff.staff_id = d.to_i
43
+ staff.save
44
+ end
45
+ render_success
46
+ rescue => e
47
+ render_failure '增加数据错误'
46
48
  end
47
- render_success
48
49
  end
49
50
 
50
-
51
51
  def new
52
- common = Common.find_by(clazz: 'staff_type', name: '销售')
53
- @staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id]} # [[], [], ............]
54
- # do something
55
- # @staffs = Staff.joins(:user).where(job_type: common.id).map { |d| [d.user.real_name, d.id]}
56
52
  render layout: false
57
53
  end
58
54
 
@@ -62,19 +58,19 @@ module EducodeSales
62
58
  @username = @assessment.staff.user.real_name
63
59
  @year = @assessment.assessment_year.to_s[0..3]
64
60
  case @assessment.assessment
65
- when "1"
61
+ when 1
66
62
  @assessment_name = "签单金额"
67
- when "2"
63
+ when 2
68
64
  @assessment_name = "回款金额"
69
- when "3"
65
+ when 3
70
66
  @assessment_name = "拜访量"
71
- when "4"
67
+ when 4
72
68
  @assessment_name = "新增商机数"
73
69
  end
74
70
  render layout: false
75
71
  end
76
72
 
77
- # 根新数据
73
+ # 根新
78
74
  def update
79
75
  @assessment = AssessmentsSetting.find_by(id: params[:id])
80
76
  @assessment.update_attributes(params_update)
@@ -95,155 +91,87 @@ module EducodeSales
95
91
 
96
92
 
97
93
 
98
-
99
94
  # 导出数据
100
95
  def get_export_data
101
- common = Common.find_by(clazz: 'staff_type', name: '销售')
102
- @staff_ids = Staff.joins(:user).where(job_type: common.id).pluck(:id)
103
- @assessment_id = params[:assessment_id].present? ? params[:assessment_id]:'1'
104
- @assessment_year = params[:assessment_year] ? params[:assessment_year] : '2022'
105
- @assessments =AssessmentsSetting.where(assessment: @assessment_id).
106
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
107
- if params[:staff_id].present?
108
- @assessment = @assessments.where(staff_id: params[:staff_id]).order("id desc").first
109
- progress_main
110
- else
111
- # @assessments = @assessments.where(staff_id: @staff_ids) 注意 这样写有问题
112
- @staff_ids.each do |s|
113
- @assessment = @assessments.where(staff_id: s).order("id desc").first
114
- progress_main
115
- end
116
- end
117
- # 在从新获取一下 统计后的所有assessment_setting数据
118
- @assessments = AssessmentsSetting.where(assessment: @assessment_id).
119
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
120
- @assessments = params[:staff_id].present? ? @assessments.where(staff_id: params[:staff_id]).order("id desc"):
121
- @assessments.order("id desc")
96
+ p 'get_export_data'
122
97
  end
123
98
 
124
99
 
125
100
 
126
-
127
- # 增加导出记录
128
- def add_export_records
101
+ # 考核完成情况
102
+ def progress
103
+ p 'progress'
129
104
  end
130
105
 
131
106
 
132
107
 
133
-
134
-
135
-
136
- # todo 可以增加一个字段(用户判断assessment_setting表中的某一数据是否在一定条件下为最新数据
137
- # todo 在统计数据时 可以通过该字段 获取最新的数据 并统计 当比之前写的大大降低的代码的重复量 ,并且提高了数据库的性能)----注意 如果增加该字段后 在对某条数据进行操作时,要实施更新该条数据的该字段
138
-
139
- # 考核完成情况
140
- def progress
141
- common = Common.find_by(clazz: 'staff_type', name: '销售')
142
- @staff_ids = Staff.joins(:user).where(job_type: common.id).pluck(:id)
108
+ def progress_or_get_export_data
109
+ # common = Common.find_by(clazz: 'staff_type', name: '销售')
110
+ # @staff_ids = Staff.joins(:user).where(job_type: common.id).pluck(:id)
143
111
  @assessment_id = params[:q].present? && params[:q][:assessment_id].present? ? params[:q][:assessment_id]:'1'
144
- @assessment_year = params[:q].present? && params[:q][:assessment_year] ? params[:q][:assessment_year] : '2022'
145
- @assessments =AssessmentsSetting.where(assessment: @assessment_id).
146
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
147
- if params[:q].present? && params[:q][:staff_id].present?
148
- @assessment = @assessments.where(staff_id: params[:q][:staff_id]).order("id desc").first
112
+ @assessment_year = params[:q].present? && params[:q][:assessment_year].present? ? params[:q][:assessment_year] : '2022'
113
+ @assessments =AssessmentsSetting.where(assessment: @assessment_id)
114
+ .where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
115
+ .order("created_at desc")
116
+ if @assessments.present?
117
+ # 小优化
118
+ @staff_ids = params[:q].present? && params[:q][:staff_id].present? ? [params[:q][:staff_id].to_i]:@assessments.pluck(:staff_id).uniq
119
+ p @staff_ids
149
120
  progress_main
150
- else
151
- # @assessments = @assessments.where(staff_id: @staff_ids) 注意 这样写有问题
152
- @staff_ids.each do |s|
153
- @assessment = @assessments.where(staff_id: s).order("id desc").first
154
- progress_main
155
- end
121
+ # 注意一下
122
+ @assessments = @assessments.where(staff_id: @staff_ids)
156
123
  end
157
- # 在从新获取一下 统计后的所有assessment_setting数据
158
- @assessments = AssessmentsSetting.where(assessment: @assessment_id).
159
- where("assessment_year >= ? and assessment_year <= ?", "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:00".to_date)
160
- @assessments = params[:q].present? && params[:q][:staff_id].present? ? @assessments.where(staff_id: params[:q][:staff_id]).order("id desc"):
161
- @assessments.order("id desc")
162
-
163
124
  end
164
125
 
165
126
 
166
-
167
-
168
127
  # todo 主方法 统计用户的数据
169
128
  def progress_main
170
- if @assessment.present?
171
- a = []
172
129
  case @assessment_id
173
130
  when '1' # 签单金额
174
131
  busniness_jurisdiction
175
- signed_amount(a)
132
+ signed_count
176
133
  when '2' # 回款金额
177
- collection_amount(a)
134
+ collection_count
178
135
  when '3' # 拜访量
179
136
  visits
180
- school_ids = EducodeSales::CustomerExtension.where(customer_staff_id: @staff_id).pluck(:school_id)
181
- @customers = @customers.where(id: school_ids)
182
- busniness_visits(a) # 商机拜访量
183
- customer_visits(a) # 客户拜访量
137
+ customer_and_busniness_visits
184
138
  when '4' # 新增商机数
185
139
  busniness_jurisdiction
186
- busniness_add(a)
140
+ busniness_add
187
141
  end
188
- update_assessments_progress(a)
189
- else
190
- # render layout:false
191
- end
192
142
  end
193
143
 
194
144
 
195
145
 
196
-
197
146
  # 签单金额
198
- def signed_amount(a)
147
+ def signed_count
199
148
  # 过滤x类商机
200
- ids = Common.where(extras: %w[a_class b_class c_class d_claass e_class o_class]).pluck(:id)
201
- @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)
149
+ ids = Common.where.not(extras: %w[x_class]).pluck(:id)
150
+ @businesses = @businesses.joins(:last_follow_up).where("educode_sales_follow_ups.clazz_id in (?) ",ids)
151
+ .where("educode_sales_follow_ups.signed_date >= ? and educode_sales_follow_ups.signed_date <= ?",
152
+ "#{@assessment_year}-01-01 00:00:00".to_date, "#{@assessment_year}-12-31 23:59:59".to_date)
202
153
  # 得到最新阶段为已签单商机
203
154
  s_stage_ids = Common.where(clazz: '商机阶段', name: ['已签单','已验收','回款中', '服务中','已结束']).pluck(:id)
204
155
  @businesses = @businesses.joins("
205
156
  JOIN educode_sales_follow_ups ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id
206
157
  ").where("educode_sales_follow_ups.stage_id IN (?)",s_stage_ids)
207
- # 得到指定staff的商机------------先暂时指定
208
- @businesses = @businesses.where(staff_id: @staff_id)
209
- # businesses each操作并 获取最新根新记录
210
- @businesses.each { |d| d
211
- @follow_ups = d.follow_ups.where.not(signed_date: nil).order("signed_date desc")
212
- if @follow_ups.first.present?
213
- signed_date = @follow_ups.first.signed_date.to_time || '1000-01-01 00:00:00'.to_time
214
- case signed_date.to_s[0..6]
215
- when "#{@assessment_year}-01"
216
- a[0] = a[0].to_i + @follow_ups.first.actual_amount.to_i
217
- when "#{@assessment_year}-02"
218
- a[1] = a[1].to_i + @follow_ups.first.actual_amount.to_i
219
- when "#{@assessment_year}-03"
220
- a[2] = a[2].to_i + @follow_ups.first.actual_amount.to_i
221
- when "#{@assessment_year}-04"
222
- a[3] = a[3].to_i + @follow_ups.first.actual_amount.to_i
223
- when "#{@assessment_year}-05"
224
- a[4] = a[4].to_i + @follow_ups.first.actual_amount.to_i
225
- when "#{@assessment_year}-06"
226
- a[5] = a[5].to_i + @follow_ups.first.actual_amount.to_i
227
- when "#{@assessment_year}-07"
228
- a[6] = a[6].to_i + @follow_ups.first.actual_amount.to_i
229
- when "#{@assessment_year}-08"
230
- a[7] = a[7].to_i + @follow_ups.first.actual_amount.to_i
231
- when "#{@assessment_year}-09"
232
- a[8] = a[8].to_i + @follow_ups.first.actual_amount.to_i
233
- when "#{@assessment_year}-10"
234
- a[9] = a[9].to_i + @follow_ups.first.actual_amount.to_i
235
- when "#{@assessment_year}-11"
236
- a[10] = a[10].to_i + @follow_ups.first.actual_amount.to_i
237
- when "#{@assessment_year}-12"
238
- a[11] = a[11].to_i + @follow_ups.first.actual_amount.to_i
158
+ @staff_ids.each do |d|
159
+ # 注意
160
+ businesses = @businesses.where(staff_id: d)
161
+ b = []
162
+ a=[]
163
+ FollowUp.joins("JOIN educode_sales_businesses ON educode_sales_businesses.last_follow_up_id = educode_sales_follow_ups.id").where("educode_sales_businesses.id in (?)",businesses.pluck(:id)).each do |m|
164
+ b << {value: m.actual_amount.to_i, date:m.signed_date.to_s[5..6].to_i}
239
165
  end
166
+
167
+ count_data(b,a) # 统计数据
168
+ update_assessments_progress(a,d) # 批量更新assessment数据 事物 出现一个commit
240
169
  end
241
- }
242
170
  end
243
171
 
244
172
 
245
- # 回款金额
246
- def collection_amount(a)
173
+ # 回款金额 权限
174
+ def collection_count
247
175
  follow_up_ids = Business.pluck(:last_follow_up_id)
248
176
  if @current_admin.is_admin?
249
177
  @money_plans = MoneyPlan.joins(:follow_up).where(follow_up_id: follow_up_ids)
@@ -263,38 +191,21 @@ module EducodeSales
263
191
  end
264
192
  end
265
193
  # todo 1 :实际回款 0:计划回款 where(clazz: 1 OR 实际回款 ) 先把staff写死
266
- @money_plans = @money_plans.where(clazz: 1).where.not(date_at: nil ).where(staff_id: @staff_id)
267
- @money_plans.each do |d|
268
- case d.date_at.to_s[0..6]
269
- when "#{@assessment_year}-01"
270
- a[0] = a[0].to_i + d.amount.to_i
271
- when "#{@assessment_year}-02"
272
- a[1] = a[1].to_i + d.amount.to_i
273
- when "#{@assessment_year}-03"
274
- a[2] = a[2].to_i + d.amount.to_i
275
- when "#{@assessment_year}-04"
276
- a[3] = a[3].to_i + d.amount.to_i
277
- when "#{@assessment_year}-05"
278
- a[4] = a[4].to_i + d.amount.to_i
279
- when "#{@assessment_year}-06"
280
- a[5] = a[5].to_i + d.amount.to_i
281
- when "#{@assessment_year}-07"
282
- a[6] = a[6].to_i + d.amount.to_i
283
- when "#{@assessment_year}-08"
284
- a[7] = a[7].to_i + d.amount.to_i
285
- when "#{@assessment_year}-09"
286
- a[8] = a[8].to_i + d.amount.to_i
287
- when "#{@assessment_year}-10"
288
- a[9] = a[9].to_i + d.amount.to_i
289
- when "#{@assessment_year}-11"
290
- a[10] = a[10].to_i + d.amount.to_i
291
- when "#{@assessment_year}-12"
292
- a[11] = a[11].to_i + d.amount.to_i
194
+ @money_plans = @money_plans.where(clazz: 1).where.not(date_at: nil)
195
+ @staff_ids.each do |d|
196
+ b = []
197
+ a = []
198
+ @money_plans.where(staff_id: d).each do |m|
199
+ b << {date:m.date_at.to_s[5..6].to_i, value:m.amount.to_i}
293
200
  end
201
+ count_data(b,a)
202
+ update_assessments_progress(a, d)
294
203
  end
295
204
  end
296
205
 
297
- # 拜访量
206
+
207
+
208
+ # 权限获取拜访量
298
209
  def visits
299
210
  if @current_admin.is_admin?
300
211
  @customers = School.all
@@ -319,121 +230,45 @@ module EducodeSales
319
230
  @customers = @customers.where(id: ids)
320
231
  end
321
232
 
322
- # 客户拜访量
323
- def customer_visits(a)
324
- @customers.each do |d|
325
- customer_follows = EducodeSales::CustomerFollow.where(school_id: d.id)
326
- customer_follows.each do |f|
327
- case f.created_at.to_time.to_s[0..6]
328
- when "#{@assessment_year}-01"
329
- a[0] = a[0].to_i + 1
330
- when "#{@assessment_year}-02"
331
- a[1] = a[1].to_i + 1
332
- when "#{@assessment_year}-03"
333
- a[2] = a[2].to_i + 1
334
- when "#{@assessment_year}-04"
335
- a[3] = a[3].to_i + 1
336
- when "#{@assessment_year}-05"
337
- a[4] = a[4].to_i + 1
338
- when "#{@assessment_year}-06"
339
- a[5] = a[5].to_i + 1
340
- when "#{@assessment_year}-07"
341
- a[6] = a[6].to_i + 1
342
- when "#{@assessment_year}-08"
343
- a[7] = a[7].to_i + 1
344
- when "#{@assessment_year}-09"
345
- a[8] = a[8].to_i + 1
346
- when "#{@assessment_year}-10"
347
- a[9] = a[9].to_i + 1
348
- when "#{@assessment_year}-11"
349
- a[10] = a[10].to_i + 1
350
- when "#{@assessment_year}-12"
351
- a[11] = a[11].to_i + 1
352
- end
353
- end
354
- end
355
- end
356
-
357
233
 
358
- # 商机拜访量
359
- def busniness_visits(a)
360
- @customers.each do |d|
361
- business_ids = EducodeSales::Business.where(school_id: d.id).ids
362
- follow_ups = EducodeSales::FollowUp.where(business_id: business_ids)
363
- follow_ups.each do |f|
364
- case f.created_at.to_time.to_s[0..6]
365
- when "#{@assessment_year}-01"
366
- a[0] = a[0].to_i + 1
367
- when "#{@assessment_year}-02"
368
- a[1] = a[1].to_i + 1
369
- when "#{@assessment_year}-03"
370
- a[2] = a[2].to_i + 1
371
- when "#{@assessment_year}-04"
372
- a[3] = a[3].to_i + 1
373
- when "#{@assessment_year}-05"
374
- a[4] = a[4].to_i + 1
375
- when "#{@assessment_year}-06"
376
- a[5] = a[5].to_i + 1
377
- when "#{@assessment_year}-07"
378
- a[6] = a[6].to_i + 1
379
- when "#{@assessment_year}-08"
380
- a[7] = a[7].to_i + 1
381
- when "#{@assessment_year}-09"
382
- a[8] = a[8].to_i + 1
383
- when "#{@assessment_year}-10"
384
- a[9] = a[9].to_i + 1
385
- when "#{@assessment_year}-11"
386
- a[10] = a[10].to_i + 1
387
- when "#{@assessment_year}-12"
388
- a[11] = a[11].to_i + 1
389
- end
234
+ # 拜访量
235
+ def customer_and_busniness_visits
236
+ @staff_ids.each do |m|
237
+ customers = @customers.where(id: EducodeSales::CustomerExtension.where(customer_staff_id: m).pluck(:school_id))
238
+ b = []
239
+ a = []
240
+ CustomerFollow.joins(:school).where(school_id: customers.pluck(:id))
241
+ .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" )
242
+ .each do |d|
243
+ b << {value: 1, date: d.created_at.to_s[5..6].to_i}
390
244
  end
245
+ FollowUp.joins(:business).where("Educode_Sales_businesses.id in (?)",EducodeSales::Business.where(school_id: customers.pluck(:id)).pluck(:id))
246
+ .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|
247
+ b << {date: d.created_at.to_s[5..6].to_i, value: 1}
248
+ end
249
+ count_data(b,a)
250
+ assessment = @assessments.where(staff_id: m)
251
+ update_assessments_progress(a, assessment)
391
252
  end
392
- end
393
- # busniness_jurisdiction
394
- # ids = Common.where(extras: %w[a_class b_class c_class d_claass e_class o_class x_class]).pluck(:id)
395
- # @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)
396
- # @businesses = @businesses.where("educode_sales_businesses.follow_ups_count > ?",'0').where(staff_id: @staff_id)
253
+ end
397
254
 
398
255
 
399
256
 
400
257
 
401
258
  # 新增商机数
402
- def busniness_add(a)
403
- # 1.新增商机数统计在哪一个时间段?以商机的创建时间为准;先默认 过滤2022之前的 businesses -created_et deleted_at follow_ups_count
404
- @businesses = @businesses.where("follow_ups_count > ?", '0').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:00".to_date)
405
- # 2.销售人员新增的商机数量,过滤E、O、X类商机,包含:ABCD类商机; 上面有连接follow_up表
406
- ids = Common.where(extras: %w[a_class b_class c_class d_claass]).pluck(:id) # 数组[1,5,2,15]
259
+ def busniness_add
260
+ @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")
261
+ ids = Common.where(extras: %w[a_class b_class c_class d_class]).pluck(:id)
407
262
  @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)
408
- # 先把staff写死
409
- @businesses = @businesses.where(staff_id: @staff_id)
410
- @businesses.each do |d|
411
- case d.created_at.to_time.to_s[0..6]
412
- when "#{@assessment_year}-01"
413
- a[0] = a[0].to_i + 1
414
- when "#{@assessment_year}-02"
415
- a[1] = a[1].to_i + 1
416
- when "#{@assessment_year}-03"
417
- a[2] = a[2].to_i + 1
418
- when "#{@assessment_year}-04"
419
- a[3] = a[3].to_i + 1
420
- when "#{@assessment_year}-05"
421
- a[4] = a[4].to_i + 1
422
- when "#{@assessment_year}-06"
423
- a[5] = a[5].to_i + 1
424
- when "#{@assessment_year}-07"
425
- a[6] = a[6].to_i + 1
426
- when "#{@assessment_year}-08"
427
- a[7] = a[7].to_i + 1
428
- when "#{@assessment_year}-09"
429
- a[8] = a[8].to_i + 1
430
- when "#{@assessment_year}-10"
431
- a[9] = a[9].to_i + 1
432
- when "#{@assessment_year}-11"
433
- a[10] = a[10].to_i + 1
434
- when "#{@assessment_year}-12"
435
- a[11] = a[11].to_i + 1
263
+ @staff_ids.each do |d|
264
+ businesses = @businesses.where(staff_id: d)
265
+ b = []
266
+ a = []
267
+ businesses.each do |m|
268
+ b << {date: m.created_at.to_s[5..6].to_i, value: 1}
436
269
  end
270
+ count_data(b,a)
271
+ update_assessments_progress(a, d)
437
272
  end
438
273
  end
439
274
 
@@ -442,7 +277,7 @@ module EducodeSales
442
277
  def busniness_jurisdiction
443
278
  # busniness 权限
444
279
  if @current_admin.is_admin?
445
- @businesses = Business
280
+ @businesses = Business.all
446
281
  else
447
282
  level = @current_admin.role.role_areas.find_by(clazz: '商机管理').level
448
283
  case level
@@ -455,29 +290,51 @@ module EducodeSales
455
290
  business_ids = Business.joins(last_follow_up: :assign_follow_ups).where("educode_sales_assign_follow_ups.staff_id = ?", @current_admin.id).pluck(:id)
456
291
  @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)
457
292
  else
458
- @businesses = Business
293
+ @businesses = Business.all
459
294
  end
460
295
  end
461
296
  end
462
297
 
298
+
463
299
  # 更新assessments_settings表中数据
464
- def update_assessments_progress(a)
465
- a[12] = a[0].to_i + a[1].to_i + a[2].to_i
466
- a[13] = a[3].to_i + a[4].to_i + a[5].to_i
467
- a[14] = a[6].to_i + a[7].to_i + a[8].to_i
468
- a[15] = a[9].to_i + a[10].to_i + a[11].to_i
469
- a[16] = a[12].to_i + a[13].to_i + a[14].to_i + a[15].to_i
470
- @assessment.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],
471
- january_progress: a[0], february_progress: a[1], march_progress: a[2], april_progress: a[3], may_progress: a[4], june_progress: a[5],
472
- july_progress: a[6], august_progress: a[7], september_progress: a[8], october_progress: a[9], november_progress: a[10], december_progress: a[11])
300
+ def update_assessments_progress(a,staff_id)
301
+ a[12] = a[0].to_i + a[1].to_i + a[2].to_i
302
+ a[13] = a[3].to_i + a[4].to_i + a[5].to_i
303
+ a[14] = a[6].to_i + a[7].to_i + a[8].to_i
304
+ a[15] = a[9].to_i + a[10].to_i + a[11].to_i
305
+ a[16] = a[12].to_i + a[13].to_i + a[14].to_i + a[15].to_i
306
+ # 开启事物 处理 批量修改数据
307
+ ActiveRecord::Base.transaction do
308
+ assessments = @assessments.where(staff_id: staff_id)
309
+ assessments.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],
310
+ january_progress: a[0], february_progress: a[1], march_progress: a[2], april_progress: a[3], may_progress: a[4], june_progress: a[5],
311
+ july_progress: a[6], august_progress: a[7], september_progress: a[8], october_progress: a[9], november_progress: a[10], december_progress: a[11])
312
+
313
+ end
314
+
315
+ end
316
+
317
+ # 将统计到的数据转入a中
318
+ def count_data(arry,a)
319
+ arry.each do |d|
320
+ if a[d[:date]-1].present?
321
+ a[d[:date]-1] = a[d[:date]-1] + d[:value]
322
+ else
323
+ a[d[:date]-1] = d[:value]
324
+ end
325
+ end
473
326
  end
474
327
 
475
328
 
476
329
 
477
330
 
331
+
332
+
333
+
334
+
478
335
  private
479
336
  def params_create
480
- params.permit(:staff_id, :annual, :assessment,:assessment_year, :first_quarter, :second_quarter, :third_quarter, :fourth_quarter,
337
+ params.permit( :annual, :assessment,:assessment_year, :first_quarter, :second_quarter, :third_quarter, :fourth_quarter,
481
338
  :january, :february, :march, :april, :may, :june, :july, :august, :september, :october, :november, :december)
482
339
  end
483
340