'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('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();
}
$rejectedBillItem->injectCommodityName();
$this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
return ['success'=>'true','id'=>$rejectedBillItem['id']];
}
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();
$this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
return ['success'=>'true','id'=>$rejectedBillItem['id']];
}
}
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??'','笕尚')){
$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相关负责人
';
$this->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::find($item['id_rejected_bill']);
$downloadedSkus = WMSReflectReceive::downloadedSkus($rejectedBill['logistic_number_return']);
$isGotMoreThenDownloaded=WMSReflectReceiveSku::itemsOverDownloadedSkus($rejectedBillItems,$downloadedSkus);
$isJianshang=(function($rejectedBill){
$owner = Owner::find($rejectedBill['id_owner']);
if(strstr($owner->name??'','笕尚')){
return true;
}
return false;
})($rejectedBill);
if(!$isGotMoreThenDownloaded){
event(new InformWMSReceivedEvent($rejectedBill));
$isLoaded=false;
if($isJianshang){
$isLoaded=true;
}
return ['success'=>'true','bill_is_loaded'=>$isLoaded];
}
//TODO: 发送给笕尚,应该单独抽出然后做出可配置流程
$havingFail=0;
if(!config('api.API_FAKING'))
$rejectedBillItems->each(function(RejectedBillItem $rejectedBillItem)use(&$havingFail,$rejectedBill,$isJianshang){
// $rejectedBill=RejectedBill::find($rejectedBillItem['id_rejected_bill']);
// if($rejectedBill['is_loaded']){
// return false;
// }
if($isJianshang){
$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相关负责人
';
$this->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBillItem['id'],'数据发送给笕尚失败');
$havingFail++;
return false;
}
}
});
if($havingFail>0)return ['success'=>'false','fail_info'=>"$havingFail/{$rejectedBillItems->count()} 条记录没有发送成功"];
$this->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
return ['success'=>'true'];
}
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();
});
$this->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:50'],
'amount' => ['numeric','nullable', '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::where('id_rejected_bill',$request->input('id_rejected_bill'))->get();
return ['success'=>'true','items'=>$rejectedBillItems->toArray()];
}
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'));
$rejectedBillItem->forceDelete();
return ['success'=>'true','id'=>$request->input('id')];
}
/**
* Display the specified resource.
*
* @param \App\RejectedBillItem $rejectedBillItem
* @return \Illuminate\Http\Response
*/
public function show(RejectedBillItem $rejectedBillItem)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\RejectedBillItem $rejectedBillItem
* @return \Illuminate\Http\Response
*/
public function edit(RejectedBillItem $rejectedBillItem)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\RejectedBillItem $rejectedBillItem
* @return \Illuminate\Http\Response
*/
public function update(Request $request, RejectedBillItem $rejectedBillItem)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param \App\RejectedBillItem $rejectedBillItem
* @return \Illuminate\Http\Response
*/
public function destroy(RejectedBillItem $rejectedBillItem)
{
//
}
}