Пример #1
0
 function remove_for_part($part_id)
 {
     $part = Part::find_by_id($part_id);
     $part->image = '';
     $part->save();
     echo 'success';
 }
Пример #2
0
 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'));
 }
Пример #3
0
 function get_parts_group_by_prod_num($prod_num)
 {
     $prod = Production::find_by_num($prod_num);
     $results = array();
     if ($prod) {
         $results = \Model\Part::build_parts_group($prod->parts);
     }
     return $results;
 }
Пример #4
0
 function done_but_empty_return_date()
 {
     $parts = Part::find('all', array('conditions' => array(" is_done = 1 AND return_date=0 ")));
     $results = array();
     foreach ($parts as $part) {
         $results[] = array('num' => $part->num, 'name' => $part->name, 'count' => $part->count, 'completion_date' => $part->completion_date ? date('Y-m-d', strtotime($part->completion_date)) : '', 'work_hours' => get_total_work_hours_and_prices($part->processes)['part_work_hours']);
     }
     render_with_layout('misc.php', 'Parts/empty_return_date.php', compact('results'));
 }
Пример #5
0
 function import()
 {
     // 施工员/调度员 四车间
     if (!has_perm(1, 4) && !has_perm(2, 4)) {
         exit;
     }
     $name = $_FILES['files']['name'][0];
     $size = $_FILES['files']['size'][0];
     $tmp_name = $_FILES['files']['tmp_name'][0];
     if (get_file_ext($name) != 'xls') {
         $results['error'] = '对不起,系统只允许上传扩展名为 <strong>xls</strong> 的电子表格文件!';
         $results['is_success'] = false;
     } else {
         if ($size > 2000000) {
             $results['error'] = '对不起,系统只允许上传小于 <strong>2M</strong> 的电子表格文件!';
             $results['is_success'] = false;
         } else {
             if (!empty($tmp_name)) {
                 $data = new \Spreadsheet_Excel_Reader();
                 $data->setOutputEncoding('UTF-8');
                 $cols = 6;
                 /* 每一行有6个单元格 */
                 $rows = array();
                 $data->read($tmp_name);
                 error_reporting(E_ALL ^ E_NOTICE);
                 // 对电子表格的每一行进行循环
                 // 检测到某个单元格不存在时,设定其为空值
                 foreach ($data->sheets[0]['cells'] as $row) {
                     for ($i = 1; $i <= $cols; $i++) {
                         if (!isset($row[$i])) {
                             $row[$i] = '';
                         }
                         // 计划完成时间
                         if ($i == 6 && !empty($row[$i])) {
                             $row[$i] = change_date_style($row[$i]);
                         }
                     }
                     $rows[] = $row;
                 }
                 //debug( $rows );
                 // 导入数据库
                 foreach ($rows as $row) {
                     $prod_num = $row[1];
                     $prod = Production::find_by_num($prod_num);
                     // 当这条零件记录所对应的生产指令 prod 存在时
                     if (!empty($prod)) {
                         $part = new \Model\Part();
                         $part->production_id = $prod->id;
                         $part->num = $row[2];
                         $part->name = $row[3];
                         $part->graphic_num = $row[4];
                         $part->count = $row[5];
                         $part->planned_completion_date = $row[6];
                         $part->user_id = $_SESSION['user_id'];
                         if ($part->is_valid()) {
                             $part->save();
                         } else {
                             // 如果某条导入失败
                             // 记录该条目的零件指令号,零件名称
                             // 以及具体的错误原因
                             $errors = array();
                             foreach ($part->errors as $error) {
                                 $errors[] = $error;
                             }
                             $results['failed_items'][] = array('num' => $part->num, 'name' => $part->name, 'errors' => $errors);
                         }
                     }
                 }
                 //debug( $results['failed_items'] );
                 $results['is_success'] = true;
             }
         }
     }
     echo json_encode($results);
 }
Пример #6
0
 function search_accurate_part($part_num = '')
 {
     $results = array();
     $app = get_app();
     // 指令号前缀转换
     if (preg_match("/^([a-zA-Z]{1,2})(.*)\$/", $part_num, $matches)) {
         if (count($matches) == 3) {
             $part_num = transform_num_prefix($matches[1], $matches[0]);
         }
     }
     $part = Part::find('first', array('conditions' => array(' num = ? ', $part_num)));
     // app view fetch
     if ($part) {
         $procs = $part->processes;
         $part_id = $part->id;
         $results['is_success'] = true;
         $results['html'] = $app->view->fetch('Processes/list.php', compact('procs', 'part_id'));
         $results['nodes'] = \Controller\Search::search_accurate_part_get_nodes($part);
     }
     echo json_encode($results);
 }
Пример #7
0
 function quick_list($part_num)
 {
     //精确查询
     $results = array();
     // 指令号前缀转换
     if (preg_match("/^([a-zA-Z]{1,2})(.*)\$/", $part_num, $matches)) {
         if (count($matches) == 3) {
             $part_num = transform_num_prefix($matches[1], $matches[0]);
         }
     }
     $part = Part::find('first', array('conditions' => array(' num = ? ', $part_num)));
     if ($part) {
         $templates = \Controller\Works::quick_list_get_html($part);
         // results
         $results['is_success'] = true;
         $results['nodes'] = \Controller\Works::quick_list_get_nodes($part);
         $results['html'] = $templates['html'];
         $results['cur_proc_id'] = $templates['cur_proc_id'];
     } else {
         $results['is_success'] = false;
     }
     echo json_encode($results);
 }
Пример #8
0
 function search_by_part_num($num)
 {
     $parts_group = Part::get_parts_group_with_filter($num);
     //debug( $parts_group );
     render_with_layout('misc.php', 'Urgent/list_group_by_date_or_part.php', compact('parts_group'));
 }
Пример #9
0
 function reset_done($proc_id)
 {
     if (!has_perm(2, 4)) {
         exit;
     }
     $proc = Process::find_by_id($proc_id);
     if ($proc) {
         $proc->count_done = 0;
         $proc->is_done = false;
         $proc->completion_date = '';
         $proc->save();
         // 更新上一级节点
         Part::update_count($proc->part);
         Production::update_count($proc->part->production);
         //
         echo 'success';
     }
 }
Пример #10
0
 function import($folder_id, $part_id)
 {
     $folder = Folder::find_by_id($folder_id);
     $part = Part::find_by_id($part_id);
     if ($folder && $part) {
         // 复制零件节点
         $file = File::create(array('folder_id' => $folder_id, 'name' => $part->name, 'graphic_num' => $part->graphic_num, 'image' => $part->image));
         // 添加零件工序节点
         foreach ($part->processes as $p) {
             $unit = Unit::create(array('file_id' => $file->id, 'priority' => $p->priority, 'name' => $p->name, 'content' => $p->content, 'price' => $p->price, 'image' => $p->image, 'takt_time' => $p->takt_time, 'preparation_time' => $p->preparation_time, 'remark' => $p->remark));
             $unit->save();
         }
         //
         $node = array('id' => $file->id, 'name' => $file->name . ' (' . count($file->units) . ')', 'type' => 'file', 'isParent' => count($file->units) ? true : false, 'icon' => get_path('/webroot/css/img/diy/3.png', true));
         echo json_encode($node);
     }
 }