scrappRule($data,false); if(!$status) return [$status,$msg]; $update = $msg['data'][0]; Scrapp::where('id',$data['id'])->update($update); return [true,'保存成功!']; } public function scrappAdd($data){ list($status,$msg) = $this->scrappRule($data); if(!$status) return [$status,$msg]; Scrapp::insert($msg['data']); return [true,'保存成功!']; } public function scrappDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Scrapp::whereIn('id',$data['id'])->update([ 'del_time' => time() ]); return [true,'删除成功']; } public function scrappList($data){ $model = Scrapp::where('del_time',0) ->select('*'); if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%'); $list = $this->limit($model,'',$data); return [200,$list]; } public function scrappRule($data,$is_add = true){ if($this->isEmpty($data,'data')) return [false,'数据不能为空!']; $title = array_column($data['data'],'title'); $title = array_map(function($val) { return $val !== null ? $val : 0; }, $title); $title_count = array_count_values($title); foreach ($title as $value){ if(empty($value)) return [false,'名称不能为空!']; if($title_count[$value] > 1) return [false,'名称不能重复']; } foreach ($data['data'] as $key => $value){ $data['data'][$key]['upd_time'] = time(); if($is_add){ $bool = Scrapp::whereRaw("title = '{$value['title']}'") ->where('del_time',0) ->exists(); $data['data'][$key]['crt_time'] = time(); }else{ if($this->isEmpty($data,'id')) return [false,'id不能为空!']; $bool = Scrapp::whereRaw("title = '{$value['title']}'") ->where('id','<>',$data['id']) ->where('del_time',0) ->exists(); } if($bool) return [false,'名称不能重复']; } return [true,$data]; } //质检单 public function zjList($data, $user){ $process = Process::where('del_time',0) ->where('is_need_remain',1) ->pluck('id') ->toArray(); $model = ScrappCount::where('del_time',0) ->whereIn('process_id', $process) ->select('*') ->orderBy('order_number','desc'); if(! empty($data['sq'])) $model->where('result',ReportWorking::type_two); if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%'); if(! empty($data['dispatch_no'])) { $dispatch_id = DispatchSub::where('del_time',0) ->where('dispatch_no', 'LIKE', '%'.$data['dispatch_no'].'%') ->select('id') ->get()->toArray(); $dispatch_id = array_column($dispatch_id,'id'); $model->whereIn('dispatch_sub_id', $dispatch_id); } if(! empty($data['sale_order_number'])) { $sales_id = SaleOrdersProduct::where('del_time',0) ->where('out_order_no', 'LIKE', '%'.$data['sale_order_number'].'%') ->select('id') ->get()->toArray(); $sales_id = array_column($sales_id,'id'); $model->whereIn('sale_orders_product_id', $sales_id); } if(! empty($data['team_id'])) $model->where('team_id', $data['team_id']); if(! empty($data['team_man_id'])) { $team_id = EmployeeTeamPermission::where('employee_id',$data['team_man_id']) ->select('team_id') ->get()->toArray(); $model->whereIn('team_id', array_unique(array_column($team_id,'team_id'))); } if(! empty($data['finished_id'])) $model->where('finished_id', $data['finished_id']); if(! empty($data['equipment_id'])) $model->where('equipment_id', $data['equipment_id']); if(! empty($data['process_id'])) $model->where('process_id', $data['process_id']); $list = $this->limit($model,'',$data); $list = $this->fillZjList($list, $data, $user); return [true,$list]; } public function fillZjList($data, $erg, $user){ if(empty($data['data'])) return $data; $team_id = array_unique(array_column($data['data'],'team_id')); $team_maps = Team::whereIn('id',$team_id) ->pluck('title','id') ->toArray(); $team_man = EmployeeTeamPermission::whereIn('team_id',$team_id) ->select('team_id','employee_id') ->get()->toArray(); $emp_map = Employee::whereIn('id',array_merge_recursive(array_column($data['data'],'finished_id'),array_column($team_man,'employee_id'))) ->pluck('emp_name','id') ->toArray(); $team_man_maps = []; foreach ($team_man as $value){ $t = $emp_map[$value['employee_id']] ?? ""; if(empty($t)) continue; if(isset($team_man_maps[$value['team_id']])){ $team_man_maps[$value['team_id']] .= ',' . $t; }else{ $team_man_maps[$value['team_id']] = $t; } } $equipment_map = Equipment::whereIn('id',array_column($data['data'],'equipment_id')) ->pluck('title','id') ->toArray(); $process_map = Process::whereIn('id',array_column($data['data'],'process_id')) ->pluck('title','id') ->toArray(); $sales_number = SaleOrdersProduct::whereIn('id',array_unique(array_column($data['data'],'sale_orders_product_id'))) ->pluck('out_order_no','id') ->toArray(); $dispatch_no = DispatchSub::whereIn('id',array_column($data['data'], 'dispatch_sub_id')) ->pluck('dispatch_no','id') ->toArray(); $return = []; if(! empty($erg['material'])){ $product_no = array_unique(array_column($data['data'],'product_no')); $service = new FyyOrderService(); list($status, $msg) = $service->getProductDataFromSqlServer(['product_no' => $product_no], $user); if($status) $return = $msg; } foreach ($data['data'] as $key => $value){ $data['data'][$key]['material'] = $return[$value['product_no']] ?? []; $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d", $value['crt_time']) : ''; $data['data'][$key]['finished_title'] = $emp_map[$value['finished_id']] ?? ''; $data['data'][$key]['team_title'] = $team_maps[$value['team_id']] ?? ''; $data['data'][$key]['team_man'] = $team_man_maps[$value['team_id']] ?? ''; $data['data'][$key]['equipment_title'] = $equipment_map[$value['equipment_id']] ?? ''; $data['data'][$key]['process_title'] = $process_map[$value['process_id']] ?? ''; $data['data'][$key]['sale_order_number'] = $sales_number[$value['sale_orders_product_id']] ?? ""; $dispatch_t = $dispatch_no[$value['dispatch_sub_id']] ?? ""; $data['data'][$key]['dispatch_no'] = $dispatch_t; // $data['data'][$key]['crt_time'] = date("Y-m-d",strtotime(substr($dispatch_t,0,8))); } return $data; } public function zjDetail($data, $user){ if(empty($data['order_number'])) return [false, '请选择质检单数据']; $result = ScrappCount::where('del_time',0) ->where('order_number', $data['order_number']) ->get()->toArray(); if(empty($result)) return [false, '质检单不存在或已被删除']; $first = $result[0] ?? []; $order['order_number'] = $first['order_number']; $order['process_title'] = Process::where('id',$first['process_id'])->value("title"); $order['team_title'] = Team::where('id',$first['team_id'])->value("title"); $order['finished_title'] = Employee::where('id',$first['finished_id'])->value("emp_name"); $order['equipment_title'] = Equipment::where('id',$first['equipment_id'])->value("title"); $dispatch = DispatchSub::where('id',$first['dispatch_sub_id'])->first(); $dispatch = empty($dispatch) ? [] : $dispatch->toArray(); $order['dispatch_no'] = $dispatch['dispatch_no'] ?? ""; $order['crt_time'] = date("Y-m-d", $first['crt_time']); $team_man = EmployeeTeamPermission::where('team_id',$first['team_id']) ->select('team_id','employee_id') ->get()->toArray(); $emp_map = Employee::whereIn('id',array_column($team_man,'employee_id')) ->pluck('emp_name','id') ->toArray(); $team_man_maps = ""; foreach ($team_man as $value){ $t = $emp_map[$value['employee_id']] ?? ""; if(empty($t)) continue; if(! empty($team_man_maps)){ $team_man_maps .= ',' . $t; }else{ $team_man_maps = $t; } } $order['team_man'] = $team_man_maps; $scrapp_quantity = array_sum(array_column($result, 'scrapp_num')); // 不良品数量 $detail = [ 'product_no' => $first['product_no'], 'product_title' => $first['product_title'], 'product_size' => $first['product_size'], 'product_unit' => $first['product_unit'], 'technology_name' => $first['technology_name'], 'production_quantity' => $dispatch['production_quantity'] ?? 0, // 生产数量 'dispatch_quantity' => $dispatch['dispatch_quantity'] ?? 0, // 派工数量 'quantity' => $first['quantity'], // 完工数量 'scrapp_quantity' => $scrapp_quantity, // 不良品数量 'zj_quantity' => $first['quantity'] + $scrapp_quantity, // 质检数量 'hg_quantity' => $first['quantity'], // 合格数量 ]; $order['detail'][] = $detail; return [true, $order]; } //不良品 public function blpList($data, $user){ $model = ScrappCount::where('del_time',0) ->where('scrapp_num','>',0) ->select('id','dispatch_sub_id','crt_time','team_id','finished_id','equipment_id','order_number','process_id','sale_orders_product_id') ->orderBy('dispatch_sub_id','desc') ->groupBy('order_number'); if(! empty($data['order_number'])) $model->where('order_number', 'LIKE', '%'.$data['order_number'].'%'); if(! empty($data['dispatch_no'])) { $dispatch_id = DispatchSub::where('del_time',0) ->where('dispatch_no', 'LIKE', '%'.$data['dispatch_no'].'%') ->select('id') ->get()->toArray(); $dispatch_id = array_column($dispatch_id,'id'); $model->whereIn('dispatch_sub_id', $dispatch_id); } if(! empty($data['sale_order_number'])) { $sales_id = SaleOrdersProduct::where('del_time',0) ->where('out_order_no', 'LIKE', '%'.$data['sale_order_number'].'%') ->select('id') ->get()->toArray(); $sales_id = array_column($sales_id,'id'); $model->whereIn('sale_orders_product_id', $sales_id); } if(! empty($data['team_id'])) $model->where('team_id', $data['team_id']); if(! empty($data['finished_id'])) $model->where('finished_id', $data['finished_id']); if(! empty($data['team_man_id'])) { $team_id = EmployeeTeamPermission::where('employee_id',$data['team_man_id']) ->select('team_id') ->get()->toArray(); $model->whereIn('team_id', array_unique(array_column($team_id,'team_id'))); } if(! empty($data['equipment_id'])) $model->where('equipment_id', $data['equipment_id']); if(! empty($data['process_id'])) $model->where('process_id', $data['process_id']); $list = $this->limit($model,'',$data); $list = $this->fillBLPList($list); return [true,$list]; } public function fillBLPList($data){ if(empty($data['data'])) return $data; $team_id = array_unique(array_column($data['data'],'team_id')); $team_maps = Team::whereIn('id',$team_id) ->pluck('title','id') ->toArray(); $team_man = EmployeeTeamPermission::whereIn('team_id',$team_id) ->select('team_id','employee_id') ->get()->toArray(); $emp_map = Employee::whereIn('id',array_merge_recursive(array_column($data['data'],'finished_id'),array_column($team_man,'employee_id'))) ->pluck('emp_name','id') ->toArray(); $team_man_maps = []; foreach ($team_man as $value){ $t = $emp_map[$value['employee_id']] ?? ""; if(empty($t)) continue; if(isset($team_man_maps[$value['team_id']])){ $team_man_maps[$value['team_id']] .= ',' . $t; }else{ $team_man_maps[$value['team_id']] = $t; } } $equipment_map = Equipment::whereIn('id',array_column($data['data'],'equipment_id')) ->pluck('title','id') ->toArray(); $process_map = Process::whereIn('id',array_column($data['data'],'process_id')) ->pluck('title','id') ->toArray(); $sales_number = SaleOrdersProduct::whereIn('id',array_unique(array_column($data['data'],'sale_orders_product_id'))) ->pluck('out_order_no','id') ->toArray(); $dispatch_no = DispatchSub::whereIn('id',array_column($data['data'], 'dispatch_sub_id')) ->pluck('dispatch_no','id') ->toArray(); foreach ($data['data'] as $key => $value){ $data['data'][$key]['crt_time'] = $value['crt_time'] ? date("Y-m-d", $value['crt_time']) : ''; $data['data'][$key]['finished_title'] = $emp_map[$value['finished_id']] ?? ''; $data['data'][$key]['team_title'] = $team_maps[$value['team_id']] ?? ''; $data['data'][$key]['team_man'] = $team_man_maps[$value['team_id']] ?? ''; $data['data'][$key]['equipment_title'] = $equipment_map[$value['equipment_id']] ?? ''; $data['data'][$key]['process_title'] = $process_map[$value['process_id']] ?? ''; $data['data'][$key]['sale_order_number'] = $sales_number[$value['sale_orders_product_id']] ?? ""; $dispatch_t = $dispatch_no[$value['dispatch_sub_id']] ?? ""; $data['data'][$key]['dispatch_no'] = $dispatch_t; // $data['data'][$key]['crt_time'] = date("Y-m-d",strtotime(substr($dispatch_t,0,8))); } return $data; } public function blpDetail($data, $user){ if(empty($data['order_number'])) return [false, '请选择质检单数据']; $result = ScrappCount::where('del_time',0) ->where('order_number', $data['order_number']) ->get()->toArray(); if(empty($result)) return [false, '不良品单不存在或已被删除']; $first = $result[0] ?? []; $order['order_number'] = $first['order_number']; $order['process_title'] = Process::where('id',$first['process_id'])->value("title"); $order['team_title'] = Team::where('id',$first['team_id'])->value("title"); $order['finished_title'] = Employee::where('id',$first['finished_id'])->value("emp_name"); $order['equipment_title'] = Equipment::where('id',$first['equipment_id'])->value("title"); $dispatch = DispatchSub::where('id',$first['dispatch_sub_id'])->first(); $dispatch = empty($dispatch) ? [] : $dispatch->toArray(); $order['dispatch_no'] = $dispatch['dispatch_no'] ?? ""; $order['crt_time'] = date("Y-m-d",$first['crt_time']); $team_man = EmployeeTeamPermission::where('team_id',$first['team_id']) ->select('team_id','employee_id') ->get()->toArray(); $emp_map = Employee::whereIn('id',array_column($team_man,'employee_id')) ->pluck('emp_name','id') ->toArray(); $team_man_maps = ""; foreach ($team_man as $value){ $t = $emp_map[$value['employee_id']] ?? ""; if(empty($t)) continue; if(! empty($team_man_maps)){ $team_man_maps .= ',' . $t; }else{ $team_man_maps = $t; } } $order['team_man'] = $team_man_maps; $scrapp = Scrapp::whereIn('id', array_unique(array_column($result,'scrapp_id'))) ->pluck('title','id') ->toArray(); $detail = []; foreach ($result as $value){ $tmp = [ 'product_no' => $first['product_no'], 'product_title' => $first['product_title'], 'product_size' => $first['product_size'], 'product_unit' => $first['product_unit'], 'technology_name' => $first['technology_name'], 'scrapp_quantity' => $value['scrapp_num'], // 不良品数量 'scrapp_title' => $scrapp[$value['scrapp_id']] ?? "", // 不良品原因 ]; $detail[] = $tmp; } $order['detail'] = $detail; return [true, $order]; } }