瀏覽代碼

Merge branch 'master' into zzd

dream 5 年之前
父節點
當前提交
5f4755cebf
共有 93 個文件被更改,包括 1167 次插入1462 次删除
  1. 3 0
      app/CommodityBarcode.php
  2. 26 0
      app/Console/Commands/ClearCancelledOrderTask.php
  3. 1 1
      app/Console/Commands/SyncBatchTask.php
  4. 2 2
      app/Console/Commands/SyncWMSOrderTask.php
  5. 1 1
      app/Console/Commands/SyncWmsCommoditiesInformation.php
  6. 81 0
      app/Console/Commands/TestMakeCommand.php
  7. 1 0
      app/Console/Commands/WASSyncWMSOrderInformation.php
  8. 1 1
      app/Console/Commands/WasSyncWmsAsnInformation.php
  9. 15 0
      app/Console/Commands/stubs/test.controller.stub
  10. 27 0
      app/Console/Commands/stubs/test.service.stub
  11. 7 0
      app/Console/Kernel.php
  12. 116 0
      app/Filters/LogFilters.php
  13. 4 6
      app/Http/Controllers/Auth/LoginController.php
  14. 9 58
      app/Http/Controllers/LogController.php
  15. 3 4
      app/Http/Controllers/OrderIssueController.php
  16. 2 3
      app/Http/Controllers/OwnerController.php
  17. 68 92
      app/Http/Controllers/TestController.php
  18. 4 0
      app/Log.php
  19. 10 2
      app/Observers/OwnerObserver.php
  20. 0 2
      app/OracleDOCASNHeader.php
  21. 8 2
      app/OracleDOCOrderHeader.php
  22. 6 1
      app/OracleDOCWaveDetails.php
  23. 4 3
      app/Order.php
  24. 2 0
      app/Providers/AppServiceProvider.php
  25. 8 0
      app/RejectedBill.php
  26. 2 2
      app/Services/BatchService.php
  27. 7 6
      app/Services/CommodityService.php
  28. 2 2
      app/Services/InventoryCompareService.php
  29. 12 2
      app/Services/NewOrderCountingRecordService.php
  30. 1 1
      app/Services/OracleDOCOrderHeaderService.php
  31. 107 0
      app/Services/OracleDocWaveDetailService.php
  32. 14 16
      app/Services/OrderIssueService.php
  33. 13 220
      app/Services/OrderPackageCommoditiesService.php
  34. 8 305
      app/Services/OrderPackageService.php
  35. 54 335
      app/Services/OrderService.php
  36. 12 27
      app/Services/OrderTrackingService.php
  37. 32 1
      app/Services/OwnerService.php
  38. 4 5
      app/Services/RejectedBillService.php
  39. 8 5
      app/Services/StoreService.php
  40. 4 1
      app/StoreItems.php
  41. 2 2
      app/Traits/HasCompositePrimaryKey.php
  42. 3 0
      app/Waybill.php
  43. 1 1
      composer.json
  44. 12 1
      config/sync.php
  45. 23 0
      database/factories/OracleDOCASNDetailFactory.php
  46. 20 0
      database/factories/OracleDOCASNHeaderFactory.php
  47. 16 0
      database/factories/OracleDocWaveDetailsFactory.php
  48. 18 0
      database/factories/OracleDocWaveHeaderFactory.php
  49. 18 25
      database/factories/OrcaleDOCOrderHeaderFactory.php
  50. 28 0
      database/migrations/2020_12_28_160507_change_inventory_compares_quality_column.php
  51. 32 0
      database/migrations/2020_12_30_142332_change_column_index_add_method_of_logs.php
  52. 43 0
      database/migrations/2020_12_31_115716_change_log_index_all.php
  53. 1 1
      package-lock.json
  54. 3 0
      resources/js/queryForm/queryForm.js
  55. 3 3
      resources/views/customer/project/report.blade.php
  56. 1 2
      resources/views/inventory/statement/inventoryCompare.blade.php
  57. 12 4
      resources/views/maintenance/log/index.blade.php
  58. 1 1
      resources/views/maintenance/owner/recycle.blade.php
  59. 4 4
      resources/views/order/index/delivering.blade.php
  60. 3 3
      resources/views/order/issue/index.blade.php
  61. 1 1
      resources/views/waybill/index.blade.php
  62. 1 1
      resources/views/waybill/recycle.blade.php
  63. 0 1
      routes/apiLocal.php
  64. 1 0
      routes/web.php
  65. 0 2
      tests/Services/BatchService/TestGetBatchByCodes.php
  66. 0 2
      tests/Services/CityService/FindByNameTest.php
  67. 27 22
      tests/Services/CommodityService/GetParamsByBasSkusTest.php
  68. 24 14
      tests/Services/CommodityService/SyncCreateCommodityByBasSkusTest.php
  69. 25 15
      tests/Services/CommodityService/SyncUpdateCommodityBasSkusTest.php
  70. 0 2
      tests/Services/LogisticService/GetLogisticByCodeTest.php
  71. 0 2
      tests/Services/LogisticService/GetLogisticByCodesTest.php
  72. 0 2
      tests/Services/LogisticTimingService/FindByParamsTest.php
  73. 2 1
      tests/Services/NewOrderCountingRecordService/OrderCountingRecordsTest.php
  74. 2 1
      tests/Services/NewOrderCountingRecordService/TransfersToConditionsTest.php
  75. 0 1
      tests/Services/OracleDOCOrderHeaderService/GetWMSOrderOnEditDateTest.php
  76. 0 1
      tests/Services/OracleDOCOrderHeaderService/GetWMSOrderOnStartDateTest.php
  77. 0 2
      tests/Services/OracleDOCOrderHeaderService/GetWmsOrderOnStartDateEditTest.php
  78. 0 1
      tests/Services/OracleDOCOrderHeaderService/GetWmsOrderOnstartDateCreateTest.php
  79. 0 2
      tests/Services/OrderCommodityService/GetReGroupActAllocationDetailsTest.php
  80. 0 2
      tests/Services/OrderCommodityService/SyncOrderCommodityTest.php
  81. 0 1
      tests/Services/OrderIssueService/GetRecycleBinPaginateTest.php
  82. 0 1
      tests/Services/OrderIssueService/OrderIssueTagTest.php
  83. 0 1
      tests/Services/OrderIssueService/RecoverOrderIssueTest.php
  84. 0 2
      tests/Services/OrderPackageCommoditiesService/RegroupOrderCommoditiesTest.php
  85. 14 21
      tests/Services/StoreItemService/GetAsnDetailsByAsnHerderTest.php
  86. 26 9
      tests/Services/StoreItemService/GetByWmsTest.php
  87. 2 4
      tests/Services/StoreItemService/GetParamsByAsnDetailsTest.php
  88. 37 10
      tests/Services/StoreService/CreateStoreTest.php
  89. 35 11
      tests/Services/StoreService/GetParamsByAsnHeaderTest.php
  90. 0 81
      tests/Services/StoreService/SyncStoreCreateByWmsTest.php
  91. 0 82
      tests/Services/StoreService/SyncStoreUpdateByWmsTest.php
  92. 37 9
      tests/Services/StoreService/UpdateStoreTest.php
  93. 0 2
      tests/Unit/CustomerLogTest.php

+ 3 - 0
app/CommodityBarcode.php

@@ -14,6 +14,9 @@ class CommodityBarcode extends Model
     use ModelTimeFormat;
     protected $fillable=['code','commodity_id','created_at'];
 
