Beispiel #1
0
 public static function &get_instance()
 {
     if (!self::$instance) {
         self::$instance = new self();
     }
     return self::$instance;
 }
 public function handle_request_internal()
 {
     $matches = $this->request->get_router_matches();
     $userid = APF::get_instance()->get_request()->get_user_id();
     $role = Bll_RoleBiz::get_instance()->get_user_role($userid);
     if ($role != "qa" && $role != "admin") {
         $status = "nopermit";
         $this->request->set_attribute('status', $status);
         return 'NewReport_ProjectThroughRate';
     }
     $project_id = intval($matches[1]);
     $this->project_id = $project_id;
     $tasks = Bll_PMTProjectBiz::get_instance()->get_dev_tasks_by_pmt_ids(array($project_id));
     $project_infos = Bll_PMTProjectBiz::get_instance()->get_pmt_info_by_ids(array($project_id));
     $rates = Bll_ReportPmtInfoBiz::get_instance()->get_through_rate_by_pmtids(array($project_id));
     $delay_info = Bll_ReportPmtInfoBiz::get_instance()->get_project_delay_info_by_pmtids(array($project_id));
     $rate_person = array();
     foreach ($rates as $rate) {
         $rate_person[$rate->chinese_name] = $rate->rate;
     }
     $project_info = $project_infos[0];
     $status = 'none';
     $dev_users = array();
     if (!empty($tasks)) {
         foreach ($tasks as $task) {
             $dev_users[$task['user']] = $task['chinese_name'];
         }
     }
     if ($this->request->get_parameter('act') == 'save') {
         $this->process_request();
         $status = 'success';
     }
     $this->request->set_attribute('status', $status);
     $this->request->set_attribute('project_info', $project_info);
     $this->request->set_attribute('dev_users', $dev_users);
     $this->request->set_attribute('rate_person', $rate_person);
     $this->request->set_attribute('delay_info', $delay_info);
     return 'NewReport_ProjectThroughRate';
 }
Beispiel #3
0
 private function get_work_days($created_time_date, $closed_time_date, $created_time, $closed_time)
 {
     $one_day = 86400;
     $days = count(Bll_PMTProjectBiz::get_instance()->get_days($created_time_date, $closed_time_date, 1));
     $gap = $closed_time_date - $created_time_date;
     $gap_days = $gap / $one_day;
     if ($gap_days == $days - 1) {
         return $closed_time - $created_time;
     } else {
         return $closed_time - $created_time - ($gap_days - $days + 1) * $one_day;
     }
 }
 public function handle_request_internal()
 {
     $req = APF::get_instance()->get_request();
     $params = $req->get_parameters();
     $product = isset($params['pro']) ? $params['pro'] : '1';
     $from = $params['from'] ? date("Y-m-d 00:00:00", strtotime($params['from'])) : date("Y-m-01 00:00:00");
     $to = $params['to'] ? date("Y-m-d 23:59:59", strtotime($params['to'])) : date("Y-m-t 23:59:59");
     if ($product != '' || $from != '' || $to != '') {
         $projects = Bll_PMTProjectBiz::get_instance()->get_projects_by_release_date($product, $from, $to);
         if (empty($projects)) {
             $datas = array();
         } else {
             $datas = array();
             $pmt_ids = array();
             $projectsx = array();
             foreach ($projects as $project) {
                 $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids(array($project['id']));
                 $count_dev_task = 0;
                 $count_test_task = 0;
                 if ($tasks) {
                     foreach ($tasks as $task) {
                         if (in_array($task['task_type_id'], array(2, 3, 33))) {
                             $count_dev_task += 1;
                         } elseif (in_array($task['task_type_id'], array(4))) {
                             $count_test_task += 1;
                         }
                     }
                 }
                 if ($count_dev_task == 0 || $count_test_task == 0) {
                     continue;
                 }
                 $pmt_ids['id'][] = $project['id'];
                 $pmt_ids['summary'][$project['id']]['id'] = $project['id'];
                 $pmt_ids['summary'][$project['id']]['sum'] = $project['summary'];
             }
             $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids($pmt_ids['id']);
             $tasksx = array();
             foreach ($tasks as $task) {
                 if (in_array($task['task_type_id'], array(4))) {
                     $tasksx[] = $task;
                 }
             }
             foreach ($tasksx as $task) {
                 $datas[$task['chinese_name']]['test_person'] = $task['chinese_name'];
                 $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_qas(array($task['chinese_name']), array($task['project_id']));
                 $projectsx[$task['chinese_name']][$task['project_id']]['bug_count'] = $bugs[0]['BugCount'] ? $bugs[0]['BugCount'] : '0';
                 $projectsx[$task['chinese_name']][$task['project_id']]['workload'] += $task['workload'];
             }
             foreach ($tasksx as $task) {
                 $bug_count = 0;
                 $workload = 0;
                 $datas[$task['chinese_name']]['projects'] = count($projectsx[$task['chinese_name']]);
                 foreach ($projectsx[$task['chinese_name']] as $project) {
                     $bug_count += $project['bug_count'];
                     $workload += $project['workload'];
                 }
                 $datas[$task['chinese_name']]['bugs_count'] = $bug_count;
                 $datas[$task['chinese_name']]['workload_all'] = $workload;
             }
             foreach ($tasksx as $task) {
                 $datas[$task['chinese_name']]['bug_workload_all'] = $datas[$task['chinese_name']]['workload_all'] == 0 ? 0 : round($datas[$task['chinese_name']]['bugs_count'] / $datas[$task['chinese_name']]['workload_all'], 2);
             }
             if (!empty($datas)) {
                 $return = array('status' => 'ok', 'result' => array('count' => count($datas), 'data' => $datas));
             } else {
                 $return = array('status' => 'ok', 'result' => array('count' => 0, 'data' => array()));
             }
         }
     } else {
         $return = array('status' => 'error', 'result' => array('code' => 101, 'message' => 'empty parameter'));
     }
     $return = json_encode($return);
     echo $return;
 }
