Просмотр исходного кода

Merge branch '包裹唯一_及对应处理' into zengjun

# Conflicts:
#	app/Http/Controllers/TestController.php
ajun 4 лет назад
Родитель
Сommit
7c26db48d7

+ 49 - 186
app/Http/Controllers/TestController.php

@@ -2,38 +2,20 @@
 
 namespace App\Http\Controllers;
 
-
 use App\Authority;
 use App\Batch;
-use App\Carrier;
-use App\CarType;
 use App\City;
 use App\Commodity;
-use App\CommodityBarcode;
 use App\Console\Commands\CreateOwnerAreaReport;
 use App\Console\Commands\CreateOwnerBillReport;
 use App\Console\Commands\CreateOwnerReport;
-use App\Console\Commands\SyncBatchTask;
-use App\Console\Commands\SyncWmsCommoditiesInformation;
-use App\Console\Commands\SyncWMSOrderTask;
 use App\Console\Commands\WasSyncWmsAsnInformation;
-use App\DeliveryAppointment;
-use App\Events\BroadcastToStation;
-use App\DeliveryAppointmentCar;
-use App\Events\DeliveryAppointmentEvent;
-use App\Exceptions\ErrorException;
-use App\Events\CancelOrder;
 use App\Events\SendEmailEvent;
 use App\Exceptions\Exception;
 use App\Feature;
 use App\Http\Controllers\api\thirdPart\haiq\PickStationController;
 use App\Http\Controllers\api\thirdPart\hengli\PackageController;
 use App\Http\Controllers\api\thirdPart\weight\WeightBaseController;
-use App\Http\Requests\ForeignHaiRobotic_taskUpdateRequest;
-use App\Http\Requests\TestAaRequest;
-use App\Imports\OrderTrackingImport;
-use App\InventoryAccount;
-use App\Jobs\BatchTaskJob;
 use App\Jobs\DeleteRepetitionSkuItem;
 use App\Jobs\LogisticYTOSync;
 use App\Jobs\OrderCreateInstantBill;
@@ -49,16 +31,7 @@ use App\MeasuringMachine;
 use App\Menu;
 use App\Notifications\SendEmailNotification;
 use App\OracleActAllocationDetails;
-use App\OracleBasCustomer;
-use App\OracleBasSKU;
 use App\OracleDOCASNHeader;
-use App\OracleDOCOrderDetail;
-use App\OracleDOCOrderHeader;
-use App\OracleDocOrderPackingSummary;
-use App\OracleDocOrderSerialNo;
-use App\OracleDOCWaveDetails;
-use App\OracleDOCWaveHeader;
-use App\OracleInvLotLocId;
 use App\Order;
 use App\OrderBin;
 use App\OrderCommodity;
@@ -66,43 +39,20 @@ use App\OrderIssue;
 use App\OrderPackage;
 use App\Owner;
 use App\OwnerAreaReport;
-use App\OwnerBillReport;
-use App\OwnerFeeDetail;
-use App\OwnerFeeDetailLogistic;
 use App\OwnerMaterial;
-use App\OwnerPriceExpress;
-use App\OwnerPriceOperation;
-use App\OwnerPriceOperationItem;
-use App\OwnerPriceSystem;
-use App\OwnerReport;
-use App\OwnerStoragePriceModel;
 use App\Package;
-use App\Process;
-use App\ProcessDaily;
-use App\ProcessStatistic;
 use App\Procurement;
 use App\ProcurementCheckSheet;
 use App\ProcurementDeliverie;
 use App\ProcurementQuotation;
 use App\ProcurementTotalBill;
-use App\Province;
-use App\Region;
-use App\RejectedBill;
 use App\RejectedBillItem;
 use App\Services\CacheService;
 use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
-use App\Services\common\QueryService;
-use App\Services\DocWaveHeaderService;
-use App\Services\FeatureService;
-use App\Services\InventoryCompareService;
-use App\Services\LogisticService;
 use App\Services\LogisticZopService;
 use App\Services\LogService;
-use App\Services\OracleActAllocationDetailService;
-use App\Services\OracleBasSkuService;
-use App\Services\OracleDocAsnHerderService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OracleDocWaveDetailService;
 use App\Services\OrderCommodityService;
