bomRule($data); if(!$status) return [$status,$msg]; if($this->isEmpty($data,'id')) return [false,'ID必须!']; $id = $data['id']; $first = Bom::where('title',$data['title'])->where('id','<>',$id)->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; try{ DB::beginTransaction(); $model = Bom::where('id',$id)->first(); $model->title = $data['title']; $model->formula = $data['formula'] ?? ''; $model->unit = $data['unit']; $model->label = $data['label'] ?? 0; $model->label_type = $data['label_type'] ?? 0; $model->save(); $material_insert = []; $detail_insert = []; $bom_id = $model->id; BomDetail::where('bom_id',$bom_id)->update([ 'del_time' => time() ]); BomMaterial::where('bom_id',$bom_id)->update([ 'del_time' => time() ]); if(isset($data['detail'])){ foreach ($data['detail'] as $v){ $bom_detail = new BomDetail(); $bom_detail->bom_id = $bom_id; $bom_detail->sub_bom_id = $v['sub_bom_id']; $bom_detail->formula = $v['formula']??''; $bom_detail->num = $v['num']; $bom_detail->save(); $bom_detail_id = $bom_detail->id; $bom_detail_insert = []; foreach ($v['measure'] as $vv){ $bom_detail_insert[] = [ 'bom_id' => $bom_id, 'bom_detail_id' => $bom_detail_id, 'measure_id' => $vv['measure_id'], 'value' => $vv['value'], ]; } BomDetailMeasure::insert($bom_detail_insert); } BomDetail::insert($detail_insert); } if(isset($data['material'])){ foreach ($data['detail'] as $v){ $material_insert[] = [ 'bom_id' => $v['bom_id'], 'formula' => $v['formula'], 'num' => $v['bom_id'], 'material_id' => $v['material_id'], 'crt_time' => $v['bom_id'], 'upd_time' => $v['bom_id'], ]; } BomMaterial::insert($detail_insert); } DB::commit(); }catch (\Exception $e){ DB::rollBack(); return [false,$e->getMessage()]; } return [true,'保存成功!']; } public function add($data,$user){ // if($this->isEmpty($data,'title')) return [201,'名称不存在!']; list($status,$msg) = $this->bomRule($data); // if($this->isEmpty($data,'id')) return [false,'ID不存在!']; if(!$status) return [$status,$msg]; $first = Bom::where('title',$data['title'])->where('del_time',0)->first(); if(!empty($first))return [false,'名称已存在!']; try{ DB::beginTransaction(); $model = new Bom(); $model->title = $data['title']; $model->formula = $data['formula'] ?? ''; $model->unit = $data['unit']; $model->label = $data['label'] ?? 0; $model->label_type = $data['label_type'] ?? 0; $model->save(); $bom_id = $model->id; $material_insert = []; $detail_insert = []; if(isset($data['detail'])){ foreach ($data['detail'] as $v){ $detail_insert[] = [ 'bom_id' => $bom_id, 'sub_bom_id' => $v['sub_bom_id'], 'formula' => $v['bom_id'], 'num' => $v['bom_id'], 'crt_time' => $v['bom_id'], 'upd_time' => $v['bom_id'], ]; } BomDetail::insert($detail_insert); } if(isset($data['material'])){ foreach ($data['detail'] as $v){ $bom_detail = new BomDetail(); $bom_detail->bom_id = $bom_id; $bom_detail->sub_bom_id = $v['sub_bom_id']; $bom_detail->formula = $v['formula']??''; $bom_detail->num = $v['num']; $bom_detail->save(); $bom_detail_id = $bom_detail->id; $bom_detail = new BomDetail(); $bom_detail->bom_id = $bom_id; $bom_detail->sub_bom_id = $bom_detail_id; $bom_detail->formula = $v['formula']??''; $bom_detail->num = $v['num']; $bom_detail->save(); $bom_detail_id = $bom_detail->id; $bom_detail_insert = []; foreach ($v['measure'] as $vv){ $bom_detail_insert[] = [ 'bom_id' => $bom_id, 'bom_detail_id' => $bom_detail_id, 'measure_id' => $vv['measure_id'], 'value' => $vv['value'], ]; } BomDetailMeasure::insert($bom_detail_insert); } BomMaterial::insert($detail_insert); } DB::commit(); }catch (\Exception $e){ DB::rollBack(); return [false,$e->getMessage()]; } return [true,'保存成功!']; } public function del($data){ if($this->isEmpty($data,'id')) return [false,'ID必须!']; $id = $data['id']; Bom::where('id',$id)->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function bomList($data){ $id = $data['id']; $return = Bom::where('id',$id)->first()->toArray(); $return['bom_detail'] = Bom::from('bom_detail as bd') ->leftJoin('bom as b','b.id','bd.bom_id') ->where('bd.del_time',0) ->select('title','bd.*')->get()->toArray(); $return['material'] = Bom::from('bom_material as bm') ->leftJoin('material as m','m.id','bm.bom_id') ->where('bm.del_time',0) ->select('m.title','bm.*')->get()->toArray(); return [200,$return]; } public function bomRule($data){ if($this->isEmpty($data,'title')) return [false,'名称不存在!']; if($this->isEmpty($data,'unit')) return [false,'单位不存在!']; if($this->isEmpty($data,'label')) return [false,'芯片设置不存在!']; // if($this->isEmpty($data,'icon')) return [201,'d不存在!']; // if($this->isEmpty($data,'uri')) return [false,'路由不存在!']; return [true,'']; } }