Beispiel #5
0
 public function handle_request_internal()
 {
     $req = APF::get_instance()->get_request();
     $res = APF::get_instance()->get_response();
     $params = $req->get_parameters();
     $product_array = array(12, 12, 13, 14, 7, 6, 4);
     //12=>用户事业部,13=>经纪人事业部,14=>开发商事业部,7=>CRM,6=>移动,4=>anjuke inc
     $pro_v = $params['pro'] ? $params['pro'] : 1;
     $tab_info = array(1 => array('name' => '用户端', 'click' => false), 2 => array('name' => '客户端', 'click' => false), 3 => array('name' => '开发商', 'click' => false), 4 => array('name' => 'CRM', 'click' => false), 5 => array('name' => '移动', 'click' => false), 6 => array('name' => 'Inc.', 'click' => false));
     $tab_info[$pro_v]['click'] = true;
     $product = $product_array[$pro_v];
     $from = $params['from'] ? date("Y-m-d 00:00:00", strtotime($params['from'])) : date("Y-m-01 00:00:00");
     $to = $params['to'] ? date("Y-m-d 23:59:59", strtotime($params['to'])) : date("Y-m-t 23:59:59");
     $input_from = date("Y-m-d", strtotime($from));
     $input_to = date("Y-m-d", strtotime($to));
     $projects = Bll_PMTProjectBiz::get_instance()->get_project_detail_by_release_date_new($product, $from, $to);
     if (empty($projects)) {
         $req->set_attribute('tab_info', $tab_info);
         $req->set_attribute('input_from', $input_from);
         $req->set_attribute('input_to', $input_to);
         $req->set_attribute('table_project', array());
         return 'NewReport_ProjectBug';
     }
     $pmt_ids_init = array();
     $projects_pmtid = array();
     foreach ($projects as $project) {
         $projects_pmtid[$project['id']] = $project;
         $pmt_ids_init[] = $project['id'];
     }
     $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids($pmt_ids_init);
     $tasks_pmtid = array();
     foreach ($tasks as $task) {
         if (in_array($task['task_type_id'], array(2, 3, 33))) {
             //2=>前端开发, 3=>后端开发,33=>开发
             $tasks_pmtid[$task['project_id']]['dev'][] = $task;
         } elseif (in_array($task['task_type_id'], array(4))) {
             //4=>测试
             $tasks_pmtid[$task['project_id']]['test'][] = $task;
         }
     }
     $pmt_ids = array();
     foreach ($pmt_ids_init as $pmt_id) {
         if (!empty($tasks_pmtid[$pmt_id]['dev']) && !empty($tasks_pmtid[$pmt_id]['test'])) {
             $pmt_ids[] = $pmt_id;
         } else {
             $pmt_ids[] = '';
         }
     }
     $rates = Bll_ReportPmtInfoBiz::get_instance()->get_through_rate_by_pmtids($pmt_ids);
     $rates_pmtid = array();
     foreach ($rates as $rate) {
         $rates_pmtid[$rate->project_id][$rate->chinese_name] = $rate->rate;
     }
     $delay_infos = Bll_ReportPmtInfoBiz::get_instance()->get_project_delay_info_by_pmtids($pmt_ids);
     //延期信息
     $delay_infos_pmtid = array();
     foreach ($delay_infos as $delay_info) {
         $delay_infos_pmtid[$delay_info->project_id] = $delay_info;
     }
     //stage: 5-dev 6-test
     $table_workload = array();
     $table_through = array();
     foreach ($pmt_ids as $pmt_id) {
         if (empty($tasks_pmtid[$pmt_id]['dev'])) {
             $table_workload[$pmt_id]['dev_person'] = '';
             $table_workload[$pmt_id]['dev_workload'] = 0;
         } else {
             $person = array();
             $time = 0;
             foreach ($tasks_pmtid[$pmt_id]['dev'] as $row) {
                 $person[] = $row['chinese_name'];
                 $time += intval($row['workload']);
             }
             $person = array_unique($person);
             $person_str = implode("/", $person);
             $table_workload[$pmt_id]['dev_person'] = $person_str;
             $table_workload[$pmt_id]['dev_workload'] = $time;
             $through_arr = array();
             $through_str = "";
             foreach ($person as $person_row) {
                 $str = isset($rates_pmtid[$pmt_id][$person_row]) ? $rates_pmtid[$pmt_id][$person_row] : "-";
                 if ($str == "-") {
                     $through_arr[] = $person_row . ": " . $str;
                 } else {
                     if ($str < 100) {
                         $through_arr[] = '<span style="color:red;">' . $person_row . ": " . $str . '%</span>';
                     } else {
                         $through_arr[] = $person_row . ": " . $str . '%';
                     }
                 }
             }
             $str = isset($rates_pmtid[$pmt_id]['all']) ? $rates_pmtid[$pmt_id]['all'] : "-";
             if ($str == "-") {
                 $through_arr[] = '整个项目' . ": " . $str;
             } else {
                 if ($str < 100) {
                     $through_arr[] = '<span style="color:red;">' . '整个项目' . ": " . $str . '%</span>';
                 } else {
                     $through_arr[] = '整个项目' . ": " . $str . '%';
                 }
             }
             $through_str = implode("<br />", $through_arr);
             $table_through[$pmt_id] = $through_str;
         }
         if (empty($tasks_pmtid[$pmt_id]['test'])) {
             $table_workload[$pmt_id]['test_person'] = '';
             $table_workload[$pmt_id]['test_workload'] = 0;
         } else {
             $person = array();
             $time = 0;
             foreach ($tasks_pmtid[$pmt_id]['test'] as $row) {
                 $person[] = $row['chinese_name'];
                 $time += intval($row['workload']);
             }
             $person = array_unique($person);
             $person_str = implode("/", $person);
             $table_workload[$pmt_id]['test_person'] = $person_str;
             $table_workload[$pmt_id]['test_workload'] = $time;
         }
     }
     $bugs = Bll_TicketBiz::get_instance()->get_bugs_detail_by_pmtids($pmt_ids);
     //bug数
     $bugs_pmtid = array();
     foreach ($bugs as $bug) {
         $bugs_pmtid[$bug->pmt_id][] = $bug;
     }
     //environment id-value array
     $environments = Bll_DdCommonBiz::get_instance()->get_environments();
     $envi_names = array();
     foreach ($environments as $environment) {
         $envi_names[$environment->sort] = $environment->name;
     }
     ksort($envi_names);
     //priority id-value array
     $prioritys = Bll_DdCommonBiz::get_instance()->get_prioritys();
     $priority_names = array();
     foreach ($prioritys as $priority) {
         if ($priority->value == 6) {
             continue;
         }
         $priority_names[$priority->sort] = $priority->name;
     }
     ksort($priority_names);
     $table_bugs = array();
     foreach ($pmt_ids as $pmt_id) {
         foreach ($envi_names as $envi) {
             $table_bugs[$pmt_id][$envi] = 0;
         }
         foreach ($priority_names as $prior) {
             $table_bugs[$pmt_id][$prior] = 0;
         }
         if (isset($bugs_pmtid[$pmt_id])) {
             foreach ($bugs_pmtid[$pmt_id] as $bug) {
                 foreach ($envi_names as $envi) {
                     if ($bug->environment == $envi) {
                         $table_bugs[$pmt_id][$envi] += 1;
                     }
                 }
                 foreach ($priority_names as $prior) {
                     if ($bug->priority == $prior) {
                         $table_bugs[$pmt_id][$prior] += 1;
                     }
                 }
             }
         }
     }
     $table_project = array();
     foreach ($pmt_ids as $pmt_id) {
         $table_project[$pmt_id]['pmt_id'] = $pmt_id;
         $table_project[$pmt_id]['summary'] = $projects_pmtid[$pmt_id]['summary'];
         $table_project[$pmt_id]['release_date'] = date("Y-m-d", strtotime($projects_pmtid[$pmt_id]['date_release']));
         $table_project[$pmt_id]['pro_set'] = empty($projects_pmtid[$pmt_id]['set_id']) ? '' : $projects_pmtid[$pmt_id]['set_id'] . ". " . $projects_pmtid[$pmt_id]['set_name'];
         $table_project[$pmt_id]['owner'] = $projects_pmtid[$pmt_id]['chinese_name'];
         $table_project[$pmt_id]['dev_person'] = $table_workload[$pmt_id]['dev_person'];
         $table_project[$pmt_id]['test_person'] = $table_workload[$pmt_id]['test_person'];
         $table_project[$pmt_id]['self_test'] = $table_through[$pmt_id];
         $table_project[$pmt_id]['bugs_count'] = isset($bugs_pmtid[$pmt_id]) ? count($bugs_pmtid[$pmt_id]) : 0;
         $table_project[$pmt_id]['Production'] = $table_bugs[$pmt_id]['Production'];
         $table_project[$pmt_id]['PreRelease'] = $table_bugs[$pmt_id]['PreRelease'];
         $table_project[$pmt_id]['Test'] = $table_bugs[$pmt_id]['Test'];
         $table_project[$pmt_id]['Dev'] = $table_bugs[$pmt_id]['Dev'];
         $table_project[$pmt_id]['P1'] = $table_bugs[$pmt_id]['P1-Blocker'];
         $table_project[$pmt_id]['P2'] = $table_bugs[$pmt_id]['P2-Critical'];
         $table_project[$pmt_id]['P3'] = $table_bugs[$pmt_id]['P3-Major'];
         $table_project[$pmt_id]['P4'] = $table_bugs[$pmt_id]['P4-Minor'];
         $table_project[$pmt_id]['P5'] = $table_bugs[$pmt_id]['P5-Trivial'];
         if (isset($delay_infos_pmtid[$pmt_id])) {
             $table_project[$pmt_id]['is_delay'] = $delay_infos_pmtid[$pmt_id]->self_test_delayed == 1 ? 'Yes' . '<br />' . '原因:' . $delay_infos_pmtid[$pmt_id]->delay_detail : 'No';
         } else {
             $table_project[$pmt_id]['is_delay'] = '-';
         }
     }
     unset($table_project[""]);
     $req->set_attribute('tab_info', $tab_info);
     $req->set_attribute('input_from', $input_from);
     $req->set_attribute('input_to', $input_to);
     $req->set_attribute('table_project', $table_project);
     return 'NewReport_ProjectBug';
 }
