正在显示
1 个修改的文件
包含
115 行增加
和
1 行删除
| @@ -22,7 +22,7 @@ class AsideTicketController extends BaseController | @@ -22,7 +22,7 @@ class AsideTicketController extends BaseController | ||
| 22 | * | 22 | * |
| 23 | * @return \Illuminate\Http\Response | 23 | * @return \Illuminate\Http\Response |
| 24 | */ | 24 | */ |
| 25 | - public function index(AsideTicketListRequest $request) | 25 | + public function indexs(AsideTicketListRequest $request) |
| 26 | { | 26 | { |
| 27 | $validated = $request->validated(); | 27 | $validated = $request->validated(); |
| 28 | $query = Tickets::with([ | 28 | $query = Tickets::with([ |
| @@ -142,6 +142,120 @@ class AsideTicketController extends BaseController | @@ -142,6 +142,120 @@ class AsideTicketController extends BaseController | ||
| 142 | $this->response('success', Code::SUCCESS, $lists); | 142 | $this->response('success', Code::SUCCESS, $lists); |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | + public function index(AsideTicketListRequest $request) | ||
| 146 | + { | ||
| 147 | + $validated = $request->validated(); | ||
| 148 | + | ||
| 149 | + $query = Tickets::with([ | ||
| 150 | + 'logs:ticket_id,engineer_id,status', | ||
| 151 | + 'logs.engineer:id,name', | ||
| 152 | + 'project:id,uuid,title,company_name,pm_id,status,project_cate', | ||
| 153 | + 'project.pm:id,name', | ||
| 154 | + 'project.projectV6:id,project_id' // 根据实际字段替换 | ||
| 155 | + ]) | ||
| 156 | + ->when(!empty($validated['engineer_id']), function ($query) use ($validated) { | ||
| 157 | + $engineerId = $validated['engineer_id']; | ||
| 158 | + return $query->where(function ($q) use ($engineerId) { | ||
| 159 | + $q->where('submit_user_id', $engineerId) | ||
| 160 | + ->orWhereHas('logs', function ($q1) use ($engineerId) { | ||
| 161 | + $q1->where('engineer_id', $engineerId); | ||
| 162 | + }); | ||
| 163 | + }); | ||
| 164 | + }) | ||
| 165 | + ->when($request->input('project_id') !== null, function ($query) use ($request) { | ||
| 166 | + $projectId = $request->input('project_id'); | ||
| 167 | + return $query->whereHas('project', function ($q) use ($projectId) { | ||
| 168 | + $q->where('uuid', $projectId); | ||
| 169 | + }); | ||
| 170 | + }) | ||
| 171 | + ->when($request->input('status') !== null, function ($query) use ($request) { | ||
| 172 | + $status = $request->input('status'); | ||
| 173 | + if ($status == '-1') { | ||
| 174 | + $newTime = date("Y-m-d H:i:s", strtotime("-120 hours")); | ||
| 175 | + return $query->where('status', 0)->where('plan_end_at','<',$newTime); | ||
| 176 | + } else { | ||
| 177 | + return $query->where('status', $status); | ||
| 178 | + } | ||
| 179 | + }) | ||
| 180 | + ->when($request->input('timeout') !== null, function ($query) use ($request) { | ||
| 181 | + $timeout = $request->input('timeout'); | ||
| 182 | + switch ($timeout) { | ||
| 183 | + case 1: $newTime = date("Y-m-d H:i:s", strtotime("-24 hours")); break; | ||
| 184 | + case 2: $newTime = date("Y-m-d H:i:s", strtotime("-48 hours")); break; | ||
| 185 | + case 3: $newTime = date("Y-m-d H:i:s", strtotime("-72 hours")); break; | ||
| 186 | + default: $newTime = date("Y-m-d H:i:s"); break; | ||
| 187 | + } | ||
| 188 | + return $query->where('status', 0)->where('plan_end_at','<',$newTime); | ||
| 189 | + }) | ||
| 190 | + ->when($request->input('star') !== null, function ($query) use ($request) { | ||
| 191 | + return $query->where('star', $request->input('star')); | ||
| 192 | + }) | ||
| 193 | + ->when($request->input('search'), function ($query) use ($request) { | ||
| 194 | + $search = $request->input('search'); | ||
| 195 | + return $query->where(function ($q) use ($search) { | ||
| 196 | + $q->where('title', 'like', '%' . $search . '%') | ||
| 197 | + ->orWhereHas('project', function ($q1) use ($search) { | ||
| 198 | + $q1->where('title', 'like', '%' . $search . '%') | ||
| 199 | + ->orWhere('company_name', 'like', '%' . $search . '%'); | ||
| 200 | + }); | ||
| 201 | + }); | ||
| 202 | + }) | ||
| 203 | + ->when($request->input('project_status') !== null, function ($query) use ($request) { | ||
| 204 | + return $query->whereHas('project', function ($q) use ($request) { | ||
| 205 | + $q->where('status', $request->input('project_status')); | ||
| 206 | + }); | ||
| 207 | + }) | ||
| 208 | + ->when($request->input('project_cate') !== null, function ($query) use ($request) { | ||
| 209 | + return $query->whereHas('project', function ($q) use ($request) { | ||
| 210 | + $q->where('project_cate', $request->input('project_cate')); | ||
| 211 | + }); | ||
| 212 | + }); | ||
| 213 | + | ||
| 214 | + // 用户部门搜索 | ||
| 215 | + if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){ | ||
| 216 | + $manageHrModel = new ManageHr(); | ||
| 217 | + $manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id'); | ||
| 218 | + $query->whereHas('logs', function ($q) use ($manageIdArr) { | ||
| 219 | + $q->whereIn('engineer_id', $manageIdArr); | ||
| 220 | + }); | ||
| 221 | + } | ||
| 222 | + if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){ | ||
| 223 | + $query->whereBetween('created_at',[$this->param['start_at'],$this->param['end_at']]); | ||
| 224 | + } | ||
| 225 | + // 排序 | ||
| 226 | + $sortField = $request->input('sort_field', 'plan_end_at'); | ||
| 227 | + $sortOrder = strtolower($request->input('sort_order', 'asc')); | ||
| 228 | + $query->orderBy('status', 'asc'); | ||
| 229 | + $query->orderBy($sortField, $sortOrder); | ||
| 230 | + if ($sortField != 'plan_end_at') $query->orderBy('plan_end_at', 'asc'); | ||
| 231 | + // 先统计总条数 | ||
| 232 | + $total = (clone $query)->count(); | ||
| 233 | + // 再查询数据 | ||
| 234 | + $listsData = $query->offset(($this->page - 1) * $this->row) | ||
| 235 | + ->limit($this->row) | ||
| 236 | + ->get() | ||
| 237 | + ->toArray(); | ||
| 238 | + // 计算超时小时数 | ||
| 239 | + foreach ($listsData as $key => $item){ | ||
| 240 | + if($item['status'] == 0){ | ||
| 241 | + $end = date('Y-m-d H:i:s'); | ||
| 242 | + $start = $item['plan_end_at']; | ||
| 243 | + if($start < $end){ | ||
| 244 | + $item['plan_ent_time'] = diffInHours($start,$end); | ||
| 245 | + } | ||
| 246 | + } | ||
| 247 | + $listsData[$key] = $item; | ||
| 248 | + } | ||
| 249 | + // 还原分页结构 | ||
| 250 | + $lists = [ | ||
| 251 | + 'total' => $total, | ||
| 252 | + 'per_page' => $this->row, | ||
| 253 | + 'current_page' => $this->page, | ||
| 254 | + 'last_page' => ceil($total / $this->row), | ||
| 255 | + 'list' => $listsData, | ||
| 256 | + ]; | ||
| 257 | + $this->response('success', Code::SUCCESS, $lists); | ||
| 258 | + } | ||
| 145 | 259 | ||
| 146 | /** | 260 | /** |
| 147 | * @param $search | 261 | * @param $search |
-
请 注册 或 登录 后发表评论