Esempio n. 1
0
 function stat_total_count($start_date, $end_date)
 {
     // 统计
     $sql = Production::create_total_count_sql($start_date, $end_date);
     $prods = Production::find_by_sql($sql);
     // 生产指令
     $prod_total_count = 0;
     $prod_done_count = 0;
     $prod_undo_count = 0;
     // 零件
     $part_total_count = 0;
     $part_done_count = 0;
     $part_undo_count = 0;
     // 工序
     $proc_total_count = 0;
     $proc_has_gy_count = 0;
     // 已编工艺工序数
     $proc_has_no_gy_count = 0;
     // 未编工艺工序数
     $proc_has_gy_and_undo_works_sum = array();
     // 已编工艺但未完工工序工时分类合计
     // prod
     foreach ($prods as $prod) {
         $prod_total_count++;
         if ($prod->is_done) {
             $prod_done_count++;
         } else {
             $prod_undo_count++;
         }
         // part
         foreach ($prod->parts as $part) {
             $part_total_count++;
             if ($part->is_done) {
                 $part_done_count++;
             } else {
                 $part_undo_count++;
             }
             // proc
             foreach ($part->processes as $proc) {
                 $proc_total_count++;
                 if ($proc->content) {
                     $proc_has_gy_count++;
                     // 已编工艺但未完工工序工时累加
                     if (!$proc->is_done) {
                         if (!array_key_exists($proc->name, $proc_has_gy_and_undo_works_sum)) {
                             $proc_has_gy_and_undo_works_sum[$proc->name] = 0;
                         }
                         $proc_has_gy_and_undo_works_sum[$proc->name] += get_proc_time($proc);
                     }
                 } else {
                     // 未编工艺工序累加工时
                     $proc_has_no_gy_count++;
                 }
             }
         }
     }
     $result = array('prod_total_count' => $prod_total_count, 'prod_done_count' => $prod_done_count, 'prod_undo_count' => $prod_undo_count, 'part_total_count' => $part_total_count, 'part_done_count' => $part_done_count, 'part_undo_count' => $part_undo_count, 'proc_total_count' => $proc_total_count, 'proc_has_gy_count' => $proc_has_gy_count, 'proc_has_no_gy_count' => $proc_has_no_gy_count, 'proc_has_gy_but_undo_works_sum' => $proc_has_gy_and_undo_works_sum);
     render_with_layout('misc.php', 'Statistics/stat_total_count.php', compact('result', 'start_date', 'end_date'));
 }