作者 ZhengBing He

ceshi

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