'false','failure_info'=>'没有权限']; } $errorFields= $this->validator($request->all())->errors()->getMessages(); if(!empty($errorFields)){ return ['success'=>'false','error_fields'=>$errorFields,'failure_info'=>'fileds error']; } /** @var RejectedBillItemService $service */ $service=app('RejectedBillItemService'); $rejectedBillItem=RejectedBillItem::where('barcode_goods',$request->input('barcode_goods')) ->where('id_quality_label',$request->input('id_quality_label')) ->where('id_rejected_bill',$request->input('id_rejected_bill'))->first(); if($rejectedBillItem){ $rejectedBillItem['amount']+=$request->input('amount'); if($request->input('name_goods')){ $rejectedBillItem['name_goods']=$request->input('name_goods'); } $rejectedBillItem->update(); }else{ $rejectedBillItem=new RejectedBillItem($request->all()); $rejectedBillItem->save(); } try { $packageImage=$request->packageImages ??false; $commodityImages=$request->commodityImages ??false; if ($packageImage) $service->uploadImages($packageImage, $rejectedBillItem->id, '外箱'); if ($commodityImages) $service->uploadImages($commodityImages, $rejectedBillItem->id, '产品'); } catch (\Exception $e) { \Illuminate\Support\Facades\Log::warning("退货录入图片-异常", ["msg"=>$e->getMessage(),'data'=>json_encode($request)]); } if (!$rejectedBillItem->rejectedBill || !$rejectedBillItem->rejectedBill->owner)return ['success'=>'false','failure_info'=>'退货单或货主不存在']; // /** @var CommodityService $commodityService */ // $commodityService = app('CommodityService'); // $commodity = $commodityService->ownerBarcodeSeekCommodityFirst(['name'=>$rejectedBillItem->rejectedBill->owner->name],$rejectedBillItem->barcode_goods); // if (!$commodity){ // $commodity = $commodityService->ownerAndBarcodeFirstOrCreate($rejectedBillItem->rejectedBill->owner,$rejectedBillItem->barcode_goods); // if (!$commodity){ // $commodity = $commodityService->create([ // "name" => $rejectedBillItem->name_goods, // "owner_id" => $rejectedBillItem->rejectedBill->owner->id, // ]); // app('CommodityBarcodeService')->first([ // 'commodity_id' => $commodity->id, // 'code' => $rejectedBillItem->barcode_goods, // ]); // } // } /** @var RejectedBill $rejectedBill */ $rejectedBill = RejectedBill::query()->where('id',$request->input('id_rejected_bill'))->first(); SyncOrderRejectingStatusJob::dispatch($rejectedBill); // $rejectedBill->updateIsNewRejecting(); // $rejectedBill->syncOrderIssue(); // 同步问题件 修改问题件退货状态 app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return ['success'=>'true','id'=>$rejectedBillItem['id']]; } public function apiReviseOwner(Request $request) { if(!Gate::allows('退货管理-录入')){ return ['success'=>'false','failure_info'=>'没有权限']; } $rejectedBill = RejectedBill::query() ->where('id',$request->input('id_rejected_bill')) ->update(['id_owner'=>$request->input('commodityOwnerId')]); if ($rejectedBill) return ['success'=>'true']; return ['success'=>'false','message'=>'校正货主失败!']; } public function apiUpdate(Request $request) { if(!Gate::allows('退货管理-编辑')){ return ['success'=>'false','failure_info'=>'没有权限']; } $errorFields= $this->validator($request->all())->errors()->getMessages(); if(!empty($errorFields)){ return ['success'=>'false','error_fields'=>$errorFields,'failure_info'=>'fileds error']; } $rejectedBillItem=RejectedBillItem::where('id',$request->input('id'))->first(); if(!$rejectedBillItem){ return ['success'=>'false','failure_info'=>'数据库没有相应记录,请刷新后重加']; }else{ $rejectedBillItem->fill($request->all()); $rejectedBillItem->update(); //$rejectedBillItem->injectCommodityName(); Haozi 2020-12-09 /** @var RejectedBill $rejectedBill */ $rejectedBill = RejectedBill::query()->where('id',$rejectedBillItem->id_rejected_bill)->first(); SyncOrderRejectingStatusJob::dispatch($rejectedBill); // $rejectedBill->updateIsNewRejecting(); // $rejectedBill->syncOrderIssue(); // 同步问题件 修改问题件退货状态 app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return ['success'=>'true','id'=>$rejectedBillItem['id']]; } } /** * 22-6-7 废弃接口 * * @Deprecated * @param Collection $rejectedBillItems * @return string|string[] */ public function collectionsToPackConfirm(Collection $rejectedBillItems) { $ids=[]; $rejectedBillItems->each(function ($item)use(&$ids){ $ids[]=$item->id; }); if(!$ids)return ['success'=>'false','fail_info'=>'没有内容']; $collections=new Collection($ids); $i=0; $collections->each(function ($id)use(&$i,$ids){ $rejectedBillItems=RejectedBillItem::whereIn('id', [$ids[$i]]); $rejectedBillItems->each(function(RejectedBillItem $rejectedBillItem)use(&$havingFail){ $rejectedBill=RejectedBill::find($rejectedBillItem['id_rejected_bill']); $owner = Owner::find($rejectedBill['id_owner']); if(strstr($owner->name??'','笕尚')){ app('LogService')->log(__METHOD__,'找不到表','121行'); // $rejected=new Rejected(); // $rejected->fill($rejectedBill->toArray()); // $rejected->fill($rejectedBillItem->toArray()); $rejected=new Rejected(); $rejected->fill($rejectedBill->toArray()); $rejected->fill($rejectedBillItem->toArray()); $rejectedJianshang=new api\thirdPart\jianshang\RejectedController(); $sended=$rejectedJianshang->sendRejected($rejected); if(!$sended){ echo '

