作者 ZhengBing He

ceshi

... ... @@ -86,9 +86,7 @@ class TicketController extends BaseController
$ticket->submit_side = 2; // 2 for B-side submission
$ticket->submit_username = $request->input('submit_username');
$ticket->save();
$log = new TicketLog();
$log->engineer_id = $project->engineer_id; // 默认第一负责人
$ticket->logs()->save($log);
$ticket->saveEngineers();
$project->pushWechatGroupMsg("客户新增了工单(ID:{$ticket->id}),请及时处理!");
return $ticket;
});
... ...
... ... @@ -25,7 +25,7 @@ class AsideTicketController extends BaseController
{
$validated = $request->validated();
$lists = Tickets::with([
'logs.engineer:id,name',
'logs.engineer',
'project.pm',
])
->when(!empty($validated['engineer_id']), function ($query) use ($validated) {
... ... @@ -144,13 +144,12 @@ class AsideTicketController extends BaseController
$ticket->submit_side = 1; // 1 for A-side submission
$ticket->submit_user_id = $this->manage['id'];
$ticket->submit_username = $this->manage['name'];
$ticket->star = $request->input('star', 3);
$ticket->plan_end_at = $request->input('plan_end_at', null);
$ticket->save();
// A 端提工单,都是针对客户提的需求等开发任务;比如翻译,修改页面等。。。
foreach ($request->input('engineer_ids', []) as $engineer_id) {
$log = new TicketLog();
$log->engineer_id = $engineer_id;
$ticket->logs()->save($log);
}
// 分配工单参与人
$this->saveEngineers($request->input('engineer_ids', []));
$project->pushWechatGroupMsg("创贸({$ticket->submit_username})新增了工单(ID:{$ticket->id}),请及时处理!");
return $ticket;
});
... ... @@ -189,19 +188,11 @@ class AsideTicketController extends BaseController
// 开始修改
$result = DB::transaction(function () use ($request, $ticket) {
if ($request->input('engineer_ids'))
{
// 有邀请工程师协同处理
foreach ($request->input('engineer_ids') as $engineer_id)
{
try {
// 利用唯一索引去重
$new_log = new TicketLog();
$new_log->engineer_id = $engineer_id;
$ticket->logs()->save($new_log);
}catch (\Exception $exception){}
}
}
$ticket->saveEngineers($request->input('engineer_ids'));
// 其他字段有提交数据才修改,比如star plan_end_at
$ticket->star = $request->input('star', $ticket->star);
$ticket->plan_end_at = $request->input('plan_end_at', $ticket->plan_end_at);
$ticket->reply = $request->input('reply', null);
$ticket->status = $request->input('status', $ticket->status);
if ($ticket->status == Tickets::STATUS_COMPLETED)
... ...
... ... @@ -29,6 +29,8 @@ class AsideTicketStoreRequest extends FormRequest
'content' => 'required|string',
'files' => 'nullable|array',
'engineer_ids' => 'array',
'star' => 'nullable|in:1,2,3|integer',
'plan_end_at' => 'nullable|datetime',
];
}
}
... ...
... ... @@ -28,6 +28,7 @@ class AsideTicketUpdateRequest extends FormRequest
'reply' => 'nullable|string',
'engineer_ids' => 'nullable|array',
'star' => 'nullable|in:1,2,3|integer',
'plan_end_at' => 'nullable|datetime',
];
}
}
... ...
... ... @@ -3,6 +3,7 @@
namespace App\Models\WorkOrder;
use App\Models\Base;
use App\Models\Manage\ManageHr;
use Illuminate\Database\Eloquent\Factories\HasFactory;
class Tickets extends Base
... ... @@ -32,4 +33,38 @@ class Tickets extends Base
{
return $this->belongsTo(TicketProject::class, 'project_id', 'id');
}
/**
* 当前工单,保存参与的人员到 gl_ticket_logs 表
* 逻辑说明:
* 1. 如果当前项目是超迹,要把徐莹和第一负责人加进去,为参与人
* 2. 若是域途项目,把黄小玉和第一负责人加进去,为参与人
*/
public function saveEngineers($engineer_ids = [])
{
$canyu = [
$this->project->engineer_id, // 第一负责人
];
if ($this->project->project_cate == 3)
$canyu[] = 20; // 徐莹
elseif ($this->project->project_cate == 4)
$canyu[] = 85; // 黄小玉
$all_engineer_ids = array_unique(array_merge($canyu, $engineer_ids));
foreach ($all_engineer_ids as $engineer_id)
{
try {
// 利用唯一索引去重
$log = new TicketLog();
$log->engineer_id = $engineer_id;
$log->is_engineer = in_array($engineer_id, $engineer_ids);
$this->logs()->save($log);
}catch (\Exception $exception){}
}
// 删除没有参与当前工单的人员(若之前已有)
$this->logs()->whereNotIn('engineer_id', $all_engineer_ids)->delete();
}
}
... ...