作者 李宇航

合并分支 'lyh-server' 到 'master'

Lyh server



查看合并请求 !2680
... ... @@ -119,16 +119,12 @@ class TicketCount extends Command
}
//超时工单数量
$timeout_num = $ticketLogModel
->where('engineer_id', $item['manage_id'])
->where('is_engineer', 1)
->where('status','!=',9)
->where('engineer_id', $item['manage_id'])->where('is_engineer', 1)->where('status','!=',9)
->where(function ($query) {
$query->where(function ($q) {
$q->whereNotNull('end_at')
->whereColumn('plan_end_at', '<', 'end_at');
$q->whereNotNull('end_at')->whereColumn('plan_end_at', '<', 'end_at');
})->orWhere(function ($q) {
$q->whereNull('end_at')
->where('plan_end_at', '<', now());
$q->whereNull('end_at')->where('plan_end_at', '<', now());
});
})
->count();
... ... @@ -146,7 +142,8 @@ class TicketCount extends Command
'timeout_num'=>$timeout_num,//超时工单数量
'complete_num'=>$complete_num,//完成工单数量
'dept_id'=>$item['dept_id'],
'timeout_ratio'=>$timeout_ratio ?? null
'timeout_ratio'=>$timeout_ratio ?? null,
'complete_ratio'=>round($timeCount / $complete_num, 2)
];
//查询当前用户是否当日已有记录
$ticketManageInfo = $ticketManageCountModel->read(['date'=>$date,'manage_id'=>$item['id']],['id']);
... ...
... ... @@ -12,7 +12,11 @@ namespace App\Http\Controllers\Aside\Ticket;
use App\Enums\Common\Code;
use App\Http\Controllers\Aside\BaseController;
use App\Http\Logic\Aside\Ticket\TicketLogic;
use App\Models\Ticket\TicketDailyCount;
use App\Models\Ticket\TicketMonthDeptCount;
use App\Models\Ticket\TicketWeekDeptCount;
use Illuminate\Http\Request;
use Illuminate\Support\Carbon;
class TicketController extends BaseController
{
... ... @@ -37,7 +41,79 @@ class TicketController extends BaseController
}
/**
* @remark :技术组
* @remark :获取最近一个月的数据
* @name :getMonthList
* @author :lyh
* @method :post
* @time :2025/8/30 17:26
*/
public function getMonthList(){
$this->request->validate([
'start'=>'required',
'end'=>'required'
],[
'start.required' => 'start不能为空',
'end.required' => 'end不能为空',
]);
$dailyModel = new TicketDailyCount();
$dailyList = $dailyModel->list(['date'=>['between',[$this->param['start'],$this->param['end']]]],'date',['*'],'desc',30);//取最近5条数据
$this->response('success',Code::SUCCESS,$dailyList);
}
/**
* @remark :获取搜索时间
* @name :getTIme
* @author :lyh
* @method :post
* @time :2025/8/30 15:39
*/
public function getTime(){
$weekModel = new TicketWeekDeptCount();
$weekData = $weekModel->where('dept_id',1)->select('start_at', 'end_at')->distinct()->get()->toArray();
$monthModel = new TicketMonthDeptCount();
$monthData = $monthModel->where('dept_id',1)->select('start_at', 'end_at')->distinct()->get()->toArray();
$this->response('success',Code::SUCCESS,['week_data'=>$weekData,'month_data'=>$monthData]);
}
/**
* @remark :周记录数据(默认上一周)
* @name :weekManageList
* @author :lyh
* @method :post
* @time :2025/8/30 15:31
*/
public function weekManageList(){
$this->request->validate([
'start'=>'required',
'end'=>'required'
],[
'start.required' => 'start不能为空',
'end.required' => 'end不能为空',
]);
$data = $this->logic->getWeekManageList($this->param['start'],$this->param['end']);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :按月统计数据(默认上一月)
* @name :monthManageList
* @author :lyh
* @method :post
* @time :2025/8/30 15:35
*/
public function monthManageList(){
$this->request->validate([
'start'=>'required',
'end'=>'required'
],[
'start.required' => 'start不能为空',
'end.required' => 'end不能为空',
]);
$data = $this->logic->getMOnthManageList($this->param['start'],$this->param['end']);
$this->response('success',Code::SUCCESS,$data);
}
/**
* @remark :技术组总统计
* @name :manageTicketCount
* @author :lyh
* @method :post
... ...
... ... @@ -261,7 +261,8 @@ class AsideTicketController extends BaseController
$ticket->status = $request->input('status');
if ($request->input('num'))
$ticket->num = $request->input('num',0);
// $ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)->where('is_engineer', 1)->update(['plan_end_at' => $ticket->plan_end_at]);
//同步更改工单时间
$ticket->logs()->where('status', '<', TicketLog::STATUS_COMPLETED)->where('is_engineer', 1)->update(['plan_end_at' => $ticket->plan_end_at]);
if ($ticket->status == Tickets::STATUS_COMPLETED)
{
// 完成工单,把子任务里面未完成的工单改为完成
... ...
... ... @@ -15,6 +15,10 @@ use App\Models\Project\Project;
use App\Models\Ticket\TicketDailyCount;
use App\Models\Ticket\TicketDailyDeptCount;
use App\Models\Ticket\TicketDailyManageCount;
use App\Models\Ticket\TicketMonthDeptCount;
use App\Models\Ticket\TicketMonthManageCount;
use App\Models\Ticket\TicketWeekDeptCount;
use App\Models\Ticket\TicketWeekManageCount;
use App\Models\WorkOrder\TicketLog;
use App\Models\WorkOrder\TicketProject;
use App\Models\WorkOrder\Tickets;
... ... @@ -110,4 +114,41 @@ class TicketLogic extends BaseLogic
return $this->success($manageList);
}
/**
* @remark :按月统计数据
* @name :getWeekManageList
* @author :lyh
* @method :post
* @time :2025/8/30 16:02
*/
public function getWeekManageList($start,$end){
if(empty($start) || empty($end)){
$start = Carbon::now()->subWeek()->startOfWeek(); // 上周一 00:00:00
$end = Carbon::now()->subWeek()->endOfWeek(); // 上周日 23:59:59
}
$manageWeekModel = new TicketWeekManageCount();
$manageWeekList = $manageWeekModel->list(['start_at'=>$start,'end_at'=>$end]);
$deptWeekModel = new TicketWeekDeptCount();
$deptWeekList = $deptWeekModel->list(['start_at'=>$start,'end_at'=>$end]);
return $this->success(['manage'=>$manageWeekList,'dept'=>$deptWeekList]);
}
/**
* @remark :按月统计数据
* @name :getMonthManageList
* @author :lyh
* @method :post
* @time :2025/8/30 16:27
*/
public function getMonthManageList($start,$end){
if(empty($start) || empty($end)){
$start = Carbon::now()->subMonth()->startOfMonth(); // 上个月 1号 00:00:00
$end = Carbon::now()->subMonth()->endOfMonth(); // 上个月最后一天 23:59:59
}
$manageWeekModel = new TicketMonthManageCount();
$manageWeekList = $manageWeekModel->list(['start_at'=>$start,'end_at'=>$end]);
$deptWeekModel = new TicketMonthDeptCount();
$deptWeekList = $deptWeekModel->list(['start_at'=>$start,'end_at'=>$end]);
return $this->success(['manage'=>$manageWeekList,'dept'=>$deptWeekList]);
}
}
... ...
... ... @@ -636,6 +636,10 @@ Route::middleware(['aloginauth'])->group(function () {
//ticket
Route::prefix('ticket_count')->group(function () {
Route::any('/ticketCount', [\App\Http\Controllers\Aside\Ticket\TicketController::class,'ticketCount'])->name('ticket_count_ticketCount');
Route::any('/getMonthList', [\App\Http\Controllers\Aside\Ticket\TicketController::class,'getMonthList'])->name('ticket_count_getMonthList');//获取最近一个总统计的数据
Route::any('/getTime', [\App\Http\Controllers\Aside\Ticket\TicketController::class,'getTime'])->name('ticket_count_getTime');//获取周/月时间
Route::any('/weekManageList', [\App\Http\Controllers\Aside\Ticket\TicketController::class,'weekManageList'])->name('ticket_count_weekManageList');//周统计数据
Route::any('/monthManageList', [\App\Http\Controllers\Aside\Ticket\TicketController::class,'monthManageList'])->name('ticket_count_monthManageList');//月统计数据
Route::any('/manageTicketCount', [\App\Http\Controllers\Aside\Ticket\TicketController::class,'manageTicketCount'])->name('ticket_count_manageTicketCount');
});
});
... ...