Example #1
0
 public static function getSPMdata($examinee_info)
 {
     $projectdetail = ProjectDetail::findFirst(array('project_id=?1', 'bind' => array(1 => $examinee_info->project_id)));
     $factors = json_decode($projectdetail->factor_names, true);
     if (!isset($factors['SPM'])) {
         return null;
     }
     $ans = array();
     foreach ($factors['SPM'] as $key => $value) {
         $inner_array = array();
         $factor_info = Factor::findFirst($key);
         $inner_array['chs_name'] = $factor_info->chs_name;
         $factor_score_info = FactorAns::findFirst(array('factor_id = ?1 AND examinee_id =?2', 'bind' => array(1 => $key, 2 => $examinee_info->id)));
         $inner_array['std_score'] = intval($factor_score_info->std_score);
         $inner_array['score'] = $factor_score_info->score;
         //$inner_array['name'] = $factor_info->name;
         $ans[$factor_info->name] = $inner_array;
     }
     return $ans;
 }
Example #2
0
 public function factormanagerAction()
 {
     $oper = $this->request->getPost('oper', 'string');
     if ($oper == 'edit') {
         $f_id = $this->request->getPost('f_id', 'int');
         $ratio = $this->request->getPost('ratio', 'int');
         $factor = Factor::findFirst($f_id);
         if (!$factor || is_null($f_id)) {
             echo "false";
             return;
         }
         $factor->ratio = $ratio;
         if (!$factor->save()) {
             foreach ($factor->getMessages() as $message) {
                 echo $message;
             }
         }
     }
     if ($oper == 'del') {
         $f_id = $this->request->getPost('id', 'int');
         $factor = Factor::findFirst($f_id);
         if (!$factor->delete()) {
             foreach ($factor->getMessages() as $message) {
                 echo $message;
             }
         }
     }
 }
 public function getFactorGrideByLevel($factor_chs_name = null, $factor_name = null, $level_examines, $project_id)
 {
     #判断因子是index还是factor
     //按照中文名搜索
     if (empty($factor_chs_name)) {
         $factor_info = Factor::findFirst(array("name = ?2", 'bind' => array(2 => $factor_name)));
         $search = 'Factor.name = ' . "'{$factor_name}'";
         //按照英文名搜索
     } else {
         $factor_info = Factor::findFirst(array("chs_name = ?2", 'bind' => array(2 => $factor_chs_name)));
         $search = 'Factor.chs_name = ' . "'{$factor_chs_name}'";
     }
     if (isset($factor_info->id)) {
         //对各层次人群进行得分计算后返回
         $rtn_array = array();
         foreach ($level_examines as $level_array) {
             $result = $this->modelsManager->createBuilder()->columns(array('AVG(FactorAns.ans_score) as score'))->from('Examinee')->inwhere('Examinee.id', $level_array)->join('FactorAns', 'FactorAns.examinee_id = Examinee.id AND Examinee.type =0 AND Examinee.project_id = ' . $project_id)->join('Factor', 'FactorAns.factor_id = Factor.id AND ' . $search)->getQuery()->execute()->toArray();
             if (empty($result[0]['score'])) {
                 $score = 0;
             } else {
                 $score = sprintf('%.2f', $result[0]['score']);
             }
             $rtn_array[] = $score;
         }
         return $rtn_array;
     }
     //按照中文名搜索
     if (empty($factor_chs_name)) {
         $index_info = Index::findFirst(array(" name = ?2", 'bind' => array(2 => $factor_name)));
         $search = 'Index.name = ' . "'{$factor_name}'";
         //按照英文名搜索
     } else {
         $index_info = Index::findFirst(array("chs_name = ?2", 'bind' => array(2 => $factor_chs_name)));
         $search = 'Index.chs_name = ' . "'{$factor_chs_name}'";
     }
     if (isset($index_info->id)) {
         $rtn_array = array();
         foreach ($level_examines as $level_array) {
             $result = $this->modelsManager->createBuilder()->columns(array('AVG(IndexAns.score) as score'))->from('Examinee')->inwhere('Examinee.id', $level_array)->join('IndexAns', 'IndexAns.examinee_id = Examinee.id AND Examinee.type =0 AND Examinee.project_id = ' . $project_id)->join('Index', 'IndexAns.index_id = Index.id AND ' . $search)->getQuery()->execute()->toArray();
             if (empty($result[0]['score'])) {
                 $score = 0;
             } else {
                 $score = sprintf('%.2f', $result[0]['score']);
             }
             $rtn_array[] = $score;
         }
         return $rtn_array;
     }
     throw new Exception('no this factor exist!' . print_r($factor_name));
 }
Example #4
0
 /**
  * @type 不更改
  * @method $rt->id $rt->name $rt->children
  * @usage 缓存根据因子名称查取到的因子详细记录
  * @param string $factor_name
  */
 public static function getFactorDetail($factor_name)
 {
     self::checkConnect();
     return Factor::findFirst(array("name = :factor_name:", 'bind' => array('factor_name' => $factor_name), 'hydration' => \Phalcon\Mvc\Model\Resultset\Simple::HYDRATE_ARRAYS, 'cache' => array('key' => 'factor_detail_name_' . $factor_name)));
 }
Example #5
0
 /**
  * @usage input 因子名数组
  * @return 所有分类下的因子数组
  */
 public static function getAllDividedFactors($factor_names)
 {
     $factors = array();
     foreach ($factor_names as $factor_name) {
         $factor = Factor::findFirst(array('name=?1', 'bind' => array(1 => $factor_name)));
         $paper_name = Paper::findFirst($factor->paper_id)->name;
         $factors[$paper_name][$factor->id] = $factor_name;
         $children_type_array = explode(',', $factor->children_type);
         #因子至多两层
         if (in_array(0, $children_type_array)) {
             $factor = explode(',', $factor->children);
             foreach ($factor as $value) {
                 $zi_factor = Factor::findFirst(array('name=?1', 'bind' => array(1 => $value)));
                 $factors[$paper_name][$zi_factor->id] = $value;
             }
         }
     }
     return $factors;
 }