Browse Source

Merge branch 'master' into Haozi

# Conflicts:
#	app/Imports/InventoryCompareImport.php
#	routes/web.php
haozi 5 years ago
parent
commit
b7bbfaa24d
60 changed files with 1383 additions and 1006 deletions
  1. 3 5
      app/Events/WeighedEvent.php
  2. 7 3
      app/Exceptions/Handler.php
  3. 8 63
      app/Http/Controllers/MeasureMonitorController.php
  4. 10 1
      app/Http/Controllers/OrderController.php
  5. 3 6
      app/Http/Controllers/OwnerController.php
  6. 13 10
      app/Http/Controllers/PackageController.php
  7. 30 14
      app/Http/Controllers/ProcessController.php
  8. 1 69
      app/Http/Controllers/StoreItemsController.php
  9. 84 24
      app/Http/Controllers/TestController.php
  10. 38 36
      app/Http/Controllers/WaybillController.php
  11. 5 20
      app/Http/Controllers/WeighExceptedController.php
  12. 3 34
      app/Http/Controllers/api/thirdPart/flux/PackageController.php
  13. 2 2
      app/Http/Controllers/api/thirdPart/flux/ProcessController.php
  14. 56 21
      app/Http/Controllers/api/thirdPart/weight/PackageController.php
  15. 4 8
      app/Imports/InventoryCompareImport.php
  16. 3 11
      app/Jobs/FetchPackageFromOracle.php
  17. 2 2
      app/Jobs/MarkPackageExcepted.php
  18. 3 3
      app/Jobs/MeasuringMachineQueue.php
  19. 2 4
      app/Listeners/FulfillFulfillPackageCustomer.php
  20. 4 0
      app/OracleActAllocationDetails.php
  21. 1 1
      app/OracleDOCOrderHeader.php
  22. 2 2
      app/Order.php
  23. 220 1
      app/OrderPackage.php
  24. 3 3
      app/Owner.php
  25. 9 16
      app/Package.php
  26. 10 0
      app/Providers/AppServiceProvider.php
  27. 6 0
      app/Services/LogisticService.php
  28. 13 0
      app/Services/OracleActAllocationDetailService.php
  29. 7 0
      app/Services/OracleDOCOrderHeaderService.php
  30. 5 21
      app/Services/OrderIssueService.php
  31. 33 0
      app/Services/OrderPackageService.php
  32. 64 4
      app/Services/OrderService.php
  33. 14 1
      app/Services/OwnerService.php
  34. 12 8
      app/Services/PackageService.php
  35. 15 4
      app/Services/PackageStatisticsService.php
  36. 7 3
      app/Services/ProcessService.php
  37. 2 2
      app/Services/RejectedService.php
  38. 16 0
      app/Services/ShopService.php
  39. 12 5
      app/Services/WaybillService.php
  40. 18 10
      app/Services/WeighExceptedService.php
  41. 1 1
      app/User.php
  42. 15 77
      app/Waybill.php
  43. 0 12
      database/factories/PackagesFactory.php
  44. 33 0
      database/migrations/2020_09_10_143926_drop_shop_unique_name_index.php
  45. 32 0
      database/migrations/2020_09_11_101357_change_table_order_package_change_column_order_id_not_null.php
  46. 0 1
      resources/views/order/issue/index.blade.php
  47. 1 1
      resources/views/personnel/checking-in/clockAudit.blade.php
  48. 1 1
      resources/views/process/create.blade.php
  49. 0 1
      resources/views/process/statistic.blade.php
  50. 22 6
      resources/views/waybill/delivering.blade.php
  51. 53 111
      resources/views/waybill/index.blade.php
  52. 45 22
      resources/views/waybill/recycle.blade.php
  53. 25 26
      resources/views/weight/measureMonitor/index.blade.php
  54. 11 7
      resources/views/weight/package/index.blade.php
  55. 310 318
      routes/web.php
  56. 76 0
      tests/Routes/WebTest.php
  57. 0 3
      tests/Unit/PackageTest.php
  58. 1 1
      tests/package.http
  59. 6 0
      tests/route.http
  60. 1 1
      tests/webApi/test.http

+ 3 - 5
app/Events/WeighedEvent.php

@@ -2,12 +2,10 @@
 
 namespace App\Events;
 
-use App\Http\Controllers\Controller;
-use App\Package;
+use App\OrderPackage;
 use Illuminate\Broadcasting\Channel;
 use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
 use Illuminate\Queue\SerializesModels;
-use Illuminate\Broadcasting\PrivateChannel;
 
 class WeighedEvent implements ShouldBroadcast
 {
@@ -17,10 +15,10 @@ class WeighedEvent implements ShouldBroadcast
 
     /**
      * Create a new event instance.
-     * @param Package $package
+     * @param OrderPackage $package
      * @return void
      */
-    public function __construct(Package $package)
+    public function __construct(OrderPackage $package)
     {
         $this->package=$package;
     }

+ 7 - 3
app/Exceptions/Handler.php

@@ -50,12 +50,13 @@ class Handler extends ExceptionHandler
      *
      * @param Request $request
      * @param Throwable $exception
-     * @return Response
+     * @return \Symfony\Component\HttpFoundation\Response
      * @throws Throwable
      */
     public function render($request, Throwable $exception)
     {
-        if (method_exists($exception,'getStatusCode')) {
+        try{
+            if (method_exists($exception,'getStatusCode')) {
             $code = $exception->getStatusCode();
             Controller::logS('exception',$code,$exception->getTraceAsString().'|| ||'.json_encode($request));
             switch ($code){
@@ -63,8 +64,11 @@ class Handler extends ExceptionHandler
                 case 404:return response()->view('exception.404');
                 default: return response()->view('exception.default',compact('code'));
             }
+            }
+            Controller::logS('exception',class_basename($exception),$exception->getTraceAsString().'|| ||'.json_encode($request));
+        }catch (\Exception $e){
+
         }
-        Controller::logS('exception',class_basename($exception),$exception->getTraceAsString().'|| ||'.json_encode($request));
         return parent::render($request, $exception);
     }
 }

+ 8 - 63
app/Http/Controllers/MeasureMonitorController.php

@@ -3,7 +3,7 @@
 namespace App\Http\Controllers;
 
 use App\MeasuringMachine;
-use App\Package;
+use App\OrderPackage;
 use Illuminate\Http\Request;
 require_once '../app/library/baidu-api-speech/AipSpeech.php';
 class MeasureMonitorController extends Controller
@@ -11,12 +11,11 @@ class MeasureMonitorController extends Controller
 
     /**
      * Display a listing of the resource.
-     *
      * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
      */
-    public function index(Request $request)
+    public function index()
     {
-        $measuringMachines=MeasuringMachine::select('id','name','code','status')->get();
+        $measuringMachines=MeasuringMachine::query()->select('id','name','code','status')->get();
         $laravelEchoPrefix = config('database.redis.options.prefix');
         return view('weight.measureMonitor.index',compact('laravelEchoPrefix','measuringMachines'));
     }
@@ -24,10 +23,12 @@ class MeasureMonitorController extends Controller
     public function data(Request $request){
         $measuring_machine_id=$request->input('id');
         if ($measuring_machine_id){
-            $package=Package::with('owner','paperBox','measuringMachine')->where('measuring_machine_id',$measuring_machine_id)->orderBy('id','DESC')->first();
+            $package=OrderPackage::with(['order'=>function($query){
+                $query->with('owner','logistic');
+            },'paperBox','measuringMachine'])->where('measuring_machine_id',$measuring_machine_id)->orderBy('id','DESC')->first();
             if (!$package){
-                $measuringMachine=MeasuringMachine::where('id',$measuring_machine_id)->first();
-                $package=new Package();
+                $measuringMachine=MeasuringMachine::query()->where('id',$measuring_machine_id)->first();
+                $package=new OrderPackage();
                 if ($measuringMachine)$package->measuringMachine=$measuringMachine;
             }
             return $package;
@@ -55,60 +56,4 @@ class MeasureMonitorController extends Controller
         }
         return "/storage/".$logistic.'.mp3';
     }
-
-    /**
-     * Store a newly created resource in storage.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @return \Illuminate\Http\Response
-     */
-    public function store(Request $request)
-    {
-        //
-    }
-
-    /**
-     * Display the specified resource.
-     *
-     * @param  int  $id
-     * @return \Illuminate\Http\Response
-     */
-    public function show($id)
-    {
-        //
-    }
-
-    /**
-     * Show the form for editing the specified resource.
-     *
-     * @param  int  $id
-     * @return \Illuminate\Http\Response
-     */
-    public function edit($id)
-    {
-        //
-    }
-
-    /**
-     * Update the specified resource in storage.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  int  $id
-     * @return \Illuminate\Http\Response
-     */
-    public function update(Request $request, $id)
-    {
-        //
-    }
-
-    /**
-     * Remove the specified resource from storage.
-     *
-     * @param  int  $id
-     * @return \Illuminate\Http\Response
-     */
-    public function destroy($id)
-    {
-        //
-    }
 }

+ 10 - 1
app/Http/Controllers/OrderController.php

@@ -229,7 +229,16 @@ class OrderController extends Controller
                       left join BAS_Customer on BAS_Customer.customerid=DOC_ORDER_HEADER.customerid
                       left join  BAS_SKU on DOC_Order_Details.CustomerID=BAS_SKU.CustomerID and DOC_Order_Details.SKU=BAS_SKU.SKU
                       left join ACT_ALLOCATION_DETAILS on DOC_Order_Details.orderno=ACT_ALLOCATION_DETAILS.orderno and