Beispiel #6
0
 public function handle_request_internal()
 {
     $user = array();
     $display = array();
     $depart = 12;
     //12=>用户事业部
     //前端:508 后台:599,600 602 移动:601,根据hroa的api
     //product = 50=>网站端,51=>mobile
     $type_key = array("mobile" => array('product' => '51', 'user' => array(508, 602, 601)), "pc" => array('product' => '50', 'user' => array(508, 599, 600, 602)));
     $tab_info = array('pc' => array('name' => 'Pc', 'click' => false), 'mobile' => array('name' => 'Mobile', 'click' => false));
     $req = APF::get_instance()->get_request();
     // $res = APF::get_instance()->get_response();
     $params = $req->get_parameters();
     $pro = $params['pro'] ? $params['pro'] : 'pc';
     $time_type = $params['time'] ? $params['time'] : 'week';
     $report_type = $params['report'] ? $params['report'] : 'week';
     $tab_info[$pro]['click'] = true;
     $display['pro'] = $pro;
     $display['report_type'] = $report_type;
     /*获取开始时间,结束时间*/
     $time_arr = $this->get_time_type($time_type);
     $from = $time_arr['begin'];
     $to = $time_arr['end'];
     $display['input_from'] = date("Y-m-d", strtotime($from));
     $display['input_to'] = date("Y-m-d", strtotime($to));
     /* 获取组信息*/
     $departments = Bll_DdCommonBiz::get_instance()->get_departments_for_user_group();
     $groups = Bll_UserGroupCustomBiz::get_instance()->get_all_groups();
     $input_arr = array('type_key' => 'page', 'type_value' => $pro . '_project');
     $page_bind_groups = Bll_ReportGroupSelectedBiz::get_instance()->get_group_ids_arr($input_arr);
     /*获取用户端的所有组*/
     $groups_user = Bll_UserGroupCustomBiz::get_instance()->get_groups_by_department(10);
     //10=>用户端
     foreach ($departments as $value) {
         if (intval($value->value) < 17 || intval($value->value) > 26) {
             $department[$value->value] = $value->name;
         }
     }
     foreach ($groups as $value) {
         $group[$value->department][] = array('name' => $value->group_name, 'id' => $value->id);
     }
     $req->set_attribute('department', $department);
     if ($group != null) {
         $req->set_attribute('group', $group);
     }
     if (!empty($page_bind_groups) || strlen($page_bind_groups[0]) > 0) {
         $req->set_attribute('page_bind_groups', $page_bind_groups);
     }
     /*获取项目延期信息*/
     $begin = strtotime($from);
     $end = strtotime($to);
     $ss = new APi_DeployInfoController();
     $delay_projects_all = $ss->get_deply_project($begin, $end);
     foreach ($delay_projects_all as $project) {
         //            if($project->type != 4){
         //                $delay_projects[] = $project;
         //            }
         if ($project->type == 1) {
             $delay_projects['pc'][] = $project;
         } elseif ($project->type == 2 || $project->type == 3) {
             $delay_projects['mobile'][] = $project;
         }
     }
     /* 获取组信息*/
     $product_line = $type_key[$pro]['product'];
     $result_arr = $this->get_time_type('month');
     $dev_summary = Bll_ReportMonthDevBiz::get_instance()->get_data_by_product_and_months($result_arr['nine_months'], 51, 'product_line', $pro);
     //获取前6个月的bug总览
     $dev_bug_summary = array();
     foreach ($dev_summary as $summary) {
         $dev_bug_summary['month'][] = $summary->month;
         $dev_bug_summary['workload'][] = $summary->dev_workload;
         $dev_bug_summary['bugs'][] = $summary->count;
         $dev_bug_summary['bug_workload'][] = $summary->dev_workload == 0 ? 0 : round($summary->count / $summary->dev_workload, 2);
     }
     /*获取user信息,通过hroa api*/
     for ($c = 0; $c < count($type_key[$pro]['user']); $c++) {
         $user[] = $this->get_user_by_department($type_key[$pro]['user'][$c]);
     }
     $user = $this->merge_array($user);
     $projects = Bll_PMTProjectBiz::get_instance()->get_project_by_user_and_time($depart, $product_line, $from, $to);
     if (empty($projects)) {
         $req->set_attribute('tab_info', $tab_info);
         $req->set_attribute('display', $display);
         $req->set_attribute('table_project', array());
         $req->set_attribute('project_tested', array());
         $req->set_attribute('dev_bug_workload_rate', array());
         $req->set_attribute('dev_bug_summary', array());
         $req->set_attribute('top_three_projects', array());
         //top 3项目
         $req->set_attribute('delay_projects', array());
         //延期项目
         return 'NewReport_ProjectQuality';
     }
     $pmt_ids_init = array();
     $projects_pmtid = array();
     foreach ($projects as $project) {
         $projects_pmtid[$project['id']] = $project;
         $pmt_ids_init[] = $project['id'];
     }
     $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids($pmt_ids_init);
     $tasks_pmtid = array();
     $tasks_pmtid_person = array();
     if ($tasks) {
         foreach ($tasks as $task) {
             if (in_array($task['task_type_id'], array(2, 3, 33))) {
                 //2=>前端开发,3=>后端开发,33=>开发
                 $tasks_pmtid[$task['project_id']]['dev'][] = $task;
                 $tasks_pmtid_person[$task['project_id']]['dev'][$task['chinese_name']][] = $task['workload'];
             } elseif (in_array($task['task_type_id'], array(4))) {
                 //4=>测试
                 $tasks_pmtid[$task['project_id']]['test'][] = $task;
                 $tasks_pmtid_person[$task['project_id']]['test'][$task['chinese_name']][] = $task['workload'];
             }
         }
     }
     $pmt_ids = array();
     $pmt_no_test_ids = array();
     //项目无测试人员
     foreach ($pmt_ids_init as $pmt_id) {
         if (!empty($tasks_pmtid[$pmt_id]['dev'])) {
             //task为开发的不为空则存pmt_id
             $pmt_ids[] = $pmt_id;
             if (empty($tasks_pmtid[$pmt_id]['test'])) {
                 //开发不为空并且qa为空的为notesting项目;
                 $pmt_no_test_ids[] = $pmt_id;
             }
         } else {
             //$pmt_ids[] = '';
         }
     }
     if (empty($pmt_ids)) {
         $req->set_attribute('tab_info', $tab_info);
         $req->set_attribute('table_project', array());
         $req->set_attribute('display', $display);
         $req->set_attribute('project_tested', array());
         $req->set_attribute('dev_bug_workload_rate', array());
         $req->set_attribute('dev_bug_summary', array());
         //项目bug总览
         $req->set_attribute('top_three_projects', array());
         //top 3项目
         $req->set_attribute('delay_projects', array());
         //延期项目
         return 'NewReport_ProjectQuality';
     }
     $project_tested = array();
     $count_all_project = isset($pmt_ids) ? count($pmt_ids) : 0;
     $count_notest_project = isset($pmt_no_test_ids) ? count($pmt_no_test_ids) : 0;
     $project_tested['all'] = $count_all_project;
     $project_tested['tested'] = $count_all_project - $count_notest_project;
     //有测试人员的项目数
     $project_tested['notest'] = $count_notest_project;
     //no testing项目数
     $bug_detail = Bll_TicketBiz::get_instance()->get_bugs_detail_by_pmtids($pmt_ids);
     //根据pmt_id获取bug数目
     $bugs_pmtid = array();
     foreach ($bug_detail as $bug) {
         $bugs_pmtid[$bug->pmt_id][] = $bug;
         //每个pmt项目获取的bug
     }
     $users = Bll_UserBiz::get_instance()->get_all_users();
     $user_wc = array();
     foreach ($users as $row) {
         $user_wc[$row->whole_name] = $row->chinese_name;
     }
     $bug_detail_dev = array();
     $bug_detail_qa = array();
     foreach ($bug_detail as $row) {
         $bug_detail_dev[$row->pmt_id][$user_wc[$row->owner]][] = $row;
         $bug_detail_qa[$row->pmt_id][$user_wc[$row->reporter]][] = $row;
     }
     $table_work_person = array();
     $dev_bug_workload_rate = array();
     foreach ($pmt_ids as $pmt_id) {
         $dev_p = array();
         //开发者
         $dev_t = array();
         //开发工时
         $test_p = array();
         $test_t = array();
         $dev_bug = array();
         //开发bug
         $test_bug = array();
         //测试bug
         $dev_bug_workload = array();
         $test_bug_workload = array();
         $table_work_person[$pmt_id]['php_bug'] = 0;
         $table_work_person[$pmt_id]['js_bug'] = 0;
         //前端bug
         $table_work_person[$pmt_id]['qa_bug'] = 0;
         //qa bug
         foreach ($tasks_pmtid_person[$pmt_id]['dev'] as $d_p => $task_dev) {
             $dev_p[$d_p] = $d_p;
             $dev_t[$d_p] = 0;
             $dev_bug[$d_p] = isset($bug_detail_dev[$pmt_id][$d_p]) ? count($bug_detail_dev[$pmt_id][$d_p]) : 0;
             foreach ($task_dev as $t) {
                 $dev_t[$d_p] += intval($t);
             }
             $dev_bug_workload[$d_p] = $dev_t[$d_p] == 0 ? 0 : round(intval($dev_bug[$d_p]) / $dev_t[$d_p], 2);
         }
         foreach ($tasks_pmtid_person[$pmt_id]['test'] as $t_p => $task_test) {
             $test_p[$t_p] = $t_p;
             $test_t[$t_p] = 0;
             $test_bug[$t_p] = isset($bug_detail_qa[$pmt_id][$t_p]) ? count($bug_detail_qa[$pmt_id][$t_p]) : 0;
             foreach ($task_test as $t) {
                 $test_t[$t_p] += intval($t);
             }
             $test_bug_workload[$t_p] = $test_t[$t_p] == 0 ? 0 : round(intval($test_bug[$t_p]) / $test_t[$t_p], 2);
         }
         foreach ($dev_t as $dev_key => $dev_value) {
             if (in_array($dev_key, $user)) {
                 if (isset($dev_bug_workload_rate[$dev_key])) {
                     $dev_bug_workload_rate[$dev_key][0] += $dev_bug[$dev_key];
                     $dev_bug_workload_rate[$dev_key][1] += $dev_value;
                 } else {
                     $dev_bug_workload_rate[$dev_key][0] = $dev_bug[$dev_key];
                     $dev_bug_workload_rate[$dev_key][1] = $dev_value;
                 }
             }
         }
         //508=>前端,后台:599,600 602 移动:601 QA:603
         foreach ($dev_p as $key => $value) {
             if (in_array($value, $this->get_user_by_department(508))) {
                 $table_work_person[$pmt_id]['js_bug'] += $dev_bug[$key];
                 //判断是否是前端bug和PHP bug
             } else {
                 $table_work_person[$pmt_id]['php_bug'] += $dev_bug[$key];
             }
         }
         $table_work_person[$pmt_id]['dev_p'] = implode("<br />", $dev_p);
         //开发者
         $table_work_person[$pmt_id]['dev_t'] = implode("<br />", $dev_t);
         //开发工时
         $table_work_person[$pmt_id]['test_p'] = implode("<br />", $test_p);
         //测试者
         $table_work_person[$pmt_id]['test_t'] = implode("<br />", $test_t);
         //测试工时
         $table_work_person[$pmt_id]['dev_bug'] = implode("<br />", $dev_bug);
         //开发bug
         $table_work_person[$pmt_id]['test_bug'] = implode("<br />", $test_bug);
         //测试bug
         $table_work_person[$pmt_id]['dev_bug_workload'] = implode("<br />", $dev_bug_workload);
         $table_work_person[$pmt_id]['test_bug_workload'] = implode("<br />", $test_bug_workload);
     }
     $dev_bug_workload_rate = $this->process_rate($dev_bug_workload_rate);
     if ($params['ajax'] == 1) {
         if ($params['div'] == "#best_dev_group") {
             $group_rate = $this->process_group_info($params['group_id'], $dev_bug_workload_rate);
             $best = $this->get_best_group($group_rate);
             echo $best;
             return 0;
         }
     }
     //stage: 5-dev 6-test
     $table_workload = array();
     $table_through = array();
     foreach ($pmt_ids as $pmt_id) {
         if (empty($tasks_pmtid[$pmt_id]['dev'])) {
             $table_workload[$pmt_id]['dev_person'] = '';
             $table_workload[$pmt_id]['dev_workload'] = 0;
         } else {
             $person = array();
             $time = 0;
             $tasks_pmtid[$pmt_id]['groups'] = '';
             $temp_group_selected = array();
             foreach ($tasks_pmtid[$pmt_id]['dev'] as $row) {
                 $person[] = $row['chinese_name'];
                 $data = Bll_UserBiz::get_instance()->get_user_id_by_chinese_name($row['chinese_name']);
                 foreach ($groups_user as $group) {
                     $group_members = explode(',', $group->group_members);
                     $group_members = array_filter($group_members);
                     if (in_array($data->user_id, $group_members)) {
                         $temp_group_selected[] = $group->group_name;
                     }
                 }
                 $temp_group_selected = array_unique($temp_group_selected);
                 $tasks_pmtid[$pmt_id]['groups'] = implode(',', $temp_group_selected);
                 // 项目与组之间关系
                 $time += intval($row['workload']);
             }
             $person = array_unique($person);
             $person_str = implode("/", $person);
             $table_workload[$pmt_id]['dev_person'] = $person_str;
             $table_workload[$pmt_id]['dev_workload'] = $time;
             $through_arr = array();
             foreach ($person as $person_row) {
                 $str = isset($rates_pmtid[$pmt_id][$person_row]) ? $rates_pmtid[$pmt_id][$person_row] : "-";
                 if ($str == "-") {
                     $through_arr[] = $person_row . ": " . $str;
                 } else {
                     if ($str < 100) {
                         $through_arr[] = '<span style="color:red;">' . $person_row . ": " . $str . '%</span>';
                     } else {
                         $through_arr[] = $person_row . ": " . $str . '%';
                     }
                 }
             }
             $str = isset($rates_pmtid[$pmt_id]['all']) ? $rates_pmtid[$pmt_id]['all'] : "-";
             if ($str == "-") {
                 $through_arr[] = '整个项目' . ": " . $str;
             } else {
                 if ($str < 100) {
                     $through_arr[] = '<span style="color:red;">' . '整个项目' . ": " . $str . '%</span>';
                 } else {
                     $through_arr[] = '整个项目' . ": " . $str . '%';
                 }
             }
             $through_str = implode("<br />", $through_arr);
             $table_through[$pmt_id] = $through_str;
         }
         if (empty($tasks_pmtid[$pmt_id]['test'])) {
             $table_workload[$pmt_id]['test_person'] = '';
             $table_workload[$pmt_id]['test_workload'] = 0;
         } else {
             $person = array();
             $time = 0;
             foreach ($tasks_pmtid[$pmt_id]['test'] as $row) {
                 $person[] = $row['chinese_name'];
                 $time += intval($row['workload']);
             }
             $person = array_unique($person);
             $person_str = implode("/", $person);
             $table_workload[$pmt_id]['test_person'] = $person_str;
             $table_workload[$pmt_id]['test_workload'] = $time;
         }
     }
     $table_project = array();
     foreach ($pmt_ids as $pmt_id) {
         $table_project[$pmt_id]['pmt_id'] = $pmt_id;
         $table_project[$pmt_id]['summary'] = $projects_pmtid[$pmt_id]['summary'];
         $table_project[$pmt_id]['release_date'] = date("Y-m-d", strtotime($projects_pmtid[$pmt_id]['date_release']));
         $table_project[$pmt_id]['pro_set'] = empty($projects_pmtid[$pmt_id]['set_id']) ? '' : $projects_pmtid[$pmt_id]['set_id'] . ". " . $projects_pmtid[$pmt_id]['set_name'];
         $table_project[$pmt_id]['owner'] = $projects_pmtid[$pmt_id]['chinese_name'];
         $table_project[$pmt_id]['bugs_count'] = isset($bugs_pmtid[$pmt_id]) ? count($bugs_pmtid[$pmt_id]) : 0;
         $table_project[$pmt_id]['dev_person'] = $table_work_person[$pmt_id]['dev_p'];
         //开发者
         $table_project[$pmt_id]['dev_workload'] = $table_work_person[$pmt_id]['dev_t'];
         //开发工时
         $table_project[$pmt_id]['dev_bug'] = $table_work_person[$pmt_id]['dev_bug'];
         //开发bug
         $table_project[$pmt_id]['test_person'] = $table_work_person[$pmt_id]['test_p'];
         //测试者
         $table_project[$pmt_id]['test_workload'] = $table_work_person[$pmt_id]['test_t'];
         //测试工时
         $table_project[$pmt_id]['test_bug'] = $table_work_person[$pmt_id]['test_bug'];
         //测试发现的bug
         $table_project[$pmt_id]['dev_workload_all'] = $table_workload[$pmt_id]['dev_workload'];
         //总开发工时
         $table_project[$pmt_id]['test_workload_all'] = $table_workload[$pmt_id]['test_workload'];
         //总测试工时
         $table_project[$pmt_id]['bug_devload'] = $table_project[$pmt_id]['dev_workload_all'] == 0 ? 0 : round($table_project[$pmt_id]['bugs_count'] / $table_project[$pmt_id]['dev_workload_all'], 2);
         $table_project[$pmt_id]['bug_testload'] = $table_project[$pmt_id]['test_workload_all'] == 0 ? 0 : round($table_project[$pmt_id]['bugs_count'] / $table_project[$pmt_id]['test_workload_all'], 2);
         $table_project[$pmt_id]['php_bug'] = $table_work_person[$pmt_id]['php_bug'];
         $table_project[$pmt_id]['js_bug'] = $table_work_person[$pmt_id]['js_bug'];
         $table_project[$pmt_id]['others_bug'] = $table_project[$pmt_id]['bugs_count'] - ($table_work_person[$pmt_id]['js_bug'] + $table_work_person[$pmt_id]['php_bug']);
         //总bug数目-(php+js) bug
         $table_project[$pmt_id]['groups'] = $tasks_pmtid[$pmt_id]['groups'];
     }
     if ($params['ajax'] == 1) {
         if ($params['div'] == "#contrast_dev_group") {
             echo $this->group_quality($table_project, $params['group_id'], $from, $to, count($pmt_ids), $delay_projects[$display['pro']]);
             return 0;
         }
     }
     $dev_bug_workload_rate = array_values($dev_bug_workload_rate);
     $top_three_projects = array();
     usort($table_project, "self::my_sort");
     $top_three_projects['first'] = $table_project[0];
     $top_three_projects['second'] = $table_project[1];
     $top_three_projects['third'] = $table_project[2];
     //top3项目
     $req->set_attribute('tab_info', $tab_info);
     $req->set_attribute('table_project', $table_project);
     $req->set_attribute('dev_bug_workload_rate', $dev_bug_workload_rate);
     $req->set_attribute('project_tested', $project_tested);
     $req->set_attribute('display', $display);
     $req->set_attribute('dev_bug_summary', $dev_bug_summary);
     //项目bug总览
     $req->set_attribute('top_three_projects', $top_three_projects);
     //top3项目
     $req->set_attribute('delay_projects', $delay_projects);
     //延期项目
     return 'NewReport_ProjectQuality';
 }
