作者 lyh

gx

@@ -36,6 +36,7 @@ class RemainDay extends Command @@ -36,6 +36,7 @@ class RemainDay extends Command
36 */ 36 */
37 protected $ceaseProjectId = [ 37 protected $ceaseProjectId = [
38 354, 38 354,
  39 + 649,
39 1283 40 1283
40 ];//需要单独处理的项目 41 ];//需要单独处理的项目
41 /** 42 /**
  1 +<?php
  2 +/**
  3 + * @remark :
  4 + * @name :CountAllProject.php
  5 + * @author :lyh
  6 + * @method :post
  7 + * @time :2024/11/9 10:03
  8 + */
  9 +
  10 +namespace App\Console\Commands\Project;
  11 +
  12 +use App\Models\Channel\Channel;
  13 +use App\Models\Domain\DomainInfo;
  14 +use App\Models\Manage\ManageHr;
  15 +use App\Models\Project\Project;
  16 +use Illuminate\Console\Command;
  17 +
  18 +class CountAllProject extends Command
  19 +{
  20 + /**
  21 + * The name and signature of the console command.
  22 + *
  23 + * @var string
  24 + */
  25 + protected $signature = 'count_all_project';
  26 +
  27 + /**
  28 + * The console command description.
  29 + *
  30 + * @var string
  31 + */
  32 + protected $description = '统计所有项目设置';
  33 +
  34 +
  35 + public function handle(){
  36 + $projectModel = new Project();
  37 + $query = $projectModel->leftJoin('gl_project_payment', 'gl_project.id', '=', 'gl_project_payment.project_id')
  38 + ->leftJoin('gl_project_deploy_build', 'gl_project.id', '=', 'gl_project_deploy_build.project_id')
  39 + ->leftJoin('gl_project_deploy_optimize', 'gl_project.id', '=', 'gl_project_deploy_optimize.project_id')
  40 + ->where('gl_project.delete_status',Project::TYPE_ZERO);
  41 + $lists = $query->paginate(100000, $this->selectParam(), 'page', 1)->toArray();
  42 + $manageModel = new ManageHr();
  43 + foreach ($lists as $k => $v){
  44 + $data[] = [
  45 + 'project_id'=>$v['id'],
  46 + 'version'=>1,//代表6.0
  47 + 'is_upgrade'=>$v['is_upgrade'],
  48 + 'title'=>$v['title'],
  49 + 'company'=>$v['company'],
  50 + 'channel'=>Channel::getChannelText($v['channel']['user_id'] ?? 0),
  51 + 'join_date'=>$v['cooperate_date'],
  52 + 'online_date'=>$v['uptime'],
  53 + 'keywords_num'=>$v['key'],
  54 + 'service_num'=>$v['day'],
  55 + 'production_num'=>intval(abs(strtotime((empty($v['uptime']) ? date('Y-m-d H:i:s') : $v['uptime'])) - $v['created_at']) / 86400),
  56 + 'plan'=>Project::planMap()[$v['plan']],
  57 + 'status'=>$v['status'],
  58 + 'test_domain'=>$v['test_domain'],
  59 + 'product_domain'=>!empty($v['domain']) ? (new DomainInfo())->getDomain($v['domain']) : '',
  60 + 'project_manager'=>$manageModel->getName($v['manager_mid'] ?? ''),
  61 + 'project_group'=>$manageModel->getName($v['leader_mid'] ?? ''),
  62 + 'project_design'=>$manageModel->getName($v['designer_mid'] ?? ''),
  63 + 'project_assistant'=>$manageModel->getName($v['tech_mid'] ?? ''),
  64 + 'service_manager'=>$manageModel->getName($v['optimize_manager_mid'] ??''),
  65 + 'service_optimize'=>$manageModel->getName($v['optimize_optimist_mid'] ??''),
  66 + 'service_assistant'=>$manageModel->getName($v['optimize_assist_mid'] ??''),
  67 + 'qa'=>$manageModel->getName($v['quality_mid'] ??''),
  68 + 'created_at'=>date('Y-m-d H:i:s'),
  69 + 'updated_at'=>date('Y-m-d H:i:s'),
  70 + ];
  71 + }
  72 + }
  73 +
  74 + /**
  75 + * 需要查询的字段
  76 + * @return array
  77 + */
  78 + public function selectParam(){
  79 + $select = [
  80 + 'gl_project.id AS id',
  81 + 'gl_project.title AS title',
  82 + 'gl_project.channel AS channel',
  83 + 'gl_project.company AS company',
  84 + 'gl_project.type AS type',
  85 + 'gl_project.extend_type AS extend_type',
  86 + 'gl_project.uptime AS uptime',
  87 + 'gl_project.is_upgrade AS is_upgrade',
  88 + 'gl_project.created_at AS created_at',
  89 + 'gl_project.cooperate_date AS cooperate_date',
  90 + 'gl_project.site_status AS site_status',
  91 + 'gl_project_deploy_build.keyword_num AS key',
  92 + 'gl_project_deploy_build.service_duration AS day',
  93 + 'gl_project_deploy_build.is_comment AS is_comment',
  94 + 'gl_project_deploy_build.leader_mid AS leader_mid',
  95 + 'gl_project_deploy_build.manager_mid AS manager_mid',
  96 + 'gl_project_deploy_build.designer_mid AS designer_mid',
  97 + 'gl_project_deploy_build.tech_mid AS tech_mid',
  98 + 'gl_project_deploy_build.test_domain AS test_domain',
  99 + 'gl_project_deploy_build.plan AS plan',
  100 + 'gl_project_deploy_optimize.dept_id AS optimize_dept_id',
  101 + 'gl_project_deploy_optimize.manager_mid AS optimize_manager_mid',
  102 + 'gl_project_deploy_optimize.optimist_mid AS optimize_optimist_mid',
  103 + 'gl_project_deploy_optimize.assist_mid AS optimize_assist_mid',
  104 + 'gl_project_deploy_optimize.tech_mid AS optimize_tech_mid',
  105 + 'gl_project_deploy_optimize.tech_leader AS tech_leader',
  106 + 'gl_project_deploy_optimize.domain AS domain',
  107 + 'gl_project_deploy_optimize.api_no AS api_no',
  108 + ];
  109 + return $select;
  110 + }
  111 +}