Example #1
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;
 }
Example #2
0
function cal_assessment($work)
{
    $date1 = $work->check_date;
    $date2 = $work->process->planned_completion_date;
    $cycle = $work->process->cycle;
    if ($date1 && $date2 && strtotime($date1) > strtotime($date2) && $cycle) {
        // 急件考核率
        if ($work->process->part->production->item_month || $work->process->part->production->is_urgent) {
            $n = daysbetweendates($date1, $date2) / $cycle;
            if ($n < 50) {
                return intval($n) * 0.02;
            }
            return 1;
        } else {
            // 普通件考核率
            $n = 1 + intval(daysbetweendates($date1, $date2) / 30);
            if ($n < 50) {
                return round($n * 0.02, 2);
            }
            return 1;
        }
    }
    return 0;
}