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; }
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)); }
/** * @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))); }
/** * @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; }