Beispiel #1
0
 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;
 }
Beispiel #2
0
 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;
 }