Преглед изворни кода

Merge branch 'master' into Haozi

# Conflicts:
#	app/Http/Controllers/TestController.php
#	app/Services/CommodityService.php
#	app/Services/OwnerService.php
#	app/Services/WarehouseService.php
haozi пре 5 година
родитељ
комит
68f415531d
42 измењених фајлова са 736 додато и 345 уклоњено
  1. 30 6
      app/Console/Commands/SyncBatchTask.php
  2. 2 1
      app/Console/Commands/SyncWMSOrderTask.php
  3. 3 0
      app/Console/Kernel.php
  4. 14 8
      app/Http/Controllers/OrderIssueController.php
  5. 85 0
      app/Http/Controllers/StationTypeBinMonitorController.php
  6. 10 3
      app/Http/Controllers/TestController.php
  7. 1 0
      app/Http/Controllers/api/thirdPart/haochuang/SortingController.php
  8. 53 89
      app/Providers/AppServiceProvider.php
  9. 7 2
      app/Services/BatchService.php
  10. 3 3
      app/Services/CommodityService.php
  11. 1 1
      app/Services/LogisticService.php
  12. 1 1
      app/Services/OrderCommodityService.php
  13. 1 1
      app/Services/OrderIssueService.php
  14. 3 4
      app/Services/OrderPackageCommoditiesService.php
  15. 2 2
      app/Services/OrderPackageService.php
  16. 32 10
      app/Services/OrderService.php
  17. 1 2
      app/Services/OwnerService.php
  18. 1 1
      app/Services/ShopService.php
  19. 46 0
      app/Services/StationRuleBatchService.php
  20. 17 1
      app/Services/StationService.php
  21. 6 3
      app/Services/StationTaskBatchService.php
  22. 1 1
      app/StationTask.php
  23. 1 1
      app/StationTaskCommodity.php
  24. 10 0
      app/StationTypeBinMonitor.php
  25. 14 0
      database/factories/OrderPackageCommoditiesFactory.php
  26. 12 0
      database/factories/StationConfigFactory.php
  27. 12 0
      database/factories/StationTypeBinMonitorFactory.php
  28. 1 1
      database/migrations/2020_12_07_111922_add_column_handled_amount_of_station_task_commodities.php
  29. 53 0
      database/migrations/2020_12_07_114158_create_station_task_children.php
  30. 5 4
      database/migrations/2020_12_07_144724_add_column_bin_numbers_to_task_commodities.php
  31. 35 0
      database/migrations/2020_12_07_150608_create_station_type_bin_monitors_table.php
  32. 52 0
      database/migrations/2020_12_08_113058_change_station_task_tables_column_station_id.php
  33. 16 0
      database/seeds/StationConfigSeeder.php
  34. 16 0
      database/seeds/StationTypeBinMonitorSeeder.php
  35. 46 22
      resources/views/station/monitor/show.blade.php
  36. 66 47
      tests/Services/OrderPackageCommoditiesService/RegroupOrderCommoditiesTest.php
  37. 46 35
      tests/Services/OrderPackageService/GetInnerParamsTest.php
  38. 27 27
      tests/Services/OrderPackageService/SyncOrderPackageTest.php
  39. 0 31
      tests/Services/OrderPackageService/SyncPackageByOrderHeadersTest.php
  40. 0 38
      tests/Services/OrderTrackingService/CustomizedOperationTest.php
  41. 0 0
      tests/webApi/thirdPart/haochuang/process.http
  42. 4 0
      tests/webApi/thirdPart/haochuang/scanCommodity.http

+ 30 - 6
app/Console/Commands/SyncBatchTask.php

@@ -50,14 +50,13 @@ class SyncBatchTask extends Command
         if ($batches){
             foreach ($batches as $batch)$map[$batch->code] = $batch->id;
         }
