function stat_part_info_by_return_date($start_date, $end_date) { // 2014-03-01 , 2014-06-14 $group = array(); $parts = Part::find('all', array('conditions' => array(' DATE(`return_date`) >= ? AND DATE(`return_date`) <= ? ', $start_date, $end_date))); foreach ($parts as $part) { $prod = $part->production; $procs = $part->processes; // prod if (!isset($group[$prod->id])) { $group[$prod->id] = array('prod_use_dep' => $prod->use_dep, 'prod_num' => $prod->num, 'parts' => array()); } $group[$prod->id]['parts'][$part->id] = array('part_num' => $part->num, 'part_name' => $part->name, 'part_return_date' => $part->return_date ? date('Y-m-d', strtotime($part->return_date)) : '', 'procs' => array()); // processes foreach ($procs as $proc) { $group[$prod->id]['parts'][$part->id]['procs'][] = array('proc_priority' => $proc->priority, 'proc_name' => $proc->name, 'proc_staffs' => get_proc_all_staffs($proc), 'proc_count' => $proc->count, 'proc_count_done' => $proc->count_done, 'proc_takt_time' => $proc->takt_time, 'proc_preparation_time' => $proc->preparation_time, 'proc_time' => get_proc_time($proc), 'proc_completion_date' => $proc->completion_date ? date('Y-m-d', strtotime($proc->completion_date)) : ''); } } render_with_layout('misc.php', 'Statistics/stat_part_info_by_reutrn_date.php', compact('group')); }
function stat_month_item_proc_2($sql, $project_src) { // get productions $results = array(); $prods = Production::find_by_sql($sql); // prod foreach ($prods as $prod) { $results[$prod->id] = array('num' => $prod->num, 'name' => $prod->name, 'project_src' => $prod->project_src, 'parts' => array()); // part foreach ($prod->parts as $part) { $results[$prod->id]['parts'][$part->id] = array('num' => $part->num, 'name' => $part->name, 'count' => $part->count, 'procs' => '', 'cur_proc' => '', 'cur_proc_production_date' => '', 'undo_work_hours' => get_total_undo_work_hours($part), 'is_done' => $part->is_done); // 初始化变量 $procs = array(); $cur_proc = array(); $cur_proc_production_date = ''; // proc if (count($part->processes)) { foreach ($part->processes as $proc) { $procs[] = array('id' => $proc->id, 'name' => get_proc_name($proc->name), 'priority' => $proc->priority, 'production_date' => $proc->production_date ? date('Y-m-d', strtotime($proc->production_date)) : ''); // 查询当前正在执行的工序 // 查询条件: 投产日期非空 && 未完工 if (!empty($proc->production_date) && !$proc->is_done) { $cur_proc = array('id' => $proc->id, 'name' => get_proc_name($proc->name), 'priority' => $proc->priority, 'planned_completion_date' => $proc->planned_completion_date ? date('Y-m-d', strtotime($proc->planned_completion_date)) : date('Y-m-d', strtotime($proc->part->planned_completion_date)), 'production_date' => $proc->production_date ? date('Y-m-d', strtotime($proc->production_date)) : '', 'staffs' => get_proc_all_staffs($proc), 'check_date' => get_proc_first_work_check_date($proc)); $cur_proc_production_date = $proc->production_date ? date('Y-m-d', strtotime($proc->production_date)) : ''; } } // end of proc // 如果没有找到当前执行的工序 // 默认为第一道工序 if (empty($cur_proc)) { $processes = $part->processes; $first_proc = $processes[0]; $last_proc = $processes[count($processes) - 1]; // 如果最后一道工序完工, 默认为最后一道工序 if ($last_proc->is_done) { $first_proc = $last_proc; } $cur_proc = array('id' => $first_proc->id, 'name' => get_proc_name($first_proc->name), 'priority' => $first_proc->priority, 'planned_completion_date' => $proc->planned_completion_date ? date('Y-m-d', strtotime($proc->planned_completion_date)) : date('Y-m-d', strtotime($proc->part->planned_completion_date)), 'production_date' => $first_proc->production_date ? date('Y-m-d', strtotime($first_proc->production_date)) : '', 'staffs' => get_proc_all_staffs($first_proc), 'check_date' => get_proc_first_work_check_date($first_proc)); $cur_proc_production_date = $first_proc->production_date ? date('Y-m-d', strtotime($first_proc->production_date)) : ''; } $results[$prod->id]['parts'][$part->id]['procs'] = $procs; $results[$prod->id]['parts'][$part->id]['cur_proc'] = $cur_proc; $results[$prod->id]['parts'][$part->id]['cur_proc_production_date'] = $cur_proc_production_date; } } } return $results; }
function get_undo_procs() { $procs = Process::find('all', array('conditions' => array(' `production_date` > 0 AND `is_done` = 0 '), 'order' => 'id desc')); $results = array(); foreach ($procs as $proc) { $results[] = array('name' => get_proc_name($proc->name), 'part_num' => $proc->part->num, 'part_name' => $proc->part->name, 'count' => $proc->count, 'production_date' => date('Y-m-d', strtotime($proc->production_date)), 'staffs' => get_proc_all_staffs($proc), 'check_date' => get_proc_first_work_check_date($proc)); } return $results; }