合并分支 'lyh-server' 到 'master'
Lyh server 查看合并请求 !2673
正在显示
2 个修改的文件
包含
80 行增加
和
0 行删除
| @@ -55,6 +55,9 @@ class TicketCount extends Command | @@ -55,6 +55,9 @@ class TicketCount extends Command | ||
| 55 | if($action == 'manage_action'){ | 55 | if($action == 'manage_action'){ |
| 56 | $this->manage_action(); | 56 | $this->manage_action(); |
| 57 | } | 57 | } |
| 58 | + if($action == 'manage_week_action'){ | ||
| 59 | + $this->manage_week_action(); | ||
| 60 | + } | ||
| 58 | if($action == 'dept_action'){ | 61 | if($action == 'dept_action'){ |
| 59 | $this->dept_action(); | 62 | $this->dept_action(); |
| 60 | } | 63 | } |
| @@ -111,6 +114,7 @@ class TicketCount extends Command | @@ -111,6 +114,7 @@ class TicketCount extends Command | ||
| 111 | if(!empty($timeout_num)){ | 114 | if(!empty($timeout_num)){ |
| 112 | $timeout_ratio = round($timeout_num / $ticket_num, 3); | 115 | $timeout_ratio = round($timeout_num / $ticket_num, 3); |
| 113 | } | 116 | } |
| 117 | + $date = date('Y-m-d'); | ||
| 114 | $data = [ | 118 | $data = [ |
| 115 | 'date'=>$date, | 119 | 'date'=>$date, |
| 116 | 'manage_id'=>$item['id'], | 120 | 'manage_id'=>$item['id'], |
| @@ -137,6 +141,58 @@ class TicketCount extends Command | @@ -137,6 +141,58 @@ class TicketCount extends Command | ||
| 137 | } | 141 | } |
| 138 | 142 | ||
| 139 | /** | 143 | /** |
| 144 | + * @remark :按周统计数据 | ||
| 145 | + * @name :manage_week_action | ||
| 146 | + * @author :lyh | ||
| 147 | + * @method :post | ||
| 148 | + * @time :2025/8/30 9:36 | ||
| 149 | + */ | ||
| 150 | + public function manage_week_action(){ | ||
| 151 | + $manageHrModel = new ManageHr(); | ||
| 152 | + $manageList = $manageHrModel->list(['status'=>1,'dept_id'=>['in',[1,2]]],'id',['id','dept_id','manage_id','name','nickname']); | ||
| 153 | + $ticketManageCountModel = new TicketDailyManageCount(); | ||
| 154 | + $startOfLastWeek = Carbon::now()->subWeek()->startOfWeek(); // 上周一 00:00:00 | ||
| 155 | + $endOfLastWeek = Carbon::now()->subWeek()->endOfWeek(); // 上周日 23:59:59 | ||
| 156 | + $ticketLogModel = new TicketLog(); | ||
| 157 | + foreach ($manageList as $item){ | ||
| 158 | + $this->output('按人员统计:执行的人员名称/id:'.$item['name'].'/'.$item['manage_id']); | ||
| 159 | + //上一周新增工单总数 | ||
| 160 | + $add_num = $ticketLogModel->counts(['created_at'=>['between',[$startOfLastWeek,$endOfLastWeek]],'engineer_id'=>$item['manage_id'],'is_engineer'=>1,'status'=>['!=',9]]); | ||
| 161 | + //上一周完成工单(创建+完成都在当周,算一条有效数据) | ||
| 162 | + $complete_num = $ticketLogModel->counts(['created_at'=>['between',[$startOfLastWeek,$endOfLastWeek]],'engineer_id'=>$item['manage_id'],'status'=>['!=',9],'is_engineer'=>1,'end_at'=>['between',[$startOfLastWeek,$endOfLastWeek]]]); | ||
| 163 | + //上一周最快完成时长 | ||
| 164 | + $fastest_time = $ticketLogModel->formatQuery(['engineer_id'=>$item['manage_id'],'status'=>['!=',9],'is_engineer'=>1,'end_at'=>['between',[$startOfLastWeek,$endOfLastWeek]]])->min('end_time'); | ||
| 165 | + //上一周完成工单总时长 | ||
| 166 | + $timeCount = $ticketLogModel->formatQuery(['created_at'=>['between',[$startOfLastWeek,$endOfLastWeek]],'end_at'=>['between',[$startOfLastWeek,$endOfLastWeek]],'engineer_id'=>$item['manage_id'],'is_engineer'=>1,'status'=>['!=',9]])->sum('end_time'); | ||
| 167 | + if(!empty($timeCount)){ | ||
| 168 | + $average_time = round($timeCount / $complete_num, 3); | ||
| 169 | + } | ||
| 170 | + } | ||
| 171 | + $data = [ | ||
| 172 | + 'manage_id'=>$item['id'], | ||
| 173 | + 'manage_name'=>$item['name'], | ||
| 174 | + 'add_num'=>$add_num,//上一周新增工单数量 | ||
| 175 | + 'average_time'=>$average_time ?? null,//平均完成工单时长 | ||
| 176 | + 'fastest_time'=>$fastest_time ?? null,//最快完成工单时间 | ||
| 177 | + 'complete_num'=>$complete_num,//完成工单数量 | ||
| 178 | + 'dept_id'=>$item['dept_id'], | ||
| 179 | + 'timeout_ratio'=>$timeout_ratio ?? null, | ||
| 180 | + 'start_at'=>$startOfLastWeek, | ||
| 181 | + 'end_at'=>$endOfLastWeek | ||
| 182 | + ]; | ||
| 183 | + //查询当前用户是否当日已有记录 | ||
| 184 | + $ticketManageInfo = $ticketManageCountModel->read(['start_at'=>$startOfLastWeek,'end_at'=>$endOfLastWeek,'manage_id'=>$item['id']],['id']); | ||
| 185 | + if($ticketManageInfo === false){ | ||
| 186 | + //TODO::执行新增 | ||
| 187 | + $ticketManageCountModel->addReturnId($data); | ||
| 188 | + }else{ | ||
| 189 | + //TODO::执行编辑 | ||
| 190 | + $ticketManageCountModel->edit($data,['id'=>$ticketManageInfo['id']]); | ||
| 191 | + } | ||
| 192 | + return true; | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + /** | ||
| 140 | * @remark :按技术组统计数据 | 196 | * @remark :按技术组统计数据 |
| 141 | * @name :dept_action | 197 | * @name :dept_action |
| 142 | * @author :lyh | 198 | * @author :lyh |
app/Models/Ticket/TicketWeekManageCount.php
0 → 100644
| 1 | +<?php | ||
| 2 | +/** | ||
| 3 | + * @remark : | ||
| 4 | + * @name :TicketDailyManageCount.php | ||
| 5 | + * @author :lyh | ||
| 6 | + * @method :post | ||
| 7 | + * @time :2025/8/7 17:52 | ||
| 8 | + */ | ||
| 9 | + | ||
| 10 | +namespace App\Models\Ticket; | ||
| 11 | + | ||
| 12 | +use App\Models\Base; | ||
| 13 | + | ||
| 14 | +/** | ||
| 15 | + * @remark :工单日统计:按照人员统计(周) | ||
| 16 | + * @name :TicketDailyManageCount | ||
| 17 | + * @author :lyh | ||
| 18 | + * @method :post | ||
| 19 | + * @time :2025/8/7 17:53 | ||
| 20 | + */ | ||
| 21 | +class TicketWeekManageCount extends Base | ||
| 22 | +{ | ||
| 23 | + protected $table = 'gl_ticket_week_manage_count'; | ||
| 24 | +} |
-
请 注册 或 登录 后发表评论