-        $update = [["id","status","remark","updated_at"]];
+        $update = [["id","wms_status","remark","updated_at"]];
         $insert = [];
         foreach ($waves as $wave){
-            $status = $wave->wavestatus == '40' ? "未处理" : ($wave->wavestatus == '90' ? '取消' : '已处理');
             if (isset($map[$wave->waveno])){
                 $update[] = [
                     "id" => $map[$wave->waveno],
-                    "status" => $status,
+                    "wms_status" => $this->wms_status($wave),
                     "remark"=>$wave->descr,
                     "updated_at"=>$wave->edittime,
                 ];
@@ -66,8 +65,9 @@ class SyncBatchTask extends Command
             $owner = app("OwnerService")->codeGetOwner($wave->customerid);
             $insert[] = [
                 "code" => $wave->waveno,
-                "status" => $status,
                 "remark"=>$wave->descr,
+                "status" => '未处理',
+                "wms_status" => $this->wms_status($wave),
                 "created_at"=>$wave->addtime,
                 "updated_at"=>$wave->edittime,
                 "owner_id"=>$owner->id,
@@ -118,11 +118,11 @@ class SyncBatchTask extends Command
             $waves = $this->service->get(["waveno"=>$waveCodes],["waveno"=>"in"]);
             $insert = [];
             foreach ($waves as $wave){
-                $status = $wave->wavestatus == '40' ? "未处理" : ($wave->wavestatus == '90' ? '取消' : '已处理');
                 $owner = app("OwnerService")->codeGetOwner($wave->customerid);
                 $insert[] = [
                     "code" => $wave->waveno,
-                    "status" => $status,
+                    "status" => '未处理',
+                    "wms_status" => $this->wms_status($wave),
                     "remark"=>$wave->descr,
                     "created_at"=>$wave->addtime,
                     "updated_at"=>$wave->edittime,
@@ -143,4 +143,28 @@ class SyncBatchTask extends Command
 
         ValueStore::query()->where("name","wave_last_sync_date")->update(["value"=>Carbon::now()->subSeconds(1)->toDateTimeString()]);
     }
+
+    /**
+     * @param $wave
+     * @return string
+     */
+    public function wms_status($wave): string
+    {
+        switch ($wave->wavestatus) {
+            case 00:
+                $wms_status = '创建';
+                break;
+            case 40:
+                $wms_status = '部分收货';
+                break;
+            case 90:
+                $wms_status = '取消';
+                break;
+            case 99:
+                $wms_status = '完成';
+                break;
+            default:null;
+        }
+        return $wms_status;
+    }
 }

+ 2 - 1
app/Console/Commands/SyncWMSOrderTask.php

@@ -14,7 +14,7 @@ class SyncWMSOrderTask extends Command
      *
      * @var string
      */
-    protected $signature = 'SyncWMSOrderTask';
+    protected $signature = 'sync:order';
 
     /**
      * The console command description.
@@ -39,6 +39,7 @@ class SyncWMSOrderTask extends Command
     public function handle()
     {
         $is_enabled= config('sync.order_sync.cache_prefix.enabled');
+        sleep(rand(5,10));
         if($is_enabled=='false')return;
         $this->syncCreatedOrder();
         $this->syncUpdatedOrder();

+ 3 - 0
app/Console/Kernel.php

@@ -3,6 +3,7 @@
 namespace App\Console;
 
 use App\Console\Commands\SyncBatchTask;
+use App\Console\Commands\SyncWMSOrderTask;
 use Illuminate\Console\Scheduling\Schedule;
 use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
 
@@ -23,6 +24,7 @@ class Kernel extends ConsoleKernel
         \App\Console\Commands\SyncUserVisitMenuLogsCacheTask::class,
         \App\Console\Commands\TestTemp::class,
         SyncBatchTask::class,
+        SyncWMSOrderTask::class,
     ];
 
     /**
@@ -42,6 +44,7 @@ class Kernel extends ConsoleKernel
         $schedule->command('createOwnerBillReport')->monthlyOn(1);
         $schedule->command('createOwnerAreaReport')->monthlyOn(25);
         $schedule->command('sync:batch')->everyMinute();
+        $schedule->command('sync:order')->everyMinute();
     }
 
     /**

+ 14 - 8
app/Http/Controllers/OrderIssueController.php

@@ -624,16 +624,16 @@ class OrderIssueController extends Controller
         $row = [
             '登记日期','创建日期','客户','客户订单号','原始承运商','收货人','收货电话','省','市','区','收货人地址',
             '原始运单号','原始商品','原始商品名称','原始商品数量',
-            '退单备注','退单商品名','退单商品条码','退单商品数量','退单状态',
+            '退回单号', '退单商品名','退单商品条码','退单商品数量','是否正品','退单状态','退单备注',
             '操作类型','说明','操作者','情况说明','问题类别',
             '二次订单号','二次承运商','二次运单号','二次商品条码','二次商品名','二次商品数量',
             '最终状态', '承运商赔偿金额', '承运商快递减免', '宝时赔偿金额', '宝时快递减免','事故责任方'
         ];
         foreach ($order_Issues as $order_issue){
             $order =  $order_issue->order;
-            $orderPacakges = $order_issue->order->packages ?? collect();
+            $orderPackages = $order_issue->order->packages ?? collect();
             $logistic_numbers = '';$order_sku  = '';$order_sku_name  = '';$order_sku_amount  = '';
-            $orderPacakges->each(function($package,$index)use(&$logistic_numbers,&$order_sku,&$order_sku_name,&$order_sku_amount){
+            $orderPackages->each(function($package,$index)use(&$logistic_numbers,&$order_sku,&$order_sku_name,&$order_sku_amount){
                 if(!str_starts_with('null',$package->logistic_number))$logistic_numbers.=$package->logistic_number.",\r\n";
                 $package->commodities->each(function($commodities)use(&$order_sku,&$order_sku_name,&$order_sku_amount){
                     $commodity = $commodities->commodity ?? '';
@@ -642,16 +642,19 @@ class OrderIssueController extends Controller
                     $order_sku_amount.= ($commodities->amount ?? '').",\r\n";
                 });
             });
-            $rejected_Bill_remark = $order_issue->rejectedBill->remark ?? '';
+            $rejected_logistic_number = $order_issue->rejectedBill->logistic_number_return;
+            $rejected_Bill_remark = '';
+            $rejected_is_checked = '';
             $rejected_name = ''; $rejected_barcode = '';$rejected_amount = '';
             if($order_issue->rejectedBill){
-                $order_issue->rejectedBill->items(function($item)use(&$rejected_name,&$rejected_barcode, &$rejected_amount){
+                $order_issue->rejectedBill->items->each(function($item)use(&$rejected_name,&$rejected_barcode, &$rejected_amount,&$rejected_Bill_remark,&$rejected_is_checked){
                     $rejected_name.= $item->name_goods.",\r\n";
                     $rejected_barcode.= $item->barcode_goods.",\r\n";
                     $rejected_amount.= $item->amount.",\r\n";
+                    $rejected_Bill_remark.= $item->remark.",\r\n";
+                    $rejected_is_checked.= $item->quality->name.",\r\n";
                 });
             }
-
             $log_type = ''; $log_content = '';$log_user = '';
             $order_issue->logs->each(function($log)use(&$log_type, &$log_content,&$log_user){
                 $log_type.=$log->type.",\r\n";
@@ -688,11 +691,14 @@ class OrderIssueController extends Controller
                 rtrim($order_sku_name,",\r\n"),                //原始商品名称
                 rtrim($order_sku_amount,",\r\n"),              //原始商品数量
 
-                //'退单备注','退单商品名','退单商品条码','退单商品数量','退单状态',
-                rtrim($rejected_Bill_remark,",\r\n"),                                          // 退单备注
+                //,'退单商品名','退单商品条码','退单商品数量','退单状态','退单备注'
+                $rejected_logistic_number,                      //退回单号
                 rtrim($rejected_name,",\r\n"),        // 退单商品名
                 rtrim($rejected_barcode,",\r\n") ,    // 退单商品条码
                 rtrim($rejected_amount,",\r\n"),      // 退单商品数量
+                rtrim($rejected_is_checked,",\r\n"),  // 是否正品
+                rtrim($rejected_Bill_remark,",\r\n"),   // 退单备注
+
                 $order_issue->rejecting_status ,                                // 退单状态
 
                 // '操作类型','情况说明','问题类别',

+ 85 - 0
app/Http/Controllers/StationTypeBinMonitorController.php

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\StationTypeBinMonitor;
+use Illuminate\Http\Request;
+
+class StationTypeBinMonitorController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * 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\StationTypeBinMonitor  $stationTypeBinMonitor
+     * @return \Illuminate\Http\Response
+     */
+    public function show(StationTypeBinMonitor $stationTypeBinMonitor)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\StationTypeBinMonitor  $stationTypeBinMonitor
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(StationTypeBinMonitor $stationTypeBinMonitor)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\StationTypeBinMonitor  $stationTypeBinMonitor
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, StationTypeBinMonitor $stationTypeBinMonitor)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\StationTypeBinMonitor  $stationTypeBinMonitor
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(StationTypeBinMonitor $stationTypeBinMonitor)
+    {
+        //
+    }
+}

+ 10 - 3
app/Http/Controllers/TestController.php

@@ -24,6 +24,7 @@ use App\OrderBin;
 use App\OrderCommodity;
 use App\OrderIssue;
 use App\OrderPackage;
+use App\OrderPackageCommodities;
 use App\Owner;
 use App\Package;
 use App\Process;
@@ -1199,9 +1200,7 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             }, 'oracleBASCode' => function ($query) {
                 $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
             }])
-//            ->where('DOC_Order_Header.addTime','>=',$startDate)
-//            ->where('orderno','SO201112029795')
-            ->where('DOC_Order_Header.addTime', '>=', $carbon)
+            ->where('DOC_Order_Header.addTime','>=',$carbon)
             ->get();
         /** @var OrderService $service */
         $service = app('OrderService');
@@ -1303,4 +1302,12 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         $orderTrackingService->createByWmsOrderHeader($orderHeaders);
     }
 
+    public function testSyncOrderTask(){
+        dump('hendle...');
+        dump((string)Carbon::now());
+        $task = new SyncWMSOrderTask();
+        $task->handle();
+        dump((string)Carbon::now());
+        dd('hendle...end');
+    }
 }

+ 1 - 0
app/Http/Controllers/api/thirdPart/haochuang/SortingController.php

@@ -50,6 +50,7 @@ class SortingController extends Controller
         ]);
     }
 
