|
@@ -7,16 +7,81 @@ use App\Exceptions\Exception;
|
|
|
use App\Logistic;
|
|
use App\Logistic;
|
|
|
use App\ReceiveRecord;
|
|
use App\ReceiveRecord;
|
|
|
use App\Services\LogisticService;
|
|
use App\Services\LogisticService;
|
|
|
|
|
+use App\Warehouse;
|
|
|
|
|
+use Illuminate\Database\Eloquent\Builder;
|
|
|
use Illuminate\Database\QueryException;
|
|
use Illuminate\Database\QueryException;
|
|
|
-use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
|
+use Illuminate\Http\Request;
|
|
|
|
|
+use Oursdreams\Export\Export;
|
|
|
|
|
|
|
|
class ReceiveRecordController extends Controller
|
|
class ReceiveRecordController extends Controller
|
|
|
{
|
|
{
|
|
|
use AsyncResponse;
|
|
use AsyncResponse;
|
|
|
|
|
+
|
|
|
|
|
+ private function query(Request $request, Builder $builder):Builder
|
|
|
|
|
+ {
|
|
|
|
|
+ $timeSt = $request->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()
|
|
public function receive()
|
|
|
{
|
|
{
|
|
|
$logisticNumber = \request("logisticNumber");
|
|
$logisticNumber = \request("logisticNumber");
|
|
|
- if (!$logisticNumber)$this->error("非法单号");
|
|
|
|
|
|
|
+ $warehouse = \request("warehouse");
|
|
|
|
|
+ if (!$logisticNumber || !$warehouse)$this->error("非法单号");
|
|
|
/** @var LogisticService $service */
|
|
/** @var LogisticService $service */
|
|
|
$service = app("LogisticService");
|
|
$service = app("LogisticService");
|
|
|
$name = $service->assertExpressCompany($logisticNumber);
|
|
$name = $service->assertExpressCompany($logisticNumber);
|
|
@@ -30,6 +95,7 @@ class ReceiveRecordController extends Controller
|
|
|
"logistic_number" => $logisticNumber,
|
|
"logistic_number" => $logisticNumber,
|
|
|
"logistic_id" => $logisticId,
|
|
"logistic_id" => $logisticId,
|
|
|
"record_at" => $dateTime,
|
|
"record_at" => $dateTime,
|
|
|
|
|
+ "warehouse_id" => $warehouse,
|
|
|
]);
|
|
]);
|
|
|
$this->success(["recordAt"=>$dateTime,"logistic"=>$logistic->name??"未知"]);
|
|
$this->success(["recordAt"=>$dateTime,"logistic"=>$logistic->name??"未知"]);
|
|
|
}catch(QueryException $qe){
|
|
}catch(QueryException $qe){
|