소스 검색

合并packages

zhouzhendong 5 년 전
부모
커밋
1185872cea
35개의 변경된 파일515개의 추가작업 그리고 381개의 파일을 삭제
  1. 3 5
      app/Events/WeighedEvent.php
  2. 6 63
      app/Http/Controllers/MeasureMonitorController.php
  3. 10 1
      app/Http/Controllers/OrderController.php
  4. 12 10
      app/Http/Controllers/PackageController.php
  5. 1 69
      app/Http/Controllers/StoreItemsController.php
  6. 5 23
      app/Http/Controllers/TestController.php
  7. 5 20
      app/Http/Controllers/WeighExceptedController.php
  8. 3 34
      app/Http/Controllers/api/thirdPart/flux/PackageController.php
  9. 15 18
      app/Http/Controllers/api/thirdPart/weight/PackageController.php
  10. 3 11
      app/Jobs/FetchPackageFromOracle.php
  11. 2 2
      app/Jobs/MarkPackageExcepted.php
  12. 3 3
      app/Jobs/MeasuringMachineQueue.php
  13. 2 4
      app/Listeners/FulfillFulfillPackageCustomer.php
  14. 4 0
      app/OracleActAllocationDetails.php
  15. 189 1
      app/OrderPackage.php
  16. 7 16
      app/Package.php
  17. 4 0
      app/Providers/AppServiceProvider.php
  18. 4 2
      app/Services/InventoryService.php
  19. 6 0
      app/Services/LogisticService.php
  20. 13 0
      app/Services/OracleActAllocationDetailService.php
  21. 6 23
      app/Services/OrderIssueService.php
  22. 33 0
      app/Services/OrderPackageService.php
  23. 74 20
      app/Services/OrderService.php
  24. 12 0
      app/Services/OwnerService.php
  25. 12 8
      app/Services/PackageService.php
  26. 15 4
      app/Services/PackageStatisticsService.php
  27. 7 3
      app/Services/ProcessService.php
  28. 6 6
      app/Services/RejectedService.php
  29. 16 0
      app/Services/ShopService.php
  30. 7 4
      app/Services/WaybillService.php
  31. 18 10
      app/Services/WeighExceptedService.php
  32. 4 0
      app/Waybill.php
  33. 0 12
      database/factories/PackagesFactory.php
  34. 8 6
      resources/views/weight/package/index.blade.php
  35. 0 3
      tests/Unit/PackageTest.php

+ 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;
     }

+ 6 - 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,10 @@ 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('owner','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 +54,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";
         //转导出
         if ($checkData || $export){
             $post = Http::post(config('go.export.url'),['type'=>'order','sql'=>$sql]);

+ 12 - 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;
@@ -72,15 +73,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 +91,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 +120,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 +160,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);

+ 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)
-    {
-        //
-    }
 }

+ 5 - 23
app/Http/Controllers/TestController.php

@@ -10,38 +10,16 @@ use App\Commodity;
 use App\Events\CancelOrder;
 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\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\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\Http\Request;
 use Illuminate\Support\Facades\DB;
-use function PHPSTORM_META\map;
 use Zttp\Zttp;
 
 class TestController extends Controller
@@ -279,7 +257,11 @@ class TestController extends Controller
     }
 
     function test(){
-        dd(app('oracleActAllocationDetailService')->paginate([]));
+        $actAllocationDetail = OracleActAllocationDetails::query()->first();
+        $actAllocationDetail->load(['oracleDocOrderHeader'=>function($query){
+            $query->with('oracleBASCustomer','oracleBASCode');
+        }]);
+        dd($actAllocationDetail);
     }
 
     /*1*/

+ 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);

+ 15 - 18
app/Http/Controllers/api/thirdPart/weight/PackageController.php

@@ -4,11 +4,9 @@ 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\OrderPackage;
 use App\Waybill;
 use Illuminate\Http\Request;
 use Illuminate\Support\Carbon;
@@ -175,11 +173,11 @@ 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();
+        $package=OrderPackage::query()->where('logistic_number',$request['barcode'])->first();
 
         $edges=[$request['length']??0,$request['width']??0,$request['height']??0];
         rsort($edges);
