Beispiel #1
0
 function index($file_id)
 {
     $_units = array();
     $units = Unit::find_all_by_file_id($file_id, array('order' => 'priority asc'));
     foreach ($units as $unit) {
         $_units[] = array('id' => $unit->id, 'priority' => $unit->priority, 'name' => $unit->priority . '# ' . get_proc_name($unit->name), 'type' => 'unit', 'isParent' => false, 'icon' => get_path('/webroot/css/img/diy/4.png', true));
     }
     echo json_encode($_units);
 }
Beispiel #2
0
 function get_works_detail($works, $switch = 'default')
 {
     $results = array();
     // 按员工分组现场工时
     foreach ($works as $work) {
         if ($switch == 'default') {
             $work_hours = get_work_hours($work);
         }
         if ($switch == 'unchecked') {
             $work_hours = get_uncheck_work_hours($work);
         }
         if ($switch == 'unsubmitted') {
             $work_hours = get_unsubmitted_work_hours($work);
         }
         // 考核率
         $assessment_rate = cal_assessment($work);
         $assessment_work_hours = round($work_hours * (1 - $assessment_rate), 2);
         $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['works'][] = array('overdue_days' => daysbetweendates($work->check_date, $work->process->planned_completion_date), 'work_count' => $work->count, 'work_count_valid' => $work->count_valid, 'work_count_concession' => $work->count_concession, 'work_count_invalid' => $work->count_invalid, 'work_count_check' => $work->count_check, 'work_ticket' => $work->ticket, 'work_hours' => $work_hours, 'work_check_date' => $work->check_date ? date('Y/m/d', strtotime($work->check_date)) : '', 'work_completion_date' => $work->completion_date ? date('Y/m/d', strtotime($work->completion_date)) : '', 'work_remark' => get_proc_plan_source($work->process->part->production), 'assessment_rate' => $assessment_rate, 'assessment_work_hours' => $assessment_work_hours, 'proc_priority' => $work->process->priority, 'proc_name' => get_proc_name($work->process->name), 'proc_takt_time' => $work->process->takt_time ? $work->process->takt_time : 0, 'proc_preparation_time' => $work->process->preparation_time ? $work->process->preparation_time : 0, 'proc_production_date' => $work->process->production_date ? date('Y/m/d', strtotime($work->process->production_date)) : '', 'proc_planned_completion_date' => $work->process->planned_completion_date ? date('Y/m/d', strtotime($work->process->planned_completion_date)) : '', 'part_num' => $work->process->part->num, 'part_name' => $work->process->part->name, 'part_return_date' => $work->process->part->return_date ? date('Y/m/d', strtotime($work->process->part->return_date)) : '', 'prod_type' => get_prod_type($work->process->part->production->type), 'prod_graphic_src' => get_prod_graphic_src($work->process->part->production->graphic_src));
         // 累加同种工序现场工时小计
         if (!isset($results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['work_hours_sum'])) {
             $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['work_hours_sum'] = 0;
         }
         $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['work_hours_sum'] += $work_hours;
         // 累加同种工序考核现场工时小计
         if (!isset($results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['a_work_hours_sum'])) {
             $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['a_work_hours_sum'] = 0;
         }
         $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['works'][$work->process->name]['a_work_hours_sum'] += $assessment_work_hours;
         // 累加所有工时小计
         if (!isset($results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['work_hours_sum'])) {
             $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['work_hours_sum'] = 0;
         }
         $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['work_hours_sum'] += $work_hours;
         // 累加所有考核工时小计
         if (!isset($results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['a_work_hours_sum'])) {
             $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['a_work_hours_sum'] = 0;
         }
         $results[$work->staff->group_id][$work->staff->identifier . '_' . $work->staff->name]['a_work_hours_sum'] += $assessment_work_hours;
     }
     return $results;
 }