+
     function process(Request $request){
         $token = trim($request->input('token'));
         $station_id = $request->input('station_id');

+ 53 - 89
app/Providers/AppServiceProvider.php

@@ -126,113 +126,77 @@ class AppServiceProvider extends ServiceProvider
     }
 
     private function loadingService(){
+        app()->singleton('AllInventoryService',AllInventoryService::class);
+        app()->singleton('AuthorityService',AuthorityService::class);
         app()->singleton('BatchService',BatchService::class);
+        app()->singleton('BatchUpdateService', BatchUpdateService::class);
         app()->singleton('CacheService',CacheService::class);
-        app()->singleton('UserService',UserService::class);
-        app()->singleton('AuthorityService',AuthorityService::class);
-        app()->singleton('WaybillFinancialService',WaybillFinancialService::class);
-        app()->singleton('WeighExceptedService',WeighExceptedService::class);
-        app()->singleton('AllInventoryService',AllInventoryService::class);
+        app()->singleton('CheckActiveMenuService',CheckActiveMenuService::class);
+        app()->singleton('CommodityBarcodeService',CommodityBarcodeService::class);
+        app()->singleton('CommodityService', CommodityService::class);
+        app()->singleton('CustomerService',CustomerService::class);
+        app()->singleton('DataHandlerService',DataHandlerService::class);
+        app()->singleton('DepositoryService',DepositoryService::class);
+        app()->singleton('FeatureService',FeatureService::class);
+        app()->singleton('ForeignHaiRoboticsService',ForeignHaiRoboticsService::class);
         app()->singleton('InventoryDailyLogService',InventoryDailyLogService::class);
+        app()->singleton('InventoryAccountMissionService',InventoryAccountMissionService::class);
+        app()->singleton('LaborReportsCountingRecordService',LaborReportsCountingRecordService::class);
         app()->singleton('LogService',LogService::class);
-        app()->singleton('ProcessService',ProcessService::class);
-        app()->singleton('ProcessStatisticService',ProcessStatisticService::class);
-        app()->singleton('OwnerService',OwnerService::class);
-        app()->singleton('ProcessMethodService',ProcessMethodService::class);
         app()->singleton('LogisticService',LogisticService::class);
-        app()->singleton('PackageStatisticsService',PackageStatisticsService::class);
         app()->singleton('OracleActAllocationDetailService',OracleActAllocationDetailService::class);
-        app()->singleton('ShopService',ShopService::class);
-        app()->singleton('ForeignHaiRoboticsService',ForeignHaiRoboticsService::class);
-        app()->singleton('OrderPackageService',OrderPackageService::class);
-        app()->singleton('OrderIssueService',OrderIssueService::class);
-        app()->singleton('OrderService',OrderService::class);
-        app()->singleton('OracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
-        app()->singleton('OwnerReportService',OwnerReportService::class);
-        app()->singleton('RejectedBillService',RejectedBillService::class);
-        app()->singleton('RejectedBillItemService',RejectedBillItemService::class);
-        app()->singleton('StoreCheckingReceiveService',StoreCheckingReceiveService::class);
-        app()->singleton('StoreCheckingReceiveItemService',StoreCheckingReceiveItemService::class);
-        app()->singleton('CommodityBarcodeService',CommodityBarcodeService::class);
         app()->singleton('OracleBasCustomerService',OracleBasCustomerService::class);
         app()->singleton('OracleBasSkuService',OracleBasSkuService::class);
         app()->singleton('OracleDocAsnDetailService',OracleDocAsnDetailService::class);
-        app()->singleton('InventoryAccountMissionService',InventoryAccountMissionService::class);
-        app()->singleton('ProcessesContentService',ProcessesContentService::class);
-        app()->singleton('StoreService',StoreService::class);
-        app()->singleton('StationTaskBatchService',StationTaskBatchService::class);
-        app()->singleton('StationTaskBatchTypeService',StationTaskBatchTypeService::class);
-        app()->singleton('StationService',StationService::class);
-        app()->singleton('WarehouseService',WarehouseService::class);
-        app()->singleton('StoreItemService',StoreItemService::class);
-        app()->singleton('PackageService',PackageService::class);
-        app()->singleton('ProcessMethodService',ProcessMethodService::class);
-        app()->singleton('OwnerReportService',OwnerReportService::class);
+        app()->singleton('OracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
+        app()->singleton('OrderIssueProcessLogService',OrderIssueProcessLogService::class);
+        app()->singleton('OrderCommodityService',OrderCommodityService::class);
+        app()->singleton('OrderCommodityAssignService',OrderCommodityAssignService::class);
+        app()->singleton('OrderCountingRecordService',OrderCountingRecordService::class);
+        app()->singleton('OrderIssueService',OrderIssueService::class);
+        app()->singleton('OrderIssueWorkLoadService',OrderIssueWorkLoadService::class);
+        app()->singleton('OrderIssuePerformanceService',OrderIssuePerformanceService::class);
+        app()->singleton('OrderPackageCommoditiesService',OrderPackageCommoditiesService::class);
+        app()->singleton('OrderPackageService',OrderPackageService::class);
+        app()->singleton('OrderService',OrderService::class);
+        app()->singleton('OrderTrackingService',OrderTrackingService::class);
         app()->singleton('OwnerAreaReportService',OwnerAreaReportService::class);
-        app()->singleton('OwnerFeeDetailService',OwnerFeeDetailService::class);
         app()->singleton('OwnerBillReportService',OwnerBillReportService::class);
+        app()->singleton('OwnerFeeDetailService',OwnerFeeDetailService::class);
+        app()->singleton('OwnerOutStorageRuleService',OwnerOutStorageRuleService::class);
         app()->singleton('OwnerPriceExpressService',OwnerPriceExpressService::class);
         app()->singleton('OwnerPriceLogisticService',OwnerPriceLogisticService::class);
         app()->singleton('OwnerPriceDirectLogisticService',OwnerPriceDirectLogisticService::class);
-        app()->singleton('OrderCommodityAssignService',OrderCommodityAssignService::class);
-
-        $this->loadingOrderModuleService();
-        $this->loadingBasedModuleService();
-        $this->loadingRejectedModuleService();
-        $this->loadingCheckActiveMenuService();
-        $this->loadingRealtimePendingOrdersService();
-        $this->loadingOrderCountingRecordService();
-        $this->loadingLaborReportsCountingRecordService();
-    }
-
-    private function loadingOrderModuleService(){
-        app()->singleton('OrderTrackingService',OrderTrackingService::class);
-        app()->singleton('OrderService',OrderService::class);
-        app()->singleton('OrderPackageService',OrderPackageService::class);
-        app()->singleton('OrderPackageCommoditiesService',OrderPackageCommoditiesService::class);
-        app()->singleton('OrderIssueService',OrderIssueService::class);
-        app()->singleton('OrderIssueWorkLoadService',OrderIssueWorkLoadService::class);
-        app()->singleton('OrderIssuePerformanceService',OrderIssuePerformanceService::class);
-        app()->singleton('OracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
-        app()->singleton('OracleActAllocationDetailService',OracleActAllocationDetailService::class);
-        app()->singleton('OrderIssueProcessLogService',OrderIssueProcessLogService::class);
-        app()->singleton('OrderCommodityService',OrderCommodityService::class);
-    }
-
-    private function loadingBasedModuleService(){
-        app()->singleton("ShopService", ShopService::class);
-        app()->singleton('CommodityService', CommodityService::class);
-        app()->singleton('BatchUpdateService', BatchUpdateService::class);
-        app()->singleton('DataHandlerService',DataHandlerService::class);
-        app()->singleton('DepositoryService',DepositoryService::class);
-        app()->singleton('UserOwnerGroupService',UserOwnerGroupService::class);
-        app()->singleton('CustomerService',CustomerService::class);
+        app()->singleton('OwnerPriceOperationService',OwnerPriceOperationService::class);
+        app()->singleton('OwnerReportService',OwnerReportService::class);
+        app()->singleton('OwnerService',OwnerService::class);
         app()->singleton('OwnerStoragePriceModelService',OwnerStoragePriceModelService::class);
+        app()->singleton('PackageStatisticsService',PackageStatisticsService::class);
+        app()->singleton('PackageService',PackageService::class);
+        app()->singleton('ProcessesContentService',ProcessesContentService::class);
+        app()->singleton('ProcessMethodService',ProcessMethodService::class);
+        app()->singleton('ProcessService',ProcessService::class);
+        app()->singleton('ProcessStatisticService',ProcessStatisticService::class);
+        app()->singleton('RealtimePendingOrdersService',RealtimePendingOrdersService::class);
+        app()->singleton('RejectedBillItemService',RejectedBillItemService::class);
+        app()->singleton('RejectedBillService',RejectedBillService::class);
+        app()->singleton('RejectedService',RejectedService::class);
+        app()->singleton('ShopService',ShopService::class);
+        app()->singleton('StationService',StationService::class);
+        app()->singleton('StationTaskBatchService',StationTaskBatchService::class);
+        app()->singleton('StationTaskBatchTypeService',StationTaskBatchTypeService::class);
+        app()->singleton('StoreCheckingReceiveService',StoreCheckingReceiveService::class);
+        app()->singleton('StoreCheckingReceiveItemService',StoreCheckingReceiveItemService::class);
+        app()->singleton('StoreItemService',StoreItemService::class);
+        app()->singleton('StoreService',StoreService::class);
         app()->singleton('UnitService',UnitService::class);
-        app()->singleton('OwnerPriceOperationService',OwnerPriceOperationService::class);
-        app()->singleton('FeatureService',FeatureService::class);
-        app()->singleton('OwnerOutStorageRuleService',OwnerOutStorageRuleService::class);
-    }
+        app()->singleton('UserService',UserService::class);
+        app()->singleton('UserOwnerGroupService',UserOwnerGroupService::class);
+        app()->singleton('WarehouseService',WarehouseService::class);
+        app()->singleton('WaybillFinancialService',WaybillFinancialService::class);
+        app()->singleton('WeighExceptedService',WeighExceptedService::class);
 
-    private function loadingRejectedModuleService(){
-        app()->singleton('RejectedService',RejectedService::class);
     }
 
-    private function loadingCheckActiveMenuService()
-    {
-        app()->singleton('CheckActiveMenuService',CheckActiveMenuService::class);
-    }
 
-    private function loadingRealtimePendingOrdersService()
-    {
-        app()->singleton('RealtimePendingOrdersService',RealtimePendingOrdersService::class);
-    }
-    private function loadingOrderCountingRecordService()
-    {
-        app()->singleton('OrderCountingRecordService',OrderCountingRecordService::class);
-    }
-    private function loadingLaborReportsCountingRecordService()
-    {
-        app()->singleton('LaborReportsCountingRecordService',LaborReportsCountingRecordService::class);
-    }
 }

+ 7 - 2
app/Services/BatchService.php

@@ -42,8 +42,13 @@ Class BatchService
     public function assignTasks(array $batches)
     {
         $this->stationTaskBatchService=app('StationTaskBatchService');
-        $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches);
-
+        //按规则过滤需要的波次
+        //分配
+        $stationTaskBatches=$this->stationTaskBatchService->createByBatches($batches); //注册波次任务
+        //注册料箱任务
+        //注册商品任务
+        //注册总任务
+        //执行总任务
     }
 
 }

