| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- namespace App\Console\Commands;
- use App\Facades\Servers\Logs\Log;
- use App\Models\CollectProduct;
- use App\Models\CollectEquipment;
- use App\Models\CollectTask;
- use App\Models\CollectTaskAllocate;
- use Carbon\Carbon;
- use Illuminate\Console\Command;
- use Illuminate\Support\Facades\DB;
- class CollectTaskCommand extends Command
- {
- protected $signature = 'collect-task';
- protected $description = '定时分配采集任务设备';
- public function __construct()
- {
- parent::__construct();
- }
- public function handle()
- {
- Log::info('collect-task','分配采集任务开始');
- $CollectTaskModel = new CollectTask();
- $endTime = strtotime(date('Y-m-d',time())) + 86400;
- $time = time();
- $map = [
- ['collect_product.status','=',0],
- ['collect_product.sampling_start_time','<=',$time],
- ];
- $collectProductList = CollectProduct::query()
- ->leftJoin('collect_product_keyword','collect_product.id','=','collect_product_keyword.collect_product_id')
- ->where($map)
- ->where(function ($query) use ($time) {
- $query->where('collect_product.sampling_end_time', '>=', $time)
- ->orWhere('collect_product.sampling_end_time', 0);
- })
- ->select(
- 'collect_product.*',
- DB::raw('GROUP_CONCAT(collect_product_keyword.keyword SEPARATOR ", ") as product_keyword')
- )
- ->groupBy('collect_product.id')
- ->get()
- ->toArray();
- if ($collectProductList){
- foreach ($collectProductList as $collectProduct){
- if ($collectProduct['sampling_cycle']){
- //查询任务最新执行时间
- $collectTask = $CollectTaskModel::query()->where([['collect_product_id','=',$collectProduct['id']]])->select('insert_time')->orderBy('insert_time','desc')->first();
- if($collectTask){
- if (($collectProduct['sampling_cycle']*86400) > ($endTime - $collectTask['insert_time'])){
- continue;
- }
- }
- }
- if (!$collectProduct['platform']){
- continue;
- }
- $platforms = explode(',',$collectProduct['platform']);
- $data = [];
- foreach ($platforms as $platform){
- $data[] = [
- 'collect_product_id' => $collectProduct['id'],
- 'platform' => $platform,
- 'product_name' => $collectProduct['product_name'] ?? '',
- 'product_specs' => $collectProduct['product_specs'] ?? '',
- 'product_brand' => $collectProduct['product_brand'] ?? '',
- 'product_keyword' => $collectProduct['product_keyword'] ?? '',
- 'company_id' => $collectProduct['company_id'],
- 'max_equipment_number' => 1,
- 'status' => 1,
- 'insert_time' => time(),
- ];
- }
- //添加到任务
- $res = $CollectTaskModel::query()->insert($data);
- if (!$res){
- Log::info('collect-task','添加采集任务失败');
- }
- }
- }else{
- Log::info('collect-task','暂无采集任务');
- }
- Log::info('collect-task','分配采集任务结束');
- return 0;
- }
- }
|