@@ -220,7 +218,6 @@ class PackageController extends Controller
             $logisticNumber=$request['barcode'];
             $package=new Package([
                 'logistic_number'=>$logisticNumber,
-                'delivery_number'=>$logisticNumber,
                 'measuring_machine_id'=>$measuringMachine->id,
                 'weight'=>$request['weight'],
                 'length'=>$edges[0],
@@ -250,18 +247,18 @@ class PackageController extends Controller
         }
         if(!empty($package->order_code))
             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);
     }
 

+ 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');
+    }
 }

+ 189 - 1
app/OrderPackage.php

@@ -2,8 +2,13 @@
 
 namespace App;
 
+use App\Http\Controllers\Controller;
+use App\Services\OrderIssueService;
 use App\Traits\ModelTimeFormat;
+use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Arr;
+use Illuminate\Support\Facades\DB;
 
 class OrderPackage extends Model
 {
@@ -24,15 +29,198 @@ 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){
+        $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')->get();
+        $packages = [];
+        $now = Carbon::now();
+        foreach($resultOracleObjs as $resultOracleObj){
+            array_push($packages,[
+                'batch_number'=>$batchCode??'',
+                /** @var OrderIssueService $orderIssueService */
+                'order_id' => app('orderIssueService')->createOrFindByOrderNo($resultOracleObj['orderno']),
+                'logistic_number'=>$resultOracleObj['SOReference5']??'',
+                'weight'=>$weight,
+                'weighed_at'=> $now,
+                'status'=>"已上传",
+                "created_at"=>$now,
+            ]);
+        }
+        DB::transaction(function ()use($packages){
+            Package::query()->insert($packages);
+        });
+    }
+    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;
+        Package::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['owner_id'];
+        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'];
+    }
 }

+ 7 - 16
app/Package.php

@@ -7,6 +7,7 @@ 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,10 +83,10 @@ 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??'',
                 'order_id' => app('orderIssueService')->createOrFindByOrderNo($resultOracleObj['orderno']),
@@ -96,7 +97,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 +145,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 +203,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){

+ 4 - 0
app/Providers/AppServiceProvider.php

@@ -10,11 +10,13 @@ use App\Services\AllInventoryService;
 use App\Services\InventoryDailyLogService;
 use App\Services\LogisticService;
 use App\Services\OracleActAllocationDetailService;
+use App\Services\OrderPackageService;
 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 +83,7 @@ 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);
     }
 }

+ 4 - 2
app/Services/InventoryService.php

@@ -111,8 +111,10 @@ class InventoryService
         return $sql;
     }
 
-    public function paginate(array $params){
-        return DB::connection('oracle')->select(DB::raw($this->getSql($params,$params['page'] ?? 1, $params['paginate'] ?? 50)));
+    public function paginate(array $params)
+    {
+        return DB::connection('oracle')->select(DB::raw($this->getSql($params, $params['page'] ?? 1, $params['paginate'] ?? 50)));
+    }
 
     //库存体积条件
     private function conditionQueryDailyLog(array $param){

+ 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();
+    }
 }

+ 6 - 23
app/Services/OrderIssueService.php

@@ -212,33 +212,14 @@ 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')
@@ -276,7 +257,7 @@ class OrderIssueService
 
     public function createOrFindByOrderNo($orderNo)
     {
-        $orderHeader = OracleDOCOrderHeader::where('orderNo', $orderNo)->first();
+        $orderHeader = OracleDOCOrderHeader::query()->where('orderNo', $orderNo)->first();
         if (!$orderHeader) {
             return null;
         }
@@ -285,18 +266,20 @@ class OrderIssueService
 
     public function createOrFind($clientCode)
     {
+        /** @var OrderService $orderService */
         $orderService = app('orderService');
-        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1', $clientCode)->first();
+        $orderHeader = OracleDOCOrderHeader::query()->where('SOREFERENCE1', $clientCode)->first();
         if (!$orderHeader) {
             return null;
         }
         $order = $orderService->findOrCreateByClientCode($clientCode);
-        $rejectedBill = RejectedBill::where('order_number', $orderHeader['soreference1'])->first();
+        $rejectedBill = RejectedBill::query()->where('order_number', $orderHeader['soreference1'])->first();
         $arr = [
             'order_id' => $order['id'],
             'rejected_bill_id' => $rejectedBill['id'],
         ];
-        $orderIssue = OrderIssue::create($arr);
+        /** @var OrderIssue $orderIssue */
+        $orderIssue = OrderIssue::query()->create($arr);
         $this->judgeRejectingStatus($orderIssue);
         $orderIssue->order = $order;
         return $orderIssue;

+ 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;
+
+        $order = app('orderService')->logisticNumberCreateOrder($logistic_number);
+        if (!$order)return null;
+
+        $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);
+    }
 
  }

