作者 lyh

超过120小时未处理的工单

@@ -22,12 +22,12 @@ class AsideTicketController extends BaseController @@ -22,12 +22,12 @@ class AsideTicketController extends BaseController
22 * 22 *
23 * @return \Illuminate\Http\Response 23 * @return \Illuminate\Http\Response
24 */ 24 */
25 - public function lists(AsideTicketListRequest $request) 25 + public function index(AsideTicketListRequest $request)
26 { 26 {
27 $validated = $request->validated(); 27 $validated = $request->validated();
28 $query = Tickets::with([ 28 $query = Tickets::with([
29 'logs.engineer', 29 'logs.engineer',
30 - 'project.pm', 30 + 'project.pm:',
31 'project.projectV6', 31 'project.projectV6',
32 ]) 32 ])
33 ->when(!empty($validated['engineer_id']), function ($query) use ($validated) { 33 ->when(!empty($validated['engineer_id']), function ($query) use ($validated) {
@@ -142,119 +142,6 @@ class AsideTicketController extends BaseController @@ -142,119 +142,6 @@ class AsideTicketController extends BaseController
142 $this->response('success', Code::SUCCESS, $lists); 142 $this->response('success', Code::SUCCESS, $lists);
143 } 143 }
144 144
145 - /**  
146 - * @remark :列表  
147 - * @name :index  
148 - * @author :lyh  
149 - * @method :post  
150 - * @time :2025/9/1 17:47  
151 - */  
152 - public function index(AsideTicketListRequest $request)  
153 - {  
154 - $validated = $request->validated();  
155 -  
156 - // 1️⃣ 先构建主表查询(只查票据ID用于分页)  
157 - $ticketQuery = Tickets::query()  
158 - ->when(!empty($validated['engineer_id']), function ($query) use ($validated) {  
159 - $engineerId = $validated['engineer_id'];  
160 - return $query->where(function ($q) use ($engineerId) {  
161 - $q->where('submit_user_id', $engineerId)  
162 - ->orWhereHas('logs', function ($q1) use ($engineerId) {  
163 - $q1->where('engineer_id', $engineerId);  
164 - });  
165 - });  
166 - })  
167 - ->when($request->input('project_id') !== null, function ($query) use ($request) {  
168 - $projectId = $request->input('project_id');  
169 - return $query->whereHas('project', function ($q) use ($projectId) {  
170 - $q->where('uuid', $projectId);  
171 - });  
172 - })  
173 - ->when($request->input('status') !== null, function ($query) use ($request) {  
174 - $status = $request->input('status');  
175 - if($status == '-1'){  
176 - $newTime = now()->subHours(120);  
177 - return $query->where('status', 0)->where('plan_end_at', '<', $newTime);  
178 - } else {  
179 - return $query->where('status', $status);  
180 - }  
181 - })  
182 - ->when($request->input('timeout') !== null, function ($query) use ($request) {  
183 - $timeout = $request->input('timeout');  
184 - switch ($timeout) {  
185 - case 1: $newTime = now()->subHours(24); break;  
186 - case 2: $newTime = now()->subHours(48); break;  
187 - case 3: $newTime = now()->subHours(72); break;  
188 - default: $newTime = now(); break;  
189 - }  
190 - return $query->where('status', 0)->where('plan_end_at','<',$newTime);  
191 - })  
192 - ->when($request->input('star') !== null, function ($query) use ($request) {  
193 - return $query->where('star', $request->input('star'));  
194 - })  
195 - ->when($request->input('search'), function ($query) use ($request) {  
196 - $search = $request->input('search');  
197 - return $query->where(function ($q) use ($search) {  
198 - $q->where('title', 'like', "%{$search}%")  
199 - ->orWhereHas('project', function ($q1) use ($search) {  
200 - $q1->where('title', 'like', "%{$search}%")  
201 - ->orWhere('company_name', 'like', "%{$search}%");  
202 - });  
203 - });  
204 - })  
205 - ->when($request->input('project_status') !== null, function ($query) use ($request) {  
206 - return $query->whereHas('project', function ($q) use ($request) {  
207 - $q->where('status', $request->input('project_status'));  
208 - });  
209 - })  
210 - ->when($request->input('project_cate') !== null, function ($query) use ($request) {  
211 - return $query->whereHas('project', function ($q) use ($request) {  
212 - $q->where('project_cate', $request->input('project_cate'));  
213 - });  
214 - });  
215 -  
216 - // 部门筛选  
217 - if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){  
218 - $manageIdArr = (new ManageHr())->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id');  
219 - $ticketQuery->whereHas('logs', function ($q) use ($manageIdArr) {  
220 - $q->whereIn('engineer_id', $manageIdArr);  
221 - });  
222 - }  
223 -  
224 - // 时间区间筛选  
225 - if(!empty($this->param['start_at']) && !empty($this->param['end_at'])){  
226 - $ticketQuery->whereBetween('created_at', [$this->param['start_at'], $this->param['end_at']]);  
227 - }  
228 - // 排序  
229 - $sortField = $request->input('sort_field', 'plan_end_at');  
230 - $sortOrder = strtolower($request->input('sort_order', 'asc'));  
231 - $ticketQuery->orderBy('status', 'asc')  
232 - ->orderBy($sortField, $sortOrder);  
233 - if ($sortField != 'plan_end_at') $ticketQuery->orderBy('plan_end_at', 'asc');  
234 - // 2️⃣ 分页只获取主表ID  
235 - $page = $this->page;  
236 - $row = $this->row;  
237 - $ticketIds = $ticketQuery->clone()->paginate($row, ['id'], 'page', $page);  
238 - // 3️⃣ 批量加载关联表  
239 - $lists = Tickets::with([  
240 - 'logs.engineer',  
241 - 'project.pm',  
242 - 'project.projectV6'  
243 - ])->whereIn('id', $ticketIds->pluck('id'))->get();  
244 - // 4️⃣ 计算 plan_ent_time  
245 - $lists->transform(function($item){  
246 - if($item->status == 0 && $item->plan_end_at && $item->plan_end_at < now()){  
247 - $item->plan_ent_time = diffInHours($item->plan_end_at, now());  
248 - }  
249 - return $item;  
250 - });  
251 - $this->response('success', Code::SUCCESS, [  
252 - 'current_page' => $page,  
253 - 'last_page' => $ticketIds->lastPage(),  
254 - 'total' => $ticketIds->total(),  
255 - 'list' => $lists  
256 - ]);  
257 - }  
258 145
259 /** 146 /**
260 * @param $search 147 * @param $search