input("record_at_start"); $timeEn = $request->input("record_at_end"); $logisticNumber = $request->input("logistic_number"); $delayed = $request->input("delayed"); if ($timeSt && $timeEn){ $builder->whereBetween("record_at",[$timeSt, $timeEn]); }else{ if ($timeSt)$builder->where("record_at",'>=',$timeSt); if ($timeEn)$builder->where("record_at",'<=',$timeEn); } if ($logisticNumber!==null){ mb_regex_encoding('utf-8'); $par = array_unique(preg_split('/[,, ]+/u', $logisticNumber)); if (count($par)!=1) $builder->whereIn("logistic_number",$par); else $builder->where("logistic_number",'like',$par[0]."%"); } if ($delayed!==null)$builder->where("delayed",$delayed); return $builder; } public function index(Request $request) { $records = ReceiveRecord::query()->with(["logistic:id,name","warehouse:id,name"])->orderByDesc("record_at"); $records = $this->query($request,$records); $records = $records->get(); $status = ReceiveRecord::DELAYED; return view("rejected.receiveRecord",compact("records","status")); } public function export(Request $request) { $records = ReceiveRecord::query()->with(["logistic:id,name","warehouse:id,name"]); if ($request->input("checkAllSign",false)){ $records = $this->query($request,$records); }else{ $numbers = explode(",",$request->input("data","")); $records->whereIn("logistic_number",$numbers); } $list = []; foreach ($records->get() as $item){ $list[] = [ $item->warehouse->name ?? "未知", $item->logistic_number, $item->logistic->name ?? '未知', $item->record_at, ReceiveRecord::DELAYED[$item->delayed], ]; } return Export::make(["仓库","快递单号","快递公司","记录时间","延时标记"],$list,"退件记录"); } public function record() { $warehouses = Warehouse::query()->select("id","name")->get(); return view("rejected.record",compact("warehouses")); } public function receive() { $logisticNumber = \request("logisticNumber"); $warehouse = \request("warehouse"); if (!$logisticNumber || !$warehouse)$this->error("非法单号"); /** @var LogisticService $service */ $service = app("LogisticService"); $name = $service->assertExpressCompany($logisticNumber); if ($name){ $logistic = Logistic::query()->select("id","name")->where("name","like","%{$name}%")->first(); $logisticId = $logistic ? $logistic->id : 0; } else $logisticId = 0; try { $dateTime = now()->toDateTimeString(); ReceiveRecord::query()->create([ "logistic_number" => $logisticNumber, "logistic_id" => $logisticId, "record_at" => $dateTime, "warehouse_id" => $warehouse, ]); $this->success(["recordAt"=>$dateTime,"logistic"=>$logistic->name??"未知"]); }catch(QueryException $qe){ if ($qe->getCode()=='23000')$this->error("unique"); else $this->error("数据异常"); }catch (Exception $e){ $this->error("处理异常"); } } }