+ 74 - 20
app/Services/OrderService.php

@@ -4,17 +4,13 @@ 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;
+use Illuminate\Database\Eloquent\Builder;
 
 class OrderService
 {
@@ -25,31 +21,31 @@ class OrderService
 
     public function findOrCreateByClientCode($clientCode)
     {
-        $order = Order::where('client_code', $clientCode)->first();
-        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1', $clientCode)->first();
+        $order = Order::query()->where('client_code', $clientCode)->first();
+        $orderHeader = OracleDOCOrderHeader::query()->where('SOREFERENCE1', $clientCode)->first();
         if ($orderHeader == null) {
             return null;
         }
         $orderHeadAttr = $orderHeader->toArray();
         if ($order == null) {
             $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c'];
-            $owner = Owner::where('code', $orderHeadAttr['customerid'])->first();
+            $owner = Owner::query()->where('code', $orderHeadAttr['customerid'])->first();
             if (!$owner) {
-                $owner = Owner::create(['code' => $orderHeadAttr['customerid'], 'name' => $customer_name]);
+                $owner = Owner::query()->create(['code' => $orderHeadAttr['customerid'], 'name' => $customer_name]);
             }
             $owner_id = $owner['id'];
             $shop_name = $orderHeadAttr['issuepartyname'];
             $shop_Id = null;
             if ($shop_name) {
-                $shop = Shop::firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
+                $shop = Shop::query()->firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
                 $shop_Id = $shop['id'];
             }
-            $logistics = Logistic::where(['code' => $orderHeadAttr['carrierid']])->first();
+            $logistics = Logistic::query()->where(['code' => $orderHeadAttr['carrierid']])->first();
             $logistics_id = null;
             if ($logistics) {
                 $logistics_id = $logistics['id'];
             } else {
-                $logistics = Logistic::create(['name'=>$orderHeadAttr['carriername'],'code'=>$orderHeadAttr['carrierid']]);
+                $logistics = Logistic::query()->create(['name'=>$orderHeadAttr['carriername'],'code'=>$orderHeadAttr['carrierid']]);
                 $logistics_id = $logistics['id'];
             }
             $arr = [
@@ -67,7 +63,7 @@ class OrderService
                 'address' => $orderHeadAttr['c_address1'],
                 'client_code' => $orderHeadAttr['soreference1'],
             ];
-            $order = Order::create($arr);
+            $order = Order::query()->create($arr);
             $orderPackageService = app('orderPackageService');
             $orderPackageService->createdByOrder($order);
         }
@@ -76,8 +72,8 @@ class OrderService
 
     public function getOrderInfo($orderId)
     {
-        return Order::with(['packages' => function ($query) {
-            return $query->with(['commodities' => function ($query) {
+        return Order::with(['packages' => function (Builder $query) {
+            return $query->with(['commodities' => function (Builder $query) {
                 return $query->with(['commodity']);
             }]);
         }])->where('id', $orderId)->first();
@@ -85,11 +81,11 @@ class OrderService
 
     public function getRejectedBillOfClientCode($clientCode)
     {
-        $orderHeader = OracleDOCOrderHeader::where('SOReference1', $clientCode)->first();
+        $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $clientCode)->first();
         if (!$orderHeader) {
             return null;
         }
-        $ASNHeader = OracleDOCASNHeader::where('ASNReference2', $orderHeader->soreference2)->first();
+        $ASNHeader = OracleDOCASNHeader::query()->where('ASNReference2', $orderHeader->soreference2)->first();
         if (!$ASNHeader) {
             return null;
         }
@@ -98,14 +94,72 @@ class OrderService
 
     public function findOrCreteByLogisticNumberReturn($logisticNumberReturn)
     {
-        $ASNHeader = OracleDOCASNHeader::where('ASNReference3', $logisticNumberReturn)->first();
+        $ASNHeader = OracleDOCASNHeader::query()->where('ASNReference3', $logisticNumberReturn)->first();
         if (!$ASNHeader) {
             return null;
         }
-        $orderHeader = OracleDOCOrderHeader::where('SOReference1', $ASNHeader->ASNReference2);
+        $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $ASNHeader->ASNReference2);
         if (!$orderHeader) {
             return null;
         }
-        return $this->findOrCreateByClientCode($orderHeader[soreference1]);
+        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]);
+        $order = $this->first(['code'=>$actAllocationDetail->orderno]);
+        if ($order)return $order;
+
+
+        $actAllocationDetail->load(['oracleDocOrderHeader'=>function($query){
+            $query->with('oracleBASCode');
+        }]);
+        $orderHeader = $actAllocationDetail->oracleDocOrderHeader ?? null;
+        if ($orderHeader == null)return null;
+
+        $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) {
+            $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,
+        ]);
     }
 }

+ 12 - 0
app/Services/OwnerService.php

@@ -39,4 +39,16 @@ 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){
+        return Owner::query()->create($params);
+    }
 }

+ 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');
+        }])->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('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')