+ 3 - 3
app/Services/CommodityService.php

@@ -381,9 +381,9 @@ Class CommodityService
     public function getCommodityByOwnerCodeAndSKU($ownerCode, $sku)
     {
         $commodity_key = "owner_code_{$ownerCode}_sku_{$sku}";
-        return Cache::remember($commodity_key, 300, function () use ($ownerCode, $sku) {
-            $commodity = Commodity::query()->where('sku', $sku)->whereHas('owner', function ($query) use ($ownerCode) {
-                $query->where('code', $ownerCode);
+        return Cache::remember($commodity_key,config('cache.expirations.forever'),function()use($ownerCode,$sku){
+            $commodity = Commodity::query()->where('sku',$sku)->whereHas('owner',function($query)use($ownerCode){
+                $query->where('code',$ownerCode);
             })->first();
             if (isset($commodity)) return $commodity;
             $basSKu = app('OracleBasSkuService')->first(['sku' => $sku, 'customerid' => $ownerCode]);

+ 1 - 1
app/Services/LogisticService.php

@@ -101,7 +101,7 @@ Class LogisticService
     }
 
     public function getLogisticByCode($code){
-        return Cache::remember("getLogisticByCode_{$code}", config('database.cache.expirations.logistic'), function()use($code){
+        return Cache::remember("getLogisticByCode_{$code}", config('database.cache.expirations.rarelyChange'), function()use($code){
             $logistic = Logistic::query()->where('code',$code)->first();
             if($logistic)return $logistic;
             $baseCustomers = app('OracleBasCustomerService')->first(['Customer_Type'=>'CA','CustomerID'=>'$code']);

+ 1 - 1
app/Services/OrderCommodityService.php

@@ -109,7 +109,7 @@ Class OrderCommodityService
                 'sku' => $orderCommodity['commodity']['sku'],
                 'owner_id' => $orderCommodity['order']['owner_id'],
                 'amount' => $orderCommodity['amount'],
-                'location' => $orderCommodity['location']
+                'location' => $orderCommodity['location'] ?? ''
             ];
         }
         return $map;

+ 1 - 1
app/Services/OrderIssueService.php

@@ -48,7 +48,7 @@ class OrderIssueService
                 $query->with('barcodes');
             }]);
         }, 'rejectedBill' => function ($query) {
-            $query->with(['items']);
+            $query->with(['items.quality']);
         }, 'secondOrder' => function ($query) {
             $query->with(['shop', 'logistic', 'owner', 'packages.commodities.commodity' => function ($query) {
                 $query->with('barcodes');

+ 3 - 4
app/Services/OrderPackageCommoditiesService.php

@@ -594,10 +594,9 @@ class OrderPackageCommoditiesService
     {
         if(!$ids)return;
         if(count($ids)==0)return;
-        OrderPackageCommodities::query()->whereHas('package',function($query)use($ids){
-            $query->whereIn('id',$ids);
-        })->delete();
-        app('LogService')->log(__METHOD__,__FUNCTION__,'删除 OrderPackageCommodities'.json_encode($ids));
+        $items = OrderPackageCommodities::query()->whereIn('order_package_id',$ids)->get();
+        OrderPackageCommodities::query()->whereIn('order_package_id',$ids)->delete();
+        app('LogService')->log(__METHOD__,__FUNCTION__,'删除 OrderPackageCommodities'.json_encode($items));
     }
     // TODO
     public function syncOrderPackageCommodities(&$orderHeaders)

+ 2 - 2
app/Services/OrderPackageService.php

@@ -420,8 +420,8 @@ class OrderPackageService
 
         $orderPackageCommodityService->deleteUnnecessaryOrderCommodities($del_ids);     // 删除 orderCommodity
 
-        $orderTracking = OrderTracking::query()->whereHas('commodities.package',function($query)use($del_ids){
-            $query->whereIn('id',$del_ids);
+        $orderTracking = OrderTracking::query()->whereHas('commodities',function($query)use($del_ids){
+            $query->whereIn('order_package_id',$del_ids);
         })->get();
         if($orderTracking->count()==0)return;
 

+ 32 - 10
app/Services/OrderService.php

@@ -2,6 +2,7 @@
 
 namespace App\Services;
 
+use App\Jobs\OrderCreateInstantBill;
 use App\Logistic;
 use App\OracleActAllocationDetails;
 use App\OracleDOCASNHeader;
@@ -788,8 +789,19 @@ class OrderService
         $orderCommodityService->syncOrderCommodities($orderHeaders);
 
         $packageService->syncOrderPackage($orderHeaders);
+
+        $this->pushQueue($orderHeaders);
+    }
+
+    public function pushQueue($orderHeaders){
+        $orders = Order::query()->with(["logistic","packages.commodities.commodity"])->where('wms_status','订单完成')->whereIn('code',data_get($orderHeaders,'*.code'))->get();
+
+        $orders->each(function($order){
+            dispatch(new OrderCreateInstantBill($order));
+        });
     }
 
+
     public function syncOrderByWMSOrderHeaders(&$orderHeaders)
     {
         if($orderHeaders->isEmpty())return;
@@ -1089,21 +1101,25 @@ class OrderService
         $newest_list    = config('sync.order_sync.cache_prefix.newest_list');
         $hasKey         = config('sync.order_sync.cache_prefix.newest_has');
         $prefixKey      = config('sync.order_sync.cache_prefix.newest');
+        ini_set('memory_limit', '512M');
+        $orderService = app('OrderService');
+        $oracleDOCOrderHeaderService = app('OracleDocOrderHeaderService');
 
-        $last_date = $orderService->getOrderSyncAt($newest,'newest');                              // 获取时间点
-
-        $orderHeaders = $oracleDOCOrderHeaderService->getWmsOrderOnStartDateEdit($last_date);           // WMS订单
+        $last_date = $orderService->getOrderSyncAt($newest,'newest');                             // 获取时间点
 
+        $orderHeaders = $oracleDOCOrderHeaderService->getWMSOrderOnStartDate($last_date);               // WMS订单
+        if($orderHeaders->count()==0)return;
         $last_order = $orderHeaders->first();                                                           // 时间点靠后的
-        $renewal_orders = $orderHeaders->where('addTime',$last_order->addtime);
+        $newest_orders = $orderHeaders->where('addtime',$last_order->addtime);
 
         $orderHeaders = $orderService->filterOrderByCache($orderHeaders,$newest_list);                  // 对比缓存
 
-        if(count($orderHeaders)>0 && count($orderHeaders) >0){
+        if(count($newest_orders)>0 && count($orderHeaders) >0){
+
             $orderService->syncOrder($orderHeaders);                                                //  同步订单
             $orderService->cancelOrderCache($newest_list,$prefixKey);                                   //  清除缓存
-            $orderService->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$newest_list);             //  添加缓存
-            $orderService->setOrderSyncAt($newest,$last_order->addTime,count($orderHeaders)>0);   //  更新时间
+            $orderService->pushOrderCache($newest_orders,$prefixKey,$hasKey,$newest_list);              //  添加缓存
+            $orderService->setOrderSyncAt($newest,$last_order->addtime,count($orderHeaders)>0);   //  更新时间
         }
     }
 
@@ -1116,21 +1132,27 @@ class OrderService
         $renewal_list   = config('sync.order_sync.cache_prefix.renewal_list');
         $hasKey         = config('sync.order_sync.cache_prefix.renewal_has');
         $prefixKey      = config('sync.order_sync.cache_prefix.renewal');
+        ini_set('memory_limit', '512M');
+
+        $orderService = app('OrderService');
+        $oracleDOCOrderHeaderService = app('OracleDocOrderHeaderService');
 
         $last_date = $orderService->getOrderSyncAt($renewal,'renewal');                               // 获取时间点
 
-        $orderHeaders = $oracleDOCOrderHeaderService->getWMSOrderOnStartDate($last_date);                   // WMS订单
+        $orderHeaders = $oracleDOCOrderHeaderService->getWMSOrderOnEditDate($last_date);                   // WMS订单
 
+        if($orderHeaders->count()==0)return;
         $renewal_order = $orderHeaders->first();                                                            // 时间点靠后的
-        $renewal_orders =  $orderHeaders->where('addTime',$renewal_order->addtime);
+        $renewal_orders =  $orderHeaders->where('edittime',$renewal_order->edittime);
 
         $orderHeaders = $orderService->filterOrderByCache($orderHeaders,$renewal_list);                     // 对比缓存
 
         if(count($renewal_orders)>0 && count($orderHeaders)>0){
+
             $orderService->syncOrder($orderHeaders);                                                    // 同步订单
             $orderService->cancelOrderCache($renewal_list,$prefixKey);                                      // 清除缓存
             $orderService->pushOrderCache($renewal_orders,$prefixKey,$hasKey,$renewal_list);                // 添加缓存
-            $orderService->setOrderSyncAt($renewal,$renewal_order->addTime,count($orderHeaders)>0);   // 更新时间
+            $orderService->setOrderSyncAt($renewal,$renewal_order->edittime,count($orderHeaders)>0);   // 更新时间
         }
     }
 

+ 1 - 2
app/Services/OwnerService.php

@@ -122,7 +122,7 @@ Class OwnerService
         $customerIds = array_diff($customerIds,[null,'','*']);
         $owners = Owner::query()->whereIn('code',$customerIds)->get();
 
-         if($owners->count() < count($customerIds)){
+        if($owners->count() < count($customerIds)){
             $customerIds = array_diff($customerIds,data_get($owners,'*.code'));
             $owner_list = $this->createByWmsCustomerIds($customerIds);
             $owners=$owners->concat($owner_list);
@@ -237,7 +237,6 @@ Class OwnerService
             return Owner::query()->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid']]);
         });
     }
-
     public function codeGetOwner($code)
     {
         return app(CacheService::class)->getOrExecute("owner_".$code,function ()use($code){

+ 1 - 1
app/Services/ShopService.php

@@ -110,7 +110,7 @@ class ShopService
         $collect = collect();
         if(count($map)==0)return $collect;
         foreach ($map as $item) {
-            $collect->push(Cache::remember("getShopByCodeMap_{$item['owner_code']}_{$item['issuepartyname']}", null, function()use($item,$owner_map){
+            $collect->push(Cache::remember("getShopByCodeMap_{$item['owner_code']}_{$item['issuepartyname']}", config('database.cache.expirations.rarelyChange'), function()use($item,$owner_map){
                 $owner = $owner_map[$item['owner_code']] ;
                 $shop = Shop::query()->where('owner_id',$owner['id'])->where('name',$item['issuepartyname'])->first();
                 if($shop)return $shop;

+ 46 - 0
app/Services/StationRuleBatchService.php

@@ -0,0 +1,46 @@
+<?php
+
+
+namespace App\Services;
+
+
+use App\Batch;
+use App\StationRuleBatch;
+use App\StationType;
+use Illuminate\Support\Collection;
+use Illuminate\Support\Facades\Cache;
+
+class StationRuleBatchService
+{
+    function getByBatch(Batch $batch): StationRuleBatch
+    {
+        $batchType = $batch['type'] ?? 'null';
+        $ownerId = $batch['owner_id'] ?? 'null';
+        return Cache::remember('stationType_type_'.$batchType.'_ownerId_'.$ownerId, config('cache.expirations.rarelyChange'),function($batch){
+            return StationRuleBatch::query()->with('stationType')->where('batch_type',$batch['type'])
+                ->where('owner_id',$batch['owner_id'])
+                ->first();
+        });
+    }
+
+    function getStationType_toBeTask(Batch $batch): ?StationType{
+        $stationRuleBatch=$this->getByBatch($batch);
+        if(!$stationRuleBatch)return null;
+        return $stationRuleBatch['stationType'];
+    }
+
+    /**
+     * @param Batch[] $batches
+     * @return Collection
+     */
+    function getBatches_canProcess(array $batches): Collection
+    {
+        $batches_toProcess=collect();
+        foreach ($batches as $batch){
+            $stationRuleBatch=$this->getByBatch($batch);
+            if($stationRuleBatch)
+            $batches_toProcess->push($batch);
+        }
+        return $batches_toProcess;
+    }
+}

+ 17 - 1
app/Services/StationService.php

@@ -5,6 +5,8 @@ namespace App\Services;
 
 
 use App\Station;
+use App\StationTask;
+use App\StationTaskCommodity;
 use App\StationType;
 use Exception;
 use Illuminate\Support\Facades\Cache;
@@ -31,8 +33,22 @@ class StationService
         //event(new BroadcastToStation($station_id,$json_data))
     }
 
-    function broadcastBinMonitor($station_id, ){
+    function broadcastBinMonitor($station_id, StationTask $stationTask,StationTaskCommodity $stationTaskCommodity){
         //...
+        //$stationTask->stationTaskBatch
+        //$stationTask->stationTaskMaterialBox
+        //$stationTask->stationCommodities
+        //$batch= $stationTask->stationTaskBatch->batch
+        //$orders= $batch->....
+        //.....
+        //$json_data=['batch','stationCommodities','stationMaterialBin']
+        //$this->broadcast($station_id, $json_data)
+    }
+
+    function broadcastBinMonitorWarning($warnText, $station_id, StationTask $stationTask){
+        //...
+        //...
+        //$json_data=['warn']
         //$this->broadcast($station_id, $json_data)
     }
 

+ 6 - 3
app/Services/StationTaskBatchService.php

@@ -5,6 +5,7 @@ namespace App\Services;
 
 
 use App\Batch;
+use App\Station;
 use App\StationTaskBatch;
 use App\StationTaskBatchType;
 use Exception;
@@ -27,15 +28,17 @@ class StationTaskBatchService
 
     /**
      * @param $batches Batch[]
-     * @throws Exception
+     * @param Station $station
+     * @return Collection
      */
-    public function createByBatches(array $batches){
+    public function createByBatches(array $batches,Station $station): Collection
+    {
         $this->stationService=app('StationService');
         $this->stationTaskBatchTypeService=app('StationTaskBatchTypeService');
         $this->batchService=app('BatchService');
 
         $stationMissionBatches_toCreate=new Collection();
-        $station=$this->stationService->getDefaultStation('料箱出货口');
+//        $station=$this->stationService->getDefaultStation('料箱出货口');
         $id_stationMissionBatchType=$this->stationTaskBatchTypeService->firstByWhere('name','U型线分捡');
 
         $batches_handled=[];

+ 1 - 1
app/StationTask.php

@@ -6,5 +6,5 @@ use Illuminate\Database\Eloquent\Model;
 
 class StationTask extends Model
 {
-    protected $fillable = ['station_id', 'station_type_id'];
+    protected $fillable = ['status',];
 }

+ 1 - 1
app/StationTaskCommodity.php

@@ -6,5 +6,5 @@ use Illuminate\Database\Eloquent\Model;
 
 class StationTaskCommodity extends Model
 {
-    protected $fillable= ['station_id','material_box_id','commodity_id','amount','order_id','status','station_id'];
+    protected $fillable= ['station_id','material_box_id','commodity_id','amount','order_id','status'];
 }

+ 10 - 0
app/StationTypeBinMonitor.php

@@ -0,0 +1,10 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class StationTypeBinMonitor extends Model
+{
+    protected $fillable=['station_id','bin_row_length','bin_column_length','bin_wall_amount'];
+}

+ 14 - 0
database/factories/OrderPackageCommoditiesFactory.php

@@ -0,0 +1,14 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\OrderPackageCommodities;
+use Faker\Generator as Faker;
+
+$factory->define(OrderPackageCommodities::class, function (Faker $faker) {
+    return [
+        'order_package_id' => 1,
+        'commodity_id' => 1,
+        'amount' => rand(1,100)
+    ];
+});

+ 12 - 0
database/factories/StationConfigFactory.php

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

+ 12 - 0
database/factories/StationTypeBinMonitorFactory.php

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

+ 1 - 1
database/migrations/2020_12_07_111922_add_column_handled_amount_of_station_task_commodities.php

@@ -14,7 +14,7 @@ class AddColumnHandledAmountOfStationTaskCommodities extends Migration
     public function up()
     {
         Schema::table('station_task_commodities', function (Blueprint $table) {
-            $table->integer('handled_amount')->default(0);
+            $table->integer('handled_amount')->default(0)->after('amount');
         });
     }
 

+ 53 - 0
database/migrations/2020_12_07_114158_create_station_task_children.php

@@ -0,0 +1,53 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStationTaskChildren extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('station_task_children', function (Blueprint $table) {
+            $table->id();
+            $table->bigInteger('station_task_id')->index();
+            $table->string('station_task_table_type');
+            $table->bigInteger('station_task_table_id');
+            $table->index('station_task_table_id','station_task_table_type');
+            $table->timestamps();
+        });
+        Schema::table('station_task_batches', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+        });
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+        });
+        Schema::table('station_task_material_boxes', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('station_task_batches', function (Blueprint $table) {
+            $table->integer('station_id')->index();
+        });
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->integer('station_id')->index();
+        });
+        Schema::table('station_task_material_boxes', function (Blueprint $table) {
+            $table->integer('station_id')->index();
+        });
+        Schema::dropIfExists('station_task_children');
+    }
+}

+ 5 - 4
database/migrations/2020_12_07_143049_station_task_children.php → database/migrations/2020_12_07_144724_add_column_bin_numbers_to_task_commodities.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class StationTaskChildren extends Migration
+class AddColumnBinNumbersToTaskCommodities extends Migration
 {
     /**
      * Run the migrations.
@@ -13,8 +13,8 @@ class StationTaskChildren extends Migration
      */
     public function up()
     {
-        Schema::table('name', function (Blueprint $table) {
-            //
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->integer('bin_number')->after('handled_amount');
         });
     }
 
@@ -25,7 +25,8 @@ class StationTaskChildren extends Migration
      */
     public function down()
     {
-        Schema::table('name', function (Blueprint $table) {
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->dropColumn('bin_number');
             //
         });
     }

+ 35 - 0
database/migrations/2020_12_07_150608_create_station_type_bin_monitors_table.php

@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class CreateStationTypeBinMonitorsTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::create('station_type_bin_monitors', function (Blueprint $table) {
+            $table->id();
+            $table->integer('station_id')->index();
+            $table->integer('bin_row_length')->default(4);
+            $table->integer('bin_column_length')->default(5);
+            $table->integer('bin_wall_amount')->default(2);
+            $table->timestamps();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::dropIfExists('station_type_bin_monitors');
+    }
+}

+ 52 - 0
database/migrations/2020_12_08_113058_change_station_task_tables_column_station_id.php

@@ -0,0 +1,52 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeStationTaskTablesColumnStationId extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('station_tasks', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+            $table->dropColumn('station_type_id');
+        });
+        Schema::table('station_task_batches', function (Blueprint $table) {
+            $table->integer('station_id')->index();
+        });
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->integer('station_id')->index();
+        });
+        Schema::table('station_task_material_boxes', function (Blueprint $table) {
+            $table->integer('station_id')->index();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('station_tasks', function (Blueprint $table) {
+            $table->integer('station_id');
+            $table->integer('station_type_id')->nullable()->index();
+        });
+        Schema::table('station_task_batches', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+        });
+        Schema::table('station_task_commodities', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+        });
+        Schema::table('station_task_material_boxes', function (Blueprint $table) {
+            $table->dropColumn('station_id');
+        });
+    }
+}

+ 16 - 0
database/seeds/StationConfigSeeder.php

@@ -0,0 +1,16 @@
+<?php
+
+use Illuminate\Database\Seeder;
+
+class StationConfigSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}

+ 16 - 0
database/seeds/StationTypeBinMonitorSeeder.php

@@ -0,0 +1,16 @@
+<?php
+
+use Illuminate\Database\Seeder;
+
+class StationTypeBinMonitorSeeder extends Seeder
+{
+    /**
+     * Run the database seeds.
+     *
+     * @return void
+     */
+    public function run()
+    {
+        //
+    }
+}

+ 46 - 22
resources/views/station/monitor/show.blade.php

@@ -19,10 +19,10 @@
                     <div class="col text-center  h3 py-2 text-muted">智能分拣</div>
                 </div>
                 <div class="row pt-3">
-                    <div class="col-4 text-center">
+                    <div class="col-4">
                         <div class="row">
                             <div class="col py-3 h4">
-                                波次号:
+                                波次号:nnnnnnnnnnn
                             </div>
                             <div class="col py-3 h4">
 
@@ -37,17 +37,7 @@
                         </div>
                         <div class="row">
                             <div class="col py-3 h4">
-                                料箱号:
-                            </div>
-                            <div class="col py-3 h4">
-
-                            </div>
-                        </div>
-                        <div class="row">
-                            <div class="col py-3 h4">
-                            </div>
-                            <div class="col py-3 h4 text-muted">
-                                {条码}
+                                料箱号:nnnnnnnnnnn
                             </div>
                         </div>
                         <div class="row pt-5">
@@ -56,8 +46,42 @@
                     </div>
                     <div class="col text-center">
                         <div class="row">
-                            <div class="col py-3 h4">订单号:</div>
-                            <div class="col py-3 h4">N</div>
+                            <div class="col py-3 h4">
+                                <table class="table border">
+                                    <tr>
+                                        <td class="border p-0"><span style="opacity:0.25">6</span></td>
+                                        <td class="bg-info border p-0"><span style="opacity:0.25">7</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">8</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">9</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">10</span></td>
+                                    </tr>
+                                    <tr>
+                                        <td class="border p-0"><span style="opacity:0.25">1</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">2</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">3</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">4</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">5</span></td>
+                                    </tr>
+                                </table>
+                            </div>
+                            <div class="col py-3 h4">
+                                <table class="table border">
+                                    <tr>
+                                        <td class="border p-0"><span style="opacity:0.25">6</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">7</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">8</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">9</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">10</span></td>
+                                    </tr>
+                                    <tr>
+                                        <td class="border p-0"><span style="opacity:0.25">1</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">2</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">3</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">4</span></td>
+                                        <td class="border p-0"><span style="opacity:0.25">5</span></td>
+                                    </tr>
+                                </table>
+                            </div>
                         </div>
                         <div class="row">
                             <div class="col py-1">数量</div>
@@ -68,28 +92,28 @@
                         <div class="row">
                             <div class="col py-1">
                                 <table class="table table-striped border">
-                                    <tr>
+                                    <tr class="text-muted">
                                         <th class="py-2">序号</th>
                                         <th class="py-2">商品</th>
                                         <th class="py-2">数量</th>
                                         <th class="py-2">条码</th>
                                     </tr>
-                                    <tr>
-                                        <td></td>
+                                    <tr class="text-muted">
                                         <td></td>
                                         <td></td>
+                                        <td>0/0</td>
                                         <td></td>
                                     </tr>
-                                    <tr>
-                                        <td></td>
+                                    <tr class="text-muted">
                                         <td></td>
                                         <td></td>
+                                        <td>0/0</td>
                                         <td></td>
                                     </tr>
-                                    <tr>
-                                        <td></td>
+                                    <tr class="text-muted">
                                         <td></td>
                                         <td></td>
+                                        <td>0/0</td>
                                         <td></td>
                                     </tr>
                                 </table>

+ 66 - 47
tests/Services/OrderPackageCommoditiesService/RegroupOrderCommoditiesTest.php

@@ -2,10 +2,14 @@
 
 namespace Tests\Services\OrderPackageCommoditiesService\RegroupOrderCommoditiesTest;
 
+use App\Commodity;
+use App\OracleActAllocationDetails;
+use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
+use App\Owner;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderPackageCommoditiesService;
 use App\Services\OrderService;
@@ -20,66 +24,81 @@ class RegroupOrderCommoditiesTest extends TestCase
 
     /**
      * @var OrderPackageCommoditiesService $service
-     * @var OracleDOCOrderHeaderService $orderHeaderService
-     * @var OrderService $orderService
      */
     private $service;
-    private $orderHeaderService;
-    private $orderService;
+    private $data = [];
 
     public function setUp(): void
     {
         parent::setUp();
         $this->service = app('OrderPackageCommoditiesService');
-        $this->orderService = app('OrderService');
-        $this->orderHeaderService = app('OracleDocOrderHeaderService');
-    }
+        $order = factory(Order::class)->create();
+        $this->data['order'] = $order;
 
-    public function testRegroupOrderCommodities()
-    {
-        $orderHeader = OracleDOCOrderHeader::query()->where('sostatus',99)->orderByDesc('AddTime')->first();
-        if(!$orderHeader){
-            $this->assertNull($orderHeader);
-            return ;
+        $wmsOrderHeader = factory(OracleDOCOrderHeader::class)->make([
+            'customerid'=>'TEST_OW','sostatus'=>99,'userdefine1'=>'TEST_CA','warehouseid'=>'WH_TEST'
+        ]);
+        $this->data['orderHeader'] = $wmsOrderHeader;
+
+        $orderPackage = factory(OrderPackage::class)->create(['order_id'=>$order->id]);
+        $this->data['orderPackage'] = $orderPackage;
+
+        $basSKUs = collect();
+        for ($i = 0;$i<2;$i++){
+            $basSKUs->push(factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']));
+        }
+
+        $owner =factory(Owner::class)->create(['code'=>'TEST_OW']);
+        $this->data['owner'] = $owner;
+
+
+        $this->data['commodities'] = collect();
+        foreach ($basSKUs as $item) {
+            $this->data['commodities']->push(factory(Commodity::class)->create(['owner_id'=>$owner->id,'sku'=>$item['sku']]));
         }
 
-        $orderHeaders = OracleDOCOrderHeader::query()->where('sostatus',99)
-            ->where('addtime','>=',$orderHeader->addtime)
-            ->get();
+        $OracleActAllocationDetails = collect();
+        foreach ($this->data['commodities'] as $commodity) {
+            $OracleActAllocationDetails->push(factory(OracleActAllocationDetails::class)->make(
+                ['orderno'=>$wmsOrderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$commodity->sku,$orderPackage->logistic_number])
+            );
+        }
 
-        $this->orderService->syncOrder($orderHeaders);
-        $order_nos = data_get($orderHeaders,'*.orderno');
-        $order_commodities = OrderPackageCommodities::query()->with(['commodity','package.order'])->whereHas('package',function($query)use($order_nos){
-            $query->whereHas('order',function ($query)use($order_nos){
-                $query->whereIn('code',$order_nos);
-            });
+        $this->data['order_package_commodities'] = collect();
+        foreach ($OracleActAllocationDetails as $OracleActAllocationDetail) {
+            $commodity = $this->data['commodities']->where('sku',$OracleActAllocationDetail->sku)->first();
+            $this->data['order_package_commodities']->push(factory(OrderPackageCommodities::class)->create(
+                ['order_package_id'=>$orderPackage->id,'commodity_id'=>$commodity->id,'amount'=>$OracleActAllocationDetail->qty_each])
+            );
+        }
+        $wmsOrderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
+    }
+
+    /**
+     * @test
+     */
+    public function regroupOrderCommodities()
+    {
+        $order = $this->data['order'];
+        $opc = OrderPackageCommodities::query()->with('package.order')->whereHas('package.order',function ($query)use($order){
+            $query->where('code',$order->code);
         })->get();
+        $params = $this->service->regroupOrderCommodities($opc);
+        $this->assertNotNull($params);
 
-        $params = $this->service->regroupOrderCommodities($order_commodities);
-
-        $_params = [];
-
-        $orderHeaders->each(function($order_header)use(&$_params){
-            $order_header->actAllocationDetails->each(function($detail)use(&$_params){
-                $order_no = $detail->orderno;
-                $logistic_number = $detail->picktotraceid;
-                $sku = $detail->sku;
-                $key = ' orderno='.$order_no.' logsitic_number='.$logistic_number.' sku='.$sku.' ';
-                if(isset($_params[$key])){
-                    $_params[$key]['amount'] += $detail->qty_each;
-                }else{
-                    $_params[$key] = [
-                        'orderno'=>$order_no,
-                        'logistic_number'=>$logistic_number,
-                        'sku' => $sku,
-                        'amount' => $sku,
-                        'owner_code' => $detail->customerid
-                    ];
-                }
-            });
-        });
-        foreach ($_params as $key=>$param) {
-            $this->assertNotEmpty($params[$key]);
+    }
+
+    public function tearDown(): void
+    {
+        $this->data['order']->delete();
+        $this->data['orderHeader']->delete();
+        $this->data['owner']->delete();
+        foreach ($this->data['order_package_commodities'] as $order_package_commodity) {
+            $order_package_commodity->delete();
+        }
+        foreach ($this->data['commodities'] as $commodity) {
+            $commodity->delete();
         }
+        parent::tearDown(); // TODO: Change the autogenerated stub
     }
 }

+ 46 - 35
tests/Services/OrderPackageService/GetInnerParamsTest.php

@@ -2,16 +2,16 @@
 
 namespace Tests\Services\OrderPackageSerivce\GetInnerParamsTest;
 
-use App\Logistic;
+use App\Commodity;
+use App\OracleActAllocationDetails;
+use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
 use App\Order;
+use App\OrderPackage;
 use App\Owner;
-use App\Services\OracleDOCOrderHeaderService;
+use App\Services\common\DataHandlerService;
 use App\Services\OrderPackageService;
-use App\Services\OrderService;
-use App\Shop;
 use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
 use Tests\TestCase;
 
 class GetInnerParamsTest extends TestCase
@@ -19,19 +19,32 @@ class GetInnerParamsTest extends TestCase
     use RefreshDatabase;
     /**
      * @var OrderPackageService $service
-     * @var OracleDOCOrderHeaderService $orderHeaderService
-     * @var OrderService $orderService
      */
     public $service;
-    public $orderService;
-    public $orderHeaderService;
-
+    private $data = [];
     public function setUp(): void
     {
         parent::setUp();
         $this->service = app('OrderPackageService');
-        $this->orderService = app('OrderService');
-        $this->orderHeaderService = app('OracleDocOrderHeaderService');
+        $orderHeader = factory(OracleDOCOrderHeader::class)->make(['userdefine1' =>'TEST_OW' ]);
+        $this->data['orderHeader'] = $orderHeader;
+        $order = factory(Order::class)->create([
+            'code'=>$orderHeader['orderno'],
+            ]);
+
+        $basSku = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
+        $this->data['sku'] = $basSku;
+        $OracleActAllocationDetail1 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetail2 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetail3 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetails = collect([$OracleActAllocationDetail1,$OracleActAllocationDetail2,$OracleActAllocationDetail3]);
+        $orderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
+        $this->data['actAllocationDetails'] = $OracleActAllocationDetails;
+        $owner = factory(Owner::class)->create(['code'=>'TEST_OW']);
+        $commodity = factory(Commodity::class)->create(['sku'=>$basSku['sku'],'owner_id' => $owner]);
+        $this->data['owner'] = $owner;
+        $this->data['commodity'] = $commodity;
+        $this->data['order'] = $order;
     }
 
     /**
@@ -39,29 +52,27 @@ class GetInnerParamsTest extends TestCase
      */
     public function getInnerParamsTest()
     {
-        $orderHeader = OracleDOCOrderHeader::query()
-            ->with('actAllocationDetails')
-            ->where('sostatus',99)
-            ->orderByDesc('AddTime')->first();
-        Logistic::query()->firstOrCreate(['code'=>$orderHeader->userdefine1,'name'=>'']);
-        $owner = Owner::query()->firstOrCreate(['code'=>$orderHeader->customerid,'name'=>'']);
-        Shop::query()->firstOrCreate(['name'=>$orderHeader->issuepartyname ?? '','owner_id'=>$owner->id]);
-        app('WarehouseService')->firstOrCreate(["code"=>$orderHeader->warehouseid],["code"=>$orderHeader->warehouseid,"name"=>$orderHeader->warehouseid]);
-        $orderHeaders = collect();
-        $orderHeaders = $orderHeaders->push($orderHeader);
-        $this->orderService->syncOrder($orderHeaders);
-        $order = Order::query()->where('code',$orderHeader->orderno)->first();
-        $inner_params = $this->service->getInnerParams($orderHeader,$order,['mapkey'=>['logistic_number']]);
-        $this->assertNotEmpty($inner_params);
-        $actAllocationDetails = $orderHeader->actAllocationDetails;
-
-        foreach ($inner_params as $inner_param) {
-            $detail = $actAllocationDetails->where('picktotraceid',$inner_param['logistic_number'])->first();
-            $this->assertNotEmpty($detail);
-            $this->assertEquals($inner_param['order_id'],$order->id);
-            $this->assertEquals($inner_param['logistic_number'],$detail->picktotraceid);
-            $this->assertNotEmpty($inner_param['created_at']);
-            $this->assertNotEmpty($inner_param['updated_at']);
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
+        $order  = $this->data['order'];
+        $orderPackage = OrderPackage::query()->whereHas('order',function($query)use($order){
+            $query->where('code',$order['code']);
+        })->get();
+        $map = $dataHandlerService->dataHeader(['logistic_number'],$orderPackage);
+        $params = $this->service->getInnerParams($this->data['orderHeader'],$this->data['order'],$map);
+        $orderPackages = collect($params);
+        dump($params,$this->data['actAllocationDetails']->toArray());
+        foreach ($this->data['actAllocationDetails'] as $actAllocationDetail) {
+            $orderPackage = $orderPackages->where('logistic_number',$actAllocationDetail['picktotraceid'])->first();
+            $this->assertNotNull($orderPackage);
         }
     }
+
+    public function tearDown(): void
+    {
+        $this->data['owner']->delete();
+        $this->data['commodity']->delete();
+        $this->data['order']->delete();
+        parent::tearDown(); // TODO: Change the autogenerated stub
+    }
 }

+ 27 - 27
tests/Services/OrderPackageService/SyncOrderPackageTest.php

@@ -2,7 +2,12 @@
 
 namespace Tests\Services\OrderPackageService\SyncOrderPackageTest;
 
+use App\Commodity;
+use App\OracleActAllocationDetails;
+use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
+use App\Order;
+use App\Owner;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
@@ -23,6 +28,7 @@ class SyncOrderPackageTest extends TestCase
     public $service;
     public $orderService;
     public $orderHeaderService;
+    private $data = [];
 
     public function setUp(): void
     {
@@ -30,6 +36,26 @@ class SyncOrderPackageTest extends TestCase
         $this->service = app('OrderPackageService');
         $this->orderService = app('OrderService');
         $this->orderHeaderService = app('OracleDocOrderHeaderService');
+
+        $orderHeader = factory(OracleDOCOrderHeader::class)->make(['userdefine1' =>'TEST_OW' ]);
+        $this->data['orderHeader'] = $orderHeader;
+        $order = factory(Order::class)->create([
+            'code'=>$orderHeader['orderno'],
+        ]);
+
+        $basSku = factory(OracleBasSKU::class)->make(['customerid' => 'TEST_OW']);
+        $this->data['sku'] = $basSku;
+        $OracleActAllocationDetail1 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetail2 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetail3 = factory(OracleActAllocationDetails::class)->make(['orderno'=>$orderHeader->orderno,'customerid'=>'TEST_OW','sku'=>$basSku->sku]);
+        $OracleActAllocationDetails = collect([$OracleActAllocationDetail1,$OracleActAllocationDetail2,$OracleActAllocationDetail3]);
+        $orderHeader->setRelation('actAllocationDetails',$OracleActAllocationDetails);
+        $this->data['actAllocationDetails'] = $OracleActAllocationDetails;
+        $owner = factory(Owner::class)->create(['code'=>'TEST_OW']);
+        $commodity = factory(Commodity::class)->create(['sku'=>$basSku['sku'],'owner_id' => $owner]);
+        $this->data['owner'] = $owner;
+        $this->data['commodity'] = $commodity;
+        $this->data['order'] = $order;
     }
 
     /**
@@ -37,32 +63,6 @@ class SyncOrderPackageTest extends TestCase
      */
     public function syncOrderPackage()
     {
-        $orderHeader = OracleDOCOrderHeader::query()->orderByDesc('addTime')->first();
-        $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',',OracleDOCOrderHeaderService::$columns))
-            ->with(['oracleBASCustomer'=>function($query){
-                $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
-            },'oracleDOCOrderDetails'=>function($query){
-                $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
-            }, 'actAllocationDetails'=>function($query){
-                $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku');
-            },'oracleBASCode'=>function($query){
-                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-            }])
-            ->where('DOC_Order_Header.addTime','>=',$orderHeader->addtime)
-            ->orderByDesc('DOC_Order_Header.addTime')
-            ->get();
-        $orders = $this->orderService->getByWmsOrders($orderHeaders);
-        $packages = $this->service->getByWmsOrders($orderHeaders);
-        $this->service->syncOrderPackage($orderHeaders,$orders,$packages);
-        $exits_packages  = $this->service->getByWmsOrders($orderHeaders);
-        $exits_count = $exits_packages->count();
-        $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid');
-        $logistic_numbers = array_unique(array_diff($logistic_numbers,['',' ','*']));
-        $this->assertEquals(count($logistic_numbers),$exits_count);
-        foreach ($logistic_numbers as $logistic_number) {
-            $exits_package = $exits_packages->where('logistic_number',$logistic_number);
-            $this->assertEmpty($exits_package);
-            $this->assertEquals($exits_package->count(),1);
-        }
+
     }
 }

+ 0 - 31
tests/Services/OrderPackageService/SyncPackageByOrderHeadersTest.php

@@ -34,37 +34,6 @@ class SyncPackageByOrderHeadersTest extends TestCase
     }
     public function testSyncPackageByOrderHeaders()
     {
-        /**
-         * createOrDeletePackageByOrderHeader($orderHeaders)
-         */
-        $orderHeader = OracleDOCOrderHeader::query()
-            ->with('actAllocationDetails')
-            ->where('sostatus',99)
-            ->orderByDesc('AddTime')
-            ->first();
 
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->with('actAllocationDetails')
-            ->where('sostatus',99)
-            ->where('addtime','>=',$orderHeader->addtime)
-            ->orderByDesc('AddTime')
-            ->get();
-
-        if ($orderHeaders->count() == 0) {
-            $this->assertNull($orderHeaders);
-            return;
-        }
-
-        Logistic::query()->firstOrCreate(['code'=>$orderHeader->userdefine1,'name'=>'']);
-        $owner = Owner::query()->firstOrCreate(['code'=>$orderHeader->customerid,'name'=>'']);
-        Shop::query()->firstOrCreate(['name'=>$orderHeader->issuepartyname,'owner_id'=>$owner->id]);
-        app('WarehouseService')->firstOrCreate(["code"=>$orderHeader->warehouseid],["code"=>$orderHeader->warehouseid,"name"=>$orderHeader->warehouseid]);
-        $this->orderService->syncOrderByWMSOrderHeaders($orderHeaders);
-        $this->service->syncPackageByOrderHeaders($orderHeaders);
-        $packages = $this->service->getByWmsOrders($orderHeaders);
-        $order_nos = array_unique(data_get($orderHeaders, '*.actAllocationDetails.*.picktotraceid'));
-        foreach ($order_nos as $order_no) {
-            $this->assertNotEmpty($packages->where('logistic_number', $order_no));
-        }
     }
 }

+ 0 - 38
tests/Services/OrderTrackingService/CustomizedOperationTest.php

@@ -1,38 +0,0 @@
-<?php
-
-namespace Tests\Services\OrderTrakingSerive\CustomizedOperationTest;
-
-use App\OracleDOCOrderHeader;
-use App\Services\OrderTrackingService;
-use Carbon\Carbon;
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
-use Illuminate\Support\Collection;
-use Tests\TestCase;
-
-class CustomizedOperationTest extends TestCase
-{
-    use RefreshDatabase;
-
-    /** @var OrderTrackingService $service */
-    public $service;
-
-    public function setUp(): void
-    {
-        $this->service=app(OrderTrackingService::class);
-        parent::setUp();
-    }
-
-    public function testCustomizedOperation()
-    {
-        $orderHeader = OracleDOCOrderHeader::query()->where('consigneeid',"ZT")->orderByDesc('AddTime')->first();
-        $orderHeaders = OracleDOCOrderHeader::query()->where('consigneeid',"ZT")->where('addtime','>=',$orderHeader->addtime)->get();
-        $ZT_Count = $orderHeaders->count();
-        /** @var Collection $orderHeader */
-        $this->service->customizedOperation($orderHeaders);
-        $XJ_Count  = $orderHeaders->filter(function($orderHeader){
-            return $orderHeader->userdefine1 == 'XJWL';
-        })->count();
-        $this->assertEquals($ZT_Count,$XJ_Count);
-    }
-}

+ 0 - 0
tests/webApi/sortingHaochuangProcess.http → tests/webApi/thirdPart/haochuang/process.http


+ 4 - 0
tests/webApi/thirdPart/haochuang/scanCommodity.http

@@ -0,0 +1,4 @@
+POST http://bswas/api/thirdPart/haochuang/sorting/scanCommodity
+Content-Type: application/json
+
+{"barcode":"W201023000096k"}