Beispiel #7
0
 public function handle_request_internal()
 {
     $req = APF::get_instance()->get_request();
     $res = APF::get_instance()->get_response();
     $params = $req->get_parameters();
     $pmt_id = $params['form_pmt'] ? trim($params['form_pmt']) : 0;
     if ($pmt_id != 0) {
         //project detail table
         $project = Bll_PMTProjectBiz::get_instance()->get_project_detail_by_ids(array($pmt_id));
         $table_project = array();
         if (!empty($project)) {
             $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids(array($pmt_id));
             $rates = Bll_ReportPmtInfoBiz::get_instance()->get_through_rate_by_pmtids(array($pmt_id));
             $delay_info = Bll_ReportPmtInfoBiz::get_instance()->get_project_delay_info_by_pmtids(array($pmt_id));
             $dev_person = array();
             $test_person = array();
             foreach ($tasks as $task) {
                 if (in_array($task['task_type_id'], array(2, 3, 33))) {
                     $dev_person[] = $task['chinese_name'];
                 } else {
                     if (in_array($task['task_type_id'], array(4))) {
                         $test_person[] = $task['chinese_name'];
                     }
                 }
             }
             $dev_person = array_unique($dev_person);
             $test_person = array_unique($test_person);
             $table_project['dev_person'] = implode("/", $dev_person);
             $table_project['test_person'] = implode("/", $test_person);
             $rate_person = array();
             foreach ($rates as $rate) {
                 $rate_person[$rate->chinese_name] = $rate->rate;
             }
             $through_arr = array();
             foreach ($dev_person as $person_row) {
                 $str = isset($rate_person[$person_row]) ? $rate_person[$person_row] . "%" : "-";
                 $through_arr[] = $person_row . ": " . $str;
             }
             $str = isset($rate_person['all']) ? $rate_person['all'] . "%" : "-";
             $through_arr[] = '整个项目' . ": " . $str;
             $through_str = implode(" ", $through_arr);
             $table_project['through_rate'] = $through_str;
             $table_project['pmt_id'] = $pmt_id;
             $table_project['summary'] = $project[0]['summary'];
             $table_project['release_date'] = date("Y-m-d", strtotime($project[0]['date_release']));
             $table_project['pro_set'] = empty($project[0]['set_id']) ? '' : $project[0]['set_id'] . ". " . $project[0]['set_name'];
             $table_project['owner'] = $project[0]['chinese_name'];
             if (!empty($delay_info)) {
                 $table_project['is_delay'] = $delay_info[0]->self_test_delayed == 1 ? 'Yes' . '<br />' . '原因:' . $delay_info[0]->delay_detail : 'No';
             } else {
                 $table_project['is_delay'] = '-';
             }
         }
         //reopen & reject list
         $reopen_id = Bll_TicketRelationBiz::get_instance()->find_reopen_id_by_pmtid($pmt_id);
         $reopen = array();
         if (!empty($reopen_id)) {
             foreach ($reopen_id as $row) {
                 $reopen[] = $row['ticket_id'];
             }
         }
         $reject_id = Bll_TicketCounterBiz::get_instance()->get_reject_id_by_pmtid($pmt_id);
         $reject = array();
         if (!empty($reject_id)) {
             foreach ($reject_id as $row) {
                 $reject[] = $row["ticket_id"];
             }
         }
         //prepare
         $day = date("Y-m-d");
         $date_arr = array();
         for ($i = 9; $i >= 1; $i--) {
             $t = "-{$i} day";
             $date_arr[] = date("Y-m-d", strtotime($t));
         }
         $date_arr[] = $day;
         $status = Ticket_Status::get_all_status();
         $prioritys = Bll_DdCommonBiz::get_instance()->get_prioritys();
         $priority = array();
         $p_id_name = array();
         foreach ($prioritys as $prioritys_row) {
             $priority[$prioritys_row->value] = $prioritys_row->name;
             $p_id_name[$prioritys_row->id] = $prioritys_row->name;
         }
         $environments = Bll_DdCommonBiz::get_instance()->get_environments();
         $environment = array();
         foreach ($environments as $environments_row) {
             $environment[$environments_row->value] = $environments_row->name;
         }
         //daily table
         $table_data = Bll_ReportProgessPmtBiz::get_instance()->get_counts_by_type_date($pmt_id, '2012-05-01', $day);
         foreach ($table_data as $key => $data_row) {
             $table_data[$key]->environment = $environment[$data_row->environment];
         }
         //pmt_day
         $counts_day = Bll_ReportDayPmtBiz::get_instance()->get_counts_by_pmt_type($pmt_id, 'all');
         $pmt_day = array();
         if (!empty($counts_day)) {
             foreach ($counts_day as $key => $row) {
                 $pmt_day[] = array('date' => $this->convert_date($row->day), 'count' => $row->count);
             }
         } else {
             $pmt_day[] = array('date' => $this->convert_date($day), 'count' => 0);
         }
         /*$day_pro = array();
           foreach($counts_day as $row){
               $day_pro[$row->day] =  $row->count;
           }
           foreach($date_arr as $date_row){
               $c = isset($day_pro[$date_row])? $day_pro[$date_row] : 0;
               $pmt_day[] = array('date' => $date_row, 'count' => $c);
           }*/
         //pmt_priority
         $counts_prior = Bll_ReportDayPmtBiz::get_instance()->get_counts_by_pmt_type($pmt_id, 'priority');
         $prior_pro = array();
         foreach ($counts_prior as $row) {
             $prior_pro[$row->day][$row->type_value] = $row->count;
         }
         $pmt_priority = array();
         if (!empty($prior_pro)) {
             foreach ($prior_pro as $key => $row) {
                 $tmp = array();
                 $tmp['date'] = $this->convert_date($key);
                 foreach ($priority as $p_value => $p_name) {
                     $o = isset($row[$p_value]) ? $row[$p_value] : 0;
                     $tmp[$p_name] = $o;
                 }
                 $pmt_priority[] = $tmp;
             }
         }
         /*else {
               $tmp = array();
               $tmp['date'] = $this->convert_date($day);
               foreach($priority as $p_value => $p_name){
                   $tmp[$p_name] = 0;
               }
               $pmt_priority[] = $tmp;
           }*/
         //pmt_status
         $counts_status = Bll_ReportDayPmtBiz::get_instance()->get_counts_by_pmt_type($pmt_id, 'status');
         $status_pro = array();
         foreach ($counts_status as $row) {
             $status_pro[$row->day][$row->type_value] = $row->count;
         }
         $pmt_status = array();
         if (!empty($status_pro)) {
             foreach ($status_pro as $key => $row) {
                 $tmp = array();
                 $tmp['date'] = $this->convert_date($key);
                 foreach ($status as $status_row) {
                     $s = isset($row[$status_row]) ? $row[$status_row] : 0;
                     $tmp[$status_row] = $s;
                 }
                 $pmt_status[] = $tmp;
             }
         }
         /*else {
               $tmp = array();
               $tmp['date'] = $this->convert_date($day);
               foreach($status as $status_row){
                   $tmp[$status_row] = 0;
               }
               $pmt_status[] = $tmp;
           }*/
         //priority and status today
         $tickets_type = Bll_TicketBiz::get_instance()->get_count_pmt_type($pmt_id);
         $ticket_priority = array();
         $ticket_status = array();
         foreach ($tickets_type as $row) {
             $ticket_priority[$row->priority][] = $row;
             $ticket_status[$row->status][] = $row;
         }
         $tmp_p = array();
         $tmp_p['date'] = $this->convert_date($day);
         foreach ($p_id_name as $id => $p_name) {
             $tmp_p[$p_name] = isset($ticket_priority[$id]) ? count($ticket_priority[$id]) : 0;
         }
         if (!isset($prior_pro[$day])) {
             $pmt_priority[] = $tmp_p;
         }
         $tmp_s = array();
         $tmp_s['date'] = $this->convert_date($day);
         foreach ($status as $status_row) {
             $tmp_s[$status_row] = isset($ticket_status[$status_row]) ? count($ticket_status[$status_row]) : 0;
         }
         if (!isset($status_pro[$day])) {
             $pmt_status[] = $tmp_s;
         }
         $req->set_attribute('pmt_day', $pmt_day);
         $req->set_attribute('pmt_priority', $pmt_priority);
         $req->set_attribute('pmt_status', $pmt_status);
         $req->set_attribute('table_data', $table_data);
         $req->set_attribute('table_project', $table_project);
         $req->set_attribute('reopen', $reopen);
         $req->set_attribute('reject', $reject);
     }
     $req->set_attribute('pmt_id', $pmt_id);
     return 'NewReport_ProjectDaily';
 }
