コード例 #1
0
 /**
  * 计算评分。
  *
  * 评分:实践(满分100分)理论(满分100分)规则(满分100分) 总评((实践分数+理论分数+规则分数)/3)
  *
  * 考勤:迟到20,早退20,旷课40,请假10
  *
  * 评估:优,90以上,良,60-89,差0-59
  *
  * 评价结果:
  *
  * 1:推荐晋级(80以上)  这种不需要获得活动中的晋级积分 优
  * 
2:实践1年推荐晋级(60-79)需要获得80分晋级积分,满12个月晋级 良
  * 
3:仅限当前级(60-79)无法晋级
  * 
4:通过(60以上)满80分可晋级
  * 
5:未通过(0-59)差
  *
  * @param $practice_score
  * @param $theory_score
  * @param $rule_score
  * @param $train_id
  * @param $user_id
  *
  */
 public function getSource($trainId, $userId, $practiceScore, $theoryScore, $ruleScore)
 {
     if (!empty($practiceScore) && !empty($theoryScore) && !empty($ruleScore)) {
         //成绩总评
         $scoreAppraise = intval(($practiceScore + $theoryScore + $ruleScore) / 3);
         //考勤
         $attendanceList = Attendance::getAllByTrainIdAndUserId($trainId, $userId);
         $attendanceScore = 100;
         foreach ($attendanceList as $key => $val) {
             if ($val['status'] == Attendance::LATER) {
                 $attendanceScore -= Attendance::LATER_SOURCE;
             } elseif ($val['status'] == Attendance::EARLY) {
                 $attendanceScore -= Attendance::EARLY_SOURCE;
             } elseif ($val['status'] == Attendance::ABSENCES) {
                 $attendanceScore -= Attendance::ABSENCES_SOURCE;
             } elseif ($val['status'] == Attendance::LEAVE) {
                 $attendanceScore -= Attendance::LEAVE_SOURCE;
             } else {
                 $attendanceScore == $attendanceScore;
             }
         }
         if ($attendanceScore < 0) {
             $attendanceScore = 1;
         }
         //得到最少的一项评分,用来计算成绩评价结果和判断是否通过
         $performanceSource = min($practiceScore, $theoryScore, $ruleScore);
         //获取评估
         foreach (TrainUsers::$assessRules as $k => $v) {
             if ($attendanceScore > $v['small'] && $attendanceScore <= $v['big']) {
                 //考勤结果
                 $attendanceComment = TrainUsers::$assessList[$k];
             }
             if ($scoreAppraise > $v['small'] && $scoreAppraise <= $v['big']) {
                 //评估总评
                 $commentAppraise = TrainUsers::$assessList[$k];
             }
             if ($practiceScore > $v['small'] && $practiceScore <= $v['big']) {
                 //实践评估
                 $practiceComment = TrainUsers::$assessList[$k];
             }
             if ($theoryScore > $v['small'] && $theoryScore <= $v['big']) {
                 //理论评估
                 $theoryComment = TrainUsers::$assessList[$k];
             }
             if ($ruleScore > $v['small'] && $ruleScore <= $v['big']) {
                 //规则评估
                 $rulesComment = TrainUsers::$assessList[$k];
             }
             //成绩评价结果
             if ($performanceSource > $v['small'] && $performanceSource <= $v['big']) {
                 //成绩评价结果
                 $performance = TrainUsers::$performanceList[$k];
             }
         }
         foreach (TrainUsers::$statusRules as $kk => $vv) {
             if ($performanceSource > $vv['small'] && $performanceSource <= $vv['big']) {
                 $status = $kk;
             }
         }
         $result = ['scoreAppraise' => $scoreAppraise, 'performance' => $performance, 'attendanceComment' => $attendanceComment, 'practiceComment' => $practiceComment, 'theoryComment' => $theoryComment, 'rulesComment' => $rulesComment, 'commentAppraise' => $commentAppraise, 'status' => $status];
     }
     return $result;
 }
コード例 #2
0
 public function actionTrainView()
 {
     $trainUsersId = \Yii::$app->request->get('trainUsersId');
     if (empty($trainUsersId)) {
         throw new ServerErrorHttpException('查看课程信息失败,原因:参数错误!');
     }
     $levelName = Level::getOneLevelNameById(\Yii::$app->user->identity->level_id);
     $photo = UsersInfo::getPhotoByUserId(\Yii::$app->user->id);
     $messageCount = MessagesUsers::getCountByUserIdAndType(\Yii::$app->user->id);
     $currentTrain = TrainUsers::getTrainByUserId(\Yii::$app->user->id);
     //培训信息
     $trainModel = TrainUsers::getTrainInfoById($trainUsersId);
     if (empty($trainModel)) {
         throw new ServerErrorHttpException('查看课程信息失败,原因:不存在的培训课程!');
     }
     //考勤信息
     $attendanceModel = Attendance::getAllByTrainIdAndUserId($trainModel['train_id'], $trainModel['user_id']);
     //迟到数量
     $laterCount = Attendance::getCount($trainModel['train_id'], $trainModel['user_id'], Attendance::LATER);
     $arlyCount = Attendance::getCount($trainModel['train_id'], $trainModel['user_id'], Attendance::EARLY);
     $absencesCount = Attendance::getCount($trainModel['train_id'], $trainModel['user_id'], Attendance::ABSENCES);
     $leaveCount = Attendance::getCount($trainModel['train_id'], $trainModel['user_id'], Attendance::LEAVE);
     $trainTeachersModel = TrainTeachers::getAllTeachersByTrainId($trainModel['id']);
     $usersModel = TrainUsers::getAllUsersByTrainId($trainModel['id']);
     if (!empty($usersModel)) {
         foreach ($usersModel as $key => $val) {
             $usersModel[$key]['img'] = '';
             for ($i = 1; $i <= $val['score_appraise'] / 20; $i++) {
                 $usersModel[$key]['img'] .= '<img src="/images/user/xx1.jpg" />';
             }
             if ($val['score_appraise'] % 20 > 0) {
                 $usersModel[$key]['img'] .= '<img src="/images/user/xx2.jpg" />';
             }
         }
     }
     $data = ['levelName' => $levelName, 'currentTrain' => $currentTrain, 'trainModel' => $trainModel, 'attendanceModel' => $attendanceModel, 'laterCount' => $laterCount, 'arlyCount' => $arlyCount, 'absencesCount' => $absencesCount, 'leaveCount' => $leaveCount, 'attendanceAppraise' => $trainModel['attendance_appraise'], 'trainTeachersModel' => $trainTeachersModel, 'usersModel' => $usersModel, 'photo' => $photo, 'messageCount' => $messageCount];
     return $this->render('train-view', ['data' => $data]);
 }