-                      DOC_Order_Details.orderlineno=ACT_ALLOCATION_DETAILS.orderlineno WHERE 1=1";
+                      DOC_Order_Details.orderlineno=ACT_ALLOCATION_DETAILS.orderlineno GROUP BY ACT_ALLOCATION_DETAILS.picktotraceid,
+                      ACT_ALLOCATION_DETAILS.CHECKTIME,DOC_ORDER_HEADER.addtime,DOC_ORDER_HEADER.C_PROVINCE,DOC_ORDER_HEADER.C_CITY,
+                      DOC_ORDER_HEADER.C_DISTRICT,DOC_ORDER_HEADER.C_CONTACT,DOC_ORDER_HEADER.OrderNo,DOC_ORDER_HEADER.SOStatus,DOC_ORDER_HEADER.WAREHOUSEID,
+                      DOC_ORDER_HEADER.CustomerID,DOC_ORDER_HEADER.C_Tel2,DOC_ORDER_HEADER.CarrierName,DOC_ORDER_HEADER.IssuePartyName,
+                      DOC_ORDER_HEADER.EDIREMARKS2,DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1, DOC_ORDER_HEADER.soreference5,
+                      DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
+                      DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,
+                      DOC_ORDER_HEADER.OrderTime,DOC_Order_Details.CustomerID,DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,
+                      DOC_Order_Details.LineStatus,DOC_Order_Details.OrderLineNo,order_code.codename_c,order_detail_code.codename_c,BAS_Customer.descr_c,
+                      BAS_SKU.Alternate_SKU1,BAS_SKU.Descr_C ORDER BY DOC_ORDER_HEADER.ADDTIME desc";
         //转导出
         if ($checkData || $export){
             $post = Http::post(config('go.export.url'),['type'=>'order','sql'=>$sql]);

+ 3 - 6
app/Http/Controllers/OwnerController.php

@@ -24,7 +24,7 @@ class OwnerController extends Controller
     public function index()
     {
         if(!Gate::allows('货主-查询')){ return redirect(url('/'));  }
-        $owners=Owner::orderBy('id','desc')->paginate(25);
+        $owners=Owner::query()->orderBy('id','desc')->whereNull('deleted_at')->paginate(25);
         return view('maintenance.owner.index',['owners'=>$owners]);
     }
 
@@ -124,8 +124,6 @@ class OwnerController extends Controller
     public function destroy(Owner $owner)
     {
         if(!Gate::allows('货主-删除')){ return redirect(url('/'));  }
-//        $authority=Authority::where('name',"_{$owner['id']}")->first();
-//        if($authority)$authority->delete();
         $re=$owner->delete();
         $this->log(__METHOD__,__FUNCTION__,$owner->toJson(),Auth::user()['id']);
         return ['success'=>$re];
@@ -133,15 +131,14 @@ class OwnerController extends Controller
     public function recycle()
     {
         if(!Gate::allows('货主-删除')){ return redirect(url('/'));  }
-        $owners=Owner::orderBy('id','desc')->withTrashed()->whereNotNull('deleted_at')->paginate(25);
+        $owners=Owner::query()->orderBy('id','desc')->whereNotNull('deleted_at')->paginate(25);
         return view('maintenance.owner.recycle',['owners'=>$owners]);
     }
     public function restoreSelected(Request $request)
     {
         if(!Gate::allows('货主-删除')){ return ['success'=>'false','fail_info'=>"没有权限"];  }
         $id=$request->input('id');
-        $owner=Owner::withTrashed()->where('id',$id)->first();
-        $owner->restore();
+        $owner=Owner::query()->whereNotNull('deleted_at')->where('id',$id)->delete();
         $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','owner'=>$owner];
     }

+ 13 - 10
app/Http/Controllers/PackageController.php

@@ -2,9 +2,10 @@
 
 namespace App\Http\Controllers;
 
-use App\Package;
+use App\OrderPackage;
 use App\PaperBox;
 use App\Services\LogisticService;
+use App\Services\OrderPackageService;
 use App\Services\OwnerService;
 use App\Services\PackageService;
 use App\Services\PackageStatisticsService;
@@ -35,6 +36,7 @@ class PackageController extends Controller
     {
         if(!Gate::allows('称重管理-查询')){ return redirect(url('/'));  }
         $paginateParams = $request->input();
+        /** @var PackageService */
         $packages = app('packageService')->paginate($request);
         return view('weight.package.index',['packages'=>$packages,'owners'=>$ownerService->getSelection(),'paginateParams'=>$paginateParams]);
     }
@@ -72,15 +74,17 @@ class PackageController extends Controller
         $successTip = '操作成功';
 
 
-        /** @var Package $package */
+        /** @var OrderPackage $package */
         if ($order_code){
-            $package=Package::query()->where('order_code',$order_code)->first();
+            $package=OrderPackage::query()->with(['order'=>function($query)use($order_code){
+                $query->where('code',$order_code) ;
+            }])->first();
         }else{
             if($batch_number){
-                $package=Package::query()->where('batch_number',$batch_number)->first();
+                $package=OrderPackage::query()->where('batch_number',$batch_number)->first();
 
             }elseif($logistic_number){
-                $package=Package::query()->where('logistic_number',$logistic_number)->first();
+                $package=OrderPackage::query()->where('logistic_number',$logistic_number)->first();
             }
         }
         $accomplishToWMS=new Api\thirdPart\flux\PackageController();
@@ -88,7 +92,7 @@ class PackageController extends Controller
             $this->log(__METHOD__,'活动波次开始同步_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
 //            $this->syncBatch($package->batch_number,$weight,null,null,null,Carbon::now(),null);
             $result=$accomplishToWMS->markWMSOnBatch($batch_number,$weight);
-            Package::createPackagesFromBatchCode($batch_number,$weight);
+            OrderPackage::createPackagesFromBatchCode($batch_number,$weight);
             if($package&&$package->isActivityBatch())
                 $package->unifyThisMeasureUnderSameBatch();
 
@@ -117,9 +121,8 @@ class PackageController extends Controller
             $this->log(__METHOD__,'create_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
 //            event(new WeighedEvent($package));
         }else{
-            $package=new Package([
-                'logistic_number'=>$logistic_number??'',
-                'delivery_number'=>$logistic_number??'',
+            /** @var OrderPackageService */
+            $package = app('orderPackageService')->firstOrCreate($logistic_number,[
                 'weight'=>$weight,
                 'weighed_at'=>Carbon::now(),
                 'status'=>"已上传",
@@ -158,7 +161,7 @@ class PackageController extends Controller
 
     public function export(Request $request){
         if(!Gate::allows('称重管理-查询')){ return '没有权限';  }
-        if ($request->checkAllSign){
+        if ($request->checkAllSign ?? false){
             $params = $request->input();
             unset($params['checkAllSign']);
             $sql = app('packageService')->getSql($params);

+ 30 - 14
app/Http/Controllers/ProcessController.php

@@ -222,6 +222,7 @@ class ProcessController extends Controller
         $total_cost=0;              //合计成本
         foreach ($processDailies as $processDailyOne){
             foreach ($processDailyOne->processDailyParticipants as $processDailyParticipant){
+                if (!$processDailyParticipant->unit_price && !$processDailyParticipant->hour_price) continue;
                 $duration_man_hours += $processDailyParticipant->hour_count;
                 if ($processDailyParticipant->unit_count){
                     $total_cost += ($processDailyParticipant->unit_count)*($processDailyParticipant->unit_price);
@@ -1018,20 +1019,35 @@ class ProcessController extends Controller
                     $this->log(__METHOD__,"二次加工单录入导入商品数据时添加货主".__FUNCTION__,json_encode($owner),Auth::user()['id']);
                 }
             }
-            $commodity = Commodity::query()->with('barcodes')->whereNull('owner_id')
+            $goods = Commodity::query()->with('barcodes')->whereNull('owner_id')
                 ->where('sku',$commodityData['sku'])->first();
-            if (!$commodity){
-                $commodity = Commodity::query()->create($commodityData);
-                $commodityBarCode=CommodityBarcode::query()->create([
-                    'code' => $barcode,
-                    'commodity_id' => $commodity->id
-                ]);
-                $commodity_barcodes = [$commodityBarCode];
-            }else $commodity_barcodes = $commodity->barcodes;
+            $commodity_barcodes = [];
+            if (!$goods){
+                $goods = Commodity::query()->create($commodityData);
+                if ($barcode){
+                    $commodityBarCode=CommodityBarcode::query()->create([
+                        'code' => $barcode,
+                        'commodity_id' => $goods->id
+                    ]);
+                    $commodity_barcodes = [$commodityBarCode];
+                }
+            }else {
+                if ($barcode){
+                    $commodity_barcodes = $goods->barcodes->toArray();
+                    $commodityBarCode = $goods->barcodes->where('code',$barcode)->first();
+                    if (!$commodityBarCode){
+                        $commodityBarCode = CommodityBarcode::query()->create([
+                            'code' => $barcode,
+                            'commodity_id' => $goods->id
+                        ]);
+                        array_push($commodity_barcodes,$commodityBarCode);
+                    }
+                }
+            }
             $this->log(__METHOD__,"二次加工单录入导入商品数据时添加商品及条码".__FUNCTION__,
-                json_encode($commodity)." || ".json_encode($commodity_barcodes),Auth::user()['id']);
-            $processContent=['bill_type'=>'入库单','commodity_id'=>$commodity->id,'wms_code'=>$wmsCode,'amount'=>$amount,
-                'commodity_name'=>$commodity->name,'commodity_barcodes'=>$commodity_barcodes,'commodity_sku'=>$commodity->sku,
+                json_encode($goods)." || ".json_encode($commodity_barcodes),Auth::user()['id']);
+            $processContent=['bill_type'=>'入库单','commodity_id'=>$goods->id,'wms_code'=>$wmsCode,'amount'=>$amount,
+                'commodity_name'=>$goods->name,'commodity_barcodes'=>$commodity_barcodes,'commodity_sku'=>$goods->sku,
                 'lineNo'=>1,'owner_id'=>$owner->id,'owner_name'=>$owner->name,'addBtnShow'=>false,'type'=>$request->type];
             array_push($processContents,$processContent);
         }
@@ -1118,8 +1134,8 @@ class ProcessController extends Controller
             'user_id'=>'required',
             'started_at'=>'required|date_format:H:i',
             'ended_at'=>'required|date_format:H:i',
-            'hour_price'=>'required_without:unit_price|min:0|max:999999|nullable|numeric',
-            'unit_price'=>'required_without:hour_price|min:0|max:999999|nullable|numeric',
+            'hour_price'=>'nullable|min:0|max:999999|nullable|numeric',
+            'unit_price'=>'nullable|min:0|max:999999|nullable|numeric',
             'dinner_duration'=>'nullable|integer',
             'hour_count'=>'required_with:hour_price|min:0|max:999999|nullable|numeric',
             'unit_count'=>'required_with:unit_price|min:0|max:999999|nullable|numeric',

+ 1 - 69
app/Http/Controllers/StoreItemsController.php

@@ -2,9 +2,7 @@
 
 namespace App\Http\Controllers;
 
-use App\Package;
 use App\StoreItems;
-use Illuminate\Http\Request;
 
 class StoreItemsController extends Controller
 {
@@ -15,73 +13,7 @@ class StoreItemsController extends Controller
      */
     public function index()
     {
-        $storeItems=StoreItems::orderBy('id','DESC')->paginate(50);
+        $storeItems=StoreItems::query()->orderBy('id','DESC')->paginate(50);
         return view('store.storeItem.index',['storeItems'=>$storeItems]);
     }
-
-    /**
-     * Show the form for creating a new resource.
-     *
-     * @return \Illuminate\Http\Response
-     */
-    public function create()
-    {
-        //
-    }
-
-    /**
-     * Store a newly created resource in storage.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @return \Illuminate\Http\Response
-     */
-    public function store(Request $request)
-    {
-        //
-    }
-
-    /**
-     * Display the specified resource.
-     *
-     * @param  \App\StoreItems  $storeItems
-     * @return \Illuminate\Http\Response
-     */
-    public function show(StoreItems $storeItems)
-    {
-        //
-    }
-
-    /**
-     * Show the form for editing the specified resource.
-     *
-     * @param  \App\StoreItems  $storeItems
-     * @return \Illuminate\Http\Response
-     */
-    public function edit(StoreItems $storeItems)
-    {
-        //
-    }
-
-    /**
-     * Update the specified resource in storage.
-     *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \App\StoreItems  $storeItems
-     * @return \Illuminate\Http\Response
-     */
-    public function update(Request $request, StoreItems $storeItems)
-    {
-        //
-    }
-
-    /**
-     * Remove the specified resource from storage.
-     *
-     * @param  \App\StoreItems  $storeItems
-     * @return \Illuminate\Http\Response
-     */
-    public function destroy(StoreItems $storeItems)
-    {
-        //
-    }
 }

+ 84 - 24
app/Http/Controllers/TestController.php

@@ -8,40 +8,27 @@ use App\Batch;
 use App\City;
 use App\Commodity;
 use App\Events\CancelOrder;
+use App\Log;
 use App\Logistic;
 use App\OracleActAllocationDetails;
-use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
-use App\OracleDOCWaveHeader;
-use App\OracleIdxAsrsReceive;
 use App\Order;
+use App\OrderPackage;
+use App\Owner;
 use App\Package;
-use App\Process;
-use App\ProcessesContent;
-use App\ProcessStatistic;
-use App\Rejected;
-use App\RejectedBill;
 use App\RejectedBillItem;
 use App\Services\InventoryCompareService;
-use App\Unit;
-use App\UploadFile;
+use App\Services\LogService;
+use App\Services\OrderPackageService;
 use App\User;
-use App\UserToken;
 use App\Waybill;
-use App\OracleBasCustomer;
-use App\WMSReflectReceive;
 use Carbon\Carbon;
-use Faker\Factory;
-use Illuminate\Support\Facades\Cache;
-use function Couchbase\zlibCompress;
-use function Couchbase\zlibDecompress;
-use Endroid\QrCode\Response\QrCodeResponse;
 use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
-use function PHPSTORM_META\map;
 use Zttp\Zttp;
 
 class TestController extends Controller
@@ -60,7 +47,6 @@ class TestController extends Controller
 
     function packageFromLog(Request $request)
     { //x        $packagesBatch=Package::where('batch_number',$batch_number)->first();
-
         ini_set('max_execution_time', 2500);
         ini_set('memory_limit', '1526M');
         $uploaded = 0;
@@ -97,7 +83,6 @@ class TestController extends Controller
         echo ($inventoryCompareService)->getCreatingMissionCode('安桥主品');
         echo ($inventoryCompareService)->getCreatingMissionCode('安桥主品');
         echo ($inventoryCompareService)->getCreatingMissionCode('安桥主品');
-
     }
 
     function setCache(Request $request)
@@ -184,8 +169,6 @@ class TestController extends Controller
 
     public function delme()
     {
-
-
         $fields = [
             'doc_order_header.userdefine1',
             'doc_order_header.userdefine2',
@@ -206,6 +189,41 @@ class TestController extends Controller
 
         dd($_temOracleInfo);
     }
+
+    public function mergerPackageData(){
+        ini_set('max_execution_time',36000);
+        ini_set('memory_limit','1526M');
+        $number = 3000;
+        $start_at = 1;
+        $sum = Package::query()->where('id','>', $start_at)->count();
+        $len = ceil($sum / $number);
+        $id = $start_at;
+        for ($i = 1;$i <= $len; $i++){
+            $packages = Package::query()->orderBy('id')->where('id','>',$id)->limit($number)->get();
+            $error = [];
+            foreach ($packages as $package){
+                /** @var $service OrderPackageService */
+                $service = app('orderPackageService');
+                $orderPackage =  $service->firstOrCreate($package->logistic_number,
+                    ['batch_number'=>$package->batch_number,
+                        'batch_rule'=>$package->batch_rule,
+                        'bulk'=>$package->bulk,
+                        'weight'=>$package->weight,
+                        'length'=>$package->length,
+                        'width'=>$package->width,
+                        'height'=>$package->height,
+                        'paper_box_id'=>$package->paper_box_id,
+                        'measuring_machine_id'=>$package->measuring_machine_id,
+                        'weighed_at'=>$package->weighed_at,
+                        'status'=>$package->status]);
+               if (!$orderPackage)array_push($error,$package->id);
+            }
+            LogService::log(__METHOD__,"同步时WMS中未找到这些订单",json_encode($error));
+            $id = $packages[count($packages)-1]->id;
+            echo $number.' a bunch done at:'.now()->toFormattedDateString().'<br>';
+        }
+    }
+
     public function excelIt()
     {
         $excel = new ExcelController();
@@ -279,7 +297,49 @@ class TestController extends Controller
     }
 
     function test(){
-        dd(app('oracleActAllocationDetailService')->paginate([]));
+        $ids = [];
+        $logs = Log::query()->select('description')->where('type','同步时WMS中未找到这些订单')->get();
+        foreach ($logs as $log){
+            $arr = [];
+            eval("\$arr = ".$log->description.'; ');
+            if (count($arr) < 1)continue;
+            $ids = array_merge($ids,$arr);
+        }
+        $ids = array_unique($ids);
+        $error = [];
+        foreach($ids as $id){
+            $package = Package::query()->find($id);
+            /** @var OrderPackageService */
+            $orderPackage =  app('orderPackageService')->firstOrCreate($package->logistic_number,
+                ['batch_number'=>$package->batch_number,
+                    'batch_rule'=>$package->batch_rule,
+                    'bulk'=>$package->bulk,
+                    'weight'=>$package->weight,
+                    'length'=>$package->length,
+                    'width'=>$package->width,
+                    'height'=>$package->height,
+                    'paper_box_id'=>$package->paper_box_id,
+                    'measuring_machine_id'=>$package->measuring_machine_id,
+                    'weighed_at'=>$package->weighed_at,
+                    'status'=>$package->status]);
+            if (!$orderPackage)array_push($error,$package->id);
+        }
+        if (count($error) > 0)LogService::log(__METHOD__,"同步时WMS中未找到这些订单_two",json_encode($error));
+    }
+
+    function test1(){
+        $package = OrderPackage::query()->whereNull('order_id')->first();
+        $package->load(['order'=>function($query){
+            $query->with('owner','logistic');
+        },'paperBox','measuringMachine']);
+        $logisticNumberController = new LogisticNumberFeatureController();
+        if (!$package->order){
+            $package->order = new Order();
+        }
+        if (!$package->order->logistic){
+            $package->order->logistic = $logisticNumberController->getLogisticByFeatures($package->logistic_number);
+        }
+        dd($package);
     }
 
     /*1*/

+ 38 - 36
app/Http/Controllers/WaybillController.php

@@ -63,9 +63,9 @@ class WaybillController extends Controller
     public function create(Request $request,OwnerService $ownerService)
     {
         if(!Gate::allows('运输管理-录入')){ return redirect(url('/'));  }
-        $type="";
-        if ($request->type==='ZF')$type='直发车';
-        if ($request->type==='ZX')$type='专线';
+        $type=$request->type ?? "";
+        if ($type==='ZF')$type='直发车';
+        if ($type==='ZX')$type='专线';
         return view('waybill.create',['owners'=>$ownerService->getSelection(),'type'=>$type]);
     }
 
@@ -74,6 +74,7 @@ class WaybillController extends Controller
         if(!Gate::allows('运输管理-录入')){ return redirect(url('/'));  }
         $id=false;
         $this->validatorWaybill($request,$id)->validate();
+        /** @var WaybillService */
         $waybill=app('waybillService')->store($request);
         $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('waybill/index')->with('successTip','新运单“'.$waybill->waybill_number.'”录入成功');
@@ -83,6 +84,7 @@ class WaybillController extends Controller
                          CityService $cityService,UnitService $unitService)
     {
         if(!Gate::allows('运输管理-编辑')){ return redirect(url('/'));  }
+        /** @var WaybillService */
         $waybill = app('waybillService')->find($id);
         if ($waybill->deliver_at){
             $waybill->deliver_at_date=Carbon::parse($waybill->deliver_at)->format('Y-m-d');
@@ -113,6 +115,7 @@ class WaybillController extends Controller
         $this->validatorWaybillDispatch($request,$id)->validate();
         $waybillPayoffParam = [];
         $waybillPayoffParam['total_receivable']=0;
+        /** @var WaybillService */
         $waybill = app('waybillService')->update($request,$id);
         if ($waybill->type=="直发车"){
             if ($waybill->charge)$waybillPayoffParam['total_receivable'] = ($waybill->charge);
@@ -161,10 +164,10 @@ class WaybillController extends Controller
         //多个计数标准,计算价格,取最贵
         if ($carrier_weight[0]&&$carrier_weight[1]&&$carrier_weight_unit_id[0]&&$carrier_weight_unit_id[1]){
             //城市价格区间不为空
-            $waybillPriceModelOne=WaybillPriceModel::where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
+            $waybillPriceModelOne=WaybillPriceModel::query()->where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
                 ->where('range_min','<',$carrier_weight[0])->where('range_max','>=',$carrier_weight[0])
                 ->where('unit_id',$carrier_weight_unit_id[0])->first();
-            $waybillPriceModelTwo=WaybillPriceModel::where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
+            $waybillPriceModelTwo=WaybillPriceModel::query()->where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
                 ->where('range_min','<',$carrier_weight[1])->where('range_max','>=',$carrier_weight[1])
                 ->where('unit_id',$carrier_weight_unit_id[1])->first();
             if ($waybillPriceModelOne&&$waybillPriceModelTwo){
@@ -178,8 +181,8 @@ class WaybillController extends Controller
             if ($waybillPriceModelTwo)return $waybillPriceModelTwo->id;
 
             //价格区间为空
-            $waybillPriceModelRangeOne=WaybillPriceModel::whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[0]])->first();
-            $waybillPriceModelRangeTwo=WaybillPriceModel::whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[1]])->first();
+            $waybillPriceModelRangeOne=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[0]])->first();
+            $waybillPriceModelRangeTwo=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[1]])->first();
             if ($waybillPriceModelRangeOne&&$waybillPriceModelRangeTwo){
                 if ($waybillPriceModelRangeOne->unit_price*$carrier_weight[0]>=$waybillPriceModelRangeTwo->unit_price*$carrier_weight[1]){
                     return $waybillPriceModelRangeOne->id;
@@ -191,10 +194,10 @@ class WaybillController extends Controller
             if ($waybillPriceModelRangeTwo)return $waybillPriceModelRangeTwo->id;
 
             //城市为空
-            $city=City::where('id',$destination_city_id)->select('province_id')->first();
-            $waybillPriceModelProvinceOne=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL',
+            $city=City::query()->where('id',$destination_city_id)->select('province_id')->first();
+            $waybillPriceModelProvinceOne=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL',
                 [$carrier_id,$city->province_id,$carrier_weight_unit_id[0],$carrier_weight[0],$carrier_weight[0]])->first();
-            $waybillPriceModelProvinceTwo=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL',
+            $waybillPriceModelProvinceTwo=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL',
                 [$carrier_id,$city->province_id,$carrier_weight_unit_id[1],$carrier_weight[1],$carrier_weight[1]])->first();
             if ($waybillPriceModelProvinceOne&&$waybillPriceModelProvinceTwo){
                 if ($waybillPriceModelProvinceOne->unit_price*$carrier_weight[0]>=$waybillPriceModelProvinceTwo->unit_price*$carrier_weight[1]){
@@ -207,9 +210,9 @@ class WaybillController extends Controller
             if ($waybillPriceModelProvinceTwo)return $waybillPriceModelProvinceTwo->id;
 
             //城市价格区间都为空
-            $waybillPriceModelProvinceRangeOne=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL',
+            $waybillPriceModelProvinceRangeOne=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL',
                 [$carrier_id,$city->province_id,$carrier_weight_unit_id[0]])->first();
-            $waybillPriceModelProvinceRangeTwo=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL',
+            $waybillPriceModelProvinceRangeTwo=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL',
                 [$carrier_id,$city->province_id,$carrier_weight_unit_id[1]])->first();
             if ($waybillPriceModelProvinceRangeOne&&$waybillPriceModelProvinceRangeTwo){
                 if ($waybillPriceModelProvinceRangeOne->unit_price*$carrier_weight[0]>=$waybillPriceModelProvinceRangeTwo->unit_price*$carrier_weight[1]){
@@ -224,23 +227,23 @@ class WaybillController extends Controller
         for ($i=0;$i<count($carrier_weight);$i++){
             if ($carrier_weight[$i]&&$carrier_weight_unit_id[$i]){
                 //城市价格区间不为空
-                $waybillPriceModel=WaybillPriceModel::where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
+                $waybillPriceModel=WaybillPriceModel::query()->where('carrier_id',$carrier_id)->where('city_id',$destination_city_id)
                     ->where('range_min','<',$carrier_weight[$i])->where('range_max','>=',$carrier_weight[$i])
                     ->where('unit_id',$carrier_weight_unit_id[$i])->first();
                 if($waybillPriceModel)return  $waybillPriceModel->id;
 
                 //价格区间为空
-                $waybillPriceModelRange=WaybillPriceModel::whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[$i]])->first();
+                $waybillPriceModelRange=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND city_id = ? AND unit_id = ? AND range_max IS NULL',[$carrier_id,$destination_city_id,$carrier_weight_unit_id[$i]])->first();
                 if ($waybillPriceModelRange){ return $waybillPriceModelRange->id;}
 
                 //城市为空
                 $city=City::where('id',$destination_city_id)->select('province_id')->first();
-                $waybillPriceModelProvince=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL',
+                $waybillPriceModelProvince=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max >= ? AND range_min < ? AND city_id IS NULL',
                     [$carrier_id,$city->province_id,$carrier_weight_unit_id[$i],$carrier_weight[$i],$carrier_weight[$i]])->first();
                 if ($waybillPriceModelProvince){return $waybillPriceModelProvince->id;}
 
                 //城市价格区间都为空
-                $waybillPriceModelProvinceRange=WaybillPriceModel::whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL',
+                $waybillPriceModelProvinceRange=WaybillPriceModel::query()->whereRaw('carrier_id = ? AND province_id = ? AND unit_id = ? AND range_max IS NULL AND city_id IS NULL',
                     [$carrier_id,$city->province_id,$carrier_weight_unit_id[$i]])->first();
                 if ($waybillPriceModelProvinceRange){return $waybillPriceModelProvinceRange->id;}
             }
@@ -290,8 +293,8 @@ class WaybillController extends Controller
         $result=$this->checkWaybillPriceModel($carrier_id,$destination_city_id,$carrier_weight,$carrier_weight_unit_id);
         if (!$result){
             //单位为kg,T时
-            $unitKG=Unit::where('name','kg')->first();
-            $unitT=Unit::where('name','T')->first();
+            $unitKG=Unit::query()->where('name','kg')->first();
+            $unitT=Unit::query()->where('name','T')->first();
             if ($carrier_weight_unit_id[0]==$unitKG->id){
                 $carrier_weight_unit_id[0]=$unitT->id;
                 $carrier_weight[0]=$carrier_weight[0]/1000;
@@ -325,7 +328,7 @@ class WaybillController extends Controller
         if(!Gate::allows('运输管理-编辑')){ return redirect(url('/'));  }
         $this->validatorWaybill($request,$id)->validate();
         $data=$request->input();
-        $waybill=Waybill::find($id);
+        $waybill=app('waybillService')->find($id);
         $waybill->fill($data);
         if ($waybill->save()){
             $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
@@ -336,7 +339,7 @@ class WaybillController extends Controller
     public function waybillAudit(Request $request){
         if(!Gate::allows('运输管理-运单审核')){ return redirect(url('/'));  }
         $id=$request->input('id');
-        $waybill=Waybill::find($id);
+        $waybill=app('waybillService')->find($id);
         $isAudit=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->first();
         if (empty($isAudit)){
             $waybillAuditLog=new WaybillAuditLog([
@@ -356,14 +359,14 @@ class WaybillController extends Controller
 
     public function waybillEdit($id){
         if(!Gate::allows('运输管理-编辑')){ return redirect(url('/'));  }
-        $waybill=Waybill::find($id);
+        $waybill=app('waybillService')->find($id);
         $owners=Owner::get();
         return view('waybill.waybillEdit',['waybill'=>$waybill,'owners'=>$owners]);
     }
     public function waybillRetreatAudit(Request $request){
         if(!Gate::allows('运输管理-调度')){ return redirect(url('/'));  }
         $id=$request->input('id');
-        $waybill=Waybill::find($id);
+        $waybill=app('waybillService')->find($id);
         WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->delete();
         $waybill->status='待重审';
         $result=$waybill->save();
@@ -373,15 +376,15 @@ class WaybillController extends Controller
     public function waybillEndAudit(Request $request){
         if(!Gate::allows('运输管理-调度审核')){ return redirect(url('/'));  }
         $id=$request->input('id');
-        $waybill=Waybill::query()->with(["owner","carrier","origination_city","destination_city","carType",'priceModel',"amountUnit",
-            "warehouse_weight_unit","carrier_weight_unit","warehouse_weight_unit_other","carrier_weight_unit_other"])->find($id);
+        $waybill=Waybill::query()->with(["owner","carrier","originationCity","destinationCity","carType",'priceModel',"amountUnit",
+            "warehouseWeightUnit","carrierWeightUnit","warehouseWeightUnitOther","carrierWeightUnitOther"])->find($id);
         if (!$waybill->charge&&!$waybill->collect_fee)return ['exception'=>'收费或到付费用未填!'];
         if ($waybill->charge==0&&$waybill->collect_fee==0)return ['exception'=>'收费与到付费用都为0!'];
         if ($waybill->type=='专线'){
             if (!$waybill->carrier_weight_other||$waybill->carrier_weight_other==0)return ['exception'=>'承运商计重未填或为0!'];
             if (!$waybill->carrier_weight_unit_id_other)return ['exception'=>'承运商计重单位未选!'];
         }
-        $isAudit=WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"调度阶段"])->first();
+        $isAudit=WaybillAuditLog::query()->whereRaw('waybill_id = ? and audit_stage = ?',[$id,"调度阶段"])->first();
         if (empty($isAudit)){
             $waybillAuditLog=new WaybillAuditLog([
                 'waybill_id'=>$id,
@@ -434,12 +437,12 @@ class WaybillController extends Controller
             "ordering_remark"=>$waybill->ordering_remark,
             "carrier_name"=>$waybill->carrier ? $waybill->carrier->name : null,
             "carrier_bill"=>$waybill->carrier_bill,
-            "origination_city_name"=>$waybill->origination_city ? $waybill->origination_city->name : null,
-            "destination_city_name"=>$waybill->destination_city ? $waybill->destination_city->name : null,
-            "warehouse_weight"=>$waybill->warehouse_weight.($waybill->warehouse_weight_unit ? $waybill->warehouse_weight_unit->name : ''),
-            "carrier_weight"=>$waybill->carrier_weight.($waybill->carrier_weight_unit ? $waybill->carrier_weight_unit->name : ''),
-            "warehouse_weight_other"=>$waybill->warehouse_weight_other.($waybill->warehouse_weight_unit_other ? $waybill->warehouse_weight_unit_other->name : ''),
-            "carrier_weight_other"=>$waybill->carrier_weight_other.($waybill->carrier_weight_unit_other ? $waybill->carrier_weight_unit_other->name : ''),
+            "origination_city_name"=>$waybill->originationCity ? $waybill->originationCity->name : null,
+            "destination_city_name"=>$waybill->destinationCity ? $waybill->destinationCity->name : null,
+            "warehouse_weight"=>$waybill->warehouse_weight.($waybill->warehouseWeightUnit ? $waybill->warehouseWeightUnit->name : ''),
+            "carrier_weight"=>$waybill->carrier_weight.($waybill->carrierWeightUnit ? $waybill->carrierWeightUnit->name : ''),
+            "warehouse_weight_other"=>$waybill->warehouse_weight_other.($waybill->warehouseWeightUnitOther ? $waybill->warehouseWeightUnitOther->name : ''),
+            "carrier_weight_other"=>$waybill->carrier_weight_other.($waybill->carrierWeightUnitOther ? $waybill->carrierWeightUnitOther->name : ''),
             "car_type_name"=>$waybill->carType ? $waybill->carType->name : null,
             "fee"=>$waybill->fee,
             "pick_up_fee"=>$waybill->pick_up_fee,
@@ -471,7 +474,7 @@ class WaybillController extends Controller
         if(!Gate::allows('运输管理-图片上传')){ return '没有权限';  }
         $file=$request->file('file');
         $waybill_number=$request->input('waybill_number');
-        $waybill=Waybill::where('waybill_number',$waybill_number)->first();
+        $waybill=Waybill::query()->where('waybill_number',$waybill_number)->first();
         if (!$waybill){
             return ['success'=>false,'error'=>"未找到该运单!"];
         }
@@ -731,10 +734,10 @@ class WaybillController extends Controller
     // 回收站
     public function recycle(Request $request){
         if(!Gate::allows('运输管理-删除')){return redirect('/');}
-        $user = Auth::user();
         $paginate = $request->input('paginate')??50;
-        $waybills = Waybill::with(['owner','waybillAuditLogs' => function ($query) {
-            return $query->with('user');
+        $waybills = Waybill::with(['owner','carrier','amountUnit','warehouseWeightUnit','carrierWeightUnit',
+            'warehouseWeightUnitOther','carrierWeightUnitOther','carType','waybillAuditLogs' => function ($query) {
+            $query->with('user');
         }])->orderBy('deleted_at', 'DESC')->withTrashed()->whereNotNull('deleted_at')->paginate(50);
         $total = $waybills->count();
         $paginateParams = [];
@@ -748,7 +751,6 @@ class WaybillController extends Controller
         $ids = $request->input('ids')??'';
         if($ids == ''){return ['success'=>'false','fail_info'=>'没有可恢复对象'];}
         $waybills =  Waybill::withTrashed()->whereIn('id',$ids)->get();
-        $result = '';
         $waybills->each(function (Waybill $waybill){
             $waybill->restore();
         });

+ 5 - 20
app/Http/Controllers/WeighExceptedController.php

@@ -2,14 +2,12 @@
 
 namespace App\Http\Controllers;
 
-use App\Exports\Export;
-use App\Package;
+use App\OrderPackage;
+use App\Services\OrderPackageService;
 use Exception;
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Http;
-use Maatwebsite\Excel\Facades\Excel;
 
 class WeighExceptedController extends Controller
 {
@@ -21,28 +19,15 @@ class WeighExceptedController extends Controller
     public function indexCreate(Request $request)
     {
         if(!Gate::allows('称重管理-查看异常')){ return redirect(url('/'));  }
-        $paginate=$request->input('paginate');
-        $weightExcepteds=Package::query()->select('id','status','logistic_number','logistic_id','measuring_machine_id','weighed_at','weight','length','width','height','bulk','paper_box_id')->
-        where('status','上传异常')->orWhere('status','测量异常')->orderBy('created_at','DESC');
-        if ($paginate){
-            $weightExcepteds=$weightExcepteds->paginate($paginate);
-        }else{
-            $weightExcepteds=$weightExcepteds->paginate(50);
-        };
+        /** @var OrderPackageService */
+        $weightExcepteds = app('orderPackageService')->createExceptionPaginate($request->paginate ?? 50);
         return view('weight.weightExcepted.index',['weightExcepteds'=>$weightExcepteds,'view'=>'indexCreate']);
     }
 
     public function indexIssued(Request $request)
     {
         if(!Gate::allows('称重管理-查看异常')){ return redirect(url('/'));  }
-        $paginate=$request->input('paginate');
-        $weightExcepteds=Package::query()->select('id','owner_id','logistic_number','created_at','delivery_number','batch_number','batch_rule','recipient','recipient_mobile','logistic_id')->
-        where('status','下发异常')->orWhere('status','记录异常')->orWhere('status','已上传异常')->orderBy('created_at','DESC');
-        if ($paginate){
-            $weightExcepteds=$weightExcepteds->paginate($paginate);
-        }else{
-            $weightExcepteds=$weightExcepteds->paginate(50);
-        };
+        $weightExcepteds=app('orderPackageService')->issueExceptionPaginate($request->paginate ?? 50);
         return view('weight.weightExcepted.index',['weightExcepteds'=>$weightExcepteds,'view'=>'indexIssued']);
     }
 

+ 3 - 34
app/Http/Controllers/api/thirdPart/flux/PackageController.php

@@ -3,22 +3,14 @@
 namespace App\Http\Controllers\Api\thirdPart\flux;
 
 use App\Http\Controllers\Controller;
-use App\Jobs\FetchPackageFromOracle;
-use App\Logistic;
-use App\OracleDOCOrderDetail;
-use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
 use App\OracleDOCWaveHeader;
 use App\OracleIdxAsrsReceive;
-use App\Owner;
-use App\Package;
-use App\WMSReflectPackage;
+use App\OrderPackage;
 use Carbon\Carbon;
 use Illuminate\Http\Request;
-use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Validator;
-use Zttp\Zttp;
 
 class PackageController extends Controller
 {
@@ -210,7 +202,7 @@ class PackageController extends Controller
 //            return ['result'=>'false'];
 //        }
 //    }
-    public function accomplishToWMS(Package $package)
+    public function accomplishToWMS(OrderPackage $package)
     {
         try{
             $idxAsrsReceive=OracleIdxAsrsReceive::where('userdefine1',$package['logistic_number'])->first();
@@ -221,30 +213,7 @@ class PackageController extends Controller
             if(!$docOrderPackingSummary){
                 OracleDocOrderPackingSummary::create(['traceid'=>$package['logistic_number'],'orderno'=>$package['oracleInfo']['orderno'],'grossweight'=>$package['weight'],'addwho'=>'WAS','addtime'=>Carbon::now(),'editwho'=>'WAS','edittime'=>Carbon::now()]);
             }
-//            $json=["request"=>['TASKID'=>$package->WMSReflectPackage_name,
-//                'SOReference5'=>$package->logistic_number,
-//                'Weigh'=>$package->weight,
-//                'Addwho'=>'',
-//                'Addtime'=>Carbon::now(),
-//                'Package'=>$package->paperBox_name,
-//                'USERDEFINE1'=>$package->batch_number,
-//                'USERDEFINE2'=>$package->batch_rule,
-//                'USERDEFINE3'=>'OK',
-//            ]];
-//            $json=json_encode($json);
-//            $url=url(config('api.flux.package.new'));
-//            $response = Zttp::post($url, json_decode($json));
-//            $this->log(__METHOD__,'Sign'.__FUNCTION__,json_encode($response->json()),null);
-//            $response=$response->json();
-//            $noIssues=true;
-//            if(!$response||!isset($response['response'])||!$response['response']['flag']=='Y'){
-//                $noIssues=false;
-//            }
-//            if($noIssues&&$response['response']['flag']=='Y'){
-//                $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
-//                return ['result'=>'success'];
-//            }
-                $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,"称重写入WMS成功:".json_encode($package),null);
+            $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,"称重写入WMS成功:".json_encode($package),null);
             return ['result'=>'success'];
         }catch (\Exception $exception){
             Controller::logS(__METHOD__,'Exception_'.__FUNCTION__,'称重写入WMS请求异常:'.$exception->getMessage(),null);

+ 2 - 2
app/Http/Controllers/api/thirdPart/flux/ProcessController.php

@@ -43,7 +43,7 @@ class ProcessController extends Controller
         }
         $docOrders=OracleDOCOrderDetail::where("OrderNo",$wms_code)->get();//出库单
         if (count($docOrders)>0){
-            $owners=Owner::withTrashed()->where("code",$docOrders[0]->customerid)->get();
+            $owners=Owner::query()->where("code",$docOrders[0]->customerid)->get();
             if ($owners->isEmpty()){
                 $owner=$this->storeOwner($docOrders[0]->customerid);
             }else{
@@ -156,7 +156,7 @@ class ProcessController extends Controller
         $commodityBarCodeData=[];
         $commodityBarCodeTem=[];
         $owners_code=array_column($oracleBasSkus->toArray(),'customerid');
-        $ownersTem=Owner::withTrashed()->whereIn('code',$owners_code)->get();
+        $ownersTem=Owner::query()->whereIn('code',$owners_code)->get();
         $owners=array_column($ownersTem->toArray(),'id','code');
         for($i=0;$i<count($oracleBasSkus);$i++){
             if (!$owners[$oracleBasSkus[$i]->customerid])$owners[$oracleBasSkus[$i]->customerid]=$this->storeOwner($oracleBasSkus[$i]->customerid);

+ 56 - 21
app/Http/Controllers/api/thirdPart/weight/PackageController.php

@@ -5,10 +5,11 @@ namespace App\Http\Controllers\Api\thirdPart\weight;
 use App\Events\WeighedEvent;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\LogisticNumberFeatureController;
-use App\Jobs\MeasuringMachineQueue;
 use App\Jobs\FetchPackageFromOracle;
 use App\MeasuringMachine;
-use App\Package;
+use App\Order;
+use App\OrderPackage;
+use App\Services\OrderService;
 use App\Waybill;
 use Illuminate\Http\Request;
 use Illuminate\Support\Carbon;
@@ -175,11 +176,12 @@ class PackageController extends Controller
             return json_encode(["msg"=>$errors,"code"=>500,"data"=>null]);
         }
 
-        $measuringMachine=MeasuringMachine::firstOrCreate(['code'=>$request['id']]);
+        $measuringMachine=MeasuringMachine::query()->firstOrCreate(['code'=>$request['id']]);
         $measuringMachine->turnOn();
         $measuringMachine->turnOffInMinutes(30);
 
-        $package=Package::where('logistic_number',$request['barcode'])->first();
+        /** @var OrderPackage $package */
+        $package=OrderPackage::query()->where('logistic_number',$request['barcode'])->first();
 
         $edges=[$request['length']??0,$request['width']??0,$request['height']??0];
         rsort($edges);
@@ -213,14 +215,37 @@ class PackageController extends Controller
                 }catch (\Exception $e){
                     $package->status="未上传";
                 }
+            }
+            try{
                 $package->save();
+                $package->load(['order'=>function($query){
+                    $query->with('owner','logistic');
+                },'paperBox','measuringMachine']);
+                $logisticNumberController = new LogisticNumberFeatureController();
+                if (!$package->order){
+                    $package->order = new Order();
+                }
+                if (!$package->order->logistic){
+                    $package->order->logistic = $logisticNumberController->getLogisticByFeatures($package->logistic_number);
+                }
+            }catch (\Exception $e){
+                $response=["msg"=>"称重下发修改时发生错误!".json_encode($e),"code"=>500,"data"=>null];
+                $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.json_encode($e),null);
+                return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
         }
         if (!$package){
             $logisticNumber=$request['barcode'];
-            $package=new Package([
+            /** @var $orderService OrderService */
+            $orderService = app('orderService');
+            $order = $orderService->logisticNumberCreateOrder($logisticNumber);
+            if (!$order) {
+                $response=["msg"=>"保存时发生错误(未在WMS找到该单)!","code"=>500,"data"=>null];
+                return json_encode($response,JSON_UNESCAPED_UNICODE);
+            }
+            $package=new OrderPackage([
+                'order_id' => $order->id,
                 'logistic_number'=>$logisticNumber,
-                'delivery_number'=>$logisticNumber,
                 'measuring_machine_id'=>$measuringMachine->id,
                 'weight'=>$request['weight'],
                 'length'=>$edges[0],
@@ -234,9 +259,19 @@ class PackageController extends Controller
             $package->fetchPaperBox();
             try{
                 $package->save();
+                $package->load(['order'=>function($query){
+                    $query->with('owner','logistic');
+                },'paperBox','measuringMachine']);
+                $logisticNumberController = new LogisticNumberFeatureController();
+                if (!$package->order){
+                    $package->order = new Order();
+                }
+                if (!$package->order->logistic){
+                    $package->order->logistic = $logisticNumberController->getLogisticByFeatures($package->logistic_number);
+                }
             }catch (\Exception $e){
-                $response=["msg"=>"保存时发生错误(未下发)!","code"=>500,"data"=>null];
-                $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.json_encode($e),null);
+                $response=["msg"=>$e->getMessage(),"code"=>500,"data"=>$e->getTraceAsString()];
+                $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.$e->getTraceAsString(),null);
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
             $result=$fluxController->accomplishToWMS($package);
@@ -248,20 +283,20 @@ class PackageController extends Controller
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
         }
-        if(!empty($package->order_code))
+        if(!empty($package->order_id))
             Waybill::setWeightByOrderCode($package->order_code,$package->weight);
-        event(new WeighedEvent($package));
-        $response=["msg"=>"保存成功",
-            "code"=>200,
-            "data"=>true,
-            "serverMsg"=>null,
-            "requestor"=>[
-                "requestor"=>"1",
-                "eventCode"=>"0",
-                "reqDate"=>$reqDate,
-                "resDate"=>Carbon::now()]
-        ];
-        $this->log(__METHOD__,__FUNCTION__,"下发写入包裹成功:".json_encode($request).'|'.json_encode($response),null);
+            event(new WeighedEvent($package));
+            $response=["msg"=>"保存成功",
+                "code"=>200,
+                "data"=>true,
+                "serverMsg"=>null,
+                "requestor"=>[
+                    "requestor"=>"1",
+                    "eventCode"=>"0",
+                    "reqDate"=>$reqDate,
+                    "resDate"=>Carbon::now()]
+            ];
+            $this->log(__METHOD__,__FUNCTION__,"下发写入包裹成功:".json_encode($request).'|'.json_encode($response),null);
         return json_encode($response,JSON_UNESCAPED_UNICODE);
     }
 

+ 4 - 8
app/Imports/InventoryCompareImport.php

@@ -151,15 +151,11 @@ class InventoryCompareImport implements ToCollection, WithHeadingRow, WithMultip
                 array_push($inventoryCompares,$inventoryCompare);
                 $sum++;
             }
-            /** @var InventoryCompareService $service */
-            $service = app('inventoryCompareService');
-            $inventoryCompare= $service->createInventoryCompares($inventoryCompares);
-            if (!$inventoryCompare) array_push($exception, ['创建库存对比失败!']);
 //            if(empty($exception)){
-//                /** @var InventoryCompareService $service */
-//                $service = app('inventoryCompareService');
-//                $inventoryCompare= $service->createInventoryCompares($inventoryCompares);
-//                if (!$inventoryCompare) array_push($exception, ['创建库存对比失败!']);
+                /** @var InventoryCompareService $service */
+                $service = app('inventoryCompareService');
+                $inventoryCompare= $service->createInventoryCompares($inventoryCompares);
+                if (!$inventoryCompare) array_push($exception, ['创建库存对比失败!']);
 //            }
 
         }

+ 3 - 11
app/Jobs/FetchPackageFromOracle.php

@@ -3,7 +3,7 @@
 namespace App\Jobs;
 
 use App\Http\Controllers\Controller;
-use App\Package;
+use App\OrderPackage;
 use Illuminate\Bus\Queueable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Queue\InteractsWithQueue;
@@ -18,7 +18,7 @@ class FetchPackageFromOracle implements ShouldQueue
     protected $package;
     /**
      * Create a new job instance.
-     *
+     * @param OrderPackage $package
      * @return void
      */
     public function __construct($package)
@@ -38,7 +38,7 @@ class FetchPackageFromOracle implements ShouldQueue
             Controller::logS(__METHOD__,'error_'.__FUNCTION__,"队列传递的package为空",null);
             return;
         }
-        $package=Package::find($this->package->id);
+        $package=OrderPackage::query()->find($this->package->id);
         Controller::logS(__METHOD__,__FUNCTION__,"通过package->id搜索:".$this->package->id,null);
         if(!$package){
             Controller::logS(__METHOD__,'error_'.__FUNCTION__,"队列查询的package为空",null);
@@ -46,13 +46,5 @@ class FetchPackageFromOracle implements ShouldQueue
         }
         $package->fetchAllFromOracle();
         $package->update();
-//        if (!$package->delivery_number){
-//            $package->status="下发异常";
-//            $package->save();
-//        }
-//        if (!$package->weight){
-//            $package->status="测量异常";
-//            $package->save();
-//        }
     }
 }

+ 2 - 2
app/Jobs/MarkPackageExcepted.php

@@ -3,7 +3,7 @@
 namespace App\Jobs;
 
 use App\Http\Controllers\Controller;
-use App\Package;
+use App\OrderPackage;
 use Illuminate\Bus\Queueable;
 use Illuminate\Queue\SerializesModels;
 use Illuminate\Queue\InteractsWithQueue;
@@ -38,7 +38,7 @@ class MarkPackageExcepted implements ShouldQueue
             $controller->log(__METHOD__,'error_'.__FUNCTION__,"队列传递的package为空",null);
             return;
         }
-        $pickedPackage=Package::where('id',$this->package->id)->first();
+        $pickedPackage=OrderPackage::query()->where('id',$this->package->id)->first();
         if(!$pickedPackage){
             $controller->log(__METHOD__,'error_'.__FUNCTION__,"队列查询的package为空",null);
             return;

+ 3 - 3
app/Jobs/MeasuringMachineQueue.php

@@ -4,7 +4,7 @@ namespace App\Jobs;
 
 use App\Events\WeighedEvent;
 use App\MeasuringMachine;
-use App\Package;
+use App\OrderPackage;
 use Carbon\Carbon;
 use Illuminate\Bus\Queueable;
 use Illuminate\Queue\SerializesModels;
@@ -39,10 +39,10 @@ class MeasuringMachineQueue implements ShouldQueue
         if ($this->measuringMachine->updated_at<Carbon::now()->subMinutes(30)){
             $this->measuringMachine->status="离线";
             $this->measuringMachine->save();
-            $package=Package::with('owner','paperBox','measuringMachine')->
+            $package=OrderPackage::with('owner','paperBox','measuringMachine')->
             where('measuring_machine_id',$this->measuringMachine->id)->orderBy('id','DESC')->first();
             if (!$package){
-                $package=new Package();
+                $package=new OrderPackage();
                 if ($this->measuringMachine)$package->measuringMachine=$this->measuringMachine;
             }
             event(new WeighedEvent($package));

+ 2 - 4
app/Listeners/FulfillFulfillPackageCustomer.php

@@ -3,9 +3,7 @@
 namespace App\Listeners;
 
 use App\Events\CustomerStored;
-use App\Package;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Contracts\Queue\ShouldQueue;
+use App\OrderPackage;
 
 class FulfillPackageCustomer
 {
@@ -27,7 +25,7 @@ class FulfillPackageCustomer
      */
     public function handle(CustomerStored $event)
     {
-        $packages=Package::with('WMSReflectPackage')->where('status','记录异常')->orWhere('status','已上传异常')->get();
+        $packages=OrderPackage::with('WMSReflectPackage')->where('status','记录异常')->orWhere('status','已上传异常')->get();
         foreach ($packages as $package){
             if (isset($package->WMSReflectPackage->Customer)&&$package->WMSReflectPackage->Customer==$event->owner->code){
                 $package->status="未测量";

+ 4 - 0
app/OracleActAllocationDetails.php

@@ -11,4 +11,8 @@ class OracleActAllocationDetails extends Model
     protected $table="act_allocation_details";
     public $timestamps=false;
     public function getIncrementing(){ return false;}
+
+    public function oracleDocOrderHeader(){
+        return $this->belongsTo('App\OracleDOCOrderHeader','orderno','orderno');
+    }
 }

+ 1 - 1
app/OracleDOCOrderHeader.php

@@ -33,7 +33,7 @@ class OracleDOCOrderHeader extends Model
         return $this->hasOne('App\OracleBasCustomer','customerid','customerid');
     }
     public function oracleBASCode(){
-        return $this->hasOne('App\OracleBasCode','Code','sostatus')->where('codeid','SO_STS');
+        return $this->hasOne('App\OracleBasCode','code','sostatus')->where('codeid','SO_STS');
     }
 
     public function getOracleBASCustomerDescrCAttribute(){

+ 2 - 2
app/Order.php

@@ -23,7 +23,7 @@ class Order extends Model
 
     public function logistic()
     {
-        return $this->belongsTo('App\Logistic', 'logistic_id', 'id');
+        return $this->hasOne('App\Logistic', 'id', 'logistic_id');
     }
 
     public function issue()
@@ -38,7 +38,7 @@ class Order extends Model
 
     public function owner()
     {
-        return $this->belongsTo('App\Owner', 'owner_id', 'id');
+        return $this->hasOne('App\Owner', 'id', 'owner_id');
     }
 
     public function packages()

+ 220 - 1
app/OrderPackage.php

@@ -2,8 +2,16 @@
 
 namespace App;
 
+use App\Http\Controllers\Controller;
+use App\Services\LogService;
+use App\Services\OrderPackageService;
+use App\Services\OrderService;
 use App\Traits\ModelTimeFormat;
+use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Arr;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\DB;
 
 class OrderPackage extends Model
 {
@@ -24,15 +32,226 @@ class OrderPackage extends Model
     public function measuringMachine(){
         return $this->hasOne('App\MeasuringMachine','id','measuring_machine_id');
     }
+    public function WMSReflectPackage(){
+        return $this->hasOne('App\WMSReflectPackage','SOReference5','logistic_number');
+    }
+
+    static protected $oracleOrderHeaderFields = [
+        'doc_order_header.userdefine1',
+        'doc_order_header.soreference5',
+        'doc_order_header.waveno',
+        'doc_order_header.orderno',
+        'doc_order_header.customerid',
+        'doc_order_header.consigneename',
+        'doc_order_header.carrierid',
+        'doc_order_header.c_tel1',
+        'doc_order_header.c_tel2',
+        'doc_wave_header.descr',
+    ];
+
+    protected $tempFields=[
+        'temOracleInfo','temOwner','temLogistic',
+    ];
+
+    public function setLengthAttribute($value){
+        if(empty((int)($value)))return;
+        $this->attributes['length'] = $value;
+    }
+    public function setWidthAttribute($value){
+        if(empty((int)($value)))return;
+        $this->attributes['width'] = $value;
+    }
+    public function setHeightAttribute($value){
+        if(empty((int)($value)))return;
+        $this->attributes['height'] = $value;
+    }
+    public function setBulkAttribute($value){
+        if(empty((int)($value)))return;
+        $this->attributes['bulk'] = $value;
+    }
 
     public function delete()
     {
         $this->commodities()->delete();
         return parent::delete();
     }
-
     public function deleteSafe(){
         return parent::delete();
     }
 
+    public function isActivityBatch(){
+        return ($this['batch_rule'] && strstr($this['batch_rule'],'组合')  && $this['batch_number'] );
+    }
+    public function fetchAllFromOracle(){
+        if(empty($this->oracleInfo))return null;
+/*        $this->fetchOwnerFromOracle();
+        $this->fetchLogisticFromOracle();*/
+/*        $this['recipient'] = $this->oracleInfo['consigneename'];
+        $this['order_code'] = $this->oracleInfo['orderno'];*/
+        $this['batch_rule'] = $this->oracleInfo['descr'];
+/*        $this['recipient_mobile'] = $this->oracleInfo['c_tel2']??$this->oracleInfo['c_tel1'];
+        if(!$this['logistic_number']&&$this->oracleInfo['soreference5'])
+            $this['logistic_number'] = $this->oracleInfo['soreference5'];*/
+        $this['batch_number'] = $this->oracleInfo['waveno']??null;
+    }
+    static public function createPackagesFromBatchCode($batchCode,$weight){
+        $queryBuilder=OracleDOCOrderHeader::query()->select(self::$oracleOrderHeaderFields);
+        $queryBuilder->where('doc_order_header.waveno',$batchCode);
+        $queryBuilder->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_order_header.orderno');
+        $queryBuilder->leftJoin('doc_wave_header','doc_wave_header.waveno','doc_order_header.waveno');
+        $resultOracleObjs=$queryBuilder->get();
+        $resultOracleObjs_grouped=$resultOracleObjs->groupBy('soreference5');
+        $packages = [];
+        $now = Carbon::now();
+        foreach($resultOracleObjs_grouped as $resultOracleObj_grouped){
+            $resultOracleObj = $resultOracleObj_grouped[0];
+            /** @var OrderService */
+            $order = app('orderService')->logisticNumberCreateOrder($resultOracleObj['soreference5']);
+            if (!$order){
+                LogService::log(__METHOD__,"此包裹在WMS未找到order",json_encode($resultOracleObj),Auth::user()['id']);
+                continue;
+            }
+            array_push($packages,[
+                'batch_number'=>$batchCode??'',
+                /** @var OrderPackageService */
+                'order_id' => $order->id,
+                'logistic_number'=>$resultOracleObj['soreference5']??'',
+                'weight'=>$weight,
+                'weighed_at'=> $now,
+                'status'=>"已上传",
+                "created_at"=>$now,
+            ]);
+        }
+        $packagesLogisticNumbers = array_map(function ($orderPackage) {
+            return $orderPackage['logistic_number'];
+        } ,$packages);
+        $existingOrderPackages=OrderPackage::whereIn('logistic_number', $packagesLogisticNumbers)->get();
+        $existingLogisticNumbers=$existingOrderPackages->map(function($orderPackage){
+            return $orderPackage['logistic_number'];
+        })->toArray();
+        OrderPackage::whereIn('logistic_number', $existingLogisticNumbers)->update([
+            'batch_number'=>$batchCode??'',
+            'weight'=>$weight,
+            'weighed_at'=> $now,
+            'status'=>"已上传",]);
+        $newPackages=$packages;
+        if($existingOrderPackages->isNotEmpty())
+            $newPackages=array_filter($packages,function ($package)use($existingLogisticNumbers){
+                return array_search($package['logistic_number'],$existingLogisticNumbers)===false;
+            });
+        DB::transaction(function ()use($newPackages){
+            OrderPackage::query()->insert($newPackages);
+        });
+        LogService::log(__METHOD__,"批量录入包裹成功",json_encode($packages),Auth::user()['id']);
+    }
+    public function unifyThisMeasureUnderSameBatch(){
+        $this->fetchPaperBox();
+        $params=[];
+        !empty($this['weight'])?$params['weight']= $this['weight']:null;
+        !empty($this['length'])?$params['length']= $this['length']:null;
+        !empty($this['width'])?$params['width']= $this['width']:null;
+        !empty($this['height'])?$params['height']= $this['height']:null;
+        !empty($this['bulk'])?$params['bulk']= $this['bulk']:null;
+        !empty($this['measuring_machine_id'])?$params['measuring_machine_id']= $this['measuring_machine_id']:null;
+        !empty($this['weighed_at'])?$params['weighed_at']= $this['weighed_at']:null;
+        !empty($this['paper_box_id'])?$params['paper_box_id']= $this['paper_box_id']:null;
+        if(empty($params)||empty($this['batch_number']))return;
+        OrderPackage::query()->where(['batch_number'=>$this['batch_number']])->update($params);
+    }
+    public function fetchLogisticFromOracle(){
+        if(empty($this->oracleInfo))return null;
+        if(Arr::exists($this->tempFields,'temLogistic'))return $this->tempFields['temLogistic'];
+        Controller::logs(__METHOD__, __FUNCTION__, "tempPackage:{$this->oracleInfo['carrierid']}||SOR:{$this->oracleInfo['SOReference5']}||sor:{$this->oracleInfo['soreference5']}||orderno:{$this['orderno']}" , null);
+        if(!$this->oracleInfo['carrierid'])return null;
+        $logistic= Logistic::query()->where('code',$this->oracleInfo['carrierid'])->first();
+        if(!$logistic){
+            $logistic=Logistic::query()->create(['code'=>$this->oracleInfo['carrierid'],'name'=>$this->oracleInfo['carrierid']]);
+            Controller::logs(__METHOD__, __FUNCTION__, "富勒下发找不到快递公司,添加{$this->oracleInfo['carrierid']}" , null);
+        }
+        Controller::logs(__METHOD__, __FUNCTION__, "tempPackage2:{$logistic->id}" , null);
+        if(!$logistic)return null;
+        $this->tempFields['temLogistic']=$logistic;
+        $this['logistic_id'] = $logistic['id'];
+        return $logistic;
+    }
+    public function fetchOwnerFromOracle(){
+        if(empty($this->oracleInfo))return null;
+        if(Arr::exists($this->tempFields,'temOwner'))return $this->tempFields['temOwner'];
+        $owner= Owner::query()->where('code',$this->oracleInfo['customerid'])->first();
+        if(!$owner){
+            $owner=Owner::query()->create(['code'=>$this->oracleInfo['customerid'],'name'=>$this->oracleInfo['customerid']]);
+            Controller::logs(__METHOD__, __FUNCTION__, "富勒下发找不到货主,添加{$this->oracleInfo['customerid']}" , null);
+        }
+        if(!$owner)return null;
+        $this->tempFields['temOwner']=$owner;
+        $this['owner_id'] = $owner['id'];
+        return $owner;
+    }
+    //寻找相近纸箱ID
+    public  function fetchPaperBox($max=null, $centre=null, $min=null, $owner_id=null){
+        if($this['paper_box_id'])return $this['paper_box_id'];
+        $sumDiffer=0;
+        $maxDiffer=0;
+        $paperBox_id=null;
+        if(!$max)$max=$this['length'];
+        if(!$centre)$centre=$this['width'];
+        if(!$min)$min=$this['height'];
+        if(!$owner_id) $owner_id = $this['order'] ? $this['order']['owner_id'] : null;
+        if(!$owner_id) {
+            $owner = $this->fetchOwnerFromOracle();
+            $owner_id = $owner['id'];
+            if(!$owner_id)return null;
+        }
+        $boxes=Owner::select('id')->with('paperBoxes')->find($owner_id);
+        $targetPaperBox=null;
+        foreach ($boxes->paperBoxes as $i=>$paperBox){
+            if ($paperBox->length==$max&&$paperBox->width==$centre&&$paperBox->height==$min){
+                $targetPaperBox=$paperBox;
+                break;
+            }
+            $lengthDiffer=abs($paperBox->length-$max);
+            $widthDiffer=abs($paperBox->width-$centre);
+            $heightDiffer=abs($paperBox->height-$min);
+            $thisMaxDiffer=($lengthDiffer>=($widthDiffer>=$heightDiffer?$widthDiffer:$heightDiffer)?$lengthDiffer:($widthDiffer>=$heightDiffer?$widthDiffer:$heightDiffer));
+            if($i==0){
+                $maxDiffer=$thisMaxDiffer;
+                $sumDiffer=$lengthDiffer+$widthDiffer+$heightDiffer;
+                $targetPaperBox=$paperBox;
+            }
+            if ($thisMaxDiffer==$maxDiffer){
+                if($sumDiffer>($lengthDiffer+$widthDiffer+$heightDiffer)){
+                    $sumDiffer=$lengthDiffer+$widthDiffer+$heightDiffer;
+                    $targetPaperBox=$paperBox;
+                }
+            }
+            if ($thisMaxDiffer<$maxDiffer){
+                $sumDiffer=$lengthDiffer+$widthDiffer+$heightDiffer;
+                $maxDiffer=$thisMaxDiffer;
+                $targetPaperBox=$paperBox;
+            }
+        }
+        if($targetPaperBox)$this['paper_box_id']=$targetPaperBox['id'];
+        return $targetPaperBox['id'];
+    }
+    public function getOracleInfoAttribute()
+    {
+        if(isset($this->tempFields['temOracleInfo']))return $this->tempFields['temOracleInfo'];
+        if(empty($this['logistic_number'])&&empty($this['order_code']))return '';
+        if($this['order_code']){
+            $resultOracleObjs=OracleDOCOrderHeader::query()->select(self::$oracleOrderHeaderFields)->where('orderno',$this['order_code']);
+            $resultOracleObjs->leftJoin('doc_wave_header','doc_wave_header.waveno','doc_order_header.waveno');
+        }else{
+            $resultOracleObjs=OracleActAllocationDetails::query()->select(self::$oracleOrderHeaderFields);
+            $resultOracleObjs->where('picktotraceid',$this['logistic_number']);
+            $resultOracleObjs->leftJoin('DOC_Order_Header','act_allocation_details.orderno','doc_order_header.orderno');
+            $resultOracleObjs->leftJoin('doc_wave_header','doc_wave_header.waveno','doc_order_header.waveno');
+        }
+        $this->tempFields['temOracleInfo']=$resultOracleObjs->first();
+        if(empty($this->tempFields['temOracleInfo'])) {
+            $resultOracleObjs=OracleDOCOrderHeader::query()->select(self::$oracleOrderHeaderFields)->where('soreference5',$this['logistic_number']);
+            $resultOracleObjs->leftJoin('doc_wave_header','doc_wave_header.waveno','doc_order_header.waveno');
+        }
+        $this->tempFields['temOracleInfo']=$resultOracleObjs->first();
+        return $this->tempFields['temOracleInfo'];
+    }
 }

+ 3 - 3
app/Owner.php

@@ -14,15 +14,15 @@ use App\Traits\ModelTimeFormat;
 class Owner extends Model
 {
     use ModelTimeFormat;
-    use SoftDeletes;
     public $fillable = ['name','code','checking_count','deleted_at'];
     public static function filterAuthorities(){
         $user=Auth::user();
+        $query = (new static)->newQuery();
         if(!$user){
-            return (new static)->newQuery()->where('id','0');
+            return $query->where('id','0');
         }
         $ownerIds=$user->getPermittingOwnerIdsAttribute();
-        return (new static)->newQuery()->whereIn('id',$ownerIds);
+        return $query->whereIn('id',$ownerIds);
     }
     public function getIncreasedCheckingCount(){
         $this['checking_count']=$this['checking_count']+1;

+ 9 - 16
app/Package.php

@@ -3,10 +3,12 @@
 namespace App;
 
 use App\Http\Controllers\Controller;
+use App\Services\OrderIssueService;
 use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Model;
 use App\Traits\ModelTimeFormat;
 use Illuminate\Support\Arr;
+use Illuminate\Support\Facades\DB;
 
 class Package extends Model
 {
@@ -82,12 +84,13 @@ class Package extends Model
     static public function createPackagesFromBatchCode($batchCode,$weight){
         $resultOracleObjs=OracleDOCOrderHeader::query()->select(self::$oracleOrderHeaderFields);
         $resultOracleObjs->where('doc_order_header.waveno',$batchCode);
-        $resultOracleObjs->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_order_header.orderno');
+        $resultOracleObjs->leftJoin('act_allocation_details','act_allocation_details.orderno','doc_order_header.orderno')->get();
         $packages = [];
+        $now = Carbon::now();
         foreach($resultOracleObjs as $resultOracleObj){
-            $now = Carbon::now();
             array_push($packages,[
                 'batch_number'=>$batchCode??'',
+                /** @var OrderIssueService */
                 'order_id' => app('orderIssueService')->createOrFindByOrderNo($resultOracleObj['orderno']),
                 'logistic_number'=>$resultOracleObj['SOReference5']??'',
                 'weight'=>$weight,
@@ -96,7 +99,9 @@ class Package extends Model
                 "created_at"=>$now,
             ]);
         }
-        Package::query()->insert($packages);
+        DB::transaction(function ()use($packages){
+            Package::query()->insert($packages);
+        });
     }
     public function unifyThisMeasureUnderSameBatch(){
         $this->fetchPaperBox();
@@ -142,18 +147,6 @@ class Package extends Model
         $this['owner_id'] = $owner['id'];
         return $owner;
     }
-    public function fetchAllFromOracle(){
-        if(empty($this->oracleInfo))return null;
-        $this->fetchOwnerFromOracle();
-        $this->fetchLogisticFromOracle();
-        $this['recipient'] = $this->oracleInfo['consigneename'];
-        $this['order_code'] = $this->oracleInfo['orderno'];
-        $this['batch_rule'] = $this->oracleInfo['descr'];
-        $this['recipient_mobile'] = $this->oracleInfo['c_tel2']??$this->oracleInfo['c_tel1'];
-        if(!$this['logistic_number']&&$this->oracleInfo['soreference5'])
-            $this['logistic_number'] = $this->oracleInfo['soreference5'];
-        $this['batch_number'] = $this->oracleInfo['waveno']??null;
-    }
 
     public function getOracleInfoAttribute()
     {
@@ -212,7 +205,7 @@ class Package extends Model
             $owner_id = $owner['id'];
             if(!$owner_id)return null;
         }
-        $boxes=Owner::select('id')->with('paperBoxes')->find($owner_id);
+        $boxes=Owner::query()->select('id')->with('paperBoxes')->find($owner_id);
         $targetPaperBox=null;
         foreach ($boxes->paperBoxes as $i=>$paperBox){
             if ($paperBox->length==$max&&$paperBox->width==$centre&&$paperBox->height==$min){

+ 10 - 0
app/Providers/AppServiceProvider.php

@@ -4,17 +4,22 @@ namespace App\Providers;
 
 use App\Http\Controllers\Controller;
 use App\Services\InventoryCompareService;
+use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderIssuePerformanceService;
 use App\OracleActAllocationDetail;
 use App\Services\AllInventoryService;
 use App\Services\InventoryDailyLogService;
 use App\Services\LogisticService;
 use App\Services\OracleActAllocationDetailService;
+use App\Services\OrderIssueService;
+use App\Services\OrderPackageService;
+use App\Services\OrderService;
 use App\Services\OwnerService;
 use App\Services\PackageStatisticsService;
 use App\Services\ProcessMethodService;
 use App\Services\ProcessService;
 use App\Services\ProcessStatisticService;
+use App\Services\ShopService;
 use App\Services\WaybillFinancialService;
 use App\Services\WeighExceptedService;
 use Illuminate\Queue\Events\JobFailed;
@@ -81,5 +86,10 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('logisticService',LogisticService::class);
         app()->singleton('packageStatisticsService',PackageStatisticsService::class);
         app()->singleton('oracleActAllocationDetailService',OracleActAllocationDetailService::class);
+        app()->singleton('shopService',ShopService::class);
+        app()->singleton('orderPackageService',OrderPackageService::class);
+        app()->singleton('orderIssueService',OrderIssueService::class);
+        app()->singleton('orderService',OrderService::class);
+        app()->singleton('oracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
     }
 }

+ 6 - 0
app/Services/LogisticService.php

@@ -10,4 +10,10 @@ Class LogisticService
         return Logistic::query()->select($column)->get();
     }
 
+
+    public function firstOrCreate(array $params, array $values = null){
+        $logistic = Logistic::query();
+        if ($values)return $logistic->firstOrCreate($params, $values);
+        return $logistic->firstOrCreate($params);
+    }
 }

+ 13 - 0
app/Services/OracleActAllocationDetailService.php

@@ -2,6 +2,7 @@
 
 namespace App\Services;
 
+use App\OracleActAllocationDetails;
 use Illuminate\Support\Facades\DB;
 
 /**
@@ -40,4 +41,16 @@ Class OracleActAllocationDetailService
         }
         return $str;
     }
+    /**
+     * @param array $params
+     * @return OracleActAllocationDetails
+     */
+    public function first(array $params){
+        $actAllocationDetail = OracleActAllocationDetails::query();
+        foreach ($params as $column => $value){
+            $actAllocationDetail->where($column, $value);
+        }
+        /** @var OracleActAllocationDetails $actAllocationDetail */
+        return $actAllocationDetail->first();
+    }
 }

+ 7 - 0
app/Services/OracleDOCOrderHeaderService.php

@@ -7,4 +7,11 @@ use App\OracleDOCOrderHeader;
 Class OracleDOCOrderHeaderService
 {
 
+    function first(array $params){
+        $order = OracleDOCOrderHeader::query();
+        foreach ($params as $column => $value){
+            $order->where($column, $value);
+        }
+        return $order->first();
+    }
 }

+ 5 - 21
app/Services/OrderIssueService.php

@@ -121,6 +121,9 @@ class OrderIssueService
         if (!isset($condition)) {
             $condition = $arr;
         }
+        if ($condition['id'] ?? false){
+            $query->whereIn('order_issues.id', explode(',',$condition['id']));
+        }
         if (isset($condition['created_at_start'])) {
             $query->where('order_issues.created_at', '>=', $condition['created_at_start'] . " 00:00:00");
         }
@@ -204,44 +207,25 @@ class OrderIssueService
                 ->selectRaw('order_issue_types.`name` order_issue_type_name')
             ->leftJoin('orders','order_issues.order_id','orders.id')
                 ->selectRaw('orders.id order_id,orders.address,orders.district,orders.city,orders.province,orders.consignee_phone,orders.consignee_name,orders.client_code,orders.created_at order_created_at')
-          /*  ->leftJoin('order_packages','order_packages.order_id','orders.id')
-                ->selectRaw('order_packages.id order_package_id,order_packages.logistic_number order_package_logistic_name')
-            ->leftJoin('order_package_commodities','order_packages.id','order_package_commodities.order_package_id')
-                ->selectRaw('order_package_commodities.id order_package_commodity_id,order_package_commodities.amount commodity_amount')
-            ->leftJoin('commodities','order_package_commodities.commodity_id','commodities.id')
-                ->selectRaw('commodities.name commodity_name,commodities.sku commodity_sku')*/
             ->leftJoin('logistics','logistics.id','orders.logistic_id')
                 ->selectRaw('logistics.name logistic_name')
             ->leftJoin('owners','owners.id','orders.owner_id')
                 ->selectRaw('owners.name owner_name')
             ->leftJoin('shops','orders.shop_id','shops.id')
                 ->selectRaw('shops.name shop_name')
-/*            ->leftJoin('rejected_bills','order_issues.rejected_bill_id','rejected_bills.id')*/
-            /*->leftJoin('rejected_bill_items','rejected_bills.id','rejected_bill_items.id_rejected_bill')
-                ->selectRaw('rejected_bill_items.id rejected_bill_item_id,rejected_bill_items.remark,rejected_bill_items.amount rejected_bill_amount,rejected_bill_items.name_goods,rejected_bill_items.barcode_goods')*/
-            /*->leftJoin('order_issue_process_logs','order_issues.id','order_issue_process_logs.order_issue_id')
-                ->selectRaw('order_issue_process_logs.content log_content,order_issue_process_logs.type log_type')
-            ->leftJoin('users','order_issue_process_logs.user_id','users.id')
-                ->selectRaw('users.name user_name')*/
             ->leftJoin('orders as s_o','s_o.id','order_issues.second_order_id')
                 ->selectRaw('s_o.id s_o_id,s_o.client_code s_o_client_code')
-            /*->leftJoin('order_packages as s_o_p','s_o_p.order_id','s_o.id')
-                ->selectRaw('s_o_p.id s_o_p_id,s_o_p.logistic_number')
-            ->leftJoin('order_package_commodities as s_o_p_c','s_o_p_c.order_package_id','s_o_p.id')
-                ->selectRaw('s_o_p_c.id s_o_p_c_id,s_o_p_c.amount s_o_p_c_amount')
-            ->leftJoin('commodities as s_c','s_o_p_c.commodity_id','s_c.id')
-                ->selectRaw('s_c.sku s_c_sku,s_c.name s_c_name')*/
             ->leftJoin('logistics as s_logistics','s_o.logistic_id','s_logistics.id')
                 ->selectRaw('s_logistics.name s_logistics_name')
             ->leftJoin('user_workgroups','user_workgroups.id','order_issues.user_workgroup_id')
                 ->selectRaw('user_workgroups.name user_workgroup_name')
             ->sql();
-            return compact('orderPackageSql','secondOrderPackageSql','orderIssueSql','rejectedBillItemSql','logSql');
+        return compact('orderPackageSql','secondOrderPackageSql','orderIssueSql','rejectedBillItemSql','logSql');
     }
 
     public function paginate(array $arr)
     {
-        return $query = $this->getConditionQuery($arr);
+        return $query = $this->getConditionQuery($arr)->paginate($arr['paginate'] ?? 50);
 
     }
 

+ 33 - 0
app/Services/OrderPackageService.php

@@ -96,5 +96,38 @@ class OrderPackageService
         $order['wam_status'] = $orderHeader['oracleBASCode_codename_c'];
         $order->save();
     }
+    /**
+     * @param string $logistic_number
+     * @param array $values
+     * @return OrderPackage $package
+     */
+    public function firstOrCreate($logistic_number, array $values){
+        /** @var OrderPackage $package */
+        $package = OrderPackage::query()->where('logistic_number','=',$logistic_number)->first();
+        if ($package)return $package;
+
+        /** @var OrderService */
+        $order = app('orderService')->logisticNumberCreateOrder($logistic_number);
+        if ($order)$values["order_id"] = $order->id;
+
+        $values["logistic_number"] = $logistic_number;
+        /** @var OrderPackage $package */
+        $package = OrderPackage::query()->create($values);
+        return $package;
+    }
+
+
+    public function createExceptionPaginate($paginate){
+        return OrderPackage::query()->select('id','status','logistic_number','measuring_machine_id','weighed_at','weight','length','width','height','bulk','paper_box_id')
+            ->where('status','上传异常')->orWhere('status','测量异常')->orderBy('created_at','DESC')
+            ->paginate($paginate);
+    }
+
+    public function issueExceptionPaginate($paginate){
+        return OrderPackage::query()->select('id','logistic_number','created_at','batch_number','batch_rule')
+            ->where('status','下发异常')->orWhere('status','记录异常')
+            ->orWhere('status','已上传异常')->orderBy('created_at','DESC')
+            ->paginate($paginate);
+    }
 
  }

+ 64 - 4
app/Services/OrderService.php

@@ -4,14 +4,10 @@ namespace App\Services;
 
 use App\Logistic;
 use App\OracleActAllocationDetails;
-use App\OracleBasCustomer;
 use App\OracleDOCASNHeader;
-use App\OracleDOCOrderDetail;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderItems;
-use App\OrderPackage;
-use App\OrderPackageCommodities;
 use App\Owner;
 use App\RejectedBill;
 use App\Shop;
@@ -104,4 +100,68 @@ class OrderService
         }
         return $this->findOrCreateByClientCode($orderHeader['soreference1']);
     }
+
+    public function first(array $params){
+        $order = Order::query();
+        foreach ($params as $column => $value){
+            $order->where($column, $value);
+        }
+        return $order->first();
+    }
+
+    public function logisticNumberCreateOrder($logistic_number)
+    {
+        /**
+         * @var OracleActAllocationDetailService
+         * @var OracleActAllocationDetails $actAllocationDetail
+         */
+        $actAllocationDetail = app('oracleActAllocationDetailService')->first(['picktotraceid' => $logistic_number]);
+        if ($actAllocationDetail) {
+            $order = $this->first(['code' => $actAllocationDetail->orderno]);
+            if ($order) return $order;
+
+            $actAllocationDetail->load(['oracleDocOrderHeader' => function ($query) {
+                $query->with('oracleBASCode');
+            }]);
+            $orderHeader = $actAllocationDetail->oracleDocOrderHeader ?? null;
+        }else{
+            $orderHeader = app('oracleDocOrderHeaderService')->first(['soreference5' => $logistic_number]);
+        }
+
+        if ($orderHeader == null) return null;
+
+        /** @var OwnerService $owner */
+        $owner = app('ownerService')->first(['code' => $orderHeader->customerid]);
+        if (!$owner) {
+            $orderHeader->load('oracleBASCustomer');
+            $customer_name = $orderHeader->oracleBASCustomer ? $orderHeader->oracleBASCustomer->descr_c : null;
+            /** @var OwnerService */
+            if ($customer_name) $owner = app('ownerService')->create(['code' => $orderHeader->customerid, 'name' => $customer_name]);
+        }
+
+        $shop = null;
+        $shop_name = $orderHeader->issuepartyname;
+        if ($shop_name && $owner) {
+            /** @var ShopService */
+            $shop = app('shopService')->firstOrCreate(['name' => $shop_name, 'owner_id' => $owner->id]);
+        }
+
+        $logistics = app('logisticService')->firstOrCreate(['code' => $orderHeader->carrierid],
+            ['code' => $orderHeader->carrierid, 'name' => $orderHeader->carriername]);
+        return Order::query()->create([
+            'code' => $orderHeader->orderno,
+            'owner_id' => $owner ? $owner->id : null,
+            'wms_status' => $orderHeader->oracleBASCode ? $orderHeader->oracleBASCode->codename_c : null,
+            'created_at' => $orderHeader->addtime,
+            'logistic_id' => $logistics ? $logistics->id : null,
+            'shop_id' => $shop ? $shop->id : null,
+            'consignee_name' => $orderHeader->c_contact,
+            'consignee_phone' => $orderHeader->c_tel2,
+            'province' => $orderHeader->c_province,
+            'city' => $orderHeader->c_city,
+            'district' => $orderHeader->c_district,
+            'address' => $orderHeader->c_address1,
+            'client_code' => $orderHeader->soreference1,
+        ]);
+    }
 }

+ 14 - 1
app/Services/OwnerService.php

@@ -28,7 +28,7 @@ Class OwnerService
         $ownerCount=Owner::count();
         if(count($basCustomers)==$ownerCount)return null;
         foreach ($basCustomers as $basCustomer){
-           $owner=Owner::withTrashed()->where('code',$basCustomer['customerid'])->first();
+           $owner=Owner::query()->where('code',$basCustomer['customerid'])->first();
            if (!isset($owner))
                Owner::query()->create([
               'code'=> $basCustomer['customerid'],
@@ -39,4 +39,17 @@ Class OwnerService
         $owners=Owner::query()->select('id','name')->get();
         return $owners;
     }
+
+    public function first(array $params){
+        $owner = Owner::query();
+        foreach ($params as $column => $value){
+            $owner->where($column, $value);
+        }
+        return $owner->first();
+    }
+
+    public function create(array $params){
+        $owner = Owner::query()->create($params);
+        return $owner;
+    }
 }

+ 12 - 8
app/Services/PackageService.php

@@ -2,15 +2,18 @@
 
 namespace App\Services;
 
-use App\Package;
+use App\OrderPackage;
 use App\Services\common\QueryService;
 use Illuminate\Http\Request;
 
+const TABLE = "order_packages.";
 
 Class PackageService
 {
     private function conditionQuery($params){
-        $packages = Package::query()->orderBy('packages.id','DESC');
+        $packages = OrderPackage::query()->with(['order'=>function($query){
+            $query->with('owner','logistic');
+        },'paperBox','measuringMachine'])->orderBy(TABLE.'id','DESC');
         $columnQueryRules=[
             'logistic_number' => ['like' => ''],
             'batch_number' => ['like' => ''],
@@ -18,7 +21,7 @@ Class PackageService
             'created_at_end' => ['alias' => 'created_at','endDate' => " 23:59:59"],
             'id' => ['multi' => ','],
         ];
-        $packages = app(QueryService::class)->query($params,$packages,$columnQueryRules,"packages");
+        $packages = app(QueryService::class)->query($params,$packages,$columnQueryRules,"order_packages");
         return $packages;
     }
 
@@ -33,14 +36,15 @@ Class PackageService
     }
 
     public function getSql($params){
-        return $this->conditionQuery($params)->selectRaw('packages.*')
-        ->LeftJoin('owners','packages.owner_id','owners.id')
+        return $this->conditionQuery($params)->selectRaw(TABLE.'*')
+        ->leftJoin('orders',TABLE.'order_id','orders.id')
+        ->LeftJoin('owners','orders.owner_id','owners.id')
             ->selectRaw('owners.name owner_name')
-        ->LeftJoin('logistics','packages.logistic_id','logistics.id')
+        ->LeftJoin('logistics','orders.logistic_id','logistics.id')
             ->selectRaw('logistics.name logistic_name')
-        ->LeftJoin('paper_boxes','packages.paper_box_id','paper_boxes.id')
+        ->LeftJoin('paper_boxes',TABLE.'paper_box_id','paper_boxes.id')
             ->selectRaw('paper_boxes.model paper_box_name')
-        ->LeftJoin('measuring_machines','packages.measuring_machine_id','measuring_machines.id')
+        ->LeftJoin('measuring_machines',TABLE.'measuring_machine_id','measuring_machines.id')
             ->selectRaw('measuring_machines.name measuring_machine_name')
         ->sql();
     }

+ 15 - 4
app/Services/PackageStatisticsService.php

@@ -2,25 +2,36 @@
 
 namespace App\Services; 
 
-use App\Package;
+use App\OrderPackage;
 use App\Services\common\QueryService;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 
 Class PackageStatisticsService
 {
+    /**
+     * @param array $params
+     * @return Builder
+     */
     private function conditionQuery(array $params){
-        $query = Package::query()->with(['owner','logistic'])->select(DB::raw('owner_id,logistic_id,COUNT(logistic_id) AS count'))->whereNotNull('owner_id');
+        $query = OrderPackage::query()->select(DB::raw('COUNT(owner_id) AS count'))
+            ->whereNotNull('owner_id')
+            ->whereNotNull('logistic_id')
+            ->leftJoin('orders','order_packages.order_id','orders.id')
+            ->leftJoin('owners','orders.owner_id','owners.id')
+                ->selectRaw('owners.id owner_id,owners.name owner_name')
+            ->leftJoin('logistics','orders.logistic_id','logistics.id')
+                ->selectRaw('logistics.id logistic_id,logistics.name logistic_name');
         $columnQueryRules=[
             'date_start' => ['alias' => 'created_at','startDate' => " 00:00:00"],
             'date_end' => ['alias' => 'created_at','endDate' => " 23:59:59"],
             'logistic_id' => ['multi' => ','],
             'owner_id' => ['multi' => ','],
         ];
-        $query = $query->groupBy(['owner_id','logistic_id']);
+        $query = $query->groupBy(['owners.id','logistics.id']);
         return app(QueryService::class)->query($params,$query,$columnQueryRules);
     }
 
-
     public function get(array $params){
         return $this->conditionQuery($params)->get();
     }

+ 7 - 3
app/Services/ProcessService.php

@@ -4,12 +4,15 @@ namespace App\Services;
 
 use App\Process;
 use App\Services\common\QueryService;
-use Carbon\Carbon;
-use Illuminate\Http\Request;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\DB;
 
 Class ProcessService
 {
+    /**
+     * @param array $params
+     * @return Builder
+     */
     private function conditionQuery(array $params){
         $processes=Process::filterAuthorities()->with(['tutorials','signs',
             'signUnitPrice','processesContents'=>function($query){
@@ -58,7 +61,8 @@ Class ProcessService
     }
 
     public function getSql(array $params){
-        return $this->conditionQuery($params)->selectRaw('processes.code,processes.amount,processes.completed_amount,processes.status,processes.remark,processes.unit_price,processes.created_at')
+        return $this->conditionQuery($params)->whereNull('processes.deleted_at')
+                ->selectRaw('processes.code,processes.amount,processes.completed_amount,processes.status,processes.remark,processes.unit_price,processes.created_at')
             ->leftJoin('owners','processes.owner_id','owners.id')
                 ->selectRaw('owners.name owner_name')
             ->leftJoin('process_methods','processes.process_method_id','process_methods.id')

+ 2 - 2
app/Services/RejectedService.php

@@ -47,7 +47,7 @@ class RejectedService
         }
         if (isset($param["is_checked"])){
             if ($param["is_checked"] == "1"){
-                $rejectedBills = $rejectedBills->where('is_checked', true);
+                $rejectedBills = $rejectedBills->where('rejected_bills.is_checked', true);
             }else {
                 $rejectedBills = $rejectedBills->where(function ($query) {
                     $query->where('rejected_bills.is_checked', false)
@@ -92,7 +92,7 @@ class RejectedService
         return $this->conditionQuery($request->input())->get();
     }
     public function getSql(array $param){
-        $sql = $this->conditionQuery($param)->selectRaw('rejected_bills.*')
+        $sql = $this->conditionQuery($param)->selectRaw('rejected_bills.*')->whereNull('rejected_bills.deleted_at')
             ->leftJoin('owners','rejected_bills.id_owner','=','owners.id')
             ->selectRaw('owners.name owner_name')
             ->leftJoin('logistics','rejected_bills.id_logistic_return','=','logistics.id')

+ 16 - 0
app/Services/ShopService.php

@@ -0,0 +1,16 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Shop;
+
+Class ShopService
+{ 
+
+    function firstOrCreate(array $param, array $values = null){
+        $shop = Shop::query();
+        if ($values) return $shop->firstOrCreate($param,$values);
+        return $shop->firstOrCreate($param);
+    }
+
+}

+ 12 - 5
app/Services/WaybillService.php

@@ -2,10 +2,9 @@
 
 namespace App\Services;
 
-use App\Owner;
 use App\Services\common\QueryService;
-use App\User;
 use App\Waybill;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
@@ -13,9 +12,17 @@ use Ramsey\Uuid\Uuid;
 
 Class WaybillService
 {
+    /**
+     * @param array $param
+     * @return Builder
+     */
     private function conditionQuery(array $param){
-        $waybills = Waybill::filterAuthorities()->with(['owner','wmsCommodities','waybillAuditLogs' => function ($query) {
-            return $query->with('user');
+        $waybills = Waybill::filterAuthorities()->with(['owner','carrier','originationCity','destinationCity'=>function($query){
+            $query->with('province');
+        },'uploadFile','amountUnit','priceModel','warehouseWeightUnit','carrierWeightUnit',
+            'warehouseWeightUnitOther','carrierWeightUnitOther','carType','uploadFile',
+            'wmsCommodities','waybillAuditLogs' => function ($query) {
+            $query->with('user');
         }])->selectRaw('waybills.* ,waybill_on_tops.id top_id ,waybill_on_tops.remark,waybill_on_tops.updated_at top_update')
             ->leftJoin('waybill_on_tops','waybill_on_tops.waybill_id','=','waybills.id')
             ->whereNull('waybill_on_tops.deleted_at')
@@ -48,7 +55,7 @@ Class WaybillService
     }
 
     public function getSql(array $param){
-        $waybills = $this->conditionQuery($param);
+        $waybills = $this->conditionQuery($param)->whereNull('waybills.deleted_at');
         return $waybills->leftJoin('owners','owners.id','=','waybills.owner_id')->selectRaw('owners.name owner_name')
             ->leftJoin('units as warehouse_weight_unit','warehouse_weight_unit.id','=','waybills.warehouse_weight_unit_id')
                 ->selectRaw('warehouse_weight_unit.name warehouse_weight_unit_name')

+ 18 - 10
app/Services/WeighExceptedService.php

@@ -2,34 +2,42 @@
 
 namespace App\Services; 
 
-use App\Package;
+use App\OrderPackage;
 use App\Services\common\QueryService;
+use Illuminate\Database\Eloquent\Builder;
 
+const TABLE = "order_packages.";
 Class WeighExceptedService
 {
+    /**
+     * @param array $params
+     * @return Builder
+     */
     private function conditionQuery(array $params){
-        $query = Package::query()->orderBy('packages.id','DESC')->selectRaw("packages.* ");
+        $query = OrderPackage::query()->orderBy(TABLE.'id','DESC')->selectRaw(TABLE."* ");
         $columnQueryRules=[
             'id' => ['multi' => ','],
         ];
-        return app(QueryService::class)->query($params,$query,$columnQueryRules,"waybills");
+        return app(QueryService::class)->query($params,$query,$columnQueryRules,"order_packages");
     }
 
     public function getCreateExceptionSql(array $params){
-        return $this->conditionQuery($params)->where('packages.status',"上传异常")->orWhere('packages.status',"测量异常")
-            ->LeftJoin('logistics','packages.logistic_id','logistics.id')
+        return $this->conditionQuery($params)->where(TABLE.'status',"上传异常")->orWhere(TABLE.'status',"测量异常")
+            ->leftJoin('orders',TABLE.'order_id','orders.id')
+            ->LeftJoin('logistics','orders.logistic_id','logistics.id')
                 ->selectRaw('logistics.name logistic_name')
-            ->LeftJoin('paper_boxes','packages.paper_box_id','paper_boxes.id')
+            ->LeftJoin('paper_boxes',TABLE.'paper_box_id','paper_boxes.id')
                 ->selectRaw('paper_boxes.model paper_box_name')
-            ->LeftJoin('measuring_machines','packages.measuring_machine_id','measuring_machines.id')
+            ->LeftJoin('measuring_machines',TABLE.'measuring_machine_id','measuring_machines.id')
                 ->selectRaw('measuring_machines.name measuring_machine_name')
             ->sql();
     }
 
     public function getIssuedExceptionSql(array $params){
-        return $this->conditionQuery($params)->where('packages.status',"下发异常")->orWhere('packages.status',"记录异常")
-            ->orWhere('packages.status',"已上传异常")
-            ->LeftJoin('logistics','packages.logistic_id','logistics.id')
+        return $this->conditionQuery($params)->where(TABLE.'status',"下发异常")->orWhere(TABLE.'status',"记录异常")
+            ->orWhere(TABLE.'status',"已上传异常")
+            ->leftJoin('orders',TABLE.'order_id','orders.id')
+            ->LeftJoin('logistics','orders.logistic_id','logistics.id')
                 ->selectRaw('logistics.name logistic_name')
             ->sql();
     }

+ 1 - 1
app/User.php

@@ -107,7 +107,7 @@ class User extends Authenticatable
     function getPermittingOwnerIdsAttribute(){
         $ownerIds=[];
         if($this->isSuperAdmin()||Gate::allows('货主-可见全部')){
-            $owners=Owner::all();
+            $owners=Owner::query()->whereNull('deleted_at')->get();
             $owners->each(function(Owner $owner)use(&$ownerIds){
                 array_push($ownerIds,$owner['id']);
             });

+ 15 - 77
app/Waybill.php

@@ -2,6 +2,7 @@
 
 namespace App;
 
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Model;
 use App\Traits\ModelTimeFormat;
 use Illuminate\Database\Eloquent\SoftDeletes;
@@ -17,20 +18,6 @@ class Waybill extends Model
         'car_owner_info','fee','pick_up_fee','other_fee','collect_fee','dispatch_remark','waybill_price_model_id','warehouse_weight_other','warehouse_weight_unit_id_other'
         ,'carrier_weight_other','carrier_weight_unit_id_other','source_bill','mileage','amount','inquire_tel','amount_unit_id','other_charge','other_charge_remark','deliver_at'
     ];
-    protected $appends=[
-        'origination_city_name',
-        'carrier_name',
-        'owner_name',
-        'destination_city_name',
-        'warehouse_weight_unit_name',
-        'carrier_weight_unit_name',
-        'warehouse_weight_unit_other_name',
-        'carrier_weight_unit_other_name',
-        'amount_unit_name',
-        'upload_file_url',
-        'upload_file_type',
-        'destination_province_name'
-    ];
 
     public function owner(){
         return $this->hasOne('App\Owner','id','owner_id');
@@ -38,12 +25,10 @@ class Waybill extends Model
     public function carrier(){
         return $this->hasOne('App\Carrier','id','carrier_id');
     }
-
-    public function origination_city(){
+    public function originationCity(){
         return $this->hasOne('App\City','id','origination_city_id');
     }
-
-    public function destination_city(){
+    public function destinationCity(){
         return $this->hasOne('App\City','id','destination_city_id');
     }
     public function wmsCommodities(){
@@ -55,28 +40,21 @@ class Waybill extends Model
     public function amountUnit(){
         return $this->hasOne('App\Unit','id','amount_unit_id');
     }
-
-
-    public function warehouse_weight_unit(){
-        return $this->belongsTo('App\Unit','warehouse_weight_unit_id','id');
+    public function warehouseWeightUnit(){
+        return $this->hasOne('App\Unit','id','warehouse_weight_unit_id');
     }
-
-    public function carrier_weight_unit(){
-        return $this->belongsTo('App\Unit','carrier_weight_unit_id','id');
+    public function carrierWeightUnit(){
+        return $this->hasOne('App\Unit','id','carrier_weight_unit_id');
     }
-
-    public function warehouse_weight_unit_other(){
-        return $this->belongsTo('App\Unit','warehouse_weight_unit_id_other','id');
+    public function warehouseWeightUnitOther(){
+        return $this->hasOne('App\Unit','id','warehouse_weight_unit_id_other');
     }
-
-    public function carrier_weight_unit_other(){
-        return $this->belongsTo('App\Unit','carrier_weight_unit_id_other','id');
+    public function carrierWeightUnitOther(){
+        return $this->hasOne('App\Unit','id','carrier_weight_unit_id_other');
     }
-
     public function carType(){
         return $this->hasOne('App\CarType','id','carType_id');
     }
-
     public function waybillAuditLogs(){
         return $this->hasMany('App\WaybillAuditLog','waybill_id','id');
     }
@@ -84,16 +62,10 @@ class Waybill extends Model
         return $this->hasOne('App\UploadFile','table_id','id')->where('table_name','waybills');
     }
 
-    public function waybill_on_top(){
-        return $this->hasOne('App\WaybillOnTop','id','waybill_id');
-    }
-    public function amount_unit(){
-        return $this->hasOne('App\Unit','id','amount_unit_id');
-    }
 
     static public function setWeightByOrderCode($orderCode,$weight){
         if(empty($orderCode))return;
-        $waybill=Waybill::where('wms_bill_number',$orderCode)->where('status','!=','已完结')
+        $waybill=Waybill::query()->where('wms_bill_number',$orderCode)->where('status','!=','已完结')
             ->where('status','!=','无模型')->first();
         if ($waybill){
             $waybill->warehouse_weight_other=$weight;
@@ -102,44 +74,10 @@ class Waybill extends Model
         }
     }
 
-    public function getUploadFileUrlAttribute(){
-        return $this['uploadFile']? asset('/storage'.$this['uploadFile']['url']):null;
-    }
-    public function getUploadFileTypeAttribute(){
-        return $this['uploadFile']? $this['uploadFile']['type']:null;
-    }
-    public function getOwnerNameAttribute(){
-        return $this['owner']? $this['owner']['name']:null;
-    }
-    public function getCarrierNameAttribute(){
-        return $this['carrier']? $this['carrier']['name']:null;
-    }
-    public function getOriginationCityNameAttribute(){
-        return $this['origination_city']? $this['origination_city']['name']:null;
-    }
-    public  function  getDestinationCityNameAttribute(){
-        return $this['destination_city']? $this['destination_city']['name']:null;
-    }
-    function getDestinationProvinceNameAttribute(){
-        return $this['destination_city'] ? $this['destination_city']['province_name']:null;
-    }
-    public function getWarehouseWeightUnitNameAttribute(){
-        return $this['warehouse_weight_unit']? $this['warehouse_weight_unit']['name']:null;
-    }
-    public function getCarrierWeightUnitNameAttribute(){
-        return $this['carrier_weight_unit']? $this['carrier_weight_unit']['name']:null;
-    }
-    public function getWarehouseWeightUnitOtherNameAttribute(){
-        return $this['warehouse_weight_unit_other']? $this['warehouse_weight_unit_other']['name']:null;
-    }
-    public function getCarrierWeightUnitOtherNameAttribute(){
-        return $this['carrier_weight_unit_other']? $this['carrier_weight_unit_other']['name']:null;
-    }
-    public function getAmountUnitNameAttribute(){
-        return $this['amount_unit']? $this['amount_unit']['name']:null;
-    }
-
 
+    /**
+     * @return Builder
+     */
     public static function filterAuthorities(){
         $user = Auth::user();
         $owner_ids=$user->getPermittingOwnerIdsAttribute();

+ 0 - 12
database/factories/PackagesFactory.php

@@ -1,12 +0,0 @@
-<?php
-
-/** @var \Illuminate\Database\Eloquent\Factory $factory */
-
-use App\Package;
-use Faker\Generator as Faker;
-
-$factory->define(Package::class, function (Faker $faker) {
-    return [
-        //
-    ];
-});

+ 33 - 0
database/migrations/2020_09_10_143926_drop_shop_unique_name_index.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class DropShopUniqueNameIndex extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('shops', function (Blueprint $table) {
+            $table->dropIndex('shops_name_unique');
+            $table->string('name')->index()->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('shops', function (Blueprint $table) {
+            $table->string('name')->unique();
+        });
+    }
+}

+ 32 - 0
database/migrations/2020_09_11_101357_change_table_order_package_change_column_order_id_not_null.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeTableOrderPackageChangeColumnOrderIdNotNull extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->integer('order_id')->nullable()->comment('订单ID外键')->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            $table->integer('order_id')->comment('订单ID外键')->change();
+        });
+    }
+}

+ 0 - 1
resources/views/order/issue/index.blade.php

@@ -568,7 +568,6 @@
             mounted: function () {
                 $('.tooltipTarget').tooltip({'trigger': 'hover'});
                 $('#list').removeClass("d-none");
-                console.log(this.orderIssues);
                 let _this = this;
                 let final_status = [{name: '已解决', value: '已解决'}, {name: '待退回', value: '待退回'}, {
                     name: '退回中',

+ 1 - 1
resources/views/personnel/checking-in/clockAudit.blade.php

@@ -23,7 +23,7 @@
                             <td>组长审核</td>
                             <td >打卡时间</td>
                             <td>打卡类型</td>
-                            <td>手机号</td>
+                            <td>手机号</td>
                             <td>劳务所</td>
                             <td>工作组</td>
                             <td>异常</td>

+ 1 - 1
resources/views/process/create.blade.php

@@ -718,7 +718,7 @@
                                 res.data.data.forEach(function (processContent) {
                                     if (!_this._seekSignCommodity(processContent.wms_code,processContent.commodity_id,processContent.type)){
                                         _this.processContents.push(processContent);
-                                        _this._seekSignCommodity(processContent.wms_code,processContent.commodity_id,processContent.type);
+                                        _this._addSignCommodity(processContent.wms_code,processContent.commodity_id,processContent.type);
                                         if (!processContent.type) sum += Number(processContent.amount);
                                         if (processContent.owner_id && !_this.process.owner_id)
                                             _this.process.owner_id = processContent.owner_id;

+ 0 - 1
resources/views/process/statistic.blade.php

@@ -33,7 +33,6 @@
                 <th>单价</th>
                 <th>预期数量</th>
                 <th>完成数量</th>
-                <th>完成时间</th>
                 <th>收入合计</th>
                 <th>完成时间(天)</th>
                 <th>总工时</th>

+ 22 - 6
resources/views/waybill/delivering.blade.php

@@ -195,12 +195,28 @@
         data:{
             waybills:[
                 @foreach($waybills as $waybill)
-                {id:'{{$waybill->id}}',created_at:'{{$waybill->created_at}}',waybill_number:'{{$waybill->waybill_number}}',origination:'{{$waybill->origination}}',carrier_bill:'{{$waybill->carrier_bill}}'
-                    ,warehouse_weight:'{{$waybill->warehouse_weight}}',carrier_weight:'{{$waybill->carrier_weight}}',warehouse_weight_other:'{{$waybill->warehouse_weight_other}}',carrier_weight_other:'{{$waybill->carrier_weight_other}}',status:'{{$waybill->status}}'
-                    ,amount:'{{$waybill->amount}}',amount_unit_id:'{{$waybill->amount_unit_id}}',amount_unit_name:'{{$waybill->amount_unit_name}}',
-                    inquire_tel:'{{$waybill->inquire_tel}}',carrier_name:'{{$waybill->carrier_name}}',owner_name:'{{$waybill->owner_name}}',warehouse_weight_unit_name:'{{$waybill->warehouse_weight_unit_name}}'
-                    ,carrier_weight_unit_name:'{{$waybill->carrier_weight_unit_name}}',warehouse_weight_unit_other_name:'{{$waybill->warehouse_weight_unit_other_name}}',carrier_weight_unit_other_name:'{{$waybill->carrier_weight_unit_other_name}}'
-                    ,isBtn:false},
+                {id:'{{$waybill->id}}',
+                    created_at:'{{$waybill->created_at}}',
+                    waybill_number:'{{$waybill->waybill_number}}',
+                    origination:'{{$waybill->origination}}',
+                    carrier_bill:'{{$waybill->carrier_bill}}',
+                    warehouse_weight:'{{$waybill->warehouse_weight}}',
+                    carrier_weight:'{{$waybill->carrier_weight}}',
+                    warehouse_weight_other:'{{$waybill->warehouse_weight_other}}',
+                    carrier_weight_other:'{{$waybill->carrier_weight_other}}',
+                    status:'{{$waybill->status}}',
+                    amount:'{{$waybill->amount}}',
+                    amount_unit_id:'{{$waybill->amount_unit_id}}',
+                    amount_unit_name:'{{$waybill->amount_unit ? $waybill->amount_unit->name : ''}}',
+                    inquire_tel:'{{$waybill->inquire_tel}}',
+                    carrier_name:'{{$waybill->carrier ? $waybill->carrier->name : ''}}',
+                    owner_name:'{{$waybill->owner ? $waybill->owner->name : ''}}',
+                    warehouse_weight_unit_name:'{{$waybill->warehouse_weight_unit ? $waybill->warehouse_weight_unit->name : ''}}',
+                    carrier_weight_unit_name:'{{$waybill->carrier_weight_unit ? $waybill->carrier_weight_unit->name : ''}}',
+                    warehouse_weight_unit_other_name:'{{$waybill->warehouse_weight_unit_other ? $waybill->warehouse_weight_unit_other->name : ''}}',
+                    carrier_weight_unit_other_name:'{{$waybill->carrier_weight_unit_other ? $waybill->carrier_weight_unit_other->name : ''}}',
+                    isBtn:false
+                },
                 @endforeach
             ],
             filterData:{

+ 53 - 111
resources/views/waybill/index.blade.php

@@ -12,17 +12,17 @@
                 <div class="card menu-third" >
                     <ul class="nav nav-pills">
                         @can('运输管理-查询')
-                            <li class="nav-item">
-                                <a class="nav-link @if($uriType=='') active @endif" href="{{url('waybill/index')}}">全部</a>
-                            </li> @endcan
+                        <li class="nav-item">
+                            <a class="nav-link @if($uriType=='') active @endif" href="{{url('waybill/index')}}">全部</a>
+                        </li> @endcan
                         @can('运输管理-查询')
-                            <li class="nav-item">
-                                <a class="nav-link @if($uriType=='专线') active @endif" href="{{url('waybill/index?uriType=专线')}}">专线</a>
-                            </li> @endcan
+                        <li class="nav-item">
+                            <a class="nav-link @if($uriType=='专线') active @endif" href="{{url('waybill/index?uriType=专线')}}">专线</a>
+                        </li> @endcan
                         @can('运输管理-查询')
-                            <li class="nav-item">
-                                <a class="nav-link @if($uriType=='直发车') active @endif" href="{{url('waybill/index?uriType=直发车')}}">直发车</a>
-                            </li> @endcan
+                        <li class="nav-item">
+                            <a class="nav-link @if($uriType=='直发车') active @endif" href="{{url('waybill/index?uriType=直发车')}}">直发车</a>
+                        </li> @endcan
                     </ul>
                 </div>
             </div>
@@ -59,7 +59,7 @@
                 <tr id="header"></tr>
 
                 <tr v-for="(waybill,i) in waybills" :style="[{color:waybill.status=='待重审'?'red':''||waybill.status=='已完结'?'green':''},{'font-weight': waybill.id==selectedStyle?'bold':''}]"
-                    :id="'waybill'+waybill.id" @click="selectedColor(waybill.id)" position="static" v-on:mouseover="hidetop($event)" v-on:mouseleave="showtop($event)">
+                    :id="'waybill'+waybill.id" @click="selectedColor(waybill.id)" position="static" @mouseover="hidetop($event)" @mouseleave="showtop($event)">
                     <td>
                         <input class="checkItem" type="checkbox" :value="waybill.id" v-model="checkData">
                     </td>
@@ -69,14 +69,12 @@
                                 <button class="btn btn-outline-primary btn-sm" @click="waybillAudit(waybill.id,waybill.waybill_number)">审核</button>
                             @endcan
                             @can('运输管理-编辑')
-{{--                                <button  class="btn btn-outline-secondary btn-sm" @click="waybillUpdate(waybill.id)">修改</button>--}}
-                                    <a target="_blank" class="btn btn-outline-secondary btn-sm" :href= "('{{url('waybill/waybillEdit')}}/'+waybill.id)">修改</a>
+                                <a target="_blank" class="btn btn-outline-secondary btn-sm" :href= "('{{url('waybill/waybillEdit')}}/'+waybill.id)">修改</a>
                             @endcan
                         </span>
                         <span v-if=waybill.status==="已审核">
                             @can('运输管理-调度')
                                 <button class="btn btn-outline-secondary btn-sm" @click="waybillRetreatAudit(waybill.id,waybill.waybill_number)">取消审核</button>
-{{--                                <button class="btn btn-outline-secondary btn-sm" @click="job(waybill.id)">调度</button>--}}
                                 <a target="_blank" class="btn btn-outline-secondary btn-sm" :href= "('{{url('waybill')}}/'+waybill.id+'/edit')">调度</a>
                             @endcan
                         </span>
@@ -85,8 +83,7 @@
                                 <button class="btn btn-outline-success btn-sm" @click="waybillEndAudit(waybill.id,waybill.waybill_number)">完结</button>
                             @endcan
                             @can('运输管理-调度')
-{{--                                <button class="btn btn-outline-secondary btn-sm" @click="job(waybill.id)">改调度</button>--}}
-                                    <a target="_blank" class="btn btn-outline-secondary btn-sm" :href= "('{{url('waybill')}}/'+waybill.id+'/edit')">改调度</a>
+                                <a target="_blank" class="btn btn-outline-secondary btn-sm" :href= "('{{url('waybill')}}/'+waybill.id+'/edit')">改调度</a>
                             @endcan
                         </span>
                     </td>
@@ -118,10 +115,6 @@
                         @else
                         <td class="td-warm" ><span v-if="waybill.charge">@{{waybill.charge|money}}</span></td>
                     @endcan
-{{--                    <td class="td-warm ">--}}
-{{--                        @{{waybill.charge}}--}}
-{{--                    </td>--}}
-
                     <td class="td-warm">@{{waybill.other_charge}}</td>
                     <td class="td-warm">@{{waybill.other_charge_remark}}</td>
                     <td class="td-warm">
@@ -158,16 +151,7 @@
                     <td class="td-cool"><span v-if="waybill.amount">@{{waybill.amount}} @{{waybill.amount_unit_name }}</span></td>
                     <td class="td-cool">@{{waybill.mileage|km}} </td>
                     @can('运输管理-可见费用项')
-                        {{--zengjun start--}}
                         @can('运输管理-运费')
-                            {{--                            <td class="td-helpful" v-if="waybill.type==='专线'">--}}
-
-                            {{--                            </td>--}}
-                            {{--                            <td class="td-helpful" v-else-if="waybill.type==='直发车'">--}}
-                            {{--                                <span v-if="waybill.fee" class="btn-sm btn-outline-secondary btn" @click="waybillFeeCheck($event)" :data_id="waybill.id">@{{waybill.fee}}</span>--}}
-                            {{--                                <input type="number" class="form-control form-control-sm"  @blur="updateWaybillFee($event)" v-model="waybill.fee" :data_id="waybill.id" style="min-width:85px;display: none">--}}
-                            {{--                                <input v-else type="number" class="form-control form-control-sm">--}}
-                            {{--                            </td>--}}
                             <td class="td-helpful" v-if="waybill.fee">
                                 <span v-if="waybill.type==='专线'"></span>
                                 <span v-else-if="waybill.fee" class="btn-sm btn-outline-secondary btn" @click="waybillFeeCheck($event)" :data_id="waybill.id">@{{waybill.fee|money}}</span>
@@ -178,7 +162,6 @@
                                 <input v-else type="number" class="form-control form-control-sm" @blur="addWaybillFee($event)" onfocus="$(this).css('width','85px')" :value="waybill.fee" :data_id="waybill.id" >
                             </td>
                         @endcan
-                        {{--zengjun end--}}
                         <td class="td-helpful">@{{waybill.pick_up_fee}}</td>
                         <td class="td-helpful">@{{waybill.other_fee}}</td>
                     @endcan
@@ -189,72 +172,7 @@
                             <button type="button" class="btn btn-outline-danger btn-sm" @click="waybillDestroy(waybill.id,waybill.waybill_number,i)">删</button>
                         </td>
                     @endcan
-                    {{--                    <td>@{{waybill.wms_bill_number}}</td>--}}
-                    {{--                    <td>@{{waybill.recipient}}</td>--}}
-                    {{--                    <td>@{{waybill.recipient_mobile}}</td>--}}
-                    {{--                    <td>@{{waybill.charge}}</td>--}}
-                    {{--                    <td>@{{waybill.collect_fee}}</td>--}}
-                    {{--                    <td>@{{waybill.ordering_remark}}</td>--}}
-                    {{--                    <td><span v-for="waybillAuditLog in waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="运单阶段">@{{waybillAuditLog.user.name}}</span></td>--}}
-                    {{--                    <td ><u style="user-select: none;cursor:pointer" class="text-primary" v-if="!waybill.isBtn && waybill.wmsCommodities && waybill.wmsCommodities.length>0" @click="showWMSCommodities(waybill.id,waybill.wmsCommodities,waybill.isBtn)">--}}
-                    {{--                            该单有 @{{waybill.wmsCommodities.length}} 件商品,点击展开</u>--}}
-                    {{--                        <u style="user-select: none;cursor:pointer" class="text-secondary" v-if="waybill.isBtn" @click="showWMSCommodities(waybill.id,waybill.wmsCommodities,waybill.isBtn)">--}}
-                    {{--                            该单有 @{{waybill.wmsCommodities.length}} 件商品,点击收起</u>--}}
-                    {{--                    </td>--}}
-                    {{--                    <td>--}}
-                    {{--                        <div v-if=waybill.status==="未审核"||waybill.status==="待重审">--}}
-                    {{--                            @can('运输管理-运单审核')--}}
-                    {{--                                <button class="btn btn-outline-success btn-sm" @click="waybillAudit(waybill.id,waybill.waybill_number)">审核</button>--}}
-                    {{--                            @endcan--}}
-                    {{--                            @can('运输管理-编辑')--}}
-                    {{--                                <button class="btn btn-outline-secondary btn-sm" @click="waybillUpdate(waybill.id)">修改</button>--}}
-                    {{--                            @endcan--}}
-                    {{--                        </div>--}}
-                    {{--                        <div v-if=waybill.status==="已审核">--}}
-                    {{--                            @can('运输管理-调度')--}}
-                    {{--                                <button class="btn btn-outline-secondary btn-sm" @click="waybillRetreatAudit(waybill.id,waybill.waybill_number)">取消审核</button>--}}
-                    {{--                                <button class="btn btn-outline-secondary btn-sm" @click="job(waybill.id)">调度</button>--}}
-                    {{--                            @endcan--}}
-                    {{--                        </div>--}}
-                    {{--                        <div v-if=waybill.status==="待终审">--}}
-                    {{--                            @can('运输管理-调度审核')--}}
-                    {{--                                <button class="btn btn-outline-success btn-sm" @click="waybillEndAudit(waybill.id,waybill.waybill_number)">完结</button>--}}
-                    {{--                            @endcan--}}
-                    {{--                            @can('运输管理-调度')--}}
-                    {{--                                <button class="btn btn-outline-secondary btn-sm" @click="job(waybill.id)">改调度</button>--}}
-                    {{--                            @endcan--}}
-                    {{--                        </div>--}}
-                    {{--                    </td>--}}
-                    {{--                    <td>@{{waybill.origination_city}}</td>--}}
-                    {{--                    <td>@{{waybill.destination_city}}</td>--}}
-                    {{--                    <td>@{{waybill.car_owner_info}}</td>--}}
-                    {{--                    <td><span v-for="waybillAuditLog in waybill.waybillAuditLogs" v-if=waybillAuditLog.audit_stage==="调度阶段">@{{waybillAuditLog.user.name}}</span></td>--}}
                 </tr>
-                {{--                <tr v-show="wmsCommodities&&wmsCommodities.length>0" id="wmsCommodities">--}}
-                {{--                    <td colspan="15"></td>--}}
-                {{--                    <td colspan="15">--}}
-                {{--                        <table>--}}
-                {{--                            <tr style="background: #9fcdff">--}}
-                {{--                                <th>商品名称</th>--}}
-                {{--                                <th>商品编码</th>--}}
-                {{--                                <th>条码</th>--}}
-                {{--                                <th>数量</th>--}}
-                {{--                                <th>体称</th>--}}
-                {{--                                <th>毛重</th>--}}
-                {{--                                <th>净重</th>--}}
-                {{--                            </tr>--}}
-                {{--                            <tr v-for="wmsCommodity in wmsCommodities">--}}
-                {{--                                <td>@{{ wmsCommodity.SKU_Descr_c }}</td>--}}
-                {{--                                <td>@{{ wmsCommodity.SKU }}</td>--}}
-                {{--                                <td>@{{ wmsCommodity.Alternate_sku1 }}</td>--}}
-                {{--                                <td>@{{ wmsCommodity.Qtyordered_each }}</td>--}}
-                {{--                                <td>@{{ wmsCommodity.Cubic }}</td>--}}
-                {{--                                <td>@{{ wmsCommodity.GrossWeight }}</td>--}}
-                {{--                                <td>@{{ wmsCommodity.NetWeight }}</td>--}}
-                {{--                            </tr>--}}
-                {{--                        </table>--}}
-                {{--                    </td>--}}
-                {{--                </tr>--}}
             </table>
             <div class="modal fade " id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                 <div class="modal-dialog modal-dialog-centered">
@@ -343,27 +261,51 @@
                 waybills:[
                         @foreach($waybills as $waybill)
                     {
-                        id:'{{$waybill->id}}',created_at:'{{$waybill->created_at}}',updated_at:'{{$waybill->updated_at}}',url:'{{$waybill->upload_file_url}}',suffix:'{{$waybill->upload_file_type}}',
-                        status:'{{$waybill->status}}',type:'{{$waybill->type}}',waybill_number:'{{$waybill->waybill_number}}',
-                        owner:'{{$waybill->owner_name}}',source_bill:'{{$waybill->source_bill}}',wms_bill_number:'{{$waybill->wms_bill_number}}',origination:'{{$waybill->origination}}',
-                        destination:'{{$waybill->destination}}',recipient:'{{$waybill->recipient}}',recipient_mobile:'{{$waybill->recipient_mobile}}',
-                        charge:'{{$waybill->charge}}',ordering_remark:'{{$waybill->ordering_remark}}',carrier:'{{$waybill->carrier_name}}',
-                        carrier_bill:'{{$waybill->carrier_bill}}',origination_city:'{{$waybill->origination_city_name}}',
-                        destination_city:'{{$waybill->destination_city_name}}',warehouse_weight:'{{$waybill->warehouse_weight}}',
-                        destination_province_name:'{{$waybill->destination_province_name}}',
-                        warehouse_weight_unit:'{{$waybill->warehouse_weight_unit_name}}',carrier_weight:'{{$waybill->carrier_weight}}',
-                        carrier_weight_unit:'{{$waybill->carrier_weight_unit_name}}',
+                        id:'{{$waybill->id}}',
+                        created_at:'{{$waybill->created_at}}',
+                        updated_at:'{{$waybill->updated_at}}',
+                        url:'{{$waybill->uploadFile ? asset('/storage'.$waybill->uploadFile->url) : ''}}',
+                        suffix:'{{$waybill->uploadFile ? $waybill->uploadFile->type : ''}}',
+                        status:'{{$waybill->status}}',
+                        type:'{{$waybill->type}}',
+                        waybill_number:'{{$waybill->waybill_number}}',
+                        owner:'{{$waybill->owner ? $waybill->owner->name : ''}}',
+                        source_bill:'{{$waybill->source_bill}}',
+                        wms_bill_number:'{{$waybill->wms_bill_number}}',
+                        origination:'{{$waybill->origination}}',
+                        destination:'{{$waybill->destination}}',
+                        recipient:'{{$waybill->recipient}}',
+                        recipient_mobile:'{{$waybill->recipient_mobile}}',
+                        charge:'{{$waybill->charge}}',
+                        ordering_remark:'{{$waybill->ordering_remark}}',
+                        carrier:'{{$waybill->carrier ? $waybill->carrier->name : ''}}',
+                        carrier_bill:'{{$waybill->carrier_bill}}',
+                        origination_city:'{{$waybill->origination_city ? $waybill->origination_city->name : ''}}',
+                        destination_city:'{{$waybill->destination_city ? $waybill->destination_city->name : ''}}',
+                        warehouse_weight:'{{$waybill->warehouse_weight}}',
+                        destination_province_name:'{{$waybill->destination_city ? ($waybill->destination_city->province ? $waybill->destination_city->province->name : '') : ''}}',
+                        warehouse_weight_unit:'{{$waybill->warehouse_weight_unit ? $waybill->warehouse_weight_unit->name : ''}}',
+                        carrier_weight:'{{$waybill->carrier_weight}}',
+                        carrier_weight_unit:'{{$waybill->carrier_weight_unit ? $waybill->carrier_weight_unit->name : ''}}',
                         warehouse_weight_other:'{{$waybill->warehouse_weight_other}}',
-                        warehouse_weight_unit_other:'{{$waybill->warehouse_weight_unit_other_name}}',carrier_weight_other:'{{$waybill->carrier_weight_other}}',
-                        carrier_weight_unit_other:'{{$waybill->carrier_weight_unit_other_name}}',
-                        amount_unit_name:'{{$waybill->amount_unit_name}}',other_charge:'{{$waybill->other_charge}}',other_charge_remark:'{{$waybill->other_charge_remark}}',
-                        mileage:'{{$waybill->mileage}}',amount:'{{$waybill->amount}}',
-                        @if($waybill->carType)carType:{!! $waybill->carType !!},car_owner_info:'{{$waybill->car_owner_info}}',@endif @can('运输管理-可见费用项') fee:'{{$waybill->fee}}',
+                        warehouse_weight_unit_other:'{{$waybill->warehouse_weight_unit_other ? $waybill->warehouse_weight_unit_other->name : ''}}',
+                        carrier_weight_other:'{{$waybill->carrier_weight_other}}',
+                        carrier_weight_unit_other:'{{$waybill->carrier_weight_unit_other ? $waybill->carrier_weight_unit_other->name : ''}}',
+                        amount_unit_name:'{{$waybill->amount_unit ? $waybill->amount_unit->name : ''}}',
+                        other_charge:'{{$waybill->other_charge}}',
+                        other_charge_remark:'{{$waybill->other_charge_remark}}',
+                        mileage:'{{$waybill->mileage}}',
+                        amount:'{{$waybill->amount}}',
+                        @if($waybill->carType)carType:{!! $waybill->carType !!},car_owner_info:'{{$waybill->car_owner_info}}',@endif
+                        @can('运输管理-可见费用项') fee:'{{$waybill->fee}}',
                         pick_up_fee:'{{$waybill->pick_up_fee}}',other_fee:'{{$waybill->other_fee}}',
-                        collect_fee:'{{$waybill->collect_fee}}', @endcan deliver_at:'{{$waybill->deliver_at}}',dispatch_remark:'{{$waybill->dispatch_remark}}',isBtn:false,
+                        collect_fee:'{{$waybill->collect_fee}}', @endcan
+                        deliver_at:'{{$waybill->deliver_at}}',
+                        dispatch_remark:'{{$waybill->dispatch_remark}}',
+                        isBtn:false,
                         waybillAuditLogs:{!! $waybill->waybillAuditLogs !!},
                         btn_refresh_weight:'zoomIn',
-                        @if($waybill->remark)remark:'{{$waybill->remark}}', @else remark:'', @endif
+                        remark:'{{$waybill->remark ?? ''}}',
                     },
                     @endforeach
                 ],

+ 45 - 22
resources/views/waybill/recycle.blade.php

@@ -18,7 +18,7 @@
                                         <span class="text-muted">每页显示记录:</span>
                                     </td>
                                     <td colspan="9">
-                                        <select name="" id="setPaginate" class="tooltipTarget form-control-sm" v-model="filterParams.paginate" >
+                                        <select name="paginate" @change="submit()" id="setPaginate" class="tooltipTarget form-control-sm" v-model="filterParams.paginate" >
                                             <option value="50">50条</option>
                                             <option value="100">100条</option>
                                             <option value="200">200条</option>
@@ -26,7 +26,7 @@
                                             <option value="1000">1000条</option>
                                         </select>
                                     </td>
-                                    <td width="80%"></td>
+                                    <td class="w-75"></td>
                                 </tr>
                                 <tr>
                                     <td class="text-muted">选定操作记录:</td>
@@ -52,8 +52,8 @@
                                 <input id="all" type="checkbox" @click="checkAll($event)">
                             </label>
                         </th>
+                        <th >序号</th>
                         <th class="td-operation">状态</th>
-                        <th >ID</th>
                         <th >创建时间</th>
                         <th >运单类型</th>
                         <th >货主</th>
@@ -77,12 +77,12 @@
                         <th >其他费用</th>
                         <th >调度备注</th>
                     </tr>
-                    <tr v-for="waybill in waybills" :id="'waybill'+waybill.id">
+                    <tr v-for="(waybill,i) in waybills" :id="'waybill'+waybill.id">
                         <td>
                             <input class="checkItem" type="checkbox" :value="waybill.id" v-model="waybills_checkBoxes" >
                         </td>
+                        <td>@{{ i+1 }}</td>
                         <td :class="[waybill.status=='已审核'?'text-success':'']">@{{waybill.status}}</td>
-                        <td class="text-muted">@{{waybill.id}}</td>
                         <td class="text-muted">@{{waybill.created_at}}
                         <td >@{{waybill.type}} </td>
                         <td >@{{waybill.owner}}</td>
@@ -130,25 +130,45 @@
                 },
                 waybills_checkBoxes:[],
                 waybills:[
-                        @foreach($waybills as $waybill)
+                    @foreach($waybills as $waybill)
                     {
-                        id:'{{$waybill->id}}',created_at:'{{$waybill->created_at}}',updated_at:'{{$waybill->updated_at}}',
-                        status:'{{$waybill->status}}',type:'{{$waybill->type}}',waybill_number:'{{$waybill->waybill_number}}',
-                        owner:'{{$waybill->owner_name}}',source_bill:'{{$waybill->source_bill}}',wms_bill_number:'{{$waybill->wms_bill_number}}',origination:'{{$waybill->origination}}',
-                        destination:'{{$waybill->destination}}',recipient:'{{$waybill->recipient}}',recipient_mobile:'{{$waybill->recipient_mobile}}',
-                        charge:'{{$waybill->charge}}',ordering_remark:'{{$waybill->ordering_remark}}',carrier:'{{$waybill->carrier_name}}',
-                        carrier_bill:'{{$waybill->carrier_bill}}',origination_city:'{{$waybill->origination_city_name}}',
-                        destination_city:'{{$waybill->destination_city_name}}',warehouse_weight:'{{$waybill->warehouse_weight}}',
-                        warehouse_weight_unit:'{{$waybill->warehouse_weight_unit_name}}',carrier_weight:'{{$waybill->carrier_weight}}',
-                        carrier_weight_unit:'{{$waybill->carrier_weight_unit_name}}',
+                        id:'{{$waybill->id}}',
+                        created_at:'{{$waybill->created_at}}',
+                        updated_at:'{{$waybill->updated_at}}',
+                        status:'{{$waybill->status}}',
+                        type:'{{$waybill->type}}',
+                        waybill_number:'{{$waybill->waybill_number}}',
+                        owner:'{{$waybill->owner ? $waybill->owner->name : ''}}',
+                        source_bill:'{{$waybill->source_bill}}',
+                        wms_bill_number:'{{$waybill->wms_bill_number}}',
+                        origination:'{{$waybill->origination}}',
+                        destination:'{{$waybill->destination}}',
+                        recipient:'{{$waybill->recipient}}',
+                        recipient_mobile:'{{$waybill->recipient_mobile}}',
+                        charge:'{{$waybill->charge}}',
+                        ordering_remark:'{{$waybill->ordering_remark}}',
+                        carrier:'{{$waybill->carrier ? $waybill->carrier->name : ''}}',
+                        carrier_bill:'{{$waybill->carrier_bill}}',
+                        origination_city:'{{$waybill->origination_city ? $waybill->origination_city->name : ''}}',
+                        destination_city:'{{$waybill->destination_city ? $waybill->destination_city->name : ''}}',
+                        warehouse_weight:'{{$waybill->warehouse_weight}}',
+                        destination_province_name:'{{$waybill->destination_city ? ($waybill->destination_city->province ? $waybill->destination_city->province->name : '') : ''}}',
+                        warehouse_weight_unit:'{{$waybill->warehouse_weight_unit ? $waybill->warehouse_weight_unit->name : ''}}',
+                        carrier_weight:'{{$waybill->carrier_weight}}',
+                        carrier_weight_unit:'{{$waybill->carrier_weight_unit ? $waybill->carrier_weight_unit->name : ''}}',
                         warehouse_weight_other:'{{$waybill->warehouse_weight_other}}',
-                        warehouse_weight_unit_other:'{{$waybill->warehouse_weight_unit_other_name}}',carrier_weight_other:'{{$waybill->carrier_weight_other}}',
-                        carrier_weight_unit_other:'{{$waybill->carrier_weight_unit_other_name}}',
-                        mileage:'{{$waybill->mileage}}',amount:'{{$waybill->amount}}',
-                        amount_unit_name:'{{$waybill->amount_unit_name}}',
-                        @if($waybill->carType)carType:{!! $waybill->carType !!},car_owner_info:'{{$waybill->car_owner_info}}',@endif @can('运输管理-可见费用项') fee:'{{$waybill->fee}}',
+                        warehouse_weight_unit_other:'{{$waybill->warehouse_weight_unit_other ? $waybill->warehouse_weight_unit_other->name : ''}}',
+                        carrier_weight_other:'{{$waybill->carrier_weight_other}}',
+                        carrier_weight_unit_other:'{{$waybill->carrier_weight_unit_other ? $waybill->carrier_weight_unit_other->name : ''}}',
+                        amount_unit_name:'{{$waybill->amount_unit ? $waybill->amount_unit->name : ''}}',
+                        mileage:'{{$waybill->mileage}}',
+                        amount:'{{$waybill->amount}}',
+                        @if($waybill->carType)carType:{!! $waybill->carType !!},car_owner_info:'{{$waybill->car_owner_info}}',@endif
+                        @can('运输管理-可见费用项') fee:'{{$waybill->fee}}',
                         pick_up_fee:'{{$waybill->pick_up_fee}}',other_fee:'{{$waybill->other_fee}}',
-                        collect_fee:'{{$waybill->collect_fee}}', @endcan dispatch_remark:'{{$waybill->dispatch_remark}}',isBtn:false,
+                        collect_fee:'{{$waybill->collect_fee}}', @endcan
+                        dispatch_remark:'{{$waybill->dispatch_remark}}',
+                        isBtn:false,
                         waybillAuditLogs:{!! $waybill->waybillAuditLogs !!}
                     },
                     @endforeach
@@ -206,8 +226,11 @@
                     }else {
                         this.waybills_checkBoxes = [];
                     }
-
                 },
+                submit(){
+                    let url = decodeURI(location.href).split("?");
+                    location.href = url[0]+"?paginate="+    this.filterParams.paginate;
+                }
             },
             filters:{
                 km:function(value){

+ 25 - 26
resources/views/weight/measureMonitor/index.blade.php

@@ -33,8 +33,8 @@
                                                 <td>@{{package.weight}}</td>
                                             </tr>
                                             <tr>
-                                                <th class="tag" scope="row" scope="row">发货单号</th>
-                                                <td style="border-right:thick double #aaaaaa;">@{{package.delivery_number}}</td>
+                                                <th class="tag" scope="row" scope="row">订单编号</th>
+                                                <td style="border-right:thick double #aaaaaa;">@{{package.orderno}}</td>
                                                 <th class="tag" scope="row" scope="row">收件人</th>
                                                 <td>@{{package.recipient}}</td>
                                             </tr>
@@ -78,7 +78,7 @@
             el:'#list',
             data:{
                 package:
-                    {id:'',logistic_number:'',delivery_number:'',
+                    {id:'',logistic_number:'',orderno:'',
                         weight:'',owner:'',paperBox:'',
                         measuringMachine:'',recipient:'',measuringMachine_status:'',
                         status:'',weighed_at:'',bulk:'',logistic_name:''},
@@ -119,20 +119,21 @@
                     }else{
                         _this.currentAudioIndex=_this.currentAudioIndex+1;
                     }
-                    if (package&& package.measuringMachine_name===_this.package.measuringMachine){
-                        if (package.id===_this.package.id){
-                            _this.package.measuringMachine_status=package.measuringMachine_status;
-                            _this.measuringMachinesIndex[package.measuringMachine_name].status=package.measuringMachine_status;
+                    if (package && package.measuring_machine && package.measuring_machine.name ===_this.package.measuringMachine){
+                        if (package.id ===_this.package.id){
+                            _this.package.measuringMachine_status=package.measuring_machine.status;
+                            _this.measuringMachinesIndex[package.measuring_machine.name].status=package.measuring_machine.status;
                             tempTip.setDuration(4000);
                             tempTip.showSuccess('暂无新数据');
                             return;
                         }
                         _this.updateData(_this,package);
-                        if (_this.logisticAudioURL[package.logistic_name]){
-                            audio.src=_this.logisticAudioURL[package.logistic_name];
+                        let logistic_name = package.order ? (package.order.logistic ? package.order.logistic.name : '') : '';
+                        if (_this.logisticAudioURL[logistic_name]){
+                            audio.src=_this.logisticAudioURL[logistic_name];
                             audio.play();
                         }else {
-                            axios.post('/package/measureMonitor/speech',{logistic:package.logistic_name})
+                            axios.post('/package/measureMonitor/speech',{logistic:logistic_name})
                                 .then(function (response) {
                                     if (response.data){
                                         _this.logisticAudioURL[_this.package.logistic_name]=response.data;
@@ -152,21 +153,16 @@
                         tempTip.showSuccess('刷新成功!');
                     }
                 });
-                /*                if(this.timer){
-                                    clearInterval(this.timer);
-                                }else {
-                                    this.timer=setInterval(()=>{this.flushData();},18000);
-                                }*/
             },
             methods:{
                 clickMeasuringMachine(e){
                     let _this=this;
-                    axios.post('/package/measureMonitor/data',{id:e})
+                    axios.post('{{url('package/measureMonitor/data')}}',{id:e})
                         .then(function (response) {
                             if (response.data.id){
-                                let package=response.data;
-                                _this.updateData(_this,package);
-                                _this.package.measuringMachine=package.measuringMachine_name;                            }else {
+                                let orderPackage=response.data;
+                                _this.updateData(_this,orderPackage);
+                                _this.package.measuringMachine=orderPackage.measuring_machine ? orderPackage.measuring_machine.name : '';                            }else {
                                 tempTip.setDuration(4000);
                                 tempTip.showSuccess('暂无数据!');
                             }
@@ -178,14 +174,17 @@
                 },
                 updateData(_this,package){
                     _this.package.id=package.id;
-                    _this.package.logistic_number=package.logistic_number;_this.package.delivery_number=package.delivery_number;
-                    _this.package.weight=package.weight;_this.package.owner=package.owner_name;
-                    _this.package.paperBox=package.paperBox_name;
-                    _this.package.recipient=package.recipient;_this.package.status=package.status;
+                    _this.package.logistic_number=package.logistic_number;
+                    _this.package.orderno = package.order ?  package.order.code : '';
+                    _this.package.weight=package.weight;
+                    _this.package.owner=package.order ? (package.order.owner ? package.order.owner.name : '') : '';
+                    _this.package.paperBox=package.paper_box ? package.paper_box.name : '';
+                    _this.package.recipient=package.order ? package.order.recipient : '';
+                    _this.package.status=package.status;
                     _this.package.weighed_at=package.weighed_at;_this.package.bulk=package.bulk;
-                    _this.package.logistic_name=package.logistic_name;
-                    _this.package.measuringMachine_status=package.measuringMachine_status;
-                    _this.measuringMachinesIndex[package.measuringMachine_name].status=package.measuringMachine_status;
+                    _this.package.logistic_name=package.order ? (package.order.logistic ? package.order.logistic.name : '') : '';
+                    _this.package.measuringMachine_status=package.measuring_machine ? package.measuring_machine.status : '';
+                    _this.measuringMachinesIndex[package.measuring_machine ? package.measuring_machine.name : ''].status=package.measuring_machine ? package.measuring_machine.status : '离线';
                 }
             },
         });

+ 11 - 7
resources/views/weight/package/index.blade.php

@@ -35,7 +35,7 @@
                         <td>@{{package.ownerName}}</td>
                         <td>@{{package.logisticNumber}}</td>
                         <td class="text-muted">@{{package.batchNumber}}</td>
-                        <td>@{{package.order_code}}</td>
+                        <td>@{{package.orderCode}}</td>
                         <td class="text-muted">@{{package.logisticName}}</td>
                         <td class="text-muted">@{{package.measuringMachineName}}</td>
                         <td>@{{package.weight}}</td>
@@ -69,13 +69,17 @@
             data:{
                 packages:[
                         @foreach($packages as $package)
-                    {id:'{{$package->id}}',ownerName:'{{$package->owner_name}}',logisticNumber:'{{$package->logistic_number}}'
-                        ,wmsNumber:'{{$package->delivery_number}}',batchNumber:'{{$package->batch_number}}',batchRule:'{{$package->batch_rule}}'
-                        ,recipient:'{{$package->recipient}}',recipientMobile:'{{$package->recipient_mobile}}',logisticName:'{{$package->logistic_name}}'
-                        ,measuringMachineName:'{{$package->measuring_machine_name}}',
+                    {id:'{{$package->id}}',ownerName:'{{$package->order ? ($package->order->owner ? $package->order->owner->name : '') : ''}}',
+                        orderCode:'{{$package->order ? $package->order->code : ''}}',
+                        logisticName:'{{$package->order ? ($package->order->logistic ? $package->order->logistic->name : '') : ''}}'
+                        ,batchNumber:'{{$package->batch_number}}',batchRule:'{{$package->batch_rule}}',
+                        recipient:'{{$package->order ? $package->order->consignee_name : ''}}',recipientMobile:'{{$package->order ? $package->order->consignee_phone : ''}}'
+                        ,logisticNumber:'{{$package->logistic_number}}'
+                        ,measuringMachineName:'{{$package->measuringMachine ? $package->measuringMachine->name : ''}}',
                         weight:'{{$package->weight}}', length:'{{$package->length}}',width:'{{$package->width}}',height:'{{$package->height}}',
-                        bulk:'{{$package->bulk}}',paperBoxName:'{{$package->paperBox_name}}',
-                        status:'{{$package->status}}',created_at:'{{$package->created_at}}',weighed_at:'{{$package->weighed_at}}',order_code:'{{$package->order_code}}'},
+                        bulk:'{{$package->bulk}}',paperBoxName:'{{$package->paperBox ? $package->paperBox->name : ''}}',
+                        status:'{{$package->status}}',created_at:'{{$package->created_at}}',weighed_at:'{{$package->weighed_at}}',
+                        paperBox : {!! $package->paperBox??'""' !!} },
                     @endforeach
                 ],
                 i:0,

+ 310 - 318
routes/web.php

@@ -23,408 +23,400 @@ Auth::routes();
 Route::get('/home', 'HomeController@index')->name('home');
 Route::get('/homeTemp', 'HomeController@home');
 
-Route::get('password/change', 'Auth\PasswordController@change');
-Route::post('password/update', 'Auth\PasswordController@update');
-Route::get('maintenance/commodity/import', 'CommodityController@import');
-Route::post('maintenance/commodity/import/excel', 'CommodityController@importExcel');
-
-Route::resource('maintenance/log', 'LogController');
-Route::resource('maintenance/user', 'UserController');
-Route::resource('maintenance/role', 'RoleController');
-Route::resource('maintenance/authority', 'AuthorityController');
-Route::resource('maintenance/owner', 'OwnerController');
-Route::resource('maintenance/logistic', 'LogisticController');
-Route::resource('maintenance/qualityLabel', 'QualityLabelController');
-Route::resource('maintenance/carrier', 'CarriersController');
-Route::resource('maintenance/carType','CarTypesController');
-Route::resource('maintenance/unit','UnitsController');
-Route::resource('maintenance/province','ProvincesController');
-Route::resource('maintenance/city','CitiesController');
-Route::resource('maintenance/commodity', 'CommodityController');
-Route::resource('maintenance/measuringMachine', 'MeasuringMachineController');
-Route::resource('maintenance/userWorkgroup', 'UserWorkgroupController');
-Route::resource('maintenance/laborCompany', 'LaborCompanyController');
-Route::resource('maintenance/warehouse', 'WarehouseController');
-Route::resource('maintenance/jobType', 'JobTypeController');
-//教程管理
-Route::resource('maintenance/tutorial', 'TutorialController');
-//停用货主
-Route::get('maintenance/owners/recycle','OwnerController@recycle');
-//教程展示
-Route::post('maintenance/tutorial/showContent/{id}', 'TutorialController@showContent');
-//临时工管理
-Route::resource('maintenance/userLabor','UserLaborController');
-//获取劳务记录
-Route::post('maintenance/userLabor/getWorkRecord', 'UserLaborController@getWorkRecord');
-//获取打卡记录
-Route::post('maintenance/userLabor/getClockRecord', 'UserLaborController@getClockRecord');
-//解除绑定设备
-Route::post('maintenance/userLabor/relieve', 'UserLaborController@relieve');
-
-Route::get('maintenance/paperBox/index/model', 'PaperBoxController@indexModel');
-Route::get('maintenance/paperBox/index/owner', 'PaperBoxController@indexOwner');
-Route::post('maintenance/paperBox/excel/import','PaperBoxController@import');
-Route::resource('maintenance/paperBox', 'PaperBoxController');
-Route::get('maintenance/paperBox/excel/goImport',function (){return view('maintenance.paperBox.import');});
-
-Route::post('waybill/deleteImg','WaybillController@deleteImg');
-Route::post('waybill/upload','WaybillController@upload');
-Route::get('waybill/relating',function (){return view('waybill.menuWaybill');});
-Route::resource('maintenance/waybillPriceModel','WaybillPriceModelsController');
-Route::get('maintenance/waybillPriceModel/excel/goImport',function (){return view('maintenance.waybillPriceModel.import');});
-Route::get('maintenance/waybillPriceModel/cities/{province_id}','WaybillPriceModelsController@getCities');
-
-Route::resource('waybill/waybillFinancialSnapshot','WaybillFinancialSnapshotsController');
-Route::resource('waybill/waybillFinancialExcepted','WaybillFinancialExceptedController');
-
-Route::get('waybill/recycle', 'WaybillController@recycle');   //回收站
-Route::any('waybill/ontop/top','WaybillController@waybillOnTop');
-Route::any('waybill/ontop/cancel','WaybillController@cancelOnTop');
-
-Route::post('waybill/refreshWaveHouseWeight','WaybillController@refreshWaveHouseWeight');
-
-Route::get('waybill/index','WaybillController@index');
-Route::get('waybill/delivering','WaybillController@delivering');
-Route::any('waybill/deliveringExport','WaybillController@deliveringExport');
-Route::post('waybill/storeCarrierBill','WaybillController@storeCarrierBill');
-Route::post('waybill/is/waybillPriceModel','WaybillController@isWaybillPriceModel');
-Route::post('waybill/addCounty','WaybillController@addCounty');
-Route::any('waybill/waybillAudit','WaybillController@waybillAudit');
-Route::any('waybill/waybillEdit/{id}','WaybillController@waybillEdit');
-Route::any('waybill/waybillRetreatAudit','WaybillController@waybillRetreatAudit');
-Route::any('waybill/waybillEndAudit','WaybillController@waybillEndAudit');
-Route::any('waybill/export','WaybillController@export');
-Route::any('waybill/waybillUpdate/{id}','WaybillController@waybillUpdate');
-Route::resource('waybill','WaybillController');
+/** 密码 */
+Route::group(['prefix'=>'password'],function(){
+    Route::get('change', 'Auth\PasswordController@change');
+    Route::post('update', 'Auth\PasswordController@update');
+});
+
+/** 基础设置 */
+Route::group(['prefix'=>'maintenance'],function(){
+    /** 商品 */
+    Route::group(['prefix'=>'commodity'],function(){
+        /** 导出 */
+        Route::group(['prefix'=>'import'],function(){
+            Route::post('excel', 'CommodityController@importExcel');
+        });
+
+        Route::get('import', 'CommodityController@import');
+    });
+    /** 货主 */
+    Route::group(['prefix'=>'owners'],function(){
+        Route::get('recycle','OwnerController@recycle');
+    });
+    /** 教程 */
+    Route::group(['prefix'=>'tutorial'],function(){
+        Route::post('showContent/{id}', 'TutorialController@showContent');
+    });
+    /** 临时工 */
+    Route::group(['prefix'=>'userLabor'],function(){
+        Route::post('getWorkRecord', 'UserLaborController@getWorkRecord');
+        Route::post('getClockRecord', 'UserLaborController@getClockRecord');
+        Route::post('relieve', 'UserLaborController@relieve');
+    });
+    /** 纸箱 */
+    Route::group(['prefix'=>'paperBox'],function(){
+        /** 首页 */
+        Route::group(['prefix'=>'index'],function(){
+            Route::get('model', 'PaperBoxController@indexModel');
+            Route::get('owner', 'PaperBoxController@indexOwner');
+        });
+        /** excel */
+        Route::group(['prefix'=>'excel'],function(){
+            Route::post('import','PaperBoxController@import');
+            Route::get('goImport',function (){return view('maintenance.paperBox.import');});
+        });
+    });
+    /** 计费模型 */
+    Route::group(['prefix'=>'waybillPriceModel'],function(){
+        /** excel */
+        Route::group(['prefix'=>'excel'],function(){
+            Route::get('goImport',function (){return view('maintenance.waybillPriceModel.import');});
+        });
+        Route::get('cities/{province_id}','WaybillPriceModelsController@getCities');
+    });
 
+    Route::resource('log', 'LogController');
+    Route::resource('user', 'UserController');
+    Route::resource('role', 'RoleController');
+    Route::resource('authority', 'AuthorityController');
+    Route::resource('owner', 'OwnerController');
+    Route::resource('logistic', 'LogisticController');
+    Route::resource('qualityLabel', 'QualityLabelController');
+    Route::resource('carrier', 'CarriersController');
+    Route::resource('carType','CarTypesController');
+    Route::resource('unit','UnitsController');
+    Route::resource('province','ProvincesController');
+    Route::resource('city','CitiesController');
+    Route::resource('commodity', 'CommodityController');
+    Route::resource('measuringMachine', 'MeasuringMachineController');
+    Route::resource('userWorkgroup', 'UserWorkgroupController');
+    Route::resource('laborCompany', 'LaborCompanyController');
+    Route::resource('warehouse', 'WarehouseController');
+    Route::resource('jobType', 'JobTypeController');
+    Route::resource('tutorial', 'TutorialController');
+    Route::resource('userLabor','UserLaborController');
+    Route::resource('paperBox', 'PaperBoxController');
+    Route::resource('waybillPriceModel','WaybillPriceModelsController');
+});
+Route::get('maintenance', function () {return view('maintenance.index');});
+
+/** 运输 */
+Route::group(['prefix'=>'waybill'],function(){
+    /** 置顶 */
+    Route::group(['prefix'=>'ontop'],function(){
+        Route::any('top','WaybillController@waybillOnTop');
+        Route::any('cancel','WaybillController@cancelOnTop');
+    });
+    /** 判断 */
+    Route::group(['prefix'=>'is'],function(){
+        Route::post('waybillPriceModel','WaybillController@isWaybillPriceModel');
+    });
+    Route::post('deleteImg','WaybillController@deleteImg');
+    Route::post('upload','WaybillController@upload');
+    Route::get('relating',function (){return view('waybill.menuWaybill');});
+    Route::get('recycle', 'WaybillController@recycle');
+    Route::post('refreshWaveHouseWeight','WaybillController@refreshWaveHouseWeight');
+    Route::get('index','WaybillController@index');
+    Route::get('delivering','WaybillController@delivering');
+    Route::any('deliveringExport','WaybillController@deliveringExport');
+    Route::post('storeCarrierBill','WaybillController@storeCarrierBill');
+    Route::post('addCounty','WaybillController@addCounty');
+    Route::any('waybillAudit','WaybillController@waybillAudit');
+    Route::any('waybillEdit/{id}','WaybillController@waybillEdit');
+    Route::any('waybillRetreatAudit','WaybillController@waybillRetreatAudit');
+    Route::any('waybillEndAudit','WaybillController@waybillEndAudit');
+    Route::any('export','WaybillController@export');
+    Route::any('waybillUpdate/{id}','WaybillController@waybillUpdate');
+
+    Route::resource('waybillFinancialSnapshot','WaybillFinancialSnapshotsController');
+    Route::resource('waybillFinancialExcepted','WaybillFinancialExceptedController');
+});
+Route::resource('waybill','WaybillController');
 
-Route::any('waybillFinancialSnapshot/export','WaybillFinancialSnapshotsController@export');
-Route::post('waybillPriceModel/excel/import','WaybillPriceModelsController@import');
+/** 运输财务 */
+Route::group(['prefix'=>'waybillFinancialSnapshot'],function(){
+    Route::any('export','WaybillFinancialSnapshotsController@export');
+});
 
+/** 运输计费模型 */
+Route::group(['prefix'=>'waybillPriceModel'],function(){
+    /** excel */
+    Route::group(['prefix'=>'excel'],function(){
+        Route::post('import','WaybillPriceModelsController@import');
+    });
+});
 
-Route::post('rejectedBill/{rejectedBill}/edit', 'RejectedBillController@edit');
+/** 退货明细 */
+Route::group(['prefix'=>'rejectedBill'],function(){
+    Route::post('{rejectedBill}/edit', 'RejectedBillController@edit');
+});
 Route::resource('rejectedBill', 'RejectedBillController');
-Route::get('rejected/import', 'RejectedController@import');
-Route::post('rejected/import/excel', 'RejectedController@importExcel');
-Route::get('rejected/relating', function () {return view('rejected.relating');});
-Route::get('rejected/recycle', 'RejectedController@recycle');
-Route::post('rejected/ajaxCheck', 'RejectedController@ajaxCheck');
-Route::post('rejected/ajaxCheckAll', 'RejectedController@ajaxCheckAll');
-Route::post('rejected/ajaxFinishAll', 'RejectedController@ajaxFinishAll');
-Route::any('rejected/export', 'RejectedController@export');
-Route::any('rejected/index/general','RejectedController@index');  // 一般查询
-Route::any('rejected/index/analyze','RejectedController@indexAnalyze');  // 统计查询
-Route::any('rejected/exportAnalyze', 'RejectedController@exportAnalyze');
-Route::resource('rejected', 'RejectedController');
 
+/** 退货 */
+Route::group(['prefix'=>'rejected'],function(){
+    /** 导出 */
+    Route::group(['prefix'=>'import'],function(){
+        Route::post('excel', 'RejectedController@importExcel');
+    });
+    /** 主页 */
+    Route::group(['prefix'=>'index'],function(){
+        Route::any('general','RejectedController@index');
+        Route::any('analyze','RejectedController@indexAnalyze');
+    });
+    /** 分析 */
+    Route::group(['prefix'=>'analyze'],function(){
+        Route::post('exportExcelOnParams', 'RejectedController@exportExcelOnParams');
+        Route::post('exportAllExcelOnParams', 'RejectedController@exportAllExcelOnParams');
+    });
 
-Route::post('rejected/analyze/exportExcelOnParams', 'RejectedController@exportExcelOnParams');
-Route::post('rejected/analyze/exportAllExcelOnParams', 'RejectedController@exportAllExcelOnParams');
-Route::post('rejected/ajaxGetRejected', 'RejectedController@ajaxGetRejected');
+    Route::get('relating', function () {return view('rejected.relating');});
+    Route::get('recycle', 'RejectedController@recycle');
+    Route::post('ajaxCheck', 'RejectedController@ajaxCheck');
+    Route::post('ajaxCheckAll', 'RejectedController@ajaxCheckAll');
+    Route::post('ajaxFinishAll', 'RejectedController@ajaxFinishAll');
+    Route::get('import', 'RejectedController@import');
+    Route::any('export', 'RejectedController@export');
+    Route::any('exportAnalyze', 'RejectedController@exportAnalyze');
+    Route::post('ajaxGetRejected', 'RejectedController@ajaxGetRejected');
+});
+Route::resource('rejected', 'RejectedController');
 
-Route::get('maintenance/', function () {return view('maintenance.index');});
-Route::any('package/measureMonitor/speech','MeasureMonitorController@speech');
-Route::post('package/measureMonitor/data','MeasureMonitorController@data');
-Route::resource('package/measureMonitor','MeasureMonitorController');
-Route::any('package/export','PackageController@export');
-Route::get('package/statistics','PackageController@statistics');
+
+/** 包裹 */
 Route::group(['prefix'=>'package'],function(){
+    /** 设备 */
+    Route::group(['prefix'=>'measureMonitor'],function(){
+        Route::any('speech','MeasureMonitorController@speech');
+        Route::post('data','MeasureMonitorController@data');
+    });
+    /** 统计 */
     Route::group(['prefix'=>'statistics'],function(){
         Route::any('export','PackageController@statisticsExport');
     });
+    /** 异常 */
+    Route::group(['prefix'=>'weightExcepted'],function(){
+        Route::get('indexCreate','WeighExceptedController@indexCreate');
+        Route::get('indexIssued','WeighExceptedController@indexIssued');
+        Route::any('export/{type}','WeighExceptedController@export');
+    });
+
+    Route::any('export','PackageController@export');
+    Route::get('statistics','PackageController@statistics');
+    Route::get('relating', function () {return view('weight.menuWeight');});
+
+    Route::resource('measureMonitor','MeasureMonitorController');
 });
-Route::get('package/relating', function () {return view('weight.menuWeight');});
-Route::get('package/weightExcepted/indexCreate','WeighExceptedController@indexCreate');
-Route::get('package/weightExcepted/indexIssued','WeighExceptedController@indexIssued');
-Route::any('package/weightExcepted/export/{type}','WeighExceptedController@export');
 Route::resource('package','PackageController');
 
-Route::get('store','StoreController@index');
-Route::resource('store/fast','StoreController');
-Route::resource('store/storeItem','StoreItemsController');
-
-
-/**
- *二维码
- */
-//进入打卡
-Route::get('personnel/checking-in/goGetQRCode','QRCodeController@goGetQRCode');
-//进入组二维码显示页面
-Route::get('personnel/checking-in/QRCode','QRCodeController@QRCode');
-////打卡页面点击仓库获取所有的工作组
-//Route::get('personnel/checking-in/getUserWorkGroups','QRCodeController@getUserWorkGroups');
-
-//进入进出场二维码显示页面
-Route::get('personnel/checking-in/importAndExportQRCode','QRCodeController@importAndExportQRCode');
-//获取刷新二维码
-Route::post('personnel/checking-in/refreshQRCode','QRCodeController@refreshQRCode');
-/**
- *  用户打卡
- */
-Route::group(['prefix'=>'personnel/checking-in/userDutyCheck'],function(){
-    //进出场打卡接口
-    Route::get('importAndExportClock','UserDutyCheckController@importAndExportClock');
-    //进入打卡接口
-    Route::get('clock','UserDutyCheckController@clock');
-    //进出场提交打卡
-    Route::post('storeClock','UserDutyCheckController@storeClock');
-    Route::post('绑定临时工并进组','UserDutyCheckController@绑定临时工并进组');
-    //进出场提交打卡
-    Route::post('importGroupClock','UserDutyCheckController@importGroupClock');
-    //去往登记资料页面
-    Route::get('createUserDetail/{mobile_phone}','UserDutyCheckController@createUserDetail');
-    //去往修改资料页面
-    Route::get('updateUserLaborCompanies/{mobile_phone}','UserDutyCheckController@updateUserLaborCompanies');
-    //提交登记资料
-    Route::post('storeUserDetail','UserDutyCheckController@storeUserDetail');
-    //提交修改劳务所
-    Route::post('storeUpdateUserLaborCompanies','UserDutyCheckController@storeUpdateUserLaborCompanies');
+/** 入库 */
+Route::group(['prefix'=>'store'],function(){
+    Route::resource('fast','StoreController');
+    Route::resource('storeItem','StoreItemsController');
 });
+Route::get('store','StoreController@index');
 
-/**
- *  二次加工
- */
+/** 二次加工 */
 Route::group(['prefix'=>'process'],function(){
-    //相关设置
-    Route::get('relating',function (){return view('process.menuProcess');});
-    /*
-     * 统计
-     * */
-    Route::group(['prefix'=>'statistic'],function (){
-        //首页
-        Route::get("",'ProcessStatisticController@index');
-        //导出
+    /** 统计 */
+    Route::group(['prefix'=>'statistic'],function(){
         Route::any("export",'ProcessStatisticController@export');
     });
-    //获取每日参与人
+
+    Route::get('relating',function (){return view('process.menuProcess');});
+    Route::get("statistic",'ProcessStatisticController@index');
     Route::post('getDailyParticipant','ProcessController@getDailyParticipant');
-    //驳回
     Route::post('reject/{id}','ProcessController@reject');
-    //接单
     Route::post('receive/{id}','ProcessController@receive');
-    //完成
     Route::post('accomplish','ProcessController@accomplish');
-    //修改每日产量
     Route::post('updateDailyOutput','ProcessController@updateDailyOutput');
-    //添加参与人
     Route::post('storeProcessDailyParticipant','ProcessController@storeProcessDailyParticipant');
-    //验证参与人
     Route::post('verifyUserName','ProcessController@verifyUserName');
-    //修改参与人
     Route::post('updateProcessDailyParticipant','ProcessController@updateProcessDailyParticipant');
-    //参与人审核
     Route::post('processDailyParticipantAudit/{id}','ProcessController@processDailyParticipantAudit');
-    //临时工详情
-    //Route::post('showUserDetail','ProcessController@showUserDetail');
-    //获取全部教程
     Route::post('getTutorials/{id}','ProcessController@getTutorials');
-    //添加教程关联
     Route::post('selectedTutorial','ProcessController@selectedTutorial');
-    //删除教程关联
     Route::post('deleteTutorial','ProcessController@deleteTutorial');
-    //根据货主获取教程
     Route::post('ownerGetTutorials/{owner_id}','ProcessController@ownerGetTutorials');
-    //删除二次加工内容单
-    Route::post('deleteProcessContent/{id}','ProcessController@deleteProcessContent');
-    //回滚状态
     Route::post('rollback','ProcessController@rollback');
-    //回收站
     Route::get('recycle','ProcessController@recycle');
-    //恢复
     Route::post('recover','ProcessController@recover');
-    //审核
     Route::post('audit','ProcessController@audit');
-    //加工完成
     Route::post('processAccomplish','ProcessController@processAccomplish');
-    //验收
     Route::post('checkAndAccept','ProcessController@checkAndAccept');
-    //修改价格
     Route::post('updateUnitPrice','ProcessController@updateUnitPrice');
-    //二次加工组审核
     Route::post('workGroupVerify','ProcessController@workGroupVerify');
-    //财务审核
     Route::post('accountantVerify','ProcessController@accountantVerify');
-    //修改起始日期
     Route::post('updateStartDate','ProcessController@updateStartDate');
-    //修改终止日期
     Route::post('updateEndDate','ProcessController@updateEndDate');
-    //删除临时工工作记录
     Route::delete('destroyDailyParticipant/{id}','ProcessController@destroyDailyParticipant');
-    //导入粘贴商品数据
     Route::post('importPasteData','ProcessController@importPasteData');
-    //导出
     Route::any('export','ProcessController@export');
+    Route::post('deleteProcessContent/{id}','ProcessController@deleteProcessContent');
 });
-//process主方法 restful
 Route::resource('process','ProcessController');
 
-/**
- * 人事
- */
-//临时工报表界面
-Route::resource('personnel/laborReport','LaborReportController');
+
+/** 人事 */
+Route::group(['prefix'=>'personnel'],function(){
+    /** 打卡 */
+    Route::group(['prefix'=>'checking-in'],function(){
+        /** 打卡记录 */
+        Route::group(['prefix'=>'userDutyCheck'],function(){
+            Route::get('importAndExportClock','UserDutyCheckController@importAndExportClock');
+            Route::get('clock','UserDutyCheckController@clock');
+            Route::post('storeClock','UserDutyCheckController@storeClock');
+            Route::post('绑定临时工并进组','UserDutyCheckController@绑定临时工并进组');
+            Route::post('importGroupClock','UserDutyCheckController@importGroupClock');
+            Route::get('createUserDetail/{mobile_phone}','UserDutyCheckController@createUserDetail');
+            Route::get('updateUserLaborCompanies/{mobile_phone}','UserDutyCheckController@updateUserLaborCompanies');
+            Route::post('storeUserDetail','UserDutyCheckController@storeUserDetail');
+            Route::post('storeUpdateUserLaborCompanies','UserDutyCheckController@storeUpdateUserLaborCompanies');
+        });
+
+        Route::get('goGetQRCode','QRCodeController@goGetQRCode');
+        Route::get('QRCode','QRCodeController@QRCode');
+        Route::get('importAndExportQRCode','QRCodeController@importAndExportQRCode');
+        Route::post('refreshQRCode','QRCodeController@refreshQRCode');
+        Route::get('createReplenishClock','PersonnelController@createReplenishClock');
+        Route::post('checkUserLabors','PersonnelController@checkUserLabors');
+        Route::post('storeReplenishClock','PersonnelController@storeReplenishClock');
+        Route::get('clockAudit','PersonnelController@clockAudit');
+        Route::get('missionAudit','PersonnelController@missionAudit');
+        Route::post('storeClockAudit','PersonnelController@storeClockAudit');
+        Route::post('updateDutyCheckType','PersonnelController@updateDutyCheckType');
+        Route::post('storeGroupAudit','PersonnelController@storeGroupAudit');
+        Route::post('isException','PersonnelController@isException');
+        Route::post('storeMissionAudit','PersonnelController@storeMissionAudit');
+    });
+
+    Route::get('relating',function (){return view('personnel/menuPersonnel');});
+
+    Route::resource('laborReport','LaborReportController');
+});
+
 Route::get('getLaborReport','LaborReportController@getDailyLabor');
 
+/** 临时工报表 */
+
 Route::group(['prefix'=>'laborReport'],function(){
-    //恢复
     Route::post('recover','LaborReportController@recover');
-    //回收站
     Route::get('recycle','LaborReportController@recycle');
-    //门卫打卡审核
     Route::post('guardClockAudit','LaborReportController@guardClockAudit');
-    //组长打卡审核
     Route::post('groupClockAudit','LaborReportController@groupClockAudit');
-    //组长打卡审核(特定组添加备注)
     Route::post('addRemarkAndGroupClock','LaborReportController@addRemarkAndGroupClock');
-    //组长点击退场
     Route::post('groupExport','LaborReportController@groupExport');
-    //组长点击退场,是否包含晚饭时间情况
     Route::post('groupExportEnsure','LaborReportController@groupExportEnsure');
-    //导出
     Route::any('export','LaborReportController@export');
-    //临时工报表修改劳务所
     Route::post('updateLaborCompany','LaborReportController@updateLaborCompany');
     Route::any('删除/{id}','LaborReportController@删除');
 });
 
-Route::group(['prefix'=>'personnel'],function(){
-    //去往录入补卡
-    Route::get('checking-in/createReplenishClock','PersonnelController@createReplenishClock');
-    //搜索临时工下打卡信息
-    Route::post('checking-in/checkUserLabors','PersonnelController@checkUserLabors');
-    //录入补卡
-    Route::post('checking-in/storeReplenishClock','PersonnelController@storeReplenishClock');
-    //去往打卡审核
-    Route::get('checking-in/clockAudit','PersonnelController@clockAudit');
-    //去往任务审核
-    Route::get('checking-in/missionAudit','PersonnelController@missionAudit');
-    //打卡审核
-    Route::post('checking-in/storeClockAudit','PersonnelController@storeClockAudit');
-    //打卡审核类型
-    Route::post('checking-in/updateDutyCheckType','PersonnelController@updateDutyCheckType');
-    //打卡组长审核
-    Route::post('checking-in/storeGroupAudit','PersonnelController@storeGroupAudit');
-    //打卡审核登出类型判断异常
-    Route::post('checking-in/isException','PersonnelController@isException');
-    //任务审核
-    Route::post('checking-in/storeMissionAudit','PersonnelController@storeMissionAudit');
-    //相关设置
-    Route::get('relating',function (){return view('personnel/menuPersonnel');});
-});
+/** 库存 */
+Route::group(['prefix'=>'inventory'],function(){
+    /** 说明 */
+    Route::group(['prefix'=>'statement'],function(){
+        /** 动库报表 */
+        Route::group(['prefix'=>'changeInventory'],function(){
+            Route::any('export','InventoryController@exportData');
+            Route::get('downLoadExcel','InventoryController@downLoadExcel');
+            Route::post('deleteExcel','InventoryController@deleteExcel');
+        });
+        Route::get('changeInventory','InventoryController@changeInventory');
+        /** 全部库存 */
+        Route::group(['prefix'=>'allInventory'],function(){
+            Route::any('export','InventoryController@exportAllInventory');
+        });
+        Route::get('allInventory','InventoryController@allInventory');
+        /** 每日记录 */
+        Route::group(['prefix'=>'dailyLog'],function(){
+            Route::any('export','InventoryController@exportDailyLog');
+            Route::post('getLoggingOwner','InventoryController@getLoggingOwner');
+            Route::post('addLoggingOwner','InventoryController@addLoggingOwner');
+        });
+        Route::get('dailyLog','InventoryController@dailyLog');
+
+        Route::get('inventoryCompare','InventoryCompareController@inventoryCompare');
+        Route::any('inventoryCompare/export','InventoryCompareController@exportInventoryCompare');
+    });
+    /** 库存盘点 */
+    Route::group(['prefix'=>'stockInventory'],function(){
+        Route::get('mission','InventoryAccountController@mission');
+        Route::post('createStockInventoryMission','InventoryAccountController@createStockInventoryMission');
+        Route::any('enterStockInventory/{id}','InventoryAccountController@enterStockInventory');
+        Route::any('inventoryAccountMission/export','InventoryAccountController@exportInventoryAccountMission');
+        Route::get('mission','InventoryAccountController@mission');
+        Route::post('createStockInventoryMission','InventoryAccountController@createStockInventoryMission');
+    });
+    /** 库存比对 */
+    Route::group(['prefix'=>'inventoryCompare'],function(){
+        /** excel */
+        Route::group(['prefix'=>'import'],function(){
+            Route::post('excel','InventoryCompareController@importExcel');
+        });
+    });
 
-/**
- * 库存
- */
-Route::group(['prefix'=>'inventory'],function (){
-    //动库报表
-    Route::get('statement/changeInventory','InventoryController@changeInventory');
-    Route::any('statement/changeInventory/export','InventoryController@exportData');
-    Route::get('statement/changeInventory/downLoadExcel','InventoryController@downLoadExcel');
-    Route::post('statement/changeInventory/deleteExcel','InventoryController@deleteExcel');
-    //全部库存
-    Route::get('statement/allInventory','InventoryController@allInventory');
-    Route::any('statement/allInventory/export','InventoryController@exportAllInventory');
-
-    //同步货主
     Route::get('syncOwners','InventoryAccountController@syncOwners');
-
     Route::any('删除盘点记录','InventoryAccountController@删除盘点记录');
     Route::get('完结盘点任务/{id}','InventoryAccountController@完结盘点任务');
     Route::post('修改质量状态','InventoryAccountController@修改质量状态');
     Route::post('增加系统之外的库位记录','InventoryAccountController@增加系统之外的库位记录');
     Route::post('盘点选中任务','InventoryAccountController@盘点选中任务');
-    Route::any('stockInventory/inventoryAccountMission/export','InventoryAccountController@exportInventoryAccountMission');
-    //库存盘点
-    Route::get('stockInventory/mission','InventoryAccountController@mission');
-    //创建盘点任务
-    Route::post('stockInventory/createStockInventoryMission','InventoryAccountController@createStockInventoryMission');
-    //结束初盘任务
     Route::post('stockInventoryEnd','InventoryAccountController@stockInventoryEnd');
-    //删除盘点任务
     Route::any('deleteStockInventoryMission/{id}','InventoryAccountController@deleteStockInventoryMission');
-    //进入盘点或者复盘页面
-    Route::any('stockInventory/enterStockInventory/{id}','InventoryAccountController@enterStockInventory');
-    //盘点任务导出
     Route::any('stockInventoryExport','InventoryAccountController@stockInventoryExport');
     Route::any('stockInventory','InventoryAccountController@stockInventory');
-
-    //库存体积
-    Route::get('statement/dailyLog','InventoryController@dailyLog');
-    //库存体积导出
-    Route::any('statement/dailyLog/export','InventoryController@exportDailyLog');
-    //获取记录监听货主
-    Route::post('statement/dailyLog/getLoggingOwner','InventoryController@getLoggingOwner');
-    //添加记录监听货主
-    Route::post('statement/dailyLog/addLoggingOwner','InventoryController@addLoggingOwner');
-    //复盘查询盘点记录
     Route::post('searchStockInventoryRecord','InventoryAccountController@searchStockInventoryRecord');
-    //库存对比
-    Route::get('statement/inventoryCompare','InventoryCompareController@inventoryCompare');
-    //库存对比导出
-    Route::any('statement/inventoryCompare/export','InventoryCompareController@exportInventoryCompare');
-    //库存对比批量导入
-    Route::post('inventoryCompare/import/excel','InventoryCompareController@importExcel');
-
-    Route::post('statement/dailyLog/addLoggingOwner','InventoryController@addLoggingOwner');
 });
 
-/**
- * 出库
- */
+/** 订单 */
 Route::group(['prefix'=>'order'],function(){
-    //发运
-    Route::any('index/delivering','OrderController@delivering');
-    //批量备注
-    Route::post('create/batchComments','OrderController@batchComments');
-    //冻结订单
+    /** 主页 */
+    Route::group(['prefix'=>'index'],function(){
+        Route::any('delivering','OrderController@delivering');
+    });
+    /** 创建 */
+    Route::group(['prefix'=>'create'],function(){
+        Route::post('batchComments','OrderController@batchComments');
+    });
+    /** 波次 */
+    Route::group(['prefix'=>'wave'],function(){
+        Route::get('index','WaveController@index');
+        Route::post('cancelPrinting','WaveController@cancelPrinting');
+        Route::any('exportExcel','WaveController@exportExcelOnParams');
+    });
+    /** 问题件 */
+    Route::group(['prefix'=>'issue'],function(){
+        /** 工作量 */
+        Route::group(['prefix'=>'workLoad'],function(){
+            Route::get('index','OrderIssuePerformanceController@workLoadPage');
+            Route::any('export','OrderIssuePerformanceController@exportWorkLoad');
+        });
+        /** 绩效 */
+        Route::group(['prefix'=>'orderIssuePerformance'],function(){
+            Route::get('index','OrderIssuePerformanceController@index');
+            Route::any('export','OrderIssuePerformanceController@export');
+        });
+
+        Route::get('index','OrderIssueController@index');
+        Route::get('create','OrderIssueController@create');
+        Route::post('store','OrderIssueController@store');
+        Route::post('batchImport','OrderIssueController@batchImport');
+        Route::get('excelImport','OrderIssueController@excelImport');
+        Route::get('edit/{id}','OrderIssueController@edit');
+        Route::match(['get','post'],'export','OrderIssueController@exportOrderIssue');
+    });
+    /** 跟踪 */
+    Route::group(['prefix'=>'tracking'],function(){
+        Route::get('index',"OrderTrackingController@index");
+        Route::get('export',"OrderTrackingController@export");
+        Route::get('update','OrderTrackingController@updateApi');
+    });
+
     Route::post('freeze','OrderController@freeze');
-    //批量冻结订单
     Route::post('freezeAll','OrderController@freezeAll');
-    //解冻订单
     Route::post('thaw','OrderController@thaw');
-    //取消分配
     Route::post('deAllocation','OrderController@deAllocation');
-    //批量取消分配
     Route::post('deAllocationAll','OrderController@deAllocationAll');
-    //重置快递获取标记
     Route::post('resetLogisticsGetMark','OrderController@resetLogisticsGetMark');
 });
-
-/**
- * 波次
- */
-Route::group(['prefix'=>'order'],function(){
-    // index
-    Route::get('wave/index','WaveController@index');
-    // cancel printing by id or ids
-    Route::post('wave/cancelPrinting','WaveController@cancelPrinting');
-    // export Excel
-    Route::any('wave/exportExcel','WaveController@exportExcelOnParams');
-});
-/**
- * 问题件
- */
-Route::group(['prefix'=>'order'],function(){
-    Route::get('issue/index','OrderIssueController@index');// 查询
-    Route::get('issue/create','OrderIssueController@create'); // 录入
-    Route::post('issue/store','OrderIssueController@store'); // 录入
-
-    Route::post('issue/batchImport','OrderIssueController@batchImport'); // 批量导入
-    Route::get('issue/excelImport','OrderIssueController@excelImport'); // 前往
-    Route::get('issue/edit/{id}','OrderIssueController@edit');// 编辑
-    Route::match(['get','post'],'issue/export','OrderIssueController@exportOrderIssue');// 导出
-
-    Route::get('issue/workLoad/index','OrderIssuePerformanceController@workLoadPage');
-    Route::any('issue/workLoad/export','OrderIssuePerformanceController@exportWorkLoad');
-
-    Route::get('issue/orderIssuePerformance/index','OrderIssuePerformanceController@index');
-    Route::any('issue/orderIssuePerformance/export','OrderIssuePerformanceController@export');
-});
-/**
- * tracking
- */
-Route::group(['prefix'=>'order'],function(){
-    Route::get('tracking/index',"OrderTrackingController@index");
-    Route::get('tracking/export',"OrderTrackingController@export");
-    Route::get('tracking/update','OrderTrackingController@updateApi');
-});

+ 76 - 0
tests/Routes/WebTest.php

@@ -0,0 +1,76 @@
+<?php
+
+namespace Tests\Routes;
+
+use App\User;
+use Illuminate\Support\Str;
+use Tests\TestCase;
+
+class WebTest extends TestCase
+{
+    const PARAM = 1;
+    const GET = [
+        "/home",
+        "/homeTemp",
+        "password/change",
+        "password/update",
+    ];
+    const POST = [
+
+    ];
+    const PUT = [
+
+    ];
+    const DELETE = [
+
+    ];
+    const RESTFUL = [
+
+    ];
+    const ANY = [
+
+    ];
+    const MATCH = [
+
+    ];
+    public function testRoutes(){
+        $superAdmin = config('users.superAdmin');
+        $user = User::query()->where('name',$superAdmin[0])->first();
+        if (!$user){
+            $user = User::query()->create([
+                'name' => $superAdmin[0],
+                'email' => "test@example.com",
+                'password' => "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi",
+                'remember_token' => Str::random(10),
+            ]);
+        }
+        $getMethod = self::GET;
+        $postMethod = self::POST;
+        $putMethod = self::PUT;
+        $deleteMethod = self::DELETE;
+        foreach (self::MATCH as $method => $route){
+            if ($method == 'get'){
+                array_push($getMethod,$route);
+            }
+            if ($method == 'post'){
+                array_push($postMethod,$route);
+            }
+            if ($method == 'put'){
+                array_push($putMethod,$route);
+            }
+            if ($method == 'delete'){
+                array_push($deleteMethod,$route);
+            }
+        }
+        $urls = array_merge(self::GET,self::RESTFUL);
+        /** @var User $user */
+        foreach ($urls as $url){
+            $response = $this->actingAs($user)->get($url);
+            $this->assertNotEquals($response->getStatusCode(),404);
+        }
+    }
+
+    public function testPost(){
+
+    }
+}

+ 0 - 3
tests/Unit/PackageTest.php

@@ -3,13 +3,10 @@
 namespace Tests\Unit;
 
 use App\Authority;
-use App\Package;
 use App\Role;
 use App\User;
 use Illuminate\Support\Facades\DB;
 use Tests\TestCase;
-use Illuminate\Foundation\Testing\WithFaker;
-use Illuminate\Foundation\Testing\RefreshDatabase;
 
 class PackageTest extends TestCase
 {

+ 1 - 1
tests/package.http

@@ -1,4 +1,4 @@
 POST http://bswas/api/thirdPart/weight/new
 Content-Type: application/json
 
-{"id": "abc6","barcode": "5466422500912e","weight": "13","length": 3,"width": 1,"height": 2}
+{"id": "abc6","barcode": "547181870002","weight": "0.31","length": 3,"width": 1,"height": 2}

+ 6 - 0
tests/route.http

@@ -0,0 +1,6 @@
+# For a quick start check out our HTTP Requests collection (Tools|HTTP Client|Open HTTP Requests Collection).
+#
+# Following HTTP Request Live Templates are available:
+# * 'gtrp' and 'gtr' create a GET request with or without query parameters;
+# * 'ptr' and 'ptrp' create a POST request with a simple or parameter-like body;
+# * 'mptr' and 'fptr' create a POST request to submit a form with a text or file field (multipart/form-data);

+ 1 - 1
tests/webApi/test.http

@@ -8,7 +8,7 @@
 POST http://bswas/api/thirdPart/weight/new
 Content-Type: application/json
 
-{"barcode":"t5","weight":"5","id":"test","key":"test","time":"2020-2-26 14:17:07"}
+{"id": "abc6","barcode": "233170028951","weight": "13","length": 3,"width": 1,"height": 2}
 
 ###
 POST http://bswas/api/thirdPart/weight/new