合并分支 'workorder' 到 'master'
Workorder 查看合并请求 !2384
正在显示
5 个修改的文件
包含
30 行增加
和
13 行删除
| @@ -58,7 +58,7 @@ class WorkOrderDing extends Command | @@ -58,7 +58,7 @@ class WorkOrderDing extends Command | ||
| 58 | sleep(3); | 58 | sleep(3); |
| 59 | continue; | 59 | continue; |
| 60 | } | 60 | } |
| 61 | - $mobile = $log->engineer->mobile; | 61 | + $mobile = ManageHr::where('manage_id', $log->engineer_id)->value('mobile'); |
| 62 | $response = Http::withBasicAuth( | 62 | $response = Http::withBasicAuth( |
| 63 | env('DINGDING_BASIC_USER'), | 63 | env('DINGDING_BASIC_USER'), |
| 64 | env('DINGDING_BASIC_PASS') | 64 | env('DINGDING_BASIC_PASS') |
| @@ -67,7 +67,7 @@ class WorkOrderDing extends Command | @@ -67,7 +67,7 @@ class WorkOrderDing extends Command | ||
| 67 | $userid = $response->json()['data']['userid']; | 67 | $userid = $response->json()['data']['userid']; |
| 68 | $ding = new DingTalkService(); | 68 | $ding = new DingTalkService(); |
| 69 | $resp = $ding->danliao(json_encode([ | 69 | $resp = $ding->danliao(json_encode([ |
| 70 | - 'text' => "您有新的工单(ID: {$log->ticket_id}),请及时处理!", | 70 | + 'text' => "您有新的工单(ID: {$log->ticket_id}),请及时处理!处理时间:{$log->ticket->plan_end_at},提单时间:{$log->ticket->created_at}", |
| 71 | 'title' => 'AI协同工单 - ' . $log->ticket->project->title, | 71 | 'title' => 'AI协同工单 - ' . $log->ticket->project->title, |
| 72 | 'picUrl' => 'https://hub.globalso.com/logocm.png', | 72 | 'picUrl' => 'https://hub.globalso.com/logocm.png', |
| 73 | 'messageUrl' => 'https://oa.quanqiusou.cn/afterorder?project_id=' . $log->ticket->project->uuid, | 73 | 'messageUrl' => 'https://oa.quanqiusou.cn/afterorder?project_id=' . $log->ticket->project->uuid, |
| @@ -176,7 +176,8 @@ class AsideTicketController extends BaseController | @@ -176,7 +176,8 @@ class AsideTicketController extends BaseController | ||
| 176 | // 分配工单参与人 | 176 | // 分配工单参与人 |
| 177 | $ticket->saveEngineers($request->input('engineer_ids', [])); | 177 | $ticket->saveEngineers($request->input('engineer_ids', [])); |
| 178 | $nickname = ManageHr::where('manage_id', $this->manage['id'])->value('nickname') ?? mb_substr($ticket->submit_username, 0, 1) . '**'; | 178 | $nickname = ManageHr::where('manage_id', $this->manage['id'])->value('nickname') ?? mb_substr($ticket->submit_username, 0, 1) . '**'; |
| 179 | - $project->pushWechatGroupMsg("创贸({$nickname})新增了工单(ID:{$ticket->id}),请及时处理!"); | 179 | + if ($project->wechat_switch) |
| 180 | + $project->pushWechatGroupMsg("创贸({$nickname})新增了工单(ID:{$ticket->id}),请及时处理!"); | ||
| 180 | return $ticket; | 181 | return $ticket; |
| 181 | }); | 182 | }); |
| 182 | $this->response('success', Code::SUCCESS, $result->toArray()); | 183 | $this->response('success', Code::SUCCESS, $result->toArray()); |
| @@ -217,16 +218,23 @@ class AsideTicketController extends BaseController | @@ -217,16 +218,23 @@ class AsideTicketController extends BaseController | ||
| 217 | $ticket->saveEngineers($request->input('engineer_ids')); | 218 | $ticket->saveEngineers($request->input('engineer_ids')); |
| 218 | 219 | ||
| 219 | // 其他字段有提交数据才修改,比如star plan_end_at | 220 | // 其他字段有提交数据才修改,比如star plan_end_at |
| 221 | + $ticket->title = $request->input('title', $ticket->title); | ||
| 222 | + $ticket->content = $request->input('content', $ticket->content); | ||
| 220 | $ticket->star = $request->input('star', $ticket->star); | 223 | $ticket->star = $request->input('star', $ticket->star); |
| 221 | $ticket->plan_end_at = $request->input('plan_end_at', $ticket->plan_end_at); | 224 | $ticket->plan_end_at = $request->input('plan_end_at', $ticket->plan_end_at); |
| 222 | - $ticket->reply = $request->input('reply', null); | ||
| 223 | $ticket->status = $request->input('status', $ticket->status); | 225 | $ticket->status = $request->input('status', $ticket->status); |
| 224 | if ($ticket->status == Tickets::STATUS_COMPLETED) | 226 | if ($ticket->status == Tickets::STATUS_COMPLETED) |
| 225 | { | 227 | { |
| 226 | // 完成工单,把子任务里面未完成的工单改为完成 | 228 | // 完成工单,把子任务里面未完成的工单改为完成 |
| 227 | $ticket->end_at = now(); | 229 | $ticket->end_at = now(); |
| 228 | - $ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED) | 230 | + $ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)->where('is_engineer', 1) |
| 229 | ->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]); | 231 | ->update(['status' => TicketLog::STATUS_COMPLETED, 'end_at' => now()]); |
| 232 | + // 推动微信通知 | ||
| 233 | + $project = $ticket->project; | ||
| 234 | + if ($project->wechat_switch) | ||
| 235 | + $project->pushWechatGroupMsg("工单(ID:{$ticket->id})已全部完成,请访问查看详情!"); | ||
| 236 | + $ticket->pushDing('finish'); | ||
| 237 | + | ||
| 230 | } | 238 | } |
| 231 | $ticket->save(); | 239 | $ticket->save(); |
| 232 | return $ticket; | 240 | return $ticket; |
| @@ -261,7 +269,8 @@ class AsideTicketController extends BaseController | @@ -261,7 +269,8 @@ class AsideTicketController extends BaseController | ||
| 261 | if (empty($project->wechat_group_id)) { | 269 | if (empty($project->wechat_group_id)) { |
| 262 | $this->response('该工单没有绑定的企微群', Code::USER_MODEL_NOTFOUND_ERROE); | 270 | $this->response('该工单没有绑定的企微群', Code::USER_MODEL_NOTFOUND_ERROE); |
| 263 | } | 271 | } |
| 264 | - $project->pushWechatGroupMsg(); | 272 | + if ($project->wechat_switch) |
| 273 | + $project->pushWechatGroupMsg(); | ||
| 265 | $this->response('success', Code::SUCCESS); | 274 | $this->response('success', Code::SUCCESS); |
| 266 | } | 275 | } |
| 267 | 276 |
| @@ -85,12 +85,17 @@ class AsideTicketLogController extends BaseController | @@ -85,12 +85,17 @@ class AsideTicketLogController extends BaseController | ||
| 85 | $ticket->status = Tickets::STATUS_PROCESSING; | 85 | $ticket->status = Tickets::STATUS_PROCESSING; |
| 86 | }else | 86 | }else |
| 87 | { | 87 | { |
| 88 | - $ticket->status = Tickets::STATUS_COMPLETED; | ||
| 89 | // 如果所有子任务都完成了,则将工单状态改为已完成 | 88 | // 如果所有子任务都完成了,则将工单状态改为已完成 |
| 90 | - $ticket->end_at = now(); | ||
| 91 | - $project = $ticket->project; | ||
| 92 | - $project->pushWechatGroupMsg("工单(ID:{$ticket->id})已全部完成,请访问查看详情!"); | ||
| 93 | - $ticket->pushDing('finish'); | 89 | + // todo 注意:建站期间的工单,所有人都完成后,不自动完成工单,需要项目经理验收修改工单状态 |
| 90 | + if (!($ticket->project->status == 1 && in_array($ticket->project->project_cate, [1, 2]))) | ||
| 91 | + { | ||
| 92 | + $ticket->status = Tickets::STATUS_COMPLETED; | ||
| 93 | + $ticket->end_at = now(); | ||
| 94 | + $project = $ticket->project; | ||
| 95 | + if ($project->wechat_switch) | ||
| 96 | + $project->pushWechatGroupMsg("工单(ID:{$ticket->id})已全部完成,请访问查看详情!"); | ||
| 97 | + $ticket->pushDing('finish'); | ||
| 98 | + } | ||
| 94 | } | 99 | } |
| 95 | $ticket->save(); | 100 | $ticket->save(); |
| 96 | return $log; | 101 | return $log; |
| @@ -24,11 +24,14 @@ class AsideTicketUpdateRequest extends FormRequest | @@ -24,11 +24,14 @@ class AsideTicketUpdateRequest extends FormRequest | ||
| 24 | public function rules() | 24 | public function rules() |
| 25 | { | 25 | { |
| 26 | return [ | 26 | return [ |
| 27 | + 'title' => 'required|string', | ||
| 28 | + 'content' => 'required|string', | ||
| 29 | + 'files' => 'nullable|array', | ||
| 27 | 'status' => 'nullable|in:0,1,2,3|integer', | 30 | 'status' => 'nullable|in:0,1,2,3|integer', |
| 28 | - 'reply' => 'nullable|string', | ||
| 29 | 'engineer_ids' => 'nullable|array', | 31 | 'engineer_ids' => 'nullable|array', |
| 30 | 'star' => 'nullable|in:1,2,3|integer', | 32 | 'star' => 'nullable|in:1,2,3|integer', |
| 31 | 'plan_end_at' => 'nullable|date', | 33 | 'plan_end_at' => 'nullable|date', |
| 34 | + 'reply' => 'nullable|string', // 弃用 | ||
| 32 | ]; | 35 | ]; |
| 33 | } | 36 | } |
| 34 | } | 37 | } |
| @@ -16,7 +16,7 @@ class Tickets extends Base | @@ -16,7 +16,7 @@ class Tickets extends Base | ||
| 16 | const STATUS_PEDDING = 0; // 待处理 | 16 | const STATUS_PEDDING = 0; // 待处理 |
| 17 | const STATUS_PROCESSING = 1; // 处理中 | 17 | const STATUS_PROCESSING = 1; // 处理中 |
| 18 | const STATUS_COMPLETED = 2; // 已完成 | 18 | const STATUS_COMPLETED = 2; // 已完成 |
| 19 | - const STATUS_CLOSED = 3; // 已关闭 | 19 | + const STATUS_CLOSED = 3; // 已关闭,已失效 |
| 20 | 20 | ||
| 21 | /** | 21 | /** |
| 22 | * @return void | 22 | * @return void |
-
请 注册 或 登录 后发表评论