TicketLogic.php 2.6 KB
<?php
/**
 * @remark :
 * @name   :TicketLogic.php
 * @author :lyh
 * @method :post
 * @time   :2025/8/11 10:54
 */

namespace App\Http\Logic\Bside\Ticket;

use App\Http\Logic\Bside\BaseLogic;
use App\Models\Ticket\TicketDailyCount;
use App\Models\Ticket\TicketDailyDeptCount;
use App\Models\Ticket\TicketDailyManageCount;
use App\Models\WorkOrder\Tickets;
use Illuminate\Support\Carbon;

class TicketLogic extends BaseLogic
{
    public function __construct()
    {
        parent::__construct();
        $this->param = $this->requestAll;
    }

    /**
     * @remark :获取今日统计数据
     * @name   :getTicketCount
     * @author :lyh
     * @method :post
     * @time   :2025/8/11 10:54
     */
    public function getTicketCount(){
        $data = [];
        $ticketModel = new Tickets();
        $data['ticket_num'] = $ticketModel->count();//工单总数
        $date = date('Y-m-d');//今日时间
        $data['add_num'] = $ticketModel->counts(['created_at'=>['between',[$date.' 00:00:00',$date.' 23:59:59']]]);//今日新增工单
        $data['processed_num'] = $ticketModel->counts(['end_at'=>['between',[$date.' 00:00:00',$date.' 23:59:59']]]);//今日已处理工单
        $data['untreated_num'] = $ticketModel->counts(['end_at'=>null]);//今日未处理工单
        return $this->success($data);
    }

    /**
     * @remark :按日统计数据
     * @name   :getDailyTicketCount
     * @author :lyh
     * @method :post
     * @time   :2025/8/11 10:57
     */
    public function getDailyTicketCount(){
        $dailyModel = new TicketDailyCount();
        $dailyList = $dailyModel->list([],'average_time',['*'],'desc',5);//取最近5条数据
        $date = Carbon::yesterday()->toDateString(); //昨日时间
        $manageModel  = new TicketDailyManageCount();
        $manageList = $manageModel->list(['date'=>$date],'average_time',['*'],'desc',5);//取最近5条数据
        $deptModel = new TicketDailyDeptCount();
        $deptList = $deptModel->list(['date'=>$date],'average_time',['*'],'desc',5);
        $data = ['daily'=>$dailyList,'manage'=>$manageList,'dept'=>$deptList];
        return $this->success($data);
    }

    /**
     * @remark :根据技术组获取
     * @name   :getManageTicketCount
     * @author :lyh
     * @method :post
     * @time   :2025/8/11 14:41
     */
    public function getManageTicketCount($map,$order = 'ticket_num',$desc = 'desc'){
        $manageModel  = new TicketDailyManageCount();
        $map['date'] = Carbon::yesterday()->toDateString();
        $manageList = $manageModel->list($map,$order,['*'],$desc,['*']);
        return $this->success($manageList);
    }

}