Beispiel #3
0
 function add($parent_file_id)
 {
     $app = get_app();
     $post = $app->request()->post();
     unset($post['_wysihtml5_mode']);
     unset($post['unit_id']);
     $post['file_id'] = $parent_file_id;
     // add
     $unit = Unit::create($post);
     // errors
     if (!$unit->is_valid()) {
         foreach ($unit->errors as $error) {
             $errors[] = $error;
         }
         $results['errors'] = $errors;
         $results['is_success'] = false;
     } else {
         $unit->save();
         $results['is_success'] = true;
         // create newNode
         $results['newNode'] = array('id' => $unit->id, 'file_id' => $unit->file_id, 'priority' => $unit->priority, 'name_orig' => $unit->name, 'name' => $unit->priority . '# ' . get_proc_name($unit->name), '_name' => get_proc_name($unit->name), 'content' => $unit->content, 'price' => $unit->price, 'takt_time' => $unit->takt_time ? $unit->takt_time : 0, 'preparation_time' => $unit->preparation_time ? $unit->preparation_time : 0, 'remark' => $unit->remark, 'icon' => get_path('/webroot/css/img/diy/4.png', true));
     }
     echo json_encode($results);
 }
Beispiel #4
0
					<td style="display:none;" outsourcing="<?php 
    echo $proc->is_outsourcing;
    ?>
"><?php 
    echo $proc->id;
    ?>
</td>
					<td><?php 
    echo $proc->priority;
    ?>
</td>
					<td name="<?php 
    echo $proc->name;
    ?>
" style="width: 60px;"><?php 
    echo get_proc_name($proc->name);
    ?>
</td>
					<td class="fixed-250"><?php 
    echo $proc->content;
    ?>
</td>
					<td><?php 
    echo $proc->takt_time;
    ?>
</td>
					<td><?php 
    echo $proc->preparation_time;
    ?>
</td>
					<td><?php 
Beispiel #5
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 #6
0
					</tr>
				</thead>
				<tbody>
					<?php 
