basicMaterialRule($data, false); if(!$status) return [$status,$msg]; $update = $msg['data'][0]; BasicMaterial::where('id',$data['id'])->update($update); return [true,'保存成功!']; } public function basicMaterialAdd($data,$user){ list($status,$msg) = $this->basicMaterialRule($data); if(!$status) return [$status,$msg]; BasicMaterial::insert($msg['data']); return [true,'保存成功!']; } public function basicMaterialDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; BasicMaterial::where('id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function basicMaterialList($data){ $list = BasicMaterial::where('del_time',0) ->select('title','crt_time','upd_time','id','parent_id') ->orderBy('id','desc'); $list = $this->limit($list,'',$data); return [200,$list]; } public function basicMaterialRule($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 = BasicMaterial::where('title',$value['title']) ->where('del_time',0) ->exists(); $data['data'][$key]['crt_time'] = time(); }else{ if($this->isEmpty($data,'id')) return [false,'id不能为空!']; $bool = BasicMaterial::where('del_time',0) ->where('parent_id',$data['id']) ->exists(); if($bool) return [false,'物料分类下存在子集!']; $bool = BasicMaterial::where('title',$value['title']) ->where('id','<>',$data['id']) ->where('del_time',0) ->exists(); } if($bool) return [false,'名称不能重复']; } return [true,$data]; } public function MaterialEdit($data){ list($status,$msg) = $this->MaterialRule($data,false); if(!$status) return [$status,$msg]; DB::beginTransaction(); try{ $model = new Material(); $model = $model->where('id',$data['id'])->first(); $model->b_m_id = $data['b_m_id'] ; $model->title = $data['title'] ; $model->abbreviation_title = $data['abbreviation_title'] ; $model->unit = $data['unit'] ; $model->remark = $data['remark'] ?? '' ; $model->img_url = $data['img_url'] ?? '' ; $model->save(); $detail_insert = []; MaterialDetail::where('material_id',$model->id)->update([ 'del_time' => time() ]); if(isset($data['children'])){ foreach ($data['children'] as $v){ $detail_insert[] = [ 'material_id' => $model->id, 'price' => $v['price'], 'long' => $v['long'], 'width' => $v['width'], 'high' => $v['high'], 'code' => $v['code'], 'brand' => $v['brand'], ]; } } MaterialDetail::insert($detail_insert); DB::commit(); }catch (\Exception $e){ DB::rollBack(); return [false,$e->getMessage()]; } return [true,'保存成功!']; } public function MaterialAdd($data,$user){ list($status,$msg) = $this->MaterialRule($data); if(!$status) return [$status,$msg]; DB::beginTransaction(); try{ $model = new Material(); $model->b_m_id = $data['b_m_id'] ; $model->title = $data['title'] ; $model->abbreviation_title = $data['abbreviation_title'] ; $model->unit = $data['unit'] ; $model->remark = $data['remark'] ?? '' ; $model->img_url = $data['img_url'] ?? '' ; $model->save(); $detail_insert = []; if(isset($data['detail'])){ foreach ($data['detail'] as $v){ $detail_insert[] = [ 'material_id' => $model->id, 'price' => $v['price'], 'long' => $v['long'], 'width' => $v['width'], 'high' => $v['high'], 'code' => $v['code'], 'brand' => $v['brand'], ]; } } MaterialDetail::insert($detail_insert); DB::commit(); }catch (\Exception $e){ DB::rollBack(); return [false,$e->getMessage()]; } return [true,'保存成功!']; } public function MaterialDel($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; Material::where('id',$data['id'])->update([ 'del_time'=>time() ]); MaterialDetail::where('material_id',$data['id'])->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function MaterialList($data){ $model = Material::where('del_time',0) ->select('title','b_m_id','abbreviation_title','unit','crt_time','upd_time','id') ->orderBy('id','desc'); if(! empty($data['b_m_id'])) { $type = BasicMaterial::where('del_time',0) ->select('id','parent_id') ->get()->toArray(); $this->getAllIdsArr($type,0,'',$ids); $string = $this->getLongestStr($ids, $data['b_m_id']); $pos = strpos($string, (string)$data['b_m_id']); if ($pos !== false) $id = substr($string, $pos); $res_id = []; if(! empty($id)) $res_id = explode(',',$id); $model->whereIn("b_m_id", $res_id); } $list = $this->limit($model,'',$data); return [true,$list]; } public function MaterialDetail($data){ if($this->isEmpty($data,'id')) return [false,'ID必传']; $id = $data['id']; $detail = Material::where('del_time',0)->where('id',$id)->select('title','b_m_id','abbreviation_title','unit','crt_time','upd_time','id')->first(); if(empty($detail)) return [false,'数据不存在!']; $detail['detail'] = MaterialDetail::where('material_id',$id)->select('price','long','width','high','crt_time','upd_time','code','brand')->get()->toArray(); return [true,$detail]; } public function MaterialRule($data,$is_add = true){ if($this->isEmpty($data,'b_m_id')) return [false,'物料分类不存在!']; if($this->isEmpty($data,'title')) return [false,'物料名称不存在!']; if($this->isEmpty($data,'abbreviation_title')) return [false,'物料简称不存在!']; if($this->isEmpty($data,'unit')) return [false,'物料单位不存在!']; if($this->isEmpty($data,'id')) return [false,'ID必传']; $model = Material::whereRaw("title = '{$data['title']}' OR abbreviation_title = '{$data['abbreviation_title']}'") ->where('del_time',0); if(! $is_add){ if($this->isEmpty($data,'id')) return [false,'ID不能为空!']; $model->where('id','<>',$data['id']); } $bool = $model->exists(); if($bool) return [false,'名称或简称已经存在!']; return [true,'']; } }