Beispiel #8
0
 public function handle_request_internal()
 {
     $req = APF::get_instance()->get_request();
     $params = $req->get_parameters();
     $from = $params['from'];
     $to = $params['to'];
     $person = $params['p'];
     $product = $params['pro'];
     $mode = $params['m'];
     $pmt_id_q = $params['pmt'] ? $params['pmt'] : 0;
     if ($pmt_id_q != 0) {
         $projects = Bll_PMTProjectBiz::get_instance()->get_project_detail_by_ids(array($pmt_id_q));
     } else {
         $projects = Bll_PMTProjectBiz::get_instance()->get_projects_by_release_date_new($product, $from, $to);
     }
     $pmt_ids_init = array();
     $projects_pmtid = array();
     foreach ($projects as $project) {
         $projects_pmtid[$project['id']] = $project;
         $pmt_ids_init[] = $project['id'];
     }
     $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids($pmt_ids_init);
     $tasks_pmtid = array();
     foreach ($tasks as $task) {
         if (in_array($task['task_type_id'], array(2, 3, 33))) {
             $tasks_pmtid[$task['project_id']]['dev'][$task['chinese_name']][] = $task['workload'];
         } elseif (in_array($task['task_type_id'], array(4))) {
             $tasks_pmtid[$task['project_id']]['test'][$task['chinese_name']][] = $task['workload'];
         }
     }
     $pmt_ids = array();
     foreach ($pmt_ids_init as $pmt_id) {
         if (!empty($tasks_pmtid[$pmt_id]['dev']) && !empty($tasks_pmtid[$pmt_id]['test'])) {
             $pmt_ids[] = $pmt_id;
         }
     }
     $rates = Bll_ReportPmtInfoBiz::get_instance()->get_through_rate_by_pmtids($pmt_ids);
     $rates_pmtid = array();
     foreach ($rates as $rate) {
         $rates_pmtid[$rate->project_id][$rate->chinese_name] = $rate->rate;
     }
     if ($mode == '1') {
         $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_persons_sort_pmt($person, $pmt_ids);
     } elseif ($mode == '2') {
         $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_qa_sort_pmt($person, $pmt_ids);
     }
     $bugs_pmtid = array();
     foreach ($bugs as $bug) {
         $bugs_pmtid[$bug['pmt_id']] = $bug['BugCount'];
     }
     $table = array();
     $m = $mode == '1' ? 'dev' : 'test';
     foreach ($pmt_ids as $pmt_id) {
         if (isset($bugs_pmtid[$pmt_id]) || !empty($tasks_pmtid[$pmt_id][$m][$person])) {
             $table[$pmt_id]['pmt_id'] = $pmt_id;
             $table[$pmt_id]['summary'] = $projects_pmtid[$pmt_id]['summary'];
             $table[$pmt_id]['person'] = $person;
             $table[$pmt_id]['test_through'] = isset($rates_pmtid[$pmt_id][$person]) ? $rates_pmtid[$pmt_id][$person] . "%" : "-";
             $time = 0;
             if (isset($tasks_pmtid[$pmt_id][$m][$person])) {
                 foreach ($tasks_pmtid[$pmt_id][$m][$person] as $time_row) {
                     $time += intval($time_row);
                 }
             }
             $table[$pmt_id]['workload'] = $time;
             $table[$pmt_id]['bugs_count'] = isset($bugs_pmtid[$pmt_id]) ? $bugs_pmtid[$pmt_id] : 0;
         }
     }
     $req->set_attribute('table', $table);
     $req->set_attribute('from', $from);
     $req->set_attribute('to', $to);
     $req->set_attribute('person', $person);
     $req->set_attribute('mode', $mode);
     return 'NewReport_PersonDetail';
 }
