正在显示
1 个修改的文件
包含
82 行增加
和
19 行删除
| @@ -9,9 +9,13 @@ | @@ -9,9 +9,13 @@ | ||
| 9 | 9 | ||
| 10 | namespace App\Console\Commands\LyhTest; | 10 | namespace App\Console\Commands\LyhTest; |
| 11 | 11 | ||
| 12 | +use App\Enums\Common\Code; | ||
| 12 | use App\Helper\Common; | 13 | use App\Helper\Common; |
| 14 | +use App\Http\Requests\Aside\WorkOrder\AsideTicketListRequest; | ||
| 13 | use App\Models\Blog\Blog; | 15 | use App\Models\Blog\Blog; |
| 14 | use App\Models\Com\V6WeeklyReport; | 16 | use App\Models\Com\V6WeeklyReport; |
| 17 | +use App\Models\Manage\Manage; | ||
| 18 | +use App\Models\Manage\ManageHr; | ||
| 15 | use App\Models\News\News; | 19 | use App\Models\News\News; |
| 16 | use App\Models\Product\Category; | 20 | use App\Models\Product\Category; |
| 17 | use App\Models\Product\CategoryRelated; | 21 | use App\Models\Product\CategoryRelated; |
| @@ -22,6 +26,7 @@ use App\Models\Template\BTemplate; | @@ -22,6 +26,7 @@ use App\Models\Template\BTemplate; | ||
| 22 | use App\Models\Visit\Visit; | 26 | use App\Models\Visit\Visit; |
| 23 | use App\Models\Visit\VisitItem; | 27 | use App\Models\Visit\VisitItem; |
| 24 | use App\Models\Workchat\MessagePush; | 28 | use App\Models\Workchat\MessagePush; |
| 29 | +use App\Models\WorkOrder\Tickets; | ||
| 25 | use App\Services\ProjectServer; | 30 | use App\Services\ProjectServer; |
| 26 | use Illuminate\Console\Command; | 31 | use Illuminate\Console\Command; |
| 27 | use Illuminate\Support\Facades\DB; | 32 | use Illuminate\Support\Facades\DB; |
| @@ -45,11 +50,11 @@ class DownloadProject extends Command | @@ -45,11 +50,11 @@ class DownloadProject extends Command | ||
| 45 | protected $description = '导出项目数据'; | 50 | protected $description = '导出项目数据'; |
| 46 | 51 | ||
| 47 | public function handle(){ | 52 | public function handle(){ |
| 48 | - echo date('Y-m-d H:i:s') . 'start' . PHP_EOL; | ||
| 49 | - ProjectServer::useProject(671); | ||
| 50 | - $this->newsImportBlog(); | ||
| 51 | - DB::disconnect('custom_mysql'); | ||
| 52 | - echo date('Y-m-d H:i:s') . 'end' . PHP_EOL; | 53 | + echo date('Y-m-d H:i:s') . 'start1' . PHP_EOL; |
| 54 | +// ProjectServer::useProject(671); | ||
| 55 | + $this->downloadTicket(); | ||
| 56 | +// DB::disconnect('custom_mysql'); | ||
| 57 | + echo date('Y-m-d H:i:s') . 'end1' . PHP_EOL; | ||
| 53 | return true; | 58 | return true; |
| 54 | } | 59 | } |
| 55 | 60 | ||
| @@ -121,6 +126,59 @@ class DownloadProject extends Command | @@ -121,6 +126,59 @@ class DownloadProject extends Command | ||
| 121 | } | 126 | } |
| 122 | 127 | ||
| 123 | /** | 128 | /** |
| 129 | + * @remark :导出工单数据 | ||
| 130 | + * @name :downloadTicketList | ||
| 131 | + * @author :lyh | ||
| 132 | + * @method :post | ||
| 133 | + * @time :2025/9/13 15:24 | ||
| 134 | + */ | ||
| 135 | + /** | ||
| 136 | + * A端查看所有工单 | ||
| 137 | + * | ||
| 138 | + * @return \Illuminate\Http\Response | ||
| 139 | + */ | ||
| 140 | + public function downloadTicket(AsideTicketListRequest $request) | ||
| 141 | + { | ||
| 142 | + $this->param['dept_id'] = 2; | ||
| 143 | + $this->param['entry_position'] = 2; | ||
| 144 | + $query = Tickets::with([ | ||
| 145 | + 'logs.engineer', | ||
| 146 | + 'project.pm', | ||
| 147 | + 'project.projectV6', | ||
| 148 | + ]); | ||
| 149 | + $query->where('status', 0)->where('plan_end_at','<',date("Y-m-d H:i:s", strtotime("-72 hours")));//超过120个小时未处理的工单 | ||
| 150 | + //TODO::用户部门搜索 | ||
| 151 | + if(isset($this->param['dept_id']) && !empty($this->param['dept_id'])){ | ||
| 152 | + $manageHrModel = new ManageHr(); | ||
| 153 | + //售后优化+技术搜索 | ||
| 154 | + if($this->param['dept_id'] == 2 && !empty($this->param['entry_position'])) {//售后部 | ||
| 155 | + if ($this->param['entry_position'] == 1) { | ||
| 156 | + $manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [44, 46, 49]], 'status' => 1], 'manage_id'); | ||
| 157 | + } else { | ||
| 158 | + //售后技术 | ||
| 159 | + $manageIdArr = $manageHrModel->selectField(['entry_position' => ['in', [42, 43, 45, 48, 51]], 'status' => 1], 'manage_id'); | ||
| 160 | + } | ||
| 161 | + $query->whereHas('logs', function ($q) use ($manageIdArr) { | ||
| 162 | + $q->whereIn('engineer_id', $manageIdArr); | ||
| 163 | + }); | ||
| 164 | + }else{ | ||
| 165 | + $manageIdArr = $manageHrModel->selectField(['dept_id'=>$this->param['dept_id'],'status'=>1],'manage_id'); | ||
| 166 | + $query->whereHas('logs', function ($q) use ($manageIdArr) { | ||
| 167 | + $q->whereIn('engineer_id', $manageIdArr); | ||
| 168 | + }); | ||
| 169 | + } | ||
| 170 | + } | ||
| 171 | + // 添加排序功能 | ||
| 172 | + $query->orderBy('status', 'asc'); | ||
| 173 | + $sortField = $request->input('sort_field', 'plan_end_at'); | ||
| 174 | + $sortOrder = strtolower($request->input('sort_order', 'asc')); | ||
| 175 | + $query->orderBy($sortField, $sortOrder); | ||
| 176 | + if ($sortField != 'plan_end_at') $query->orderBy('plan_end_at', 'asc'); | ||
| 177 | + $lists = $query->get()->toArray(); | ||
| 178 | + return $this->exportData($lists); | ||
| 179 | + } | ||
| 180 | + | ||
| 181 | + /** | ||
| 124 | * @remark :导出访问明细 | 182 | * @remark :导出访问明细 |
| 125 | * @name :exportData | 183 | * @name :exportData |
| 126 | * @author :lyh | 184 | * @author :lyh |
| @@ -132,22 +190,27 @@ class DownloadProject extends Command | @@ -132,22 +190,27 @@ class DownloadProject extends Command | ||
| 132 | $spreadsheet = new Spreadsheet(); | 190 | $spreadsheet = new Spreadsheet(); |
| 133 | $sheet = $spreadsheet->getActiveSheet(); | 191 | $sheet = $spreadsheet->getActiveSheet(); |
| 134 | // 添加表头 | 192 | // 添加表头 |
| 135 | - $sheet->setCellValue('A1', '浏览时间'); | ||
| 136 | - $sheet->setCellValue('B1', '访客来源'); | ||
| 137 | - $sheet->setCellValue('C1', '访客入路页面'); | ||
| 138 | - $sheet->setCellValue('D1', '终端'); | ||
| 139 | - $sheet->setCellValue('E1', '国家ip'); | ||
| 140 | - $sheet->setCellValue('F1', '深度访问页数'); | ||
| 141 | - $sheet->setCellValue('G1', '国家'); | 193 | + $sheet->setCellValue('A1', '公司名称'); |
| 194 | + $sheet->setCellValue('B1', '工单提交时间'); | ||
| 195 | + $sheet->setCellValue('C1', '工单内容'); | ||
| 196 | + $sheet->setCellValue('D1', '正式域名'); | ||
| 197 | + $sheet->setCellValue('E1', '测试域名'); | ||
| 198 | + $sheet->setCellValue('F1', '提交人'); | ||
| 199 | + $sheet->setCellValue('G1', '执行技术'); | ||
| 142 | $rowCount = 2; | 200 | $rowCount = 2; |
| 143 | foreach ($data as $v) { | 201 | foreach ($data as $v) { |
| 144 | - $sheet->setCellValue('A' . $rowCount, $v['created_at']); | ||
| 145 | - $sheet->setCellValue('B' . $rowCount, $v['referrer_url']); | ||
| 146 | - $sheet->setCellValue('C' . $rowCount, $v['url']); | ||
| 147 | - $sheet->setCellValue('D' . $rowCount, $v['device_text']); | ||
| 148 | - $sheet->setCellValue('E' . $rowCount, $v['ip']); | ||
| 149 | - $sheet->setCellValue('F' . $rowCount, $v['depth']); | ||
| 150 | - $sheet->setCellValue('G' . $rowCount, $v['country']); | 202 | + foreach ($v['logs'] as $key => $value) { |
| 203 | + if($value['is_engineer'] == 1){ | ||
| 204 | + $is_engineer = $value['engineer']['name']; | ||
| 205 | + } | ||
| 206 | + } | ||
| 207 | + $sheet->setCellValue('A' . $rowCount, $v['project']['company_name']); | ||
| 208 | + $sheet->setCellValue('B' . $rowCount, $v['created_at']); | ||
| 209 | + $sheet->setCellValue('C' . $rowCount, $v['content']); | ||
| 210 | + $sheet->setCellValue('D' . $rowCount, $v['project']['website']); | ||
| 211 | + $sheet->setCellValue('E' . $rowCount, $v['project']['test_website']); | ||
| 212 | + $sheet->setCellValue('F' . $rowCount, $v['submit_username']); | ||
| 213 | + $sheet->setCellValue('G' . $rowCount, $is_engineer ?? ''); | ||
| 151 | $rowCount++; | 214 | $rowCount++; |
| 152 | } | 215 | } |
| 153 | // 创建一个新的 Excel Writer 对象 | 216 | // 创建一个新的 Excel Writer 对象 |
-
请 注册 或 登录 后发表评论