|
@@ -31,7 +31,7 @@ class countProject extends Command |
|
@@ -31,7 +31,7 @@ class countProject extends Command |
|
31
|
protected $description = '项目数据统计生成文件';
|
31
|
protected $description = '项目数据统计生成文件';
|
|
32
|
|
32
|
|
|
33
|
public function handle(){
|
33
|
public function handle(){
|
|
34
|
- $start = '2024-01';
|
34
|
+ $start = '2023-10';
|
|
35
|
$end = '2024-09';
|
35
|
$end = '2024-09';
|
|
36
|
$data = $this->exportDataProject($start,$end);
|
36
|
$data = $this->exportDataProject($start,$end);
|
|
37
|
$result = $this->exportData($data);
|
37
|
$result = $this->exportData($data);
|
|
@@ -61,7 +61,7 @@ class countProject extends Command |
|
@@ -61,7 +61,7 @@ class countProject extends Command |
|
61
|
$sheet->setCellValue('N1', '上线最慢');
|
61
|
$sheet->setCellValue('N1', '上线最慢');
|
|
62
|
$sheet->setCellValue('O1', '平均上线天数');
|
62
|
$sheet->setCellValue('O1', '平均上线天数');
|
|
63
|
$rowCount = 2;
|
63
|
$rowCount = 2;
|
|
64
|
- $allData = $this->countAll();
|
64
|
+// $allData = $this->countAll();
|
|
65
|
foreach ($data as $v) {
|
65
|
foreach ($data as $v) {
|
|
66
|
$sheet->setCellValue('A' . $rowCount, $v['month']);
|
66
|
$sheet->setCellValue('A' . $rowCount, $v['month']);
|
|
67
|
$sheet->setCellValue('B' . $rowCount, $v['start']);
|
67
|
$sheet->setCellValue('B' . $rowCount, $v['start']);
|
|
@@ -69,15 +69,15 @@ class countProject extends Command |
|
@@ -69,15 +69,15 @@ class countProject extends Command |
|
69
|
$sheet->setCellValue('D' . $rowCount, $v['month_create_project_count']);
|
69
|
$sheet->setCellValue('D' . $rowCount, $v['month_create_project_count']);
|
|
70
|
$sheet->setCellValue('E' . $rowCount, $v['month_project_go_online_count']);
|
70
|
$sheet->setCellValue('E' . $rowCount, $v['month_project_go_online_count']);
|
|
71
|
$sheet->setCellValue('F' . $rowCount, $v['month_project_online_rate']);
|
71
|
$sheet->setCellValue('F' . $rowCount, $v['month_project_online_rate']);
|
|
72
|
- $sheet->setCellValue('G' . $rowCount, $allData['count']);
|
|
|
|
73
|
- $sheet->setCellValue('H' . $rowCount, $allData['go_online_count']);
|
|
|
|
74
|
- $sheet->setCellValue('I' . $rowCount, $allData['promotion_web_count']);
|
|
|
|
75
|
- $sheet->setCellValue('J' . $rowCount, $allData['create_web_count']);
|
|
|
|
76
|
- $sheet->setCellValue('K' . $rowCount, $allData['no_go_oline_count']);
|
|
|
|
77
|
- $sheet->setCellValue('L' . $rowCount, $allData['delete_project_count']);
|
|
|
|
78
|
- $sheet->setCellValue('M' . $rowCount, $allData['min_project_count']);
|
|
|
|
79
|
- $sheet->setCellValue('N' . $rowCount, $allData['max_project_count']);
|
|
|
|
80
|
- $sheet->setCellValue('O' . $rowCount, $allData['average']);
|
72
|
+ $sheet->setCellValue('G' . $rowCount, $v['count']);
|
|
|
|
73
|
+ $sheet->setCellValue('H' . $rowCount, $v['go_online_count']);
|
|
|
|
74
|
+ $sheet->setCellValue('I' . $rowCount, $v['promotion_web_count']);
|
|
|
|
75
|
+ $sheet->setCellValue('J' . $rowCount, $v['create_web_count']);
|
|
|
|
76
|
+ $sheet->setCellValue('K' . $rowCount, $v['no_go_oline_count']);
|
|
|
|
77
|
+ $sheet->setCellValue('L' . $rowCount, $v['delete_project_count']);
|
|
|
|
78
|
+ $sheet->setCellValue('M' . $rowCount, $v['min_project_count']);
|
|
|
|
79
|
+ $sheet->setCellValue('N' . $rowCount, $v['max_project_count']);
|
|
|
|
80
|
+ $sheet->setCellValue('O' . $rowCount, $v['average']);
|
|
81
|
$rowCount++;
|
81
|
$rowCount++;
|
|
82
|
}
|
82
|
}
|
|
83
|
// 创建一个新的 Excel Writer 对象
|
83
|
// 创建一个新的 Excel Writer 对象
|
|
@@ -159,19 +159,30 @@ class countProject extends Command |
|
@@ -159,19 +159,30 @@ class countProject extends Command |
|
159
|
$data[$v]['month_project_go_online_count'] = $projectModel->counts(['uptime'=>['between',[$start_time,$end_time]],'deleted_at'=>0]);//当月上线项目数量
|
159
|
$data[$v]['month_project_go_online_count'] = $projectModel->counts(['uptime'=>['between',[$start_time,$end_time]],'deleted_at'=>0]);//当月上线项目数量
|
|
160
|
$data[$v]['month_project_online_rate'] = 0;
|
160
|
$data[$v]['month_project_online_rate'] = 0;
|
|
161
|
if($data[$v]['month_create_project_count'] != 0){
|
161
|
if($data[$v]['month_create_project_count'] != 0){
|
|
162
|
- $data[$v]['month_project_online_rate'] = $data[$v]['month_project_go_online_count'] / $data[$v]['month_create_project_count'];//比例
|
162
|
+ $data[$v]['month_project_online_rate'] = round($data[$v]['month_project_go_online_count'] / $data[$v]['month_create_project_count'],2);//比例
|
|
163
|
}
|
163
|
}
|
|
164
|
-// $data[$v]['count'] = $projectModel->count(['deleted_at'=>0]);//所有项目总数
|
|
|
|
165
|
-// $data[$v]['go_online_count'] = $projectModel->count(['uptime'=>['!=',null],'deleted_at'=>0]);//上线项目总数
|
|
|
|
166
|
-// $data[$v]['promotion_web_count'] = $projectModel->count(['type'=>3,'deleted_at'=>0]);//推广项目总数
|
|
|
|
167
|
-// $data[$v]['create_web_count'] = $projectModel->count(['type'=>2,'deleted_at'=>0]);//建站项目总数
|
|
|
|
168
|
-// $data[$v]['no_go_oline_count'] = $projectModel->count(['uptime'=>null,'deleted_at'=>0]);//未上线项目数量
|
|
|
|
169
|
-// $data[$v]['delete_project_count'] = $projectModel->count(['deleted_at'=>1]);//未上线项目数量
|
|
|
|
170
|
-// $min_info = $projectModel->select('diff')->selectRaw('(uptime - created_at) as diff')->where('uptime','!=',null)->orderByRaw('diff ASC')->first();
|
|
|
|
171
|
-// $data[$v]['min_project_count'] = $min_info['diff'];
|
|
|
|
172
|
-// $max_info = $projectModel->select('diff')->selectRaw('(uptime - created_at) as diff')->where('uptime','!=',null)->orderByRaw('diff Desc')->first();
|
|
|
|
173
|
-// $data[$v]['max_project_count'] = $max_info['diff'];
|
|
|
|
174
|
-// $data[$v]['average'] = ceil(($max_info['diff'] + $min_info['diff']) / 2);
|
164
|
+ $data[$v]['count'] = $projectModel->counts(['delete_status'=>0]);//所有项目总数
|
|
|
|
165
|
+ $data[$v]['go_online_count'] = $projectModel->counts(['uptime'=>['!=',null],'delete_status'=>0]);//上线项目总数
|
|
|
|
166
|
+ $data[$v]['promotion_web_count'] = $projectModel->counts(['type'=>3,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//推广项目总数
|
|
|
|
167
|
+ $data[$v]['create_web_count'] = $projectModel->counts(['type'=>2,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//建站项目总数
|
|
|
|
168
|
+ $data[$v]['no_go_oline_count'] = $projectModel->counts(['uptime'=>null,'delete_status'=>0,'created_at'=>['between',[$start_time,$end_time]]]);//未上线项目数量
|
|
|
|
169
|
+ $data[$v]['delete_project_count'] = $projectModel->counts(['delete_status'=>1,'created_at'=>['between',[$start_time,$end_time]]]);//删除
|
|
|
|
170
|
+ $min_info = $projectModel->select('*')
|
|
|
|
171
|
+ ->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
|
|
|
|
172
|
+ ->whereNotNull('uptime') // 确保 uptime 字段不为空
|
|
|
|
173
|
+ ->where('created_at','<=',$end_time)
|
|
|
|
174
|
+ ->whereBetween('created_at', [$start_time,$end_time])
|
|
|
|
175
|
+ ->orderByRaw('diff ASC')
|
|
|
|
176
|
+ ->first();
|
|
|
|
177
|
+ $data[$v]['min_project_count'] = $min_info['diff'];
|
|
|
|
178
|
+ $max_info = $projectModel->select('*')
|
|
|
|
179
|
+ ->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
|
|
|
|
180
|
+ ->whereNotNull('uptime') // 确保 uptime 字段不为空
|
|
|
|
181
|
+ ->whereBetween('created_at', [$start_time,$end_time])
|
|
|
|
182
|
+ ->orderByRaw('diff DESC')
|
|
|
|
183
|
+ ->first();
|
|
|
|
184
|
+ $data[$v]['max_project_count'] = $max_info['diff'];
|
|
|
|
185
|
+ $data[$v]['average'] = ceil(($max_info['diff'] + $min_info['diff']) / 2);
|
|
175
|
}
|
186
|
}
|
|
176
|
return $data;
|
187
|
return $data;
|
|
177
|
}
|
188
|
}
|
|
@@ -185,12 +196,12 @@ class countProject extends Command |
|
@@ -185,12 +196,12 @@ class countProject extends Command |
|
185
|
*/
|
196
|
*/
|
|
186
|
public function countAll(){
|
197
|
public function countAll(){
|
|
187
|
$projectModel = new Project();
|
198
|
$projectModel = new Project();
|
|
188
|
- $data['count'] = $projectModel->count(['deleted_at'=>0]);//所有项目总数
|
|
|
|
189
|
- $data['go_online_count'] = $projectModel->counts(['uptime'=>['!=',null],'deleted_at'=>0]);//上线项目总数
|
|
|
|
190
|
- $data['promotion_web_count'] = $projectModel->counts(['type'=>3,'deleted_at'=>0]);//推广项目总数
|
|
|
|
191
|
- $data['create_web_count'] = $projectModel->counts(['type'=>2,'deleted_at'=>0]);//建站项目总数
|
|
|
|
192
|
- $data['no_go_oline_count'] = $projectModel->counts(['uptime'=>null,'deleted_at'=>0]);//未上线项目数量
|
|
|
|
193
|
- $data['delete_project_count'] = $projectModel->counts(['deleted_at'=>1]);//删除项目数量
|
199
|
+ $data['count'] = $projectModel->counts(['deleted_at'=>0]);//所有项目总数
|
|
|
|
200
|
+ $data['go_online_count'] = $projectModel->counts(['uptime'=>['!=',null],'delete_status'=>0]);//上线项目总数
|
|
|
|
201
|
+ $data['promotion_web_count'] = $projectModel->counts(['type'=>3,'delete_status'=>0]);//推广项目总数
|
|
|
|
202
|
+ $data['create_web_count'] = $projectModel->counts(['type'=>2,'delete_status'=>0]);//建站项目总数
|
|
|
|
203
|
+ $data['no_go_oline_count'] = $projectModel->counts(['uptime'=>null,'delete_status'=>0]);//未上线项目数量
|
|
|
|
204
|
+ $data['delete_project_count'] = $projectModel->counts(['delete_status'=>1]);//删除项目数量
|
|
194
|
$min_info = $projectModel->select('*')
|
205
|
$min_info = $projectModel->select('*')
|
|
195
|
->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
|
206
|
->selectRaw('DATEDIFF(STR_TO_DATE(uptime, "%Y-%m-%d"), STR_TO_DATE(created_at, "%Y-%m-%d")) AS diff')
|
|
196
|
->whereNotNull('uptime') // 确保 uptime 字段不为空
|
207
|
->whereNotNull('uptime') // 确保 uptime 字段不为空
|