Beispiel #9
0
 public function handle_request_internal()
 {
     $req = APF::get_instance()->get_request();
     $res = APF::get_instance()->get_response();
     $params = $req->get_parameters();
     $sub = $params['form_sub'] ? trim($params['form_sub']) : 'Update';
     $product_array = array(0, 12, 13, 14, 7, 6, 4);
     $pro_v = $params['pro'] ? $params['pro'] : 0;
     $pmt_id_q = $params['pmt_id'] ? trim($params['pmt_id']) : 0;
     /*$tab_info = array(
       1 => array('name' => 'Anjuke', 'click' => false),
       2 => array('name' => 'Aifang', 'click' => false),
       3 => array('name' => 'Haozu', 'click' => false),
       4 => array('name' => 'Jinpu', 'click' => false),
       5 => array('name' => 'Mobile', 'click' => false),
       6 => array('name' => 'Inc', 'click' => false)
       );*/
     $tab_info = array(0 => array('name' => '全部', 'click' => false), 1 => array('name' => '用户端', 'click' => false), 2 => array('name' => '客户端', 'click' => false), 3 => array('name' => '开发商', 'click' => false), 4 => array('name' => 'CRM', 'click' => false), 5 => array('name' => '移动', 'click' => false), 6 => array('name' => 'Inc.', 'click' => false));
     $tab_info[$pro_v]['click'] = true;
     $product = $product_array[$pro_v];
     $from = $params['from'] ? date("Y-m-d 00:00:00", strtotime($params['from'])) : date("Y-m-01 00:00:00");
     $to = $params['to'] ? date("Y-m-d 23:59:59", strtotime($params['to'])) : date("Y-m-t 23:59:59");
     $input_from = date("Y-m-d", strtotime($from));
     $input_to = date("Y-m-d", strtotime($to));
     $mode = $params['select_mode'] ? $params['select_mode'] : '1';
     if ($sub == 'OK' && $pmt_id_q != 0) {
         $projects = Bll_PMTProjectBiz::get_instance()->get_project_detail_by_ids(array($pmt_id_q));
     } else {
         $projects = Bll_PMTProjectBiz::get_instance()->get_projects_by_release_date_new($product, $from, $to);
     }
     //shirlyhu
     $groups = Bll_UserGroupCustomBiz::get_instance()->get_all_groups();
     foreach ($groups as $value) {
         $group[$value->department][] = array('name' => $value->group_name, 'id' => $value->id);
     }
     if ($group != null) {
         $req->set_attribute('group', $group);
     }
     $groups_users = Bll_UserGroupCustomBiz::get_instance()->get_groups_by_department(10);
     //属于用户端的组
     $member_group = array();
     foreach ($groups as $groups_user) {
         $group_members = explode(',', $groups_user->group_members);
         $member_chinesename = Bll_UserBiz::get_instance()->get_chinesenames_by_ids($group_members);
         foreach ($member_chinesename as $group_member) {
             if ($group_member) {
                 $member_group[$group_member] .= $groups_user->id . ",";
             }
         }
     }
     //shirlyhu
     if (empty($projects)) {
         $req->set_attribute('product', $product);
         $req->set_attribute('tab_info', $tab_info);
         $req->set_attribute('table_person', array());
         $req->set_attribute('table_project', array());
         $req->set_attribute('input_from', $input_from);
         $req->set_attribute('input_to', $input_to);
         $req->set_attribute('mode', $mode);
         $req->set_attribute('pmt_id_q', $pmt_id_q);
         return 'NewReport_Workload';
     }
     $pmt_ids_init = array();
     $projects_pmtid = array();
     foreach ($projects as $project) {
         $projects_pmtid[$project['id']] = $project;
         $pmt_ids_init[] = $project['id'];
     }
     $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids($pmt_ids_init);
     $tasks_pmtid = array();
     $tasks_pmtid_person = array();
     if ($tasks) {
         foreach ($tasks as $task) {
             if (in_array($task['task_type_id'], array(2, 3, 33))) {
                 $tasks_pmtid[$task['project_id']]['dev'][] = $task;
                 $tasks_pmtid_person[$task['project_id']]['dev'][$task['chinese_name']][] = $task['workload'];
             } elseif (in_array($task['task_type_id'], array(4))) {
                 $tasks_pmtid[$task['project_id']]['test'][] = $task;
                 $tasks_pmtid_person[$task['project_id']]['test'][$task['chinese_name']][] = $task['workload'];
             }
         }
     }
     $pmt_ids = array();
     foreach ($pmt_ids_init as $pmt_id) {
         if (!empty($tasks_pmtid[$pmt_id]['dev']) && !empty($tasks_pmtid[$pmt_id]['test'])) {
             $pmt_ids[] = $pmt_id;
         }
     }
     if (empty($pmt_ids)) {
         $req->set_attribute('product', $product);
         $req->set_attribute('tab_info', $tab_info);
         $req->set_attribute('table_person', array());
         $req->set_attribute('table_project', array());
         $req->set_attribute('input_from', $input_from);
         $req->set_attribute('input_to', $input_to);
         $req->set_attribute('mode', $mode);
         $req->set_attribute('pmt_id_q', $pmt_id_q);
         return 'NewReport_Workload';
     }
     $tasks_person = array();
     $tasks_qa = array();
     $persons = array();
     $qa_users = array();
     foreach ($tasks as $task) {
         if (in_array($task['project_id'], $pmt_ids)) {
             if (in_array($task['task_type_id'], array(2, 3, 33))) {
                 $tasks_person[$task['chinese_name']][] = $task['workload'];
                 $persons[] = $task['chinese_name'];
             } elseif (in_array($task['task_type_id'], array(4))) {
                 $tasks_qa[$task['chinese_name']][] = $task['workload'];
                 $qa_users[] = $task['chinese_name'];
             }
         }
     }
     $persons_pro = array_unique($persons);
     $persons = array();
     foreach ($persons_pro as $row) {
         $persons[] = $row;
     }
     $qa_pro = array_unique($qa_users);
     $qa_users = array();
     foreach ($qa_pro as $row) {
         $qa_users[] = $row;
     }
     $rates = Bll_ReportPmtInfoBiz::get_instance()->get_through_rate_by_pmtids($pmt_ids);
     $rates_pmtid = array();
     foreach ($rates as $rate) {
         $rates_pmtid[$rate->project_id][$rate->chinese_name] = $rate->rate;
     }
     $delay_infos = Bll_ReportPmtInfoBiz::get_instance()->get_project_delay_info_by_pmtids($pmt_ids);
     $delay_infos_pmtid = array();
     foreach ($delay_infos as $delay_info) {
         $delay_infos_pmtid[$delay_info->project_id] = $delay_info;
     }
     $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_pmtids($pmt_ids);
     $bugs_pmtid = array();
     foreach ($bugs as $bug) {
         $bugs_pmtid[$bug['pmt_id']] = $bug['BugCount'];
     }
     $bug_detail = Bll_TicketBiz::get_instance()->get_bugs_detail_by_pmtids($pmt_ids);
     $users = Bll_UserBiz::get_instance()->get_all_users();
     $user_wc = array();
     foreach ($users as $row) {
         $user_wc[$row->whole_name] = $row->chinese_name;
     }
     $bug_detail_dev = array();
     $bug_detail_qa = array();
     foreach ($bug_detail as $row) {
         $bug_detail_dev[$row->pmt_id][$user_wc[$row->owner]][] = $row;
         $bug_detail_qa[$row->pmt_id][$user_wc[$row->reporter]][] = $row;
     }
     $table_work_person = array();
     foreach ($pmt_ids as $pmt_id) {
         $dev_p = array();
         $dev_t = array();
         $test_p = array();
         $test_t = array();
         $dev_bug = array();
         $test_bug = array();
         $dev_bug_workload = array();
         $test_bug_workload = array();
         foreach ($tasks_pmtid_person[$pmt_id]['dev'] as $d_p => $task_dev) {
             $dev_p[$d_p] = $d_p;
             $dev_t[$d_p] = 0;
             $dev_bug[$d_p] = isset($bug_detail_dev[$pmt_id][$d_p]) ? count($bug_detail_dev[$pmt_id][$d_p]) : 0;
             foreach ($task_dev as $t) {
                 $dev_t[$d_p] += intval($t);
             }
             $dev_bug_workload[$d_p] = $dev_t[$d_p] == 0 ? 0 : round(intval($dev_bug[$d_p]) / $dev_t[$d_p], 2);
         }
         foreach ($tasks_pmtid_person[$pmt_id]['test'] as $t_p => $task_test) {
             $test_p[$t_p] = $t_p;
             $test_t[$t_p] = 0;
             $test_bug[$t_p] = isset($bug_detail_qa[$pmt_id][$t_p]) ? count($bug_detail_qa[$pmt_id][$t_p]) : 0;
             foreach ($task_test as $t) {
                 $test_t[$t_p] += intval($t);
             }
             $test_bug_workload[$t_p] = $test_t[$t_p] == 0 ? 0 : round(intval($test_bug[$t_p]) / $test_t[$t_p], 2);
         }
         $table_work_person[$pmt_id]['dev_p'] = implode("<br />", $dev_p);
         $table_work_person[$pmt_id]['dev_t'] = implode("<br />", $dev_t);
         $table_work_person[$pmt_id]['test_p'] = implode("<br />", $test_p);
         $table_work_person[$pmt_id]['test_t'] = implode("<br />", $test_t);
         $table_work_person[$pmt_id]['dev_bug'] = implode("<br />", $dev_bug);
         $table_work_person[$pmt_id]['test_bug'] = implode("<br />", $test_bug);
         $table_work_person[$pmt_id]['dev_bug_workload'] = implode("<br />", $dev_bug_workload);
         $table_work_person[$pmt_id]['test_bug_workload'] = implode("<br />", $test_bug_workload);
     }
     //stage: 5-dev 6-test
     $table_workload = array();
     $table_through = array();
     foreach ($pmt_ids as $pmt_id) {
         if (empty($tasks_pmtid[$pmt_id]['dev'])) {
             $table_workload[$pmt_id]['dev_person'] = '';
             $table_workload[$pmt_id]['dev_workload'] = 0;
         } else {
             $person = array();
             $time = 0;
             foreach ($tasks_pmtid[$pmt_id]['dev'] as $row) {
                 $person[] = $row['chinese_name'];
                 $time += intval($row['workload']);
             }
             $person = array_unique($person);
             $person_str = implode("/", $person);
             $table_workload[$pmt_id]['dev_person'] = $person_str;
             $table_workload[$pmt_id]['dev_workload'] = $time;
             $through_arr = array();
             $through_str = "";
             foreach ($person as $person_row) {
                 $str = isset($rates_pmtid[$pmt_id][$person_row]) ? $rates_pmtid[$pmt_id][$person_row] : "-";
                 if ($str == "-") {
                     $through_arr[] = $person_row . ": " . $str;
                 } else {
                     if ($str < 100) {
                         $through_arr[] = '<span style="color:red;">' . $person_row . ": " . $str . '%</span>';
                     } else {
                         $through_arr[] = $person_row . ": " . $str . '%';
                     }
                 }
             }
             $str = isset($rates_pmtid[$pmt_id]['all']) ? $rates_pmtid[$pmt_id]['all'] : "-";
             if ($str == "-") {
                 $through_arr[] = '整个项目' . ": " . $str;
             } else {
                 if ($str < 100) {
                     $through_arr[] = '<span style="color:red;">' . '整个项目' . ": " . $str . '%</span>';
                 } else {
                     $through_arr[] = '整个项目' . ": " . $str . '%';
                 }
             }
             $through_str = implode("<br />", $through_arr);
             $table_through[$pmt_id] = $through_str;
         }
         if (empty($tasks_pmtid[$pmt_id]['test'])) {
             $table_workload[$pmt_id]['test_person'] = '';
             $table_workload[$pmt_id]['test_workload'] = 0;
         } else {
             $person = array();
             $time = 0;
             foreach ($tasks_pmtid[$pmt_id]['test'] as $row) {
                 $person[] = $row['chinese_name'];
                 $time += intval($row['workload']);
             }
             $person = array_unique($person);
             $person_str = implode("/", $person);
             $table_workload[$pmt_id]['test_person'] = $person_str;
             $table_workload[$pmt_id]['test_workload'] = $time;
         }
     }
     $table_project = array();
     foreach ($pmt_ids as $pmt_id) {
         $table_project[$pmt_id]['release_date'] = date("Y-m-d", strtotime($projects_pmtid[$pmt_id]['date_release']));
         $table_project[$pmt_id]['pmt_id'] = $pmt_id;
         $table_project[$pmt_id]['summary'] = $projects_pmtid[$pmt_id]['summary'];
         $table_project[$pmt_id]['owner'] = $projects_pmtid[$pmt_id]['chinese_name'];
         //$table_project[$pmt_id]['dev_person'] = $table_workload[$pmt_id]['dev_person'];
         $table_project[$pmt_id]['dev_workload_all'] = $table_workload[$pmt_id]['dev_workload'];
         //$table_project[$pmt_id]['test_person'] = $table_workload[$pmt_id]['test_person'];
         $table_project[$pmt_id]['test_workload_all'] = $table_workload[$pmt_id]['test_workload'];
         $table_project[$pmt_id]['dev_person'] = $table_work_person[$pmt_id]['dev_p'];
         $table_project[$pmt_id]['dev_workload'] = $table_work_person[$pmt_id]['dev_t'];
         $table_project[$pmt_id]['dev_bug'] = $table_work_person[$pmt_id]['dev_bug'];
         $table_project[$pmt_id]['dev_bug_workload'] = $table_work_person[$pmt_id]['dev_bug_workload'];
         $table_project[$pmt_id]['test_person'] = $table_work_person[$pmt_id]['test_p'];
         $table_project[$pmt_id]['test_workload'] = $table_work_person[$pmt_id]['test_t'];
         $table_project[$pmt_id]['test_bug'] = $table_work_person[$pmt_id]['test_bug'];
         $table_project[$pmt_id]['test_bug_workload'] = $table_work_person[$pmt_id]['test_bug_workload'];
         $table_project[$pmt_id]['self_test'] = $table_through[$pmt_id];
         $table_project[$pmt_id]['bugs_count'] = isset($bugs_pmtid[$pmt_id]) ? $bugs_pmtid[$pmt_id] : 0;
         $table_project[$pmt_id]['bug_devload'] = $table_project[$pmt_id]['dev_workload_all'] == 0 ? 0 : round($table_project[$pmt_id]['bugs_count'] / $table_project[$pmt_id]['dev_workload_all'], 2);
         $table_project[$pmt_id]['bug_testload'] = $table_project[$pmt_id]['test_workload_all'] == 0 ? 0 : round($table_project[$pmt_id]['bugs_count'] / $table_project[$pmt_id]['test_workload_all'], 2);
         $table_project[$pmt_id]['devload_testload'] = $table_project[$pmt_id]['test_workload_all'] == 0 ? 0 : round($table_project[$pmt_id]['dev_workload_all'] / $table_project[$pmt_id]['test_workload_all'], 2);
         //shirlyhu
         //            $person_groups=explode("<br />",$table_project[$pmt_id]['dev_person']);
         //
         //            foreach($person_groups as $person_group){
         //               if($member_group[$person_group]){
         //                   $table_project[$pmt_id]['group_id'].=$member_group[$person_group].",";
         //               }
         //            }
         //shirlyhu
         if (isset($delay_infos_pmtid[$pmt_id])) {
             $table_project[$pmt_id]['is_delay'] = $delay_infos_pmtid[$pmt_id]->self_test_delayed == 1 ? 'Yes' . '<br />' . '原因:' . $delay_infos_pmtid[$pmt_id]->delay_detail : 'No';
         } else {
             $table_project[$pmt_id]['is_delay'] = '-';
         }
     }
     //by person
     $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_persons($persons, $pmt_ids);
     $bugs_person = array();
     foreach ($bugs as $bug) {
         $bugs_person[$bug['chinese_name']] = $bug['BugCount'];
     }
     $bugs_qa_user = Bll_TicketBiz::get_instance()->get_bugs_by_qas($qa_users, $pmt_ids);
     $bugs_qa = array();
     foreach ($bugs_qa_user as $bug) {
         $bugs_qa[$bug['chinese_name']] = $bug['BugCount'];
     }
     $table_qa = array();
     $table_qa['total'] = array('person' => 'Total', 'bugs_count' => 0, 'workload' => 0, 'bugs_load' => 0);
     foreach ($qa_users as $qa) {
         $table_qa[$qa]['person'] = $qa;
         if ($member_group[$qa]) {
             $table_qa[$qa]['group_id'] = $member_group[$qa];
         }
         $table_qa[$qa]['bugs_count'] = isset($bugs_qa[$qa]) ? $bugs_qa[$qa] : 0;
         $table_qa[$qa]['workload'] = 0;
         foreach ($tasks_qa[$qa] as $row) {
             $table_qa[$qa]['workload'] += intval($row);
         }
         $table_qa[$qa]['bugs_load'] = $table_qa[$qa]['workload'] == 0 ? 0 : round($table_qa[$qa]['bugs_count'] / $table_qa[$qa]['workload'], 2);
         $table_qa['total']['bugs_count'] += $table_qa[$qa]['bugs_count'];
         $table_qa['total']['workload'] += $table_qa[$qa]['workload'];
     }
     $table_qa['total']['bugs_load'] = $table_qa['total']['workload'] == 0 ? 0 : round($table_qa['total']['bugs_count'] / $table_qa['total']['workload'], 2);
     $table_person = array();
     $table_person['total'] = array('person' => 'Total', 'bugs_count' => 0, 'workload' => 0, 'bugs_load' => 0);
     foreach ($persons as $person) {
         $table_person[$person]['person'] = $person;
         if ($member_group[$person]) {
             $table_person[$person]['group_id'] = $member_group[$person];
         }
         $table_person[$person]['bugs_count'] = isset($bugs_person[$person]) ? $bugs_person[$person] : 0;
         $table_person[$person]['workload'] = 0;
         foreach ($tasks_person[$person] as $row) {
             $table_person[$person]['workload'] += intval($row);
         }
         $table_person[$person]['bugs_load'] = $table_person[$person]['workload'] == 0 ? 0 : round($table_person[$person]['bugs_count'] / $table_person[$person]['workload'], 2);
         $table_person['total']['bugs_count'] += $table_person[$person]['bugs_count'];
         $table_person['total']['workload'] += $table_person[$person]['workload'];
     }
     $table_person['total']['bugs_load'] = $table_person['total']['workload'] == 0 ? 0 : round($table_person['total']['bugs_count'] / $table_person['total']['workload'], 2);
     $req->set_attribute('product', $product);
     $req->set_attribute('tab_info', $tab_info);
     $req->set_attribute('table_person', $table_person);
     $req->set_attribute('table_qa', $table_qa);
     $req->set_attribute('table_project', $table_project);
     $req->set_attribute('input_from', $input_from);
     $req->set_attribute('input_to', $input_to);
     $req->set_attribute('mode', $mode);
     $req->set_attribute('pmt_id_q', $pmt_id_q);
     return 'NewReport_Workload';
 }