数据发送给笕尚失败,请通知IT相关负责人

'; app('LogService')->log(__METHOD__,'error','数据发送给笕尚失败'); $havingFail++; return false; } } }); $i++; if($i%30==0) sleep(1); }); return 'yes'.$i; } public function apiPackConfirm(Request $request) { if(!Gate::allows('退货管理-录入')){ return ['success'=>'false','fail_info'=>'没有权限']; } $ids=$request->input('ids'); if(!$ids)return ['success'=>'false','fail_info'=>'没有内容']; $rejectedBillItems=RejectedBillItem::whereIn('id', $ids)->get(); if($rejectedBillItems->count()==0){ return ['success'=>'false','fail_info'=>'没有匹配到相应内容']; } $item=$rejectedBillItems->first(); $rejectedBill = RejectedBill::query()->find($item['id_rejected_bill']); SyncOrderRejectingStatusJob::dispatch($rejectedBill); // $rejectedBill->syncOrderIssue(); // 同步问题件 修改问题件退货状态 if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'请求处理退单:'.$rejectedBill['logistic_number_return'],Auth::user()['id']); $downloadedSkus = WMSReflectReceive::downloadedSkus($rejectedBill['logistic_number_return'],true); $isGotMoreThenDownloaded=WMSReflectReceiveSku::isItemsOverDownloadedSkus($rejectedBillItems,$downloadedSkus); $isJianshang=(function($rejectedBill){ $owner = Owner::find($rejectedBill['id_owner']); if(strstr($owner->name??'','笕尚')){ return true; } return false; })($rejectedBill); if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"当前,实收件:(".json_encode($rejectedBillItems).")},下载件:(" .json_encode($downloadedSkus).")},退单号:{$rejectedBill['logistic_number_return']}",null); $shouldStore=!$isGotMoreThenDownloaded //没有录入超过下载货物数 && !($rejectedBill['is_loaded']==1)//并且不是已入库////去掉了或无需入库的判断:||$rejectedBill['is_loaded']===null &&config('api.api_switch_receive_to_wms');//并且配置开 if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"自动入库:{$shouldStore}||isGotMoreThenDownloaded={$isGotMoreThenDownloaded}/rejectedBill['is_loaded']={$rejectedBill['is_loaded']}/rejectedBill['is_loaded']={$rejectedBill['is_loaded']}",null); if($shouldStore){ if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'满足条件,准备从网页主动请求富勒入库:'.$rejectedBill['logistic_number_return'],Auth::user()['id']); $result_transferToWms=(new InformWMSReceivedEvent($rejectedBill))->directRun(); if($result_transferToWms=='fail')return ['success'=>'false','fail_info'=>'提交至WMS错误,请手动校验、操作WMS并通知相关人员']; if($result_transferToWms=='exception')return ['success'=>'exception','fail_info'=>'提交至WMS部分成功,存在异常情况,请校对WMS']; $isLoaded=false; if($isJianshang){ $isLoaded=true; } if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,'标记前端是否入库为:'.$isLoaded,Auth::user()['id']); return ['success'=>'true','bill_is_loaded'=>$isLoaded]; } $remoteResultStr=''; if($isJianshang){ if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"不满足入库条件,准备发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); $remoteResultStr=$this->sendRejectedToThirdPart2($rejectedBillItems,$rejectedBill);//不能入库所以发送给笕尚处理 !!!! } if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"前端退单处理请求完成:笕尚入库状态为:{$remoteResultStr},退单号: {$rejectedBill['logistic_number_return']},退单ID:{$rejectedBill['id']},form表单:".json_encode($request->toArray()),Auth::user()['id']); return ['success'=>'true','remote_result'=>$remoteResultStr]; } /** * 22-6-7 废弃此接口 * * @Deprecated * @param Collection $items * @param $rejectedBill * @return bool */ public function sendRejectedToThirdPart(Collection $items,$rejectedBill):bool { $havingFail=0; if(!config('api.API_FAKING')){ $items->each(function(RejectedBillItem $rejectedBillItem)use(&$havingFail,$rejectedBill){ $rejected=$rejectedBill->toArray(); $rejected = array_merge($rejected, $rejectedBillItem->toArray()); $rejectedJianshang=new api\thirdPart\jianshang\RejectedController(); $sended=$rejectedJianshang->sendRejected($rejected); if(!$sended){ echo '