@@ -110,60 +60,20 @@ use App\Services\OrderPackageExceptionTypeCountingRecordService;
 use App\Services\OrderPackageReceivedSyncService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
-use App\Services\OrderTrackingOwnerService;
 use App\Services\OrderTrackingService;
-use App\Services\OwnerPriceOperationService;
-use App\Services\OwnerService;
-use App\Services\ProcurementService;
-use App\Services\RegionService;
 use App\Services\RejectedBillService;
-use App\Services\ShopService;
 use App\Services\StoreService;
 use App\Services\SupplierService;
-use App\Services\WarehouseService;
-use App\Station;
-use App\StationRuleBatch;
-use App\StationTask;
-use App\StationTaskMaterialBox;
-use App\StationType;
 use App\Store;
 use App\StationTaskBatch;
-use App\StoreCheckingReceiveItem;
 use App\StoreItem;
-use App\StoreItems;
-use App\Supplier;
-use App\Traits\ModelLogChanging;
-use App\Unit;
-use App\User;
 use App\UserDetail;
 use App\UserDutyCheck;
 use App\ValueStore;
-use App\Warehouse;
-use App\Waybill;
-use App\WaybillPriceModel;
 use Carbon\Carbon;
-use Carbon\CarbonPeriod;
-use ChangeColumnOrderIdToOrderIssues;
-use Doctrine\DBAL\Exception\DatabaseObjectExistsException;
-use Doctrine\DBAL\Query\QueryBuilder;
-use Illuminate\Database\Connection;
-use Illuminate\Database\Eloquent\Builder;
-use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\QueryException;
-use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
 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;
-use Mockery\Mock;
-use Overtrue\LaravelPinyin\Facades\Pinyin;
-use PhpMyAdmin\Server\Status\Data;
-use Ramsey\Collection\Collection;
 use Zttp\Zttp;
 
 class TestController extends Controller
@@ -695,36 +605,6 @@ class TestController extends Controller
 //        ]))->save();
     }
 
-
-    public function changeOrder()
-    {
-        /**
-         * @var OrderService $orderService
-         */
-        $carbon = Carbon::now()->subMinutes(30);
-        var_dump('$orderHeader', new Carbon());
-        $orderHeader_start = OracleDOCOrderHeader::query()->selectRaw(implode(',', OracleDOCOrderHeaderService::$columns))
-            ->with(['oracleBASCustomer' => function ($query) {
-                $query->selectRaw('BAS_CUSTOMER.CustomerID,BAS_CUSTOMER.Customer_Type,BAS_CUSTOMER.Descr_C,BAS_CUSTOMER.Active_Flag');
-            }, 'oracleDOCOrderDetails' => function ($query) {
-                $query->selectRaw('doc_order_details.orderNo,doc_order_details.customerid,doc_order_details.sku,doc_order_details.QtyOrdered');
-            }, 'actAllocationDetails' => function ($query) {
-                $query->selectRaw('ACT_Allocation_Details.AllocationDetailsID,ACT_Allocation_Details.OrderNo,ACT_Allocation_Details.Qty_Each,ACT_Allocation_Details.PickToTraceID,ACT_Allocation_Details.CustomerID,ACT_Allocation_Details.Sku');
-            }, 'oracleBASCode' => function ($query) {
-                $query->selectRaw('BAS_Codes.CodeID,BAS_Codes.CodeName_C,BAS_Codes.Code');
-            }])
-            ->where('DOC_Order_Header.addTime', '>=', $carbon)
-//            ->where('DOC_Order_Header.editTime','>=',$carbon)
-            ->get();
-        var_dump((string)Carbon::now());
-
-        $orderService = app('OrderService');
-        $orderService->syncOrder($orderHeader_start);
-//      $orderService->syncOrder($orderHeader_edit);
-        var_dump((string)Carbon::now());
-//      orderService  getCreateOrderModelsByWMSOrderHeaders
-    }
-
     public function cleanOrderRepeat()
     {
 
@@ -841,7 +721,7 @@ class TestController extends Controller
 
     public function reNewBatches3()
     {
-        $batches = Batch::query()->where('id', '>', 111090)->get('code');
+        $batches = Batch::query()->where('id', '>', 97397)->get('code');
         $batchCodes = $batches->map(function ($batch) {
             return $batch['code'];
         })->toArray();
@@ -868,7 +748,7 @@ class TestController extends Controller
 //        dd($logs);
         foreach ($batchCodes as $code) {
 //            $request=Cache::get('temp'.$code)['description'];
-            $request = Log::query()->select('description')->where('CREATED_AT', '>=', '2021-05-18 15:00')
+            $request = Log::query()->select('description')->where('CREATED_AT', '>=', '2021-04-14')
                 ->where('method', "issued_newBatch")
                 ->where('description', 'like', "%{$code}%")
                 ->first();
@@ -1470,16 +1350,6 @@ where purch.islower=1 and deliver.id>'.$id);
         }
     }
 
-    public function firstAndCreated()
-    {
-        $arr = ['name' => '缓存货架3'];
-        $created = ['name'=>'缓存货架3','station_type_id' => (function(){
-            $type =StationType::query()->where('name','缓存架')->first();
-            return $type['id'];
-        })()];
-        $station = Station::query()->firstOrCreate($arr,$created);
-        dd($station);
-    }
 
 
     public function syncOrderTracking()
@@ -1492,20 +1362,6 @@ where purch.islower=1 and deliver.id>'.$id);
         $service->updateByWmsOrderHeaders($orderHeaders);
     }
 
