logger = new MappingHandlerModel($log); return true; } public function actionGetworks($company) { $this->initLogger(); $this->company = $company; $GWparams = [//'url' => 'http://devplatform.digitaldepot.ru:8085/Thingworx/Things/2050UserLibraryExp/Services/my_works', 'url' => 'http://devplatform.digitaldepot.ru:8085/Thingworx/Things/SMoPPIntegrationLibrary/Services/getUserWorks', 'param' => '', 'login' => 'ПройдаковИА', 'pass' => 'Ip15351112' ]; // список сотрудников онлайн $onlineUser = $this->getOnlineMobileUser($company); if( 0 == count($onlineUser)) { return 'Нет сотрудников онлайн'; } //$this->logger->setLog('ID пользователя => ' . (int)$_SESSION["id"]); $this->logger->setLog( date("Y-m-d H:i:s") . "\n"); $mainModel = new MainModel(); // для каждого сотрудника онлайн запускаем проекты если они еще не запущены foreach($onlineUser as $user) { if( '' == $user->uuid and null == $user->uuid) { continue; } $GWparams['param'] = $user->uuid; $listWorks2 = json_decode($mainModel->curlRequest2($GWparams),true); //$listWorks2 = $this->prepareListWorks($listWorks2); $this->logger->setLog('Колличество работ из еипп =>'. count($listWorks2).' для сотрудника =>' . $user->id); $listIsabsentWorks2 = $this->Getisabsentworksjp($listWorks2); // вновь утвержденный план 1 | вернет список работ кот нет ( в JobPlan ) $listIssetWorks3 = $this->Getissetworksjp($listWorks2); $this->logger->setLog('Колличество работ из еипп ( нет в jobplan) =>'. count($listIsabsentWorks2)); $this->logger->setLog('Колличество работ из еипп ( есть в jobplan) =>'. count($listIssetWorks3)); $this->logger->setLog('Сверхцикловые'); $addJob2launch2 = $this->addJob2launch2($listIsabsentWorks2,$user); $this->logger->setLog('Мэппинг'); $addJob2launch3 = $this->addJob2launch3($listIssetWorks3,$user); $this->logger->setLog("Интеграция сверхцикловых работ прошла без падений!\n=================== НОВАЯ ИТЕРАЦИЯ ==================================\n"); //echo '
';
                //var_dump($user->id,$listIsabsentWorks2);
                //var_dump($user->id,$listIssetWorks3);
                //var_dump($user->id,$listWorks2);
                //echo '
'; continue; } return true;//$listWorks; } public function actionDojob() { Yii::$app->db->createCommand('update `accounts_internal` set `last_seen_mobile` = NOW() where id in (351,349,350)')->execute(); } public function actionDopro() { $JobPlanEntitty = AsusgJobplan::find()->where(['name' => 'Тормозное и пневматическое оборудование после ремонта испытать , отрегулировать согласно инструкции'])->one(); // 1204 1567 $jsusgJob2CommandEntity = AsusgJob2Command::find()->where(['asusg_job_id' => $JobPlanEntitty->id])->all(); foreach($jsusgJob2CommandEntity as $job) { echo '
';               
         var_dump('3 =>'. $job->id, $job->asusg_job_id);
        var_dump('3 =>'. $job->jobplantie->id);
        echo '
'; } exit; } public function actionProctest() { $procedureModel = new ProcedureModel(); $procedureModel->asusg_build_and_start_project_auto(27,210); } public function Getisabsentworksjp( $listWorks = null){ $result = []; if ( null == $listWorks) { return false; } foreach( $listWorks['data'] as $work) { $asusgJobPlan = AsusgJobPlan::find()->where(['name' => $work['work_name']])->one(); if ( null == $asusgJobPlan ){ $result[] = $work; } } return $result; } public function Getissetworksjp( $listWorks = null){ $result = []; if ( null == $listWorks) { return false; } foreach( $listWorks['data'] as $work) { $asusgJobPlan = AsusgJobPlan::find()->where(['name' => $work['work_name']])->one(); if ( null != $asusgJobPlan ){ $result[] = $work; } } return $result; } public function getOnlineMobileUser($company){ $result = []; $accountsEntity = \app\models\entity\Accounts::find()->where(['company' => $company])->all(); foreach ($accountsEntity as $account) { //var_dump($account->id,'
'); $last_seen_mobile = ( null != $account->last_seen_mobile )? new \DateTime($account->last_seen_mobile): $account->last_seen_mobile ; $online_mobile = $this->OnlineAccountCheck($this->TimeString($last_seen_mobile)); //var_dump(( !$online_mobile ),'
'); if ( !$online_mobile ){ continue; } $result[] = $account;//['id' => $account->id, 'uuid' => $account->uuid]; } return $result; } public function OnlineAccountCheck($last_seen) { $last_seen = date($last_seen); $time = (time()-strtotime($last_seen)); if ($time <= Yii::$app->params['onlineMobileTimeoutSeconds']) return true; return false; } public function TimeString($timeobj) { if ($timeobj != null) return $timeobj->format('d.m.Y H:i'); //return date('d.m.Y H:i', $timeobj); } public function getProjectType($repairName,$serieName) { $result = null; $repairtypesEntity = Repairtypes::findOne(['name' => $repairName]); $locomotiveSeriesEntity = LocomotiveSeries::findOne(['name' => $serieName]); $asusgProjectTypeEntity = AsusgProjectType::findOne(['repair_type' => $repairtypesEntity->id , 'loco_serie_id' => $locomotiveSeriesEntity->id]); if ( null != $asusgProjectTypeEntity->id ) { $result = $asusgProjectTypeEntity->id; } return $result; } public function addJob2launch2($listWorks,$user) { foreach ( $listWorks as $work) { $projtype = $this->getProjectType($work["repair_name"],$work["eq_serie"]); $let = mb_substr($work["section_lit"], -1); $resultArr = []; $asusgJob2LaunchEntity = new AsusgJob2Launch(); $asusgJob2LaunchEntity->asusg_jobplan_id = Yii::$app->params['supercycleplan']; $asusgJob2LaunchEntity->asusg_employee_id1 = $user->id; $asusgJob2LaunchEntity->asusg_job_uuid = $work['id_work']; $asusgJob2LaunchEntity->employees_uuid = $user->id; $asusgJob2LaunchEntity->section_uuid = $work["section_id"]; $asusgJob2LaunchEntity->asusg_project_id = 0; $asusgJob2LaunchEntity->job_order = 0; //$asusgJob2LaunchEntity->asusg_projecttype_id = 0; $asusgJob2LaunchEntity->asusg_projecttype_id = $projtype; if (!$asusgJob2LaunchEntity->save()) { $this->logger->setLog('в Job2launch не добавилась работа => "'. $work['work_name']. '" Добавление работ будет пропущено так как такая запись уже есть.'); continue; } $this->logger->setLog('в Job2launch была добавлена работа => "'. $work['work_name'].'"'); $tasktypesEntity = Tasktypes::find()->where(['name' => 'Секция '.$let.', задача','company' => $this->company])->one(); $tasksEntity = new Tasks(); $tasksEntity->parent_id = 0; $tasksEntity->status = 2; $tasksEntity->type = $tasktypesEntity->id; $tasksEntity->assignees_arr = $user->id; $tasksEntity->created = date("Y-m-d H:i;s"); $tasksEntity->asusg_job_mapped_id = $asusgJob2LaunchEntity->id; if($tasksEntity->save()) { $this->logger->setLog('в Tasks была добавлена ЗАДАЧА => "'. $work['work_name'] . '" id => '.$tasksEntity->id); } else { $this->logger->setLog('в Tasks была НЕ добавлена ЗАДАЧА => "'. $work['work_name'] . '" id => '.$tasksEntity->id); } var_dump($tasksEntity->errors,$user->id); echo '
'; $tasksEntity2 = new Tasks(); $tasksEntity2->parent_id = $tasksEntity->id; $tasksEntity2->status = 2; $tasksEntity2->priority = 1; $tasksEntity2->created = date("Y-m-d H:i;s"); $tasksEntity2->type = Yii::$app->params['supercycletype']; $tasksEntity2->assignees_arr = $user->id; $tasksEntity2->asusg_job_mapped_id = $asusgJob2LaunchEntity->id; $tasksEntity2->text = $work["outfit"] . ': ' . $work['work_name']; $tasksEntity2->mapping_comment = $work["outfit"] . ': ' . $work['work_name']; if ( $tasksEntity2->save()) { $this->logger->setLog('в Tasks была добавлена КОМАНДА => "'. $work['work_name'] . '" id => '.$tasksEntity2->id); } else { $this->logger->setLog('в Tasks была НЕ добавлена КОМАНДА => "'. $work['work_name'] . '" id => '.$tasksEntity2->id); } $projId = $this->generateProject($work); $tasksEntity->input_id = $projId; if ($tasksEntity->save()) { $this->logger->setLog('привязка ЗАДАЧИ ( id = '.$tasksEntity->id.') прошла успешно'); } $tasksEntity2->input_id = $projId; $this->logger->setLog('2 =>' .$asusgJob2LaunchEntity->id); if($tasksEntity2->save()){ $this->logger->setLog('привязка КОМАНДЫ ( id = '.$tasksEntity2->id.') прошла успешно'); } //echo "
";        
            //var_dump($tasksEntity2->errors,$tasksEntity->errors);
            //echo "
"; } } public function addJob2launch3($listWorks,$user) { foreach ( $listWorks as $work) { $projtype = $this->getProjectType($work["repair_name"],$work["eq_serie"]); $JobPlanEntitty = AsusgJobplan::find()->where(['name' => $work["work_name"]])->one(); // 1204 1567 $jsusgJob2CommandEntity = AsusgJob2Command::find()->where(['asusg_job_id' => $JobPlanEntitty->id, 'asusg_projecttype_id' => $projtype ])->all(); //echo "
";        
            //var_dump($job->asusgJob2Launch->asusg_project_id);
            //var_dump($JobPlanEntitty->id,$jsusgJob2CommandEntity);
            //echo "
"; //continue; $let = mb_substr($work["section_lit"], -1); $resultArr = []; $asusgJob2LaunchEntity = new AsusgJob2Launch(); $asusgJob2LaunchEntity->asusg_jobplan_id = $JobPlanEntitty->id; $asusgJob2LaunchEntity->asusg_employee_id1 = $user->id; $asusgJob2LaunchEntity->asusg_job_uuid = $work['id_work']; $asusgJob2LaunchEntity->employees_uuid = $user->id; $asusgJob2LaunchEntity->section_uuid = $work["section_id"]; $asusgJob2LaunchEntity->asusg_project_id = 0; $asusgJob2LaunchEntity->job_order = 0; $asusgJob2LaunchEntity->asusg_projecttype_id = $projtype; if (!$asusgJob2LaunchEntity->save()) { $this->logger->setLog('в Job2launch не добавилась работа => "'. $work['work_name']. '" Добавление работ будет пропущено так как такая запись уже есть.'); continue; } $this->logger->setLog('в Job2launch была добавлена работа => "'. $work['work_name'].'"'); $tasktypesEntity = Tasktypes::find()->where(['name' => 'Секция '.$let.', задача','company' => $this->company])->one(); $tasksEntity = new Tasks(); $tasksEntity->parent_id = 0; $tasksEntity->status = 2; $tasksEntity->type = $tasktypesEntity->id; $tasksEntity->assignees_arr = $user->id; $tasksEntity->created = date("Y-m-d H:i;s"); $tasksEntity->asusg_job_mapped_id = $asusgJob2LaunchEntity->id; if($tasksEntity->save()) { $this->logger->setLog('в Tasks была добавлена ЗАДАЧА => "'. $work['work_name'] . '" id => '.$tasksEntity->id); } else { $this->logger->setLog('в Tasks была НЕ добавлена ЗАДАЧА => "'. $work['work_name'] . '" id => '.$tasksEntity->id); } //var_dump($tasksEntity->errors,$user->id); echo '
'; $this->logger->setLog(' колво записей => ' . count($jsusgJob2CommandEntity) . 'type => '. gettype($jsusgJob2CommandEntity)); $this->logger->setLog($JobPlanEntitty->id . ' - ' . $projtype ); $arrJ = []; $countPriority = 1; foreach($jsusgJob2CommandEntity as $job) { $this->logger->setLog('3 =>'. $job->jobplantie->id); $tasksEntity2 = new Tasks(); $tasksEntity2->parent_id = $tasksEntity->id; $tasksEntity2->status = 2; $tasksEntity2->priority = $countPriority; // $tasksEntity2->input_id = $job->asusgJob2Launch->asusg_project_id; $tasksEntity2->created = date("Y-m-d H:i;s"); $tasksEntity2->type = $job->smopp_cmd_id;//Yii::$app->params['supercycletype']; $tasksEntity2->assignees_arr = $user->id; $tasksEntity2->asusg_job_mapped_id = $job->jobplantie->id; $tasksEntity2->text = $work["outfit"] . ':' . $work['work_name']; $tasksEntity2->mapping_comment = $work["outfit"] . ': ' . $work['work_name']; if ( $tasksEntity2->save()) { $arrJ[] = $tasksEntity2->id; $this->logger->setLog('в Tasks была добавлена КОМАНДА => "'. $work['work_name'] . '" id => '.$tasksEntity2->id); } else { $this->logger->setLog('в Tasks была НЕ добавлена КОМАНДА => "'. $work['work_name'] . '" id => '.$tasksEntity2->id); } $countPriority++; } $projId = $this->generateProject3($work); $tasksEntity->input_id = $projId; if ($tasksEntity->save()) { $this->logger->setLog('привязка ЗАДАЧИ ( id = '.$tasksEntity->id.') прошла успешно'); } foreach($arrJ as $job_id) { $tasksEnt = Tasks::findOne($job_id); $tasksEnt->input_id = $projId; if($tasksEnt->save()){ $this->logger->setLog('привязка КОМАНДЫ ( id = '.$tasksEntity2->id.') прошла успешно'); } } //$tasksEntity2->input_id = $projId; //if($tasksEntity2->save()){ // $this->logger->setLog('привязка КОМАНДЫ ( id = '.$tasksEntity2->id.') прошла успешно'); //} echo "
";        
            //var_dump($job->asusgJob2Launch->asusg_project_id);
            var_dump($tasksEntity2->errors,$tasksEntity->errors);
            echo "
"; } } public function generateProject($work){ $result = ''; $let = mb_substr($work["section_lit"], -1); $sectionsEntity = Sections::find()->select(['id', 'diagnostic_map']) ->where(['locomotive_series' => $work["eq_serie"],'section_number' => mb_substr($work['section_lit'],0,-1),'letter' => $let]) ->one(); $diagnostic_map = $sectionsEntity->diagnostic_map; if ( null == $sectionsEntity->id) { $sectionsEntity = new Sections(); $sectionsEntity->locomotive_series = $work["eq_serie"]; $sectionsEntity->section_number = mb_substr($work['section_lit'],0,-1); $sectionsEntity->section_subnumber = $work["section_num"]; $sectionsEntity->diagnostic_map = $work["section_DK"]; $sectionsEntity->uuid = $work["section_id"]; $sectionsEntity->letter = $let; if ( $sectionsEntity->save()) { $this->logger->setLog('в Sections была добавлена новая секция => '. $work["section_num"] . ' id => '.$sectionsEntity->id); } else { $this->logger->setLog('в Sections при добавлении секции произошли ошибки => '. count($sectionsEntity->errors) . ' шт.'); } $diagnostic_map = $sectionsEntity->diagnostic_map; } else if( null == $sectionsEntity->diagnostic_map ) { $sectionsEntity->diagnostic_map = $work['section_DK']; $sectionsEntity->save(); } if ($sectionsEntity->diagnostic_map == $work['section_DK'] ) { $query = "select pl.id from projects_locotech pl inner join tasks t on pl.id = t.input_id left join tasktypes tt on t.type = tt.id where pl.company = " . $this->company . " and pl.loco_type = '" . $work["eq_serie"] . "' and pl.loco_number = " . $work["eq_number"] . " and t.parent_id = 0 and tt.letter like '%" . $let . "%' and pl.uuid like '%" . $work['repair_name']. ",%' order by pl.id desc limit 1"; $projectId = Yii::$app->db->createCommand($query)->queryOne(); $result = $projectId['id']; $this->logger->setLog('в Sections секция с такой диагностической картой => '. $work['section_DK'] . ' существует. Ид проекта '. $result); } if (!$result) { $projectsLocotech = new ProjectsLocotech(); $projectsLocotech->action = 197 ; $projectsLocotech->company = $this->company; $projectsLocotech->status = 2; $projectsLocotech->loco_type = $work["eq_serie"]; $projectsLocotech->loco_number = $work["eq_number"]; $projectsLocotech->depo ='' ; $projectsLocotech->depo_service = ''; $projectsLocotech->created = date('Y-m-d H:i:s'); $projectsLocotech->urgent = 0; $projectsLocotech->uuid = $work['work_name'].":".$work['repair_name'].",".$work["eq_serie"]; $projectsLocotech->save(); $result = $projectsLocotech->id; $this->logger->setLog('Такого проекта еще не было пришлось создать. Ид проекта => '. $result); } //var_dump($result); return $result; } public function generateProject3($work){ $result = ''; $projectsLocotech = new ProjectsLocotech(); $projectsLocotech->action = 197 ; $projectsLocotech->company = $this->company; $projectsLocotech->status = 2; $projectsLocotech->loco_type = $work["eq_serie"]; $projectsLocotech->loco_number = $work["eq_number"]; $projectsLocotech->depo ='' ; $projectsLocotech->depo_service = ''; $projectsLocotech->created = date('Y-m-d H:i:s'); $projectsLocotech->urgent = 0; $projectsLocotech->uuid = $work['work_name'].":".$work['repair_name'].",".$work["eq_serie"]; $projectsLocotech->save(); $result = $projectsLocotech->id; $this->logger->setLog('Такого проекта еще не было пришлось создать. Ид проекта => '. $result); //var_dump($result); return $result; } }