foreach ($procs as $proc) {
    ?>
						<tr id="<?php 
    echo $proc['id'];
    ?>
">
							<td><span class="colorBlock" style="background-color: <?php 
    echo $proc['color'];
    ?>
;"></span></td>
							<td><?php 
    echo get_proc_name($proc['id']);
    ?>
</td>
							<?php 
    foreach ($proc['values'] as $value) {
        ?>
								<td><?php 
        echo $value;
        ?>
</td>
							<?php 
    }
    ?>
							<td><input type="checkbox"></td>
						</tr>
					<?php 
Beispiel #7
0
 function item_month_plan($date, $page = 1)
 {
     // 2014-06
     $limit = get_config('prod_per_page');
     $offset = $page - 1;
     $app = get_app();
     //GET
     if ($app->request()->isGet()) {
         $grps = array();
         $date = $date . '-01';
         $total_time = 0;
         $prods = Production::find('all', array('conditions' => array(' is_done = 0 AND DATE(item_month) = ? ', $date)));
         foreach ($prods as $prod) {
             $grps[$prod->id] = array('prod_num' => $prod->num, 'prod_time' => 0, 'parts' => array());
             $parts = $prod->parts;
             foreach ($parts as $part) {
                 $grps[$prod->id]['parts'][$part->id] = array('part_num' => $part->num, 'part_name' => $part->name, 'procs' => array());
                 $procs = $part->processes;
                 foreach ($procs as $proc) {
                     $proc_time = get_proc_time($proc);
                     $grps[$prod->id]['parts'][$part->id]['procs'][$proc->id] = array('proc_priority' => $proc->priority, 'proc_name' => get_proc_name($proc->name), 'proc_count' => $proc->count, 'proc_takt_time' => $proc->takt_time, 'proc_preparation_time' => $proc->preparation_time, 'proc_time' => $proc_time, 'proc_planned_completion_date' => $proc->planned_completion_date ? date('Y-m-d', strtotime($proc->planned_completion_date)) : '', 'proc_production_date' => $proc->production_date ? date('Y-m-d', strtotime($proc->production_date)) : '', 'proc_completion_date' => $proc->completion_date ? date('Y-m-d', strtotime($proc->completion_date)) : '');
                     $total_time += $proc_time;
                     $grps[$prod->id]['prod_time'] += $proc_time;
                 }
             }
         }
         render_with_layout('misc.php', 'Misc/item_month_plan.php', compact('grps', 'date', 'total_time'));
     }
     //POST
     if ($app->request()->isPost()) {
         $proc = Process::find_by_id($app->request()->post('proc_id'));
         if ($proc) {
             $proc->planned_completion_date = $app->request()->post('planned_completion_date');
             $proc->production_date = $app->request()->post('production_date');
             $proc->save();
         }
     }
 }
Beispiel #8
0
<div class="container" style="font-size: 12px;">
<?php 
foreach ($results as $proc_name_id => $proc_group) {
    ?>
	<div class="panel panel-default">
		<div class="panel-heading"><?php 
    echo get_proc_name($proc_name_id);
    ?>
</div>
		<table class="table table-bordered">
			<thead>
				<th class="fixed-150">零件编号</th>
				<th>零件名称</th>
				<th class="fixed-50">数量</th>
				<th class="fixed-70">工序序号</th>
				<th class="fixed-100">计划完工日期</th>
				<th class="fixed-100">投产日期</th>
				<th class="fixed-70">完工日期</th>
			</thead>
			<tbody>
				<?php 
    foreach ($proc_group as $part) {
        //debug( $part );
        ?>
							<tr>
								<td rowspan="<?php 
        echo count($part['procs']);
        ?>
"><?php 
        echo $part['part_num'];
        ?>
Beispiel #9
0
 function import_from_lib($part_id, $file_id)
 {
     $file = File::find_by_id($file_id);
     $part = Part::find_by_id($part_id);
     if (empty($file)) {
         $results['is_success'] = false;
         $results['error'] = '对不起,工艺库中找不到您所指定的零件!';
     } else {
         if (!count($file->units)) {
             $results['is_success'] = false;
             $results['error'] = '对不起,您所指定的零件不包含任何工序!';
         }
         if (count($part->processes)) {
             $results['is_success'] = false;
             $results['error'] = '对不起,只能为没有制定任何工序的零件节点从工艺库中导入模板!';
         }
         if (!isset($results['error'])) {
             $nodes = array();
             $units = Unit::find_all_by_file_id($file->id, array('order' => 'priority asc'));
             // import lib parts model's procs
             foreach ($units as $unit) {
                 // create db node
                 $item = array();
                 $item['priority'] = $unit->priority;
                 $item['name'] = $unit->name;
                 $item['content'] = $unit->content;
                 $item['part_id'] = $part->id;
                 $item['takt_time'] = '';
                 //$unit->takt_time;
                 $item['preparation_time'] = '';
                 // $unit->preparation_time;
                 $item['price'] = $unit->price;
                 $item['production_date'] = '';
                 $item['planned_completion_date'] = '';
                 $item['remark'] = $unit->remark;
                 $item['is_done'] = 0;
                 $item['count'] = $part->count;
                 $item['count_done'] = 0;
                 // save db node
                 $_proc = Process::create($item);
                 $_proc->save();
                 // create ztree node
                 $node = array();
                 $node['id'] = $_proc->id;
                 $node['priority'] = $_proc->priority;
                 $node['name'] = $_proc->priority . '# ' . get_proc_name($_proc->name) . ' (0)';
                 $node['isParent'] = false;
                 $node['type'] = 'proc';
                 $node['moveFirst'] = false;
                 $node['icon'] = get_path('/webroot/css/img/diy/4.png', true);
                 $nodes[] = $node;
             }
             $results['is_success'] = true;
             $results['nodes'] = $nodes;
         }
     }
     echo json_encode($results);
 }
Beispiel #10
0
<div class="row">
	<div class="col-xs-12">
		<div class="panel panel-default">
			<div class="panel-heading">工序信息</div>
			<table class="table table-striped">
				<thead>
					<tr>
						<td class="fixed-200">标签</td>
						<td>值</td>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td>工序名称</td>
						<td><?php 
echo get_proc_name($unit->name);
?>
</td>
					</tr>
					<tr>
						<td>工艺内容</td>
						<td><?php 
echo $unit->content;
?>
</td>
					</tr>
					<tr>
						<td>单件工时</td>
						<td><?php 
echo $unit->takt_time;
?>
Beispiel #11
0
 function search_accurate_part_get_nodes($part)
 {
     $nodes = array();
     $children_part = array();
     $children_procs = array();
     $prod = $part->production;
     $procs = $part->processes;
     // procs
     foreach ($procs as $proc) {
         $children_procs[] = array('id' => $proc->id, 'name' => $proc->priority . '# ' . get_proc_name($proc->name) . ' (' . count($proc->works) . ')', 'font' => array('color' => $proc->is_done ? 'green' : 'black'), 'isParent' => count($proc->works) == 0 ? false : true, 'priority' => $proc->priority, 'type' => 'proc', 'children' => array(), 'icon' => get_path('/webroot/css/img/diy/4.png', true));
     }
     // part
     $children_part[] = array('id' => $part->id, 'name' => $part->num . ' ' . $part->name . ' (' . count($part->processes) . ')', 'font' => array('color' => $part->is_done ? 'green' : 'black'), 'isParent' => count($part->processes) == 0 ? false : true, 'type' => 'part', 'children' => $children_procs, 'icon' => $part->return_date ? get_path('/webroot/css/img/diy/3_return.jpg', true) : get_path('/webroot/css/img/diy/3.png', true));
     $nodes[] = array('id' => $prod->id, 'name' => $prod->num . ' ' . $prod->name . ' (' . count($prod->parts) . ')', 'font' => array('color' => $prod->is_done ? 'green' : 'black'), 'isParent' => count($prod->parts) == 0 ? false : true, 'type' => 'prod', 'children' => $children_part, 'icon' => $prod->is_urgent && !$prod->is_done ? get_path('/webroot/css/img/diy/2_urgent.jpg', true) : get_path('/webroot/css/img/diy/2.png', true));
     return $nodes;
 }
Beispiel #12
0
function linux_ps()
{
    if (($dp = opendir("/proc")) == false) {
        echo "open /proc failed.\n";
        return -1;
    }
    echo "open /proc ok.\n";
    while (($file_name = readdir($dp)) != false) {
        if ($file_name == "." || $file_name == "..") {
            continue;
        }
        if (ctype_digit($file_name) == false) {
            continue;
        }
        $dir_path = "/proc/{$file_name}/status";
        $proc_name = get_proc_name($dir_path);
        $dir_path = "/proc/{$file_name}/cmdline";
        $proc_cmd = get_proc_cmd($dir_path);
        echo $file_name . "\t\t" . $proc_name . " " . $proc_cmd . "\n";
    }
    closedir($dp);
    return 0;
}
                echo count($part['procs']);
                ?>
"><?php 
                echo $part['part_name'];
                ?>
</td>
					<?php 
            }
            ?>

					<td><?php 
            echo $proc['proc_priority'];
            ?>
</td>
					<td><?php 
            echo get_proc_name($proc['proc_name']);
            ?>
</td>
					<td></td>
					<td><?php 
            echo $proc['proc_count'];
            ?>
</td>
					<td><?php 
            echo $proc['proc_count_done'];
            ?>
</td>
					<td><?php 
            echo $proc['proc_takt_time'];
            ?>
</td>
Beispiel #14
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;
 }
Beispiel #15
0
$app->map('/lib/images/upload/file/:file_id', 'check_logged', array('\\Controller\\Images', 'upload_for_file'))->via('GET', 'POST');
// Unit 工序
$app->get('/lib/units/:parent_file_id', 'check_logged', array('\\Controller\\Units', 'index'));
$app->post('/lib/units/add/:parent_file_id', 'check_logged', array('\\Controller\\Units', 'add'));
$app->post('/lib/units/edit/:unit_id', 'check_logged', array('\\Controller\\Units', 'edit'));
$app->get('/lib/units/del/:unit_id', 'check_logged', array('\\Controller\\Units', 'del'));
$app->get('/lib/units/view/:unit_id', 'check_logged', array('\\Controller\\Units', 'view'));
$app->map('/lib/images/upload/unit/:unit_id', 'check_logged', array('\\Controller\\Images', 'upload_for_unit'))->via('GET', 'POST');
// Search
$app->get('/lib/search/files/name/:file_name', 'check_logged', array('\\Controller\\Files', 'search_by_name'));
$app->get('/lib/search/files/grpahic_num/:grpahic_num', 'check_logged', array('\\Controller\\Files', 'search_by_graphic_num'));
//$app->get('/lib/files/:file_id','check_logged',array());
$app->get('/export', function () {
    $parts = array();
    $works = \Model\Work::find('all', array('conditions' => " DATE_FORMAT(  `completion_date` ,  '%Y-%m-%d' ) < DATE_FORMAT(  `check_date` ,  '%Y-%m-%d' )  "));
    foreach ($works as $work) {
        if (!isset($parts[$work->process->part->id])) {
            $parts[$work->process->part->id] = array('零件名称' => $work->process->part->name, '零件编号' => $work->process->part->num, 'procs' => array());
        }
        if (!isset($parts[$work->process->part->id]['procs'][$work->process->id])) {
            $parts[$work->process->part->id]['procs'][$work->process->id] = array('工序序号' => $work->process->priority, '工序名称' => get_proc_name($work->process->name), 'works' => array());
        }
        $parts[$work->process->part->id]['procs'][$work->process->id]['works'][] = array('操作者' => $work->staff->name);
    }
    debug($parts);
});
//
$app->get('/proc/auto_cal_planned_completion_date_form', 'check_logged', function () {
    render_with_layout('misc.php', 'Misc/auto_cal_proc_planned_completion_date_form.php');
});
$app->get('/proc/auto_cal_planned_completion_date/:start_date/:end_date', 'check_logged', array('\\Controller\\Misc', 'auto_cal_proc_planned_completion_date'));
Beispiel #16
0
 function copy_procs($target_id, $ids)
 {
     $ids = explode(',', $ids);
     $part = Part::find_by_id($target_id);
     $procs = Process::find('all', array('conditions' => array('id IN (?)', $ids)));
     $nodes = array();
     foreach ($procs as $proc) {
         // 取值
         $item = array();
         $item['priority'] = 900 + $proc->priority;
         $item['name'] = $proc->name;
         $item['content'] = $proc->content;
         $item['part_id'] = $target_id;
         $item['takt_time'] = '';
         $item['preparation_time'] = '';
         $item['price'] = '';
         $item['production_date'] = '';
         //date('Y-m-d');
         $item['planned_completion_date'] = '';
         //date('Y-m-d');
         $item['remark'] = '';
         $item['is_done'] = 0;
         $item['count'] = 0;
         //$part->count;
         $item['count_done'] = 0;
         $item['user_id'] = $_SESSION['user_id'];
         // 保存节点
         $_proc = Process::create($item);
         $_proc->save();
         // 创建 ztree 节点
         $node = array();
         $node['id'] = $_proc->id;
         $node['priority'] = $_proc->priority;
         $node['name'] = $_proc->priority . '# ' . get_proc_name($_proc->name) . ' (0)';
         $node['isParent'] = false;
         $node['type'] = 'proc';
         $node['moveFirst'] = false;
         $node['icon'] = get_path('/webroot/css/img/diy/4.png', true);
         $node['is_outsourcing'] = $proc->is_outsourcing;
         // 将新增节点添加进 $nodes
         $nodes[] = $node;
     }
     echo json_encode($nodes);
 }