-    public function testArr()
-    {
-        $serialNos = OracleDocOrderSerialNo::query()->selectRaw('OrderNo')->get();
-        $orderNos  = data_get($serialNos,'*.orderno');
-        $service = app(OrderTrackingService::class);
-        $orderHeadService = app(OracleDOCOrderHeaderService::class);
-        $orderHeaders = $orderHeadService->getOrderTracking()->whereIn('DOC_Order_Header.OrderNo',$orderNos)->get();
-        app(OrderService::class)->syncOrderByWMSOrderHeaders($orderHeaders);
-        app("OrderCommodityService")->syncOrderCommodity($orderHeaders);
-        app('OrderPackageService')->syncOrderPackage($orderHeaders);
-        app("OrderPackageCommoditiesService")->syncOrderPackageCommodities($orderHeaders);
-        app('OrderPackageCommoditySerialNumberService')->syncOrderPackageCommoditySerialNumbers($orderHeaders);
-        $service->createByWmsOrderHeader($orderHeaders);
-    }
     public function addHaiBox(Request $request)
     {
         echo <<<TEXT
@@ -1525,10 +1381,6 @@ TEXT;
     }
 
 
-    public function order(){
-        MeasuringMachine::query()->firstOrCreate(['code'=>'hengli003'],['name'=>'hengli003']);
-    }
-
     public function testProcurement()
     {
         $procurementTotals = ProcurementTotalBill::query()
@@ -1552,46 +1404,54 @@ TEXT;
         return view('httpTest');
     }
 
