your_ai_insight 1.0.9 → 1.0.10
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.
- checksums.yaml +4 -4
- data/app/services/your_ai_insight/facility_data_service.rb +28 -26
- data/lib/your_ai_insight/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3241c83b9d80f1cffabef64df8128eb4d765b1c31667e256815257040bfb8861
|
|
4
|
+
data.tar.gz: 0ebe08ba0157fa78175d2f1188f57d62d97fee0c384fcf627bd20d897eb4e460
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 17e3e5509660d296e10855c05f3ac4df938ae9fc64974dc538c023d4b7e85d9d1ba994b7b205e7d157e88736559e6b6ef57e8b1f2fd66ef4580aba1d78fecada
|
|
7
|
+
data.tar.gz: 94b4d799978ea42d41354b7d57089972243866ce4e2d2fb0a059dafb1f33159c657fe033d61cdbdbc31588781598ff1c033befa0f91717c4bc45dbf1df8e2c96
|
|
@@ -80,15 +80,17 @@ module YourAiInsight
|
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
def jobs_by_status
|
|
83
|
-
|
|
83
|
+
col = @c.jobs_status_col
|
|
84
|
+
rows = exec_query("SELECT #{col}, COUNT(*) as cnt FROM #{j} #{job_where} GROUP BY #{col}")
|
|
84
85
|
labels = { 0 => "new", 1 => "assigned", 2 => "active", 3 => "work_complete", 4 => "all_tasks_complete", 5 => "finaled" }
|
|
85
|
-
rows.each_with_object({}) { |r, h| h[labels[r[
|
|
86
|
+
rows.each_with_object({}) { |r, h| h[labels[r[col].to_i] || r[col].to_s] = r["cnt"].to_i }
|
|
86
87
|
rescue StandardError; {}
|
|
87
88
|
end
|
|
88
89
|
|
|
89
90
|
def jobs_by_priority
|
|
90
|
-
|
|
91
|
-
rows
|
|
91
|
+
col = @c.jobs_priority_col
|
|
92
|
+
rows = exec_query("SELECT #{col}, COUNT(*) as cnt FROM #{j} #{job_where} AND #{col} IS NOT NULL GROUP BY #{col}")
|
|
93
|
+
rows.each_with_object({}) { |r, h| h[r[col]] = r["cnt"].to_i }
|
|
92
94
|
rescue StandardError; {}
|
|
93
95
|
end
|
|
94
96
|
|
|
@@ -103,28 +105,28 @@ module YourAiInsight
|
|
|
103
105
|
|
|
104
106
|
def jobs_on_hold_detail
|
|
105
107
|
exec_query(<<~SQL)
|
|
106
|
-
SELECT j.id, j.name, j.#{@c.jobs_priority_col}, j.#{@c.jobs_status_col},
|
|
107
|
-
j.created_at, l.name as location_name, c.name as customer_name
|
|
108
|
+
SELECT #{j}.id, #{j}.name, #{j}.#{@c.jobs_priority_col}, #{j}.#{@c.jobs_status_col},
|
|
109
|
+
#{j}.created_at, l.name as location_name, c.name as customer_name
|
|
108
110
|
FROM #{j}
|
|
109
|
-
LEFT JOIN #{loc} l ON l.id = j.#{@c.jobs_location_id_col}
|
|
110
|
-
LEFT JOIN #{cust} c ON c.id = j.#{@c.jobs_customer_id_col}
|
|
111
|
-
#{job_where} AND j.#{@c.jobs_hold_col} = true
|
|
112
|
-
ORDER BY j.created_at ASC LIMIT 25
|
|
111
|
+
LEFT JOIN #{loc} l ON l.id = #{j}.#{@c.jobs_location_id_col}
|
|
112
|
+
LEFT JOIN #{cust} c ON c.id = #{j}.#{@c.jobs_customer_id_col}
|
|
113
|
+
#{job_where} AND #{j}.#{@c.jobs_hold_col} = true
|
|
114
|
+
ORDER BY #{j}.created_at ASC LIMIT 25
|
|
113
115
|
SQL
|
|
114
116
|
rescue StandardError; []
|
|
115
117
|
end
|
|
116
118
|
|
|
117
119
|
def over_budget_jobs_detail
|
|
118
120
|
exec_query(<<~SQL)
|
|
119
|
-
SELECT j.id, j.name,
|
|
121
|
+
SELECT #{j}.id, #{j}.name,
|
|
120
122
|
COALESCE(SUM(e.#{@c.expenses_actual_col}),0) as total_actual,
|
|
121
123
|
COALESCE(SUM(e.#{@c.expenses_budget_col}),0) as total_budget,
|
|
122
124
|
l.name as location_name
|
|
123
125
|
FROM #{j}
|
|
124
|
-
LEFT JOIN #{exp} e ON e.#{@c.expenses_job_id_col} = j.id
|
|
125
|
-
LEFT JOIN #{loc} l ON l.id = j.#{@c.jobs_location_id_col}
|
|
126
|
+
LEFT JOIN #{exp} e ON e.#{@c.expenses_job_id_col} = #{j}.id
|
|
127
|
+
LEFT JOIN #{loc} l ON l.id = #{j}.#{@c.jobs_location_id_col}
|
|
126
128
|
#{job_where}
|
|
127
|
-
GROUP BY j.id, j.name, l.name
|
|
129
|
+
GROUP BY #{j}.id, #{j}.name, l.name
|
|
128
130
|
HAVING COALESCE(SUM(e.#{@c.expenses_actual_col}),0) > COALESCE(SUM(e.#{@c.expenses_budget_col}),0)
|
|
129
131
|
ORDER BY (COALESCE(SUM(e.#{@c.expenses_actual_col}),0) - COALESCE(SUM(e.#{@c.expenses_budget_col}),0)) DESC
|
|
130
132
|
LIMIT 15
|
|
@@ -140,7 +142,7 @@ module YourAiInsight
|
|
|
140
142
|
exec_query(<<~SQL)
|
|
141
143
|
SELECT l.name, COUNT(j.id) as job_count
|
|
142
144
|
FROM #{loc} l
|
|
143
|
-
LEFT JOIN #{j} ON j.#{@c.jobs_location_id_col} = l.id
|
|
145
|
+
LEFT JOIN #{j} j ON j.#{@c.jobs_location_id_col} = l.id
|
|
144
146
|
#{location_join_where("l")}
|
|
145
147
|
GROUP BY l.name ORDER BY job_count DESC LIMIT 10
|
|
146
148
|
SQL
|
|
@@ -151,7 +153,7 @@ module YourAiInsight
|
|
|
151
153
|
exec_query(<<~SQL)
|
|
152
154
|
SELECT c.name, COUNT(j.id) as job_count
|
|
153
155
|
FROM #{cust} c
|
|
154
|
-
LEFT JOIN #{j} ON j.#{@c.jobs_customer_id_col} = c.id
|
|
156
|
+
LEFT JOIN #{j} j ON j.#{@c.jobs_customer_id_col} = c.id
|
|
155
157
|
#{customer_join_where("c")}
|
|
156
158
|
GROUP BY c.name ORDER BY job_count DESC LIMIT 10
|
|
157
159
|
SQL
|
|
@@ -191,15 +193,15 @@ module YourAiInsight
|
|
|
191
193
|
|
|
192
194
|
def overdue_tasks_detail
|
|
193
195
|
exec_query(<<~SQL)
|
|
194
|
-
SELECT t.id, t.name, t.#{@c.tasks_complete_col}, t.#{@c.tasks_budget_col},
|
|
195
|
-
t.#{@c.tasks_actual_col}, j.name as job_name, l.name as location_name
|
|
196
|
+
SELECT #{t}.id, #{t}.name, #{t}.#{@c.tasks_complete_col}, #{t}.#{@c.tasks_budget_col},
|
|
197
|
+
#{t}.#{@c.tasks_actual_col}, j.name as job_name, l.name as location_name
|
|
196
198
|
FROM #{t}
|
|
197
|
-
LEFT JOIN #{j} ON j.id = t.#{@c.tasks_job_id_col}
|
|
199
|
+
LEFT JOIN #{j} j ON j.id = #{t}.#{@c.tasks_job_id_col}
|
|
198
200
|
LEFT JOIN #{loc} l ON l.id = j.#{@c.jobs_location_id_col}
|
|
199
201
|
#{task_where}
|
|
200
|
-
AND t.#{@c.tasks_complete_col} < CURRENT_DATE
|
|
201
|
-
AND t.#{@c.tasks_status_col} != 2
|
|
202
|
-
ORDER BY t.#{@c.tasks_complete_col} ASC LIMIT 20
|
|
202
|
+
AND #{t}.#{@c.tasks_complete_col} < CURRENT_DATE
|
|
203
|
+
AND #{t}.#{@c.tasks_status_col} != 2
|
|
204
|
+
ORDER BY #{t}.#{@c.tasks_complete_col} ASC LIMIT 20
|
|
203
205
|
SQL
|
|
204
206
|
rescue StandardError; []
|
|
205
207
|
end
|
|
@@ -227,9 +229,9 @@ module YourAiInsight
|
|
|
227
229
|
exec_query(<<~SQL)
|
|
228
230
|
SELECT b.id, b.#{@c.bids_amount_col}, b.received, b.notes,
|
|
229
231
|
t.name as task_name, j.name as job_name, v.name as vendor_name
|
|
230
|
-
FROM #{b}
|
|
231
|
-
LEFT JOIN #{t} ON
|
|
232
|
-
LEFT JOIN #{j} ON
|
|
232
|
+
FROM #{b} b
|
|
233
|
+
LEFT JOIN #{t} t ON t.id = b.#{@c.bids_task_id_col}
|
|
234
|
+
LEFT JOIN #{j} j ON j.id = t.#{@c.tasks_job_id_col}
|
|
233
235
|
LEFT JOIN vendors v ON v.id = b.vendor_id
|
|
234
236
|
WHERE (b.#{@c.bids_status_col} IS NULL OR b.#{@c.bids_status_col} NOT IN ('accepted','rejected'))
|
|
235
237
|
AND b.created_at BETWEEN #{range_sql}
|
|
@@ -365,7 +367,7 @@ module YourAiInsight
|
|
|
365
367
|
def br = @c.budget_requests_table
|
|
366
368
|
|
|
367
369
|
def range_sql
|
|
368
|
-
"'#{@date_range.first.
|
|
370
|
+
"'#{@date_range.first.strftime('%Y-%m-%d %H:%M:%S')}' AND '#{@date_range.last.strftime('%Y-%m-%d %H:%M:%S')}'"
|
|
369
371
|
end
|
|
370
372
|
|
|
371
373
|
def range_label
|