+    public function getCodeAttribute($value){
+        return str_replace(array("\r\n","\n","\r","\"","""),' ',$value);
+    }
     public function commodity(){
         return $this->belongsTo('App\Commodity','commodity_id','id');
     }

+ 26 - 0
app/Console/Commands/ClearCancelledOrderTask.php

@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\OracleDOCWaveDetails;
+use App\Services\OracleDocWaveDetailService;
+use Illuminate\Console\Command;
+
+class ClearCancelledOrderTask extends Command
+{
+
+    protected $signature = 'clear:cancelledOrder';
+
+
+    protected $description = 'Command description';
+
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    public function handle()
+    {
+        app('OracleDocWaveDetailService')->clearCancelledOrderTask();
+    }
+}

+ 1 - 1
app/Console/Commands/SyncBatchTask.php

@@ -131,7 +131,7 @@ sql
             $count = DB::connection("oracle")->selectOne(DB::raw("SELECT count(*) count FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
             if ($count->count > 1000){
                 $sql = <<<sql
-    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM ( 
+    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM (
     SELECT * FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
  ORDER BY EDITTIME) WHERE ROWNUM <= 1000)wave WHERE wave.rowno >= 0
 sql;

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

@@ -33,12 +33,12 @@ class SyncWMSOrderTask extends Command
         $this->last_end_key = config('sync.order_sync.cache_prefix.last_end_at');
         $this->last_err_key = config('sync.order_sync.cache_prefix.last_err_at');
         $this->restart = config('sync.order_sync.cache_prefix.restart');
-        $this->is_enabled= config('sync.order_sync.cache_prefix.enabled');
+        $this->is_enabled= config('sync.order_sync.enabled');
     }
     public function handle()
     {
         $this->init();
-        if($this->is_enabled=='false')return;
+        if($this->is_enabled===false)return;
         sleep(rand(2,3));
         $start_time =  Cache::remember($this->last_start_key,null,function (){
             return ValueStore::query()->firstOrCreate(['name'=>$this->last_start_key])->first()->value;

+ 1 - 1
app/Console/Commands/SyncWmsCommoditiesInformation.php

@@ -54,7 +54,7 @@ class SyncWmsCommoditiesInformation extends Command
     {
         $this->init();
         if($this->is_enabled==false)return;
-        sleep(rand(2,3));
+        sleep(rand(5,20));
         $start_time =  Cache::remember($this->task_start_at,null,function (){
             return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value;
         });

+ 81 - 0
app/Console/Commands/TestMakeCommand.php

@@ -0,0 +1,81 @@
+<?php
+
+
+namespace App\Console\Commands;
+
+
+use Illuminate\Filesystem\Filesystem;
+use Symfony\Component\Console\Input\InputArgument;
+
+class TestMakeCommand extends \Illuminate\Foundation\Console\TestMakeCommand
+{
+    protected $signature = 'make:test {name : The name of the class}
+    {--unit : Create a unit test}
+    {--controller : Create a controller test}
+    {--controllers : Create a controllers test}
+    {--service : Create a service test}
+    {--services : Create a services test}
+    ';
+    protected function getDefaultNamespace($rootNamespace)
+    {
+        if ($this->option('controller')
+            ||$this->option('controllers')) {
+            return $rootNamespace.'\Controllers';
+        }
+        if ($this->option('services')
+            ||$this->option('service')) {
+            return $rootNamespace.'\Services\\'
+                .ucfirst($this->getServiceName())
+                ;
+        }
+        if ($this->option('unit')) {
+            return $rootNamespace.'\Unit';
+        } else {
+            return $rootNamespace.'\Feature';
+        }
+    }
+
+    protected function getNameInput()
+    {
+        $input= trim($this->argument('name'));
+        $inputs = explode(':', $input);
+        return $inputs[1]
+            ?$this->getMethodName()
+            :$inputs[0]
+            ;
+    }
+    protected function getServiceName()
+    {
+        $input= trim($this->argument('name'));
+        return ucfirst(explode(':',$input)[0]);
+    }
+    protected function getMethodName()
+    {
+        $input= trim($this->argument('name'));
+        return ucfirst(explode(':',$input)[1]).'Test';
+    }
+
+    protected function getStub()
+    {
+        if ($this->option('controller')
+            ||$this->option('controllers')) {
+            return __DIR__.('/stubs/test.controller.stub');
+        }
+        if ($this->option('services')
+            ||$this->option('service')) {
+            return __DIR__.('/stubs/test.service.stub');
+        }
+        return $this->option('unit')
+            ? $this->resolveStubPath('/stubs/test.unit.stub')
+            : $this->resolveStubPath('/stubs/test.stub');
+    }
+
+    protected function replaceClass($stub, $name)
+    {
+        $class = str_replace($this->getNamespace($name).'\\', '', $this->getMethodName());
+        $class = str_replace('\\', '', $class);
+        $stub = str_replace(['{{ serviceName }}', '{{serviceName}}'], $this->getServiceName(), $stub);
+
+        return str_replace(['DummyClass', '{{ class }}', '{{class}}'], $class, $stub);
+    }
+}

+ 1 - 0
app/Console/Commands/WASSyncWMSOrderInformation.php

@@ -42,6 +42,7 @@ class WASSyncWMSOrderInformation extends Command
      */
     public function handle()
     {
+        sleep(rand(15,30));
         $this->WasSyncWmsOrder();
     }
 

+ 1 - 1
app/Console/Commands/WasSyncWmsAsnInformation.php

@@ -54,7 +54,7 @@ class WasSyncWmsAsnInformation extends Command
     {
         $this->init();
         if($this->is_enabled==false)return;
-        sleep(rand(2,3));
+        sleep(rand(1,2));
         $start_time =  Cache::remember($this->task_start_at,null,function (){
             return ValueStore::query()->firstOrCreate(['name'=>$this->task_start_at])->first()->value;
         });

+ 15 - 0
app/Console/Commands/stubs/test.controller.stub

@@ -0,0 +1,15 @@
+<?php
+
+namespace {{ namespace }};
+
+use Tests\TestCase;
+
+class {{ class }} extends TestCase
+{
+
+    public function testExample()
+    {
+    {{ class }};
+        $this->assertTrue(true);
+    }
+}

+ 27 - 0
app/Console/Commands/stubs/test.service.stub

@@ -0,0 +1,27 @@
+<?php
+
+namespace {{ namespace }};
+use App\Services\{{ serviceName }};
+use Tests\TestCase;
+
+class {{ class }} extends TestCase
+{
+
+    /** @var {{ serviceName }} $service */
+    public $service;
+    function setUp(): void
+    {
+        parent::setUp();
+        $this->service = app('{{ serviceName }}');
+    }
+
+    public function testReturned()
+    {
+        $this->assertTrue(true);
+    }
+
+    function tearDown(): void
+    {
+        parent::tearDown();
+    }
+}

+ 7 - 0
app/Console/Kernel.php

@@ -2,6 +2,7 @@
 
 namespace App\Console;
 
+use App\Console\Commands\ClearCancelledOrderTask;
 use App\Console\Commands\FluxOrderFix;
 use App\Console\Commands\InventoryDailyLoggingOwner;
 use App\Console\Commands\LogExpireDelete;
@@ -12,6 +13,7 @@ use App\Console\Commands\SyncUserVisitMenuLogsCacheTask;
 use App\Console\Commands\SyncWmsCommoditiesInformation;
 use App\Console\Commands\SyncWMSOrderTask;
 use App\Console\Commands\TestTemp;
+use App\Console\Commands\WasSyncWmsAsnInformation;
 use App\Console\Commands\WASSyncWMSOrderInformation;
 use Illuminate\Console\Scheduling\Schedule;
 use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
@@ -36,6 +38,8 @@ class Kernel extends ConsoleKernel
         SyncBatchTask::class,
         SyncWMSOrderTask::class,
         SyncWmsCommoditiesInformation::class,
+        ClearCancelledOrderTask::class,
+        WasSyncWmsAsnInformation::class,
     ];
 
     /**
@@ -56,6 +60,9 @@ class Kernel extends ConsoleKernel
         $schedule->command('createOwnerAreaReport')->monthlyOn(25);
         $schedule->command('sync:batch')->everyMinute();
         $schedule->command('sync:order')->everyMinute();
+        $schedule->command('SyncWmsCommoditiesInformation')->everyMinute();
+        $schedule->command('clear:cancelledOrder')->everyTenMinutes();
+        $schedule->command('WasSyncWmsAsnInformation')->everyMinute();
     }
 
     /**

+ 116 - 0
app/Filters/LogFilters.php

@@ -0,0 +1,116 @@
+<?php
+
+
+namespace App\Filters;
+
+
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+use Illuminate\Support\Arr;
+
+class LogFilters
+{
+    protected $request;
+    protected $queryBuilder;
+    protected $filters = ['username', 'type', 'description',
+        'created_at_start', 'created_at_end', 'is_exception'];
+    protected $array_filter;
+
+    public function __construct(Request $request)
+    {
+        $this->request = $request;
+        $this->array_filter = array_filter($this->request->only($this->filters));
+    }
+
+    public function apply($builder)
+    {
+        $this->queryBuilder = $builder;
+        foreach ($this->array_filter as $filter => $value) {
+            if (method_exists($this, $filter)) {
+                $this->$filter($value, $this->queryBuilder);
+            }
+        }
+        return $this->afterApply($this->queryBuilder);
+    }
+
+    /**
+     * 后置处理,解决查询条件之间的关联关系,方法名后缀’_after‘
+     * @param $builder
+     * @return mixed
+     */
+    public function afterApply($builder)
+    {
+        $this->queryBuilder = $builder;
+        foreach ($this->array_filter as $filter => $value) {
+            $filter .= '_after';
+            if (method_exists($this, $filter)) {
+                $this->$filter($value, $this->queryBuilder);
+            }
+        }
+        if (!Arr::hasAny($this->array_filter, ['created_at_start', 'created_at_end'])) {
+            $start = Carbon::now()->toDateString();
+            $end = Carbon::tomorrow()->toDateString();
+            $this->queryBuilder = $this->queryBuilder->where('created_at', '>=', $start)->where('created_at', '<', $end);
+        }
+        return $this->queryBuilder;
+    }
+
+    private function created_at_start($created_at_start)
+    {
+        $this->queryBuilder->where('created_at', '>=', $created_at_start);
+    }
+
+    private function created_at_end($created_at_end)
+    {
+        $this->queryBuilder->where('created_at', '<', Carbon::parse($created_at_end)->addDay()->toDateString());
+    }
+
+    /**
+     * 如果中传入开始时间,默认结束时间为开始时间的下一天
+     * @param $created_at_start
+     */
+    private function created_at_start_after($created_at_start)
+    {
+        if (!Arr::has($this->array_filter, 'created_at_end')) {
+            $endDay = Carbon::parse($created_at_start)->addDay()->toDateString();
+            $this->queryBuilder->where('created_at', '<', $endDay);
+        }
+    }
+
+    /**
+     * 如果只传入截止时间,只查询截止时间这一天的数据
+     * @param $created_at_end
+     */
+    private function created_at_end_after($created_at_end)
+    {
+        if (!Arr::has($this->array_filter, 'created_at_start')) {
+            $startDay = Carbon::parse($created_at_end)->toDateString();
+            $this->queryBuilder->where('created_at', '>=', $startDay);
+        }
+    }
+
+    private function description($description)
+    {
+        $this->queryBuilder->where("description", 'like', $description . '%');
+    }
+
+    private function type($type)
+    {
+        $types = array_filter(preg_split('/[,, ]+/is', $type));
+        $this->queryBuilder->whereIn("type", $types);
+    }
+
+    private function username($username)
+    {
+        $this->queryBuilder->whereIn("id_user", function ($query) use ($username) {
+            return $query->from("users")->select("id")->where("name", 'like', $username . '%');
+        });
+    }
+
+    private function is_exception()
+    {
+        $this->queryBuilder->where(function ($query) {
+            $query->where("method", "like", "ERROR%")->orWhere("method", "like", "EXCEPTION%");
+        });
+    }
+}

+ 4 - 6
app/Http/Controllers/Auth/LoginController.php

@@ -3,14 +3,12 @@
 namespace App\Http\Controllers\Auth;
 
 use App\Http\Controllers\Controller;
-use App\User;
 use Illuminate\Foundation\Auth\AuthenticatesUsers;
 use Illuminate\Http\JsonResponse;
 use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
 use Illuminate\Support\Facades\Auth;
-use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\Validation\ValidationException;
 
@@ -34,8 +32,8 @@ class LoginController extends Controller
      *
      * @var string
      */
-//    protected $redirectTo = '/control/panel/menu';
-    protected $redirectTo = '/rejected/index/general';
+    protected $redirectTo = '/control/panel/menu';
+//    protected $redirectTo = '/rejected/index/general';
 
     /**
      * Create a new controller instance.
@@ -46,7 +44,7 @@ class LoginController extends Controller
     {
         $this->middleware('guest')->except('logout');
     }
-    public function username()
+    public function username(): string
     {
         return 'name';
     }
@@ -55,7 +53,7 @@ class LoginController extends Controller
      * Handle a login request to the application.
      *
      * @param Request $request
-     * @return array|Response|void
+     * @return array|JsonResponse|RedirectResponse|Response|\Symfony\Component\HttpFoundation\Response|void
      *
      * @throws ValidationException
      */

+ 9 - 58
app/Http/Controllers/LogController.php

@@ -2,87 +2,38 @@
 
 namespace App\Http\Controllers;
 
+use App\Filters\LogFilters;
 use App\Log;
 use App\Services\LogService;
-use Exception;
 use Illuminate\Contracts\Foundation\Application;
 use Illuminate\Contracts\Pagination\LengthAwarePaginator;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Http\RedirectResponse;
+use Illuminate\Contracts\View\Factory;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
-use Illuminate\Routing\Redirector;
-use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
-use Illuminate\Support\Facades\Validator;
-use function GuzzleHttp\Psr7\str;
+use Illuminate\View\View;
 
 class LogController extends Controller
 {
     /**
-     * Display a listing of the resource.
-     *
      * @param Request $request
-     * @return Application|LengthAwarePaginator|\Illuminate\Contracts\View\Factory|\Illuminate\View\View
+     * @param LogFilters $filters
+     * @return Application|LengthAwarePaginator|Factory|View
      */
-    public function index(Request $request)
+    public function index(Request $request, LogFilters $filters)
     {
         if (!Gate::allows('日志-查询')) {
             return redirect(url('/'));
         }
-        //没有查询条件,默认展示最近50条
-        if (!$request->has('created_at_start') &&
-            !$request->has('created_at_end') &&
-            !$request->has('class') &&
-            !$request->has('method') &&
-            !$request->has('description') &&
-            !$request->has("is_exception")
-        ) {
-            $logs = Log::query()
-                ->with('user:id,name')
-                ->orderBy('id', 'desc')
-                ->paginate(50);
-            return view('maintenance.log.index', ['logs' => $logs]);
-        }
-        //不传开始时间提示错误信息并返回
-        if (!$request->has('created_at_start')) {
-            session()->flash('warning', '请选择开始时间');
-            return view('maintenance.log.index', ['logs' => null]);
-        }
-        $query = Log::query()->with('user:id,name');
-        if ($request->has('class')) {
-            $query->where('class', 'like', $request['class'] . '%');
-        }
-        if ($request->has('method')) {
-            $query->where('method', 'like', $request['method'] . '%');
-        }
-        if ($request->has('description')) {
-            $str = $request->description;
-            $str = trim($str, '\\');
-            $str = str_replace('\\', '\\\\', $str);
-            $query->where('description', 'like', '%' . $str . '%');
-        }
-        if ($request->has('created_at_start')) {
-            $query->where('created_at', '>=', $request->created_at_start." 00:00:00");
-        }
-        if ($request->has('created_at_end')) {
-            $query->where('created_at', '<=', $request->created_at_end." 23:59:59");
-        }
-        if ($request->has("is_exception")){
-            $query->where(function(Builder $query){
-                $query->where("method","like","ERROR%")->orWhere("method","like","EXCEPTION%");
-            });
-        }
-        $query->orderByDesc('id');
-        $logs = $query->with('user:id,name')->paginate($request->paginate??50);
-        return view('maintenance.log.index', ['logs' => $logs]);
+        $logs = Log::query()->filter($filters)->orderByDesc('id')->with('user:id,name')->paginate($request->input('paginate')??50);
+        return view('maintenance.log.index', compact('logs'));
     }
 
     /**
      * Display the specified resource.
      *
      * @param Log $log
-     * @return Application|\Illuminate\Contracts\View\Factory|Response|\Illuminate\View\View
+     * @return Application|Factory|Response|View
      */
     public function show(Log $log)
     {

+ 3 - 4
app/Http/Controllers/OrderIssueController.php

@@ -458,14 +458,13 @@ class OrderIssueController extends Controller
         if(!Gate::allows('订单管理-问题件-编辑')){
             return ['success'=>false,'fail_info'=>'没有对应权限'];
         }
-        $secondClientNo = $request->input('secondClientNo');
         try {
-            app(OrderIssueService::class)->editOrderIssueSecondClientNo($request->id,$secondClientNo);
-            $order = Order::query()->with('packages.commodities.commodity')->where('client_code',$secondClientNo)->first();
+            app(OrderIssueService::class)->editOrderIssueSecondClientNo($request['id'],$request['secondClientNo']);
+            $order = Order::query()->with(['packages.commodities.commodity','logistic'])->where('client_code',$request['secondClientNo'])->first();
             if (!$order) {
                 return ['success' => true, 'message' => '二次客户单号已修改,没有对应的订单信息'];
             } else {
-               return ['success' => true, 'order' => $secondClientNo =='' ? null : $order];
+               return ['success' => true, 'order' => $request['secondClientNo'] == '' ? null : $order];
             }
         } catch (Exception $e) {
             app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()).$e->getMessage().$e->getTraceAsString());

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

@@ -164,9 +164,8 @@ class OwnerController extends Controller
             return ['success' => 'false', 'fail_info' => "没有权限"];
         }
         $id = $request->input('id');
-        $owner = Owner::query()->whereNotNull('deleted_at')->where('id', $id)->update([
-            "deleted_at" => null,
-        ]);
+        $owner = Owner::query()->whereNotNull('deleted_at')->where('id', $id)->first();
+        $owner->update(["deleted_at" => null]);
         app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return ['success' => 'true', 'owner' => $owner];
     }

+ 68 - 92
app/Http/Controllers/TestController.php

@@ -14,6 +14,7 @@ use App\Console\Commands\CreateOwnerBillReport;
 use App\Console\Commands\CreateOwnerReport;
 use App\Console\Commands\SyncWmsCommoditiesInformation;
 use App\Console\Commands\SyncWMSOrderTask;
+use App\Console\Commands\WasSyncWmsAsnInformation;
 use App\Events\CancelOrder;
 use App\Http\Requests\ForeignHaiRobotic_taskUpdateRequest;
 use App\Http\Requests\TestAaRequest;
@@ -24,12 +25,14 @@ use App\Log;
 use App\Logistic;
 use App\Menu;
 use App\OracleActAllocationDetails;
+use App\OracleBasCustomer;
 use App\OracleBasSKU;
 use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
 use App\OracleDOCWaveHeader;
+use App\OracleInvLotLocId;
 use App\Order;
 use App\OrderBin;
 use App\OrderCommodity;
@@ -55,6 +58,7 @@ use App\Services\LogisticService;
 use App\Services\LogService;
 use App\Services\OracleDocAsnHerderService;
 use App\Services\OracleDOCOrderHeaderService;
+use App\Services\OracleDocWaveDetailService;
 use App\Services\OrderCommodityService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
@@ -76,6 +80,7 @@ use App\Waybill;
 use App\WaybillPriceModel;
 use Carbon\Carbon;
 use ChangeColumnOrderIdToOrderIssues;
+use Doctrine\DBAL\Query\QueryBuilder;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
@@ -83,6 +88,7 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Hash;
 use Illuminate\Support\Facades\Http;
+use Illuminate\Support\Facades\Redis;
 use Illuminate\Support\Facades\Storage;
 use Illuminate\Support\Str;
 use Maatwebsite\Excel\Facades\Excel;
@@ -136,7 +142,7 @@ class TestController extends Controller
             $count = DB::connection("oracle")->selectOne(DB::raw("SELECT count(*) count FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')"),[$date]);
             if ($count->count > 1000){
                 $sql = <<<sql
-    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM ( 
+    SELECT * FROM (SELECT ORDERNO,WAVENO,SEQNO,EDITTIME, ROWNUM AS rowno FROM (
     SELECT * FROM DOC_WAVE_DETAILS WHERE EDITTIME >= TO_DATE(?,'yyyy-mm-dd hh24:mi:ss')
  ORDER BY EDITTIME) WHERE ROWNUM <= 1000)wave WHERE wave.rowno >= 0
 sql;
@@ -256,19 +262,6 @@ sql;
         dd($uploaded . '/' . $count);
     }
 
-    function issues()
-    {
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app('OrderPackageService');
-        $ids = [741, 739, 738, 736, 735, 733, 732, 731, 730, 729, 728, 725, 724, 723, 721, 720, 719, 718, 717, 715, 714, 713, 712, 711, 710, 705, 703, 702, 701, 700, 699, 698, 696, 694, 693, 692, 691, 690];
-        $orderIssues = OrderIssue::query()->whereIn('id', $ids)->get();
-        $order_ids = data_get($orderIssues, '*.order_id');
-        $orders = Order::query()->whereIn('id', $order_ids)->get();
-        foreach ($orders as $item) {
-            $orderPackageService->createdByOrder($item);
-        }
-    }
-
     function tlog(Request $request)
     {
         app('LogService')->log(__METHOD__, 'cczdelme' . __FUNCTION__, json_encode($request->all()), null);
@@ -289,9 +282,40 @@ sql;
 
     function t1(Request $request)
     {
-        $user=City::query()->firstx();
-        $user['created_at'] = '2020-12-23';
-        $user->save();
+        $times=12345;
+        $start_at = microtime(true);
+        for($i=0;$i<$times;$i++){
+            Cache::put(md5('k_delme'.$i), 'a');
+        }
+        echo microtime(true)-$start_at, '<br>';
+
+        $start_at = microtime(true);
+        for($i=0;$i<$times;$i++){
+            Cache::get(md5('k_delme'.$i));
+        }
+        echo microtime(true)-$start_at, '<br>';
+
+        $start_at = microtime(true);
+        for($i=0;$i<$times;$i++){
+            Cache::pull(md5('k_delme'.$i));
+        }
+        echo microtime(true)-$start_at, '<br>';
+        for($i=0;$i<$times;$i++){
+            Redis::set(md5('k_delme'.$i), 'a');
+        }
+        echo microtime(true)-$start_at, '<br>';
+
+        $start_at = microtime(true);
+        for($i=0;$i<$times;$i++){
+            Redis::get(md5('k_delme'.$i));
+        }
+        echo microtime(true)-$start_at, '<br>';
+
+        $start_at = microtime(true);
+        for($i=0;$i<$times;$i++){
+            Redis::del(md5('k_delme'.$i));
+        }
+        echo microtime(true)-$start_at, '<br>';
     }
 
     function packageT(Request $request)
@@ -890,26 +914,6 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         unset($warehouse);
     }
 
-    public function syncSendOrder()
-    {
-        $order_issues = OrderIssue::query()->whereNotNull('second_client_no')->get();
-        $client_nos = data_get($order_issues, '*.second_client_no');
-        $orderHeaders = OracleDOCOrderHeader::query()->selectRaw(implode(',', OracleDOCOrderHeaderService::$columns))
-            ->whereIn('SOReference1', $client_nos)
-            ->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');
-            }, 'oracleBASCode' => function ($query) {
-                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-            }])
-            ->get();
-        $service = app('OrderIssueService');
-        $service->updateByWmsOrders($orderHeaders);
-    }
-
     public function changeOrder()
     {
         /**
@@ -1272,36 +1276,16 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
     public function testSyncAsn()
     {
-        dump('start' . (string)Carbon::now());
-        app(StoreService::class)->storeCreateByWms();
-        app(StoreService::class)->storeUpdateByWms();
-        dump('end' . (string)Carbon::now());
-    }
-
-    public function testSyncCommodity()
-    {
-        dump('start' . (string)Carbon::now());
-        $syncCommodityTask=new SyncWmsCommoditiesInformation();
-        $syncCommodityTask->handle();
-        dump('end' . (string)Carbon::now());
-    }
-
-    public function testSyncCommodityByMaps()
-    {
-        dump('get_start' . (string)Carbon::now());
-        $bas_skus = OracleBasSKU::query()->where('addTime', '>=', '2020-12-14 00:00:00')->select('customerid', 'sku')->get();
-
-        $ownerIds = Owner::query()->whereIn('code', data_get($bas_skus, '*.customerid'))->get()->map(function ($owner) {
-            return $owner->id;
-        })->toArray();
-        $ownerIds = array_unique($ownerIds);
-        $skus = array_unique(data_get($bas_skus, '*.sku'));
-        dump('get_end' . (string)Carbon::now());
-        /**@var  CommodityService $commodityService */
-        $commodityService = app(CommodityService::class);
-        dump('start' . (string)Carbon::now());
-        $commodities = $commodityService->get_($ownerIds, $skus, [], true);
-        dump('end' . (string)Carbon::now());
+//        dump('hendle...');
+        dump((string)Carbon::now());
+//        dump(memory_get_usage() / 1024 / 1024);
+        $task=new WasSyncWmsAsnInformation();
+        $task->handle();
+        dump((string)Carbon::now());
+//        dump('hendle...end');
+//        dump(memory_get_usage() / 1024 / 1024);
+//        dump(memory_get_peak_usage() / 1024 / 1024);
+//        return view('test');
     }
 
     public function editOrderSyncAt()
@@ -1310,11 +1294,11 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         ValueStore::query()->where('name','order_last_updated_sync_at')->update(['value'=>'2020-12-22 09:00:00']);
     }
 
-    public function syncOrderTask()
+    public function syncOrderTrackingTask()
     {
-        $service = new OrderService();
+        $service = new OrderTrackingService();
         $start_data = Carbon::parse('2020-12-21 10:00:00');
-        $end_data = Carbon::parse('2020-12-21 11:00:00');
+        $end_data = Carbon::parse('2020-12-21 10:05:00');
         $orderNos = OracleDOCOrderHeader::query()->selectRaw('orderno')
             ->where('addTime', '>=', $start_data)
             ->where('addTime', '<=', $end_data)
@@ -1337,14 +1321,18 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
                 }])
                 ->whereIn('DOC_Order_Header.OrderNo', $order_nos)
                 ->get();
-            $service->syncOrder($orderHeaders);
+            app(OrderService::class)->syncOrderByWMSOrderHeaders($orderHeaders);
+            app("OrderCommodityService")->syncOrderCommodity($orderHeaders);
+            app('OrderPackageService')->syncOrderPackage($orderHeaders);
+            app("OrderPackageCommoditiesService")->syncOrderPackageCommodities($orderHeaders);
+            $service->createByWmsOrderHeader($orderHeaders);
             unset($orderHeaders);
         }
     }
-    public function syncOrderTracking()
+
+    public function syncOrderTask()
     {
-        $orderTrackingService = new OrderTrackingService();
-        $orderService = new OrderService();
+        $service = new OrderService();
         $start_data = Carbon::parse('2020-12-21 10:00:00');
         $end_data = Carbon::parse('2020-12-21 11:00:00');
         $orderNos = OracleDOCOrderHeader::query()->selectRaw('orderno')
@@ -1369,19 +1357,11 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
                 }])
                 ->whereIn('DOC_Order_Header.OrderNo', $order_nos)
                 ->get();
-            $orderService->createByWmsOrder($orderHeaders);
-            $orderTrackingService->createByWmsOrderHeader($orderHeaders);
+            $service->syncOrder($orderHeaders);
             unset($orderHeaders);
         }
     }
 
-
-    public function testMbStrPos()
-    {
-        $string = '天猫旗舰店';
-        dd((bool)mb_stristr('天猫旗舰店','天猫'));
-    }
-
     public function testOrderissue()
     {
         $orderIssue_unique = \App\OrderIssue::withTrashed()
@@ -1455,14 +1435,10 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         }
     }
 
-    public function testHz(){
-        dump('start'.Carbon::now()->toDateTimeString());
-        $ownerAreaReportTask=new CreateOwnerAreaReport();
-        $ownerAreaReportTask->handle();
-        $ownerBillReportTask= new CreateOwnerBillReport();
-        $ownerBillReportTask->handle();
-        $ownerReportTask= new CreateOwnerReport();
-        $ownerReportTask->handle();
-        dump('end'.Carbon::now()->toDateTimeString());
+    public function testCancelOrder()
+    {
+        $service = new OracleDocWaveDetailService();
+        $service->clearCancelledOrderTask();
     }
+
 }

+ 4 - 0
app/Log.php

@@ -32,4 +32,8 @@ class Log extends Model
 //            ' ',
 //            $value);
 //    }
+    public function scopeFilter($query, $filters)
+    {
+        return $filters->apply($query);
+    }
 }

+ 10 - 2
app/Observers/OwnerObserver.php

@@ -9,12 +9,20 @@ class OwnerObserver
     /**
      * 监听插入事件
      *
-     * @param  \App\Owner  $owner
+     * @param Owner $owner
      * @return void
      */
     public function created(Owner $owner)
     {
-        if (env("APP_ENV")!="local")
+        if(env('APP_ENV')=='production')
             app("OwnerService")->syncPush($owner);
     }
+
+    public function updated(Owner $owner)
+    {
+        if(env('APP_ENV')=='production'){
+            app("OwnerService")->syncUpdate($owner);
+        }
+    }
+
 }

+ 0 - 2
app/OracleDOCASNHeader.php

@@ -32,6 +32,4 @@ class OracleDOCASNHeader extends Model
         return $this->hasMany(OracleDOCASNDetail::class,'asnno','asnno')
             ->select('asnno','asnlineno','customerid','sku','skudescrc','linestatus','lotatt08','lotatt05','receivedqty','expectedqty','addtime','edittime');
     }
-
-
 }

+ 8 - 2
app/OracleDOCOrderHeader.php

@@ -2,6 +2,7 @@
 
 namespace App;
 
+use App\Traits\HasCompositePrimaryKey;
 use App\Traits\ModelTimeFormat;
 use Illuminate\Database\Eloquent\Model;
 
@@ -11,18 +12,23 @@ class OracleDOCOrderHeader extends Model
 {
     use LogModelChanging;
 
-
     use ModelTimeFormat;
     protected $connection="oracle";
     protected $table="DOC_Order_Header";
     protected $primaryKey="ORDERNO";
     public $timestamps=false;
+    function getIncrementing()
+    {
+        return false;
+    }
+
+
     protected $appends=[
         'oracleBASCustomer_descr_c',
         'oracleBASCode_codename_c'
     ];
     protected $fillable=[
-        'NOTES','ReleaseStatus','SoStatus',
+        'NOTES','ReleaseStatus','SoStatus','WaveNo'
     ];
 
     /*

+ 6 - 1
app/OracleDOCWaveDetails.php

@@ -12,7 +12,12 @@ class OracleDOCWaveDetails extends Model
 
     protected $connection='oracle';
     protected $table='DOC_WAVE_DETAILS';
-
+    public $timestamps=false;
+    protected $primaryKey = 'OrdderNo';
+    function getIncrementing()
+    {
+        return false;
+    }
 
     static public function unpackedOrders($batchNumber){
         return OracleDOCWaveDetails::where('doc_wave_details.waveno', $batchNumber)->leftJoin('doc_order_header','doc_order_header.orderno','doc_wave_details.orderno')->where(function ($query){

+ 4 - 3
app/Order.php

@@ -71,10 +71,11 @@ class Order extends Model
         return $this->hasMany('App\OrderCommodity','order_id','id');
     }
     public function bin(){
-        $bin= $this->hasOne('App\OrderBin','order_id','id');
-        if($bin->count()>0)return $bin;
-        $this->batch()->first()->assignBins();
         return $this->hasOne('App\OrderBin','order_id','id');
+//        $bin= $this->hasOne('App\OrderBin','order_id','id');
+//        if($bin->count()>0)return $bin;
+//        $this->batch()->first()->assignBins();
+//        return $this->hasOne('App\OrderBin','order_id','id');
     }
     public function batch(){
         return $this->belongsTo('App\Batch', 'batch_id','id');

+ 2 - 0
app/Providers/AppServiceProvider.php

@@ -24,6 +24,7 @@ use App\Services\OracleBasCustomerService;
 use App\Services\OracleBasSkuService;
 use App\Services\OracleDocAsnDetailService;
 use App\Services\OracleDOCOrderHeaderService;
+use App\Services\OracleDocWaveDetailService;
 use App\Services\OrderCommodityService;
 use App\Services\OrderCommodityAssignService;
 use App\Services\OrderIssuePerformanceService;
@@ -149,6 +150,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('OracleBasSkuService',OracleBasSkuService::class);
         app()->singleton('OracleDocAsnDetailService',OracleDocAsnDetailService::class);
         app()->singleton('OracleDocOrderHeaderService',OracleDOCOrderHeaderService::class);
+        app()->singleton('OracleDocWaveDetailService',OracleDocWaveDetailService::class);
         app()->singleton('OrderIssueProcessLogService',OrderIssueProcessLogService::class);
         app()->singleton('OrderCommodityService',OrderCommodityService::class);
         app()->singleton('OrderCommodityAssignService',OrderCommodityAssignService::class);

+ 8 - 0
app/RejectedBill.php

@@ -195,4 +195,12 @@ class RejectedBill extends Model
         if($orderIssue ?? false)
             $orderIssue->同步退单状态();
     }
+
+    public function delete()
+    {
+        $orderIssue = $this->orderIssue;
+        if($orderIssue)$orderIssue->update(['is_new_rejecting'=>'无','logistic_number_return'=>null]);
+        return parent::delete(); // TODO: Change the autogenerated stub
+    }
+
 }

+ 2 - 2
app/Services/BatchService.php

@@ -35,10 +35,10 @@ Class BatchService
         return $query->get();
     }
 
-    public function insert(array $insert)
+    public function insert(array $insert): bool
     {
         $result = Batch::query()->insert($insert);
-        if($result)$this->assignTasks($insert);
+//        if($result)$this->assignTasks($insert);
         return $result;
     }
 

+ 7 - 6
app/Services/CommodityService.php

@@ -401,7 +401,7 @@ Class CommodityService
         $create_key = config('sync.commodity_sync.cache_prefix.create');
         /** @var OracleBasSkuService $oracleBasSkuService */
         $oracleBasSkuService = app(OracleBasSkuService::class);
-        $last_time = $this->getAsnLastSyncAt($created_at, 'create');
+        $last_time = $this->getCommodityLastSyncAt($created_at, 'create');
         $basSkus = $oracleBasSkuService->getWmsCreatedCommodities($last_time);
         $last_time = $basSkus->first()['addtime'];
         $last_records = $basSkus->where('addtime', $last_time);
@@ -409,7 +409,7 @@ Class CommodityService
         $this->syncCreateCommodity($basSkus);
         $this->deleteCacheKey($create_set, $create_keys);
         $this->setLastRecordsByRedis($create_key, $create_set, $create_keys, $last_records);
-        $this->setAsnLastSyncAt($created_at, $last_time);
+        $this->setCommodityLastSyncAt($created_at, $last_time);
     }
 
     public function syncCommodityUpdated()
@@ -420,7 +420,7 @@ Class CommodityService
         $update_key = config('sync.commodity_sync.cache_prefix.update');
         /** @var OracleBasSkuService $oracleBasSkuService */
         $oracleBasSkuService = app(OracleBasSkuService::class);
-        $last_time = $this->getAsnLastSyncAt($updated_at, 'update');
+        $last_time = $this->getCommodityLastSyncAt($updated_at, 'update');
         $basSkus = $oracleBasSkuService->getWmsUpdatedCommodities($last_time);
         $last_time = $basSkus->first()['edittime'];
         $last_records = $basSkus->where('edittime', $last_time);
@@ -428,7 +428,7 @@ Class CommodityService
         $this->syncUpdateCommodity($basSkus);
         $this->deleteCacheKey($update_set, $update_keys);
         $this->setLastRecordsByRedis($update_key, $update_set, $update_keys, $last_records);
-        $this->setAsnLastSyncAt($updated_at, $last_time);
+        $this->setCommodityLastSyncAt($updated_at, $last_time);
     }
 
     public function syncCreateCommodity($addBasSkus)
@@ -523,6 +523,7 @@ Class CommodityService
             ];
             return $unexists[json_encode($arr)] ?? false;
         });
+
         $inner_params = (function () use ($BasSKUs, $owner_map) {
             $map = [];
             $BasSKUs->each(function ($basSku) use (&$map, $owner_map) {
@@ -657,7 +658,7 @@ Class CommodityService
         }
     }
 
-    public function getAsnLastSyncAt($key, $type)
+    public function getCommodityLastSyncAt($key, $type)
     {
         $last_time = ValueStore::query()->where('name', $key)->value('value');
         if ($last_time) return $last_time;
@@ -671,7 +672,7 @@ Class CommodityService
         return Carbon::now()->subSeconds(65);
     }
 
-    public function setAsnLastSyncAt($key, $last_time)
+    public function setCommodityLastSyncAt($key, $last_time)
     {
         $asnLastSyncAt = ValueStore::query()->updateOrCreate([
             'name' => $key,

+ 2 - 2
app/Services/InventoryCompareService.php

@@ -86,7 +86,7 @@ class InventoryCompareService
             $wmsInventoryCompareDj=$query->where('属性仓',$custom_location)->where('产品编码',$sku)->where('质量状态','DJ')->first();
             $wmsInventoryCompareYjz=$query->where('属性仓',$custom_location)->where('产品编码',$sku)->where('质量状态','YJZ')->first();
             $unknownQualityStatus=$query->where('属性仓',$custom_location)->where('产品编码',$sku)->whereNotIn('质量状态',['DJ','CC','ZP','YJZ']);
-            if (!$wmsInventoryCompareZp&&!$wmsInventoryCompareCc&&!$wmsInventoryCompareDj&&$unknownQualityStatus->isEmpty()){
+            if (!$wmsInventoryCompareZp&&!$wmsInventoryCompareCc&&!$wmsInventoryCompareDj&&!$wmsInventoryCompareYjz&&$unknownQualityStatus->isEmpty()){
                 $this->createInventoryCompare_underImport($sku, $custom_location, $amount, $owner_id,$owner_name);
                 continue;
             }
@@ -146,7 +146,7 @@ class InventoryCompareService
             'date_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
             'date_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
             'mission_code' => ['timeLimit' => 15],
-            'custom_location' => ['timeLimit' => 15],
+            'custom_location' => ['like' => '','timeLimit' => 15],
             'id' => ['multi' => ','],
         ];
         $inventoryCompares = app(QueryService::class)->query($param,$inventoryCompares,$columnQueryRules,'inventory_compares');

+ 12 - 2
app/Services/NewOrderCountingRecordService.php

@@ -411,8 +411,18 @@ class NewOrderCountingRecordService
                     break;
             }
             $item['amount'] = $amount;
-
-            return $result->push($item);
+            return $result->push(new OrderCountingRecord( [
+                'owner_id' => $item->owner_id,
+                'shop_id' => $item->shop_id,
+                'warehouse_id' => $item->warehouse_id,
+                'logistic_id' => $item->logistic_id,
+                'date_target' => $item->date_target,
+                'counting_unit' => $item->counting_unit,
+                'amount'=>$item->amount,
+                'year'=>$item->year,
+                'month'=>$item->month,
+                'week'=>$item->week
+            ]));
         }
         return $result;
     }

+ 1 - 1
app/Services/OracleDOCOrderHeaderService.php

@@ -24,7 +24,7 @@ Class OracleDOCOrderHeaderService
         'DOC_Order_Header.IssuePartyName','DOC_Order_Header.OrderType','DOC_Order_Header.WaveNo'
     ];
 
-    private function getQuery(){
+    public function getQuery(){
         return OracleDOCOrderHeader::query()->selectRaw(implode(',',self::$columns))
             ->with(['oracleBASCustomer'=>function($query){
                 $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');

+ 107 - 0
app/Services/OracleDocWaveDetailService.php

@@ -0,0 +1,107 @@
+<?php
+
+namespace App\Services;
+
+use App\OracleDOCOrderHeader;
+use App\OracleDOCWaveDetails;
+use App\ValueStore;
+use Carbon\Carbon;
+use Illuminate\Support\Facades\Cache;
+
+class OracleDocWaveDetailService
+{
+    public function clearCancelledOrder($orderHeaders)
+    {
+        if (!$orderHeaders) return;
+        $clearOrderNos = data_get($orderHeaders, '*.orderno');
+        OracleDOCWaveDetails::query()->whereIn('OrderNo', $clearOrderNos)->delete();
+        app('LogService')->log(__CLASS__, __METHOD__, 'Delete OracleDOCWaveDetails' . '  ' . json_encode($clearOrderNos) );
+    }
+
+    private function getSyncAt()
+    {
+        return Cache::remember('clear_cancel_order_sync_at', config('sync.clear_wave_order.cache_prefix.sync_at'), function () {
+            $valueStore = ValueStore::query()->where('name', 'last_cancel_order_sync_at')->first();
+            if(!$valueStore) $valueStore = ValueStore::query()->create(['name'=>'last_cancel_order_sync_at']);
+            if (!$valueStore->value) return (string)Carbon::now()->subMinutes(7);
+            return $valueStore->value;
+        });
+    }
+
+    private function getLastSyncStartAt()
+    {
+        return Cache::remember('clear_cancel_order_start_at', config('sync.clear_wave_order.cache_prefix.last_start_at'), function () {
+            $valueStore = ValueStore::query()->where('name', 'last_cancel_order_start_at')->first();
+            if(!$valueStore) $valueStore = ValueStore::query()->create(['name'=>'last_cancel_order_start_at']);
+            if ($valueStore->value) return (string)Carbon::now();
+            return null;
+        });
+    }
+
+    private function getLastSyncEndAt()
+    {
+        return Cache::remember('clear_cancel_order_start_at', config('sync.clear_wave_order.cache_prefix.last_end_at'), function () {
+            $valueStore = ValueStore::query()->where('name', 'last_cancel_order_end_at')->first();
+            if(!$valueStore) $valueStore = ValueStore::query()->create(['name'=>'last_cancel_order_end_at']);
+            if ($valueStore->value) return (string)Carbon::now();
+            return null;
+        });
+    }
+
+    private function setSyncAt($time)
+    {
+        Cache::put(config('clear_cancel_order_sync_at'), $time);
+        ValueStore::query()->where('name', 'last_cancel_order_sync_at')->update(['value'=>$time]);
+    }
+
+    private function setSyncStartAt($time)
+    {
+        Cache::put(config('clear_cancel_order_start_at'), $time);
+        ValueStore::query()->where('name', 'last_cancel_order_start_at')->update(['value'=>$time]);
+    }
+
+    private function setSyncEndAt($time)
+    {
+        Cache::put(config('clear_cancel_order_start_at'), $time);
+        ValueStore::query()->where('name', 'last_cancel_order_end_at')->update(['value'=>$time]);
+    }
+
+    public function clearCancelledOrderTask()
+    {
+        $enabled = config('sync.clear_wave_order.enabled');
+        if ($enabled == false) return;
+        $sync_at = $this->getSyncAt();
+        $last_start_at = $this->getLastSyncStartAt();
+        $last_end_at = $this->getLastSyncEndAt();
+        $restart = config('clear_wave_order.cache_prefix.restart');
+        $start_time = Carbon::now();
+
+        if (isset($last_start_at) && empty($last_end_at) && $start_time->diffInMinutes(Carbon::parse($last_start_at)) < $this->restart) return;
+        if (isset($last_start_at) && isset($last_end_at)
+            && Carbon::parse($last_end_at)->lt(Carbon::parse($last_start_at))
+            && $start_time->diffInMinutes(Carbon::parse($last_start_at)) < $restart)
+            return;
+
+        $orderHeaders = OracleDOCOrderHeader::query()
+            ->selectRaw('orderno,waveno')
+            ->where('editTime', '>=', Carbon::parse($sync_at)->subSeconds(1))
+            ->where('ERPCANCELFLAG', 'Y')
+            ->orderByDesc('editTime')->get();
+        $orderHeaderList = $orderHeaders->chunk(3000);
+        foreach ($orderHeaderList as $items) {
+            $this->clearCancelledOrder($items);
+            if ($orderHeaders->count() > 0) {
+                OracleDOCOrderHeader::query()->whereIn('orderNo', data_get($items, '*.orderno'))->update(['waveno' => '*']);
+                $json = json_encode($items->map(function ($orderHeader) {
+                    return ['orderno' => $orderHeader->orderno, 'waveno' => $orderHeader->waveno];
+                }));
+                app('LogService')->log(__CLASS__, __METHOD__, 'update OrderHeader' . '  ' . $json);
+            }
+        }
+        $end_time = (string)Carbon::now();
+        $sync_at = $orderHeaders->last()->editTime ?? $sync_at;
+        $this->setSyncAt($sync_at);
+        $this->setSyncStartAt((string)$start_time);
+        $this->setSyncEndAt($end_time);
+    }
+}

+ 14 - 16
app/Services/OrderIssueService.php

@@ -313,7 +313,9 @@ class OrderIssueService
     public function orderIssueTag(array $params)
     {
         $orderNos = $params['orderNos'];
-        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails', 'oracleBASCode'])->whereIn('orderNo', $orderNos)->get();
+        /** @var OracleDOCOrderHeaderService $orderHeaderService */
+        $orderHeaderService = app('OracleDocOrderHeaderService');
+        $orderHeaders = $orderHeaderService->getQuery()->whereIn('orderNo', $orderNos)->get();
         $bool = $this->createOrderIssueByWmsOrder($orderHeaders, $params['typeId'], $params['result_explain']);
         if ($bool) {
             return ['success' => $bool];
@@ -326,18 +328,14 @@ class OrderIssueService
     {
         /** @var OrderService $orderService */
         $orderService = app('OrderService');
-//        $orderService->updateByWmsOrders($orderHeaders);
-//        $orders = $orderService->getByWmsOrders($orderHeaders);
-        $orderService->createByWmsOrder($orderHeaders);
+        $orderService->syncOrderInfo($orderHeaders);
         $orders = Order::query()->whereIn('code',data_get($orderHeaders,'*.orderno'))->whereHas('packages')->get();
         if($orders->count()==0)return false;
         $innerParams = [];
         $data = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($orderHeaders as $orderHeader) {
             $order = $orders->where('code',$orderHeader->orderno)->first();
-            if($order==null){
-                $order = Order::query()->where('code',$orderHeader->orderno)->first();
-            }
+            if($order==null)$order = Order::query()->where('code',$orderHeader->orderno)->first();
             $innerParams[] = [
                 'order_id' => $order->id,
                 'order_issue_type_id' => $order_issue_type_id,
@@ -363,7 +361,7 @@ class OrderIssueService
             app('LogService')->log(__METHOD__, __FUNCTION__, '创建问题件' . count($innerParams) . json_encode($innerParams));
             return true;
         } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__, __FUNCTION__, '创建问题件 error' . count($innerParams) . json_encode($innerParams) . $e->getMessage() . $e->getTraceAsString());
+            app('LogService')->log(__METHOD__, __FUNCTION__, '创建问题件 error' . count($innerParams) . json_encode($innerParams) .json_encode($e->getMessage())  .json_encode($e->getTraceAsString())) ;
             return false;
         }
     }
@@ -501,20 +499,20 @@ class OrderIssueService
 
     public function editOrderIssueSecondClientNo($id, $secondClientNo, &$order = null)
     {
-        $order = Order::query()->where('client_code', $secondClientNo)->first();
-        if (!$order) {
-            /** @var OrderService $orderService */
-            $orderService = app(OrderService::class);
-            $orderHeaders = OracleDOCOrderHeader::query()->where('SoReference1', $secondClientNo)->get();
-            $orders = $orderService->createByWmsOrder($orderHeaders);
-            if ($orders->count() > 0) $order = $orders->first();
-        }
+        $orderService = app(OrderService::class);
+        $orderHeaderService = app('OracleDocOrderHeaderService');
+        $orderHeaders = $orderHeaderService->getQuery()->where('SoReference1', $secondClientNo)->get();
+        $orderService->syncOrderInfo($orderHeaders,false);
         return OrderIssue::query()->where('id', $id)->update(['second_client_no' => $secondClientNo]) > 0;
     }
 
     public function updateSecondLogisticNumber($id, $logisticNumber)
     {
         $orderIssue = OrderIssue::query()->where('id', $id)->first();
+        if(!$orderIssue->second_client_no){
+            $orderIssue->update(['second_logistic_number'=>$logisticNumber]);
+            return ['success' => true,'second_logistic_number' => $logisticNumber];
+        }
         $order = app(OrderService::class)->getOrderByLogisticNumber($logisticNumber);
         if (!$order) {
             $orderIssue->update(['second_logistic_number' => $logisticNumber]);

+ 13 - 220
app/Services/OrderPackageCommoditiesService.php

@@ -17,7 +17,6 @@ use Illuminate\Support\Collection;
 
 class OrderPackageCommoditiesService
 {
-
     public function insert(array $params){
         return OrderPackageCommodities::query()->insert($params);
     }
@@ -25,159 +24,6 @@ class OrderPackageCommoditiesService
     public function batchUpdate($params){
         return app(BatchUpdateService::class)->batchUpdate('order_package_commodities',$params);
     }
-    //-------------------------
-    public function basedOnOracleDetailsStore($orderNo, $orderPackage)
-    {
-        $details = OracleDOCOrderDetail::query()->where('orderNo', $orderNo)->get();
-        $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
-        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qtyordered');
-        unset($details,$orderPackageCommodities);
-    }
-
-    public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){
-        $details = OracleActAllocationDetails::query()->where('orderno', $orderNo)->get();
-        $orderPackageCommodities =  OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
-        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty_each');
-        unset($details,$orderPackageCommodities);
-    }
-
-    public function 根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,$key){
-        $newItems = [];
-        foreach ($details as $detail) {
-            $owner = Owner::query()->where(['code' => $detail['customerid']])->first();      // 货主
-            $sku = $detail->sku;    // sku
-            $owner_id = $owner->id; // 货主id
-            $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品
-            if ($commodity == null) {
-                $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first();   // 没有找到对应的商品信息
-                $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
-            }
-            $data =  ['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail[$key]];
-            array_push($newItems,$data);
-        }
-        $diffarr = [];
-        foreach ($newItems as $newItem) {
-            $packageCommodity =  $orderPackageCommodities->where('order_package_id',$newItem['order_package_id'])->where('commodity_id',$newItem['commodity_id'])->first();
-            if($packageCommodity!=null){
-                if($packageCommodity['amount'] != $newItem['amount']){
-                    $packageCommodity->update(['amount'=>intval($newItem['amount'])]);
-                }
-                $orderPackageCommodities =  $orderPackageCommodities->filter(function ($item) use ($packageCommodity){
-                    if($item['id'] == $packageCommodity['id']){
-                        return false;
-                    }
-                    return true;
-                });
-                array_push($diffarr,$newItem);
-            }
-        }
-        if($orderPackageCommodities->count() > 0){
-            foreach ($orderPackageCommodities as $orderPackageCommodity) {
-                $id = $orderPackageCommodity['id'];
-                OrderPackageCommodities::destroy($id);
-            }
-        }
-        $newItems = array_filter($newItems,function($newItem) use ($diffarr){
-            foreach ($diffarr as $item) {
-                if($item['order_package_id'] == $newItem['order_package_id'] &&
-                    $item['commodity_id'] == $newItem['commodity_id'] &&
-                    $item['amount'] == $newItem['amount']){
-                    return false;
-                }
-            }
-            return true;
-        });
-        try {
-            if(count($newItems) > 0 ){
-                OrderPackageCommodities::query()->insert($newItems);
-                app('LogService')->log(__METHOD__,__FUNCTION__,'添加包裹商品信息'.json_encode($newItems));
-            }
-        } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'添加包裹商品信息异常'.json_encode($newItems).$e->getMessage(),$e->getTraceAsString());
-        } finally {
-            unset($newItems,$orderPackageCommodities);
-        }
-    }
-
-    public function basedOnActAllocationDetailsStore($orderPackage)
-    {
-        $details = OracleActAllocationDetails::query()->where('picktotraceid', $orderPackage->logistic_number)->get();
-        $orderPackageCommodities =  OrderPackageCommodities::query()->where('order_package_id',$orderPackage['id'])->get();
-        $this->根据详情更新OrderPackage下的商品信息($orderPackage,$orderPackageCommodities,$details,'qty_each');
-        unset($details,$orderPackageCommodities);
-    }
-
-/*    public function basedOnActAllocationDetail(Order $order, OracleDOCOrderHeader $header, array $details)
-    {
-        foreach ($details as $detail) {
-            $logistic_number = $details['picktotraceid'];
-            if ($logistic_number == '*' || $logistic_number == null || $logistic_number == '') {
-                $logistic_number = $header['soreference5'];
-                if ($logistic_number == '*' || $logistic_number == null || $logistic_number == '') {
-                    continue;
-                }
-            }
-            $orderPackage = OrderPackage::query()->firstOrCreate(['order_id'=>$order['id'],'logistic_number',$details]);
-            $this->createByActAllocationDetail($detail, $orderPackage);
-        }
-    }*/
-
-   /* private function createByActAllocationDetail($detail,$orderPackage)
-    {
-        $owner = Owner::query()->where(['code' => $detail->customerid])->first();      // 货主
-        $sku = $detail->sku;
-        $owner_id = $owner['id'];
-        $commodity = Commodity::query()->where(['sku' => $sku, 'owner_id' => $owner_id])->first();
-        if ($commodity == null) {
-            $basSku = OracleBasSKU::query()->where(['sku' => $sku, 'customerid' => $detail->customerid])->first();
-            $commodity = Commodity::query()->create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
-        }
-        try {
-            $count  = OrderPackageCommodities::query()->where(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty_each']])->count();
-            if($count == 0){
-                $orderPackageCommodities = OrderPackageCommodities::query()->firstOrCreate(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty_each']]);
-                app('LogService')->log(__METHOD__,__FUNCTION__,'创建订单包裹详情'.json_encode($orderPackageCommodities));
-            }
-        } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'创建订单包裹失败'.$e->getMessage().$e->getTraceAsString());
-        } finally {
-            return $orderPackageCommodities ?? null;
-        }
-    }*/
-
-    public function createByWmsOrder($orderHeaders)
-    {
-        if(!$orderHeaders){ return [];}
-        $this->更新OPC_根据WMS订单($orderHeaders);
-    }
-
-//    public function getParamsByActAllocationDetails($details,array $order_packages_logistic_number_map,array $owner_code_map,array $commodity_owner_id_sku_map,array $logistic_numbers){
-//        /** @var DataHandlerService  $dataHandlerService */
-//        $dataHandlerService =  app(DataHandlerService::class);
-//        if(!$details)return [];
-//        $params = [];
-//        $create_at = Carbon::now()->format('Y-m-d H:i:s');
-//        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
-//        foreach ($details as $actAllocationDetail) {
-//            $pickToTraceID = $actAllocationDetail->picktotraceid;
-//            if(in_array($pickToTraceID,$logistic_numbers)){
-//                $orderPackage = $dataHandlerService->getKeyValue(['logistic_number'=>$pickToTraceID],$order_packages_logistic_number_map);
-//                if(!$orderPackage)continue;
-//                $owner = $dataHandlerService->getKeyValue(['code'=>$actAllocationDetail->customerid],$owner_code_map);
-//                if(!$owner)continue;
-//                $commodity = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id,'sku'=>$actAllocationDetail->sku],$commodity_owner_id_sku_map);
-//                if(!$commodity)continue;
-//                $params[] = [
-//                    'commodity_id' =>$commodity->id,
-//                    'order_package_id' =>$orderPackage->id,
-//                    'amount' => $actAllocationDetail->qty_each,
-//                    'created_at' => $create_at
-//                ];
-//            }
-//        }
-//        unset($details,$order_packages_logistic_number_map,$owner_code_map,$commodity_owner_id_sku_map,$logistic_numbers);
-//        return $params;
-//    }
 
     public function create(array $params){
         if(!$params){return [];}
@@ -196,11 +42,6 @@ class OrderPackageCommoditiesService
         }
     }
 
-    public function updateByWmsOrder($orderHeaders){
-        if(!$orderHeaders){return ;}
-        $this->更新OPC_根据WMS订单($orderHeaders);
-    }
-
     public function getByWmsOrder($orderHeaders){
         $order_no =  data_get($orderHeaders,'*.orderno');
         return OrderPackageCommodities::query()
@@ -217,33 +58,6 @@ class OrderPackageCommoditiesService
         return app(BatchUpdateService::class)->batchUpdateItself('order_package_commodities', $column, $params);
     }
 
-    /**
-     * @param array $logistic_numbers
-     * @return array|mixed
-     */
-    public function 删除包裹商品信息_根据快递单号($logistic_numbers)
-    {
-        $orderPackageCommodities = OrderPackageCommodities::query()
-            ->with('package')
-            ->whereIn('order_package_id',function($query)use($logistic_numbers){
-                $query->from('order_packages')->select('id')->whereIn('logistic_number',$logistic_numbers);
-            })->get();
-        $ids = data_get($orderPackageCommodities, '*.id');
-        if(count($ids) == 0){return [];}
-        try {
-            OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities '.$orderPackageCommodities->count().json_encode($orderPackageCommodities),null);
-        } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities error'.$orderPackageCommodities->count().json_encode($orderPackageCommodities).$e->getMessage().$e->getTraceAsString(),null);
-            return [];
-        }
-        return $ids;
-    }
-
-    /**
-     * @param array $orderNos
-     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
-     */
     public function getByOrderNos($orderNos)
     {
         return OrderPackageCommodities::query()->with('package.order','commodity')
@@ -597,16 +411,6 @@ class OrderPackageCommoditiesService
         $this->syncOrderPackageCommoditiesByOrderHeaders($orderHeaders);
     }
 
-    // TODO
-    public function deleteUnnecessaryOrderCommodities($ids)
-    {
-        if(!$ids)return;
-        if(count($ids)==0)return;
-        $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 syncOrderPackageCommoditiesByOrderHeaders(&$orderHeaders)
     {
         /**
@@ -637,7 +441,6 @@ class OrderPackageCommoditiesService
         }
         if(count($owner_codes) ==0 || count($sku_codes) == 0)return ;
         $owners = $ownerService->getOwnerByCodes($owner_codes);
-//        $commodities = $commodityService->get_(data_get($owners,'*.id'),$sku_codes,[],true);   // 预先处理     3s
         $commodities = $commodityService->getCommoditiesByMaps($map);   // 预先处理     3s
         $orderPackages = $orderPackageService->getByWmsOrders($orderHeaders);
         $orderCommodities = $this->getByWmsOrder($orderHeaders);
@@ -672,7 +475,7 @@ class OrderPackageCommoditiesService
             $this->deleteOrderCommodities($del_orderCommodities);       // 删除
         unset($del_orderCommodities);
     }
-    // TODO 重组已有的OrderCommodities
+
     public function regroupOrderCommodities(&$orderCommodities)
     {
         $params = [];
@@ -693,7 +496,7 @@ class OrderPackageCommoditiesService
         });
         return $params;
     }
-    // TODO 重组OrderAllocationDetails
+
     public function regroupWmsOrderAllocationDetails(&$orderHeaders)
     {
         /**
@@ -722,7 +525,7 @@ class OrderPackageCommoditiesService
         }
         return $params;
     }
-    // TODO 过滤已有的
+
     public function filterUpdateParams(&$orderAllocationDetails,&$orderCommodities,&$del_orderCommodities)
     {
         $update_params = [];
@@ -743,7 +546,7 @@ class OrderPackageCommoditiesService
         }
         return $update_params;
     }
-    // TODO 创建
+
     public function filterInnerParams(&$orderAllocationDetails,&$orderCommodities)
     {
         $inner_params = [];
@@ -755,21 +558,7 @@ class OrderPackageCommoditiesService
         }
         return $inner_params;
     }
-    // TODO 更新
-//    public function filterUpdateParams(&$orderAllocationDetails,&$orderCommodities)
-//    {
-//        $update_params = [];
-//        foreach ($orderCommodities as $key => $orderCommodity) {
-//            if(isset($orderAllocationDetails[$key])){
-//                if($orderCommodity->amount != $orderAllocationDetails[$key]->amount){
-//                    $update_params[$key] = $orderCommodity[$key]->amount = $orderAllocationDetails[$key]->amount;
-//                    unset($orderCommodity,$orderAllocationDetails[$key]);
-//                }
-//            }
-//        }
-//        return $update_params;
-//    }
-    // TODO
+
     public function filterDeleteParams(&$orderAllocationDetails,&$orderCommodities)
     {
         $del_params = [];
@@ -783,7 +572,7 @@ class OrderPackageCommoditiesService
         }
         return $del_params;
     }
-    // TODO  根据数据创建
+
     public function createOrderCommodities(&$inner_params,&$package_map,&$commodities,&$owner_id_map)
     {
         /** @var DataHandlerService $dataHandlerService */
@@ -825,7 +614,7 @@ class OrderPackageCommoditiesService
         }
         unset($create_params,$commodity_map);
     }
-    // TODO
+
     public function updateOrderCommodities(&$orderCommodities)
     {
         if(!$orderCommodities)return ;
@@ -845,14 +634,18 @@ class OrderPackageCommoditiesService
 
         unset($update_params);
     }
-    // TODO 删除
+
     public function deleteOrderCommodities(&$orderCommodities){
+        /** @var OrderTrackingService $orderTrackingService */
+        $orderTrackingService = app('OrderTrackingService');
         if(!$orderCommodities)return;
         if(count($orderCommodities)==0)return;
         try {
             $ids = data_get($orderCommodities, '*.id');
             if(count($ids) >0){
-                $bool = OrderPackageCommodities::query()->whereIn('id', data_get($orderCommodities, '*.id'))->delete();
+                $bool = OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
+                $orderTrackings = OrderTracking::query()->whereIn('order_package_commodity_id',$ids)->get();
+                $orderTrackingService->deleteOrderTracings($orderTrackings);
                 LogService::log(__METHOD__, __FUNCTION__, '批量删除 OrderCommodity '  . ($bool > 0 ? 'SUCCESS' : 'FAULT') .'||' .count($orderCommodities)  . ' || ' . json_encode($orderCommodities));
             }
         } catch (\Exception $e) {

+ 8 - 305
app/Services/OrderPackageService.php

@@ -24,120 +24,6 @@ class OrderPackageService
         return OrderPackage::query()->insert($params);
     }
 
-    public function createdByOrder($order)
-    {
-        /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
-        $orderPackageCommoditiesService = app('OrderPackageCommoditiesService');
-        $oracleActAllocationDetails = OracleActAllocationDetails::query()->where('OrderNo', $order['code'])->get();
-        $orderHeader = OracleDOCOrderHeader::query()->where('OrderNo', $order['code'])->first();
-        $oracleDOCOrderDetail = OracleDOCOrderDetail::query()->where('OrderNo', $order['code'])->get();
-        $logistic_number = null;
-        if ($oracleActAllocationDetails->count() == 0) {  // 通过oracle Order Detail
-            $logistic_number = $orderHeader['soreference5'];
-            if ($oracleDOCOrderDetail->count() == 0) {
-                return null;
-            }
-            if ($logistic_number == null || $logistic_number == '*') {
-                return null;
-            }
-            try {
-                $orderPackage = OrderPackage::query()->firstOrCreate(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                $orderPackageCommoditiesService->basedOnOracleDetailsStore($orderHeader['orderno'], $orderPackage);
-                app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage' . json_encode($orderPackage));
-            } catch (\Exception $e) {
-                app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage失败' . $e->getMessage() . $e->getTraceAsString());
-            }
-        } else if ($oracleActAllocationDetails->count() > 0) {
-            $count = $oracleActAllocationDetails->where('OrderNo', $order['code'])->whereNull('picktotraceid')->count();
-            if ($count > 0) {   // 快递单号为空
-                if (($orderHeader['soreference5'] ?? false) && $orderHeader['soreference5'] == '*') {
-                    return null;
-                }
-                $logistic_number = $orderHeader['soreference5'];
-
-                try {
-                    $orderPackage = OrderPackage::query()->firstOrCreate(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                    $orderPackageCommoditiesService->basedOnOracleDetailsStore($order, $orderPackage);
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage' . json_encode($orderPackage));
-                } catch (\Exception $e) {
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单包裹orderPackage失败' . $e->getMessage() . $e->getTraceAsString());
-                }
-            } else {
-                $ActAllocationDetails = $oracleActAllocationDetails->where('orderno', $order['code']);
-                $picktotraceids = data_get($ActAllocationDetails,'*.picktotraceid');
-                $picktotraceids = array_unique($picktotraceids);
-                foreach ($picktotraceids as $picktotraceid) {
-                    $logistic_number = $picktotraceid;
-                    if ($logistic_number == null || $logistic_number == '*') {
-                        $logistic_number = $orderHeader['soreference5'];
-                        if ($logistic_number == null || $logistic_number == '*') {
-                            return null;
-                        }
-                        $orderPackage = OrderPackage::query()->where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
-                        if ($orderPackage) {
-                            $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
-                            continue;
-                        }
-                        try {
-                            $orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                            $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
-                            app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单orderPackage' . json_encode($orderPackage));
-                        } catch (\Exception $e) {
-                            app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单orderPackage失败' . json_encode($e->getMessage()) . json_encode($e->getTraceAsString()));
-                        }
-                        continue;
-                    }
-                    $orderPackage = OrderPackage::query()->where('order_id', $order['id'])->where('logistic_number', $logistic_number)->first();
-                    if ($orderPackage) {
-                        $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
-                        continue;
-                    }
-                    try {
-                        $orderPackage = OrderPackage::query()->create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
-                        $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
-                        app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单' . json_encode($orderPackage));
-                    } catch (\Exception $e) {
-                        app('LogService')->log(__METHOD__, __FUNCTION__, '创建订单orderPackage失败' . json_encode($e->getMessage()) . json_encode($e->getTraceAsString()));
-                    }
-                }
-            }
-        }
-        unset($oracleActAllocationDetails,$oracleDOCOrderDetail);
-    }
-    // 需删除
-//    public function updateOrderPackageInfo(Order $order)
-//    {
-//        $orderHeader = OracleDOCOrderHeader::where('orderNo', $order['code'])->first();
-//        if ($orderHeader['oracleBASCode_codename_c'] == $order['wam_status']) {
-//            return;
-//        }
-//        $orderPackages = OrderPackage::where('order_id', $order['id'])->get();
-//        $orderPackageCommodities = OrderPackageCommodities::with('commodity')->whereIn('order_package_id', data_get($orderPackages, '*.id'))->get();
-//        $actAllocationDetails = OracleActAllocationDetails::where('orderNo', $order['client_code'])->get();
-//        if (count($orderPackageCommodities) < count($actAllocationDetails)) {
-//            $actAllocationDetails = $actAllocationDetails->reject(function ($value, $key) use (&$orderPackageCommodities) {
-//                $bool = false;
-//                $count = 0;
-//                $orderPackageCommodities->reject(function ($value1, $key1) use ($value, &$bool, $count) {
-//                    if ($count > 0) {
-//                        return false;
-//                    }
-//                    if ($value1->commodity['sku'] == $value['sku'] && $value1['amount'] == intval($value['qty'])) {
-//                        $bool = true;
-//                        $count++;
-//                        return true;
-//                    } else {
-//                        return false;
-//                    }
-//                });
-//                return $bool;
-//            });
-//        }
-//        $orderPackageCommoditiesService = app('OrderPackageCommoditiesService');
-//        $orderPackageCommoditiesService->basedOnActAllocationDetail($order, $orderHeader, $actAllocationDetails);
-//        $order['wam_status'] = $orderHeader['oracleBASCode_codename_c'];
-//        $order->save();
-//    }
     /**
      * @param string $logistic_number
      * @param array $values
@@ -158,7 +44,6 @@ class OrderPackageService
         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')
@@ -174,127 +59,6 @@ class OrderPackageService
             ->paginate($paginate);
     }
 
-    public function createByWmsOrder($orderHeaders)
-    {
-        /**
-         * @var OrderService $orderService
-         * @var DataHandlerService $dataHandlerService
-         * @var OrderPackageCommoditiesService $orderPackageCommodityService
-         */
-        $orderService = app(OrderService::class);
-        $dataHandlerService = app(DataHandlerService::class);
-        $orderPackageCommodityService = app(OrderPackageCommoditiesService::class);
-
-        if(!$orderHeaders ){return ;}
-        $orders = $orderService->getByWmsOrders($orderHeaders);
-        if(!$orders){return ;}
-        $order_packages = OrderPackage::query()->whereIn('order_id',data_get($orders,'*.id'))->get();
-
-        $order_packages_logistic_number_map=$dataHandlerService->dataHeader(['order_id','logistic_number'],$order_packages);
-        $order_headers_orderNo_map =  $dataHandlerService->dataHeader(['orderno'],$orderHeaders);
-
-        $insert_params = [];
-        foreach ($orders as $order) {
-            $orderHeader =  $dataHandlerService->getKeyValue(['orderno'=>$order->code],$order_headers_orderNo_map);
-            if(!$orderHeader){ continue;}
-            if(!$orderHeader->sostatus == 90){ continue;}
-            $params = $this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
-            if(!$params){continue;}
-            foreach ($params as $param) {
-                $key = ['order_id'=>$param['order_id'],'logistic_number'=>$param['logistic_number']];
-                $orderPackage = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
-                if(isset($orderPackage)){
-                    continue;
-                }else{
-                    $insert_params[] = $param;
-                }
-            }
-        }
-        if(count($insert_params)>0){
-            $order_packages = $this->create($insert_params);
-        }
-        unset($orders_code_map,$order_packages_logistic_number_ma,$insert_params,$order_packages,$order_package_commodities);
-        $orderPackageCommodityService->createByWmsOrder($orderHeaders);
-        unset($orderHeaders);
-    }
-
-    public function getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map)
-    {
-        /** @var DataHandlerService $dataHandlerService */
-        $dataHandlerService = app(DataHandlerService::class);
-        $actAllocationDetails = $orderHeader->actAllocationDetails;
-        $logistic_numbers = array_diff(array_unique(data_get($actAllocationDetails,'*.picktotraceid')),['','*',null]);
-        $params = [];
-        $created_at = Carbon::now()->format('Y-m-d H:i:s');
-        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
-        foreach ($logistic_numbers as $logistic_number) {
-//            if($logistic_number == $orderHeader->orderno)continue;
-            $key  = ['order_id'=>$order->id,'logistic_number'=>$logistic_number];
-            $orderPackage = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
-            if(isset($orderPackage)){ continue;}
-            $params[] = [
-                'order_id' => $order->id, 'logistic_number' => $logistic_number,'created_at' => $created_at,'updated_at' => $updated_at
-            ];
-        }
-        return $params;
-    }
-
-//    public function getUpdateParamsByOrderHeader($orderHeader,$order,$orderPackages)
-//    {
-//        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
-//        /** @var DataHandlerService $dataHandlerService */
-//        $dataHandlerService = app(DataHandlerService::class);
-//        $wms_logistic_number =  app(OracleDOCOrderHeaderService::class)->getLogisticNumbers($orderHeader);
-//        $order_packages  = $orderPackages->where('order_id',$order->id)->get();
-//        $was__logistic_number = data_get($order_packages,'*.logistic_number');
-//        $arr1=  array_diff($was__logistic_number,$wms_logistic_number);
-//        $arr2=  array_diff($wms_logistic_number,$was__logistic_number);
-//        if(count($arr2) > 0 && count($arr1) == 0){
-//            return [
-//                'id'=>$order_packages->first()->id,
-//                'logistic_number' => $arr1[0],
-//                'updated_at'=> $updated_at,
-//            ];
-//        }
-//        return null;
-//    }
-
-    public function updateOrderPackageByWmsOrder($orderHeaders){
-        /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
-        $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
-        /** @var DataHandlerService $dataHandlerService */
-        $dataHandlerService = app(DataHandlerService::class);
-        if(!$orderHeaders){return;}
-
-        $orders = Order::query()->with('packages')->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
-        $orders_code_map =  $dataHandlerService->dataHeader(['code'],$orders);
-
-        $orderPackages =$this->getByWmsOrders($orderHeaders);
-        $order_packages_logistic_number_map = $dataHandlerService->dataHeader(['order_id','logistic_number'],$orderPackages);
-
-        $insertParams = [];
-        foreach ($orderHeaders as $orderHeader) {
-            $order = $dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno ?? ''],$orders_code_map);
-            if(!$order){continue;}
-            $order_packages = $order->packages ?? null;
-            if(!$order_packages){continue;}
-            $params =$this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
-            if(count($params) > 0){
-                foreach ($params as $param) {
-                    $key  = ['order_id'=>$param['order_id'],'logistic_number'=>$param['logistic_number']];
-                    $order_package = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
-                    if($order_package){continue;}
-                    $insertParams[] = $param;
-                }
-            }
-        }
-        if(count($insertParams)>0){
-            $this->create($insertParams);
-        }
-        $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
-        $this->删除多余的订单包裹_根据WMS订单($orderHeaders);
-    }
-
     public function getByWmsOrders($orderHeaders){
         $order_nos = data_get($orderHeaders,'*.orderno');
         return OrderPackage::query()->with('order')
@@ -318,34 +82,6 @@ class OrderPackageService
         }
     }
 
-    /**
-     * @param OracleDOCOrderHeader $orderHeaders
-     */
-    public function 删除多余的订单包裹_根据WMS订单($orderHeaders)
-    {
-        if(!isset($orderHeaders)){return;}
-        if(is_array($orderHeaders) && count($orderHeaders) == 0){return;}
-        $orderPackages = $this->getByWmsOrders($orderHeaders);
-        $Was_logistic_number = data_get($orderPackages,'*.logistic_number');
-        $Wms_logistic_number = array_unique(data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid'));
-        $delete_logistic_number = array_diff($Was_logistic_number,$Wms_logistic_number);
-        if(count($delete_logistic_number) == 0){return;}
-        $delete_orderPackages = OrderPackage::query()->wherein('logistic_number',$delete_logistic_number)->get();
-        $delete_ids = app(OrderPackageCommoditiesService::class)->删除包裹商品信息_根据快递单号($delete_logistic_number);
-        try {
-            OrderPackage::query()->whereIn('logistic_number', $delete_logistic_number)->delete();
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackage '.$delete_orderPackages->count().json_encode($delete_orderPackages),null);
-            $orderTracking = OrderTracking::query()->whereIn('order_package_commodity_id', $delete_ids)->get();
-            app(OrderTrackingService::class)->deleteOrderTracings($orderTracking);
-        } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除多余OrderPackage error'.$delete_orderPackages->count().json_encode($delete_orderPackages).$e->getMessage().$e->getTraceAsString(),null);
-        }
-    }
-
-    /**
-     * @param array  $orderNos
-     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
-     */
     public function getByOrderNos($orderNos)
     {
         return OrderPackage::query()->with('order')
@@ -354,22 +90,6 @@ class OrderPackageService
             })->get();
     }
 
-    public function 返回OrderPackage数组_根据数组中的快递单号($params)
-    {
-        $map = [];
-        $orderPackages = OrderPackage::query()->whereIn('logistic_number',data_get($params,'*.logistic_number'))->get();
-        if($orderPackages->count() == 0){return $map;}
-        foreach ($orderPackages as $orderPackage) {
-            $map[$orderPackage->logistic_number] = $orderPackage;
-        }
-        return  $map;
-    }
-
-    /**
-     * @param string $orderClientNo
-     * @param string $logisticNumber
-     * @return array|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object
-     */
     public function update($orderClientNo,$logisticNumber)
     {
         $order = Order::query()->with('packages.commodities.commodity')->where('client_code',$orderClientNo)->first();
@@ -389,34 +109,14 @@ class OrderPackageService
 
     public function syncPackageByOrderHeaders(&$orderHeaders)
     {
-        /**
-         * @var OrderService $orderService
-         * @var OrderPackageCommoditiesService $orderPackageCommodityService
-         * @var OrderTrackingService $orderTrackingService
-         */
+        /** @var OrderService $orderService */
         $orderService = app('OrderService');
-        $orderPackageCommodityService= app('OrderPackageCommoditiesService');
-//        $orderTrackingService = app('OrderTrackingService');
         if(!$orderHeaders)return;
-
         $orders = $orderService->getByWmsOrders($orderHeaders);
-
         $packages = $this->getByOrderNos(data_get($orderHeaders,'*.orderno'));          // 已有
-
         $this->createOrderPackage($orderHeaders,$orders,$packages);                     // 创建package
-        $del_ids = $this->deleteUnnecessaryPackage($orderHeaders,$packages);     // 删除package
+        $this->deleteUnnecessaryPackage($orderHeaders,$packages);     // 删除package
         unset($orders,$packages);       // 手动清除
-        if(count($del_ids)==0)return;
-        OrderPackageCommodities::query()->whereIn('order_package_id',$del_ids)->delete();
-        $orderPackageCommodityService->deleteUnnecessaryOrderCommodities($del_ids);     // 删除 orderCommodity
-        unset($del_ids);
-//        $orderTracking = OrderTracking::query()->whereIn('order_package_commodity_id',function($query)use($del_ids){
-//            $query->from('order_package_commodities')->select('order_package_commodities.id')->whereIn('order_package_id',$del_ids);
-//        })->get();
-//        if($orderTracking->count()==0)return;
-//
-//        $orderTrackingService->deleteOrderTracings($orderTracking);                     // 删除追踪件+
-//        unset($orderTracking);      // 手动清除
     }
 
     public function createOrderPackage($orderHeaders,$orders,$packages)
@@ -476,12 +176,14 @@ class OrderPackageService
     {
         /**
          * @var DataHandlerService $dataHandlerService
+         * @var OrderTrackingService $orderTrackingService
+         * @var OrderPackageCommoditiesService $orderPackageCommoditiesService
          */
         $dataHandlerService = app(DataHandlerService::class);
+        $orderPackageCommoditiesService = app('OrderPackageCommoditiesService');
         $logistic_numbers = data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid');     // 获取picktotraceid (运单的快递单号)
         $logistic_numbers = array_unique($logistic_numbers);
         $logistic_numbers = array_diff($logistic_numbers,['',' ','*']);
-
         $packages_maps = $dataHandlerService->dataHeader(['logistic_number'],$packages);
         $exits_number = data_get($packages,'*.logistic_number');
         $packages = [];
@@ -493,11 +195,12 @@ class OrderPackageService
         if(count($packages)==0)return $packages;
         try {
             $bool = OrderPackage::query()->whereIn('id', $packages)->delete();
+            $orderPackageCommodities = OrderPackageCommodities::query()->where('order_package_id',$packages)->get();
+            $orderPackageCommoditiesService->deleteOrderCommodities($orderPackageCommodities);
             $bool ? LogService::log(__METHOD__,__FUNCTION__,'删除多余包裹 ids:'.json_encode($packages)) : null;
-            return $bool ? $packages : collect();
         } catch (\Exception $e) {
             LogService::log(__METHOD__,__FUNCTION__,'删除多余包裹 ids:'.json_encode($packages).$e->getMessage());
-            return collect();
         }
     }
+
 }

+ 54 - 335
app/Services/OrderService.php

@@ -373,70 +373,11 @@ class OrderService
 
     public function findOrCreateByClientCode($clientCode)
     {
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app('OrderPackageService');
-        $order = Order::query()->where('client_code', $clientCode)->first();
-        $orderHeader = app('OracleDocOrderHeaderService')->first(['SOReference1'=> $clientCode]);
-        if ($orderHeader == null) {
-            return null;
-        }
-        $orderHeadAttr = $orderHeader->toArray();
-        if ($order == null) {
-            $customer_name = $orderHeadAttr['oracleBASCustomer_descr_c'];
-            $owner = Owner::query()->where('code', $orderHeadAttr['customerid'])->first();
-            if (!$owner) {
-                try {
-                    $owner = Owner::query()->create(['code' => $orderHeadAttr['customerid'], 'name' => $customer_name]);
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建货主' . json_encode($owner));
-                } catch (\Exception $e) {
-                    app('LogService')->log(__METHOD__, __FUNCTION__, '创建货主失败' . $e->getMessage() . $e->getTraceAsString());
-                }
-            }
-            $owner_id = $owner['id'];
-            $shop_name = $orderHeadAttr['issuepartyname'];
-            $shop_Id = null;
-            if ($shop_name) {
-                $shop = Shop::query()->firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
-                $shop_Id = $shop['id'];
-            }
-            $logistics = Logistic::query()->where(['code' => $orderHeadAttr['userdefine1']])->first();
-            $logistics_id = null;
-            if ($logistics) {
-                $logistics_id = $logistics['id'];
-            } else {
-                try {
-                    $logistics = Logistic::query()->create(['name' => $orderHeadAttr['carriername'], 'code' => $orderHeadAttr['userdefine1']]);
-                    $logistics_id = $logistics['id'];
-                    app('LogService')->log(__METHOD__,__FUNCTION__,'创建承运商'.json_encode($logistics));
-                } catch (\Exception $e) {
-                    app('LogService')->log(__METHOD__,__FUNCTION__,'创建承运商失败'.$e->getMessage().$e->getTraceAsString());
-                }
-            }
-            $warehouse = Warehouse::query()->where('code',$orderHeadAttr['warehouseid'])->first();
-            $arr = [
-                'warehouse_id' =>$warehouse->id ??'',
-                'code' => $orderHeadAttr['orderno'],
-                'owner_id' => $owner_id,
-                'wms_status' => $orderHeadAttr['oracleBASCode_codename_c'],
-                'created_at' => $orderHeadAttr['addtime'],
-                'logistic_id' => $logistics_id,
-                'shop_id' => $shop_Id,
-                'consignee_name' => $orderHeadAttr['c_contact'],
-                'consignee_phone' => empty($orderHeadAttr['c_tel2'])?$orderHeadAttr['c_tel1']:$orderHeadAttr['c_tel2'],
-                'province' => $orderHeadAttr['c_province'],
-                'city' => $orderHeadAttr['c_city'],
-                'district' => $orderHeadAttr['c_district'],
-                'address' => $orderHeadAttr['c_address1'],
-                'client_code' => $orderHeadAttr['soreference1'],
-            ];
-            $order = Order::query()->create($arr);
-            app('LogService')->log(__METHOD__,__FUNCTION__,'创建 Order '.json_encode($order));
-            unset($arr,$orderHeadAttr,$owner);
-        }else{
-            $this->updateOrderByOrderHeader($order,$orderHeader);
-        }
-        $orderPackageService->createdByOrder($order);unset($order);
-        return Order::with('packages.commodities.commodity')->where('client_code', $clientCode)->first();
+        /** @var OracleDOCOrderHeaderService $orderHeaderService */
+        $orderHeaderService = app('OracleDocOrderHeaderService');
+        $orderHeaders = $orderHeaderService->getQuery()->where('SOReference1',$clientCode)->get();
+        $this->syncOrderInfo($orderHeaders,false);
+        return Order::with(['packages.commodities.commodity','logistic'])->where('client_code', $clientCode)->first();
     }
 
     public function getRejectedBillOfClientCode($clientCode)
@@ -454,14 +395,10 @@ class OrderService
 
     public function findOrCreteByLogisticNumberReturn($logisticNumberReturn)
     {
-        $ASNHeader = OracleDOCASNHeader::query()->where('ASNReference3', $logisticNumberReturn)->first();
-        if (!$ASNHeader) {
-            return null;
-        }
-        $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1', $ASNHeader->ASNReference2)->first();
-        if (!$orderHeader) {
-            return null;
-        }
+        $orderHeader = OracleDOCOrderHeader::query()->where('SOReference1',function($query)use($logisticNumberReturn){
+            $query->from('Doc_ASN_Header')->select('ASNReference2')->where('ASNReference3', $logisticNumberReturn);
+        })->first();
+        if(!$orderHeader)return null;
         return $this->findOrCreateByClientCode($orderHeader['soreference1']);
     }
 
@@ -539,130 +476,6 @@ class OrderService
         return $order;
     }
 
-    /**
-     * @param $orderHeaders
-     * @return \Illuminate\Database\Eloquent\Builder[]|Collection|null
-     */
-    public function createByWmsOrder($orderHeaders)
-    {
-        if($orderHeaders->isEmpty())return null;
-        /**
-         * @var OwnerService $ownerService
-         * @var WarehouseService $warehouseService
-         * @var LogisticService $logisticService
-         * @var ShopService $shopService
-         * @var OrderPackageService $orderPackageService
-         */
-        $warehouseService =app(WarehouseService::class);
-        $ownerService = app(OwnerService::class);
-        $logisticService = app(LogisticService::class);
-        $shopService = app(ShopService::class);
-        $orderPackageService = app(OrderPackageService::class);
-
-        $owners_code_map = [];$logistics_code_map = [];$shop_name_map=[]; $owners_id_map = [];$warehouses_code_map =[];
-
-        $owners = $ownerService->getByWmsOrders($orderHeaders);
-        $logistics = $logisticService->getByWmsOrders($orderHeaders);
-        $shops = $shopService->getByWmsOrders($orderHeaders);
-        $warehouses=$warehouseService->getByWmsOrders($orderHeaders);
-
-
-        foreach ($owners as $owner) {
-            $owners_code_map[$owner->code] = $owner;
-            $owners_id_map[$owner->id] = $owner;
-        }
-        foreach ($logistics as $logistic) {
-            $logistics_code_map[$logistic->code] = $logistic;
-        }
-
-        foreach ($shops as $shop) {
-            $owner_code = $owners_id_map[$shop->owner_id] ? $owners_id_map[$shop->owner_id]['code'] : '';
-            $key = ' owner_code='.$owner_code.' name='.$shop->name;
-            $shop_name_map[$key] = $shop;
-        }
-
-        foreach ($warehouses as $warehouse) {
-            $warehouses_code_map[$warehouse->code] = $warehouse;
-        }
-
-        $insert_params = $this->getParamsByOrderHeader($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map);
-        $update_params = $this->getUpdateParams($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map);
-        if(count($insert_params)> 0){
-            $this->insert($insert_params);
-        }
-        if(count($update_params)>1){
-            $this->batchUpdate($update_params);
-        }
-        $orderPackageService->createByWmsOrder($orderHeaders);
-        $order_nos = data_get($orderHeaders,'*.orderno');
-        unset($orderHeaders_map,$orders_code_map,$shop_name_map,$logistics_code_map,$owners_code_map);
-        return Order::query()->whereIn('code',$order_nos)->get();
-    }
-
-    public function getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map)
-    {
-        $params = [];
-        $orders = Order::query()->whereIn('code',data_get($orderHeaders_map,'*.orderno'))->get();
-        $order_code_map = [];
-        foreach ($orders as $order) {
-            $order_code_map[$order->code]= $order;
-        }
-        $date = Carbon::now()->format('Y-m-d H:i:s');
-        foreach ($orderHeaders_map as $orderHeader) {
-            if($order_code_map[$orderHeader->orderno] ?? false)continue;
-            $owner = $owners_code_map[$orderHeader->customerid] ?? null;
-            $logistic =  $logistics_code_map[$orderHeader->userdefine1] ?? null;
-            $warehouse=$warehouses_code_map[$orderHeader->warehouseid] ?? null;
-            $key = ' owner_code='.$orderHeader->customerid.' name='.$orderHeader->issuepartyname ?? '';
-            $shop = $shop_name_map[$key] ?? '';
-            $params[] = [
-                'code' => $orderHeader->orderno,
-                'owner_id' => $owner->id ?? null,
-                'wms_status' => $orderHeader->oracleBASCode ? $orderHeader->oracleBASCode->codename_c : null,
-                'created_at' => $orderHeader->addtime,
-                'updated_at' =>$date,
-                'logistic_id' => $logistic->id ?? null,
-                'shop_id' => $shop->id ?? null,
-                'consignee_name' => $orderHeader->c_contact,
-                'consignee_phone' => empty($orderHeader->c_tel2)?$orderHeader->c_tel1:$orderHeader->c_tel2,
-                'province' => $orderHeader->c_province,
-                'city' => $orderHeader->c_city,
-                'district' => $orderHeader->c_district,
-                'address' => $orderHeader->c_address1,
-                'client_code' => $orderHeader->soreference1,
-                'wms_edittime' =>$orderHeader->edittime,
-                'warehouse_id' =>$warehouse->id??''
-            ];
-        }
-        return $params;
-    }
-
-    public function getUpdateParams($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map,$warehouses_code_map)
-    {
-        if(!$orderHeaders){[];}
-        $orders = Order::query()->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
-        $update_params = [[
-            'id','owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code','updated_at','wms_edittime','warehouse_id'
-        ]];
-        $orderHeaders_map = [];
-        foreach ($orderHeaders as $orderHeader) {
-            $orderHeaders_map[$orderHeader->orderno] = $orderHeader;
-        }
-        $updated_at = Carbon::now()->toDateTimeString();
-        $orders->each(function($order)use($orderHeaders_map,&$owners_code_map,&$logistics_code_map,&$shop_name_map,&$warehouses_code_map,&$update_params,$updated_at){
-            $order_header = $orderHeaders_map[$order->code] ?? null;
-            if(isset($order_header)){
-                $owner = $owners_code_map[$order_header->customerid] ?? null;
-                $logistic =  $logistics_code_map[$order_header->userdefine1] ?? null;
-                $warehouse=$warehouses_code_map[$order_header->warehouseid] ?? null;
-                $key = ' owner_code='.$order_header->customerid.' name='.$order_header->issuepartyname ?? null;
-                $shop = $shop_name_map[$key] ?? null;
-                $this->UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $order_header, $updated_at, $update_params);
-            }
-        });
-        return $update_params;
-    }
-
     public function create(array $params){
         if(count($params) == 0) return [];
         try {
@@ -674,48 +487,6 @@ class OrderService
         }
     }
 
-    public function updateByWmsOrders($orderHeaders)
-    {
-        if(!$orderHeaders){return null;}
-        /** @var DataHandlerService $dataHandlerService */
-        $dataHandlerService =  app(DataHandlerService::class);
-        /** @var OrderPackageService $orderPackageService */
-        $orderPackageService = app(OrderPackageService::class);
-        if(!$orderHeaders || $orderHeaders->count() == 0){return null;}
-        $orders = $this->getByWmsOrders($orderHeaders);
-        $orders_code_map =  $dataHandlerService->dataHeader(['code'],$orders);
-        $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
-        $owner_code_map = $dataHandlerService->dataHeader(['code'],$owners);
-
-        $logistics = app(LogisticService::class)->getByWmsOrders($orderHeaders);
-        $logistics_code_map = $dataHandlerService->dataHeader(['code'],$logistics);
-
-        $shops = app(ShopService::class)->getByWmsOrders($orderHeaders);
-        $shops_map = $dataHandlerService->dataHeader(['owner_id','name'],$shops);
-
-        $warehouses = app(WarehouseService::class)->getByWmsOrders($orderHeaders);
-        $warehouses_map = $dataHandlerService->dataHeader(['code'],$warehouses);
-        $updateParams = [[
-            'id','owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code','updated_at','wms_edittime','warehouse_id','created_at'
-        ]];
-        $updated_at = Carbon::now()->toDateTimeString();
-        foreach ($orderHeaders as $orderHeader) {
-            $order =$dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno],$orders_code_map);
-            if(!$order)continue;
-            $logistic = $dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1] ,$logistics_code_map);
-            $owner = $dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid] ,$owner_code_map);
-            $shop = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id ?? '','name'=> $orderHeader->issuepartyname] ,$shops_map);
-            $warehouse=$dataHandlerService->getKeyValue(['code'=>$orderHeader->warehouseid],$warehouses_map);
-            $this->UpdateOrderParamBy($shop, $logistic, $owner, $warehouse, $order, $orderHeader, $updated_at, $updateParams);
-        }
-        if(count($updateParams) > 1){
-            $this->batchUpdate($updateParams);
-        }
-        $this->createByWmsOrder($orderHeaders);
-        $orderPackageService->updateOrderPackageByWmsOrder($orderHeaders);
-        unset($updateParams,$orderHeaders);
-    }
-
     public function getByWmsOrders($orderHeaders){
         if(!$orderHeaders){return null;}
         $order_nos = data_get($orderHeaders,'*.orderno');
@@ -730,7 +501,6 @@ class OrderService
             ->whereIn('order_id',function($query)use($orderNo){
                 $query->from('orders')->select('id')->whereIn('code',$orderNo);
             })->get();
-
         return $orderIssues->map(function($orderIssue){
             return $orderIssue->order->code;
         });
@@ -762,54 +532,54 @@ class OrderService
         ];
     }
 
-    /**
-     * @param App/Order $order
-     * @param App/OracleDOCOrderHeader $orderHeader
-     */
-    public function updateOrderByOrderHeader($order,$orderHeader)
-    {
-        if(!$orderHeader){return ;}
-        if($orderHeader->orderno == $order->code){
-            return ;
-        }else if($orderHeader->soreference1 != $order->client_code){
-            return ;
-        }
-        $params = $this->getParamByOrderHeader($orderHeader);
-
-        $data = [
-                'code'=>$order->code ?? $params['code'],
-                'owner_id'=>$order->code ?? $params['owner_id'],
-                'shop_id'=>$order->code ?? $params['shop_id'],
-                'logistic_id'=>$order->code ?? $params['logistic_id'],
-                'consignee_name'=>$order->code ?? $params['consignee_name'],
-                'province'=>$order->code ?? $params['province'],
-                'city'=>$order->code ?? $params['city'],
-                'district'=>$order->code ?? $params['district'],
-                'address'=>$order->code ?? $params['address'],
-                'wms_edittime'=>$order->code ?? $params['wms_edittime'],
-                'wms_status'=>$order->code ?? $params['wms_status'],
-        ];
-        Order::query()->where('id',$order->id)->update($data);
-    }
+//    /**
+//     * @param App/Order $order
+//     * @param App/OracleDOCOrderHeader $orderHeader
+//     */
+//    public function updateOrderByOrderHeader($order,$orderHeader)
+//    {
+//        if(!$orderHeader){return ;}
+//        if($orderHeader->orderno == $order->code){
+//            return ;
+//        }else if($orderHeader->soreference1 != $order->client_code){
+//            return ;
+//        }
+//        $params = $this->getParamByOrderHeader($orderHeader);
+//
+//        $data = [
+//                'code'=>$order->code ?? $params['code'],
+//                'owner_id'=>$order->code ?? $params['owner_id'],
+//                'shop_id'=>$order->code ?? $params['shop_id'],
+//                'logistic_id'=>$order->code ?? $params['logistic_id'],
+//                'consignee_name'=>$order->code ?? $params['consignee_name'],
+//                'province'=>$order->code ?? $params['province'],
+//                'city'=>$order->code ?? $params['city'],
+//                'district'=>$order->code ?? $params['district'],
+//                'address'=>$order->code ?? $params['address'],
+//                'wms_edittime'=>$order->code ?? $params['wms_edittime'],
+//                'wms_status'=>$order->code ?? $params['wms_status'],
+//        ];
+//        Order::query()->where('id',$order->id)->update($data);
+//    }
 
     public function getOrderByLogisticNumber($logisticNumber)
     {
-        $order = Order::query()->with('packages.commodities.commodity')
-            ->whereHas('packages',function($query)use($logisticNumber){
-                $query->where('logistic_number',$logisticNumber);
-            })->first();
-        if($order){
-            $orderHeader = OracleDOCOrderHeader::query()->where('soreference1',$order->client_no)->first();
-            $this->updateOrderByOrderHeader($order,$orderHeader);
-            return $order;
-        }
-        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->whereHas('actAllocationDetails',function($query)use($logisticNumber){
-                $query->where('picktotraceid',$logisticNumber);
-            })->get();
-        app(CommodityService::class)->getByWmsOrders($orderHeaders);
-        $orders =$this->createByWmsOrder($orderHeaders);
-        return  $orders ? $orders->first() : null ;
+        /** @var OracleDOCOrderHeaderService $orderHeaderService */
+        $orderHeaderService = app('OracleDocOrderHeaderService');
+        $orderHeaders = $orderHeaderService->getQuery()->whereIn('OrderNo',function($query)use($logisticNumber){
+            $query->from('Act_Allocation_Details')->select('OrderNo')->where('picktotraceid',$logisticNumber);
+        });
+        if(!$orderHeaders) return null;
+        $this->syncOrderInfo($orderHeaders);
+        $code = $orderHeaders->first()->code;
+        return $order = Order::query()->with('packages.commodities.commodity')->where('code',$code)->first();
+    }
+
+    public function syncOrderInfo($orderHeaders,$sync_order_commodity = true){
+        $this->syncOrderByWMSOrderHeaders($orderHeaders);
+        if($sync_order_commodity)app("OrderCommodityService")->syncOrderCommodity($orderHeaders);
+        app('OrderPackageService')->syncOrderPackage($orderHeaders);
+        app("OrderPackageCommoditiesService")->syncOrderPackageCommodities($orderHeaders);
     }
 
     public function syncOrder(&$orderHeaders)
@@ -977,57 +747,6 @@ class OrderService
         ];
     }
 
-    /**
-     * @param $shop
-     * @param $logistic
-     * @param $owner
-     * @param $warehouse
-     * @param $order
-     * @param $orderHeader
-     * @param string $updated_at
-     * @param $updateParams
-     * @return mixed
-     */
-    public function UpdateOrderParamBy(&$shop, &$logistic, &$owner, &$warehouse, &$order, &$orderHeader, string &$updated_at, &$updateParams)
-    {
-        $shop_id = $shop->id ?? null;
-        $logistic_id = $logistic->id ?? null;
-        $owner_id = $owner->id ?? null;
-        $warehouse_id = $warehouse->id ?? null;
-
-        if (($order->wms_status !== $orderHeader->oracleBASCode_codename_c) ||
-            ($order->logistic_id !== $logistic_id) ||
-            ($order->shop_id !== $shop_id) ||
-            ($order->owner_id !== $owner_id) ||
-            ($order->consignee_name !== $orderHeader->c_contact) ||
-            $order->consignee_phone !==( empty($orderHeader->c_tel2) ? $orderHeader->c_tel1 : $orderHeader->c_tel2) ||
-            $order->province !== ($orderHeader->c_province) ||
-            $order->city !== ($orderHeader->c_city) ||
-            $order->district !== ($orderHeader->c_district) ||
-            $order->address !== ($orderHeader->c_address1) ||
-            $order->client_code !== ($orderHeader->soreference1) ||
-            ($order->wms_edittime !== $orderHeader->edittime) ||
-            ($order->warehouse_id !== $warehouse_id)) {
-            $updateParams[] = ['id' => $order->id,
-                'owner_id' => $owner_id,
-                'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
-                'logistic_id' => $logistic_id,
-                'shop_id' => $shop_id,
-                'consignee_name' => $orderHeader->c_contact,
-                'consignee_phone' => empty($orderHeader->c_tel2) ? $orderHeader->c_tel1 : $orderHeader->c_tel2,
-                'province' => $orderHeader->c_province,
-                'city' => $orderHeader->c_city,
-                'district' => $orderHeader->c_district,
-                'address' => $orderHeader->c_address1,
-                'client_code' => $orderHeader->soreference1,
-                'updated_at' => $updated_at,
-                'created_at' => $orderHeader->addtime,
-                'wms_edittime' => $orderHeader->edittime,
-                'order_type' => $orderHeader->orderType->codename_c??'',
-                'warehouse_id' => $warehouse_id];
-        }
-    }
-
     public function createOrFindOrder($orderHeader)
     {
         $order = Order::query()->where('code',$orderHeader->orderno)->first();

+ 12 - 27
app/Services/OrderTrackingService.php

@@ -158,22 +158,21 @@ class OrderTrackingService
     }
 
     public function trackingWmsOrderOnCreate($startData){
-        /** @var OrderService $orderSerivce */
-        $orderService = app(OrderService::class);
-        /** @var Collection $orderHeaders */
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
-       // $this->customizedOperation($orderHeaders);
-        $orderService->createByWmsOrder($orderHeaders);
+        app(OrderService::class)->syncOrderByWMSOrderHeaders($orderHeaders);
+        app("OrderCommodityService")->syncOrderCommodity($orderHeaders);
+        app('OrderPackageService')->syncOrderPackage($orderHeaders);
+        app("OrderPackageCommoditiesService")->syncOrderPackageCommodities($orderHeaders);
         $this->createByWmsOrderHeader($orderHeaders);
     }
 
-    public function trackingWmsOrderOnEdit($startData){
-        /** @var OrderService $orderService */
-        $orderService = app(OrderService::class);
-        /** @var Collection $orderHeaders */
+    public function trackingWmsOrderOnEdit($startData)
+    {
         $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateEdit($startData);
-       // $this->customizedOperation($orderHeaders);
-        $orderService->updateByWmsOrders($orderHeaders);
+        app(OrderService::class)->syncOrderByWMSOrderHeaders($orderHeaders);
+        app("OrderCommodityService")->syncOrderCommodity($orderHeaders);
+        app('OrderPackageService')->syncOrderPackage($orderHeaders);
+        app("OrderPackageCommoditiesService")->syncOrderPackageCommodities($orderHeaders);
         $this->updateByWmsOrderHeaders($orderHeaders);
     }
 
@@ -184,18 +183,6 @@ class OrderTrackingService
         return $this->updateOrderTracingsByOrderIds($order_id,$param,$value);
     }
 
-    /**
-     * @param Collection $orderHeaders
-     */
-    public function customizedOperation(&$orderHeaders) // 对追踪件的特定操作
-    {
-        $orderHeaders->each(function ($orderHeader) {
-            if($orderHeader->userdefine1 ==='ZT'){
-                $orderHeader->userdefine1 = 'XJWL';
-            }
-        });
-    }
-
     public function updateOrderTracingsByOrderIds($orderId,$param,$value)
     {
         $bool = null;
@@ -319,7 +306,6 @@ class OrderTrackingService
         return null;
     }
 
-
     public function updateByWmsOrderHeaders($orderHeaders)
     {
         if(!$orderHeaders){return ;}
@@ -512,9 +498,9 @@ class OrderTrackingService
         if($orderTracking->count() == 0){return;}
         try {
             OrderTracking::query()->whereIn('id', data_get($orderTracking,'*.id'))->delete();
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking '.$orderTracking->count().json_encode($orderTracking),null);
+            app('LogService')->log(__METHOD__,__FUNCTION__,'删除OrderTracking '.$orderTracking->count().json_encode($orderTracking),null);
         } catch (\Exception $e) {
-            app('LogService')->log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking error'.$orderTracking->count().json_encode($orderTracking).$e->getMessage().$e->getTraceAsString(),null);
+            app('LogService')->log(__METHOD__,__FUNCTION__,'删除OrderTracking error'.$orderTracking->count().json_encode($orderTracking).$e->getMessage().$e->getTraceAsString(),null);
         }
     }
 
@@ -568,5 +554,4 @@ class OrderTrackingService
         }
     }
 
-
 }

+ 32 - 1
app/Services/OwnerService.php

@@ -235,7 +235,11 @@ Class OwnerService
             if($owner) return $owner;
              $basCustomer = app('OracleBasCustomerService')->first(['Customer_Type'=>'OW','CustomerID'=>$code]);
             if(!$basCustomer)return null;
-            return Owner::query()->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid']]);
+            if($basCustomer && $basCustomer['active_flag']=='Y') return Owner::query()
+                ->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid']]);
+            $deleted_at=Carbon::now()->toDateTimeString();
+            if($basCustomer && $basCustomer['active_flag']=='N') return Owner::query()
+                ->create(['name'=>$basCustomer['descr_c'],'code'=>$basCustomer['customerid'],'deleted_at'=>$deleted_at]);
         });
     }
     public function codeGetOwner($code)
@@ -275,4 +279,31 @@ sql
         }
         return true;
     }
+
+
+    public function syncUpdate($owner)
+    {
+        if (is_array($owner)){
+            $owner = new Owner();
+            foreach ($owner as $column=>$value){
+                $owner[$column] = $value;
+            }
+        }
+        if (is_numeric($owner)){
+            $owner = Owner::query()->find($owner);
+            if (!$owner)return false;
+        }
+        $sql = DB::raw(<<<sql
+    update BAS_CUSTOMER set ACTIVE_FLAG = ?,EDITTIME = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),EDITWHO = ? where CUSTOMERID = ? and CUSTOMER_TYPE = ? 
+sql
+        );
+        $date = date('Y-m-d H:i:s');
+        if ($owner && $owner->deleted_at){
+            DB::connection("oracle")->update($sql,['N',$date,'WAS-'.(Auth::user() ? Auth::user()['name'] : 'SYSTEM'),$owner->code,'OW']);
+        }
+       if ($owner && $owner->deleted_at==null) {
+            DB::connection("oracle")->update($sql,['Y',$date,'WAS-'.(Auth::user() ? Auth::user()['name'] : 'SYSTEM'),$owner->code,'OW']);
+        }
+        return true;
+    }
 }

+ 4 - 5
app/Services/RejectedBillService.php

@@ -84,7 +84,7 @@ Class RejectedBillService
         if ($updateCollect->isEmpty()) return null;
         $logisticNumberReturn = $this->getLogisticNumberReturn($updateCollect);
         $rejectedBills = $this->getRejectedBills($logisticNumberReturn);
-        if ($rejectedBills->isEmpty()) return null;
+        if (!$rejectedBills) return null;
         $updateParams = [[
             'logistic_number_return', 'is_loaded', 'updated_at'
         ]];
@@ -122,10 +122,9 @@ Class RejectedBillService
     {
         $updateCollect = collect();
         foreach ($asnHerders as $asnHerder) {
-            if (($asnHerder->asnType->codename_c == '退货入库'
-                    || $asnHerder->asnType->codename_c == '其他入库')
-                && ($asnHerder->asnStatus->codename_c == '已入库'
-                    ||$asnHerder->asnStatus->codename_c == 'ASN关闭')) {
+            if ($asnHerder->asnType && $asnHerder->asnStatus &&
+                ($asnHerder->asnType->codename_c == '退货入库' || $asnHerder->asnType->codename_c == '其他入库')
+                && ($asnHerder->asnStatus->codename_c == '完全收货' ||$asnHerder->asnStatus->codename_c == 'ASN关闭')) {
                 $updateCollect->add($asnHerder);
             }
         }

+ 8 - 5
app/Services/StoreService.php

@@ -51,9 +51,9 @@ Class StoreService
         $oracleDocAsnHerderService = app(OracleDocAsnHerderService::class);
         $last_time = $this->getAsnLastSyncAt($created_at, 'create');
         $asnHerders = $oracleDocAsnHerderService->getWmsAsnOnStartDateCreate($last_time);
+        if (count($asnHerders)<1) return;
         $last_time = $asnHerders->first()['addtime'];
         $last_records = $asnHerders->where('addtime', $last_time);
-        if (!$asnHerders) return;
         $this->createStore($asnHerders);
         $this->deleteCacheKey($create_set, $create_keys);
         $this->setLastRecordsByRedis($create_key, $create_set, $create_keys, $last_records);
@@ -71,9 +71,9 @@ Class StoreService
         $oracleDocAsnHerderService = app(OracleDocAsnHerderService::class);
         $last_time = $this->getAsnLastSyncAt($updated_at, 'update');
         $asnHerders = $oracleDocAsnHerderService->getWmsAsnOnStartDateEdit($last_time);
+        if (count($asnHerders)<1) return;
         $last_time = $asnHerders->first()['edittime'];
         $last_records = $asnHerders->where('edittime', $last_time);
-        if (!$asnHerders) return;
         $this->createStore($asnHerders);
         $this->updateStore($asnHerders);
         $this->deleteCacheKey($update_set, $update_keys);
@@ -100,9 +100,11 @@ Class StoreService
         }
         $owners = $ownerService->getOwnerByCodes($owner_codes);
         $warehouses = $wareHouseService->getWareHouseByCodes($warehouse_codes);
+        $owners_code_map=[];
         foreach ($owners as $owner) {
             $owners_code_map[$owner->code] = $owner;
         }
+        $warehouses_code_map=[];
         foreach ($warehouses as $warehouse) {
             $warehouses_code_map[$warehouse->code] = $warehouse;
         }
@@ -194,9 +196,10 @@ Class StoreService
             if ($store->asn_code != $asnHerder->asnno ||
                 $store->warehouse_id != $warehouse_id ||
                 $store->owner_id != $owner_id ||
-                $store->stored_method != $asnHerder->asnType->codename_c ||
-                $store->status != $asnHerder->asnStatus->codename_c ||
-                $store->remark != $asnHerder->notes) {
+                $store->stored_method != ($asnHerder->asnType->codename_c ??'')||
+                $store->status != ($asnHerder->asnStatus->codename_c ?? '')||
+                $store->remark != $asnHerder->notes ||
+                $store->updated_at != $asnHerder->edittime) {
                 $updateParams[] = [
                     'id' => $store->id,
                     'asn_code' => $asnHerder->asnno,

+ 4 - 1
app/StoreItems.php

@@ -14,7 +14,7 @@ class StoreItems extends Model
     use ModelTimeFormat;
     protected $fillable=[
         'store_id','asn_line_code','name',
-        'sku','barcode','depository_id','amount','quality','status',
+        'sku','barcode','depository_id','amount','quality','status','commodity_id'
     ];
     protected $appends=[
         'store_asn_code',
@@ -27,6 +27,9 @@ class StoreItems extends Model
     public function store(){
         return $this->belongsTo('App\Store','store_id','id');
     }
+    public function commodity(){
+        return $this->hasOne('App\Commodity','id','commodity_id');
+    }
 
 
     public function getStoreASNCodeAttribute()

+ 2 - 2
app/Traits/HasCompositePrimaryKey.php

@@ -20,8 +20,8 @@ trait HasCompositePrimaryKey
     /**
      * Set the keys for a save update query.
      *
-     * @param  \Illuminate\Database\Eloquent\Builder $query
-     * @return \Illuminate\Database\Eloquent\Builder
+     * @param Builder $query
+     * @return Builder
      */
     protected function setKeysForSaveQuery(Builder $query)
     {

+ 3 - 0
app/Waybill.php

@@ -66,6 +66,9 @@ class Waybill extends Model
     public function uploadFile(){
         return $this->hasOne('App\UploadFile','table_id','id')->where('table_name','waybills');
     }
+//    public function getOrderingRemarkAttribute($val){
+//        return
+//    }
 
 
     static public function setWeightByOrderCode($orderCode,$weight){

+ 1 - 1
composer.json

@@ -81,4 +81,4 @@
             "@php artisan key:generate --ansi"
         ]
     }
-}
+}

+ 12 - 1
config/sync.php

@@ -58,5 +58,16 @@ return [
             'newest_is_running' =>  'order_newest_task_is_running',     // 同步创建任务是否在进行 true 为正在进行
             'renewal_is_running' =>  'order_renewal_task_is_running',     // 同步更新任务是否在进行 true 为正在进行
         ]
-    ]
+    ],
+    'clear_wave_order' => [
+        'enabled' => true,
+        'interval' => 10,
+        'start_at' => '',
+        'cache_prefix' => [
+            'restart' => 20,
+            'last_start_at' => 'last_clear_order_task_start_at',
+            'last_end_at' => 'last_clear_order_task_end_at',
+            'sync_at' => 'last_cancel_order_sync_at'
+        ]
+    ],
 ];

+ 23 - 0
database/factories/OracleDOCASNDetailFactory.php

@@ -0,0 +1,23 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\OracleDOCASNDetail;
+use Faker\Generator as Faker;
+
+$factory->define(OracleDOCASNDetail::class, function (Faker $faker) {
+    return [
+        'asnno' =>$faker->uuid,
+        'asnlineno' =>$faker->uuid,
+        'customerid'=>$faker->name,
+        'skudescrc'=>$faker->name,
+        'sku'=>$faker->uuid,
+        'lotatt05'=>$faker->name,
+        'lotatt08' =>'THRK', //退货入库
+        'linestatus' =>'00', //订单创建
+        'expectedqty' =>$faker->name,
+        'receivedqty' =>$faker->name,
+        'addtime' => $faker->date(),
+        'edittime' => $faker->date(),
+    ];
+});

+ 20 - 0
database/factories/OracleDOCASNHeaderFactory.php

@@ -0,0 +1,20 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\OracleDOCASNHeader;
+use Faker\Generator as Faker;
+
+$factory->define(OracleDOCASNHeader::class, function (Faker $faker) {
+    return [
+        'asnno' =>$faker->uuid,
+        'customerid'=>$faker->name,
+        'warehouseid'=>$faker->name,
+        'asntype' =>'THRK', //退货入库
+        'asnstatus' =>'00', //订单创建
+        'notes' =>$faker->name,
+        'asnreference3' =>$faker->name,
+        'addtime' => $faker->date(),
+        'edittime' => $faker->date(),
+    ];
+});

+ 16 - 0
database/factories/OracleDocWaveDetailsFactory.php

@@ -0,0 +1,16 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\Model;
+use Faker\Generator as Faker;
+
+$factory->define(\App\OracleDOCWaveDetails::class, function (Faker $faker) {
+    return [
+        'WAVENO' => $faker->name,
+        'ORDERNO' => $faker->name,
+        'LineStatus' => 0,
+        'ADDTIME' => \Illuminate\Support\Carbon::now(),
+        'EDITTIME' => \Illuminate\Support\Carbon::now(),
+    ];
+});

+ 18 - 0
database/factories/OracleDocWaveHeaderFactory.php

@@ -0,0 +1,18 @@
+<?php
+
+/** @var \Illuminate\Database\Eloquent\Factory $factory */
+
+use App\Model;
+use Faker\Generator as Faker;
+
+$factory->define(\App\OracleDOCWaveHeader::class, function (Faker $faker) {
+    return [
+        'waveno' => \Illuminate\Support\Str::random(5),
+        'addWho' => $faker->name,
+        'editWho'  => $faker->name,
+        'WaveStatus' => 40,
+        'RELEASESTATUS'=> 'a',
+        'addTime' => \Illuminate\Support\Carbon::now(),
+        'editTime' => \Illuminate\Support\Carbon::now(),
+    ];
+});

+ 18 - 25
database/factories/OrcaleDOCOrderHeaderFactory.php

@@ -7,30 +7,23 @@ use Faker\Generator as Faker;
 
 $factory->define(OracleDOCOrderHeader::class, function (Faker $faker) {
     return [
-        'orderno' => $faker->uuid,
-        'customerid' => $faker->name,
-        'waveno' => $faker->name,
-        'ordertime' =>$faker->time(),
-        'soreference1' => $faker->uuid,
-        'consigneeid' => $faker->name,
-        'c_contact' =>$faker->title(10),
-        'consigneename' => $faker->title(11),
-        'c_address1' => $faker->address,
-        'c_city' =>$faker->city,
-        'c_province' =>$faker->city,
-        'addtime' => $faker->date(),
-        'edittime' => $faker->date(),
-        'notes' => $faker->text(15),
-        'carriername'  =>'',
-        'lastshipmenttime' => $faker->date(),
-        'edisendflag' => "Y",
-        'soreference5' => $faker->uuid,
-        'c_tel2' => $faker->phoneNumber,
-        'transportation' => $faker->phoneNumber,
-        'warehouseid' => $faker->name,
-        'sostatus' => '99',
-        'c_tel1' => $faker->phoneNumber,
-        'c_district' => $faker->city,
-        'issuepartyname'=> $faker->date(),
+        'ORDERNO' =>  \Illuminate\Support\Str::random(5).'_test',
+        'CUSTOMERID' => 'test',
+        'WAVENO' => 'test'.(string)rand(0,1000),
+        'ORDERTIME' =>\Carbon\Carbon::now()->subSeconds(10),
+        'CONSIGNEEID' => 'test',
+        'ADDTIME' =>\Carbon\Carbon::now()->subSeconds(5),
+        'EDITTIME' => \Carbon\Carbon::now()->subSeconds(1),
+        'EDISENDFLAG' => 'Y',
+        'SOSTATUS' => '99',
+        'ISSUEPARTYNAME'=> 'test_issuepartyname',
+        'RELEASESTATUS' => 'N',
+        'ARCHIVEFLAG' => 'Y',
+        'CHANNEL' =>'test_CHANNEL',
+        'ALLOWSHIP' =>  'N' , //允许发运
+        'YW_EDISENDFLAG' => 'N',
+        'NOTES' => 'xx',
     ];
 });
+
+

+ 28 - 0
database/migrations/2020_12_28_160507_change_inventory_compares_quality_column.php

@@ -0,0 +1,28 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeInventoryComparesQualityColumn extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+               DB::statement("ALTER TABLE inventory_compares MODIFY COLUMN quality enum ('正品','次品','未知','有价值') default null");
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        DB::statement("ALTER TABLE inventory_compares MODIFY COLUMN quality enum ('正品','次品','未知') default null");
+    }
+}

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

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeColumnIndexAddMethodOfLogs extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('logs', function (Blueprint $table) {
+            $table->index(['created_at','method']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('logs', function (Blueprint $table) {
+            $table->dropIndex(['created_at','method']);
+        });
+    }
+}

+ 43 - 0
database/migrations/2020_12_31_115716_change_log_index_all.php

@@ -0,0 +1,43 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeLogIndexAll extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+
+
+        Schema::table('logs', function (Blueprint $table) {
+            $table->index('created_at','index_logs_created_at');
+            $table->index(['method','created_at'],'index_logs_m_c');
+            $table->index(['type','created_at'],'index_logs_t_c');
+            $table->index(['id_user','created_at'],'index_logs_i_c');
+            $table->dropIndex('index_logs_i_c');
+            $table->dropIndex('index_logs_c_c');
+            $table->dropIndex('index_logs_c_t');
+            $table->dropIndex('index_logs_c_m');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('logs', function (Blueprint $table) {
+            $table->dropIndex('index_logs_created_at');
+            $table->dropIndex('index_logs_m_c');
+            $table->dropIndex('index_logs_t_c');
+        });
+    }
+}

+ 1 - 1
package-lock.json

@@ -8845,7 +8845,7 @@
         },
         "socket.io-client": {
             "version": "2.3.0",
-            "resolved": "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.3.0.tgz",
+            "resolved": "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-2.3.0.tgz",
             "integrity": "sha1-FNW6LgC5vNFFrkQ6uWs/hsvMG7Q=",
             "requires": {
                 "backo2": "1.0.2",

+ 3 - 0
resources/js/queryForm/queryForm.js

@@ -32,6 +32,7 @@ const query = function getQueryForm(data) {
             let form = $("<form method='" + _this.method +"'></form>");
             for (const key in _data) {
                 let map = _data[key];
+                if(map['required'] == true && (map.value === '' || map.value===null || map.value === undefined))return;
                 if (["string", "number"].includes(fetchJsType(map.value)) && map.value !== '') {
                     // if(map.value){
                     //     let string = new String(map.value);
@@ -1146,6 +1147,7 @@ const query = function getQueryForm(data) {
                         data:condition.data,
                         killings:condition.killings,
                         rules:condition.rules,
+                        required:condition.required,
                     }
                     if (condition.type === 'search_select') {
                         data.mold = 'select';
@@ -1171,6 +1173,7 @@ const query = function getQueryForm(data) {
                             mold: ['input', 'dateTime'].includes(types[index]) ? 'input' : types[index],
                             killings:condition.killings,
                             rules:condition.rules,
+                            required:condition.required,
                         }
                         if(condition.killings&&Array.isArray(condition.killings)){
                             data.killings=condition.killings[index];

+ 3 - 3
resources/views/customer/project/report.blade.php

@@ -110,12 +110,12 @@
                 let data=[
                     [
                         {name:'owner_group_id',type:'select',tip:'项目小组',placeholder: '项目小组',data:this.workgroup},
-                        {name:'counting_month_start',type:'dateMonth',tip:'起始结算月'},
+                        {name:'counting_month_start',type:'dateMonth',tip:'起始结算月',placeholder: '----年--月'},
                         {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的项目'],
                             placeholder:['项目','定位或多选项目'],data:this.owners},
                     ],[
                         {name:'customer_id',type:'select',tip:'客户',placeholder: '客户',data:this.customers},
-                        {name:'counting_month_end',type:'dateMonth',tip:'结束结算月'},
+                        {name:'counting_month_end',type:'dateMonth',tip:'结束结算月',placeholder: '----年--月'},
                         {name:'status',type:'select',placeholder:'状态',data:this.status},
                     ],
                 ];
@@ -191,4 +191,4 @@
             }
         });
     </script>
-@stop
+@stop

+ 1 - 2
resources/views/inventory/statement/inventoryCompare.blade.php

@@ -199,7 +199,6 @@
                     ],
                     [
                         {name:'date_end',type:'dateTime',tip:'选择创建日期的结束时间'},
-                        {name:'custom_location',type:'input',tip:'属性仓:糊模查找需要在左边打上%符号',placeholder: '属性仓'},
                         {name: 'differ', type: 'select', placeholder: '差值', data: this.differ},
                     ],
                 ];
@@ -218,7 +217,7 @@
                     {name: 'commodity_name', value: '商品名称'},
                     {name:'commodity_sku',value: '商品编码'},
                     {name: 'commodity_barcodes', value: '商品条码', neglect: true},
-                    {name: 'custom_location', value: '属性仓', neglect: true},
+                    {name: 'amount', value: '属性仓', neglect: true},
                     {name: 'quality', value: '质量状态', neglect: true},
                     {name: 'amount_in_sys',value: '宝时库存', neglect: true},
                     {name: 'amount_in_compare', value: '参考库存', neglect: true},

+ 12 - 4
resources/views/maintenance/log/index.blade.php

@@ -64,11 +64,19 @@
             mounted: function () {
                 let data = [
                     [
-                        {name: 'operation', type: 'input', tip: '操作', placeholder: '操作'},
-                        {name: 'type', type: 'input', tip: '操作', placeholder: '类型'},
+                        {name: 'username', type: 'input', tip: '操作者', placeholder: '操作者'},
+                        {name: 'type',
+                            type: 'select_multiple_select',
+                            tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的类型'],
+                            placeholder: ['类型', '定位或多选类型'],
+                            data: [{'name': 'log', 'value': 'log'},
+                                {'name': 'warning', 'value': 'warning'},
+                                {'name': 'error', 'value': 'error'},
+                                {'name': 'panic', 'value': 'panic'},
+                                {'name': 'fatal', 'value': 'fatal'}],},
                         {name: 'description', type: 'input', tip: '详情:可在两侧添加百分号(%)进行模糊搜索', placeholder: '详情'},
-                        {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
-                        {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的截止'},
+                        {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间,只选一个或者不选,则查询当天'},
+                        {name:'created_at_end',type:'dateTime',tip:'选择显示指定日期的截止,只选一个或者不选,则查询当天'},
                         {name:'is_exception',type:'checkbox',tip:'仅显示异常', data: [{name: 'true', value: '仅显示异常'}]}
                     ]
                 ];

+ 1 - 1
resources/views/maintenance/owner/recycle.blade.php

@@ -52,7 +52,7 @@
                 restoreSelected:function(owner){
                     let _this=this;
                     confirm('确定要恢复停用货主“' + owner.name + '”吗?');
-                    let ajaxUrl='{{url("apiLocal/owner/restoreSelected")}}';
+                    let ajaxUrl='{{url("maintenance/owners/restoreSelected")}}';
                     axios.post(ajaxUrl,{id:owner.id}).then(function(response){
                         if(response.data.success){
                             tempTip.setDuration(1000);

+ 4 - 4
resources/views/order/index/delivering.blade.php

@@ -858,22 +858,22 @@
                 copyLogisticNumber(){
                     let text="";
                     this.checkData.forEach((code,i)=>{
-                        if (this.picktotraceidMap[code] && this.picktotraceidMap[code].length>1){console.log(1);
+                        if(this.picktotraceidMap[code] && this.picktotraceidMap[code].length>1){
                             this.picktotraceidMap[code].forEach((number,j)=>{
                                 text += number+"\r\n";
                             });
-                        }else{
+                        }else {
                             this.orders.some(order=>{
                                 if (order.orderno == code){
                                     if (order.soreference5) {
-                                        text += order.soreference5;
-                                        if(i!==this.checkData.length-1)text += "\r\n";
+                                        text += order.soreference5+"\r\n";
                                     }
                                     return true;
                                 }
                             });
                         }
                     });
+                    text.substring(0,text.lastIndexOf("\r\n",text));
                     if (!text)text = " ";
                     this.copyText(text)
                 },

+ 3 - 3
resources/views/order/issue/index.blade.php

@@ -257,8 +257,8 @@
                             <span v-if='orderIssue.order.logistic'>@{{ orderIssue.order.logistic.name }}</span>
                         </td>
                         <td class=" hide-content p-0 td-yellow child-layer-2" valign="middle" align="center">
-                            <span :id="'logisticNumbers'+orderIssue.id" :class="orderIssue.order.logisticNumbers.length > 1 ?'collapse ':''">
-                                <span v-for="logisticNumber in orderIssue.order.logisticNumbers" >@{{ logisticNumber }}&nbsp;&nbsp;</span>
+                            <span  :class="orderIssue.order.logisticNumbers.length > 1 ?'collapse ':''" :id="'logisticNumbers'+orderIssue.id" >
+                                <span class="m-0 p-0 d-inline-block" v-for="logisticNumber in orderIssue.order.logisticNumbers" >@{{ logisticNumber }}&nbsp;&nbsp;</span>
                             </span>
                             <button v-if="orderIssue.order.logisticNumbers.length > 1" type="button" class="btn btn-sm btn-outline-primary align-middle mt-1"
                                     :id="'logisticNumbersBtn'+orderIssue.id" data-toggle="collapse" :data-target="'#logisticNumbers'+orderIssue.id"
@@ -749,7 +749,7 @@
                         placeholder: ['货主', '定位或多选货主'],
                         data: _this.owners
                     },
-                    {name: 'client_code', type: 'input', tip: '原始订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '原始订单号'},
+                    {name: 'client_code', type: 'input', tip: '原始订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '原始订单号',required:true},
                     {name: 'logistic_number', type: 'input', tip: ['输入原始运单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索'], placeholder: '运单号'},
                     {
                         name: 'logistic_id',

+ 1 - 1
resources/views/waybill/index.blade.php

@@ -277,7 +277,7 @@
                         recipient:'{{$waybill->recipient}}',
                         recipient_mobile:'{{$waybill->recipient_mobile}}',
                         charge:'{{$waybill->charge}}',
-                        ordering_remark:'{{$waybill->ordering_remark}}',
+                        ordering_remark:'{{preg_replace("/[\n\s]/",' ',($waybill->ordering_remark??""))}}',
                         carrier:'{{$waybill->logistic ? $waybill->logistic->name : ''}}',
                         carrier_bill:'{{$waybill->carrier_bill}}',
                         origination_city:'{{$waybill->origination_city ? $waybill->origination_city->name : ''}}',

+ 1 - 1
resources/views/waybill/recycle.blade.php

@@ -146,7 +146,7 @@
                         recipient:'{{$waybill->recipient}}',
                         recipient_mobile:'{{$waybill->recipient_mobile}}',
                         charge:'{{$waybill->charge}}',
-                        ordering_remark:'{{$waybill->ordering_remark}}',
+                        ordering_remark:'{{preg_replace("/[\n\s]/",' ',($waybill->ordering_remark??""))}}',
                         carrier:'{{$waybill->carrier ? $waybill->carrier->name : ''}}',
                         carrier_bill:'{{$waybill->carrier_bill}}',
                         origination_city:'{{$waybill->origination_city ? $waybill->origination_city->name : ''}}',

+ 0 - 1
routes/apiLocal.php

@@ -7,7 +7,6 @@ use Illuminate\Support\Facades\Route;
 地址前缀:/apiLocal/
 */
 Route::post('rejected/recoverSelected', 'RejectedController@apiRecoverSelected');
-Route::post('owner/restoreSelected', 'OwnerController@restoreSelected');
 Route::post('rejectedBillItem/store', 'RejectedBillItemController@apiStore');
 Route::post('rejectedBillItem/update', 'RejectedBillItemController@apiUpdate');
 Route::post('rejectedBillItem/apiGet', 'RejectedBillItemController@apiGet');

+ 1 - 0
routes/web.php

@@ -47,6 +47,7 @@ Route::group(['prefix'=>'maintenance'],function(){
     /** 货主 */
     Route::group(['prefix'=>'owners'],function(){
         Route::get('recycle','OwnerController@recycle');
+        Route::post('restoreSelected', 'OwnerController@restoreSelected');
     });
     Route::group(['prefix'=>'owner'],function (){
         Route::post("get","OwnerController@get");

+ 0 - 2
tests/Services/BatchService/TestGetBatchByCodes.php

@@ -9,8 +9,6 @@ use Tests\TestCase;
 
 class TestGetBatchByCodes extends TestCase
 {
-//    use RefreshDatabase;
-
     /** @var BatchService $service */
     private $service;
     private $data = [];

+ 0 - 2
tests/Services/CityService/FindByNameTest.php

@@ -10,8 +10,6 @@ use Tests\TestCase;
 
 class FindByNameTest extends TestCase
 {
-    use RefreshDatabase;
-
     /** @var CityService $cityService */
     public $cityService;
 

+ 27 - 22
tests/Services/CommodityService/GetParamsByBasSkusTest.php

@@ -5,41 +5,46 @@ namespace Tests\Services\CommodityService;
 
 
 use App\OracleBasSKU;
+use App\Owner;
 use App\Services\CommodityService;
-use App\Services\OwnerService;
-use App\Store;
 use Tests\TestCase;
 
 class GetParamsByBasSkusTest extends TestCase
 {
-    /**
-     * @var CommodityService $service
-     * @var OwnerService $ownerService
-     *
-     */
+    /** @var CommodityService $service */
     public $service;
     public $bas_skus;
-    public $ownerService;
+    private $data = [];
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
-        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
+        cache()->flush();
         $this->service=app(CommodityService::class);
-        $this->ownerService=app(OwnerService::class);
-        $this->bas_skus=OracleBasSKU::query()
-            ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
-            ->where('addTime', '>=', $startDate)
-            ->orderByDesc('addtime')
-            ->get();
+        $owner =  factory(Owner::class)->create();
+        $basSKU = factory(OracleBasSKU::class)->make(['customerid'=>$owner->code,'packid'=>'STANDARD']);
+        $this->data['owner'] = $owner;
+        $this->data['basSKU'] = $basSKU;
+        $this->bas_skus=collect();
+        $this->bas_skus->add($basSKU);
+
     }
     public function testGetParamsByBasSkus(){
-        if ($this->bas_skus->isEmpty()) {
-            $this->assertEmpty($this->bas_skus);
-            $insert_params=$this->service->getParamsByBasSkus($this->bas_skus);
-            $this->assertNull($insert_params);
-        }else{
+
             $insert_params=$this->service->getParamsByBasSkus($this->bas_skus);
-            $this->assertNotNull($insert_params);
-        }
+            if ($insert_params){
+                $this->assertNotNull($insert_params);
+                $this->assertEquals($insert_params[0]['owner_id'],$this->data['owner']['id']);
+                $this->assertEquals($insert_params[0]['sku'],$this->data['basSKU']['sku']);
+                $this->assertEquals($insert_params[0]['name'],$this->data['basSKU']['descr_c']);
+            }else{
+                $this->assertNull($insert_params);
+            }
+
+    }
+
+    public function tearDown(): void
+    {
+        $this->data['owner']->delete();
+        parent::tearDown(); // TODO: Change the autogenerated stub
     }
 }

+ 24 - 14
tests/Services/CommodityService/SyncCreateCommodityByBasSkusTest.php

@@ -4,6 +4,7 @@ namespace Tests\Services\CommodityService;
 
 use App\Commodity;
 use App\OracleBasSKU;
+use App\Owner;
 use App\Services\CommodityService;
 use App\Services\OwnerService;
 use App\ValueStore;
@@ -21,10 +22,18 @@ class SyncCreateCommodityByBasSkusTest extends TestCase
     public $created_at;
     public $last_time;
     public $insert_params;
+    private $data=[];
     public function setUp(): void
     {
         parent::setUp();
+        cache()->flush();
         $this->service=app(CommodityService::class);
+        $owner =  factory(Owner::class)->create();
+        $basSKU = factory(OracleBasSKU::class)->make(['customerid'=>$owner->code,'packid'=>'STANDARD']);
+        $this->data['owner'] = $owner;
+        $this->data['basSKU'] = $basSKU;
+        $this->bas_skus=collect();
+        $this->bas_skus->add($basSKU);
     }
 
     /**
@@ -32,14 +41,14 @@ class SyncCreateCommodityByBasSkusTest extends TestCase
      */
     public function testSyncCreateCommodityByBasSkus()
     {
-        $this->created_at = config('sync.commodity_sync.created_at');
-        $this->last_time = ValueStore::query()->where('name',$this->created_at)->value('value');
-        if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
-        $this->bas_skus=OracleBasSKU::query()
-            ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
-            ->where('addTime', '>=', $this->last_time??$time)
-            ->orderByDesc('addtime')
-            ->get();
+//        $this->created_at = config('sync.commodity_sync.created_at');
+//        $this->last_time = ValueStore::query()->where('name',$this->created_at)->value('value');
+//        if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
+//        $this->bas_skus=OracleBasSKU::query()
+//            ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
+//            ->where('addTime', '>=', $this->last_time??$time)
+//            ->orderByDesc('addtime')
+//            ->get();
         $this->insert_params=$this->service->getParamsByBasSkus($this->bas_skus);
         $this->service->syncCreateCommodity($this->bas_skus);
         if ($this->insert_params) $this->assertNotNull($this->insert_params);
@@ -49,12 +58,13 @@ class SyncCreateCommodityByBasSkusTest extends TestCase
 
     public function tearDown(): void
     {
-        ValueStore::query()->updateOrCreate([
-            'name' => $this->created_at,
-        ], [
-            'name' => $this->created_at,
-            'value' => $this->last_time,
-        ]);
+//        ValueStore::query()->updateOrCreate([
+//            'name' => $this->created_at,
+//        ], [
+//            'name' => $this->created_at,
+//            'value' => $this->last_time,
+//        ]);
+        $this->data['owner']->delete();
         $sku=[];
         $owner_id=[];
         if (!$this->insert_params) return;

+ 25 - 15
tests/Services/CommodityService/SyncUpdateCommodityBasSkusTest.php

@@ -4,6 +4,7 @@ namespace Tests\Services\CommodityService;
 
 use App\Commodity;
 use App\OracleBasSKU;
+use App\Owner;
 use App\Services\CommodityService;
 use App\Services\common\DataHandlerService;
 use App\Services\OwnerService;
@@ -22,10 +23,18 @@ class SyncUpdateCommodityBasSkusTest extends TestCase
     public $updated_at;
     public $last_time;
     public $commodities;
+    private $data=[];
     public function setUp(): void
     {
         parent::setUp();
+        cache()->flush();
         $this->service=app(CommodityService::class);
+        $owner =  factory(Owner::class)->create();
+        $basSKU = factory(OracleBasSKU::class)->make(['customerid'=>$owner->code,'packid'=>'STANDARD']);
+        $this->data['owner'] = $owner;
+        $this->data['basSKU'] = $basSKU;
+        $this->bas_skus=collect();
+        $this->bas_skus->add($basSKU);
     }
 
     /**
@@ -33,15 +42,15 @@ class SyncUpdateCommodityBasSkusTest extends TestCase
      */
     public function testSyncCommodityUpdated()
     {
-        $this->updated_at = config('sync.commodity_sync.updated_at');
-        $this->last_time = ValueStore::query()->where('name',$this->updated_at)->value('value');
-        if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
-        $this->bas_skus= OracleBasSKU::query()
-            ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
-            ->where('EditTime', '>=', $this->last_time??$time)
-            ->whereColumn('EditTime', '<>', 'addTime')
-            ->orderByDesc('EditTime')
-            ->get();
+//        $this->updated_at = config('sync.commodity_sync.updated_at');
+//        $this->last_time = ValueStore::query()->where('name',$this->updated_at)->value('value');
+//        if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
+//        $this->bas_skus= OracleBasSKU::query()
+//            ->select('customerid','sku','descr_c','alternate_sku1','alternate_sku2','alternate_sku3','skulength','skuwidth','skuhigh','cube','packid','addtime','edittime')
+//            ->where('EditTime', '>=', $this->last_time??$time)
+//            ->whereColumn('EditTime', '<>', 'addTime')
+//            ->orderByDesc('EditTime')
+//            ->get();
         $this->service->syncUpdateCommodity($this->bas_skus);
 
         $owner_sku_map = [];
@@ -84,12 +93,13 @@ class SyncUpdateCommodityBasSkusTest extends TestCase
 
     public function tearDown(): void
     {
-        ValueStore::query()->updateOrCreate([
-            'name' => $this->updated_at,
-        ], [
-            'name' => $this->updated_at,
-            'value' => $this->last_time,
-        ]);
+//        ValueStore::query()->updateOrCreate([
+//            'name' => $this->updated_at,
+//        ], [
+//            'name' => $this->updated_at,
+//            'value' => $this->last_time,
+//        ]);
+        $this->data['owner']->delete();
         $commodityIds=[];
         foreach ($this->commodities as $commodity){
             array_push($commodityIds,$commodity->id);

+ 0 - 2
tests/Services/LogisticService/GetLogisticByCodeTest.php

@@ -10,8 +10,6 @@ use Tests\TestCase;
 
 class GetLogisticByCodeTest extends TestCase
 {
-    use RefreshDatabase;
-
     /** @var LogisticService $service */
     private $service;
     private $data = [];

+ 0 - 2
tests/Services/LogisticService/GetLogisticByCodesTest.php

@@ -11,8 +11,6 @@ use Tests\TestCase;
 
 class GetLogisticByCodesTest extends TestCase
 {
-    use RefreshDatabase;
-
     /** @var LogisticService $service */
     private $service;
     private $data;

+ 0 - 2
tests/Services/LogisticTimingService/FindByParamsTest.php

@@ -11,8 +11,6 @@ use Tests\TestCase;
 
 class FindByParamsTest extends TestCase
 {
-    use RefreshDatabase;
-
     /**
      * @var LogisticTimingService $logisticTimingService
      */

+ 2 - 1
tests/Services/NewOrderCountingRecordService/OrderCountingRecordsTest.php

@@ -33,7 +33,8 @@ class OrderCountingRecordsTest extends TestCase
         parent::setUp(); // TODO: Change the autogenerated stub
         cache()->flush();
         $this->newOrderCountingRecordService = new NewOrderCountingRecordService();
-        $this->actingAs(factory(User::class)->create(['name' => 'yang']));
+        $user = User::query()->where('name', 'yang')->first();
+        $this->actingAs($user);
         $owners = factory(Owner::class)->times(2)->create();
         $this->ownerIds = array_column($owners->toArray(), 'id');
         $this->queryConditionDay = $this->newOrderCountingRecordService->transfersToCondition(Carbon::now()->subDays($this->step_length)->toDateString(), Carbon::now()->toDateString(), '日', $this->ownerIds);

+ 2 - 1
tests/Services/NewOrderCountingRecordService/TransfersToConditionsTest.php

@@ -22,7 +22,8 @@ class TransfersToConditionsTest extends TestCase
         parent::setUp(); // TODO: Change the autogenerated stub
         cache()->flush();
         $this->newOrderCountingRecordService = new NewOrderCountingRecordService();
-        $this->actingAs(factory(User::class)->create(['name' => 'yang']));
+        $user = User::query()->where('name', 'yang')->first();
+        $this->actingAs($user);
         $this->data['dates'] = [
             'right'=>[
                 ['startAt'=>Carbon::now()->subDays(2),'endAt'=>Carbon::now()->addDays(2)],

+ 0 - 1
tests/Services/OracleDOCOrderHeaderService/GetWMSOrderOnEditDateTest.php

@@ -12,7 +12,6 @@ use Tests\TestCase;
 
 class GetWMSOrderOnEditDateTest extends TestCase
 {
-    use RefreshDatabase;
     /** @var OracleDOCOrderHeaderService $service */
     private $service;
 

+ 0 - 1
tests/Services/OracleDOCOrderHeaderService/GetWMSOrderOnStartDateTest.php

@@ -12,7 +12,6 @@ use Tests\TestCase;
 
 class GetWMSOrderOnStartDateTest extends TestCase
 {
-    use RefreshDatabase;
     /** @var OracleDOCOrderHeaderService $service */
     public $service;
 

+ 0 - 2
tests/Services/OracleDOCOrderHeaderService/GetWmsOrderOnStartDateEditTest.php

@@ -12,8 +12,6 @@ use Tests\TestCase;
 
 class GetWmsOrderOnStartDateEditTest extends TestCase
 {
-    use RefreshDatabase;
-
     /** @var OracleDOCOrderHeaderService $service */
     public $service;
 

+ 0 - 1
tests/Services/OracleDOCOrderHeaderService/GetWmsOrderOnstartDateCreateTest.php

@@ -13,7 +13,6 @@ use Tests\TestCase;
 
 class GetWmsOrderOnstartDateCreateTest extends TestCase
 {
-    use RefreshDatabase;
     /** @var OracleDOCOrderHeaderService $service */
     public $service;
 

+ 0 - 2
tests/Services/OrderCommodityService/GetReGroupActAllocationDetailsTest.php

@@ -12,8 +12,6 @@ use Tests\TestCase;
 
 class GetReGroupActAllocationDetailsTest extends TestCase
 {
-//    use RefreshDatabase;
-
     /** @var OrderCommodityService  $service */
     private $service;
     private $data;

+ 0 - 2
tests/Services/OrderCommodityService/SyncOrderCommodityTest.php

@@ -17,8 +17,6 @@ use Tests\TestCase;
 
 class SyncOrderCommodityTest extends TestCase
 {
-//    use RefreshDatabase;
-
     /** @var OrderCommodityService $service */
     private $service;
     private $data = [];

+ 0 - 1
tests/Services/OrderIssueService/GetRecycleBinPaginateTest.php

@@ -9,7 +9,6 @@ use Tests\TestCase;
 
 class GetRecycleBinPaginateTest extends TestCase
 {
-    use RefreshDatabase;
     /**
      * @var OrderIssueService $service
      */

+ 0 - 1
tests/Services/OrderIssueService/OrderIssueTagTest.php

@@ -13,7 +13,6 @@ use Tests\TestCase;
 
 class OrderIssueTagTest extends TestCase
 {
-    use RefreshDatabase;
     /** @var OrderIssueService $service */
     public $service;
     public function setUp(): void

+ 0 - 1
tests/Services/OrderIssueService/RecoverOrderIssueTest.php

@@ -10,7 +10,6 @@ use Tests\TestCase;
 
 class RecoverOrderIssueTest extends TestCase
 {
-    use RefreshDatabase;
     /**
      * @var OrderIssueService $service
      */

+ 0 - 2
tests/Services/OrderPackageCommoditiesService/RegroupOrderCommoditiesTest.php

@@ -20,8 +20,6 @@ use Tests\TestCase;
 
 class RegroupOrderCommoditiesTest extends TestCase
 {
-    use RefreshDatabase;
-
     /**
      * @var OrderPackageCommoditiesService $service
      */

+ 14 - 21
tests/Services/StoreItemService/GetAsnDetailsByAsnHerderTest.php

@@ -4,12 +4,16 @@
 namespace Tests\Services\StoreItemService;
 
 
+use App\OracleBasCode;
+use App\OracleDOCASNDetail;
 use App\OracleDOCASNHeader;
+use App\Owner;
 use App\Services\OwnerService;
 use App\Services\StoreItemService;
 use App\Services\StoreService;
 use App\Services\WarehouseService;
 use App\Store;
+use App\Warehouse;
 use Carbon\Carbon;
 use Tests\TestCase;
 
@@ -23,33 +27,22 @@ class GetAsnDetailsByAsnHerderTest extends TestCase
      */
     public $service;
     public $asnHeaders;
-    public $asnHeadersEdit;
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
-        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
         $this->service=app(StoreItemService::class);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->where('addTime', '>=', $startDate)
-            ->get();
-        $this->asnHeadersEdit=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->where('EditTime', '>=',  $startDate)
-            ->whereColumn('EditTime', '<>', 'addTime')
-            ->get();
+        $this->asnHeaders=collect();
+        $asnHeader=OracleDOCASNHeader::query()->with('asnDetails')->first();
+        if (count($asnHeader->asnDetails)>0)$this->asnHeaders->add($asnHeader);
+
     }
     public function testGetAsnDetailsByAsnHerder(){
         ini_set('memory_limit','512M');
-        if (empty($this->asnHeaders))return null;
-        $asnDetails=$this->service->getAsnDetailsByAsnHerder($this->asnHeaders);
-        $this->assertNotEmpty($asnDetails);
-        if (empty($this->asnDetailsEdit))return null;
-        $asnDetailsEdit=$this->service->getAsnDetailsByAsnHerder($this->asnHeadersEdit);
-        $this->assertNotEmpty($asnDetailsEdit);
+        if (count($this->asnHeaders)<1)  {
+            $this->assertEquals(0,count($this->asnHeaders));
+        }else{
+            $asnDetails=$this->service->getAsnDetailsByAsnHerder($this->asnHeaders);
+            $this->assertNotEmpty($asnDetails);
+        }
     }
 }

+ 26 - 9
tests/Services/StoreItemService/GetByWmsTest.php

@@ -4,13 +4,14 @@
 namespace Tests\Services\StoreItemService;
 
 
+use App\OracleBasCode;
 use App\OracleDOCASNHeader;
+use App\Owner;
 use App\Services\OwnerService;
 use App\Services\StoreItemService;
 use App\Services\StoreService;
 use App\Services\WarehouseService;
-use App\Store;
-use Carbon\Carbon;
+use App\Warehouse;
 use Tests\TestCase;
 
 class GetByWmsTest extends TestCase
@@ -23,17 +24,27 @@ class GetByWmsTest extends TestCase
      */
     public $service;
     public $asnHeaders;
+    private $data=[];
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
-        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
         $this->service=app(StoreItemService::class);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->where('addTime', '>=',$startDate)
-            ->get();
+        $this->data['warehouse']  = factory(Warehouse::class)->create(['code'=>'test_wh']);
+        $this->data['owner'] = factory(Owner::class)->create(['code'=>'test_owner','name'=>'测试货主']);
+        $wmsAsnHeader = factory(OracleDOCASNHeader::class)->make([
+            'customerid'=>'test_owner','warehouseid'=>'test_wh','asntype'=>'CSRK','asnstatus'=>'11',
+        ]);
+        $asnType  = factory(OracleBasCode::class)->make(['codeid'=>'ASN_TYP','code'=>'CSRK','descr_c'=>'测试入库']);
+        $asnStatus = factory(OracleBasCode::class)->make(['code'=>'11', 'codeid'=>'ASN_STS', 'codename_c'=>'测试状态']);
+        $wmsAsnHeader->setRelation('asnType',$asnType);
+        $wmsAsnHeader->setRelation('asnStatus',$asnStatus);
+        $this->asnHeaders=collect();
+        $this->asnHeaders->add($wmsAsnHeader);
+//        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(30);
+//        $this->asnHeaders=OracleDOCASNHeader::query()
+//            ->with(['asnType', 'asnStatus'])
+//            ->where('addTime', '>=',$startDate)
+//            ->get();
     }
     public function testGetParamsByAsnHeader()
     {
@@ -48,4 +59,10 @@ class GetByWmsTest extends TestCase
         }
 
     }
+    public function tearDown(): void
+    {
+        $this->data['owner']->delete();
+        $this->data['warehouse']->delete();
+        parent::tearDown(); // TODO: Change the autogenerated stub
+    }
 }

+ 2 - 4
tests/Services/StoreItemService/GetParamsByAsnDetailsTest.php

@@ -27,11 +27,9 @@ class GetParamsByAsnDetailsTest extends TestCase
     {
         parent::setUp(); // TODO: Change the autogenerated stub
         $this->service=app(StoreItemService::class);
-        $startDate = \Illuminate\Support\Carbon::now()->setSeconds(300);
+        $startDate = \Illuminate\Support\Carbon::now()->setSeconds(30);
         $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
+            ->with(['asnType', 'asnStatus'])
             ->where('addTime', '>=', $startDate)
             ->get();
     }

+ 37 - 10
tests/Services/StoreService/CreateStoreTest.php

@@ -4,31 +4,39 @@
 namespace Tests\Services\StoreService;
 
 
+use App\OracleBasCode;
+use App\OracleDOCASNDetail;
 use App\OracleDOCASNHeader;
+use App\Owner;
+use App\Services\CommodityService;
 use App\Services\StoreService;
-use Carbon\Carbon;
-use Illuminate\Foundation\Testing\RefreshDatabase;
+use App\Warehouse;
 use Illuminate\Support\Facades\DB;
 use Tests\TestCase;
 
 class CreateStoreTest extends TestCase
 {
-//    use RefreshDatabase;
     /** @var StoreService $service */
     public $service;
     public $asnHeaders;
     public $stores;
+    private $data=[];
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
-        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
+        cache()->flush();
         $this->service=app(StoreService::class);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->where('addTime', '>=', $startDate)
-            ->get();
+        $this->data['warehouse']  = factory(Warehouse::class)->create(['code'=>'test_wh']);
+        $this->data['owner'] = factory(Owner::class)->create(['code'=>'test_owner','name'=>'测试货主']);
+        $wmsAsnHeader = factory(OracleDOCASNHeader::class)->make([
+            'customerid'=>'test_owner','warehouseid'=>'test_wh','asntype'=>'CSRK','asnstatus'=>'11',
+        ]);
+        $asnType  = factory(OracleBasCode::class)->make(['codeid'=>'ASN_TYP','code'=>'CSRK','descr_c'=>'测试入库']);
+        $asnStatus = factory(OracleBasCode::class)->make(['code'=>'11', 'codeid'=>'ASN_STS', 'codename_c'=>'测试状态']);
+        $wmsAsnHeader->setRelation('asnType',$asnType);
+        $wmsAsnHeader->setRelation('asnStatus',$asnStatus);
+        $this->asnHeaders=collect();
+        $this->asnHeaders->add($wmsAsnHeader);
     }
     public function testCreateStore(){
         if (!$this->asnHeaders) return null;
@@ -39,10 +47,29 @@ class CreateStoreTest extends TestCase
     }
     public function tearDown(): void
     {
+        $this->data['warehouse']->delete();
+        $this->data['owner']->delete();
         $storeIds=[];
         foreach ($this->stores as $store){
             array_push($storeIds,$store->id);
         }
+        $asnDetails=OracleDOCASNDetail::query()->whereIn('asnno',data_get($this->asnHeaders,'*.asnno'))->get();
+        $maps = [];
+        foreach ($asnDetails as $asnDetail) {
+            $value = [
+                'owner_code' => $asnDetail->customerid,
+                'sku' => $asnDetail->sku,
+            ];
+            $maps[json_encode($value)] = $value;
+        }
+        /** CommodityService $commodityService */
+        $commodityService=app(CommodityService::class);
+        $commodities=$commodityService->getCommoditiesByMaps($maps);
+        $commodity_ids=[];
+        foreach ($commodities as $commodity){
+            array_push($commodity_ids,$commodity->id);
+        }
+        DB::table('commodities')->whereIn('id',$commodity_ids)->delete();
         DB::table('stores')->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->delete();
         DB::table('store_items')->whereIn('store_id',$storeIds)->delete();
         cache()->flush();

+ 35 - 11
tests/Services/StoreService/GetParamsByAsnHeaderTest.php

@@ -4,11 +4,14 @@
 namespace Tests\Services\StoreService;
 
 
+use App\OracleBasCode;
 use App\OracleDOCASNHeader;
+use App\Owner;
 use App\Services\OwnerService;
 use App\Services\StoreService;
 use App\Services\WarehouseService;
 use App\Store;
+use App\Warehouse;
 use Carbon\Carbon;
 use Tests\TestCase;
 
@@ -24,31 +27,45 @@ class GetParamsByAsnHeaderTest extends TestCase
     public $asnHeaders;
     public $ownerService;
     public $warehouseService;
+    private $data=[];
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
-        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
+        cache()->flush();
         $this->service=app(StoreService::class);
         $this->ownerService=app(OwnerService::class);
         $this->warehouseService=app(WarehouseService::class);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->where('addTime', '>=', $startDate)
-            ->get();
+        $this->data['warehouse']  = factory(Warehouse::class)->create(['code'=>'test_wh']);
+        $this->data['owner'] = factory(Owner::class)->create(['code'=>'test_owner','name'=>'测试货主']);
+        $wmsAsnHeader = factory(OracleDOCASNHeader::class)->make([
+            'customerid'=>'test_owner','warehouseid'=>'test_wh','asntype'=>'CSRK','asnstatus'=>'11',
+        ]);
+        $asnType  = factory(OracleBasCode::class)->make(['codeid'=>'ASN_TYP','code'=>'CSRK','descr_c'=>'测试入库']);
+        $asnStatus = factory(OracleBasCode::class)->make(['code'=>'11', 'codeid'=>'ASN_STS', 'codename_c'=>'测试状态']);
+        $wmsAsnHeader->setRelation('asnType',$asnType);
+        $wmsAsnHeader->setRelation('asnStatus',$asnStatus);
+        $this->asnHeaders=collect();
+        $this->asnHeaders->add($wmsAsnHeader);
     }
     public function testGetParamsByAsnHeader(){
         if (empty($this->asnHeaders))return null;
         $stores = Store::query()->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->get();
-        $owners=$this->ownerService->getByWmsOrders($this->asnHeaders);
-        $warehouses=$this->warehouseService->getByWmsOrders($this->asnHeaders);
+        $owner_codes = [];
+        $warehouse_codes = [];
+        foreach ($this->asnHeaders as $asnHerder) {
+            if (!empty($asnHerder['customerid']))
+                $owner_codes[$asnHerder['customerid']] = $asnHerder['customerid'];
+            if (!empty($asnHerder['warehouseid']))
+                $warehouse_codes[$asnHerder['warehouseid']] = $asnHerder['warehouseid'];
+        }
+        $owners = $this->ownerService->getOwnerByCodes($owner_codes);
+        $warehouses = $this->warehouseService->getWareHouseByCodes($warehouse_codes);
         $this->assertNotEmpty($this->asnHeaders);
-        $this->assertNotEmpty($owners);
-        $this->assertNotEmpty($warehouses);
+        $owners_code_map=[];
         foreach ($owners as $owner) {
             $owners_code_map[$owner->code] = $owner;
         }
+        $warehouses_code_map=[];
         foreach ($warehouses as $warehouse) {
             $warehouses_code_map[$warehouse->code] = $warehouse;
         }
@@ -57,4 +74,11 @@ class GetParamsByAsnHeaderTest extends TestCase
             $this->assertNotEmpty($params);
         }
     }
+    public function tearDown(): void
+    {
+        $this->data['warehouse']->delete();
+        $this->data['owner']->delete();
+        cache()->flush();
+        parent::tearDown(); // TODO: Change the autogenerated stub
+    }
 }

+ 0 - 81
tests/Services/StoreService/SyncStoreCreateByWmsTest.php

@@ -1,81 +0,0 @@
-<?php
-
-namespace Tests\Services\StoreService;
-
-use App\Logistic;
-use App\OracleDOCASNHeader;
-use App\Owner;
-use App\Services\common\DataHandlerService;
-use App\Services\LogisticService;
-use App\OracleDOCOrderHeader;
-use App\Services\OracleDOCOrderHeaderService;
-use App\Services\OrderService;
-use App\Services\OwnerService;
-use App\Services\ShopService;
-use App\Services\StoreService;
-use App\Services\WarehouseService;
-use App\Shop;
-use App\ValueStore;
-use App\Warehouse;
-use Carbon\Carbon;
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
-use Illuminate\Support\Facades\DB;
-use Tests\TestCase;
-
-class SyncStoreCreateByWmsTest extends TestCase
-{
-    /**
-     * @var StoreService $service
-     */
-    public $service;
-    public $stores;
-    public $asnHeaders;
-    public $created_at;
-    public $last_time;
-    public function setUp(): void
-    {
-        parent::setUp();
-        $this->service=app(StoreService::class);
-    }
-
-    /**
-     * @test
-     */
-    public function testStoreCreateByWms()
-    {
-        $this->created_at = config('sync.asn_sync.created_at');
-        $this->last_time = ValueStore::query()->where('name',$this->created_at)->value('value');
-        if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->select('asnno','asnstatus','asntype','addtime','edittime','customerid','notes','warehouseid','asnreference3')
-            ->where('addTime', '>=',  $this->last_time??$time)
-            ->orderByDesc('addtime')
-            ->get();
-        $this->service->storeCreateByWms();
-        $this->stores = $this->service->getByWms($this->asnHeaders);
-        $this->assertNotNull($this->stores);
-        $this->assertEquals(count($this->asnHeaders),count($this->stores));
-    }
-
-    public function tearDown(): void
-    {
-        ValueStore::query()->updateOrCreate([
-            'name' => $this->created_at,
-        ], [
-            'name' => $this->created_at,
-            'value' => $this->last_time,
-        ]);
-        $storeIds=[];
-        foreach ($this->stores as $store){
-            array_push($storeIds,$store->id);
-        }
-        DB::table('stores')->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->delete();
-        DB::table('store_items')->whereIn('store_id',$storeIds)->delete();
-        cache()->flush();
-        parent::tearDown(); // TODO: Change the autogenerated stub
-    }
-}

+ 0 - 82
tests/Services/StoreService/SyncStoreUpdateByWmsTest.php

@@ -1,82 +0,0 @@
-<?php
-
-namespace Tests\Services\StoreService;
-
-use App\Logistic;
-use App\OracleDOCASNHeader;
-use App\Owner;
-use App\Services\common\DataHandlerService;
-use App\Services\LogisticService;
-use App\OracleDOCOrderHeader;
-use App\Services\OracleDOCOrderHeaderService;
-use App\Services\OrderService;
-use App\Services\OwnerService;
-use App\Services\ShopService;
-use App\Services\StoreService;
-use App\Services\WarehouseService;
-use App\Shop;
-use App\ValueStore;
-use App\Warehouse;
-use Carbon\Carbon;
-use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
-use Illuminate\Support\Facades\DB;
-use Tests\TestCase;
-
-class SyncStoreUpdateByWmsTest extends TestCase
-{
-    /**
-     * @var StoreService $service
-     */
-    public $service;
-    public $stores;
-    public $asnHeaders;
-    public $update_at;
-    public $last_time;
-    public function setUp(): void
-    {
-        parent::setUp();
-        $this->service=app(StoreService::class);
-    }
-
-    /**
-     * @test
-     */
-    public function testStoreUpdateByWms()
-    {
-        $this->update_at = config('sync.asn_sync.updated_at');
-        $this->last_time = ValueStore::query()->where('name',$this->update_at)->value('value');
-        if (!$this->last_time) $time=Carbon::now()->subSeconds(65);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->select('asnno','asnstatus','asntype','addtime','edittime','customerid','notes','warehouseid','asnreference3')
-            ->where('EditTime', '>=', $this->last_time ?? $time)
-            ->whereColumn('EditTime', '<>', 'addTime')
-            ->orderByDesc('EditTime')
-            ->get();
-        $this->service->storeUpdateByWms();
-        $this->stores = $this->service->getByWms($this->asnHeaders);
-        $this->assertNotNull($this->stores);
-        $this->assertEquals(count($this->asnHeaders),count($this->stores));
-    }
-
-    public function tearDown(): void
-    {
-        ValueStore::query()->updateOrCreate([
-            'name' => $this->update_at,
-        ], [
-            'name' => $this->update_at,
-            'value' => $this->last_time,
-        ]);
-        $storeIds=[];
-        foreach ($this->stores as $store){
-            array_push($storeIds,$store->id);
-        }
-        DB::table('stores')->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->delete();
-        DB::table('store_items')->whereIn('store_id',$storeIds)->delete();
-        cache()->flush();
-        parent::tearDown(); // TODO: Change the autogenerated stub
-    }
-}

+ 37 - 9
tests/Services/StoreService/UpdateStoreTest.php

@@ -4,9 +4,13 @@
 namespace Tests\Services\StoreService;
 
 
+use App\OracleBasCode;
+use App\OracleDOCASNDetail;
 use App\OracleDOCASNHeader;
+use App\Owner;
+use App\Services\CommodityService;
 use App\Services\StoreService;
-use Carbon\Carbon;
+use App\Warehouse;
 use Illuminate\Support\Facades\DB;
 use Tests\TestCase;
 
@@ -16,18 +20,23 @@ class UpdateStoreTest extends TestCase
     public $service;
     public $asnHeaders;
     public $stores;
+    private $data=[];
     public function setUp(): void
     {
         parent::setUp(); // TODO: Change the autogenerated stub
-        $startDate = \Illuminate\Support\Carbon::now()->subSeconds(300);
+        cache()->flush();
         $this->service=app(StoreService::class);
-        $this->asnHeaders=OracleDOCASNHeader::query()
-            ->with(['asnType', 'asnStatus', 'asnDetails' => function ($query) {
-                $query->with(['lineStatus', 'qualityStatus','basSku']);
-            }])
-            ->where('EditTime', '>=', $startDate)
-            ->whereColumn('EditTime', '<>', 'addTime')
-            ->get();
+        $this->data['warehouse']  = factory(Warehouse::class)->create(['code'=>'test_wh']);
+        $this->data['owner'] = factory(Owner::class)->create(['code'=>'test_owner','name'=>'测试货主']);
+        $wmsAsnHeader = factory(OracleDOCASNHeader::class)->make([
+            'customerid'=>'test_owner','warehouseid'=>'test_wh','asntype'=>'CSRK','asnstatus'=>'11',
+        ]);
+        $asnType  = factory(OracleBasCode::class)->make(['codeid'=>'ASN_TYP','code'=>'CSRK','descr_c'=>'测试入库']);
+        $asnStatus = factory(OracleBasCode::class)->make(['code'=>'11', 'codeid'=>'ASN_STS', 'codename_c'=>'测试状态']);
+        $wmsAsnHeader->setRelation('asnType',$asnType);
+        $wmsAsnHeader->setRelation('asnStatus',$asnStatus);
+        $this->asnHeaders=collect();
+        $this->asnHeaders->add($wmsAsnHeader);
     }
     public function testUpdateStore(){
         if (!$this->asnHeaders) {
@@ -40,11 +49,30 @@ class UpdateStoreTest extends TestCase
     }
     public function tearDown(): void
     {
+        $this->data['warehouse']->delete();
+        $this->data['owner']->delete();
         $storeIds=[];
         foreach ($this->stores as $store){
             array_push($storeIds,$store->id);
         }
+        $asnDetails=OracleDOCASNDetail::query()->whereIn('asnno',data_get($this->asnHeaders,'*.asnno'))->get();
+        $maps = [];
+        foreach ($asnDetails as $asnDetail) {
+            $value = [
+                'owner_code' => $asnDetail->customerid,
+                'sku' => $asnDetail->sku,
+            ];
+            $maps[json_encode($value)] = $value;
+        }
+        /** CommodityService $commodityService */
+        $commodityService=app(CommodityService::class);
+        $commodities=$commodityService->getCommoditiesByMaps($maps);
+        $commodity_ids=[];
+        foreach ($commodities as $commodity){
+            array_push($commodity_ids,$commodity->id);
+        }
         DB::table('stores')->whereIn('asn_code',data_get($this->asnHeaders,'*.asnno'))->delete();
+        DB::table('commodities')->whereIn('id',$commodity_ids)->delete();
         DB::table('store_items')->whereIn('store_id',$storeIds)->delete();
         cache()->flush();
         parent::tearDown(); // TODO: Change the autogenerated stub

+ 0 - 2
tests/Unit/CustomerLogTest.php

@@ -8,8 +8,6 @@ use Tests\TestCase;
 
 class CustomerLogTest extends TestCase
 {
-    use RefreshDatabase;
-
     /**
      * @test
      */