-    public function updateStation()
-    {
-//        $hid = 'hengli004';
-//        $measuringMachine = MeasuringMachine::query()->firstOrCreate(['code' => $hid],['name' => $hid]); // 称重设备
-        StationTask::query()->where('id',709)->update(
-            ['status'=>'完成']
-        );
-//        StationTaskMaterialBox::query()->where('id',7033)->delete();
-//        Station::query()->where('id',9)->delete();
-//        Station::query()->where('code' ,'缓存架01')->update(['code' => 'B1']);
-//        Station::query()->where('code' ,'缓存架02')->update(['code' => 'B2']);
-//        Station::query()->where('name' ,'HAI缓存架01-03-03')->update(['name' => 'HAIB1-03-03']);
-    }
-
     public function orderPackageUnique()
     {
-        // select logistic_number,count(1) counts from order_packages where id >= 1590001   GROUP BY logistic_number HAVING counts > 1;
-        $orderPackages = OrderPackage::query()->selectRaw('count(1) counts,logistic_number')->where('id','>=','1590000')->groupBy('logistic_number')->having('counts','>','1')->get();
-        dd($orderPackages);
+        /** @var OrderService $orderService */
+        /** @var OracleDOCOrderHeaderService $orderHeaderService */
+        $orderService = app(OrderService::class);
+        $orderHeaderService = app(OracleDOCOrderHeaderService::class);
+
+        $orderPackages = OrderPackage::query()->selectRaw('count(1) counts,logistic_number')->where('created_at','>=','2020-01-01')->groupBy('logistic_number')->having('counts','>','1')->get();
+
+
+        $updateParams = [];
+        $deleteParams = [];
         foreach ($orderPackages as $orderPackage) {
-            $items = OrderPackage::query()->where('logistic_number',$orderPackage['logistic_number'])->get();
-            $orderPackage = $items->first();
+            $items = OrderPackage::query()->with('order')->where('logistic_number',$orderPackage['logistic_number'])->with('order')->get();
+            $actAllocationDetails = OracleActAllocationDetails::query()->selectRaw('orderno')->where('PICKTOTRACEID',$orderPackage['logistic_number'])->get();
+
+            $oracleOrderNos = array_unique(data_get($actAllocationDetails,'*.orderno'));
+            $diffOrderNos = array_diff($oracleOrderNos,data_get($items,'*.order.code'));
+            if(count($diffOrderNos) != 0){
+                $orderHeaders = $orderHeaderService->getQuery()->whereIn('DOC_Order_Header.OrderNo',$diffOrderNos)->get();
+                $orderService->syncOrderInfo($orderHeaders);
+            }
+
+            $items = OrderPackage::query()->with('order')->where('logistic_number',$orderPackage['logistic_number'])->with('order')->get();
+            if($order = Order::query()->whereIn('id',data_get($items,'*.id'))->where('wms_status','!=','订单取消')->first()){
+                $saveOrderPackage = OrderPackage::query()->where('order_id',$order['id'])->where('logistic_number',$orderPackage['logistic_number'])->first();
+            }else{
+                $saveOrderPackage = $items->first();
+            }
+
             foreach ($items as $item) {
-                $orderPackage['batch_number'] = $item['batch_number'] ?? $orderPackage['batch_number'];
-                $orderPackage['batch_rule'] = $item['batch_rule'] ?? $orderPackage['batch_rule'];
-                $orderPackage['bulk'] = $item['bulk'] ?? $orderPackage['bulk'];
-                $orderPackage['weight'] = $item['weight'] ?? $orderPackage['weight'];
-                $orderPackage['length'] = $item['length'] ?? $orderPackage['length'];
-                $orderPackage['width'] = $item['width'] ?? $orderPackage['width'];
-                $orderPackage['height'] = $item['height'] ?? $orderPackage['height'];
-                $orderPackage['measuring_machine_id'] = $item['measuring_machine_id'] ?? $orderPackage['measuring_machine_id'];
-                $orderPackage['weighed_at'] = $item['weighed_at'] ?? $orderPackage['weighed_at'];
-                $orderPackage['owner_id'] = $item['owner_id'] ?? $orderPackage['owner_id'];
-                $orderPackage['received_at'] = $item['received_at'] ?? $orderPackage['received_at'];
-                $orderPackage['transfer_status'] = $item['transfer_status'] ?? $orderPackage['transfer_status'];
-                $orderPackage['status'] = $item['status'] != '无' ? $item['status'] : $orderPackage['transfer_status'];
-                $orderPackage['uploaded_to_wms'] = $item['uploaded_to_wms'] != '否' ? $item['uploaded_to_wms'] : $orderPackage['transfer_status'];
+                $saveOrderPackage['batch_number'] = $item['batch_number'] ?? $saveOrderPackage['batch_number'];
+                $saveOrderPackage['batch_rule'] = $item['batch_rule'] ?? $saveOrderPackage['batch_rule'];
+                $saveOrderPackage['bulk'] = $item['bulk'] ?? $saveOrderPackage['bulk'];
+                $saveOrderPackage['weight'] = $item['weight'] ?? $saveOrderPackage['weight'];
+                $saveOrderPackage['weighed_at'] = $item['weighed_at'] ?? $saveOrderPackage['weighed_at'];
+                $saveOrderPackage['length'] = $item['length'] ?? $saveOrderPackage['length'];
+                $saveOrderPackage['width'] = $item['width'] ?? $saveOrderPackage['width'];
+                $saveOrderPackage['height'] = $item['height'] ?? $saveOrderPackage['height'];
+                $saveOrderPackage['measuring_machine_id'] = $item['measuring_machine_id'] ?? $saveOrderPackage['measuring_machine_id'];
+                $saveOrderPackage['owner_id'] = $item['owner_id'] ?? $saveOrderPackage['owner_id'];
+                $saveOrderPackage['received_at'] = $item['received_at'] ?? $saveOrderPackage['received_at'];
+                $saveOrderPackage['transfer_status'] = $item['transfer_status'] ?? $saveOrderPackage['transfer_status'];
+                $saveOrderPackage['status'] = $item['status'] != '无' ? $item['status'] : $saveOrderPackage['transfer_status'];
+                $saveOrderPackage['uploaded_to_wms'] = $item['uploaded_to_wms'] != '否' ? $item['uploaded_to_wms'] : $saveOrderPackage['uploaded_to_wms'];
             }
-            $orderPackages_filter = $items->filter(function($item)use($orderPackage){
-                if($orderPackage['id'] === $item['id'])return false;
+            $orderPackages_filter = $items->filter(function($item)use($saveOrderPackage){
+                if($saveOrderPackage['id'] === $item['id'])return false;
                 return true;
             });
             $ids = $orderPackages_filter->map(function($item){
@@ -1599,8 +1459,11 @@ TEXT;
             });
             LogService::log('order_packages','order_packages_logistic_number_unique_delete',json_encode($orderPackages_filter));
             OrderPackage::query()->whereIn('id',$ids)->delete();
-            $orderPackage->save();
+            $updateParams[] = $saveOrderPackage;
+            $deleteParams[]  = $orderPackages_filter;
+            $saveOrderPackage->save();
         }
+        dd($updateParams,$deleteParams);
     }
 
     public function endStationTask()

+ 34 - 0
app/Services/OrderPackageService.php

@@ -14,6 +14,7 @@ use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
 use App\Traits\ServiceAppAop;
+use Illuminate\Database\Eloquent\Builder;
 
 
 class OrderPackageService
@@ -24,6 +25,8 @@ class OrderPackageService
         return app(BatchUpdateService::class)->batchUpdate('order_packages',$params);
     }
 
+    /** @var OrderTrackingService $orderTrackingService */
+    public $orderTrackingService;
 
     /**
      * @param string $logistic_number
@@ -114,6 +117,7 @@ class OrderPackageService
         $orderService = app('OrderService');
         if(!$orderHeaders)return;
         $orders = $orderService->getByWmsOrders($orderHeaders);
+        $this->processCancelOrderPackages($orderHeaders);                           // 取消订单操作 及 过滤
         $packages = $this->getByOrderNos(data_get($orderHeaders,'*.orderno'));          // 已有
         $this->createOrderPackage($orderHeaders,$orders,$packages);                     // 创建package
         $this->updatePackage($orderHeaders,$packages);
@@ -304,4 +308,34 @@ class OrderPackageService
         return $map;
     }
 
+    /**
+     * 删除取消的订单
+     * @param $orderHeaders
+     */
+    public function processCancelOrderPackages(&$orderHeaders)
+    {
+        $this->instant($this->orderTrackingService,'OrderTrackingService');
+
+        $cancelOrder = $orderHeaders->filter(function($orderHeader){
+            return $orderHeader->wms_status == '订单取消';
+        });
+
+        $orderPackages = OrderPackage::query()->whereIn('order_id',function($query)use($cancelOrder){
+            /** @var Builder $query */
+            $query->from((new Order())->getTable())->selectRaw('id')->whereIn('code',data_get($cancelOrder,'*.orderno'));
+        })->get();
+
+        if($orderPackages->count() == 0)return ;
+
+        $orderPackage_list = $orderPackages->chunk(200);
+        foreach ($orderPackage_list as $orderPackageSet){
+            OrderPackage::query()->whereIn('id',data_get($orderPackageSet,'*.id'))->delete();
+            $items = OrderTracking::query()->whereIn('order_package_commodity_id',function($query)use($orderPackages){
+                /** @var Builder $query */
+                $query->from((new OrderPackageCommodities)->getTable())->selectRaw('id')->whereIn('order_package_id',data_get($orderPackages,'*.id'));
+            })->get();
+            $this->orderTrackingService->deleteOrderTracings($items);
+        }
+
+    }
 }

+ 34 - 0
database/migrations/2021_05_21_131520_add_order_packages_logistic_number_unique.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddOrderPackagesLogisticNumberUnique extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            //
+            $table->string('logistic_number')->unique()->change();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_packages', function (Blueprint $table) {
+            //
+            $table->dropUnique(['logistic_number']);
+        });
+    }
+}