<?php

namespace app\task;

use app\common\model\task_scheduling_plan\TaskSchedulingPlan;
use app\job\TaskAdd;
use think\facade\Log;
use yunwuxin\cron\Task;
use app\common\model\Company;
use app\common\model\task_template\TaskTemplate;
use app\common\logic\task\TaskLogic;
use app\common\model\task_scheduling\TaskScheduling;

class TaskCron  extends Task
{

    public function configure()
    {
        $this->daily(); //设置任务的周期,每天执行一次,更多的方法可以查看源代码,都有注释
        // $this->everyMinute();//每分钟
    }
    /**
     * 小组服务公司执行任务下发
     * @return mixed
     */
    protected function execute()
    {
        //任务下发
        // $time=strtotime(date('Y-m-d',strtotime('-1 day')));
        $time = strtotime(date('Y-m-d'));
        // $tiem_end=$time+86399;
        // 查询系统目前小组公司的任务安排
        $plan_all = TaskScheduling::where('cron_time', '<', $time)->where('status', 1)->where('company_type', 18)->with('company_info')->select()->toArray();
        $plan_ids = [];
        foreach ($plan_all as $k => $v) {
            $all = TaskTemplate::where('status', 1)->where('task_scheduling', $v['id'])->limit(30)->select()->toArray();
            $plan_ids[] = $v['id'];
            if ($all) {
                $plan_all[$k]['template'] = $all;
            } else {
                unset($plan_all[$k]);
            }
        }
        $company_id = [];
        foreach ($plan_all as $k => $v) {
            foreach ($v['template'] as $kk => $vv) {
                queue(TaskAdd::class,['data'=>$vv,'data_two'=>$v]);
            }
            $company_id[] = $v['company_id'];
        }
        Company::where('id', 'in', $company_id)->inc('day_count')->update();
        TaskScheduling::where('id', 'in', $plan_ids)->update(['cron_time' => time()]);
        Log::info('定时任务下发执行成功' . date('Y-m-d H:i:s'));
        //...具体的任务执行
    }

    public function stage_inspection($v, $moeny_type = 'moeny', $title = '一')
    {
        $count_moeny = 0;
        foreach ($v['template'] as $kkkk => $vvvv) {
            $count_moeny += $vvvv[$moeny_type];
        }
        if ($count_moeny > 200) {
            Log::info($title . '阶段金额大于200无法下达' . json_encode($v['company_info']));
            return false;
        }
        return true;
    }
}
// foreach($plan_all as $k=>$v){
//     foreach($v['template'] as $kkk=>$vvv){
//         if ($v['types'] == 1 ||$vvv['types'] == 3) {
//             if ($v['company_info'] && $v['company_info']['day_count'] <=$vvv['stage_day_one']) {
//                 $res=$this->stage_inspection($v['template'],'moeny','一');
//                 if($res==false){
//                     return false;
//                 }
//             } else {
//                 $res=$this->stage_inspection($v['template'],'money_two','二');
//                 if($res==false){
//                     return false;
//                 }
//             }
//         } elseif ($v['types'] == 2) {
//             if ($v['company_info']['day_count'] <=$vvv['stage_day_one']) {
//                 $res=$this->stage_inspection($v['template'],'moeny','一');
//                 if($res==false){
//                     return false;
//                 }
//             } elseif ($v['company_info']['day_count'] <=$vvv['stage_day_two']) {
//                 $res=$this->stage_inspection($v['template'],'money_two','二');
//                 if($res==false){
//                     return false;
//                 }
//             } else {
//                 $res=$this->stage_inspection($v['template'],'money_three','三');
//                 if($res==false){
//                     return false;
//                 }
//             }
//         } else {
//             if ( $v['company_info']['day_count'] <=$vvv['stage_day_one']) {
//                 $res=$this->stage_inspection($v['template'],'money_three','三');
//                 if($res==false){
//                     return false;
//                 }
//             } else {
//                 $res=$this->stage_inspection($v['template'],'money_two','二');
//                 if($res==false){
//                     return false;
//                 }
//             }
//         }
//     }
//     foreach($v['template'] as $kk=>$vv){
//         TaskLogic::CronAdd($vv,$v);
//     }
//     $company_id[]=$v['company_id'];
// }