正在显示
5 个修改的文件
包含
49 行增加
和
22 行删除
| @@ -86,9 +86,7 @@ class TicketController extends BaseController | @@ -86,9 +86,7 @@ class TicketController extends BaseController | ||
| 86 | $ticket->submit_side = 2; // 2 for B-side submission | 86 | $ticket->submit_side = 2; // 2 for B-side submission |
| 87 | $ticket->submit_username = $request->input('submit_username'); | 87 | $ticket->submit_username = $request->input('submit_username'); |
| 88 | $ticket->save(); | 88 | $ticket->save(); |
| 89 | - $log = new TicketLog(); | ||
| 90 | - $log->engineer_id = $project->engineer_id; // 默认第一负责人 | ||
| 91 | - $ticket->logs()->save($log); | 89 | + $ticket->saveEngineers(); |
| 92 | $project->pushWechatGroupMsg("客户新增了工单(ID:{$ticket->id}),请及时处理!"); | 90 | $project->pushWechatGroupMsg("客户新增了工单(ID:{$ticket->id}),请及时处理!"); |
| 93 | return $ticket; | 91 | return $ticket; |
| 94 | }); | 92 | }); |
| @@ -25,7 +25,7 @@ class AsideTicketController extends BaseController | @@ -25,7 +25,7 @@ class AsideTicketController extends BaseController | ||
| 25 | { | 25 | { |
| 26 | $validated = $request->validated(); | 26 | $validated = $request->validated(); |
| 27 | $lists = Tickets::with([ | 27 | $lists = Tickets::with([ |
| 28 | - 'logs.engineer:id,name', | 28 | + 'logs.engineer', |
| 29 | 'project.pm', | 29 | 'project.pm', |
| 30 | ]) | 30 | ]) |
| 31 | ->when(!empty($validated['engineer_id']), function ($query) use ($validated) { | 31 | ->when(!empty($validated['engineer_id']), function ($query) use ($validated) { |
| @@ -144,13 +144,12 @@ class AsideTicketController extends BaseController | @@ -144,13 +144,12 @@ class AsideTicketController extends BaseController | ||
| 144 | $ticket->submit_side = 1; // 1 for A-side submission | 144 | $ticket->submit_side = 1; // 1 for A-side submission |
| 145 | $ticket->submit_user_id = $this->manage['id']; | 145 | $ticket->submit_user_id = $this->manage['id']; |
| 146 | $ticket->submit_username = $this->manage['name']; | 146 | $ticket->submit_username = $this->manage['name']; |
| 147 | + $ticket->star = $request->input('star', 3); | ||
| 148 | + $ticket->plan_end_at = $request->input('plan_end_at', null); | ||
| 147 | $ticket->save(); | 149 | $ticket->save(); |
| 148 | - // A 端提工单,都是针对客户提的需求等开发任务;比如翻译,修改页面等。。。 | ||
| 149 | - foreach ($request->input('engineer_ids', []) as $engineer_id) { | ||
| 150 | - $log = new TicketLog(); | ||
| 151 | - $log->engineer_id = $engineer_id; | ||
| 152 | - $ticket->logs()->save($log); | ||
| 153 | - } | 150 | + |
| 151 | + // 分配工单参与人 | ||
| 152 | + $this->saveEngineers($request->input('engineer_ids', [])); | ||
| 154 | $project->pushWechatGroupMsg("创贸({$ticket->submit_username})新增了工单(ID:{$ticket->id}),请及时处理!"); | 153 | $project->pushWechatGroupMsg("创贸({$ticket->submit_username})新增了工单(ID:{$ticket->id}),请及时处理!"); |
| 155 | return $ticket; | 154 | return $ticket; |
| 156 | }); | 155 | }); |
| @@ -189,19 +188,11 @@ class AsideTicketController extends BaseController | @@ -189,19 +188,11 @@ class AsideTicketController extends BaseController | ||
| 189 | // 开始修改 | 188 | // 开始修改 |
| 190 | $result = DB::transaction(function () use ($request, $ticket) { | 189 | $result = DB::transaction(function () use ($request, $ticket) { |
| 191 | if ($request->input('engineer_ids')) | 190 | if ($request->input('engineer_ids')) |
| 192 | - { | ||
| 193 | - // 有邀请工程师协同处理 | ||
| 194 | - foreach ($request->input('engineer_ids') as $engineer_id) | ||
| 195 | - { | ||
| 196 | - try { | ||
| 197 | - // 利用唯一索引去重 | ||
| 198 | - $new_log = new TicketLog(); | ||
| 199 | - $new_log->engineer_id = $engineer_id; | ||
| 200 | - $ticket->logs()->save($new_log); | ||
| 201 | - }catch (\Exception $exception){} | ||
| 202 | - } | ||
| 203 | - } | 191 | + $ticket->saveEngineers($request->input('engineer_ids')); |
| 204 | 192 | ||
| 193 | + // 其他字段有提交数据才修改,比如star plan_end_at | ||
| 194 | + $ticket->star = $request->input('star', $ticket->star); | ||
| 195 | + $ticket->plan_end_at = $request->input('plan_end_at', $ticket->plan_end_at); | ||
| 205 | $ticket->reply = $request->input('reply', null); | 196 | $ticket->reply = $request->input('reply', null); |
| 206 | $ticket->status = $request->input('status', $ticket->status); | 197 | $ticket->status = $request->input('status', $ticket->status); |
| 207 | if ($ticket->status == Tickets::STATUS_COMPLETED) | 198 | if ($ticket->status == Tickets::STATUS_COMPLETED) |
| @@ -29,6 +29,8 @@ class AsideTicketStoreRequest extends FormRequest | @@ -29,6 +29,8 @@ class AsideTicketStoreRequest extends FormRequest | ||
| 29 | 'content' => 'required|string', | 29 | 'content' => 'required|string', |
| 30 | 'files' => 'nullable|array', | 30 | 'files' => 'nullable|array', |
| 31 | 'engineer_ids' => 'array', | 31 | 'engineer_ids' => 'array', |
| 32 | + 'star' => 'nullable|in:1,2,3|integer', | ||
| 33 | + 'plan_end_at' => 'nullable|datetime', | ||
| 32 | ]; | 34 | ]; |
| 33 | } | 35 | } |
| 34 | } | 36 | } |
| @@ -28,6 +28,7 @@ class AsideTicketUpdateRequest extends FormRequest | @@ -28,6 +28,7 @@ class AsideTicketUpdateRequest extends FormRequest | ||
| 28 | 'reply' => 'nullable|string', | 28 | 'reply' => 'nullable|string', |
| 29 | 'engineer_ids' => 'nullable|array', | 29 | 'engineer_ids' => 'nullable|array', |
| 30 | 'star' => 'nullable|in:1,2,3|integer', | 30 | 'star' => 'nullable|in:1,2,3|integer', |
| 31 | + 'plan_end_at' => 'nullable|datetime', | ||
| 31 | ]; | 32 | ]; |
| 32 | } | 33 | } |
| 33 | } | 34 | } |
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | namespace App\Models\WorkOrder; | 3 | namespace App\Models\WorkOrder; |
| 4 | 4 | ||
| 5 | use App\Models\Base; | 5 | use App\Models\Base; |
| 6 | +use App\Models\Manage\ManageHr; | ||
| 6 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 7 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
| 7 | 8 | ||
| 8 | class Tickets extends Base | 9 | class Tickets extends Base |
| @@ -32,4 +33,38 @@ class Tickets extends Base | @@ -32,4 +33,38 @@ class Tickets extends Base | ||
| 32 | { | 33 | { |
| 33 | return $this->belongsTo(TicketProject::class, 'project_id', 'id'); | 34 | return $this->belongsTo(TicketProject::class, 'project_id', 'id'); |
| 34 | } | 35 | } |
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * 当前工单,保存参与的人员到 gl_ticket_logs 表 | ||
| 39 | + * 逻辑说明: | ||
| 40 | + * 1. 如果当前项目是超迹,要把徐莹和第一负责人加进去,为参与人 | ||
| 41 | + * 2. 若是域途项目,把黄小玉和第一负责人加进去,为参与人 | ||
| 42 | + */ | ||
| 43 | + public function saveEngineers($engineer_ids = []) | ||
| 44 | + { | ||
| 45 | + $canyu = [ | ||
| 46 | + $this->project->engineer_id, // 第一负责人 | ||
| 47 | + ]; | ||
| 48 | + | ||
| 49 | + if ($this->project->project_cate == 3) | ||
| 50 | + $canyu[] = 20; // 徐莹 | ||
| 51 | + elseif ($this->project->project_cate == 4) | ||
| 52 | + $canyu[] = 85; // 黄小玉 | ||
| 53 | + | ||
| 54 | + $all_engineer_ids = array_unique(array_merge($canyu, $engineer_ids)); | ||
| 55 | + | ||
| 56 | + foreach ($all_engineer_ids as $engineer_id) | ||
| 57 | + { | ||
| 58 | + try { | ||
| 59 | + // 利用唯一索引去重 | ||
| 60 | + $log = new TicketLog(); | ||
| 61 | + $log->engineer_id = $engineer_id; | ||
| 62 | + $log->is_engineer = in_array($engineer_id, $engineer_ids); | ||
| 63 | + $this->logs()->save($log); | ||
| 64 | + }catch (\Exception $exception){} | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + // 删除没有参与当前工单的人员(若之前已有) | ||
| 68 | + $this->logs()->whereNotIn('engineer_id', $all_engineer_ids)->delete(); | ||
| 69 | + } | ||
| 35 | } | 70 | } |
-
请 注册 或 登录 后发表评论