all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $search_content=$input['search_content']; $user=User::where('level',3)->whereNull('deleted_at'); if ($search_content){ $ids=User::where('mobile','like','%'.$search_content.'%')->orwhere('nickname','like','%'.$search_content.'%') ->where('level',3)->whereNull('deleted_at')->pluck('id'); $user->whereIn('id',$ids); } $count=$user->count(); $data=$user->with(['get_storage','get_storage_detail'=>function($q){ $q->where('storage_type',2)->orderByDesc('created_at')->limit(1); },'get_storage_details'=>function($q){ $q->where('storage_type',1)->orderByDesc('created_at')->limit(1); },'warea'])->select('id','nickname','mobile','realname')->take($page_size)->skip(($page_index-1)*$page_size)->get(); foreach ($data as $k=>$v){ $num=0; foreach ($v->get_storage as $ke=>$va){ $num+=$va->num; } if ($v->get_storage->isEmpty()){ $data[$k]->sure_storage=false; }else{ $data[$k]->sure_storage=true; } if (!$v->get_storage_details->isEmpty()){ $data[$k]->out_time=$v->get_storage_details[0]->created_at->toDateTimeString();; }else{ $data[$k]->out_time=''; } if (!$v->get_storage_detail->isEmpty()){ $data[$k]->put_time=$v->get_storage_detail[0]->created_at->toDateTimeString(); }else{ $data[$k]->put_time=''; } $data[$k]->storage_total=$num; } return $this->success_list($data,'',$count); } /* * 超过一个星期 * * 一个月没出货的代理公司 * ***/ public function GetCrownTime(Request $request){ $input=$request->all(); $page_index=$input['page_index']; $page_size=$input['page_size']; $search_content=$input['search_time']; $now=Carbon::now()->timestamp; $time=date('Y-m-d H:i:s',$now-$search_content); $user_ids=ExpressStorage::where('storage_type',1)->where('created_at','>=',$time)->pluck('user_id')->toArray(); $user=User::where('level',3)->whereNull('deleted_at')->whereNotIn('id',$user_ids); $count=$user->count(); $data=$user->with(['get_storage','get_storage_detail'=>function($q){ $q->where('storage_type',2)->orderByDesc('created_at')->limit(1); },'get_storage_details'=>function($q){ $q->where('storage_type',1)->orderByDesc('created_at')->limit(1); }])->select('id','nickname','mobile','realname')->take($page_size)->skip(($page_index-1)*$page_size)->get(); foreach ($data as $k=>$v){ $num=0; foreach ($v->get_storage as $ke=>$va){ $num+=$va->num; } if ($v->get_storage->isEmpty()){ $data[$k]->sure_storage=false; }else{ $data[$k]->sure_storage=true; } if (!$v->get_storage_details->isEmpty()){ $data[$k]->out_time=$v->get_storage_details[0]->created_at->toDateTimeString();; }else{ $data[$k]->out_time=''; } if (!$v->get_storage_detail->isEmpty()){ $data[$k]->put_time=$v->get_storage_detail[0]->created_at->toDateTimeString(); }else{ $data[$k]->put_time=''; } $data[$k]->storage_total=$num; } return $this->success_list($data,'',$count); } public function GetStorageNum(Request $request){ $input=$request->all(); $start_time=$input['start_time']; $end_time=$input['end_time']; $re=User::where('users.level',3); // ->leftJoin('storage_put_log',function ($q)use($start_time,$end_time){ // $q->on('users.id','=','storage_put_log.user_id') // ->where('storage_put_log.storage_type',0) // ->whereBetween('storage_put_log.created_at',[$start_time,$end_time])->select(DB::raw("ifnull(sum(storage_put_log.num) ,0) as put_total"),'user_id'); // }) // ->leftJoin('express_storage',function ($q)use($start_time,$end_time){ // $q->on('users.id','=','express_storage.user_id') // ->where('express_storage.storage_type',0) // ->whereBetween('express_storage.out_time',[$start_time,$end_time]); // }) // ->leftJoin('storage_put_log',function ($q){ // $q->on('users.id','=','storage_put_log.user_id')->where('storage_put_log.storage_type',0); // }) // ->rightJoin('express_storage','users.id','=','express_storage.user_id') // ->leftJoin('user_storage','users.id','=','user_storage.user_id') // ->where('storage_put_log.storage_type',0) // ->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(storage_put_log.num) ,0) as put_total")) // ->groupBy('users.id')->get()->toArray(); // dd($re); // ->where('express_storage.storage_type',1); $search_content=$input['search_content']; if ($search_content){ $ids=User::where('mobile','like','%'.$search_content.'%')->orwhere('nickname','like','%'.$search_content.'%') ->where('level',3)->whereNull('deleted_at')->pluck('id'); $re=$re->whereIn('users.id',$ids); } if ($input['status']=='all'){ }elseif ($input['status']==0){ $user_ids=UserStorage::groupBy('user_id')->pluck('user_id')->toArray(); $re=$re->whereIn('users.id',$user_ids); }else{ $user_ids=UserStorage::groupBy('user_id')->pluck('user_id')->toArray(); $re=$re->whereNotIn('users.id',$user_ids); } if ($input['sort_type']==0){ if ($start_time){ $re=$re->with(['get_put_storage'=>function($q)use($start_time,$end_time){ $q->where('storage_type',0)->whereBetween('created_at',[$start_time,$end_time]); },'get_out_storage'=>function($q)use($start_time,$end_time){ $q->where('storage_type',1); }])->leftJoin('user_storage','users.id','=','user_storage.user_id')->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(user_storage.num) ,0) as total")); }else{ $re=$re->with(['get_put_storage'=>function($q){ $q->where('storage_type',0); },'get_out_storage'=>function($q){ $q->where('storage_type',1); }])->leftJoin('user_storage','users.id','=','user_storage.user_id')->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(user_storage.num) ,0) as total")); } if ($input['sort']==0){ $re=$re->OrderByDesc('total'); }else{ $re=$re->OrderBy('total'); } }elseif ($input['sort_type']==1) { if ($start_time){ $re=$re->with(['get_out_storage'=>function($q)use($start_time,$end_time){ $q->where('storage_type',1)->whereBetween('created_at',[$start_time,$end_time]); }])->leftJoin('storage_put_log',function ($q)use($start_time,$end_time){ $q->on('users.id','=','storage_put_log.user_id')->where('storage_put_log.storage_type',0)->whereBetween('storage_put_log.created_at',[$start_time,$end_time]); })->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(storage_put_log.num) ,0) as put_total")); }else{ $re=$re->with(['get_out_storage'=>function($q){ $q->where('storage_type',1); }])->leftJoin('storage_put_log',function ($q)use($start_time,$end_time){ $q->on('users.id','=','storage_put_log.user_id')->where('storage_put_log.storage_type',0); })->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(storage_put_log.num) ,0) as put_total")); } if ($input['sort']==0){ $re=$re->OrderByDesc('put_total'); }else{ $re=$re->OrderBy('put_total'); } }else{ if ($start_time){ $re=$re->with(['get_put_storage'=>function($q)use($start_time,$end_time){ $q->where('storage_type',0)->whereBetween('out_time',[$start_time,$end_time]); }])->leftJoin('express_storage',function ($q)use($start_time,$end_time){ $q->on('users.id','=','express_storage.user_id')->where('express_storage.storage_type',1)->whereBetween('out_time',[$start_time,$end_time]); })->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(express_storage.num) ,0) as out_total")); }else{ $re=$re->with(['get_put_storage'=>function($q){ $q->where('storage_type',0); }])->leftJoin('express_storage',function ($q)use($start_time,$end_time){ $q->on('users.id','=','express_storage.user_id')->where('express_storage.storage_type',1); })->select('users.id','users.nickname','users.mobile','users.warea_id','users.realname',DB::raw("ifnull(sum(express_storage.num) ,0) as out_total")); } if ($input['sort']==0){ $re=$re->OrderByDesc('out_total'); }else{ $re=$re->OrderBy('out_total'); } } $re=$re->with(['get_storage','warea'])->groupBy('users.id'); $count=$re->get()->count(); $re=$re->take($input['page_size'])->skip(($input['page_index']-1)*$input['page_size'])->get()->toArray(); $data=[]; foreach ($re as $k=>$v){ $total=0; $put_total=0; $out_total=0; $hard=0; $simple=0; $old=0; $new_old=0; if ($v['get_storage']){ foreach ($v['get_storage'] as $ke=>$va){ if ($va['type']==0){ $hard+=$va['num']; }elseif ($va['type']==1){ $simple+=$va['num']; }elseif ($va['type']==2){ $old+=$va['num']; }else{ $new_old+=$va['num']; } $total+=$va['num']; } } $data[$k]=$v; if (!$v['get_storage']){ $data[$k]['sure_storage']=false; }else{ $data[$k]['sure_storage']=true; } $data[$k]['hard']=$hard; $data[$k]['simple']=$simple; $data[$k]['old']=$old; $data[$k]['new_old']=$new_old; $data[$k]['GetStorageLog']=StorageLog::where('user_id',$v['id'])->orderByDesc('created_at')->limit(1)->select('id','created_at','user_id')->first(); if($input['sort_type']==0) { if ($v['get_out_storage']){ foreach ($v['get_out_storage'] as $ke=>$va){ $out_total+=$va['num']; } } if ($v['get_put_storage']){ foreach ($v['get_put_storage'] as $ke=>$va){ $put_total+=$va['num']; } } $data[$k]['out_total']=$out_total; $data[$k]['put_total']=$put_total; }elseif ($input['sort_type']==1){ if ($v['get_out_storage']){ foreach ($v['get_out_storage'] as $ke=>$va){ $out_total+=$va['num']; } } $data[$k]['out_total']=$out_total; $data[$k]['total']=$total; }else{ if ($v['get_put_storage']){ foreach ($v['get_put_storage'] as $ke=>$va){ $put_total+=$va['num']; } } $data[$k]['total']=$total; $data[$k]['put_total']=$put_total; } } return $this->success_list($data,'',$count); } public function exportData(Request $request){ $input=$request->all(); $re=User::leftJoin('user_storage','users.id','=','user_storage.user_id') ->where('users.level',3); $search_content=$input['search_content']; if ($search_content){ $ids=User::where('mobile','like','%'.$search_content.'%')->orwhere('nickname','like','%'.$search_content.'%') ->where('level',3)->whereNull('deleted_at')->pluck('id'); $re=$re->whereIn('users.id',$ids); } if ($input['status']=='all'){ }elseif ($input['status']==0){ $user_ids=UserStorage::groupBy('user_id')->pluck('user_id')->toArray(); $re=$re->whereIn('users.id',$user_ids); }else{ $user_ids=UserStorage::groupBy('user_id')->pluck('user_id')->toArray(); $re=$re->whereNotIn('users.id',$user_ids); } $re=$re->with(['get_storage','warea'])->select('users.id','users.nickname','users.mobile','users.realname',DB::raw("ifnull(sum(num) ,0) as total"))->groupBy('users.id')->orderByDesc('total')->get()->toArray(); $data=[]; foreach ($re as $k=>$v){ $hard=0; $simple=0; $old=0; $new_old=0; if ($v['get_storage']){ foreach ($v['get_storage'] as $ke=>$va){ if ($va['type']==0){ $hard+=$va['num']; }elseif ($va['type']==1){ $simple+=$va['num']; }elseif ($va['type']==2){ $old+=$va['num']; }else{ $new_old+=$va['num']; } } } $data[$k]=$v; if (!$v['get_storage']){ $data[$k]['sure_storage']=false; }else{ $data[$k]['sure_storage']=true; } $data[$k]['hard']=$hard; $data[$k]['simple']=$simple; $data[$k]['old']=$old; $data[$k]['new_old']=$new_old; } return $this->success_list($data); } public function ExportStorageDetail(Request $request){ $input=$request->all(); $re=User::leftJoin('user_storage','users.id','=','user_storage.user_id') ->where('users.level',3); if ($input['status']=='all'){ }elseif ($input['status']==0){ $user_ids=UserStorage::groupBy('user_id')->pluck('user_id')->toArray(); $re=$re->whereIn('users.id',$user_ids); }else{ $user_ids=UserStorage::groupBy('user_id')->pluck('user_id')->toArray(); $re=$re->whereNotIn('users.id',$user_ids); } $search_content=$input['search_content']; if ($search_content){ $ids=User::where('mobile','like','%'.$search_content.'%')->orwhere('nickname','like','%'.$search_content.'%') ->where('level',3)->whereNull('deleted_at')->pluck('id'); $re=$re->whereIn('user.id',$ids); } $re=$re->with(['get_storage','warea'])->select('users.id','users.nickname','users.warea_id','users.mobile','users.realname',DB::raw("ifnull(sum(num) ,0) as total"))->groupBy('users.id')->orderByDesc('total')->get()->toArray(); $data_all=[]; $i=0; foreach ($re as $k=>$v){ if ($v['get_storage']){ foreach ($v['get_storage'] as $ke=>$va){ $data_all[$i]=$va; $data_all[$i]['sure_storage']=true; $data_all[$i]['warea']=$v['warea']; $data_all[$i]['nickname']=$v['nickname']; $data_all[$i]['mobile']=$v['mobile']; $data_all[$i]['realname']=$v['realname']; $i++; } }else{ $data_all[$i]=[]; $data_all[$i]['warea']=$v['warea']; $data_all[$i]['sure_storage']=false; $data_all[$i]['nickname']=$v['nickname']; $data_all[$i]['mobile']=$v['mobile']; $data_all[$i]['realname']=$v['realname']; $i++; } } return $this->success_list($data_all); } public function GetPutOutDetail(Request $request){ $input=$request->all(); $id=$input['id']; $start_time=$input['start_time']; $end_time=$input['end_time']; $where=[]; if ($input['type']==0){ if ($start_time){ $where=function ($q)use($start_time,$end_time){ $q->whereBetween('creaetd_at',[$start_time,$end_time]); }; } $storage_log=StoragePutLog::where('user_id',$id)->where('storage_type',0)->where($where)->get(); }else{ if ($start_time){ $where=function ($q)use($start_time,$end_time){ $q->whereBetween('out_time',[$start_time,$end_time]); }; } $storage_log=ExpressStorage::where('user_id',$id)->where('storage_type',1)->where($where)->get(); } return $this->success_list($storage_log); } /* * 库存数量统计变化图 * ***/ public function StorageStatistical(Request $request){ $input=$request->all(); $start_time=$input['start_time']; $end_time=$input['end_time']; $t=strtotime($end_time)-strtotime($start_time); if ($t>31*3600*24){ return $this->error(50021,'时间周期最多为30天',''); } $arr=[]; $m=ceil($t/(24*3600)); for ($i=0;$i<$m;$i++){ $re=StoragePutLog::where('created_at','>=',date('Y-m-d H:i:s',strtotime($start_time)+3600*24*$i)) ->where('created_at','<',date('Y-m-d H:i:s',strtotime($start_time)+3600*24*($i+1)))->sum('num'); $res=ExpressStorage::where('out_time','>=',date('Y-m-d H:i:s',strtotime($start_time)+3600*24*$i)) ->where('out_time','<',date('Y-m-d H:i:s',strtotime($start_time)+3600*24*($i+1)))->sum('num'); $arr[$i]['date']=date('Y-m-d',strtotime($start_time)+3600*24*$i); $arr[$i]['out_num']=$res; $arr[$i]['put_num']=$re; } return $this->success($arr); } /* * 某个时间段的入库汇总 * **/ public function StoragePutStatistical(Request $request){ $input=$request->all(); $start=$input['start_time']; $end=$input['end_time']; $page_index=$input['page_index']; $page_size=$input['page_size']; $search_content=$input['search_content']; $re=StoragePutLog::where('storage_type',0)->whereBetween('created_at',[$start,$end]) ->select(DB::raw('sum(num) as total'),'type') ->groupBy('type')->get(); $arrs=[ 'hard'=>['hard_total'=>0,'hard_money'=>0], 'simple'=>['simple_total'=>0,'simple_money'=>0], 'old'=>['old_total'=>0,'old_money'=>0], 'newold'=>['newold_total'=>0,'newold_money'=>0], ]; foreach ($re as $k=>$v){ if ($v->type==0){ $arrs['hard']['hard_total']=$v->total; $arrs['hard']['hard_money']=$v->total*149; } if ($v->type==1){ $arrs['simple']['simple_total']=$v->total; $arrs['simple']['simple_money']=$v->total*79; } if ($v->type==2){ $arrs['old']['old_total']=$v->total; $arrs['old']['old_money']=$v->total*89; }if ($v->type==3){ $arrs['newold']['newold_total']=$v->total; $arrs['newold']['newold_money']=$v->total*47; } } $user=User::where('users.level',3); $users=clone $user; if ($search_content){ $user_ids=User::where('level',3)->where('nickname','like','%'.$search_content.'%')->orwhere('mobile','like','%'.$search_content.'%')->pluck('id'); $user=$user->whereIn('id',$user_ids); $users=$users->whereIn('id',$user_ids); } $count=$users->count(); $user=$user->leftJoin('storage_put_log',function ($q)use($start,$end){ $q->on('storage_put_log.user_id','users.id')->where('storage_put_log.storage_type',0)->whereBetween('storage_put_log.created_at',[$start,$end]); })->with(['get_put_storage'=>function($q)use($start,$end){ $q->whereBetween('created_at',[$start,$end])->select('type','sex','num','size','created_at','user_id'); }])->select('users.id','users.nickname','users.realname','users.mobile',DB::raw('ifnull(sum(storage_put_log.num),0) as total')) ->orderByDesc('total')->orderByDesc('users.id')->groupBy('users.id')->take($page_size)->skip($page_size*($page_index-1))->get(); $arr=[]; foreach ($user as $k=>$v){ $hard_total=0; $simple_total=0; $old_total=0; $newold_total=0; if ($v->get_put_storage){ foreach ($v->get_put_storage as $ke=>$va){ if ($va->type==0){ $hard_total+=$va->num; }elseif ($va->type==1){ $simple_total+=$va->num; }elseif ($va->type==2){ $old_total+=$va->num; }else{ $newold_total+=$va->num; } } } $arr[$k]=$v; $arr[$k]->get_put_storage=[]; $arr[$k]['hard_total']=$hard_total; $arr[$k]['simple_total']=$simple_total; $arr[$k]['old_total']=$old_total; $arr[$k]['newold_total']=$newold_total; $arr[$k]['money']=$hard_total*149+$simple_total*79+$old_total*49+$newold_total*47; $arr[$k]['total']=$hard_total+$simple_total+$old_total+$newold_total; } $data=[ 'all_total'=>$arrs, 'count'=>$count, 'list'=>$arr ]; return $this->success($data); } /* * 某个时间段的入库汇总 * **/ public function StorageOutStatistical(Request $request){ $input=$request->all(); $start=$input['start_time']; $end=$input['end_time']; $page_index=$input['page_index']; $page_size=$input['page_size']; $search_content=$input['search_content']; $re=ExpressStorage::where('storage_type',1)->whereBetween('express_storage.out_time',[$start,$end]) ->select(DB::raw('sum(num) as total'),'type') ->groupBy('type')->get(); $arrs=[ 'hard'=>['hard_total'=>0,'hard_money'=>0], 'simple'=>['simple_total'=>0,'simple_money'=>0], 'old'=>['old_total'=>0,'old_money'=>0], 'newold'=>['newold_total'=>0,'newold_money'=>0], ]; foreach ($re as $k=>$v){ if ($v->type==0){ $arrs['hard']['hard_total']=$v->total; $arrs['hard']['hard_money']=$v->total*149; } if ($v->type==1){ $arrs['simple']['simple_total']=$v->total; $arrs['simple']['simple_money']=$v->total*79; } if ($v->type==2){ $arrs['old']['old_total']=$v->total; $arrs['old']['old_money']=$v->total*89; }if ($v->type==3){ $arrs['newold']['newold_total']=$v->total; $arrs['newold']['newold_money']=$v->total*47; } } $user=User::where('users.level',3); $users=clone $user; if ($search_content){ $user_ids=User::where('level',3)->where('nickname','like','%'.$search_content.'%')->orwhere('mobile','like','%'.$search_content.'%')->pluck('id'); $user=$user->whereIn('id',$user_ids); $users=$users->whereIn('id',$user_ids); } $count=$users->count(); $user=$user->leftJoin('express_storage',function ($q)use($start,$end){ $q->on('express_storage.user_id','users.id')->where('express_storage.storage_type',1)->whereBetween('express_storage.out_time',[$start,$end]); })->with(['get_out_storage'=>function($q)use($start,$end){ $q->whereBetween('out_time',[$start,$end])->select('type','sex','num','size','created_at','user_id'); }])->select('users.id','users.nickname','users.realname','users.mobile',DB::raw('ifnull(sum(express_storage.num),0) as total')) ->orderByDesc('total')->orderByDesc('users.id')->groupBy('users.id')->take($page_size)->skip($page_size*($page_index-1))->get(); $arr=[]; foreach ($user as $k=>$v){ $hard_total=0; $simple_total=0; $old_total=0; $newold_total=0; if ($v->get_out_storage){ foreach ($v->get_out_storage as $ke=>$va){ if ($va->type==0){ $hard_total+=$va->num; }elseif ($va->type==1){ $simple_total+=$va->num; }elseif ($va->type==2){ $old_total+=$va->num; }else{ $newold_total+=$va->num; } } } $arr[$k]=$v; $arr[$k]['hard_total']=$hard_total; $arr[$k]['simple_total']=$simple_total; $arr[$k]['old_total']=$old_total; $arr[$k]['newold_total']=$newold_total; $arr[$k]['money']=$hard_total*149+$simple_total*79+$old_total*49+$newold_total*47; $arr[$k]['total']=$hard_total+$simple_total+$old_total+$newold_total; } $data=[ 'all_total'=>$arrs, 'count'=>$count, 'list'=>$arr ]; return $this->success($data); } /* * * 某个时间点的库存情况 * **/ public function GetStorageDetailDate(Request $request){ $input=$request->all(); $page_size=$input['page_size']; $page_index=$input['page_index']; $search_content=$input['search_content']; $time=$input['time']; $user=User::where('level',3)->with(['get_storage']); if ($search_content){ $user_ids=User::where('level',3)->where('nickname','like','%'.$search_content.'%')->orwhere('mobile','like','%'.$search_content.'%')->pluck('id'); $user=$user->whereIn('id',$user_ids); } $all_total_hard=UserStorage::where('type',0)->sum('num'); $all_total_simple=UserStorage::where('type',1)->sum('num'); $all_total_old=UserStorage::where('type',2)->sum('num'); $all_total_newold=UserStorage::where('type',3)->sum('num'); $out_total_hard=ExpressStorage::where('storage_type',1)->where('out_time','>=',$time)->where('type',0)->sum('num'); $out_total_simple=ExpressStorage::where('storage_type',1)->where('out_time','>=',$time)->where('type',1)->sum('num'); $out_total_old=ExpressStorage::where('storage_type',1)->where('out_time','>=',$time)->where('type',2)->sum('num'); $out_total_newold=ExpressStorage::where('storage_type',1)->where('out_time','>=',$time)->where('type',3)->sum('num'); $put_total_hard=StoragePutLog::where('storage_type',0)->where('created_at','>=',$time)->where('type',0)->sum('num'); $put_total_simple=StoragePutLog::where('storage_type',0)->where('created_at','>=',$time)->where('type',0)->sum('num'); $put_total_old=StoragePutLog::where('storage_type',0)->where('created_at','>=',$time)->where('type',0)->sum('num'); $put_total_newold=StoragePutLog::where('storage_type',0)->where('created_at','>=',$time)->where('type',0)->sum('num'); $total_hard=$all_total_hard-$put_total_hard+$out_total_hard; $total_simple=$all_total_simple-$put_total_simple+$out_total_simple; $total_old=$all_total_old-$put_total_old+$out_total_old; $total_newold=$all_total_newold-$put_total_newold+$out_total_newold; if ($total_hard<0){ $total_hard=0; } if ($total_simple<0){ $total_simple=0; } if ($total_old<0){ $total_old=0; } if ($total_newold<0){ $total_newold=0; } $total=[ 'hard'=>$total_hard, 'simple'=>$total_simple, 'old'=>$total_old, 'new_old'=>$total_newold, 'total'=>$total_hard+$total_simple+$total_old+$total_newold ]; $count=$user->count(); $user=$user->select('nickname','id','realname','mobile')->take($page_size)->skip(($page_index-1)*$page_size)->get(); $arr=[]; foreach ($user as $k=>$v){ $hard=0; $simple=0; $old=0; $new_old=0; foreach ($v->get_storage as $ke=>$va){ if ($va->type==0){ $hard+=$va->num; } if ($va->type==1){ $simple+=$va->num; } if ($va->type==2){ $old+=$va->num; } if ($va->type==3){ $new_old+=$va->num; } } $num1=ExpressStorage::where('user_id',$v->id)->where('storage_type',1)->where('out_time','>=',$time)->where('type',0)->sum('num'); $num2=ExpressStorage::where('user_id',$v->id)->where('storage_type',1)->where('out_time','>=',$time)->where('type',1)->sum('num'); $num3=ExpressStorage::where('user_id',$v->id)->where('storage_type',1)->where('out_time','>=',$time)->where('type',2)->sum('num'); $num4=ExpressStorage::where('user_id',$v->id)->where('storage_type',1)->where('out_time','>=',$time)->where('type',3)->sum('num'); $num5=StoragePutLog::where('user_id',$v->id)->where('storage_type',0)->where('created_at','>=',$time)->where('type',0)->sum('num'); $num6=StoragePutLog::where('user_id',$v->id)->where('storage_type',0)->where('created_at','>=',$time)->where('type',1)->sum('num'); $num7=StoragePutLog::where('user_id',$v->id)->where('storage_type',0)->where('created_at','>=',$time)->where('type',2)->sum('num'); $num8=StoragePutLog::where('user_id',$v->id)->where('storage_type',0)->where('created_at','>=',$time)->where('type',3)->sum('num'); $hard=$hard+$num1-$num5; $simple=$simple+$num2-$num6; $old=$old+$num3-$num7; $new_old=$new_old+$num4-$num8; $arr[$k]=$v; $arr[$k]['hard']=$hard<0?0:$hard; $arr[$k]['simple']=$simple<0?0:$simple; $arr[$k]['old']=$old<0?0:$old; $arr[$k]['new_old']=$new_old<0?0:$new_old; $arr[$k]['total']= $arr[$k]['hard']+$arr[$k]['simple']+$arr[$k]['old']+$arr[$k]['new_old']; } $data=[ 'total'=>$count, 'list'=>$arr, 'all_total'=>$total ]; return $this->success($data); } public function GetUserStorageDateDetail(Request $request){ $input=$request->all(); $time=$input['time']; $id=$input['id']; $storage=UserStorage::where('user_id',$id)->get(); $arr=[]; foreach ($storage as $k=>$v){ $out_num=ExpressStorage::where('user_id',$v->id)->where('storage_type',1)->where('sex',$v->sex)->where('size',$v->size)->where('out_time','>=',$time)->where('type',$v->type)->sum('num'); $put_num=StoragePutLog::where('user_id',$v->id)->where('storage_type',1)->where('sex',$v->sex)->where('size',$v->size)->where('created_at','>=',$time)->where('type',$v->type)->sum('num'); $total=$v->num-$put_num+$out_num; if ($total<0){ $total=0; } $arr[$k]['num']=$total; $arr[$k]['sex']=$v->sex; $arr[$k]['type']=$v->type; $arr[$k]['size']=$v->size; } return $this->success_list($arr); } /* * 库存提醒 * ***/ public function StorageRemind(Request $request){ $input=$request->all(); $page_size=$input['page_size']; $page_index=$input['page_index']; $index=$page_index; $search_content=$input['search_content']; $time=Carbon::now()->addDays(-3); $out_ids=ExpressStorage::where('storage_type',1)->where('out_time','>',$time)->groupBy('user_id')->pluck('user_id'); $tag_ids=TagRemind::where('tag_time','>',$time)->pluck('user_id'); $user=User::where('users.level',3)->with(['warea']); $admin_user=Auth::user(); $status=false; if ($admin_user->role_id!=23){ $status=true; } $warea_id=Warea::where('admin_id',$admin_user->id)->value('id'); if (!$status){ $user=$user->where('users.warea_id',$warea_id); } if ($request->search_content){ $user_ids=User::where('level',3)->where('nickname','like','%'.$search_content.'%')->orwhere('mobile','like','%'.$search_content.'%')->pluck('id'); $user=$user->whereIn('users.id',$user_ids); } $user=$user->Join('tag_remind_storage', 'tag_remind_storage.user_id','users.id') ->whereNotIn('tag_remind_storage.user_id',$tag_ids) ->whereNotIn('users.id',$out_ids) ->with(['get_out_storage'=>function($q){ $q->where('storage_type',1)->orderByDesc('out_time')->limit(1)->select('user_id','out_time'); }]) ->groupBy('users.id')->select('users.id','users.nickname','users.mobile','users.realname','users.warea_id')->paginate($page_size); $total=$user->total(); return $this->success_list($user->items(),'',$total); } /* * 取消提醒 * ***/ public function CancelRemind(Request $request){ $result=TagRemind::where('user_id',$request->user_id)->first(); if ($result){ $result=new TagRemind(); $result->user_id=$request->user_id; $request->status=0; } $result->tag_time=Carbon::now(); $result->save(); return $this->success([]); } public function ExportOutPutRecord(Request $request){ $input=$request->all(); $start_time=$input['start_time']; $end_time=$input['end_time']; if (!$input['type']){ $data=StoragePutLog::where('user_id',$input['user_id']) ->where('storage_type',$input['type']) ->whereBetween('created_at',[$start_time,$end_time]) ->select('num','type','size','sex','created_at as time') ->orderByDesc('created_at') ->get(); }else{ $data=ExpressStorage::where('user_id',$input['user_id']) ->where('storage_type',$input['type']) ->whereBetween('out_time',[$start_time,$end_time]) ->select('num','type','size','sex','out_time as time') ->orderByDesc('out_time') ->get(); } return $this->success_list($data); } public function SetSmsTime(Request $request){ $input=$request->all(); $time=$input['time']; $cycle=$input['time_cycle']; $re=System::where('keys','sms_storage_time')->first(); $re->values=$time; $re->save(); $res=System::where('keys','sms_remind_cycle')->first(); $res->values=$cycle; $res->save(); return $this->success([]); } public function GetSmsTime(Request $request){ $re=System::where('keys','sms_storage_time')->first(); $res=System::where('keys','sms_remind_cycle')->first(); return $this->success(['sms_storage_time'=>$re->values,'sms_remind_cycle'=>$res->values]); } }