作者 lyh

未续费项目增加搜索

@@ -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