Beispiel #10
0
 public function handle_request_internal()
 {
     $req = APF::get_instance()->get_request();
     $params = $req->get_parameters();
     $pmt_id = isset($params['pmt']) ? $params['pmt'] : '';
     $product = isset($params['pro']) ? $params['pro'] : '1';
     $from = $params['from'] ? date("Y-m-d 00:00:00", strtotime($params['from'])) : date("Y-m-01 00:00:00");
     $to = $params['to'] ? date("Y-m-d 23:59:59", strtotime($params['to'])) : date("Y-m-t 23:59:59");
     if ($pmt_id != '' || $product != '' || $from != '' || $to != '') {
         if ($pmt_id != 0) {
             $projects = Bll_PMTProjectBiz::get_instance()->get_project_detail_by_ids(array($pmt_id));
         } else {
             $projects = Bll_PMTProjectBiz::get_instance()->get_projects_by_release_date($product, $from, $to);
         }
         if (empty($projects)) {
             $datas = array();
         } else {
             $datas = array();
             foreach ($projects as $project) {
                 $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids(array($project['id']));
                 $count_dev_task = 0;
                 $count_test_task = 0;
                 if ($tasks) {
                     foreach ($tasks as $task) {
                         if (in_array($task['task_type_id'], array(2, 3, 33))) {
                             $count_dev_task += 1;
                         } elseif (in_array($task['task_type_id'], array(4))) {
                             $count_test_task += 1;
                         }
                     }
                 }
                 if ($count_dev_task == 0 || $count_test_task == 0) {
                     continue;
                 }
                 $datas[$project['id']]['release_date'] = date("Y-m-d", strtotime($project['date_release']));
                 $datas[$project['id']]['pmt_id'] = $project['id'];
                 $datas[$project['id']]['summary'] = $project['summary'];
                 $bug_details = Bll_TicketBiz::get_instance()->get_bugs_detail_by_pmtids(array($project['id']));
                 if (empty($bug_details)) {
                     $datas[$project['id']]['component'] = '';
                 } else {
                     foreach ($bug_details as $bug_detail) {
                         $components[] = $bug_detail->component;
                     }
                     $components = array_count_values($components);
                     $components_count = '0';
                     $component = '';
                     foreach ($components as $a => $b) {
                         if ($b > $components_count) {
                             $components_count = $b;
                             $component = $a;
                         } else {
                             continue;
                         }
                     }
                     $datas[$project['id']]['component'] = $component;
                 }
                 $dev_workload_all = '0';
                 $test_workload_all = '0';
                 foreach ($tasks as $task) {
                     if (in_array($task['task_type_id'], array(2, 3, 33))) {
                         $datas[$project['id']]['dev'][$task['chinese_name']]['dev_person'] = $task['chinese_name'];
                         $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_persons(array($task['chinese_name']), array($project['id']));
                         $datas[$project['id']]['dev'][$task['chinese_name']]['dev_person_bug_count'] = $bugs[0]['BugCount'] ? $bugs[0]['BugCount'] : '0';
                         $datas[$project['id']]['dev'][$task['chinese_name']]['dev_person_workload'] += $task['workload'];
                         $dev_workload_all += $task['workload'];
                     } elseif (in_array($task['task_type_id'], array(4))) {
                         $datas[$project['id']]['test'][$task['chinese_name']]['test_person'] = $task['chinese_name'];
                         $bugs = Bll_TicketBiz::get_instance()->get_bugs_by_qas(array($task['chinese_name']), array($project['id']));
                         $datas[$project['id']]['test'][$task['chinese_name']]['test_person_bug_count'] = $bugs[0]['BugCount'] ? $bugs[0]['BugCount'] : '0';
                         $datas[$project['id']]['test'][$task['chinese_name']]['test_person_workload'] += $task['workload'];
                         $test_workload_all += $task['workload'];
                     }
                     if (in_array($task['task_type_id'], array(2, 3, 33))) {
                         $datas[$project['id']]['dev'][$task['chinese_name']]['dev_bug_workload'] = $datas[$project['id']]['dev'][$task['chinese_name']]['dev_person_workload'] == 0 ? 0 : round($datas[$project['id']]['dev'][$task['chinese_name']]['dev_person_bug_count'] / $datas[$project['id']]['dev'][$task['chinese_name']]['dev_person_workload'], 2);
                     } elseif (in_array($task['task_type_id'], array(4))) {
                         $datas[$project['id']]['test'][$task['chinese_name']]['test_bug_workload'] = $datas[$project['id']]['test'][$task['chinese_name']]['test_person_workload'] == 0 ? 0 : round($datas[$project['id']]['test'][$task['chinese_name']]['test_person_bug_count'] / $datas[$project['id']]['test'][$task['chinese_name']]['test_person_workload'], 2);
                     }
                 }
                 $datas[$project['id']]['dev_workload_all'] = $dev_workload_all;
                 $datas[$project['id']]['test_workload_all'] = $test_workload_all;
                 $bug_details = Bll_TicketBiz::get_instance()->get_bugs_detail_by_pmtids(array($project['id']));
                 $datas[$project['id']]['project_bug'] = count($bug_details);
                 $production_bug = '0';
                 foreach ($bug_details as $bug_detail) {
                     if ($bug_detail->environment == 'Production') {
                         $production_bug += 1;
                     }
                 }
                 $datas[$project['id']]['production_bug'] = $production_bug;
                 $datas[$project['id']]['bug_devload'] = $dev_workload_all == 0 ? 0 : round(count($bug_details) / $dev_workload_all, 2);
                 $datas[$project['id']]['bug_testload'] = $test_workload_all == 0 ? 0 : round(count($bug_details) / $test_workload_all, 2);
                 $delay_infos = Bll_ReportPmtInfoBiz::get_instance()->get_project_delay_info_by_pmtids(array($project['id']));
                 if (!empty($delay_infos)) {
                     if ($delay_infos[0]->self_test_delayed == '1') {
                         $datas[$project['id']]['is_delay'] = 'Yes';
                     } else {
                         $datas[$project['id']]['is_delay'] = 'No';
                     }
                 } else {
                     $datas[$project['id']]['is_delay'] = 'No';
                 }
             }
             if (!empty($datas)) {
                 $return = array('status' => 'ok', 'result' => array('count' => count($datas), 'data' => $datas));
             } else {
                 $return = array('status' => 'ok', 'result' => array('count' => 0, 'data' => array()));
             }
         }
     } else {
         $return = array('status' => 'error', 'result' => array('code' => 101, 'message' => 'empty parameter'));
     }
     $return = json_encode($return);
     echo $return;
 }