数据发送给笕尚失败,请通知IT相关负责人

'; app('LogService')->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBillItem['id'],'数据发送给笕尚失败'); $havingFail++; return false; } }); $receives=WMSReflectReceive::where('ASNREFERENCE3',$rejectedBill['logistic_number_return'])->where('is_uploaded',0)->get(); $receives->each(function ($receive){ $receive['is_uploaded']=1; $receive->save(); }); } if($havingFail>0){ app('LogService')->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBill['id'],"$havingFail/{$items->count()} 条记录没有发送成功",Auth::user()['id']); return false; } return true; } public function sendRejectedToThirdPart2(Collection $items,$rejectedBill) { if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,发送给笕尚处理,退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); if($rejectedBill['is_loaded']!=0){ if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,但退单已入库,跳出!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); return true; } $rejected=$rejectedBill->toArray(); $goodses=[]; $items->each(function(RejectedBillItem $item)use(&$goodses){ $goodses[]=$item->toArray(); }); $rejectedJianshang=new api\thirdPart\jianshang\RejectedController(); $rejected['goodses']=$goodses; if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"进入发送方法,将商品转成数组,准备进入接口!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); $resultStr= $rejectedJianshang->sendRejected2($rejected); //!!! if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); if($resultStr=='fail'){ if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送失败,笕尚取得结果是:{$resultStr}!返回前端。退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); return $resultStr; } if($resultStr=='storable'){ if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"发送成功,可入,但待推单,笕尚取得结果是:{$resultStr}!返回前端。退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); $rejectedBill = RejectedBill::find($rejectedBill['id']); $rejectedBill->is_loaded=2; $rejectedBill->save(); $items->each(function(RejectedBillItem $item)use(&$goodses){ $item['is_loaded']='待推单'; $item->save(); }); if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"标记退单和商品为待推单!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); } if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"处理完成,返回前端入库状态,标记笕尚取得结果是:{$resultStr}!退单号:{$rejectedBill['logistic_number_return']}",Auth::user()['id']); return $resultStr; } public function apiPackDestroy(Request $request) { if(!(Gate::allows('退货管理-录入')||Gate::allows('退货管理-编辑'))){ return ['success'=>'false','failure_info'=>'没有权限']; } $ids=$request->input('ids'); if(!$ids)return ['success'=>'false','fail_info'=>'没有内容']; $rejectedBillItems=RejectedBillItem::whereIn('id', $ids); $rejectedBillItems->each(function(RejectedBillItem $rejectedBillItem){ $rejectedBillItem->delete(); }); app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return ['success'=>'true']; } protected function validator(array $data,$isUpdate=false) { return Validator::make($data, [ 'id_rejected_bill' => ['required', 'numeric', 'exists:rejected_bills,id'], 'barcode_goods' => ['required', 'string','max:60'], 'name_goods' => ['nullable', 'string','max:219'], 'amount' => ['numeric','required', 'max:99999'], 'id_quality_label' => ['required','numeric', 'max:11'], 'batch_number' => ['string', 'nullable',], 'validity_at' => ['nullable','date_format:Y-m-d'], 'remark' => ['nullable','string','max:191'], ],[],[ 'id_rejected_bill' =>'退单头', 'barcode_goods' => '商品条码', 'name_goods' => '商品名称', 'amount' => '数量', 'id_quality_label' => '品质', 'batch_number' => '批次', 'validity_at' => '效期', 'remark' => '备注' ]); } public function apiGet(Request $request) { if(!Gate::allows('退货管理-查询')){ return ['success'=>'false','failure_info'=>'没有权限'];} if(!$request->input('id_rejected_bill')){ return ['success'=>'false','failure_info'=>'表头id不能为空']; } $rejectedBillItems = RejectedBillItem::query()->with(['uploadFiles','packageImages','commodityImages']) ->where('id_rejected_bill',$request->input('id_rejected_bill'))->get(); return ['success'=>'true','items'=>$rejectedBillItems]; } public function apiDelete(Request $request) { if(!Gate::allows('退货管理-删除')){ return ['success'=>'false','failure_info'=>'没有权限'];} if(!$request->input('id')){ return ['success'=>'false','failure_info'=>'传入id不能为空']; } $rejectedBillItem = RejectedBillItem::find($request->input('id')); if(!$rejectedBillItem)return ['success'=>'false','id'=>$request->input('id')]; $rejectedBillItem->forceDelete(); /** @var RejectedBill $rejectedBill */ $rejectedBill = RejectedBill::query()->where('id',$rejectedBillItem->id_rejected_bill)->first(); if(!$rejectedBill)return ['success'=>'false','id'=>$request->input('id')]; SyncOrderRejectingStatusJob::dispatch($rejectedBill); // $rejectedBill->syncOrderIssue(); // 同步问题件 修改问题件退货状态 app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($rejectedBillItem),Auth::user()['id']); return ['success'=>'true','id'=>$request->input('id')]; } public function apiUpload(Request $request) { $files=$request->file("files"); if (!$files)$this->error("未传递照片"); $id=$request->input('id'); $rejectedBillItem=RejectedBillItem::query()->find($id); if (!$rejectedBillItem)$this->error("未找到该退货详情!"); $res = []; foreach ($files as $file){ if (!$file->isValid()){ return ['success'=>false,'error'=>"找不到照片!"]; } $tmpFile = $file->getRealPath(); if (! is_uploaded_file($tmpFile)) { return ['success'=>false,'error'=>"文件错误!"]; } $fileExtension=$file->getClientOriginalExtension(); // 5.存储, 生成一个随机文件名 $fileName = date('ymd').'-'.Uuid::uuid1(); $thumbnailName=storage_path('app/public/files/'.$fileName.'-thumbnail.'.$fileExtension); $commonName=storage_path('app/public/files/'.$fileName.'-common.'.$fileExtension); $bulkyName=storage_path('app/public/files/'.$fileName.'-bulky.'.$fileExtension); $result=move_uploaded_file ($tmpFile ,$bulkyName); if ($result){ $img=Image::make($bulkyName)->resize(250,250); if ($img->height() > $img->width()){ $img->heighten(250)->save($commonName); } else{ $img->widen(250)->save($commonName); $img->widen(28)->save($thumbnailName); } if (file_exists($bulkyName)){unlink($bulkyName);} /** @var UploadFile|\stdClass $uploadFile */ $uploadFile=new UploadFile([ "table_name"=>"rejected_bill_items", "table_id"=>$id, "url"=>'/files/'.$fileName, "type"=>$fileExtension, "file_name"=>$request->type??'', ]); if ($uploadFile->save()) $res[] = $uploadFile; }else $this->error("图片存储失败,检查服务器状态"); } $this->success($res); } //删除照片 public function apiDeleteImg(Request $request){ $id=$request->input("id"); $url=$request->input("url"); $query=UploadFile::query()->where('table_name','rejected_bill_items'); if ($url)$query = $query->where('table_id',$id)->where("url",$request->input("url")); else $query = $query->whereIn('table_id',$request->input("id")); foreach ($query->get() as $uploadFile){ $bulky=storage_path('app/public/'.$uploadFile->url.'-bulky.'.$uploadFile->type); $common=storage_path('app/public/'.$uploadFile->url.'-common.'.$uploadFile->type); $thumbnail=storage_path('app/public/'.$uploadFile->url.'-thumbnail.'.$uploadFile->type); if (file_exists($bulky))unlink($bulky); if (file_exists($common))unlink($common); if (file_exists($thumbnail))unlink($thumbnail); } $query->delete(); app('LogService')->log(__METHOD__,'退货商品详情图片删除',json_encode($request),Auth::user()['id']); $this->success(); } }