+ 6 - 6
app/Services/RejectedService.php

@@ -47,11 +47,11 @@ 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('is_checked', false)
-                        ->orWhere('is_checked', null);
+                    $query->where('rejected_bills.is_checked', false)
+                        ->orWhere('rejected_bills.is_checked', null);
                 });
             }
             unset($param["is_checked"]);
@@ -59,7 +59,7 @@ class RejectedService
         if ($param["is_loaded"] ?? false) {
             $is_loaded = $param["is_loaded"];
             if ($is_loaded == 'null') $is_loaded = null;
-            $rejectedBills = $rejectedBills->where('is_loaded', $is_loaded);
+            $rejectedBills = $rejectedBills->where('rejected_bills.is_loaded', $is_loaded);
             unset($param["is_loaded"]);
         }
         if ($param["barcode_goods"] ?? 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('deleted_at')
             ->leftJoin('owners','rejected_bills.id_owner','=','owners.id')
             ->selectRaw('owners.name owner_name')
             ->leftJoin('logistics','rejected_bills.id_logistic_return','=','logistics.id')
@@ -109,7 +109,7 @@ class RejectedService
             ->leftJoin('quality_labels','rejected_bill_items.id_quality_label','=','quality_labels.id')
             ->selectRaw('quality_labels.name quality_label_name')
             ->leftJoin('users','rejected_bills.id_operator','=','users.id')
-            ->selectRaw('users.id operator_name');
+            ->selectRaw('users.name operator_name');
         return $sql->sql();
     }
 

+ 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);
+    }
+
+}

+ 7 - 4
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,13 @@ 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');
+            $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 +51,7 @@ Class WaybillService
     }
 
     public function getSql(array $param){
-        $waybills = $this->conditionQuery($param);
+        $waybills = $this->conditionQuery($param)->whereNull('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();
     }

+ 4 - 0
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;
@@ -140,6 +141,9 @@ class Waybill extends Model
     }
 
 
+    /**
+     * @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 [
-        //
-    ];
-});

+ 8 - 6
resources/views/weight/package/index.blade.php

@@ -69,13 +69,15 @@
             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 : '') : ''}}',
+                        logisticName:'{{$package->order ? ($package->order->logistic ? $package->order->logistic->name : '') : ''}}'
+                        ,batchNumber:'{{$package->batch_number}}',batchRule:'{{$package->batch_rule}}'
+                        ,recipient:'{{$package->order ? $package->order->recipient : ''}}',recipientMobile:'{{$package->order ? $package->order->recipient_mobile : ''}}'
+                        ,logisticNumber:'{{$package->logistic_number}}'
+                        ,measuringMachineName:'{{$package->measuring_machine ? $package->measuring_machine->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->paper_box ? $package->paper_box->name : ''}}',
+                        status:'{{$package->status}}',created_at:'{{$package->created_at}}',weighed_at:'{{$package->weighed_at}}'},
                     @endforeach
                 ],
                 i:0,

+ 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
 {