orderRule($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['material'] as $v){ $material_insert[] = [ 'bom_id' => $id, 'formula' => $v['formula']??'', 'num' => $v['num'], 'material_id' => $v['id'], 'crt_time' => time(), 'upd_time' => time(), ]; } BomMaterial::insert($material_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->orderRule($data); // if($this->isEmpty($data,'id')) return [false,'ID不存在!']; if(!$status) return [$status,$msg]; // $first = Orders::where('out_order_no',$data['out_order_no'])->where('del_time',0)->first(); // if(!empty($first))return [false,'单号已存在!']; $orderService = new OrderHook(); try{ DB::beginTransaction(); $bom_list = list($status,$order_no) = $orderService->orderSave($data); foreach ($data['house'] as $v){ $v['order_no'] = $order_no; list($status,$house_id) = $orderService->orderHouseSave($v); // var_dump($v); foreach ($v['product'] as $product){ $product['order_no'] = $order_no; $product['house_id'] = $house_id; list($status,$order_product_id) = $orderService->orderProductSave($product); $product['house_id'] = $house_id; $product['order_no'] = $order_no; $product['o_p_id'] = $order_product_id; $orderService->orderProductBomSave($product); } } DB::commit(); }catch (\Exception $e){ DB::rollBack(); return [false,$e->getLine().':'.$e->getMessage()]; } return [true,'保存成功!']; } public function del($data){ if($this->isEmpty($data,'order_no')) return [false,'order_no必须!']; $id = $data['order_no']; Orders::where('order_no',$id)->update([ 'del_time'=>time() ]); return [true,'删除成功']; } public function orderDetail($data){ $order_no = $data['order_no']; $order = Orders::where('order_no',$order_no)->first()->toArray(); $house_list = OrdersHouse::where('order_no',$order_no)->select('*')->get()->toArray(); $order_product_list = OrdersProduct::where('order_no',$order_no)->select('*','product_title as title')->get()->toArray(); $order_product_bom_list = OrdersProductBom::where('order_no',$order_no)->select('*','bom_title as title')->get()->toArray(); $order_product_key_list = []; foreach ($order_product_list as $v){ $order_product_key_list[$v['house_id']][] = $v; } $order_product_bom_key_list = []; foreach ($order_product_bom_list as $v){ $order_product_bom_key_list[$v['o_p_id']][] = $v; } foreach ($house_list as $v){ if(isset($order_product_key_list[$v['id']])){ foreach ($order_product_key_list[$v['id']] as &$vv){ if(isset($order_product_bom_key_list[$vv['id']])){ $vv['bom'] = $order_product_bom_key_list[$vv['id']]; } } $v['product'] = $order_product_key_list[$v['id']]; } $order['house'][] = $v; } // var_dump($order);die; return [200,$order]; } public function orderList($data){ // $id = $data['id']; $return = Orders::where('del_time',0)->select('*'); $return = $this->limit( $return,'',$data ); // $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 orderRule($data){ if($this->isEmpty($data,'out_order_no')) return [false,'订单号不存在!']; if($this->isEmpty($data,'project_title')) return [false,'项目名称不存在!']; if($this->isEmpty($data,'address')) return [false,'地址不存在!']; if($this->isEmpty($data,'mobile')) return [false,'手机号不存在!']; // if($this->isEmpty($data,'icon')) return [201,'d不存在!']; // if($this->isEmpty($data,'uri')) return [false,'路由不存在!']; return [true,'']; } }