Beispiel #11
0
apf_require_class('Bll_UsernewBiz');
$depart_pmt = Bll_PMTProjectBiz::get_instance()->get_staff_depart_infos();
$depart_info = array();
foreach ($depart_pmt as $row) {
    if (in_array($row['tag_id'], array(1, 7, 8, 9))) {
        $name = strtolower(substr($row['email'], 0, strpos($row['email'], '@')));
        $depart_info[$name] = $row;
    }
}
$group_pmt = Bll_PMTProjectBiz::get_instance()->get_staff_group_infos();
$group_info = array();
foreach ($group_pmt as $row) {
    $name = strtolower(substr($row['email'], 0, strpos($row['email'], '@')));
    $group_info[$name] = $row;
}
$subdepart_pmt = Bll_PMTProjectBiz::get_instance()->get_staff_subdep_infos();
$subdepart_info = array();
foreach ($subdepart_pmt as $row) {
    $name = strtolower(substr($row['email'], 0, strpos($row['email'], '@')));
    $subdepart_info[$name] = $row;
}
print_r($depart_info[$name]);
print_r($group_info[$name]);
print_r($subdepart_info[$name]);
$depart_p_i = array('1' => '1', '7' => '2', '8' => '3', '9' => '4');
$group_p_i = array('1' => '1', '3' => '2', '4' => '3', '5' => '4', '7' => '5', '8' => '6', '9' => '7', '10' => '8', '11' => '9', '12' => '10', '13' => '11', '14' => '12', '15' => '13', '16' => '14', '17' => '15', '18' => '16');
$subdepart_p_i = array('5' => '2', '160' => '2', '161' => '2', '162' => '2', '163' => '2', '164' => '2', '165' => '2', '167' => '2', '206' => '2', '207' => '2', '208' => '2', '212' => '2', '261' => '2', '262' => '2', '263' => '2', '264' => '2', '265' => '3', '266' => '2', '320' => '2', '321' => '2', '322' => '2', '323' => '24', '324' => '24', '325' => '24', '326' => '34', '327' => '2', '328' => '2', '329' => '2', '335' => '3', '416' => '2', '417' => '2');
$users = Bll_UsernewBiz::get_instance()->get_all_users();
foreach ($users as $user) {
    $input_arr = array();
    $username = strtolower(substr($user->email, 0, strpos($user->email, '@')));
<?php

/**
 * Created by PhpStorm.
 * User: lanqiyi
 * Date: 14-7-28
 * Time: 下午3:26
 */
apf_require_class('Bll_UserGroupCustomBiz');
apf_require_class('Bll_ReportGroupSelectedBiz');
apf_require_class('Bll_TicketBiz');
apf_require_class('DealTime');
apf_require_class('Bll_PMTProjectBiz');
//$time = strtotime('-7 days');
//$begin = date('Y-m-d H:i:s', $time);
//$end = date('Y-m-d H:i:s', time());
//$week = date('Y-W', $time);
//$input_arr = array('department'=>'10', 'group_name'=>'中文', 'members'=>"张乐 lezhang;赵敏 minzhao;程昊 haocheng;杨楚超 ccyang");
//$xx = Bll_UserGroupCustomBiz::get_instance()->group_add($input_arr);
//$xx = Bll_UserGroupCustomBiz::get_instance()->group_delete(26);
$from = $params['from'] ? date("Y-m-d 00:00:00", strtotime($params['from'])) : date("Y-m-01 00:00:00");
$to = $params['to'] ? date("Y-m-d 23:59:59", strtotime($params['to'])) : date("Y-m-t 23:59:59");
$prodct_line = 50;
$depart = 12;
//$input_arr = array('product_line'=>'','depart'=>'12', 'from'=> $from,'to'=>$to);
$aa = Bll_PMTProjectBiz::get_instance()->get_project_by_user_and_time($depart, $prodct_line, $from, $to);
var_dump($from);
var_dump($to);
var_dump($aa);
Beispiel #13
0
//$depart_array = array(12);
$product_lines = array('pc' => 50, 'mobile' => 51);
//51=>touch-web,pad-web的项目也选择的是touch-web
foreach ($depart_array as $depart) {
    if ($depart == 12) {
        foreach ($product_lines as $key => $product_line) {
            $projects = Bll_PMTProjectBiz::get_instance()->get_project_by_user_and_time($depart, $product_line, $begin, $end);
            if ($projects) {
                $count = count($projects);
                $pmt_ids_init = array();
                $projects_pmtid = array();
                foreach ($projects as $project) {
                    $projects_pmtid[$project['id']] = $project;
                    $pmt_ids_init[] = $project['id'];
                }
                $tasks = Bll_PMTProjectBiz::get_instance()->get_tasks_by_pmt_ids($pmt_ids_init);
                $tasks_pmtid = array();
                $tasks_pmtid_person = array();
                if ($tasks) {
                    foreach ($tasks as $task) {
                        if (in_array($task['task_type_id'], array(2, 3, 33))) {
                            //2=>前端开发,3=>后端开发,33=>开发
                            $tasks_pmtid[$task['project_id']]['dev'][] = $task;
                            $tasks_pmtid_person[$task['project_id']]['dev'][$task['chinese_name']][] = $task['workload'];
                        } elseif (in_array($task['task_type_id'], array(4))) {
                            //4=>测试
                            $tasks_pmtid[$task['project_id']]['test'][] = $task;
                            $tasks_pmtid_person[$task['project_id']]['test'][$task['chinese_name']][] = $task['workload'];
                        }
                    }
                }