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')); }