123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824 |
- <?php
- namespace App\Http\Controllers;
- use App\Models\ExpressStorage;
- use App\Models\StorageLog;
- use App\Models\StoragePutLog;
- use App\Models\System;
- use App\Models\TagRemind;
- use App\Models\User;
- use App\Models\UserStorage;
- use App\Models\Warea;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- class StorageController extends Controller
- {
- public function GetCrownStorage(Request $request){
- $input=$request->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]);
- }
- }
|