示例#1
0
 public function actionMsgGeneration()
 {
     ini_set('memory_limit', '-1');
     $form = new GenerateMessageForm();
     $messages = array();
     $sensors = array();
     if (Yii::app()->request->isPostRequest && (isset($_POST['generate']) || isset($_POST['import']))) {
         $form->attributes = $_POST['GenerateMessageForm'];
         if ($form->validate()) {
             $sensors = array();
             if ($form->sensor_id) {
                 $sql = "SELECT `t1`.`station_sensor_id`, `t1`.`sensor_id_code`, `t2`.`handler_id_code`, `t3`.`feature_code`, `t4`.`code` AS `metric_code` \n                            FROM `" . StationSensor::model()->tableName() . "` `t1`\n                            LEFT JOIN `" . SensorDBHandler::model()->tableName() . "`      `t2` ON `t2`.`handler_id` = `t1`.`handler_id`\n                            LEFT JOIN `" . StationSensorFeature::model()->tableName() . "` `t3` ON `t3`.`sensor_id`  = `t1`.`station_sensor_id`\n                            LEFT JOIN `" . RefbookMetric::model()->tableName() . "`        `t4` ON `t4`.`metric_id`  = `t3`.`metric_id`\n                            WHERE `t1`.`station_id` = '" . $form->station_id . "' AND `t1`.`station_sensor_id` IN (" . implode(',', $form->sensor_id) . ")";
                 $res = Yii::app()->db->createCommand($sql)->queryAll();
                 if ($res) {
                     foreach ($res as $key => $value) {
                         if (!isset($sensors[$value['station_sensor_id']])) {
                             $sensors[$value['station_sensor_id']] = array('station_sensor_id' => $value['station_sensor_id'], 'sensor_id_code' => $value['sensor_id_code'], 'handler_id_code' => $value['handler_id_code']);
                         }
                         $sensors[$value['station_sensor_id']]['features'][$value['feature_code']] = $value['metric_code'];
                     }
                 }
             }
             $i = $form->start_timestamp;
             while ($i <= $form->end_timestamp) {
                 $messages[$i]['timestamp'] = $i;
                 $i = $i + $form->interval * 60;
             }
             foreach ($messages as $key => $value) {
                 if ($form->choosed_station['station_type'] === 'rain') {
                     $messages[$key]['parts'][] = 'D';
                     $messages[$key]['parts'][] = $form->choosed_station['station_id_code'];
                     $messages[$key]['parts'][] = date('ymd', $key);
                     $messages[$key]['parts'][] = date('Hi', $key);
                     $messages[$key]['parts'][] = str_pad(rand(100, 135), 3, "0", STR_PAD_LEFT);
                     $messages[$key]['parts'][] = '00';
                 } else {
                     $messages[$key]['parts'][] = 'D';
                     $messages[$key]['parts'][] = $form->choosed_station['station_id_code'];
                     $messages[$key]['parts'][] = date('ymd', $key);
                     $messages[$key]['parts'][] = date('Hi', $key);
                     $messages[$key]['parts'][] = '00';
                 }
                 $sensors_values = array();
                 if ($sensors) {
                     foreach ($sensors as $k1 => $v1) {
                         $handler = SensorHandler::create($v1['handler_id_code']);
                         $random_value = $handler->getRandomValue($v1['features']);
                         $sensors_values[] = $v1['sensor_id_code'] . $random_value;
                     }
                     shuffle($sensors_values);
                     foreach ($sensors_values as $k1 => $v1) {
                         $messages[$key]['parts'][] = $v1;
                     }
                 }
                 $crc = It::prepareCRC(implode('', $messages[$key]['parts']));
                 $messages[$key]['parts'][] = $crc;
                 array_push($messages[$key]['parts'], '$');
                 array_unshift($messages[$key]['parts'], '@');
             }
         }
     }
     $messages_display = array();
     $messages_copy = array();
     foreach ($messages as $key => $value) {
         $messages_display[] = implode(' ', $value['parts']);
         $messages_copy[] = implode('', $value['parts']);
     }
     $station_sensors = StationSensor::getList($form->station_id);
     if ($station_sensors) {
         foreach ($station_sensors as $key => $value) {
             $station_sensors[$key]['checked'] = 1;
         }
     }
     if (isset($_POST['GenerateMessageForm']['sensor_id'])) {
         if ($station_sensors) {
             foreach ($station_sensors as $key => $value) {
                 $station_sensors[$key]['checked'] = in_array($value['station_sensor_id'], $_POST['GenerateMessageForm']['sensor_id']) ? 1 : 0;
             }
         }
     }
     $this->render('msg_generation', array('form' => $form, 'messages_display' => $messages_display, 'messages_copy' => $messages_copy, 'station_sensors' => $station_sensors));
 }
示例#2
0
 public function actionLoadSensors()
 {
     $res = StationSensor::getList(isset($_REQUEST['id']) ? intval($_REQUEST['id']) : null);
     print json_encode($res);
     CApplication::end();
 }