Jelajahi Sumber

Merge branch 'zhouzhendong' into zzd

# Conflicts:
#	app/Http/Controllers/TestController.php
#	app/Providers/AppServiceProvider.php
#	app/Services/OrderIssueService.php
#	app/Services/OwnerService.php
#	public/js/app.js
#	resources/js/queryForm/queryForm.js
#	serves/excelExportGo/api/controller/controller.go
dream 5 tahun lalu
induk
melakukan
12c245bcec
100 mengubah file dengan 2370 tambahan dan 528 penghapusan
  1. 37 0
      app/Batch.php
  2. 1 2
      app/Console/Commands/CreateOwnerReport.php
  3. 2 2
      app/Console/Commands/InventoryDailyLoggingOwner.php
  4. 53 0
      app/Console/Commands/SyncWMSOrderTask.php
  5. 68 0
      app/Console/Commands/WasSyncWmsAsnInformation.php
  6. 24 0
      app/Events/ResetProcessStatisticStartDateEvent.php
  7. 2 2
      app/Http/Controllers/Auth/LoginController.php
  8. 1 1
      app/Http/Controllers/Auth/RegisterController.php
  9. 4 4
      app/Http/Controllers/AuthorityController.php
  10. 88 0
      app/Http/Controllers/BatchController.php
  11. 3 3
      app/Http/Controllers/CarTypesController.php
  12. 3 3
      app/Http/Controllers/CarriersController.php
  13. 3 3
      app/Http/Controllers/CitiesController.php
  14. 8 8
      app/Http/Controllers/CommodityController.php
  15. 3 3
      app/Http/Controllers/Controller.php
  16. 16 2
      app/Http/Controllers/InventoryAccountController.php
  17. 1 1
      app/Http/Controllers/InventoryCompareController.php
  18. 3 3
      app/Http/Controllers/LaborCompanyController.php
  19. 22 13
      app/Http/Controllers/LaborReportController.php
  20. 1 1
      app/Http/Controllers/LogController.php
  21. 3 3
      app/Http/Controllers/LogisticController.php
  22. 2 2
      app/Http/Controllers/LogisticNumberFeatureController.php
  23. 1 1
      app/Http/Controllers/MeasureMonitorController.php
  24. 1 1
      app/Http/Controllers/MeasuringMachineController.php
  25. 85 0
      app/Http/Controllers/OrderBinController.php
  26. 85 0
      app/Http/Controllers/OrderCommodityController.php
  27. 19 18
      app/Http/Controllers/OrderController.php
  28. 299 30
      app/Http/Controllers/OrderIssueController.php
  29. 5 5
      app/Http/Controllers/OrderIssueProcessLogController.php
  30. 181 17
      app/Http/Controllers/OrderTrackingController.php
  31. 4 4
      app/Http/Controllers/OwnerController.php
  32. 3 29
      app/Http/Controllers/PackageController.php
  33. 5 5
      app/Http/Controllers/PaperBoxController.php
  34. 10 10
      app/Http/Controllers/PersonnelController.php
  35. 55 32
      app/Http/Controllers/ProcessController.php
  36. 2 2
      app/Http/Controllers/ProcessStatisticController.php
  37. 3 3
      app/Http/Controllers/ProvincesController.php
  38. 3 3
      app/Http/Controllers/QualityLabelController.php
  39. 150 8
      app/Http/Controllers/RejectedBillController.php
  40. 9 9
      app/Http/Controllers/RejectedBillItemController.php
  41. 17 15
      app/Http/Controllers/RejectedController.php
  42. 3 3
      app/Http/Controllers/RoleController.php
  43. 85 0
      app/Http/Controllers/SortingStationController.php
  44. 12 12
      app/Http/Controllers/StoreCheckingReceiveController.php
  45. 7 4
      app/Http/Controllers/StoreController.php
  46. 80 31
      app/Http/Controllers/TestController.php
  47. 3 3
      app/Http/Controllers/UnitsController.php
  48. 2 2
      app/Http/Controllers/UserController.php
  49. 11 11
      app/Http/Controllers/UserDutyCheckController.php
  50. 5 5
      app/Http/Controllers/UserLaborController.php
  51. 6 6
      app/Http/Controllers/UserWorkgroupController.php
  52. 3 3
      app/Http/Controllers/WarehouseController.php
  53. 1 1
      app/Http/Controllers/WaveController.php
  54. 12 12
      app/Http/Controllers/WaybillController.php
  55. 4 4
      app/Http/Controllers/WaybillPriceModelsController.php
  56. 15 15
      app/Http/Controllers/api/thirdPart/flux/PackageController.php
  57. 3 3
      app/Http/Controllers/api/thirdPart/flux/ProcessController.php
  58. 1 1
      app/Http/Controllers/api/thirdPart/flux/ReceiveController.php
  59. 213 0
      app/Http/Controllers/api/thirdPart/flux/SortingController.php
  60. 2 2
      app/Http/Controllers/api/thirdPart/flux/WaybillController.php
  61. 27 25
      app/Http/Controllers/api/thirdPart/goodscan/PackageController.php
  62. 4 4
      app/Http/Controllers/api/thirdPart/haiq/StorageController.php
  63. 180 0
      app/Http/Controllers/api/thirdPart/haochuang/SortingController.php
  64. 11 11
      app/Http/Controllers/api/thirdPart/jianshang/RejectedController.php
  65. 18 16
      app/Http/Controllers/api/thirdPart/weight/PackageController.php
  66. 1 1
      app/Http/Controllers/api/thirdPart/weixin/WxController.php
  67. 1 1
      app/Http/Controllers/api/thirdPart/weixin/WxLoginController.php
  68. 1 0
      app/Imports/OrderIssueImport.php
  69. 1 1
      app/Imports/RejectedImport.php
  70. 5 5
      app/Imports/StoreCheckingReceiveImport.php
  71. 13 7
      app/InventoryAccount.php
  72. 7 4
      app/LaborReport.php
  73. 60 0
      app/Listeners/ResetProcessStatisticStartDateListener.php
  74. 14 0
      app/OracleDOCASNDetail.php
  75. 20 0
      app/OracleDOCASNHeader.php
  76. 52 1
      app/Order.php
  77. 12 0
      app/OrderBin.php
  78. 35 0
      app/OrderCommodity.php
  79. 19 7
      app/OrderIssue.php
  80. 2 2
      app/OrderPackage.php
  81. 5 3
      app/OrderPackageCommodities.php
  82. 6 4
      app/OrderTracking.php
  83. 1 0
      app/Owner.php
  84. 4 0
      app/Process.php
  85. 8 0
      app/Providers/AppServiceProvider.php
  86. 3 0
      app/Providers/EventServiceProvider.php
  87. 4 1
      app/Providers/RouteServiceProvider.php
  88. 22 6
      app/RejectedBill.php
  89. 1 1
      app/RejectedBillItem.php
  90. 3 2
      app/Services/CacheService.php
  91. 4 3
      app/Services/CityService.php
  92. 2 2
      app/Services/CommodityService.php
  93. 20 20
      app/Services/InventoryAccountService.php
  94. 3 2
      app/Services/InventoryDailyLogService.php
  95. 2 1
      app/Services/LaborReportService.php
  96. 10 16
      app/Services/LogService.php
  97. 15 6
      app/Services/LogisticService.php
  98. 4 8
      app/Services/LogisticTimingService.php
  99. 2 2
      app/Services/OracleActAllocationDetailService.php
  100. 15 0
      app/Services/OracleBasCustomerService.php

+ 37 - 0
app/Batch.php

@@ -0,0 +1,37 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class Batch extends Model
+{
+    protected $fillable = [
+        'id','code','type', 'wms_type', 'status', 'wms_status', 'wms_created_at',
+    ];
+    public function orders(){
+        return $this->hasMany('App\Order','batch_id','id');
+    }
+    public function setProcessed(){
+        $this['status'] = '已处理';
+        $this->orders()->each(function (Order $order){
+            $order->setProcessed();
+        });
+        $this->update();
+    }
+    public function assignBins(){
+        $this->orders()->each(function (Order $order,$i){
+            $bin=new OrderBin(['order_id'=>$order['id'],'number'=>($i+1)]);
+            $bin->save();
+        });
+        return $this->orders()->count();
+    }
+    public function delete()
+    {
+        $this->orders()->each(function(Order $order){
+            $order->delete();
+        });
+        return parent::delete(); // TODO: Change the autogenerated stub
+    }
+
+}

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

@@ -112,8 +112,7 @@ class CreateOwnerReport extends Command
             ];
         }
         //执行生成或修改
-        LogService::log(__METHOD__,"生成货主报表",json_encode($createReports));
-        LogService::log(__METHOD__,"修改货主报表",json_encode($updateReports));
+        app('LogService')->log(__METHOD__,"生成货主报表",json_encode($createReports));
         app(BatchUpdateService::class)->batchUpdate('owner_reports', $updateReports);
         DB::table("owner_reports")->insert($createReports);
     }

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

@@ -115,7 +115,7 @@ class InventoryDailyLoggingOwner extends Command
                 'volumn'=>$commodity['volumn'],
             ];
             $result = $commodityService->updateOrCreate($param,$column);
-            LogService::log(__METHOD__,"同步库存每日记录时修改或生成商品",json_encode($column));
+            app('LogService')->log(__METHOD__,"同步库存每日记录时修改或生成商品",json_encode($column));
 
             $commodity_id = $result->id;
             //寻找对应barcode是否存在,不存在录入
@@ -143,7 +143,7 @@ class InventoryDailyLoggingOwner extends Command
             ];
         }
         DB::table('inventory_daily_logs')->insert($data);
-        LogService::log(__METHOD__,"同步库存每日记录",json_encode($data));
+        app('LogService')->log(__METHOD__,"同步库存每日记录",json_encode($data));
     }
 
     public function getLoggingOwners(){

+ 53 - 0
app/Console/Commands/SyncWMSOrderTask.php

@@ -0,0 +1,53 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Services\OracleDOCOrderHeaderService;
+use App\Services\OrderService;
+use Carbon\Carbon;
+use Illuminate\Console\Command;
+
+class SyncWMSOrderTask extends Command
+{
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'SyncWMSOrderTask';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = 'Command description';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        /**
+         * @var OracleDOCOrderHeaderService $oracleDOCOrderHeaderService
+         * @var OrderService $orderService
+         */
+        $oracleDOCOrderHeaderService = app('OracleDOCOrderHeaderService');
+        $orderService = app('OrderService');
+        $start_date = Carbon::now()->subSeconds(60+5);
+        $orderHeaders = $oracleDOCOrderHeaderService->getWMSOrderOnStartDate($start_date);
+        $orderService->createOrderInfo($orderHeaders);
+    }
+}

+ 68 - 0
app/Console/Commands/WasSyncWmsAsnInformation.php

@@ -0,0 +1,68 @@
+<?php
+
+namespace App\Console\Commands;
+
+use App\Services\LogService;
+use App\Services\OrderTrackingService;
+use App\Services\StoreService;
+use Illuminate\Console\Command;
+use Illuminate\Support\Carbon;
+use Illuminate\Support\Facades\Auth;
+
+class WasSyncWmsAsnInformation extends Command
+{
+
+    /**
+     * The name and signature of the console command.
+     *
+     * @var string
+     */
+    protected $signature = 'WasSyncWmsAsnInformation';
+
+    /**
+     * The console command description.
+     *
+     * @var string
+     */
+    protected $description = '同步WMS的入库信息';
+
+    /**
+     * Create a new command instance.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        parent::__construct();
+    }
+
+    /**
+     * Execute the console command.
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $this->WasSyncWmsAsn();
+    }
+
+    public function WasSyncWmsAsn(){
+
+        /** @var StoreService $storeService */
+        $storeService  = app('storeService');
+
+        $dataInterval = intval(data_get(config('sync'), 'asn_sync.interval')) * 60 + 5;
+
+        $startDate = Carbon::now()->subSeconds($dataInterval);
+
+        $syncStartDate = data_get(config('sync'), 'asn_sync.start_at');
+
+        if($syncStartDate ?? false){
+            $syncStartDate = Carbon::parse($syncStartDate);
+            if ($startDate->lt($syncStartDate)) {
+                $startDate = $syncStartDate;
+            }
+        }
+        //$storeService->syncWmsAsnData($startDate);
+    }
+}

+ 24 - 0
app/Events/ResetProcessStatisticStartDateEvent.php

@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Events;
+
+use App\Process;
+use Illuminate\Broadcasting\InteractsWithSockets;
+use Illuminate\Foundation\Events\Dispatchable;
+use Illuminate\Queue\SerializesModels;
+
+class ResetProcessStatisticStartDateEvent
+{
+    use Dispatchable, InteractsWithSockets, SerializesModels;
+
+    public $process;
+    /**
+     * Create a new event instance.
+     * @param Process $process
+     * @return void
+     */
+    public function __construct(Process $process)
+    {
+        $this->process = $process;
+    }
+}

+ 2 - 2
app/Http/Controllers/Auth/LoginController.php

@@ -85,7 +85,7 @@ class LoginController extends Controller
 
         if ($this->attemptLogin($request)) {
             if(env('DB_USERNAME')!='developer')
-                $this->log(__METHOD__,__FUNCTION__,'',Auth::user()['id']);
+                app('LogService')->log(__METHOD__,__FUNCTION__,'',Auth::user()['id']);
             if($request['is_json']){
                 return ['success'=>true,'url'=>url($this->redirectTo)];
             }
@@ -94,7 +94,7 @@ class LoginController extends Controller
 
         $this->incrementLoginAttempts($request);
         if(env('DB_USERNAME')!='developer')
-            $this->log(__METHOD__,__FUNCTION__,'',Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,'',Auth::user()['id']);
         if($request['is_json']){
             return ['success'=>false,'errors'=>['name'=>['登录信息验证失败']]];
         }

+ 1 - 1
app/Http/Controllers/Auth/RegisterController.php

@@ -96,7 +96,7 @@ class RegisterController extends Controller
         if ($userWorkgroupId){
             $user->userWorkgroups()->sync([$userWorkgroupId]);
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),$user['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),$user['id']);
         if($headTo){return redirect(url($headTo))->with('successTip',"录入用户 {$user->name} 成功");}
         return $this->registered($request, $user)
             ?: redirect($this->redirectPath());

+ 4 - 4
app/Http/Controllers/AuthorityController.php

@@ -68,7 +68,7 @@ class AuthorityController extends Controller
 //        $authority=new Authority($inputs);
 //        $authority->save();
 //
-//        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+//        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
 //        return redirect('maintenance/authority/create')->with('successTip',"成功录入权限“{$successName}”");
 //    }
 
@@ -81,7 +81,7 @@ class AuthorityController extends Controller
         $authority=new Authority(['alias_name'=>"(货主:{$owner['name']})",'name'=>"_{$owner['id']}",'remark'=>"(key: _{$owner['id']})"]);
         $authority->save();
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/authority/create')->with('successTip',"成功录入权限: (货主:{$owner['name']})");
     }
 
@@ -141,7 +141,7 @@ class AuthorityController extends Controller
         $this->validatorUpdate($request->all())->validate();
         $authority->fill($request->all());
         $authority->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/authority/')->with('successTip',"成功修改权限“{$authority['name']}”!");
     }
 
@@ -155,7 +155,7 @@ class AuthorityController extends Controller
     public function destroy(Authority $authority)
     {
         if(!Gate::allows('权限-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$authority->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$authority->toJson(),Auth::user()['id']);
         $re=$authority->delete();
         return ['success'=>$re];
     }

+ 88 - 0
app/Http/Controllers/BatchController.php

@@ -0,0 +1,88 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Batch;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Gate;
+
+class BatchController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Http\Response|\Illuminate\View\View
+     */
+    public function index()
+    {
+        if(!Gate::allows('波次-查询')){ return redirect(url('/'));  }
+        $batches=Batch::orderBy('id','desc')->paginate(50);
+        return view('maintenance.batch.index',compact('batches'));
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\Batch  $batch
+     * @return \Illuminate\Http\Response
+     */
+    public function show(Batch $batch)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\Batch  $batch
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(Batch $batch)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\Batch  $batch
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, Batch $batch)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\Batch  $batch
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(Batch $batch)
+    {
+        //
+    }
+}

+ 3 - 3
app/Http/Controllers/CarTypesController.php

@@ -32,7 +32,7 @@ class CarTypesController extends Controller
         $this->validatorCarType($request,$id)->validate();
         $carTypes=$request->input('CarType');
         if(CarType::create($carTypes)){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/carType')->with('successTip','新车辆“'.$request->input('CarType.name').'”添加成功');
         };
     }
@@ -52,7 +52,7 @@ class CarTypesController extends Controller
         $carType=CarType::find($id);
         $carType->fill($data);
         if ($carType->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/carType')->with('successTip','车型“'.$request->input('CarType.name').'”修改成功');
         }
     }
@@ -61,7 +61,7 @@ class CarTypesController extends Controller
     {
         if(!Gate::allows('车型-删除')){ return redirect(url('/'));  }
         $carType=CarType::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($carType),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($carType),Auth::user()['id']);
         $result=$carType->delete();
         return ['success'=>$result];
     }

+ 3 - 3
app/Http/Controllers/CarriersController.php

@@ -32,7 +32,7 @@ class CarriersController extends Controller
         $this->validatorCarrier($request,$id)->validate();
         $carriers=$request->input('Carrier');
         if(Carrier::query()->create($carriers)){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/carrier')->with('successTip','新承运商“'.$request->input('Carrier.name').'”添加成功');
         };
     }
@@ -52,7 +52,7 @@ class CarriersController extends Controller
         $carrier=Carrier::query()->find($id);
         $carrier->fill($data);
         if ($carrier->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/carrier')->with('successTip','承运商“'.$request->input('Carrier.name').'”修改成功');
         }
     }
@@ -61,7 +61,7 @@ class CarriersController extends Controller
     {
         if(!Gate::allows('承运商-删除')){ return redirect(url('/'));  }
         $carrier=Carrier::query()->find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($carrier),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($carrier),Auth::user()['id']);
         $result=$carrier->delete();
         return ['success'=>$result];
     }

+ 3 - 3
app/Http/Controllers/CitiesController.php

@@ -33,7 +33,7 @@ class CitiesController extends Controller
         $this->validatorCities($request,$id)->validate();
         $cities=$request->input('City');
         if(City::create($cities)){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/city')->with('successTip','新城市“'.$request->input('City.name').'”添加成功');
         };
     }
@@ -54,7 +54,7 @@ class CitiesController extends Controller
         $city=City::find($id);
         $city->fill($data);
         if ($city->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/city')->with('successTip','城市“'.$request->input('City.name').'”修改成功');
         }
     }
@@ -63,7 +63,7 @@ class CitiesController extends Controller
     {
         if(!Gate::allows('城市-删除')){ return redirect(url('/'));  }
         $city=City::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($city),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($city),Auth::user()['id']);
         $result=$city->delete();
         return ['success'=>$result];
     }

+ 8 - 8
app/Http/Controllers/CommodityController.php

@@ -56,7 +56,7 @@ class CommodityController extends Controller
         $commodity->save();
         $commodity->newBarcode($request->input('barcode'));
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/commodity/create')->with('successTip',"成功录入商品信息:“{$request->input('name')}”");
     }
     protected function validatorCreate(array $data)
@@ -109,7 +109,7 @@ class CommodityController extends Controller
         $this->validatorUpdate($request->all())->validate();
         $commodity->fill($request->all());
         $commodity->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/commodity/')->with('successTip',"成功修改商品信息:“{$commodity['name']}”!");
     }
 
@@ -123,7 +123,7 @@ class CommodityController extends Controller
     public function destroy(Commodity $commodity)
     {
         if(!Gate::allows('商品信息-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$commodity->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$commodity->toJson(),Auth::user()['id']);
         $re=$commodity->delete();
         return ['success'=>$re];
     }
@@ -258,7 +258,7 @@ class CommodityController extends Controller
 
         if (count($updateCommodities) > 1){
             $commodityService->batchUpdate($updateCommodities);
-            LogService::log(__METHOD__,"同步商品-批量更新",json_encode($updateCommodities));
+            app('LogService')->log(__METHOD__,"同步商品-批量更新",json_encode($updateCommodities));
             $commodityBarcodes = $commodityBarcodeService->get(['commodity_id'=>$commoditiesId, 'code'=>$barcodes]);
 
             unset($commoditiesId,$barcodes);
@@ -277,7 +277,7 @@ class CommodityController extends Controller
                     ];
                 }
                 $commodityBarcodeService->insert($barcodeInsert);
-                LogService::log(__METHOD__,"同步商品-录入条码",json_encode($barcodeInsert));
+                app('LogService')->log(__METHOD__,"同步商品-录入条码",json_encode($barcodeInsert));
             }
         }
 
@@ -345,13 +345,13 @@ class CommodityController extends Controller
             }
             if (count($updateCommodities) > 0){
                 $commodityService->batchUpdate($updateCommodities);
-                LogService::log(__METHOD__,"同步商品-批量更新",json_encode($updateCommodities));
+                app('LogService')->log(__METHOD__,"同步商品-批量更新",json_encode($updateCommodities));
             }
         }
 
         if (count($createCommodities) > 0){
             $commodityService->insert($createCommodities);
-            LogService::log(__METHOD__,"同步商品-录入商品",json_encode($createCommodities));
+            app('LogService')->log(__METHOD__,"同步商品-录入商品",json_encode($createCommodities));
             $commodities = $commodityService->get(['owner_id'=>$owner_id , 'sku'=>$skus]);
             $barcodeInsert = [];
             foreach ($commodities as $commodity){
@@ -364,7 +364,7 @@ class CommodityController extends Controller
                 }
             }
             $commodityBarcodeService->insert($barcodeInsert);
-            LogService::log(__METHOD__,"同步商品-录入条码",json_encode($barcodeInsert));
+            app('LogService')->log(__METHOD__,"同步商品-录入条码",json_encode($barcodeInsert));
         }
     }
 }

+ 3 - 3
app/Http/Controllers/Controller.php

@@ -18,13 +18,13 @@ class Controller extends BaseController
 {
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
     static public function logS($method,$type,$description,$id_user=null){
-        LogService::log($method,$type,$description,$id_user=null);
+        app('LogService')->log($method,$type,$description,$id_user=null);
     }
     public function log($method,$type,$description,$id_user=null){
-        LogService::log($method,$type,$description,$id_user);
+        app('LogService')->log($method,$type,$description,$id_user);
     }
     public function apiError($method,$description){
-        $this->log($method,'apiError',$description);
+        app('LogService')->log($method,'apiError',$description);
         return ['success'=>'false','fail_info'=>$description];
     }
 }

+ 16 - 2
app/Http/Controllers/InventoryAccountController.php

@@ -45,6 +45,20 @@ class InventoryAccountController extends Controller
         $inventoryAccount=InventoryAccount::where('id',$id)->delete();
         return ['success'=>true,'data'=>$inventoryAccount];
     }
+    public function inventoryChecked(Request $request){
+        if(!Gate::allows('库存管理-盘点-项目审核')){return['success'=>false,'msg'=>'没有权限'];}
+        $id=$request->id;
+        if(is_null($id)){return ['success'=>false,'msg'=>'传入id为空'];}
+        $inventoryAccount=InventoryAccount::query()->where('id',$id)->update([
+            'auditor'=>Auth::user()['id'],
+        ]);
+        if ($inventoryAccount==1) {
+            $inventoryAccount=InventoryAccount::query()->with('userAuditor')->find($id);
+            return ['success'=>true,'data'=>$inventoryAccount];
+        }else{
+            return ['success'=>false,'msg'=>'审核失败!'];
+        }
+    }
 
     //盘点-任务页面
     public function mission(Request $request,OwnerService $ownerService){
@@ -176,7 +190,7 @@ class InventoryAccountController extends Controller
         $id=$request->input('id');
         if (!$id) return ['success'=>false,'data'=>'参数错误!'];
         $inventoryAccount=InventoryAccount::query()->where('id',$id)->update(['status'=>'复盘中']);
-        $this->log(__METHOD__,'结束初盘任务'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'结束初盘任务'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         if ($inventoryAccount>0) return ['success'=>true,'data'=>'复盘中'];
         return ['success'=>false,'data'=>'参数错误!'];
     }
@@ -194,7 +208,7 @@ class InventoryAccountController extends Controller
         $quality=$request->quality;
         $ownerCode=$request->ownerCode;
         $inventoryAccountMission=app('inventoryAccountService')->修改质量状态($id,$location,$sku,$quality,$ownerCode);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         if ($inventoryAccountMission==null) return ['success'=>false,'data'=>'WMS中不存在该条记录!'];
         return ['success'=>true,'data'=>'质量状态修改成功'];
 

+ 1 - 1
app/Http/Controllers/InventoryCompareController.php

@@ -117,7 +117,7 @@ class InventoryCompareController extends Controller
                     for ($i = 0; $i < count($exception); $i++) {
                         $a .= implode(',', $exception[$i]) . '&#10';
                     };
-                    $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+                    app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
                     return '<h1 class="text-danger">导入Excel成功<br><textarea style="width: 50%;height: 50%">' . $a . '</textarea></h1>';
 //                }else {
 //                    return '<h1 class="text-danger">导入Excel成功</h1>';

+ 3 - 3
app/Http/Controllers/LaborCompanyController.php

@@ -46,7 +46,7 @@ class LaborCompanyController extends Controller
         $laborCompany=new LaborCompany($request->all());
         $laborCompany->save();
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/laborCompany/create')->with('successTip',"成功录入劳务所“{$request->input('name')}”");
     }
     protected function validatorCreate(array $data)
@@ -97,7 +97,7 @@ class LaborCompanyController extends Controller
         $this->validatorUpdate($request->all())->validate();
         $laborCompany->fill($request->all());
         $laborCompany->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/laborCompany/')->with('successTip',"成功修改劳务所“{$laborCompany['name']}”!");
     }
 
@@ -111,7 +111,7 @@ class LaborCompanyController extends Controller
     public function destroy(LaborCompany $laborCompany)
     {
         if(!Gate::allows('物流公司-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$laborCompany->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$laborCompany->toJson(),Auth::user()['id']);
         $re=$laborCompany->delete();
         return ['success'=>$re];
     }

+ 22 - 13
app/Http/Controllers/LaborReportController.php

@@ -53,18 +53,27 @@ class LaborReportController extends Controller
                 $tenMinutesLater=Carbon::parse($laborReport->created_at)->subHours(-2)->format('Y-m-d H:i:s');
                 if (Carbon::now()->format('Y-m-d H:i:s')>$tenMinutesLater){
                     $laborReport->delete();
-                    $this->log(__METHOD__,"组长未审核该条记录将在10分钟后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
+                    app('LogService')->log(__METHOD__,"组长未审核该条记录将在10分钟后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
                 }
             }
             $addOneHourCheckedAt=Carbon::parse($laborReport->userDutyCheck['checked_at'])->subHours(-1)->format('Y-m-d H:i:s');
             if (!$laborReport->userDutyCheck['verify_user_id']&&Carbon::now()->format('Y-m-d H:i:s')>$addOneHourCheckedAt){
                 $laborReport->delete();
-                $this->log(__METHOD__,"进场门卫未审核该条记录将在一小时后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,"进场门卫未审核该条记录将在一小时后实行软删除__".__FUNCTION__,$laborReport->toJson(),Auth::user()['id']);
             }
         }
+        $totalWorkingHours=$this->getTotalWorkingHours($request->input());
         $laborCompanies=LaborCompany::query()->get();
         $userWorkGroups=UserWorkgroup::query()->select('id','name')->get();
-        return view('personnel/laborReport/index',compact('laborReports','userWorkGroups','laborCompanies','laravelEchoPrefix','permittingWorkgroups','paginateParams','tokenOfBroadcastEnterAndLeave'));
+        return view('personnel/laborReport/index',compact('laborReports','userWorkGroups','laborCompanies','laravelEchoPrefix','permittingWorkgroups','paginateParams','tokenOfBroadcastEnterAndLeave','totalWorkingHours'));
+    }
+    public function getTotalWorkingHours($param){
+        $totalLaborReports=app('laborReportService')->get($param);
+        $totalWorkingHours=0;
+        foreach ($totalLaborReports as $totalLaborReport){
+            $totalWorkingHours=$totalWorkingHours+$totalLaborReport->thisRecordWorkingTime;
+        }
+        return $totalWorkingHours;
     }
     public function export(Request $request){
         if (!Gate::allows('人事管理-临时工报表')){return redirect(url('/')); }
@@ -119,12 +128,12 @@ class LaborReportController extends Controller
             'status'=>'已入场',
         ]);
         $laborReportStatus->save();
-        $this->log(__METHOD__,"门卫打卡审核创建当前临时工报表状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"门卫打卡审核创建当前临时工报表状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
         $userDutyCheck=UserDutyCheck::find($userDutyCheckId);
         $userDutyCheck->verify_user_id=Auth::user()['id'];
         $userDutyCheck->update();
         event(new GuardAuditEvent($userDutyCheck));
-        $this->log(__METHOD__,"门卫打卡审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"门卫打卡审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
         return ["success"=>true,"data"=>$userDutyCheck->verify_user_id];
     }
     //打卡组长审核
@@ -136,7 +145,7 @@ class LaborReportController extends Controller
         $laborReport->verify_at=date('Y-m-d H:i:s');
         $laborReport->update();
         $laborReport->verifyPerson=Auth::user()['name'];
-        $this->log(__METHOD__,"打卡组长审核".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"打卡组长审核".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
         event(new TeamAuditEvent($laborReport));
         return ["success"=>true,"data"=>$laborReport];
     }
@@ -152,7 +161,7 @@ class LaborReportController extends Controller
         $laborReport->update();
         $laborReport->setRemarkAttribute($remark,$id);
         $laborReport->verifyPerson=Auth::user()['name'];
-        $this->log(__METHOD__,"打卡组长审核并添加相应备注".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"打卡组长审核并添加相应备注".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
         event(new TeamAuditEvent($laborReport));
         return ["success"=>true,"data"=>$laborReport];
     }
@@ -167,7 +176,7 @@ class LaborReportController extends Controller
             'status'=>'已退组',
         ]);
         $laborReportStatus->save();
-        $this->log(__METHOD__,"报表记录退组对应状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"报表记录退组对应状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
         $check_out_at=Carbon::now()->format('Y-m-d H:i:s');
         $check_in_at=$laborReport->check_in_at;
         $laborReport->check_out_at=$check_out_at;
@@ -182,7 +191,7 @@ class LaborReportController extends Controller
         }
         $laborReport->update();
         $laborReport->is_exportGroup=$laborReport->getIsExportGroupAttribute();
-        $this->log(__METHOD__,"退组".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"退组".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
         event(new ClockoutEvent($laborReport));
         return ["success"=>true,"data"=>$laborReport];
     }
@@ -199,7 +208,7 @@ class LaborReportController extends Controller
             'status'=>'已退组',
         ]);
         $laborReportStatus->save();
-        $this->log(__METHOD__,"报表记录退组对应状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"报表记录退组对应状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
         $check_out_at=Carbon::now()->format('Y-m-d H:i:s');
         $check_in_at=$laborReport->check_in_at;
         $laborReport->check_out_at=$check_out_at;
@@ -219,7 +228,7 @@ class LaborReportController extends Controller
         }
         $laborReport->update();
         $laborReport->is_exportGroup=$laborReport->getIsExportGroupAttribute();
-        $this->log(__METHOD__,"退组".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"退组".__FUNCTION__,json_encode($laborReport),Auth::user()['id']);
         event(new ClockoutEvent($laborReport));
         return ["success"=>true,"data"=>$laborReport];
     }
@@ -267,7 +276,7 @@ class LaborReportController extends Controller
     function recover(Request $request){
         if(!Gate::allows('人事管理-临时工报表-删除')){ return redirect('/');  }
         $checkData=$request->checkData;
-        $this->log(__METHOD__,"回收站恢复临时工报表记录_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"回收站恢复临时工报表记录_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>LaborReport::withTrashed()->whereIn('id',$checkData)->restore()];
     }
     public function changeLaborReportRemark(Request $request){
@@ -279,7 +288,7 @@ class LaborReportController extends Controller
         }
         $laborReport=LaborReport::find($laborReportId);
         $laborReport->setRemarkAttribute($laborReportRemark,$laborReportId);
-        $this->log(__METHOD__,'添加或者修改临时工报表备注'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'添加或者修改临时工报表备注'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>true,'status'=>$laborReport];
     }
 }

+ 1 - 1
app/Http/Controllers/LogController.php

@@ -92,7 +92,7 @@ class LogController extends Controller
     public function destroy(Log $log)
     {
 //        if(!Gate::allows('物流公司-删除')){ return redirect(url('/'));  }
-//        $this->log(__METHOD__,__FUNCTION__,$log->toJson(),Auth::user()['id']);
+//        app('LogService')->log(__METHOD__,__FUNCTION__,$log->toJson(),Auth::user()['id']);
 //        $re=$log->delete();
 //        return ['success'=>$re];
     }

+ 3 - 3
app/Http/Controllers/LogisticController.php

@@ -48,7 +48,7 @@ class LogisticController extends Controller
         $logistic=new Logistic($request->all());
         $logistic->save();
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/logistic/create')->with('successTip',"成功录入物流公司“{$request->input('name')}”");
     }
     protected function validatorCreate(array $data)
@@ -101,7 +101,7 @@ class LogisticController extends Controller
         $this->validatorUpdate($request->all(),$logistic->id)->validate();
         $logistic->fill($request->all());
         $logistic->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/logistic/')->with('successTip',"成功修改物流公司“{$logistic['name']}”!");
     }
 
@@ -115,7 +115,7 @@ class LogisticController extends Controller
     public function destroy(Logistic $logistic)
     {
         if(!Gate::allows('物流公司-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$logistic->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$logistic->toJson(),Auth::user()['id']);
         $re=$logistic->delete();
         return ['success'=>$re];
     }

+ 2 - 2
app/Http/Controllers/LogisticNumberFeatureController.php

@@ -103,7 +103,7 @@ class LogisticNumberFeatureController extends Controller
         if($numberLength<$featureConsideringLength)
             $featureConsideringLength=$numberLength;
         if(!$logisticNumber){
-            $this->log(__METHOD__, 'error', '创建退货快递单号特征时,单号传入了空值');
+            app('LogService')->log(__METHOD__, 'error', '创建退货快递单号特征时,单号传入了空值');
             return null;
         };
         $featuresCreated=[];
@@ -120,7 +120,7 @@ class LogisticNumberFeatureController extends Controller
     private function createFeature(int $logisticId,string $featureName, string $value,int $weight)
     {
         if(!$value){
-            $this->log(__METHOD__, 'error', "创建退货快递单号特征{$featureName}时,特征值为空");
+            app('LogService')->log(__METHOD__, 'error', "创建退货快递单号特征{$featureName}时,特征值为空");
             return null;
         };
         $feature=LogisticNumberFeature::where('logistic_id',$logisticId)

+ 1 - 1
app/Http/Controllers/MeasureMonitorController.php

@@ -39,7 +39,7 @@ class MeasureMonitorController extends Controller
 
     public function speech(Request $request){
         $logistic=$request->input('logistic');
-        if (!$logistic)return '';
+        if (!$logistic)$logistic='空';
         if (file_exists("storage/".$logistic.'.mp3')){
             return "/storage/".$logistic.'.mp3';
         }

+ 1 - 1
app/Http/Controllers/MeasuringMachineController.php

@@ -95,7 +95,7 @@ class MeasuringMachineController extends Controller
     {
         if(!Gate::allows('测量设备-删除')){ return redirect(url('/'));  }
         $measuringMachine=MeasuringMachine::find($id)->delete();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($measuringMachine),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($measuringMachine),Auth::user()['id']);
         if ($measuringMachine)return ['success'=>true];
     }
 

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

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\OrderBin;
+use Illuminate\Http\Request;
+
+class OrderBinController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\OrderBin  $orderBin
+     * @return \Illuminate\Http\Response
+     */
+    public function show(OrderBin $orderBin)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\OrderBin  $orderBin
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(OrderBin $orderBin)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\OrderBin  $orderBin
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, OrderBin $orderBin)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\OrderBin  $orderBin
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(OrderBin $orderBin)
+    {
+        //
+    }
+}

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

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\OrderCommodity;
+use Illuminate\Http\Request;
+
+class OrderCommodityController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\OrderCommodity  $orderCommodity
+     * @return \Illuminate\Http\Response
+     */
+    public function show(OrderCommodity $orderCommodity)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\OrderCommodity  $orderCommodity
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(OrderCommodity $orderCommodity)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\OrderCommodity  $orderCommodity
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, OrderCommodity $orderCommodity)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\OrderCommodity  $orderCommodity
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(OrderCommodity $orderCommodity)
+    {
+        //
+    }
+}

+ 19 - 18
app/Http/Controllers/OrderController.php

@@ -40,11 +40,7 @@ class OrderController extends Controller
         $orders = $result['orders'];
         $orderIssueNos =  $orderService->返回有问题件的订单号($orders);
         $commodities = $result['commodities'];
-        $customers=OracleBasCustomer::query()->select('customerid','descr_c')
-            ->where('customer_type','OW')
-            ->where('active_flag','Y')
-            ->whereIn('customerid',$codes)
-            ->get();
+        $customers=app('OracleBasCustomerService')->getCustomers($codes);
         $page = $request["page"] ?? 1;
         $codes=DB::connection('oracle')->table('BAS_CODES')->select('code','codename_c')->where('codeid','SO_STS')->orderBy('code','asc')->get();
         $orderIssueType = OrderIssueType::all();
@@ -89,6 +85,7 @@ class OrderController extends Controller
         $rejectedBillItems = [];
         //分箱号
         $picktotraceids = json_decode($result['picktotraceids'],true);
+        $rejectedBill_collect = collect();// 保存生成的rejectedBill
         foreach ($result['orders'] as $order){
             //不存在时将当前快递单号视为分箱号
             if (!($picktotraceids[$order->orderno] ?? false))$picktotraceids[$order->orderno] = [$order->soreference5];
@@ -104,12 +101,13 @@ class OrderController extends Controller
                     'logistic_number_return' => $orderno,
                     'id_logistic_return' => $logistic->id,
                     'order_number' => $order->soreference1,
-                    'mobile_sender' => $order->c_tel2,
+                    'mobile_sender' => empty($order->c_tel2)?$order->c_tel1:$order->c_tel2,
                     'logistic_number' => '原单退回',//$order->soreference1
                     'remark' => $order->notes,
                     'is_loaded' =>0,
                     "id_operator" => Auth::id(),
                 ]);
+                $rejectedBill_collect->push($rejectedBill);// 保存生成的rejectedBill
                 LogService::log(__METHOD__,"生成退货单",json_encode($order),Auth::user()['id']);
                 if ($commodities[$order->orderno] ?? false){
                     foreach ($commodities[$order->orderno] as $orderCommodities){
@@ -127,6 +125,9 @@ class OrderController extends Controller
         }
         $rejectedBillItemService->insert($rejectedBillItems);
         LogService::log(__METHOD__,"批量生成退货单详情",json_encode($rejectedBillItems),Auth::user()['id']);
+        $rejectedBill_collect->each(function($rejectedBill)use($rejectedBillService){
+            $rejectedBillService->syncOrderIssue($rejectedBill);
+        });
         return ['success'=>true];
     }
 
@@ -153,7 +154,7 @@ class OrderController extends Controller
         $data=[];
         foreach ($ordersNotNull as $order){
             OracleDOCOrderHeader::query()->where('orderno',$order->orderno)->update(["notes"=>($order->notes).",".$content]);
-            $this->log(__METHOD__,'批量备注追加修改'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'批量备注追加修改'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             $order->notes=($order->notes).",".$content;
             array_push($data,$order);
         }
@@ -174,10 +175,10 @@ class OrderController extends Controller
             $waveno=OracleDOCOrderHeader::where('orderno',$order->orderno)->value('waveno');
             if ($waveno && $waveno!='*'){
                 OracleDOCWaveDetails::where('waveno',$waveno)->where('orderno',$order->orderno)->delete();
-                $this->log(__METHOD__,'批量冻结删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,'批量冻结删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             }
             $is_freeze=OracleDOCOrderHeader::where('orderno',$order->orderno)->update(['releasestatus'=>'H','waveno'=>'*']);
-            $this->log(__METHOD__,'批量冻结修改'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'批量冻结修改'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             if (!$is_freeze)return ['success'=>false,'fail_info'=>"数据 {$order['orderno']} 更新失败"];
         }
         return ['success'=>true];
@@ -195,10 +196,10 @@ class OrderController extends Controller
             $waveno=OracleDOCOrderHeader::where('orderno',$order->orderno)->value('waveno');
             if ($waveno && $waveno!='*'){
                 OracleDOCWaveDetails::where('waveno',$waveno)->where('orderno',$order->orderno)->delete();
-                $this->log(__METHOD__,'批量取消分配删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,'批量取消分配删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             }
             $deAllocation=OracleDOCOrderHeader::where('orderno',$order->orderno)->update(['sostatus'=>'00','waveno'=>'*']);
-            $this->log(__METHOD__,'批量取消分配'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'批量取消分配'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             if (!$is_deAllocation||!$deAllocation)return ['success'=>false,'fail_info'=>"数据 {$order['orderno']} 更新失败"];
         }
         return ['success'=>true];
@@ -210,10 +211,10 @@ class OrderController extends Controller
         $waveno=$request->input('waveno');
         if ($waveno && $waveno!='*'){
             OracleDOCWaveDetails::where('waveno',$waveno)->where('orderno',$orderno)->delete();
-            $this->log(__METHOD__,'冻结删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'冻结删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         }
         OracleDOCOrderHeader::where('orderno',$orderno)->update(['releasestatus'=>'H','waveno'=>'*']);
-        $this->log(__METHOD__,'冻结'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'冻结'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>true];
     }
     public function thaw(Request $request){
@@ -223,7 +224,7 @@ class OrderController extends Controller
             $orderno = [$orderno];
         }
         OracleDOCOrderHeader::query()->whereIn('orderno',$orderno)->update(['releasestatus'=>'N']);
-        $this->log(__METHOD__,'解冻'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'解冻'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>true];
     }
 
@@ -232,7 +233,7 @@ class OrderController extends Controller
         if(!Gate::allows('订单管理-编辑')){ return redirect(url('/'));  }
         $orderno=$request->orderno;
         OracleDOCOrderHeader::query()->whereIn('orderno',$orderno)->where('edisendflag2','W')->update(['edisendflag2'=>'N']);
-        $this->log(__METHOD__,'解冻'.__FUNCTION__,json_encode($orderno),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'解冻'.__FUNCTION__,json_encode($orderno),Auth::user()['id']);
         return ['success'=>true];
     }
 
@@ -243,10 +244,10 @@ class OrderController extends Controller
         $waveno=$request->input('waveno');
         if ($waveno && $waveno!='*'){
             OracleDOCWaveDetails::where('waveno',$waveno)->where('orderno',$orderno)->delete();
-            $this->log(__METHOD__,'取消分配删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'取消分配删除波次号'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         }
         OracleDOCOrderHeader::where('orderno',$orderno)->update(['sostatus'=>'00','waveno'=>'*']);
-        $this->log(__METHOD__,'取消分配'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'取消分配'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         $is_deAllocation=$this->isDeAllocation($orderno);
         if($is_deAllocation) return ['success'=>true];
 
@@ -283,7 +284,7 @@ class OrderController extends Controller
         oci_bind_by_name($stmt,':OUT_Return_Code',$OUT_Return_Code,300);
         oci_execute($stmt);
         if (substr($OUT_Return_Code,0,3) != '000'){
-            $this->log(__METHOD__,'调用sp根据订单取消分配失败'.__FUNCTION__,"ORDERNO:".$orderno."ERROR:".$OUT_Return_Code);
+            app('LogService')->log(__METHOD__,'调用sp根据订单取消分配失败'.__FUNCTION__,"ORDERNO:".$orderno."ERROR:".$OUT_Return_Code);
             return false;
         }
         oci_close($conn);

+ 299 - 30
app/Http/Controllers/OrderIssueController.php

@@ -23,6 +23,7 @@ use App\Shop;
 use App\UserWorkgroup;
 use Exception;
 use Illuminate\Http\Request;
+use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\Gate;
@@ -46,7 +47,7 @@ class OrderIssueController extends Controller
         $qualityLabel = QualityLabel::all();
         $logistics = Logistic::all();
         $userWorkgroup = UserWorkgroup::all();
-        return view('order.issue.index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel','userWorkgroup','logistics'));
+        return view('order/issue/index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel','userWorkgroup','logistics'));
     }
 
     public function create()
@@ -117,7 +118,7 @@ class OrderIssueController extends Controller
                 for ($i = 0; $i < count($exception); $i++) {
                     $a .= implode(',', $exception[$i]) . '&#10';
                 };
-                $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+                app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
                 return '<h1 class="text-danger">导入Excel成功<br><textarea style="width: 50%;height: 50%">' . $a . '</textarea></h1>';
             }
         } else {
@@ -127,15 +128,18 @@ class OrderIssueController extends Controller
 
     public function exportOrderIssue(Request $request)
     {
+        ini_set('max_execution_time', 2500);
+        ini_set('memory_limit', '1526M');
         if (!Gate::allows('订单管理-问题件-查询')) {
             return redirect(url('/'));
         }
         if ($request->checkAllSign){
             $params = $request->input();
             unset($params['checkAllSign']);
+
             $sqlList = app('OrderIssueService')->getSqlList($params);
         }else{
-            $sqlList = app('OrderIssueService')->getSqlList(['id'=>$request->data]);
+            $sqlList = app('OrderIssueService')->getSqlList(['id'=>$request->data,"is_handle"=>true]);
         }
         $post = Http::post(config('go.export.url'),['type'=>'orderIssue','sqlList'=>json_encode($sqlList),'createFormat'=>'merge']);
         if ($post->status() == 500){
@@ -183,7 +187,7 @@ class OrderIssueController extends Controller
         $orderIssue = OrderIssue::query()->where('id', $request->input('id'))->first();
         $bool = $orderIssue->delete();
         if ($bool) {
-            $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
             return ['success' => 'true'];
         } else {
             return ['success' => 'false', 'fail_info' => '删除问题单出现异常,请联系管理员'];
@@ -203,15 +207,14 @@ class OrderIssueController extends Controller
             $orderIssue = OrderIssue::query()->find($request->id);
             $orderIssue->update($data);
             $orderIssue->同步退单状态();
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request));
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request));
             return  ['success' => true];
         } catch (Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request)."||".$e->getMessage().'||'.$e->getTraceAsString());
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request)."||".$e->getMessage().'||'.$e->getTraceAsString());
             return  ['success' => false ,'fail_info' => $e->getMessage()];
         }
     }
 
-
     public function apiEndOrderIssue(Request $request)
     {
         if (!Gate::allows('订单管理-问题件-编辑')) {
@@ -228,7 +231,7 @@ class OrderIssueController extends Controller
             foreach ($request->input('ids') as $id) {
                 OrderIssueProcessLog::query()->create(['order_issue_id' => $id, 'user_id' => Auth::user()['id'], 'type' => '结束', 'content' => '完结订单']);
             }
-            $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
             return ['success' => true];
         }
     }
@@ -245,10 +248,10 @@ class OrderIssueController extends Controller
             OrderIssue::query()
                 ->where('id', $request->input('id'))
                 ->update(['is_new_rejecting' => '已处理']);
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
             return ['success'=>true];
         } catch (Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent())."||".$e->getMessage()."||".$e->getTraceAsString());
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent())."||".$e->getMessage()."||".$e->getTraceAsString());
             return ['success' => false,'fail_info' => $e->getMessage()];
         }
     }
@@ -346,10 +349,10 @@ class OrderIssueController extends Controller
             OrderIssue::query()
                 ->where('id', $request->input('id'))
                 ->update([$request->input('column') => $request->input('value')]);
-            LogService::log(__METHOD__,'更新问题件',json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__,'更新问题件',json_encode($request->getContent()));
             return ['success' => true];
         } catch (Exception $e) {
-            LogService::log(__METHOD__,'更新问题件error',json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            app('LogService')->log(__METHOD__,'更新问题件error',json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false, $e->getMessage()];
         }
     }
@@ -361,10 +364,10 @@ class OrderIssueController extends Controller
         }
         try {
             OrderIssue::query()->whereIn('id', $request->input('ids'))->delete();
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
             return ['success' => true];
         } catch (Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request)."||".$e->getMessage()."||".$e->getTraceAsString());
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent())."||".$e->getMessage()."||".$e->getTraceAsString());
             return ['success' => false,'fail_info' => $e->getMessage()];
         }
     }
@@ -380,7 +383,7 @@ class OrderIssueController extends Controller
                 ->with('items')
                 ->where('logistic_number_return',$request->input('logisticNumberReturn'))
                 ->first();
-            LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
             if(!$rejectedBill){
                 $orderIssue->update(['logistic_number_return' => $request->input('logisticNumberReturn')]);
                 return ['success' => false, 'message' => '退回单号已修改,退回单号没有相应退件信息'];
@@ -390,7 +393,7 @@ class OrderIssueController extends Controller
                 return ['success' => true, 'rejectedBill' => $rejectedBill,'rejectingStatus' =>$orderIssue->rejecting_status];
             }
         } catch (Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__,'error'. json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            app('LogService')->log(__METHOD__, __FUNCTION__,'error'. json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false ,'fail_info' => $e->getMessage()];
         }
     }
@@ -461,7 +464,7 @@ class OrderIssueController extends Controller
                return ['success' => true, 'order' => $secondClientNo =='' ? null : $order];
             }
         } catch (Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()).$e->getMessage().$e->getTraceAsString());
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()).$e->getMessage().$e->getTraceAsString());
             return  ['success' =>false ,'fail_info' => $e->getMessage()];
         }
     }
@@ -474,13 +477,21 @@ class OrderIssueController extends Controller
         $service = app(OrderIssueService::class);
         try {
             $message = $service->updateSecondLogisticNumber($request->input('id'), $request->logistic_number);
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
             return $message;
         } catch (Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).$e->getMessage().$e->getTraceAsString());
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).$e->getMessage().$e->getTraceAsString());
             return ['success'=>false,$e->getMessage()];
         }
     }
+
+    public function disposeImportApi(Request $request)
+    {
+        if(!Gate::allows('订单管理-问题件-编辑'))
+            return ['success'=>false,'fail_info'=>'没有对应权限'];
+        return app(OrderIssueService::class)->disposeImport($request->input('ids'));
+    }
+
     public function importPasteDataApi(Request $request)
     {
         if (!Gate::allows('订单管理-订单问题件生成'))
@@ -499,10 +510,13 @@ class OrderIssueController extends Controller
         /** @var OrderIssueService $service */
         $service =  app(OrderIssueService::class);
         foreach ($array as $i => $str) {
-            $string= preg_replace('/[\s,\,\,]+/','*++*',$str);
-            $items = explode('*++*',$string);
+//            $string= preg_replace('/[\s,\,\,]+/','*++*',$str);
+//            $items = explode('*++*',$string);
+            $items=[];
+            preg_match('/^(\w*?)[\s,,;;]([\x{4e00}-\x{9fa5}]*?)[\s,,;;](.*?)[\s,,;;](\w*?)$/u', $str, $items);
+            array_shift($items);
             $head = '第'.($i+1).'行';
-            if(count($items)<count($rows)){
+            if(count($items)<count($rows)-1){
                 $errors[$head] = ['数据不完整'];
                 unset($items);
                 continue;
@@ -537,11 +551,9 @@ class OrderIssueController extends Controller
                     $map['result_explain'] = $items[$index];
                 }
                 if($row==='自定义订单号'){
-                    if(!$items[$index]){
-                        $errors[$head][]='自定义订单号为空';
-                        $map =[];
+                    if($items[$index]??false){
+                        $map['custom_code'] = $items[$index];
                     }
-                    $map['custom_code'] = $items[$index];
                 }
                 if($row==='问题类别'){
                     if(!$items[$index]){
@@ -560,21 +572,278 @@ class OrderIssueController extends Controller
             }
             if(count($map)!==0)$maps[] = $map;
         }
-//        if(count($errors)>0)dd($errors);
+//        if(count($errors)>0)
         if(count($errors)>0) return ['success'=>false,'fail_info'=>$errors];
         try {
-
             foreach ($maps as $map) {
                 $logistic_number = $map['logistic_number'];
                 $result_explain = $map['result_explain'];
                 $type = $map['type'];
-                $custom_code = $map['custom_code'];
+                $custom_code = $map['custom_code'] ?? null;
                 $service->createOrderIssue($logistic_number, $type, $result_explain,'导入未处理',$custom_code);
             }
             return ['success'=>true];
         } catch (Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,'文本导入问题件失败'.json_encode($request->getContent().$e->getMessage().$e->getTraceAsString()));
+            app('LogService')->log(__METHOD__,__FUNCTION__,'文本导入问题件失败'.json_encode($request->getContent().$e->getMessage().$e->getTraceAsString()));
             return ['success'=>false,'fail_info'=>$e->getMessage()];
         }
     }
+
+    public function exportJsonExcel(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-查询')) {
+            return redirect(url('/'));
+        }
+        $params = $request->input();
+        if ($request->checkAllSign){
+            $params = $request->input();
+            unset($params['checkAllSign']);
+        }else{
+            $params['id'] = $request['data'];
+            $params['is_handle'] = true;
+        }
+        /** @var OrderIssueService $service */
+        $service = app('OrderIssueService');
+
+        $order_Issues  = $service->getJsonObj($params);
+        $json = [];
+        $row = [
+            '登记日期','创建日期','客户','客户订单号','原始承运商','收货人','收货电话','省','市','区','收货人地址',
+            '原始运单号','原始商品','原始商品名称','原始商品数量',
+            '退单备注','退单商品名','退单商品条码','退单商品数量','退单状态',
+            '操作类型','说明','操作者','情况说明','问题类别',
+            '二次订单号','二次承运商','二次运单号','二次商品条码','二次商品名','二次商品数量',
+            '最终状态', '承运商赔偿金额', '承运商快递减免', '宝时赔偿金额', '宝时快递减免','事故责任方'
+        ];
+//        return $this->getJson($order_Issues);
+        $count = null;
+        $row_count = 0;
+        $start_row=  0;
+        $mergeRow = []; //合并规则
+        $row_number = 2;
+        $order_Issues->each(function ($order_issue)use(&$json,&$row_number,&$mergeRow){
+            $order = $order_issue->order;
+            $send_order = $order_issue->secondOrder ??  new Order();
+            $logs =  $order_issue->logs ?? collect();
+            $rejectedBill  = $order_issue->rejectedBill ?? new RejectedBill();
+            // 订单信息
+            $order_logistic_number = [];
+            $order_info = [];
+            $order->packages->each(function($package)use(&$order_logistic_number,&$order_info){
+                $order_logistic_number [] = $package->logistic_number;
+                $package->commodities->each(function($commodities)use(&$order_info){
+                    $sku = $commodities->commodity;
+                    if($sku?? false)
+                        $order_info[]=['sku'=>$sku->sku,'sku_name'=>$sku->name,'amount'=>$commodities->amount];
+                });
+             });
+            // 二次订单信息
+            $send_order_logistic_number  = [];
+            $send_order_info = [];
+            $send_order->packages->each(function($package)use(&$send_order_logistic_number,&$send_order_info){
+                $send_order_logistic_number [] = $package->logistic_number;
+                $package->commodities->each(function($commodities)use(&$send_order_info){
+                    $sku = $commodities->commodity;
+                    if($sku?? false)
+                        $send_order_info[] = ['send_sku'=>$sku->sku ?? '','send_sku_name'=>$sku->name ?? '','send_amount'=>$commodities->amount ?? ''];
+                });
+            });
+
+            // 退回单信息
+            $rejected_Bill_info = [];
+            $rejected_Bill_remark =$rejectedBill->remark ?? '';
+            $rejectedBill->items->each(function($item)use(&$rejected_Bill_info){
+                $rejected_Bill_info[] = ['rejected_item_name'=>$item->name_goods,'rejected_item_barcode'=>$item->barcode_goods,'rejected_item_amount'=>$item->amount];
+            });
+            $logs_info = [];
+            $logs->each(function($log)use(&$logs_info){
+                $logs_info[] = ['log_type'=>$log->type,'log_content'=>$log->content,'log_user'=>$log->user->name];
+            });
+            $rows = [count($rejected_Bill_info),count($logs_info),count($send_order_info),count($order_info)];
+            $max_rows = max($rows);
+            $start_row = $row_number;
+            for ($index =0 ;$index<$max_rows ;$index++){
+                $json[] = [
+                    isset($order_issue->created_at) ? str_split($order_issue->created_at,10)[0] :'',       // 登记日期
+                    isset($order->created_at) ? str_split($order->created_at,10)[0] :'',             // 创建日期
+                    $order->owner->name ?? '',      // 客户
+                    $order->client_code,              // 客户订单号
+                    $order->logistic->name ?? '',   // 原始承运商
+                    $order->consignee_name,         // 收货人
+                    $order->consignee_phone,        // 收货电话
+                    $order->province,               // 省
+                    $order->city,                   // 市
+                    $order->district,               // 区
+                    $order->address,                // 收货人地址
+
+                    $order_logistic_number[$index]??'',     //原始运单号
+                    $order_info[$index]['sku']??'',         //原始商品
+                    $order_info[$index]['sku_name']??'',    //原始商品名称
+                    $order_info[$index]['amount']??'',      //原始商品数量
+
+                    //'退单备注','退单商品名','退单商品条码','退单商品数量','退单状态',
+                    $rejected_Bill_remark,                                          // 退单备注
+                    $rejected_Bill_info[$index]['rejected_item_name'] ?? '',        // 退单商品名
+                    $rejected_Bill_info[$index]['rejected_item_barcode'] ?? '' ,    // 退单商品条码
+                    $rejected_Bill_info[$index]['rejected_item_amount'] ?? '',      // 退单商品数量
+                    $order_issue->rejecting_status ,                                // 退单状态
+
+                    // '操作类型','情况说明','问题类别',
+                    $logs_info[$index]['log_type'] ?? '',                        //操作类型
+                    $logs_info[$index]['log_content'] ?? '',                     //情况说明
+                    $logs_info[$index]['log_user'] ?? '',                        //操作者
+
+                    // '情况说明','问题类别',
+                    $order_issue->result_explain,                               // 情况说明
+                    $order_issue->issueType->name ?? '',                                   // 问题类别
+
+                    // '二次订单号','二次承运商','二次运单号','二次商品条码','二次商品名','二次商品数量',
+                    $order_issue->secondOrder->client_code ?? '',                //二次订单号
+                    $order_issue->secondOrder->logistic->name ?? '',            //二次承运商
+                    $send_order_logistic_number[$index] ?? '' ,                 //二次运单号
+                    $send_order_info[$index]['send_sku'] ?? '',                // 二次商品条码
+                    $send_order_info[$index]['send_sku_name'] ?? '',            // 二次商品名
+                    $send_order_info[$index]['send_amount'] ?? '',              // 二次商品数量
+
+                    //'最终状态', '承运商赔偿金额', '承运商快递减免', '宝时赔偿金额', '宝时快递减免','事故责任方'
+                    $order_issue->final_status??'',
+                    $order_issue->logistic_indemnity_money ,
+                    $order_issue->logistic_express_remission,
+                    $order_issue->baoshi_indemnity_money,
+                    $order_issue->baoshi_express_remission,
+                    $order_issue->userWorkGroup->name ?? '',
+                ];
+                $row_number++;
+            }
+            if($max_rows>1){
+                $mergeRow[(string)($start_row)]  =(string)($row_number-1);
+            }
+        });
+        $mergeColumn = ['A','B','C','D','E','F','G','H','I','J','K','L','P','T','X','Y','Z','AA','AF','AG','AH','AI','AJ','AK'];   // 合并行
+        $post=Http::post(config('go.export.url'),['type'=>'base',
+            'data'=>json_encode(['row'=>$row,'list'=>$json,'mergeColumn'=>$mergeColumn,'mergeRow'=>$mergeRow],JSON_UNESCAPED_UNICODE),'createFormat'=>'merge']);
+        // 'createFormat'=>'wrapText'
+        if ($post->status() == 500){
+            throw new Exception($post->header("Msg"));
+        }
+        return response($post,200, [
+            "Content-type"=>"application/octet-stream",
+            "Content-Disposition"=>"attachment; filename=订单问题件-".date('ymdHis').'.xlsx',
+        ]);
+    }
+
+    public function getJson($order_Issues){
+        $json = [];
+        $row = [
+            '登记日期','创建日期','客户','客户订单号','原始承运商','收货人','收货电话','省','市','区','收货人地址',
+            '原始运单号','原始商品','原始商品名称','原始商品数量',
+            '退单备注','退单商品名','退单商品条码','退单商品数量','退单状态',
+            '操作类型','说明','操作者','情况说明','问题类别',
+            '二次订单号','二次承运商','二次运单号','二次商品条码','二次商品名','二次商品数量',
+            '最终状态', '承运商赔偿金额', '承运商快递减免', '宝时赔偿金额', '宝时快递减免','事故责任方'
+        ];
+        foreach ($order_Issues as $order_issue){
+            $order =  $order_issue->order;
+            $orderPacakges = $order_issue->order->packages ?? collect();
+            $logistic_numbers = '';$order_sku  = '';$order_sku_name  = '';$order_sku_amount  = '';
+            $orderPacakges->each(function($package)use(&$logistic_numbers,&$order_sku,&$order_sku_name,&$order_sku_amount){
+                $logistic_numbers.=$package->logistic_number.'\r\n';
+                $package->commodities->each(function($commodities)use(&$order_sku,&$order_sku_name,&$order_sku_amount){
+                    $commodity = $commodities->commodity ?? '';
+                    $order_sku.= ($commodity->sky ?? '').'\r\n';
+                    $order_sku_name.= ($commodity->name ?? '').'\r\n';
+                    $order_sku_amount.= ($commodities->amount ?? '').'\r\n';
+                });
+            });
+            $rejected_Bill_remark = $order_issue->rejectedBill->remark ?? '';
+            $rejected_name = ''; $rejected_barcode = '';$rejected_amount = '';
+            if(isset($order_issue->rejectedBill)){
+                $order_issue->rejectedBill->items(function($item)use(&$rejected_name,&$rejected_barcode, &$rejected_amount){
+                    $rejected_name.= $item->name_goods.'\r\n';
+                    $rejected_barcode.= $item->barcode_goods.'\r\n';
+                    $rejected_amount.= $item->amount.'\r\n';
+                });
+            }
+            $log_type = ''; $log_content = '';$log_user = '';
+            $order_issue->logs->each(function($log)use(&$log_type, &$log_content,&$log_user){
+                $log_type.=$log->type.'\r\n';
+                $log_content.=$log->content.'\r\n';
+                $log_user.=$log->user->name.'\r\n';
+            });
+            $send_order = $order_issue->secondOrder ??  new Order();
+            $send_order_numbers = '';$send_order_sku ='';$send_order_name ='';$send_order_amount = '';
+            $send_order->packages->each(function($package)use(&$send_order_numbers ,&$send_order_sku ,&$send_order_name ,&$send_order_amount ){
+                $send_order_numbers.=($package->logistic_number).'\r\n';
+                $package->commodities->each(function ($commodities)use( &$send_order_sku ,&$send_order_name ,&$send_order_amount ){
+                    $commodity = $commodities->commodity;
+                    $send_order_sku.=$commodity->sku.'\r\n';
+                    $send_order_name.=$commodity->name.'\r\n';
+                    $send_order_amount.=$commodities->amount.'\r\n';
+                });
+            });
+
+            $json[] = [
+                isset($order_issue->created_at) ? str_split($order_issue->created_at,10)[0] :'',       // 登记日期
+                isset($order->created_at) ? str_split($order->created_at,10)[0] :'',             // 创建日期
+                $order->owner->name ?? '',      // 客户
+                $order->client_code,              // 客户订单号
+                $order->logistic->name ?? '',   // 原始承运商
+                $order->consignee_name,         // 收货人
+                $order->consignee_phone,        // 收货电话
+                $order->province,               // 省
+                $order->city,                   // 市
+                $order->district,               // 区
+                $order->address,                // 收货人地址
+
+                $logistic_numbers,              //原始运单号
+                $order_sku,                     //原始商品
+                $order_sku_name,                //原始商品名称
+                $order_sku_amount,              //原始商品数量
+
+                //'退单备注','退单商品名','退单商品条码','退单商品数量','退单状态',
+                $rejected_Bill_remark,                                          // 退单备注
+                $rejected_name,        // 退单商品名
+                $rejected_barcode ,    // 退单商品条码
+                $rejected_amount,      // 退单商品数量
+                $order_issue->rejecting_status ,                                // 退单状态
+
+                // '操作类型','情况说明','问题类别',
+                $log_type,                        //操作类型
+                $log_content,                     //情况说明
+                $log_user,                        //操作者
+
+                // '情况说明','问题类别',
+                $order_issue->result_explain,                               // 情况说明
+                $order_issue->issueType->name ?? '',                                   // 问题类别
+
+                // '二次订单号','二次承运商','二次运单号','二次商品条码','二次商品名','二次商品数量',
+                $order_issue->secondOrder->client_code ?? '',                //二次订单号
+                $order_issue->secondOrder->logistic->name ?? '',             //二次承运商
+                $send_order_numbers ,                                        //二次运单号
+                $send_order_sku,                                             // 二次商品条码
+                $send_order_name,                                            // 二次商品名
+                $send_order_amount,                                          // 二次商品数量
+
+                //'最终状态', '承运商赔偿金额', '承运商快递减免', '宝时赔偿金额', '宝时快递减免','事故责任方'
+                $order_issue->final_status??'',
+                $order_issue->logistic_indemnity_money ,
+                $order_issue->logistic_express_remission,
+                $order_issue->baoshi_indemnity_money,
+                $order_issue->baoshi_express_remission,
+                $order_issue->userWorkGroup->name ?? '',
+            ];
+        }
+        $mergeColumn = ['A','B','C','D','E','F','G','H','I','J','K','L','P','T','X','Y','Z','AA','AF','AG','AH','AI','AJ','AK'];   // 合并行
+        $post=Http::post(config('go.export.url'),['type'=>'base',
+            'data'=>json_encode(['row'=>$row,'list'=>$json,'mergeColumn'=>$mergeColumn],JSON_UNESCAPED_UNICODE), 'createFormat'=>'wrapText']);
+        // 'createFormat'=>'wrapText'
+        if ($post->status() == 500){
+            throw new Exception($post->header("Msg"));
+        }
+        return response($post,200, [
+            "Content-type"=>"application/octet-stream",
+            "Content-Disposition"=>"attachment; filename=订单问题件-".date('ymdHis').'.xlsx',
+        ]);
+    }
+
 }

+ 5 - 5
app/Http/Controllers/OrderIssueProcessLogController.php

@@ -30,10 +30,10 @@ class OrderIssueProcessLogController extends Controller
                 if ($log) {
                     $log->user = $log->hasOne(User::class, 'id', 'user_id')->first();
                 }
-                LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
+                app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
                 return ['success' =>true,'data' =>$log ];
             } catch (\Exception $e) {
-                LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
+                app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
                 return ['success' => false, 'fail_info' => $e->getMessage()];
             }
         } else {
@@ -46,7 +46,7 @@ class OrderIssueProcessLogController extends Controller
             return ['success'=>false,'fail_info'=>'没有传入对应参数'];
         }
         OrderIssueProcessLog::query()->where('id',$request->input('id'))->delete();
-        LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
+        app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
         return ['success'=>true];
     }
 
@@ -67,10 +67,10 @@ class OrderIssueProcessLogController extends Controller
             foreach ($logs as $log) {
                 $result_data[$log->order_issue_id] =$log;
             }
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()));
             return ['success' => true,'logs' => $result_data];
         } catch (\Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).'||'.$e->getMessage()."||".$e->getTraceAsString());
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->getContent()).'||'.$e->getMessage()."||".$e->getTraceAsString());
             return ['success' => false,$e->getMessage()];
         }
     }

+ 181 - 17
app/Http/Controllers/OrderTrackingController.php

@@ -3,13 +3,18 @@
 namespace App\Http\Controllers;
 
 use App\Logistic;
+use App\Order;
+use App\OrderTracking;
 use App\Services\LogService;
 use App\Services\OrderTrackingService;
 use App\Services\OwnerService;
+use App\UploadFile;
 use Exception;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Http;
+use Intervention\Image\Facades\Image;
+use Ramsey\Uuid\Uuid;
 
 class OrderTrackingController extends Controller
 {
@@ -18,10 +23,17 @@ class OrderTrackingController extends Controller
     {
         if (!Gate::allows('订单管理-跟踪'))
             return redirect(url('/'));
-
         $owners =  app(OwnerService::class)->getAuthorizedOwners();
+        /** @var OrderTrackingService $service */
         $service = app('OrderTrackingService');
         $trackOrders = $service->paginate($request->input());
+        $trackOrders->map(function($trackOrder){
+            if($trackOrder->uploadFile){
+                if(!str_starts_with($trackOrder->uploadFile->url,'http')){
+                    $trackOrder->uploadFile->url = asset('/storage'.$trackOrder->uploadFile->url);
+                }
+            }
+        });
         $logistics = Logistic::all();
         return view('order.tracking.index', compact('owners', 'trackOrders','logistics'));
     }
@@ -31,11 +43,11 @@ class OrderTrackingController extends Controller
         if (!Gate::allows('订单管理-跟踪-物流公司编辑'))
             return redirect(url('/'));
         try {
-            $bool = app(OrderTrackingService::class)->updateOrderTracingAndSyc($request->input('id'),$request->input('param'),$request->input('value'));
-            LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()) );
-            return $bool;
+            $message = app(OrderTrackingService::class)->updateOrderTracingAndSyc($request->input('id'),$request->input('param'),$request->input('value'));
+            app('LogService')->log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()) );
+            return $message;
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            app('LogService')->log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false];
         }
     }
@@ -45,31 +57,167 @@ class OrderTrackingController extends Controller
         if (!Gate::allows('订单管理-跟踪-仓库编辑'))
             return redirect(url('/'));
         try {
-            $bool = app(OrderTrackingService::class)->updateOrderTracingAndSyc($request->input('id'),$request->input('param'),$request->input('value'));
-            LogService::log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
-            return $bool;
+            $message = app(OrderTrackingService::class)->updateOrderTracingAndSyc($request->input('id'),$request->input('param'),$request->input('value'));
+            app('LogService')->log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
+            return $message;
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            app('LogService')->log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false];
         }
     }
 
+    public function updateLogisticIdApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-跟踪-仓库编辑'))
+            return ['success'=>false,'fail_info'=>'没有对应权限'];
+        try {
+            $logistic = Logistic::query()->where('name',$request['value'])->first();
+            $order = Order::query()->whereHas('packages.commodities.orderTracking',function($query)use($request){
+                $query->where('id',$request['id']);
+            })->first();
+            $order->update(['logistic_id'=>$logistic->id]);
+            app('LogService')->log(__METHOD__, __FUNCTION__, '更新成功' . json_encode($request->getContent()));
+            return ['success'=>true];
+        } catch (\Exception $e) {
+            app('LogService')->log(__METHOD__, __FUNCTION__, '更新失败' . json_encode($request->getContent()) .'||'.$e->getMessage().'||'.$e->getTraceAsString());
+            return ['success' => false,'fail_info'=>$e->getMessage()];
+        }
+
+    }
+
+    public function upload(Request $request)
+    {
+        if (!Gate::allows('订单管理-跟踪-物流公司编辑'))
+            return ['success'=>false,'fail_info'=>'没有对应权限'];
+        $file=$request->file('file');
+        /** @var OrderTracking $orderTracking */
+        $orderTracking = OrderTracking::query()->with('uploadFile')->find($request['id']);
+        if(!$orderTracking){
+            return ['success'=>false,'error'=>'未找到该追踪件'];
+        }
+        if($orderTracking->uploadFile){
+            return ['success'=>false,'error'=>'该运单已存在照片!'];
+        }
+        if(!$file){
+            return ['success'=>false,'error'=>'照片不能为空!'];
+        }
+        if(!$file->isValid()){
+            return ['success'=>false,'error'=>'找不到照片'];
+        }
+        $tmpFile = $file->getRealPath();
+        if(!is_uploaded_file($tmpFile)){
+            return ['success'=>false,'error'=>'文件错误'];
+        }
+        $fileExtension=$file->getClientOriginalExtension();
+        $fileName=date('ymd').'-'.Uuid::uuid1(); // 文件名生成
+        $thumbnailName=storage_path('app/public/files/'.$fileName.'-thumbnail.'.$fileExtension);
+        $commonName=storage_path('app/public/files/'.$fileName.'-common.'.$fileExtension);
+        $bulkyName=storage_path('app/public/files/'.$fileName.'-bulky.'.$fileExtension);
+        $result=move_uploaded_file ($tmpFile ,$bulkyName);
+        if($result) {
+            $img = Image::make($bulkyName);
+            if ($img->height() > $img->width()) {
+                $img->heighten(250)->save($commonName);
+            } else {
+                $img->widen(250)->save($commonName);
+            }
+            $img->heighten(28)->save($thumbnailName);
+            $uploadFile=new UploadFile([
+                "table_name"=>"order_trackings",
+                "table_id"=>$orderTracking->order_client_code,
+                "url"=>'/files/'.$fileName,
+                "type"=>$fileExtension,
+            ]);
+            if ($uploadFile->save()){
+                app('LogService')->log(__METHOD__, '追踪件 图片上传' . __FUNCTION__, json_encode($request));
+            }
+            $uploadFile->url=asset('/storage'.$uploadFile->url);
+            return ['success'=>true,'data'=>$uploadFile];
+        }
+        return ['success'=>false,'error'=>'图片上传失败'];
+    }
+
     public function export(Request $request)
     {
         if (!Gate::allows('订单管理-跟踪'))
             return redirect(url('/'));
         /** @var OrderTrackingService $service */
         $service = app(OrderTrackingService::class);
-        $sql = $service->getSql($request->input());
+        $orderTrackings = $service->getOrderTrackings($request->input());
+//        $column = ['owners_name','order_client_code','web_order_number','pick_up_at','sale','client','sku','sku_name','amount','order_remark',
+//            'gross_weight','bulk','pallet_total','logistic_name','logistic_number','city','planning_sent_at','is_on_duty_shift','is_arrival','signed_at','receive_bill_status','remark'];
+        $rule = ["pick_up_at"=> "mysqlDate",'planning_sent_at'=>"mysqlDate"];
+
         $row = ['公司','订单号','WEB+订单号','提货日期','销售','客户','SKU','物料描述','数量','订单备注','重量','体积',
             '托盘合计','运输方式','运输单号','到达城市','应送达时间','是否赶上卡班','到货情况','签收日期','签收单情况','备注'];
-        $column = ['owners_name','order_client_code','web_order_number','pick_up_at','sale','client','sku','sku_name','amount','order_remark',
-            'gross_weight','bulk','pallet_total','logistic_name','logistic_number','city','planning_sent_at','is_on_duty_shift','is_arrival','signed_at','receive_bill_status','remark'];
-        $mergeColumn = ['M'];
-        $rule = ["pick_up_at"=> "mysqlDate"];
-        $post = Http::post(config('go.export.url'),['type'=>'unify','sql'=>$sql, 'connection'=>'mysql','rule' => json_encode($rule),
-            'row'=>json_encode($row,JSON_UNESCAPED_UNICODE), 'column'=>json_encode($column),
-            'mergeColumn'=>json_encode($mergeColumn),'datum'=>'pick_up_at','createFormat'=>'merge']);
+        $mergeColumn = ['A','B','C','D','E','F','J','N','P','P','Q','R','S','T','U','V','M'];
+        $mergeRow = [];
+        $list=[];
+        $start_row = 0;
+        $order_client_code_temp = '';
+        $row_count = 0;
+        foreach ($orderTrackings as $index=> $orderTracking) {
+            $logistic =  $orderTracking->commodities->package->order->logistic->name;
+            if($order_client_code_temp==''){
+                $order_client_code_temp=$orderTracking->order_client_code;
+                $row_count=1;
+            }else if($order_client_code_temp==$orderTracking->order_client_code){
+                $row_count++;
+                if($index == $orderTrackings->count()-1){
+                    if($row_count>1){
+                        $end_row=$index+2;
+                        $start_row = $index+3-$row_count;
+                        $mergeRow[(string)($start_row)]=(string)($end_row);
+                    }
+                }
+            }else if($order_client_code_temp!=$orderTracking->order_client_code){
+                if($row_count>1){
+                    $end_row=$index+1;
+                    $start_row = $index+2-$row_count;
+                    $mergeRow[(string)($start_row)]=(string)($end_row);
+                }
+                $start_row=$index+2;
+                $row_count=1;
+                $order_client_code_temp = $orderTracking->order_client_code;
+            }
+
+            $order_client_code = $orderTracking->web_order_number?'':$orderTracking->order_client_code;
+            $web_order_number = $orderTracking->web_order_number??'';
+            $pick_up_at=str_split($orderTracking->pick_up_at,10)[0];
+            $planning_sent_at=str_split($orderTracking->planning_sent_at,10)[0];
+            $signed_at=str_split($orderTracking->signed_at,10)[0];
+            $logistic_number =$orderTracking->commodities->package->logistic_number;
+            if($logistic=='新杰物流'||$logistic=='新杰物流到付'){
+                $logistic_number = $orderTracking->order_client_code;
+            }
+            $list[]=[
+                $orderTracking->owner->name ?? '',
+                $order_client_code,
+                $web_order_number,
+                $pick_up_at=='0000-00-00'?'':$pick_up_at,
+                $orderTracking->sala,
+                $orderTracking->client,
+                $orderTracking->commodities->commodity->sku ?? '',
+                $orderTracking->commodities->commodity->name ?? '',
+                $orderTracking->commodities->amount ?? '',
+                $orderTracking->order_remark,
+                $orderTracking->gross_weight,
+                $orderTracking->bulk,
+                $orderTracking->pallet_total,
+                $orderTracking->commodities->package->order->logistic->name ??'',
+                $logistic_number,
+                $orderTracking->commodities->package->order->city ?? '',
+                $planning_sent_at=='0000-00-00'?'':$planning_sent_at,
+                $orderTracking->is_on_duty_shift,
+                $orderTracking->is_arrival,
+                $signed_at=='0000-00-00'?'':$signed_at,
+                $orderTracking->receive_bill_status,
+                $orderTracking->remark,
+            ];
+        }
+        $post=Http::post(config('go.export.url'),['type'=>'base','data'=>json_encode(['row'=>$row,'list'=>$list,'mergeColumn'=>$mergeColumn,'mergeRow'=>$mergeRow],JSON_UNESCAPED_UNICODE),
+            'createFormat'=>'merge']);
+
         if ($post->status() == 500){
             throw new Exception($post->header("Msg"));
         }
@@ -77,6 +225,22 @@ class OrderTrackingController extends Controller
             "Content-type"=>"application/octet-stream",
             "Content-Disposition"=>"attachment; filename=订单跟踪件-".date('ymdHis').'.xlsx',
         ]);
+    }
 
+    public function destroyImg(Request $request)
+    {
+        if(!Gate::allows('订单管理-跟踪-物流公司编辑'))
+            return ['success'=>false,'error'=>'没有对应权限'];
+        $orderTracking = OrderTracking::query()->where('id',$request['id'])->first();
+        if(!$orderTracking){
+            return ['success'=>false,'error'=>'没有找到对应id'];
+        }
+        try {
+            return ['success'=>UploadFile::query()->where('table_name', 'order_trackings')->where('table_id', $orderTracking->order_client_code)->delete()];
+        } catch (Exception $e) {
+            app('LogService')->log(__METHOD__,__FUNCTION__,'追踪件删除照片'.json_encode($e->getMessage()).json_encode($e->getTraceAsString()));
+            return ['success'=>false,'error'=>$e->getMessage()];
+        }
     }
 }
+

+ 4 - 4
app/Http/Controllers/OwnerController.php

@@ -70,7 +70,7 @@ class OwnerController extends Controller
         ]);
         $authority->save();
 
-        $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+        app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return redirect('maintenance/owner/create')->with('successTip', $request->input('name') ?? '');
     }
 
@@ -126,7 +126,7 @@ class OwnerController extends Controller
         $owner->fill($request->all());
         $owner->update();
         event(new CustomerStored($owner));
-        $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+        app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return redirect('maintenance/owner/')->with('successTip', "成功修改货主{$owner['name']}!");
     }
 
@@ -145,7 +145,7 @@ class OwnerController extends Controller
         $re = $owner->update([
             "deleted_at" => date('Y-m-d H:i:s'),
         ]);
-        $this->log(__METHOD__, __FUNCTION__, $owner->toJson(), Auth::user()['id']);
+        app('LogService')->log(__METHOD__, __FUNCTION__, $owner->toJson(), Auth::user()['id']);
         return ['success' => $re];
     }
 
@@ -167,7 +167,7 @@ class OwnerController extends Controller
         $owner = Owner::query()->whereNotNull('deleted_at')->where('id', $id)->update([
             "deleted_at" => null,
         ]);
-        $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+        app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return ['success' => 'true', 'owner' => $owner];
     }
 }

+ 3 - 29
app/Http/Controllers/PackageController.php

@@ -4,7 +4,6 @@ namespace App\Http\Controllers;
 
 use App\OrderPackage;
 use App\PaperBox;
-use App\Services\LogisticService;
 use App\Services\OrderPackageService;
 use App\Services\OwnerService;
 use App\Services\PackageService;
@@ -20,18 +19,6 @@ use Illuminate\Support\Facades\Validator;
 
 class PackageController extends Controller
 {
-
-    public function __construct()
-    {
-        app()->singleton('PackageService',PackageService::class);
-    }
-
-    /**
-     * Display a listing of the resource.
-     * @param Request $request
-     * @param OwnerService $ownerService
-     * @return void
-     */
     public function index(Request $request,OwnerService $ownerService)
     {
         if(!Gate::allows('称重管理-查询')){ return redirect(url('/'));  }
@@ -42,11 +29,6 @@ class PackageController extends Controller
         return view('weight.package.index',['packages'=>$packages,'owners'=>$ownerService->getSelection(),'paginateParams'=>$paginateParams]);
     }
 
-    /**
-     * Show the form for creating a new resource.
-     *
-     * @return void
-     */
     public function create()
     {
         if(!Gate::allows('称重管理-录入')){ return redirect(url('/'));  }
@@ -90,7 +72,7 @@ class PackageController extends Controller
         }
         $accomplishToWMS=new Api\thirdPart\flux\PackageController();
         if($batch_number){
-            $this->log(__METHOD__,'活动波次开始同步_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
+            app('LogService')->log(__METHOD__,'活动波次开始同步_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
 //            $this->syncBatch($package->batch_number,$weight,null,null,null,Carbon::now(),null);
             $result=$accomplishToWMS->markWMSOnBatch($batch_number,$weight);
             OrderPackage::createPackagesFromBatchCode($batch_number,$weight);
@@ -119,7 +101,7 @@ class PackageController extends Controller
                 $package->status="上传异常";
             }
             $package->save();
-            $this->log(__METHOD__,'create_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
+            app('LogService')->log(__METHOD__,'create_'.__FUNCTION__,json_encode($package),Auth::user()['name']);
 //            event(new WeighedEvent($package));
         }else{
             /** @var OrderPackageService */
@@ -138,7 +120,7 @@ class PackageController extends Controller
                 $str = "录入包裹失败!";
                 $str .= $package['logistic_number']?"快递单号:{$package['logistic_number']}":'';
                 $str .= $order_code?", 订单号:{$order_code}":'';
-                $this->log(__METHOD__,__FUNCTION__,json_encode($package).json_encode($result).$str,Auth::user()['name']);
+                app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($package).json_encode($result).$str,Auth::user()['name']);
             }
             $package->save();
             $successTip = $str;
@@ -146,13 +128,6 @@ class PackageController extends Controller
         return redirect('package/create')->with('successTip', $successTip);
     }
 
-
-    /**
-     * @param Request $request
-     * @return void
-     * @var LogisticService
-     * @var OwnerService
-     */
     public function statistics(Request $request){
         $packages = app('PackageStatisticsService')->get($request->input());
         $owners=app('OwnerService')->getSelection();
@@ -303,5 +278,4 @@ class PackageController extends Controller
         ]);
     }
 
-
 }

+ 5 - 5
app/Http/Controllers/PaperBoxController.php

@@ -82,7 +82,7 @@ class PaperBoxController extends Controller
         if ($owner_id){
             $paperBox->owners()->sync($owner_id);
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/paperBox/index/model')->with('successTip','新纸箱'.$request->input('model').'录入成功');
     }
 
@@ -134,7 +134,7 @@ class PaperBoxController extends Controller
         if ($owner_id){
             $paperBox->owners()->sync($owner_id);
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/paperBox/index/model')->with('successTip','纸箱'.$request->input('model').'信息更新成功');
     }
 
@@ -146,10 +146,10 @@ class PaperBoxController extends Controller
     {
         if(!Gate::allows('纸箱-删除')){ return redirect(url('/'));  }
         $paperBox=PaperBox::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($paperBox),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($paperBox),Auth::user()['id']);
         if ($paperBox->delete()){
             $paperBox->owners()->detach();
-            $this->log(__METHOD__,__FUNCTION__,json_encode($paperBox),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($paperBox),Auth::user()['id']);
             return ['success'=>true];
         }else{
             return ['success'=>false];
@@ -173,7 +173,7 @@ class PaperBoxController extends Controller
                 $exception=Cache::get('exception');
                 $a='';
                 for ($i=0;$i<count($exception);$i++){$a.=implode(',',$exception[$i]).'&#10'; };
-                $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
                 return '<h1 class="text-danger">导入Excel成功<br><textarea style="width: 50%;height: 50%">'.$a.'</textarea></h1>';
             }
         }else{

+ 10 - 10
app/Http/Controllers/PersonnelController.php

@@ -49,7 +49,7 @@ class PersonnelController extends Controller
         if ($userDutyCheckBefore['type']=='登出'&&$userDutyCheck->type=='登出')return ['result'=>true,'data'=>'已存在出场记录!'];
         if ($type=='登出')$userDutyCheck->verify_user_id=Auth::user()['id'];
         $userDutyCheck->save();
-        $this->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"录入补卡".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
         $errorMessage=$this->makeOrUpdateLaborReport($userDutyCheck);
         if ($errorMessage)return $errorMessage;
         return ['success'=>true,'data'=>$userDutyCheck];
@@ -61,7 +61,7 @@ class PersonnelController extends Controller
         $laborReportService = app('LaborReportService');
         if (!$laborReport&&$userDutyCheck->type=='登入'){
             $newReport=$userDutyCheck->makeEnteringRecord();
-            $this->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
+            app('LogService')->log(__METHOD__,"进场创建临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck]));
             if ($newReport) event(new ImportEvent($newReport));
         }
         else if(!$laborReport&&$userDutyCheck->type=='登出'){
@@ -74,7 +74,7 @@ class PersonnelController extends Controller
             }
             if ($laborReportYesterday){
                 $exportReport=$laborReportService->exportReplenishToCreateLaborReportData($laborReportYesterday,$userDutyCheck);
-                $this->log(__METHOD__,"补退场卡修改临时工报表记录__".__FUNCTION__,json_encode([$laborReportYesterday,$userDutyCheck]));
+                app('LogService')->log(__METHOD__,"补退场卡修改临时工报表记录__".__FUNCTION__,json_encode([$laborReportYesterday,$userDutyCheck]));
                 if ($exportReport) event(new ExportEvent($exportReport));
             }
         }else if($laborReport){
@@ -83,7 +83,7 @@ class PersonnelController extends Controller
                 return ['result'=>true,'data'=>'该临时工还未退组,暂不可补退场卡!'];
             }
             $exportReport=$laborReportService->exportReplenishToCreateLaborReportData($laborReport,$userDutyCheck);
-            $this->log(__METHOD__,"补退场卡修改临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
+            app('LogService')->log(__METHOD__,"补退场卡修改临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
             if ($exportReport) event(new ExportEvent($exportReport));
         }
     }
@@ -100,7 +100,7 @@ class PersonnelController extends Controller
         if (!$id)return ['error'=>'未找到对应记录!'];
         $processDailyParticipant->status='已审核';
         $processDailyParticipant->update();
-        $this->log(__METHOD__,"任务审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"任务审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
         return;
     }
 
@@ -140,7 +140,7 @@ class PersonnelController extends Controller
         $userDutyCheck->type=$type;
         $userDutyCheck->verify_user_id=Auth::user()['id'];
         $userDutyCheck->update();
-        $this->log(__METHOD__,"打卡审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"打卡审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
         return ["success"=>true,"data"=>$userDutyCheck->verify_user_id];
     }
 
@@ -161,7 +161,7 @@ class PersonnelController extends Controller
         $laborReport=LaborReport::where('user_id',$userDutyCheck->user_id)->where('user_workgroup_id',$workgroup->id)->orderBy('id','desc')->first();
         if (!$laborReport){
             $laborReportNew=LaborReport::createLaborReportData($userDutyCheck);
-            $this->log(__METHOD__,"提交临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck->user_id,$userDutyCheck->workgroup_id,$userDutyCheck]));
+            app('LogService')->log(__METHOD__,"提交临时工报表记录__".__FUNCTION__,json_encode([$userDutyCheck->user_id,$userDutyCheck->workgroup_id,$userDutyCheck]));
             //验证五分钟之内重新换组情况
             $checkInDateNow=Carbon::parse($laborReportNew->created_at)->format('Y-m-d H');
             $laborReports=LaborReport::where('user_id',$userDutyCheck->user_id)->where('created_at','like',$checkInDateNow."%")->orderBy('created_at','DESC')->limit(2)->get();
@@ -176,7 +176,7 @@ class PersonnelController extends Controller
             }
         }else if ($laborReport){
             LaborReport::updateLaborReportVerify($laborReport,$userDutyCheck);
-            $this->log(__METHOD__,"打卡组长审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,"打卡组长审核".__FUNCTION__,json_encode($userDutyCheck),Auth::user()['id']);
         }
         event(new TeamAuditEvent($userDutyCheck));
         return ["success"=>true,"data"=>$userDutyCheck->group_user_id];
@@ -288,9 +288,9 @@ class PersonnelController extends Controller
         $laborReport=LaborReport::where('user_workgroup_id',$userDutyCheck->workgroup_id)->where('user_id',$userDutyCheck->user_id)->orderBy('id','desc')->first();
         if ($laborReport&&$userDutyCheck->type){
             LaborReport::updateLaborReportData($laborReport,$userDutyCheck);
-            $this->log(__METHOD__,"更新临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
+            app('LogService')->log(__METHOD__,"更新临时工报表记录__".__FUNCTION__,json_encode([$laborReport,$userDutyCheck]));
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>true,'data'=>$userDutyCheck];
     }
 }

+ 55 - 32
app/Http/Controllers/ProcessController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\Commodity;
 use App\CommodityBarcode;
+use App\Events\ResetProcessStatisticStartDateEvent;
 use App\LaborReport;
 use App\Owner;
 use App\Process;
@@ -20,6 +21,7 @@ use App\UserDutyCheck;
 use App\UserLabor;
 use Carbon\Carbon;
 use Exception;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\DB;
@@ -166,7 +168,7 @@ class ProcessController extends Controller
         $process->status="已驳回";
         $process->update();
         $process->createOperatorLog('驳回');
-        $this->log(__METHOD__,"驳回二次加工单_".__FUNCTION__,json_encode($process),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"驳回二次加工单_".__FUNCTION__,json_encode($process),Auth::user()['id']);
         return $process;
     }
     //接单
@@ -188,7 +190,7 @@ class ProcessController extends Controller
         $process->status="待加工";
         $process->update();
         $process->createOperatorLog('接单');
-        $this->log(__METHOD__,"接单二次加工单_".__FUNCTION__,json_encode($process),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"接单二次加工单_".__FUNCTION__,json_encode($process),Auth::user()['id']);
         return $process;
     }
     //完成
@@ -201,7 +203,7 @@ class ProcessController extends Controller
         $process->update(['status'=>'交接完成']);
         $process->createOperatorLog('交接完成');
         $processStatistic=$result['data'];
-        $this->log(__METHOD__,"完成二次加工单_".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"完成二次加工单_".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
         return ['success'=>true,'data'=>'交接完成'];
     }
     private function statistic($process, $sign_end = false){
@@ -250,7 +252,7 @@ class ProcessController extends Controller
         $processStatistic->gross_profit=$gross_profit;
         $processStatistic->gross_profit_rate=$gross_profit_rate;
         $processStatistic->update();
-        $this->log(__METHOD__,"修改二次加工单统计单_".__FUNCTION__,json_encode($processStatistic),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改二次加工单统计单_".__FUNCTION__,json_encode($processStatistic),Auth::user()['id']);
         return ['success'=>true,'data'=>$processStatistic];
     }
 
@@ -266,7 +268,7 @@ class ProcessController extends Controller
         $processDaily->update();
         $result=$this->countRemains($processDaily);
         $processDailies=$result['processDailies'];
-        $this->log(__METHOD__,"修改当日产量".__FUNCTION__,json_encode($processDaily),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改当日产量".__FUNCTION__,json_encode($processDaily),Auth::user()['id']);
         $response=[];
         $response['status']='success';
         $response['data']=$processDailies;
@@ -315,10 +317,12 @@ class ProcessController extends Controller
             $processStatistic=ProcessStatistic::find($process_id);
             $processStatistic->ended_at=date('Y-m-d H:i:s');
             $processStatistic->update();
-            $this->log(__METHOD__,"二次加工单待验收".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,"二次加工单待验收".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
         }
         return $process_id;
     }
+
+    //新增参与人
     public function storeProcessDailyParticipant(Request $request){
         if(!Gate::allows('二次加工管理-登记工时')){ return redirect(url('/'));  }
         $errors=$this->validatorProcessDailyParticipant($request)->errors();
@@ -351,10 +355,15 @@ class ProcessController extends Controller
             'remark'=>$remark,
         ]);
         $processDailyParticipant->save();
-        $this->log(__METHOD__,"添加新参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"添加新参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
         $processDailyParticipant->load(['processDaily'=>function($query){
             $query->with('process');
         }]);
+
+        // 重置统计开始时间
+        event(new ResetProcessStatisticStartDateEvent($processDailyParticipant->processDaily->process));
+
+
         if ($processDailyParticipant->processDaily && $processDailyParticipant->processDaily->process &&
             $processDailyParticipant->processDaily->process->status=='交接完成'){
             $this->statistic($processDailyParticipant->processDaily->process);
@@ -369,9 +378,10 @@ class ProcessController extends Controller
             $process->update();
             $result['process']=$processDaily->process_id;
             $processStatistic=ProcessStatistic::find($processDaily->process_id);
-            $processStatistic->started_at=date('Y-m-d H:i:s');
+            //$processStatistic->started_at=date('Y-m-d H:i:s');
+            $processStatistic->started_at=$processDaily->date.' '.$started_at;
             $processStatistic->update();
-            $this->log(__METHOD__,"二次加工单加工中".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,"二次加工单加工中".__FUNCTION__,json_encode($process)." || ".json_encode($processStatistic),Auth::user()['id']);
         }
         $result['status']="success";
         $result['data']=$processDailyParticipant;
@@ -442,7 +452,7 @@ class ProcessController extends Controller
         $processDailyParticipant->dinner_duration=$request->input('dinner_duration');
         $processDailyParticipant->remark=$request->input('remark');
         $processDailyParticipant->update();
-        $this->log(__METHOD__,"修改参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改参与人".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
         if ($processDailyParticipant->processDaily->process->status=='交接完成'){
             $this->statistic($processDailyParticipant->processDaily->process);
         }
@@ -456,7 +466,7 @@ class ProcessController extends Controller
         if (!$processDailyParticipant) return ['success'=>false];
         $processDailyParticipant->status='已审核';
         $processDailyParticipant->update();
-        $this->log(__METHOD__,"登记工时参与人审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"登记工时参与人审核".__FUNCTION__,json_encode($processDailyParticipant),Auth::user()['id']);
         return ['success'=>true,'processDailyParticipant'=>$processDailyParticipant];
     }*/
     //获取全部教程
@@ -481,7 +491,7 @@ class ProcessController extends Controller
         $tutorial=Tutorial::find($tutorial_id);
         if (!$tutorial)return ['success'=>false,'data'=>'未找到相关教程!'];
         $tutorial->processes()->syncWithoutDetaching([$process_id]);
-        $this->log(__METHOD__,"添加教程关联".__FUNCTION__,json_encode($process_id),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"添加教程关联".__FUNCTION__,json_encode($process_id),Auth::user()['id']);
         return ['success'=>true,'data'=>$tutorial];
     }
     //删除教程关联
@@ -491,7 +501,7 @@ class ProcessController extends Controller
         $tutorial_id=$request->input('tutorial_id');
         if (!$process_id || !$tutorial_id) return ['success'=>false,'data'=>'二次加工或教程传递错误!'];
         DB::table('process_tutorial')->where('process_id',$process_id)->where('tutorial_id',$tutorial_id)->delete();
-        $this->log(__METHOD__,"删除教程关联".__FUNCTION__,json_encode($process_id),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"删除教程关联".__FUNCTION__,json_encode($process_id),Auth::user()['id']);
         return ['success'=>true];
     }
     /**
@@ -588,7 +598,7 @@ class ProcessController extends Controller
             'process_id'=>$process->id,
         ]);
         $processStatistic->save();
-        $this->log(__METHOD__,"录入二次加工单".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"录入二次加工单".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         //if ($request->input('tutorials'))$process->tutorials()->sync($request->input('tutorials'));
         return ['success'=>true];
     }
@@ -604,20 +614,20 @@ class ProcessController extends Controller
         if (!$process || $process->status!='交接完成' || count($process->signs)>0)return ['success'=>false,'data'=>'无法操作该二次加工单!'];
         $process->createSignUnitPrice($request->unit_price);
         $sign=$process->createSign('发起修改');
-        $this->log(__METHOD__,"修改二次加工单价格_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改二次加工单价格_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>true,'sign'=>$sign];
     }
 
     //二次加工组审核   两个方法大体相同 拆分原因是为了精确区分权限
     function workGroupVerify(Request $request){
         if(!Gate::allows('二次加工管理-组长确认')){ return ['success'=>false,'data'=>'您无权进行该操作!'];  }
-        $this->log(__METHOD__,"修改二次加工单价格二次加工组确认_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改二次加工单价格二次加工组确认_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return $this->verify($request->id,'二次加工组确认');
     }
     //二次加工组审核
     function accountantVerify(Request $request){
         if(!Gate::allows('二次加工管理-财务确认')){ return ['success'=>false,'data'=>'您无权进行该操作!'];  }
-        $this->log(__METHOD__,"修改二次加工单价格财务确认_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改二次加工单价格财务确认_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return $this->verify($request->id,'财务确认');
     }
     private function verify($id,$msg){
@@ -671,7 +681,7 @@ class ProcessController extends Controller
         if (!$process)return ['success'=>false];
         $process->update(['status'=>'待接单']);
         $process->createOperatorLog('审核');
-        $this->log(__METHOD__,"二次加工单审核_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"二次加工单审核_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>true];
     }
 
@@ -795,7 +805,7 @@ class ProcessController extends Controller
                 }
             }
         }
-        $this->log(__METHOD__,"编辑二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"编辑二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>true];
     }
 
@@ -829,7 +839,7 @@ class ProcessController extends Controller
         }
         $process->save();
         $process->createOperatorLog('回滚');
-        $this->log(__METHOD__,"回滚二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"回滚二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>true,'data'=>$process->status];
     }
     //加工完成
@@ -841,7 +851,7 @@ class ProcessController extends Controller
             'status'=>'待验收'
         ]);
         $process->createOperatorLog('加工完成');
-        $this->log(__METHOD__,"标记加工完成_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"标记加工完成_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>true,'data'=>'待验收'];
     }
 
@@ -860,7 +870,7 @@ class ProcessController extends Controller
             'status'=>'待交接'
         ]);
         $process->createOperatorLog('质量验收');
-        $this->log(__METHOD__,"质量验收二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"质量验收二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>true,'data'=>'待交接'];
     }
 
@@ -875,7 +885,7 @@ class ProcessController extends Controller
     function recover(Request $request){
         if(!Gate::allows('二次加工管理-删除')){ return redirect('/');  }
         $checkData=$request->checkData;
-        $this->log(__METHOD__,"回收站恢复二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"回收站恢复二次加工单_".__FUNCTION__,json_encode($request->input()),Auth::user()['id']);
         return ['success'=>Process::withTrashed()->whereIn('id',$checkData)->restore()];
     }
     /**
@@ -886,7 +896,7 @@ class ProcessController extends Controller
     public function destroy($id)
     {
         if(!Gate::allows('二次加工管理-删除')){ return redirect('/');  }
-        $this->log(__METHOD__,"删除二次加工单进回收站_".__FUNCTION__,json_encode($id),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"删除二次加工单进回收站_".__FUNCTION__,json_encode($id),Auth::user()['id']);
         return ['success'=>Process::destroy($id)];
     }
 
@@ -907,9 +917,13 @@ class ProcessController extends Controller
                 unset($processDaily);
             }
         }
-        ProcessDaily::destroy($processDailiesId);
-        ProcessDailyParticipant::whereIn('process_daily_id',$processDailiesId)->delete();
+
         $process=Process::find($process_id);
+        if (count($processDailiesId) > 0){
+            ProcessDaily::destroy($processDailiesId);
+            ProcessDailyParticipant::whereIn('process_daily_id',$processDailiesId)->delete();
+            event(new ResetProcessStatisticStartDateEvent($process));
+        }
         if (!$is_process_daily && $process){
             $ProcessDailyNow=ProcessDaily::create([
                 'process_id'=>$process_id,
@@ -919,11 +933,11 @@ class ProcessController extends Controller
             ]);
             $processDailies->push($ProcessDailyNow);
         }
-        $today=Carbon::now()->format('Y-m-d');
+        $today=Carbon::parse($start_date)->format('Y-m-d');
         $this->createDeficiencyData($processDailies,$today);
         $processDailies=ProcessDaily::with('processDailyParticipants')->where('process_id',$process_id)
             ->orderBy('date','DESC')->get();
-        $this->log(__METHOD__,"修改二次加工单加工日记录_".__FUNCTION__,json_encode($request),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改二次加工单加工日记录_".__FUNCTION__,json_encode($request),Auth::user()['id']);
         return ['success'=>true,'data'=>$processDailies];
     }
 
@@ -946,7 +960,7 @@ class ProcessController extends Controller
         $processDailies=ProcessDaily::with('processDailyParticipants')->where('process_id',$process_id)
             ->orderBy('date','DESC')->get();
         $this->createAutomaticSupplement($process_id);
-        $this->log(__METHOD__,"修改二次加工单加工日记录_".__FUNCTION__,json_encode($request),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改二次加工单加工日记录_".__FUNCTION__,json_encode($request),Auth::user()['id']);
         return ['success'=>true,'data'=>$processDailies];
     }
 
@@ -962,7 +976,16 @@ class ProcessController extends Controller
 
     //删除临时工工作记录
     public function destroyDailyParticipant($id){
-        if (ProcessDailyParticipant::destroy($id)) return ['success'=>true];
+        $pro = ProcessDailyParticipant::query()->with(["processDaily"=>function($query){
+            /** @var Builder $query */
+            $query->with("process");
+        }])->find($id);
+        if ($pro->delete()) {
+
+            event(new ResetProcessStatisticStartDateEvent($pro->processDaily->process));
+
+            return ['success'=>true];
+        }
         return ['success'=>false , 'data'=>'记录不存在!'];
     }
     //导入商品数据
@@ -1024,7 +1047,7 @@ class ProcessController extends Controller
                         'code' => $str,
                         'name' => $str
                     ]);
-                    $this->log(__METHOD__,"二次加工单录入导入商品数据时添加货主".__FUNCTION__,json_encode($owner),Auth::user()['id']);
+                    app('LogService')->log(__METHOD__,"二次加工单录入导入商品数据时添加货主".__FUNCTION__,json_encode($owner),Auth::user()['id']);
                 }
             }
             $goods = Commodity::query()->with('barcodes')->where('owner_id',$owner->id)//->whereNull('owner_id') TODO 保留,暂时不知为何限定货主为空
@@ -1052,7 +1075,7 @@ class ProcessController extends Controller
                     }
                 }
             }
-            $this->log(__METHOD__,"二次加工单录入导入商品数据时添加商品及条码".__FUNCTION__,
+            app('LogService')->log(__METHOD__,"二次加工单录入导入商品数据时添加商品及条码".__FUNCTION__,
                 json_encode($goods)." || ".json_encode($commodity_barcodes),Auth::user()['id']);
             $processContent=['bill_type'=>'入库单','commodity_id'=>$goods->id,'wms_code'=>$wmsCode,'amount'=>$amount,
                 'commodity_name'=>$goods->name,'commodity_barcodes'=>$commodity_barcodes,'commodity_sku'=>$goods->sku,

+ 2 - 2
app/Http/Controllers/ProcessStatisticController.php

@@ -14,9 +14,9 @@ class ProcessStatisticController extends Controller
     public function index(Request $request){
         if(!Gate::allows('二次加工管理-查询')){ return redirect('denied');  }
         /** @var ProcessStatisticService $processStatistics */
-        $processStatistics=app("processStatisticService")->paginate($request->input());
+        $processStatistics=app("ProcessStatisticService")->paginate($request->input());
         $owners=app("OwnerService")->getSelection();
-        $processMethods=app("processMethodService")->getSelection();
+        $processMethods=app("ProcessMethodService")->getSelection();
         return view('process.statistic',['processStatistics'=>$processStatistics,'params'=>$request->input(),'owners'=>$owners,'processMethods'=>$processMethods]);
     }
 

+ 3 - 3
app/Http/Controllers/ProvincesController.php

@@ -31,7 +31,7 @@ class ProvincesController extends Controller
         $this->validatorProvinces($request,$id)->validate();
         $provinces=$request->input('Province');
         if(Province::create($provinces)){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/province')->with('successTip','新省份“'.$request->input('Province.name').'”添加成功');
         };
     }
@@ -51,7 +51,7 @@ class ProvincesController extends Controller
         $province=Province::find($id);
         $province->fill($data);
         if ($province->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/province')->with('successTip','省份“'.$request->input('Province.name').'”修改成功');
         }
     }
@@ -60,7 +60,7 @@ class ProvincesController extends Controller
     {
         if(!Gate::allows('省份-删除')){ return redirect(url('/'));  }
         $province=Province::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($province),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($province),Auth::user()['id']);
         $result=$province->delete();
         return ['success'=>$result];
     }

+ 3 - 3
app/Http/Controllers/QualityLabelController.php

@@ -48,7 +48,7 @@ class QualityLabelController extends Controller
         $qualityLabel=new QualityLabel($request->all());
         $qualityLabel->save();
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/qualityLabel/create')->with('successTip',"成功录入品质标签“{$request->input('name')}”");
     }
     protected function validatorCreate(array $data)
@@ -100,7 +100,7 @@ class QualityLabelController extends Controller
         $this->validatorUpdate($request->all())->validate();
         $qualityLabel->fill($request->all());
         $qualityLabel->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/qualityLabel/')->with('successTip',"成功修改品质标签“{$qualityLabel['name']}”!");
     }
 
@@ -114,7 +114,7 @@ class QualityLabelController extends Controller
     public function destroy(QualityLabel $qualityLabel)
     {
         if(!Gate::allows('品质标签-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$qualityLabel->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$qualityLabel->toJson(),Auth::user()['id']);
         $re=$qualityLabel->delete();
         return ['success'=>$re];
     }

+ 150 - 8
app/Http/Controllers/RejectedBillController.php

@@ -5,13 +5,18 @@ namespace App\Http\Controllers;
 use App\Events\InformWMSReceivedEvent;
 use App\Http\Controllers\Api\thirdPart\flux\ReceiveController;
 use App\Logistic;
+use App\OracleActAllocationDetails;
+use App\OracleBasSKU;
 use App\OracleDOCOrderHeader;
 use App\Owner;
 use App\QualityLabel;
 use App\Rejected;
 use App\RejectedBill;
 use App\RejectedBillItem;
+use App\Services\LogService;
 use App\Services\OrderPackageCommoditiesService;
+use App\Services\OrderService;
+use App\Services\RejectedBillItemService;
 use App\Services\RejectedBillService;
 use Illuminate\Contracts\View\Factory;
 use Illuminate\Http\RedirectResponse;
@@ -63,6 +68,7 @@ class RejectedBillController extends Controller
     {
         //
     }
+
     public function apiGetRecent()
     {
         if(!Gate::allows('退货管理-查询')){
@@ -73,7 +79,6 @@ class RejectedBillController extends Controller
         return ['success'=>'true','rejectedBills'=>$rejectedBills->toArray()];
     }
 
-
     public function apiStore(Request $request)
     {
         if(!Gate::allows('退货管理-录入')){
@@ -94,7 +99,7 @@ class RejectedBillController extends Controller
         app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
 //        $rejectedBill->同步问题件退件状态();
 
-        $this->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBill['id']];
     }
 
@@ -103,7 +108,9 @@ class RejectedBillController extends Controller
         if(!Gate::allows('退货管理-编辑')){
             return ['success'=>'false','fail_info'=>'没有权限'];
         }
-        if($request['is_loaded']=='null')$request['is_loaded']=null;
+        if($request['is_loaded']==='null'){
+            $request['is_loaded']=null;
+        }
         $errorFields= $this->validator($request->all(),true)->errors()->getMessages();
         if(!empty($errorFields)){
             return ['success'=>'false','error_fields'=>$errorFields,'fail_info'=>'fileds error'];
@@ -114,9 +121,10 @@ class RejectedBillController extends Controller
         app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
 //        $rejectedBill->同步问题件退件状态();
 
-        $this->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__.'_'.$rejectedBill['id'],json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true'];
     }
+
     public function apiConfirmBeStored(Request $request)
     {
         if(!Gate::allows('退货管理-编辑')){
@@ -127,7 +135,7 @@ class RejectedBillController extends Controller
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"人工确认入库。退单号:".$rejectedBill['logistic_number_return'],Auth::user()['id']);
         $result_TransferToWMS=ReceiveController::accomplishToWMS($rejectedBill);
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         switch ($result_TransferToWMS){
             case 'success':
                 $rejectedBill['is_loaded']=1;
@@ -138,7 +146,6 @@ class RejectedBillController extends Controller
         }
     }
 
-
     protected function validator(array $data,$isUpdate=false)
     {
         $mobileShouldBeRequired = 'required';
@@ -258,7 +265,7 @@ class RejectedBillController extends Controller
     {
         if(!Gate::allows('退货管理-删除')){ return redirect(url('/'));}
         $re=$rejectedBill->delete();
-        $this->log(__METHOD__,__FUNCTION__,$rejectedBill->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$rejectedBill->toJson(),Auth::user()['id']);
         return ['success'=>$re];
     }
 
@@ -273,7 +280,142 @@ class RejectedBillController extends Controller
 
     function seekOrder(Request $request){
         if (!$request->soreference5)return ['success'=>false];
-        $order=OracleDOCOrderHeader::select('soreference1','customerid','c_contact','c_tel2','carrierid')->where('soreference5',$request->soreference5)->first();
+        $order=OracleDOCOrderHeader::select('soreference1','customerid','c_contact','c_tel2','c_tel1','carrierid')->where('soreference5',$request->soreference5)->first();
         if ($order)return ['success'=>true,'data'=>$order];
     }
+
+    public function disposeImportApi(Request $request)
+    {
+        if(!Gate::allows('退货管理-编辑'))
+            return ['success'=>false,'message'=>'没有对应权限'];
+        /**
+         * @var RejectedBillItemService $rejectedBillItemService
+         * @var RejectedBillService $service
+         */
+        $service = app('RejectedBillService');
+        $rejectedBillItemService = app('RejectedBillItemService');
+        $params = [['logistic_number_return','logistic_number','fee_collected']];
+        $logistic_numbers = [];             // 原单单号
+        $logistic_number_map = [];
+        $logistic_number_return = [];       // 退回单号
+        $logistic_number_return_map = [];
+
+        $errors = [];
+        $array = explode("\n",$request['dataText']); //拆分行
+        foreach ($array as  $i=>$item) {
+            $items = [];
+            preg_match('/^(\w*?)[\s,,;;](\w*?)[\s,,;;](\d.*)$/u',$item,$items);
+            if(count($items) < 1)
+                preg_match('/^(\w*?)[\s,,;;](\w*?)$/u',$item,$items);
+            $head = '第'.($i+1).'行';
+            if(count($items) < 3){
+                $errors[$head] = ['数据不完整'];
+                unset($items);
+                continue;
+            }
+            array_shift($items);
+            isset($items[1]) ? $logistic_numbers[] = $items[1] : null;
+            isset($items[0]) ? $logistic_number_return[] = $items[0] : null;
+            $param = [$items[0] ?? null, $items[1] ?? null, $items[2] ?? null];
+            $params[] = $param;
+            $logistic_number_map[$items[1]] = $param;
+            $logistic_number_return_map[$items[0]] =$param;
+            unset($param);
+        }
+        $rejectedBill_collect = collect();
+
+        // 对已用的进行修改
+        $update_fee_params = [['id','logistic_number','fee_collected']];                //对原有的进行修改 有到付费用
+        $update_params = [['id','logistic_number']];                                    // 无到付费用
+        $exist_picktotraceid = [];                                                      // 已有退回单号
+        $rejectedBills = RejectedBill::query()->whereIn('logistic_number_return',$logistic_number_return)->get();
+        $rejectedBills->each(function($rejectedBill)use(&$update_fee_params,&$update_params,$logistic_number_return_map,&$exist_picktotraceid,&$rejectedBill_collect){
+            $rejectedBill_collect->push($rejectedBill);
+            $logistic_number_return =  $rejectedBill->logistic_number_return; //退回单号
+            $params = $logistic_number_return_map[$logistic_number_return];
+            $rejectedBill->logistic_number ? $exist_picktotraceid[$rejectedBill->logistic_number] = $rejectedBill->logistic_number : null;    // 记录已有原单单号
+            if(isset($params[2])){
+                $update_fee_params[] = ['id'=>$rejectedBill->id,'logistic_number'=>$params[1],'fee_collected'=>$params[2]];
+            }else if(isset($params[1])){
+                $update_params[] = ['id'=>$rejectedBill->id,'logistic_number'=>$params[1]];
+            }
+        });
+        // 对不存在的进行创建
+        $inner_items_params = [];
+        $details = OracleActAllocationDetails::query()->with('oracleDocOrderHeader.oracleBASCustomer')->whereIn('picktotraceid',$logistic_numbers)->get();
+        $bas_sku_map =[];
+        OracleBasSKU::query()->selectRaw('SKU,CustomerID,Alternate_SKU1,Descr_C')->whereIn('SKU',array_diff(data_get($details,'*.sku'),[' ','*']))->whereIn('CustomerID',data_get($details,'*.customerid'))->get()
+            ->each(function($bas_sku)use(&$bas_sku_map){
+                $key = 'Sku = '.$bas_sku->sku.' CustomerID = '.$bas_sku->customerid;
+                $bas_sku_map[$key] = $bas_sku;
+            });
+        $details = $details->groupBy('picktotraceid');
+
+        $details->each(function($items,$key)use(&$inner_params,$bas_sku_map,$exist_picktotraceid,&$inner_items_params,&$rejectedBill_collect,$logistic_number_map){
+            if(!isset($exist_picktotraceid[$key])){
+                $order_header = $items->first()->oracleDocOrderHeader;
+                $owner = app('OwnerService')->firstOrCreate(['name' => $order_header->oracleBASCustomer->descr_c],
+                    ['name' => $order_header->oracleBASCustomer->descr_c, 'code' => $order_header->oracleBASCustomer->descr_c]);
+                $logistic = app('LogisticService')->firstOrCreate(['name' => $order_header->carriername],
+                    ['name' => $order_header->carriername, 'code' => $order_header->carriername]);
+                $rejectedBill = RejectedBill::query()->create([
+                    'id_owner' => $owner->id ?? '',
+                    'sender' => $order_header->c_contact,
+                    'logistic_number_return' => $logistic_number_map[$key][0] ?? '',
+                    'id_logistic_return' =>$logistic->id ?? '',
+                    'fee_collected' => $logistic_number_map[$key][2] ?? '',
+                    'order_number' =>$order_header->soreference1,
+                    'mobile_sender' => empty($order_header->c_tel2)?$order_header->c_tel1:$order_header->c_tel2,
+                    'logistic_number' => $logistic_number_map[$key][1] ?? '',
+                    'remark' => $order_header->notes,
+                    'is_loaded' =>0,
+                    "id_operator" => Auth::id(),
+                ]);
+                $rejectedBill_collect->push($rejectedBill);
+                LogService::log(__METHOD__,"生成退货单",json_encode($rejectedBill),Auth::user()['id']);
+                // 获取创建items
+                $items->each(function($item)use($rejectedBill,$bas_sku_map,&$inner_items_params){
+                    $key = 'Sku = '.$item->sku.' CustomerID = '.$item->customerid;
+                    $bas_sku = $bas_sku_map[$key] ?? '';
+                    $date = date('Y-m-d H:i:s');
+                    $inner_items_params[] = [
+                        'id_rejected_bill' => $rejectedBill->id ?? '',
+                        'barcode_goods' => $bas_sku['alternate_sku1'] ?? '',
+                        'name_goods' => $bas_sku['descr_c'],
+                        'amount' => $item->qty_each,
+                        'id_quality_label' => 1,
+                        'created_at' => $date,
+                        'updated_at' => $date
+                    ];
+                });
+            }
+        });
+        try {
+            if (count($update_fee_params) > 1) {
+                $service->batchUpdate($update_fee_params);
+            }
+            if (count($update_params) > 1) {
+                $service->batchUpdate($update_params);
+            }
+            if(count($inner_items_params) > 0){
+                $rejectedBillItemService->insert($inner_items_params);
+                LogService::log(__METHOD__, "批量生成退货单详情", json_encode($inner_items_params), Auth::user()['id']);
+            }
+            $rejectedBill_collect->each(function ($rejectedBill)use($service){
+                $service->syncOrderIssue($rejectedBill);
+            });
+            return ['success'=>true];
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__, __FUNCTION__.' error', '修改退回单号 失败', json_encode($request->getContent()).' ||'.json_encode($e->getMessage())." || ".json_encode($e->getTraceAsString()));
+            return ['success'=>false,'error'=>['导入处理发生异常'=>$e->getMessage()]];
+        }
+    }
+
+    public function importRejectedNumber(Request $request)
+    {
+        if(!Gate::allows('退货管理-编辑'))
+            return redirect(url('/'));
+        return view('rejected.importRejectedNumber');
+    }
+
 }

+ 9 - 9
app/Http/Controllers/RejectedBillItemController.php

@@ -98,7 +98,7 @@ class RejectedBillItemController extends Controller
         app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
 //        $rejectedBIll->同步问题件();
 //        $rejectedBIll->同步问题件退件状态();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBillItem['id']];
     }
 
@@ -121,7 +121,7 @@ class RejectedBillItemController extends Controller
             $rejectedBill = RejectedBill::query()->where('id',$rejectedBillItem->id_rejected_bill)->with('orderIssue')->first();
 //            $rejectedBill->同步问题件退件状态();
             app(RejectedBillService::class)->syncOrderIssue($rejectedBill);
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return ['success'=>'true','id'=>$rejectedBillItem['id']];
         }
     }
@@ -142,7 +142,7 @@ class RejectedBillItemController extends Controller
                 $rejectedBill=RejectedBill::find($rejectedBillItem['id_rejected_bill']);
                 $owner = Owner::find($rejectedBill['id_owner']);
                 if(strstr($owner->name??'','笕尚')){
-                    $this->log(__METHOD__,'找不到表','121行');
+                    app('LogService')->log(__METHOD__,'找不到表','121行');
 //                    $rejected=new Rejected();
 //                    $rejected->fill($rejectedBill->toArray());
 //                    $rejected->fill($rejectedBillItem->toArray());
@@ -153,7 +153,7 @@ class RejectedBillItemController extends Controller
                     $sended=$rejectedJianshang->sendRejected($rejected);
                     if(!$sended){
                         echo '<h1>数据发送给笕尚失败,请通知IT相关负责人</h1>';
-                        $this->log(__METHOD__,'error','数据发送给笕尚失败');
+                        app('LogService')->log(__METHOD__,'error','数据发送给笕尚失败');
                         $havingFail++;
                         return false;
                     }
@@ -228,7 +228,7 @@ class RejectedBillItemController extends Controller
         if(!config('api.API_FAKING')){
             $items->each(function(RejectedBillItem $rejectedBillItem)use(&$havingFail,$rejectedBill){
 //                $rejected=new Rejected();
-//                $this->log(__METHOD__,'找不到表','200行');
+//                app('LogService')->log(__METHOD__,'找不到表','200行');
 //                $rejected->fill($rejectedBill->toArray());
 //                $rejected->fill($rejectedBillItem->toArray());
                 $rejected=$rejectedBill->toArray();
@@ -237,7 +237,7 @@ class RejectedBillItemController extends Controller
                 $sended=$rejectedJianshang->sendRejected($rejected);
                 if(!$sended){
                     echo '<h1>数据发送给笕尚失败,请通知IT相关负责人</h1>';
-                    $this->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBillItem['id'],'数据发送给笕尚失败');
+                    app('LogService')->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBillItem['id'],'数据发送给笕尚失败');
                     $havingFail++;
                     return false;
                 }
@@ -251,7 +251,7 @@ class RejectedBillItemController extends Controller
         }
 
         if($havingFail>0){
-            $this->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBill['id'],"$havingFail/{$items->count()} 条记录没有发送成功",Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__.'_'.$rejectedBill['id'],"$havingFail/{$items->count()} 条记录没有发送成功",Auth::user()['id']);
             return false;
         }
         return true;
@@ -318,7 +318,7 @@ class RejectedBillItemController extends Controller
             $rejectedBillItem->delete();
         });
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true'];
     }
 
@@ -327,7 +327,7 @@ class RejectedBillItemController extends Controller
         return Validator::make($data, [
             'id_rejected_bill' => ['required', 'numeric', 'exists:rejected_bills,id'],
             'barcode_goods' => ['required', 'string','max:60'],
-            'name_goods' => ['nullable', 'string','max:50'],
+            'name_goods' => ['nullable', 'string','max:219'],
             'amount' => ['numeric','required', 'max:99999'],
             'id_quality_label' => ['required','numeric',  'max:11'],
             'batch_number' => ['string', 'nullable',],

+ 17 - 15
app/Http/Controllers/RejectedController.php

@@ -10,9 +10,11 @@ use App\Rejected;
 use App\RejectedAnalyzeOwner;
 use App\RejectedBill;
 use App\Services\LogisticService;
+use App\Services\OracleDocAsnHerderService;
 use App\Services\OwnerService;
 use App\Services\QualityLabelService;
 use App\Services\RejectedService;
+use App\Services\StoreService;
 use Carbon\Carbon;
 use Exception;
 use Illuminate\Contracts\Foundation\Application;
@@ -52,12 +54,12 @@ class RejectedController extends Controller
         /** @var RejectedService $application */
         $application = app('RejectedService');
         $rejectedBills= $application->paginate($request);
-        $issueIds = $application->返回有问题件的ID($request);
+//        $issueIds = $application->返回有问题件的ID($request);
         $owners = $ownerService->getSelection();
         $qualityLabels = $qualityLabelService->get();
         $logistics=$logisticService->getSelection();
         return view('rejected.search.general',compact('rejectedBills','owners','logistics',
-            'paginateParams','qualityLabels','issueIds'));
+            'paginateParams','qualityLabels'));
     }
     public function recycle(Request $request)
     {
@@ -82,7 +84,7 @@ class RejectedController extends Controller
         $rejecteds->each(function(RejectedBill $rejected){
             $rejected->restore();
         });
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','rejecteds'=>$rejecteds];
     }
 
@@ -255,10 +257,10 @@ class RejectedController extends Controller
     {
         if(!Gate::allows('退货管理-录入')){ return redirect(url('/'));  }
         $this->validatorCreate($request->all())->validate();
-        $this->log(__METHOD__,'找不到表','247行');
+        app('LogService')->log(__METHOD__,'找不到表','247行');
         $rejected=new Rejected($request->all());
         $rejected->save();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('rejected/create')->with('successTip',"成功录入退货信息(退单:{$request->input('logistic_number_return')})");
     }
     public function ajaxCheck(Request $request)
@@ -271,7 +273,7 @@ class RejectedController extends Controller
         if ($re){
             return ['success'=>'true','checked_numbers'=>$rejected['checked_numbers']];
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'false','fail_info'=>'数据更新失败'];
     }
     public function ajaxCheckAll(Request $request)
@@ -293,7 +295,7 @@ class RejectedController extends Controller
                 return ['success'=>'false','fail_info'=>"数据 {$rejected['id']} 更新失败"];
             }
         });
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','rejecteds'=>$rejecteds];
     }
     public function ajaxFinishAll(Request $request)
@@ -308,7 +310,7 @@ class RejectedController extends Controller
                 return ['success'=>'false','fail_info'=>"数据 {$rejected['id']} 更新失败"];
             }
         });
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true'];
     }
     protected function validatorCreate(array $data)
@@ -375,7 +377,7 @@ class RejectedController extends Controller
         $this->validatorUpdate($request->all())->validate();
         $rejected->fill($request->all());
         $rejected->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('rejected/')->with('successTip',"成功修改退货信息“{$rejected['name']}”!");
     }
 
@@ -389,10 +391,10 @@ class RejectedController extends Controller
     public function destroy(Rejected $rejected)
     {
 //        if(!Gate::allows('退货管理-删除')){ return redirect(url('/'));}
-//        $this->log(__METHOD__,__FUNCTION__,$rejectedBill->toJson(),Auth::user()['id']);
+//        app('LogService')->log(__METHOD__,__FUNCTION__,$rejectedBill->toJson(),Auth::user()['id']);
 //        $items=$rejectedBill->items();
 //        $items->delete();
-//        $this->log(__METHOD__,__FUNCTION__,$items->toJson(),Auth::user()['id']);
+//        app('LogService')->log(__METHOD__,__FUNCTION__,$items->toJson(),Auth::user()['id']);
 //        $re=$rejectedBill->delete();
 //        return ['success'=>$re];
     }
@@ -411,7 +413,7 @@ class RejectedController extends Controller
         }
         return response($post,200, [
             "Content-type"=>"application/octet-stream",
-            "Content-Disposition"=>"attachment; filename=单列表-".date('ymdHis').'.xlsx',
+            "Content-Disposition"=>"attachment; filename=退货单列表-".date('ymdHis').'.xlsx',
         ]);
     }
 
@@ -425,7 +427,7 @@ class RejectedController extends Controller
         $ids=json_decode($ids,true);
         $export=new RejectedExport();
         $export->setIds($ids);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return Excel::download($export,'退货表'.Carbon::now().'.xlsx');
     }
     public function exportExcelOnFilterParams(Request $request)
@@ -443,7 +445,7 @@ class RejectedController extends Controller
         $rejectedBills->get();
         $export=new RejectedExport();
         $export->setRejectedBills($rejectedBills);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return Excel::download($export,'退货表'.Carbon::now().'.xlsx');
 
     }*/
@@ -529,7 +531,7 @@ class RejectedController extends Controller
             'id'=>$id,
             'remark'=>$remark
         ]);
-        $this->log(__METHOD__,'添加或者修改退单备注'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'添加或者修改退单备注'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>true,'status'=>$rejectedBill];
     }
 }

+ 3 - 3
app/Http/Controllers/RoleController.php

@@ -65,7 +65,7 @@ class RoleController extends Controller
             $role->authorities()->sync($authorityIdArr);
         }
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/role/create')->with('successTip',"成功录入角色“{$request->input('name')}”");
     }
     protected function validatorCreate(array $data)
@@ -125,7 +125,7 @@ class RoleController extends Controller
         }else{
             $role->authorities()->sync([]);
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/role/')->with('successTip',"成功修改角色“{$role['name']}”!");
     }
 
@@ -139,7 +139,7 @@ class RoleController extends Controller
     public function destroy(Role $role)
     {
         if(!Gate::allows('角色-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$role->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$role->toJson(),Auth::user()['id']);
         $re=$role->delete();
         return ['success'=>$re];
     }

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

@@ -0,0 +1,85 @@
+<?php
+
+namespace App\Http\Controllers;
+
+use App\SortingStation;
+use Illuminate\Http\Request;
+
+class SortingStationController extends Controller
+{
+    /**
+     * Display a listing of the resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function index()
+    {
+        //
+    }
+
+    /**
+     * Show the form for creating a new resource.
+     *
+     * @return \Illuminate\Http\Response
+     */
+    public function create()
+    {
+        //
+    }
+
+    /**
+     * Store a newly created resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @return \Illuminate\Http\Response
+     */
+    public function store(Request $request)
+    {
+        //
+    }
+
+    /**
+     * Display the specified resource.
+     *
+     * @param  \App\SortingStation  $sortingStation
+     * @return \Illuminate\Http\Response
+     */
+    public function show(SortingStation $sortingStation)
+    {
+        //
+    }
+
+    /**
+     * Show the form for editing the specified resource.
+     *
+     * @param  \App\SortingStation  $sortingStation
+     * @return \Illuminate\Http\Response
+     */
+    public function edit(SortingStation $sortingStation)
+    {
+        //
+    }
+
+    /**
+     * Update the specified resource in storage.
+     *
+     * @param  \Illuminate\Http\Request  $request
+     * @param  \App\SortingStation  $sortingStation
+     * @return \Illuminate\Http\Response
+     */
+    public function update(Request $request, SortingStation $sortingStation)
+    {
+        //
+    }
+
+    /**
+     * Remove the specified resource from storage.
+     *
+     * @param  \App\SortingStation  $sortingStation
+     * @return \Illuminate\Http\Response
+     */
+    public function destroy(SortingStation $sortingStation)
+    {
+        //
+    }
+}

+ 12 - 12
app/Http/Controllers/StoreCheckingReceiveController.php

@@ -118,12 +118,12 @@ class StoreCheckingReceiveController extends Controller
             if (isset($params['imported_diff_amount']) && $params['imported_diff_amount'] > 0)$is_receive_diff = "是";
             if (isset($params['asn_diff_amount']) && $params['asn_diff_amount'] > 0)$is_asn_diff = "是";
             $item = app('StoreCheckingReceiveItemService')->updateFind($storeCheckingReceiveItem,$params);
-            LogService::log(__METHOD__,"清点数量",json_encode($item,JSON_UNESCAPED_UNICODE));
+            app('LogService')->log(__METHOD__,"清点数量",json_encode($item,JSON_UNESCAPED_UNICODE));
 
             switch ($storeCheckingReceive->status){
                 case '已导入':
                     $SCR = app('StoreCheckingReceiveService')->updateFind($storeCheckingReceive,['status'=>'清点中']);
-                    LogService::log(__METHOD__,"修改盘收任务状态为清点中",json_encode($SCR,JSON_UNESCAPED_UNICODE));
+                    app('LogService')->log(__METHOD__,"修改盘收任务状态为清点中",json_encode($SCR,JSON_UNESCAPED_UNICODE));
                     break;
                 case '清点中':
                     $res = [];
@@ -139,7 +139,7 @@ class StoreCheckingReceiveController extends Controller
                         $res['is_receive_diff'] = $is_receive_diff;
                     if (count($res) > 0){
                         $SCR = app('StoreCheckingReceiveService')->updateFind($storeCheckingReceive,$res);
-                        LogService::log(__METHOD__,"修改盘收任务",json_encode($SCR,JSON_UNESCAPED_UNICODE));
+                        app('LogService')->log(__METHOD__,"修改盘收任务",json_encode($SCR,JSON_UNESCAPED_UNICODE));
                     }
                     break;
             }
@@ -189,7 +189,7 @@ class StoreCheckingReceiveController extends Controller
         switch ($storeCheckingReceive->status){
             case '已导入':
                 $SCR = app('StoreCheckingReceiveService')->updateFind($storeCheckingReceive,['status'=>'清点中']);
-                LogService::log(__METHOD__,"修改盘收任务状态为清点中",json_encode($SCR,JSON_UNESCAPED_UNICODE));
+                app('LogService')->log(__METHOD__,"修改盘收任务状态为清点中",json_encode($SCR,JSON_UNESCAPED_UNICODE));
                 break;
             case '清点中':
                 $res = [];
@@ -204,7 +204,7 @@ class StoreCheckingReceiveController extends Controller
                     $res['is_receive_diff'] = $is_receive_diff;
                 if (count($res) > 0){
                     $SCR = app('StoreCheckingReceiveService')->updateFind($storeCheckingReceive,$res);
-                    LogService::log(__METHOD__,"修改盘收任务",json_encode($SCR,JSON_UNESCAPED_UNICODE));
+                    app('LogService')->log(__METHOD__,"修改盘收任务",json_encode($SCR,JSON_UNESCAPED_UNICODE));
                 }
                 break;
         }
@@ -268,7 +268,7 @@ class StoreCheckingReceiveController extends Controller
             'imported_diff_amount'=>null,
             'asn_diff_amount'=>null,
         ]);
-        LogService::log(__METHOD__,"重置盘收任务所有数量","store_checking_receive_id:".$id);
+        app('LogService')->log(__METHOD__,"重置盘收任务所有数量","store_checking_receive_id:".$id);
         return ['success'=>true];
     }
 
@@ -326,12 +326,12 @@ class StoreCheckingReceiveController extends Controller
         }
         if (count($updateItems) > 0){
             app('StoreCheckingReceiveItemService')->batchUpdate($updateItems);
-            LogService::log(__METHOD__,"匹配ASN-批量更新ASN数量",json_encode($updateItems));
+            app('LogService')->log(__METHOD__,"匹配ASN-批量更新ASN数量",json_encode($updateItems));
         }
 
         if (count($deleteItems) > 0){
             app('StoreCheckingReceiveItemService')->destroy($deleteItems);
-            LogService::log(__METHOD__,"重新匹配ASN-删除原有ASN生成数据",json_encode($updateItems));
+            app('LogService')->log(__METHOD__,"重新匹配ASN-删除原有ASN生成数据",json_encode($updateItems));
         }
 
 
@@ -359,7 +359,7 @@ class StoreCheckingReceiveController extends Controller
         $data = app('StoreCheckingReceiveService')->updateFind($storeCheckingReceive,[
             'asn'=>$asn,'is_asn_diff'=>$diffAmount==0 ? "否" : "是",'status'=>'已ASN入库'
         ]);
-        LogService::log(__METHOD__,"修改盘收任务",json_encode($data,JSON_UNESCAPED_UNICODE));
+        app('LogService')->log(__METHOD__,"修改盘收任务",json_encode($data,JSON_UNESCAPED_UNICODE));
         return ['success'=>true, 'data'=>$data];
     }
 
@@ -379,7 +379,7 @@ class StoreCheckingReceiveController extends Controller
         if ($result['success']) $data = $storeCheckingReceiveService->updateFind($storeCheckingReceive,['status'=>"已收货"]);
         else{
             $data = $storeCheckingReceiveService->updateFind($storeCheckingReceive,['status'=>"收货失败"]);
-            LogService::log(__METHOD__,"盘收快速收货失败",json_encode($result['data'],JSON_UNESCAPED_UNICODE)." | ".json_encode($data,JSON_UNESCAPED_UNICODE));
+            app('LogService')->log(__METHOD__,"盘收快速收货失败",json_encode($result['data'],JSON_UNESCAPED_UNICODE)." | ".json_encode($data,JSON_UNESCAPED_UNICODE));
         }
         return ['success'=>true, 'data'=>$data];
     }
@@ -409,7 +409,7 @@ class StoreCheckingReceiveController extends Controller
             if ($storeCheckingReceive)$this->updateDiffStatus($storeCheckingReceive);
         }
         app('StoreCheckingReceiveItemService')->updateFind($item,$params);
-        LogService::log(__METHOD__,"盘点修改实盘数",'item:'.json_encode($item)."update:",$counted_amount);
+        app('LogService')->log(__METHOD__,"盘点修改实盘数",'item:'.json_encode($item)."update:",$counted_amount);
         return ['success'=>true,"data"=>$data];
     }
 
@@ -431,7 +431,7 @@ class StoreCheckingReceiveController extends Controller
         }
         if (count($update) > 0){
             $scr->update($update);
-            LogService::log(__METHOD__,"修改差异状态",json_encode($scr,JSON_UNESCAPED_UNICODE));
+            app('LogService')->log(__METHOD__,"修改差异状态",json_encode($scr,JSON_UNESCAPED_UNICODE));
         }
     }
 }

+ 7 - 4
app/Http/Controllers/StoreController.php

@@ -5,6 +5,9 @@ namespace App\Http\Controllers;
 use App\Depository;
 use App\Owner;
 use App\Services\LogService;
+use App\Services\OracleDocAsnDetailService;
+use App\Services\OracleDocAsnHerderService;
+use App\Services\StoreService;
 use App\Store;
 use App\StoreItems;
 use App\Warehouse;
@@ -193,7 +196,7 @@ class StoreController extends Controller
             $result = $this->executeSP($detail,$asnno,$depository_code,$db,$quality,$conn,$sql_sp);
             if (substr($result, 0, 3) != '000') {
                 oci_close($conn);
-                LogService::log(__METHOD__,"快速入库-FLUX收货失败","ASNNO:".$asnno.";ERROR:".$result);
+                app('LogService')->log(__METHOD__,"快速入库-FLUX收货失败","ASNNO:".$asnno.";ERROR:".$result);
                 return ['success' => false, 'data' => $detail->asnlineno.'收货失败,错误代码:'.$result];
             }
             if (!isset($depositories[$detail->lotatt05]) && $detail->lotatt05){
@@ -224,7 +227,7 @@ class StoreController extends Controller
             'status'=>'已入库',
             'remark'=>$asn->notes,
         ]);
-        LogService::log(__METHOD__,"快速入库",json_encode($store));
+        app('LogService')->log(__METHOD__,"快速入库",json_encode($store));
         foreach ($items as $item){
             $item["store_id"] = $store->id;
         }
@@ -288,13 +291,13 @@ class StoreController extends Controller
             $query = DB::raw("UPDATE DOC_ASN_DETAILS SET RECEIVINGLOCATION = ?  WHERE ASNNO = ? AND ASNLINENO = ?");
             $db->update($query,[$depository_code,$detail->asnno,$detail->asnlineno]);
             $db->commit();
-            LogService::log(__METHOD__,"快速入库-修改FULX属性仓","ASNNO:".$asnno.";原仓:".$detail->receivinglocation.";修改为:".$depository_code);
+            app('LogService')->log(__METHOD__,"快速入库-修改FULX属性仓","ASNNO:".$asnno.";原仓:".$detail->receivinglocation.";修改为:".$depository_code);
         }
         if ($quality && ($quality != $detail->lotatt08)){
             $query = DB::raw("UPDATE DOC_ASN_DETAILS SET LOTATT08 = ?  WHERE ASNNO = ? AND ASNLINENO = ?");
             $db->update($query,[$quality,$detail->asnno,$detail->asnlineno]);
             $db->commit();
-            LogService::log(__METHOD__,"快速入库-修改FULX质量状态","ASNNO:".$asnno.";原质量:".$detail->lotatt08.";修改为:".$quality);
+            app('LogService')->log(__METHOD__,"快速入库-修改FULX质量状态","ASNNO:".$asnno.";原质量:".$detail->lotatt08.";修改为:".$quality);
             $In_LotAtt08_C = $quality;
         }
         $stmt = oci_parse($conn, $sql_sp);

+ 80 - 31
app/Http/Controllers/TestController.php

@@ -9,7 +9,6 @@ use App\City;
 use App\Commodity;
 use App\CommodityBarcode;
 use App\Events\CancelOrder;
-use App\Feature;
 use App\InventoryAccountMission;
 use App\InventoryCompare;
 use App\InventoryDailyLog;
@@ -20,6 +19,7 @@ use App\OracleActAllocationDetails;
 use App\OracleBasCode;
 use App\OracleBasSKU;
 use App\OracleDOCASNDetail;
+use App\OracleDOCASNHeader;
 use App\OracleDOCOrderHeader;
 use App\OracleDocOrderPackingSummary;
 use App\OracleDOCWaveDetails;
@@ -30,9 +30,6 @@ use App\OrderPackageCommodities;
 use App\OrderTracking;
 use App\OrderTrackingOwner;
 use App\Owner;
-use App\OwnerFeeDetail;
-use App\OwnerOutStorageRule;
-use App\OwnerPriceOperation;
 use App\Package;
 use App\Process;
 use App\ProcessDaily;
@@ -46,6 +43,7 @@ use App\Services\CityService;
 use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
+use App\Services\common\ExportService;
 use App\Services\InventoryCompareService;
 use App\Services\LogService;
 use App\Services\OracleActAllocationDetailService;
@@ -59,7 +57,6 @@ use App\Services\OrderService;
 use App\Services\OrderTrackingOwnerService;
 use App\Services\OrderTrackingService;
 use App\Services\WarehouseService;
-use App\Shop;
 use App\StoreCheckingReceive;
 use App\StoreCheckingReceiveItem;
 use App\Unit;
@@ -75,11 +72,13 @@ use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Facades\Redis;
+use Illuminate\Support\Str;
 use Ramsey\Collection\Collection;
 use Zttp\Zttp;
 
 class TestController extends Controller
 {
+    const ASNREFERENCE_2 = 'ASNREFERENCE2';
     private $data = [];
 
     public function __construct()
@@ -93,22 +92,16 @@ class TestController extends Controller
     }
 
     public function test4(){
-        $a = DB::select(DB::raw("SELECT * FROM units WHERE id != ?"),["0"]);
-        dd(array_column($a,"id"));
+        dd(Unit::query()->whereIn('name',[])->get());
+
     }
 
     public function test2(){
-        $db = DB::connection('oracle');
-        $db->beginTransaction();
-        try{
-            $bas = $db->select("SELECT * FROM BAS_CODES where codeid = 'IVC_STS' and code = '00'");
-            foreach ($bas as $a) {
-                $row = $db->update(DB::raw("UPDATE BAS_CODES set codename_c = '创建' WHERE codeid = ? and code = ?"), [$a->codeid, $a->code]);
-                if ($row > 0) $db->commit();
-            }
-        }catch (\Exception $e){
-            $db->rollBack();
-        }
+        $a = Unit::query()->first();
+        dd($a);
+        /** @var Process $process */
+        $process = Process::query()->first();
+        event(new ResetProcessStatisticStartDateEvent($process));
     }
 
     function packageFromLog(Request $request)
@@ -140,6 +133,13 @@ class TestController extends Controller
 
     }
 
+    function wmsSql()
+    {
+        $owner=Owner::first();
+//        $owner['phone_number'] ?? $owner['phone_number'] = '31115';
+//        $owner->update();
+        dd($owner);
+    }
     function issues()
     {
         /** @var OrderPackageService $orderPackageService */
@@ -164,6 +164,10 @@ class TestController extends Controller
         echo ($inventoryCompareService)->getCreatingMissionCode('安桥主品');
     }
 
+    function tlog(Request $request)
+    {
+        app('LogService')->log(__METHOD__,'cczdelme'.__FUNCTION__,json_encode($request->all()),null);
+    }
     function setCache(Request $request)
     {
         $today = now();
@@ -302,7 +306,7 @@ class TestController extends Controller
                         'status' => $package->status]);
                 if (!$orderPackage) array_push($error, $package->id);
             }
-            LogService::log(__METHOD__, "同步时WMS中未找到这些订单", json_encode($error));
+            app('LogService')->log(__METHOD__, "同步时WMS中未找到这些订单", json_encode($error));
             $id = $packages[count($packages) - 1]->id;
             echo $number . ' a bunch done at:' . now()->toFormattedDateString() . '<br>';
         }
@@ -408,7 +412,7 @@ class TestController extends Controller
                     'status' => $package->status]);
             if (!$orderPackage) array_push($error, $package->id);
         }
-        if (count($error) > 0) LogService::log(__METHOD__, "同步时WMS中未找到这些订单_two", json_encode($error));
+        if (count($error) > 0) app('LogService')->log(__METHOD__, "同步时WMS中未找到这些订单_two", json_encode($error));
     }
 
     function test1()
@@ -460,7 +464,7 @@ class TestController extends Controller
             $processStatistic->gross_profit = $gross_profit;
             $processStatistic->gross_profit_rate = $gross_profit_rate;
             $processStatistic->update();
-            $this->log(__METHOD__, "修改二次加工单统计单_" . __FUNCTION__, json_encode($processStatistic), Auth::user()['id']);
+            app('LogService')->log(__METHOD__, "修改二次加工单统计单_" . __FUNCTION__, json_encode($processStatistic), Auth::user()['id']);
         }
     }
 
@@ -512,8 +516,8 @@ class TestController extends Controller
                 }
             }
             dd($commodityMap,$commodityDel,$commodityTag);
-            LogService::log(__METHOD__,'清理商品',json_encode($logs,JSON_UNESCAPED_UNICODE));
-            LogService::log(__METHOD__,'重新分配商品',json_encode($commodityTag,JSON_UNESCAPED_UNICODE));
+            app('LogService')->log(__METHOD__,'清理商品',json_encode($logs,JSON_UNESCAPED_UNICODE));
+            app('LogService')->log(__METHOD__,'重新分配商品',json_encode($commodityTag,JSON_UNESCAPED_UNICODE));
 
             app('InventoryAccountMissionService')->batchUpdateItself('commodity_id', $commodityTag);//批量更新库存盘点任务
             app('InventoryCompareService')->batchUpdateItself('commodity_id', $commodityTag);//批量更新库存对比
@@ -522,7 +526,7 @@ class TestController extends Controller
             app('StoreCheckingReceiveItemService')->batchUpdateItself('commodity_id', $commodityTag);//批量更新入库盘收一体
             app('OrderPackageCommoditiesService')->batchUpdateItself('commodity_id', $commodityTag);//批量更新订单商品
 
-            LogService::log(__METHOD__,'删除商品与对应条码',json_encode($commodityDel,JSON_UNESCAPED_UNICODE));
+            app('LogService')->log(__METHOD__,'删除商品与对应条码',json_encode($commodityDel,JSON_UNESCAPED_UNICODE));
             CommodityBarcode::query()->whereIn('commodity_id',$commodityDel)->delete();
             Commodity::destroy($commodityDel);
         }
@@ -531,7 +535,7 @@ class TestController extends Controller
     private function cleanBarcode(){
 
         $logCommodityBarcodes = CommodityBarcode::query()->where('code', "")->get();
-        if (count($logCommodityBarcodes) > 0) LogService::log(__METHOD__, "纠正商品-删除空条码", json_encode($logCommodityBarcodes, JSON_UNESCAPED_UNICODE));
+        if (count($logCommodityBarcodes) > 0) app('LogService')->log(__METHOD__, "纠正商品-删除空条码", json_encode($logCommodityBarcodes, JSON_UNESCAPED_UNICODE));
 
         CommodityBarcode::query()->where('code', "")->delete();
         $barcodes = DB::select(DB::raw('select * from commodity_barcodes c
@@ -544,7 +548,7 @@ where (c.code,c.commodity_id) in (select code,commodity_id from commodity_barcod
         }
 
         $logCommodityBarcodes = CommodityBarcode::query()->whereIn('id', $barcodeDelete)->get();
-        if (count($logCommodityBarcodes) > 0) LogService::log(__METHOD__, "纠正商品-删除重复条码", json_encode($logCommodityBarcodes, JSON_UNESCAPED_UNICODE));
+        if (count($logCommodityBarcodes) > 0) app('LogService')->log(__METHOD__, "纠正商品-删除重复条码", json_encode($logCommodityBarcodes, JSON_UNESCAPED_UNICODE));
 
         CommodityBarcode::destroy($barcodeDelete);
     }
@@ -622,16 +626,16 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             app('OrderPackageCommoditiesService')->batchUpdateItself('commodity_id', $updateCommodities);//批量更新订单商品
         }
 
-        if (count($createBarcodes) > 0) LogService::log(__METHOD__, "纠正商品-录入合并条码", json_encode(data_get($createBarcodes, '*.id'), JSON_UNESCAPED_UNICODE));
+        if (count($createBarcodes) > 0) app('LogService')->log(__METHOD__, "纠正商品-录入合并条码", json_encode(data_get($createBarcodes, '*.id'), JSON_UNESCAPED_UNICODE));
 
         CommodityBarcode::query()->insert($createBarcodes);
         $logCommodityBarcodes = CommodityBarcode::query()->whereIn('commodity_id', $deleteCommodities)->get();
-        if (count($logCommodityBarcodes) > 0) LogService::log(__METHOD__, "纠正商品-删除无用商品条码", json_encode(data_get($logCommodityBarcodes, '*.id'), JSON_UNESCAPED_UNICODE));
+        if (count($logCommodityBarcodes) > 0) app('LogService')->log(__METHOD__, "纠正商品-删除无用商品条码", json_encode(data_get($logCommodityBarcodes, '*.id'), JSON_UNESCAPED_UNICODE));
 
         CommodityBarcode::query()->whereIn('commodity_id', $deleteCommodities)->delete();
 
 //        $logCommodities = Commodity::query()->whereIn('id',$deleteCommodities)->get();
-        if (count($deleteCommodities) > 0) LogService::log(__METHOD__, "纠正商品-删除无用商品", json_encode($deleteCommodities, JSON_UNESCAPED_UNICODE));
+        if (count($deleteCommodities) > 0) app('LogService')->log(__METHOD__, "纠正商品-删除无用商品", json_encode($deleteCommodities, JSON_UNESCAPED_UNICODE));
 
         Commodity::destroy($deleteCommodities);
     }
@@ -711,8 +715,22 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
     public function test11()
     {
-        $orderHeader = OracleDOCOrderHeader::query()->with('actAllocationDetails')->where('orderNo', 'SO201024001172')->get();
-        dd(app(OrderService::class)->createByWmsOrder($orderHeader));
+        $rejectedBills = RejectedBill::query()
+            ->where('created_at','>=','2020-11-10 18:00:22')
+            ->where('created_at','<=','2020-11-11 00:00:00')
+            ->get();
+        $update = [['id','logistic_number']];
+        $rejectedBills->each(function ($rejectedBill)use(&$update){
+            if($rejectedBill->logistic_number == '原单退回'){
+                $details = OracleActAllocationDetails::query()->with('oracleDocOrderHeader')->whereHas('oracleDocOrderHeader',function($query)use($rejectedBill){
+                    $query->where('SOReference1',$rejectedBill->order_number);
+                })->get()->groupBy('picktotraceid');
+                if($details->count() == 1){
+                    $update[] = ['id'=> $rejectedBill->id ,'logistic_number'=>$rejectedBill->logistic_number_return];
+                }
+            }
+        });
+        app('RejectedBillService')->batchUpdate($update);
     }
 
     public function output()
@@ -733,6 +751,10 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
     {
         dd(Request::all());
     }
+    public function relating()
+    {
+        dd(OrderIssue::query()->where('id',182)->paginate()->total());
+    }
 
     public function updateOrdersWarehouse()
     {
@@ -773,4 +795,31 @@ 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 changeOrderIssue()
+    {
+        // $ids = [5419,5404,5402,5401,5400,5398,5397,5395,5388,5387,5383,5382,5379,5373,5370,5353,5329,5327];
+
+        // OrderIssue::query()->whereIn('id',$ids)->update(['is_new_rejecting'=>'无','rejecting_status'=>'未退回']);
+    }
+
 }

+ 3 - 3
app/Http/Controllers/UnitsController.php

@@ -32,7 +32,7 @@ class UnitsController extends Controller
         $this->validatorUnit($request,$id)->validate();
         $units=$request->input('Unit');
         if(Unit::create($units)){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/unit')->with('successTip','新计量单位“'.$request->input('Unit.name').'”添加成功');
         };
     }
@@ -52,7 +52,7 @@ class UnitsController extends Controller
         $unit=Unit::find($id);
         $unit->fill($data);
         if ($unit->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/unit')->with('successTip','计量单位“'.$request->input('Unit.name').'”修改成功');
         }
     }
@@ -61,7 +61,7 @@ class UnitsController extends Controller
     {
         if(!Gate::allows('计量单位-删除')){ return redirect(url('/'));  }
         $unit=Unit::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($unit),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($unit),Auth::user()['id']);
         $result=$unit->delete();
         return ['success'=>$result];
     }

+ 2 - 2
app/Http/Controllers/UserController.php

@@ -132,7 +132,7 @@ class UserController extends Controller
         }else{
             $user->userWorkgroups()->sync([]);
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/user/')->with('successTip',"成功修改用户“{$user['name']}”!");
     }
 
@@ -146,7 +146,7 @@ class UserController extends Controller
     public function destroy(User $user)
     {
         if(!Gate::allows('用户-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$user->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$user->toJson(),Auth::user()['id']);
         $re=$user->delete();
         return ['success'=>$re];
     }

+ 11 - 11
app/Http/Controllers/UserDutyCheckController.php

@@ -46,7 +46,7 @@ class UserDutyCheckController extends Controller
 
         $userLaborToken = $request->cookie('userLaborToken');
         $user_id = Cache::get('dutyCheckTokenStr_'.$userLaborToken);
-        if (!$user_id) $this->log(__METHOD__, "进出场扫码(未绑定设备)__" . __FUNCTION__, json_encode($importAndExportQRCodeType));
+        if (!$user_id) app('LogService')->log(__METHOD__, "进出场扫码(未绑定设备)__" . __FUNCTION__, json_encode($importAndExportQRCodeType));
         if ($userLaborToken && $user_id) {
             $userDetail = UserDetail::find($user_id);
             if($userDetail){
@@ -64,7 +64,7 @@ class UserDutyCheckController extends Controller
                     'importAndExportQRCodeType'=>$importAndExportQRCodeType,
                     'userDetail'=>$userDetail,
                 ];
-                $this->log(__METHOD__, "进出场扫码__" . __FUNCTION__, json_encode($log));
+                app('LogService')->log(__METHOD__, "进出场扫码__" . __FUNCTION__, json_encode($log));
                 return response()->view('personnel/checking-in/importAndExportSuccess', ['full_name' => $userDetail->full_name, 'checked_at' => $userDutyCheck->checked_at, 'type' => $userDutyCheck->type, 'laravelEchoPrefix' => $laravelEchoPrefix]);
 
             }
@@ -102,7 +102,7 @@ class UserDutyCheckController extends Controller
         $dateNow = Carbon::now()->format('Y-m-d');
         $userDutyCheckOld = UserDutyCheck::query()->with('laborReport')->where('user_id', $user_id)->where('checked_at','like',$dateNow.'%')->orderBy('id','desc')->first();
         $date = date('Y-m-d H:i:s');
-        $this->log(__METHOD__, "提交打卡记录__" . __FUNCTION__, json_encode([$user_id, $date]));
+        app('LogService')->log(__METHOD__, "提交打卡记录__" . __FUNCTION__, json_encode([$user_id, $date]));
         $userDutyCheck = new UserDutyCheck([
             'user_id' => $user_id,
             'checked_at' => $date,
@@ -133,7 +133,7 @@ class UserDutyCheckController extends Controller
             }
             $userDutyCheck->type = "登入";
             $userDutyCheck->save();
-            $this->log(__METHOD__, "创建打卡记录" . __FUNCTION__, json_encode($userDutyCheck));
+            app('LogService')->log(__METHOD__, "创建打卡记录" . __FUNCTION__, json_encode($userDutyCheck));
             return $userDutyCheck;
         }
 
@@ -153,7 +153,7 @@ class UserDutyCheckController extends Controller
             $userDutyCheck->type = '登出';
         }
         $userDutyCheck->save();
-        $this->log(__METHOD__, "创建打卡记录" . __FUNCTION__, json_encode($userDutyCheck));
+        app('LogService')->log(__METHOD__, "创建打卡记录" . __FUNCTION__, json_encode($userDutyCheck));
         return $userDutyCheck;
     }
     //去往登记资料页面
@@ -184,7 +184,7 @@ class UserDutyCheckController extends Controller
         $userLabor->update([
             'labor_company_id' => $labor_company_id,
         ]);
-        $this->log(__METHOD__, "更改临时工劳务所信息" . __FUNCTION__, json_encode($userLabor), Auth::user()['id']);
+        app('LogService')->log(__METHOD__, "更改临时工劳务所信息" . __FUNCTION__, json_encode($userLabor), Auth::user()['id']);
         $userDutyCheck=$this->importAndExportDutyCheck($userDetail->user_id,$importAndExportQRCodeType);
         if ($userDutyCheck && $userDutyCheck->isNotImport == true) return "<h1 style='color: darkred;text-align:center'>当前还未入场,不可出场!</h1>";
         if ($userDutyCheck && $userDutyCheck->import == true) return "<h1 style='color: darkred;text-align:center'>您已入场,不可再次入场!</h1>";
@@ -290,7 +290,7 @@ class UserDutyCheckController extends Controller
         $userWorkgroupID = $request->input('userWorkgroupID');
         $userLaborToken = $request->cookie('userLaborToken');
         $user_id = Cache::get('dutyCheckTokenStr_'.$userLaborToken);
-        if (!$user_id)$this->log(__METHOD__, "进组扫码(未绑定设备)__" . __FUNCTION__, json_encode($userWorkgroupID));
+        if (!$user_id)app('LogService')->log(__METHOD__, "进组扫码(未绑定设备)__" . __FUNCTION__, json_encode($userWorkgroupID));
         if ($userLaborToken && $user_id) {
             $dateNow = Carbon::now()->format('Y-m-d');
             $userDutyCheck = UserDutyCheck::where('user_id', $user_id)->where('checked_at', 'like', $dateNow. '%')->orderBy('id', 'desc')->first();
@@ -302,7 +302,7 @@ class UserDutyCheckController extends Controller
                 'userWorkgroupID'=>$userWorkgroupID,
                 'user_id'=>$user_id,
             ];
-            $this->log(__METHOD__, "进组扫码__" . __FUNCTION__, json_encode($log));
+            app('LogService')->log(__METHOD__, "进组扫码__" . __FUNCTION__, json_encode($log));
         }else{
             return view("personnel/checking-in/enterGroupClock", compact('userWorkgroupID'));
         }
@@ -318,7 +318,7 @@ class UserDutyCheckController extends Controller
         $laborReport = LaborReport::where('user_id', $user_id)->where('user_workgroup_id', null)->where('created_at', 'like', Carbon::now()->format('Y-m-d') . '%')->orderBy('id', 'desc')->first();
         if ($laborReport) {
             $newLaborReport = $laborReportService->enterGroupAndUpdateLaborReport($laborReport, $userWorkgroupID);
-            $this->log(__METHOD__, "当日首次进组更新临时工报表记录__" . __FUNCTION__, json_encode($userWorkgroupID));
+            app('LogService')->log(__METHOD__, "当日首次进组更新临时工报表记录__" . __FUNCTION__, json_encode($userWorkgroupID));
             if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
             if ($newLaborReport) event(new ClockinEvent($newLaborReport));
         } else {
@@ -328,7 +328,7 @@ class UserDutyCheckController extends Controller
             if (!$laborReportNow['group_user_id'] && $laborReportNow['user_workgroup_id']==$userWorkgroupID) return "<h1 style='color: darkred;text-align:center'>当前已进组,请等待组长审核!</h1>";
             //此处表示临时工换组操作
             $newLaborReport = $laborReportService->changeGroupAndMakeLaborReport($user_id, $userWorkgroupID);
-            $this->log(__METHOD__, "当日临时工换组新建临时工报表记录__" . __FUNCTION__, json_encode([$user_id, $userWorkgroupID]));
+            app('LogService')->log(__METHOD__, "当日临时工换组新建临时工报表记录__" . __FUNCTION__, json_encode([$user_id, $userWorkgroupID]));
             if (!$newLaborReport) return "<h1 style='color: red;text-align:center'>打卡异常,请联系相关人员!</h1>";
             if ($newLaborReport) event(new ClockinEvent($newLaborReport));
         }
@@ -348,7 +348,7 @@ class UserDutyCheckController extends Controller
         $userDutyCheck = UserDutyCheck::where('user_id', $userDetail->user_id)->where('checked_at', 'like', $dateNow. '%')->orderBy('id', 'desc')->first();
         if (!$userDutyCheck['verify_user_id']) return "<h1 style='color: red;text-align:center'>进场门卫还未审核,暂无法进组!</h1>";
         if ($userDutyCheck->type == '登出') return "<h1 style='color: red;text-align:center'>进场是否未打卡?如若未打,请先返回打进场卡!</h1>";
-        $this->log(__METHOD__, "进组扫码未绑定设备重新绑定__" . __FUNCTION__, json_encode([$userWorkgroupID,$userDetail]));
+        app('LogService')->log(__METHOD__, "进组扫码未绑定设备重新绑定__" . __FUNCTION__, json_encode([$userWorkgroupID,$userDetail]));
         $html=$this->updateLaborReport($userDetail->user_id,$userWorkgroupID,$userLaborToken);
         if ($html)return $html;
     }

+ 5 - 5
app/Http/Controllers/UserLaborController.php

@@ -135,7 +135,7 @@ class UserLaborController extends Controller
         $userDetail->gender=$request->input('gender');
         $userDetail->identity_number=$request->input('identity_number');
         $userDetail->update();
-        $this->log(__METHOD__,"修改用户详情".__FUNCTION__,json_encode($userDetail),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"修改用户详情".__FUNCTION__,json_encode($userDetail),Auth::user()['id']);
         $default_hour_price=$request->input('default_hour_price');
         $laborCompanyName=$request->input('name');
         $labor_company_id=LaborCompany::where('name','=',$laborCompanyName)->value('id');
@@ -144,7 +144,7 @@ class UserLaborController extends Controller
             $userLabor->default_hour_price=$default_hour_price;
             $userLabor->labor_company_id=$labor_company_id;
             $userLabor->update();
-            $this->log(__METHOD__,"修改临时工".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,"修改临时工".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
         }
         return redirect('maintenance/userLabor')->with('successTip','临时工“'.$userDetail->full_name.'”信息修改成功!');
     }
@@ -165,11 +165,11 @@ class UserLaborController extends Controller
             return ['error'=>'未找到对应临时工'];
         }
         $userDetail->delete();
-        $this->log(__METHOD__,"删除用户详情".__FUNCTION__,json_encode($userDetail),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"删除用户详情".__FUNCTION__,json_encode($userDetail),Auth::user()['id']);
         $user->delete();
-        $this->log(__METHOD__,"删除临时工用户".__FUNCTION__,json_encode($user),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"删除临时工用户".__FUNCTION__,json_encode($user),Auth::user()['id']);
         $userLabor->delete();
-        $this->log(__METHOD__,"删除临时工".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"删除临时工".__FUNCTION__,json_encode($userLabor),Auth::user()['id']);
         return ['success'=>true];
     }
 }

+ 6 - 6
app/Http/Controllers/UserWorkgroupController.php

@@ -46,7 +46,7 @@ class UserWorkgroupController extends Controller
         ]);
         $sign->save();
         $this->storeAuthority($UserWorkgroup['name'],$UserWorkgroup->id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/userWorkgroup')->with('successTip','新工作组“'.$request->input('name').'”添加成功');
     }
 
@@ -79,7 +79,7 @@ class UserWorkgroupController extends Controller
         if ($sign){
             $sign->mark=$mark;
             $sign->update();
-            $this->log(__METHOD__,'工作组是否需要录入备注'.__FUNCTION__,json_encode($sign),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'工作组是否需要录入备注'.__FUNCTION__,json_encode($sign),Auth::user()['id']);
         }
         if(!$sign){
             $newSign=new Sign([
@@ -89,7 +89,7 @@ class UserWorkgroupController extends Controller
                 'mark'=>$mark,
             ]);
             $newSign->save();
-            $this->log(__METHOD__,'工作组是否需要录入备注'.__FUNCTION__,json_encode($sign),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,'工作组是否需要录入备注'.__FUNCTION__,json_encode($sign),Auth::user()['id']);
         }
         $userWorkgroup['warehouse_id']= $data['warehouse_id'];
         if ($data['name']!=$userWorkgroup->name){
@@ -104,10 +104,10 @@ class UserWorkgroupController extends Controller
             }
             $userWorkgroup->fill($data);
             $userWorkgroup->update();
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         }else{
             $userWorkgroup->update();
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         }
         return redirect('maintenance/userWorkgroup')->with('successTip','工作组“'.$request->input('name').'”修改成功');
     }
@@ -116,7 +116,7 @@ class UserWorkgroupController extends Controller
     {
         if(!Gate::allows('工作组-删除')){ return redirect(url('/'));  }
         $UserWorkgroup=UserWorkgroup::with('signs')->find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($UserWorkgroup),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($UserWorkgroup),Auth::user()['id']);
         $sign=$UserWorkgroup->signs;
         $sign->delete();
         $result=$UserWorkgroup->delete();

+ 3 - 3
app/Http/Controllers/WarehouseController.php

@@ -49,7 +49,7 @@ class WarehouseController extends Controller
         $warehouse=new Warehouse($request->all());
         $warehouse->save();
 
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/warehouse/create')->with('successTip',"成功录入仓库“{$request->input('name')}”");
     }
     protected function validatorCreate(array $data)
@@ -102,7 +102,7 @@ class WarehouseController extends Controller
         $this->validatorUpdate($request->all())->validate();
         $warehouse->fill($request->all());
         $warehouse->update();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('maintenance/warehouse/')->with('successTip',"成功修改仓库“{$warehouse['name']}”!");
     }
 
@@ -116,7 +116,7 @@ class WarehouseController extends Controller
     public function destroy(Warehouse $warehouse)
     {
         if(!Gate::allows('仓库-删除')){ return redirect(url('/'));  }
-        $this->log(__METHOD__,__FUNCTION__,$warehouse->toJson(),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$warehouse->toJson(),Auth::user()['id']);
         $re=$warehouse->delete();
         return ['success'=>$re];
     }

+ 1 - 1
app/Http/Controllers/WaveController.php

@@ -62,7 +62,7 @@ class WaveController extends Controller
         if($meg['fail_info']){
             return $meg;
         }
-        $this->log(__METHOD__,'重置打印标记'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'重置打印标记'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return $meg;
     }
 

+ 12 - 12
app/Http/Controllers/WaybillController.php

@@ -76,7 +76,7 @@ class WaybillController extends Controller
         $this->validatorWaybill($request,$id)->validate();
         /** @var WaybillService */
         $waybill=app('waybillService')->store($request);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('waybill/index')->with('successTip','新运单“'.$waybill->waybill_number.'”录入成功');
     }
 
@@ -151,7 +151,7 @@ class WaybillController extends Controller
             $waybillPayoffParam['gross_profit_rate'] = $waybillPayoffParam['gross_margin']/$waybillPayoffParam['total_receivable'];
             $waybillPayoffService->updateOrCreate($waybillPayoffParam);
         }
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return redirect('waybill/index')->with('successTip','运单“'.$waybill->waybill_number.'”调度成功');
     }
 
@@ -331,7 +331,7 @@ class WaybillController extends Controller
         $waybill=app('waybillService')->find($id);
         $waybill->fill($data);
         if ($waybill->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
             return redirect('waybill/index')->with('successTip','运单“'.$waybill->waybill_number.'”修改成功');
         }
     }
@@ -351,7 +351,7 @@ class WaybillController extends Controller
             $waybillAuditLog['user']=Auth::user();
             $waybill->status='已审核';
             $result=$waybill->save();
-            $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
             return ['success'=>$result,'status'=>$waybill->status,'waybillAuditLog'=>$waybillAuditLog];
         }
         return ['exception'=>'请勿重复审核!'];
@@ -370,7 +370,7 @@ class WaybillController extends Controller
         WaybillAuditLog::whereRaw('waybill_id = ? and audit_stage = ?',[$id,"运单阶段"])->delete();
         $waybill->status='待重审';
         $result=$waybill->save();
-        $this->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($waybill),Auth::user()['id']);
         return ['success'=>$result,'status'=>$waybill->status];
     }
     public function waybillEndAudit(Request $request){
@@ -414,7 +414,7 @@ class WaybillController extends Controller
                     ]);
                 }
             }
-            $this->log(__METHOD__,__FUNCTION__,$waybillPayoffJson,Auth::id());
+            app('LogService')->log(__METHOD__,__FUNCTION__,$waybillPayoffJson,Auth::id());
             return ['success'=>$result,'status'=>$waybill->status,'waybillAuditLog'=>$waybillAuditLog];
         }
         return ['exception'=>'请勿重复审核!'];
@@ -511,7 +511,7 @@ class WaybillController extends Controller
                 "type"=>$fileExtension,
             ]);
             if ($uploadFile->save())
-                $this->log(__METHOD__,'图片上传',json_encode($request),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,'图片上传',json_encode($request),Auth::user()['id']);
             $uploadFile->url=asset('/storage'.$uploadFile->url);
             return ['success'=>true,'data'=>$uploadFile];
         }
@@ -532,7 +532,7 @@ class WaybillController extends Controller
             }
         }
         UploadFile::where('table_name','waybills')->whereIn('table_id',$ids)->delete();
-        $this->log(__METHOD__,'图片删除',json_encode($request),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,'图片删除',json_encode($request),Auth::user()['id']);
         return ['success'=>true];
     }
 
@@ -754,7 +754,7 @@ class WaybillController extends Controller
         $waybills->each(function (Waybill $waybill){
             $waybill->restore();
         });
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','waybills'=>$waybills];
     }
     // 修改运费
@@ -766,7 +766,7 @@ class WaybillController extends Controller
             return ['success'=>'false','fail_info'=>'参数异常'];
         }
         $result = Waybill::where('id',$wayBillId)->update(['fee'=>$waybillFee]);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>$result,'status'=>$result];
     }
     // 修改运输收费
@@ -778,7 +778,7 @@ class WaybillController extends Controller
             return ['success'=>'false','fail_info'=>'参数异常'];
         }
         $result = Waybill::where('id',$wayBillId)->update(['charge'=>$waybillCharge]);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>$result,'status'=>$result];
     }
     // 置顶
@@ -825,7 +825,7 @@ class WaybillController extends Controller
             if ($waybill['warehouse_weight_other']!=$warehouseWeight){
                 $waybill['warehouse_weight_other']=$warehouseWeight;
                 $waybill->update();
-                $this->log(__METHOD__,'刷新仓库计重'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,'刷新仓库计重'.__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             }
         }else{
             $warehouseWeight=$waybill['warehouse_weight_other'];

+ 4 - 4
app/Http/Controllers/WaybillPriceModelsController.php

@@ -89,7 +89,7 @@ class WaybillPriceModelsController extends Controller
             if ($waybillPriceModel['initial_weight']==null){unset($waybillPriceModel['initial_weight']);}
             $waybillPriceModel=WaybillPriceModel::create($waybillPriceModel);
             event(new WaybillPriceModelEvent($waybillPriceModel));
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/priceModel/waybillPriceModel')->with('successTip','新计费模型录入成功');
         }else{
             return redirect()->back()->with('successTip','该计费模型已存在');
@@ -121,7 +121,7 @@ class WaybillPriceModelsController extends Controller
         $waybillPriceModel->fill($data);
         if ($waybillPriceModel->save()){
             event(new WaybillPriceModelEvent($waybillPriceModel));
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return redirect('maintenance/priceModel/waybillPriceModel')->with('successTip','新计费模型修改成功');
         }
     }
@@ -130,7 +130,7 @@ class WaybillPriceModelsController extends Controller
     {
         if(!Gate::allows('计费模型-删除')){ return redirect(url('/'));  }
         $waybillPriceModel=WaybillPriceModel::find($id);
-        $this->log(__METHOD__,__FUNCTION__,json_encode($waybillPriceModel),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($waybillPriceModel),Auth::user()['id']);
         $result=$waybillPriceModel->delete();
         return ['success'=>$result];
     }
@@ -153,7 +153,7 @@ class WaybillPriceModelsController extends Controller
                 $exception=Cache::get('exception');
                 $a='';
                 for ($i=0;$i<count($exception);$i++){$a.=implode(',',$exception[$i]).'&#10'; };
-                $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
                 return '<h1 class="text-danger">导入Excel成功<br><textarea style="width: 50%;height: 50%">'.$a.'</textarea></h1>';
             }
         }else{

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

@@ -18,30 +18,30 @@ class PackageController extends Controller
     public function new_(Request $request)
     {
 //        $requestInputs=$request->all();
-//        $this->log(__METHOD__,'request_'.__FUNCTION__,json_encode($requestInputs),null);
+//        app('LogService')->log(__METHOD__,'request_'.__FUNCTION__,json_encode($requestInputs),null);
 //        $errors=$this->validatorForNew($requestInputs)->errors();
 //        if(count($errors)>0){
-//            $this->log(__METHOD__,'error2_'.__FUNCTION__,json_encode($requestInputs).'||'.json_encode($errors),null);
+//            app('LogService')->log(__METHOD__,'error2_'.__FUNCTION__,json_encode($requestInputs).'||'.json_encode($errors),null);
 //            return ['response'=>['flag'=>'W','message'=>'fields wrong, see Errors report please.',
 //                'errors'=>$errors]];
 //        }
 //        $receiveInputs=$requestInputs['request'];
 //        $package=Package::where('logistic_number',$receiveInputs['SOReference5'])->first();
 //        if (!$receiveInputs['Customer']) {
-//            $this->log(__METHOD__, __FUNCTION__, '富勒没有下发货主!快递单号:'.$receiveInputs['SOReference5'] , null);
+//            app('LogService')->log(__METHOD__, __FUNCTION__, '富勒没有下发货主!快递单号:'.$receiveInputs['SOReference5'] , null);
 //        }
 //        $owner=Owner::select('id')->where('code',$receiveInputs['Customer'])->first();
 //        if (!$owner&&$receiveInputs['SOReference5']) {
 //            Owner::create(['code'=>$receiveInputs['Customer'],'name'=>$receiveInputs['Customer']]);
-//            $this->log(__METHOD__, __FUNCTION__, '富勒下发找不到货主,添加. 快递单号:'.$receiveInputs['SOReference5'] , null);
+//            app('LogService')->log(__METHOD__, __FUNCTION__, '富勒下发找不到货主,添加. 快递单号:'.$receiveInputs['SOReference5'] , null);
 //        }
 //        if (!$receiveInputs['CarrierID']) {
-//            $this->log(__METHOD__, __FUNCTION__, '富勒没有下发快递公司!快递单号:'.$receiveInputs['SOReference5'] , null);
+//            app('LogService')->log(__METHOD__, __FUNCTION__, '富勒没有下发快递公司!快递单号:'.$receiveInputs['SOReference5'] , null);
 //        }
 //        $logistic=Logistic::select('id')->where('code',$receiveInputs['CarrierID'])->first();
 //        if (!$logistic&&$receiveInputs['CarrierID']) {
 //            Logistic::create(['code'=>$receiveInputs['CarrierID'],'name'=>$receiveInputs['CarrierID']]);
-//            $this->log(__METHOD__, __FUNCTION__, '富勒下发找不到承运商,添加. 快递单号:' .$receiveInputs['SOReference5'] , null);
+//            app('LogService')->log(__METHOD__, __FUNCTION__, '富勒下发找不到承运商,添加. 快递单号:' .$receiveInputs['SOReference5'] , null);
 //        }
 //        if ($package) {
 //            $package->delivery_number = $receiveInputs['palletid'];
@@ -65,7 +65,7 @@ class PackageController extends Controller
 //                $package->status = "上传异常";
 //            }
 //            $package->save();
-//            $this->log(__METHOD__, 'fluxPackageApi' . __FUNCTION__, json_encode($request->all()), null);
+//            app('LogService')->log(__METHOD__, 'fluxPackageApi' . __FUNCTION__, json_encode($request->all()), null);
 //            return response()->json(['response' => ['flag' => 'Y', 'code' => '0000', 'message' => '正确接收']])
 //                ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
 //        }
@@ -90,7 +90,7 @@ class PackageController extends Controller
 //                'status'=>'未测量'
 //            ]);
 //        }else{
-//            $this->log(__METHOD__,'fluxPackageApi(no owner or carrier)'.__FUNCTION__,json_encode($request->all()),null);
+//            app('LogService')->log(__METHOD__,'fluxPackageApi(no owner or carrier)'.__FUNCTION__,json_encode($request->all()),null);
 //            $createPackage = new Package([
 //                'logistic_number'=>$receiveInputs['SOReference5'],
 //                'delivery_number'=>$receiveInputs['palletid'],
@@ -126,12 +126,12 @@ class PackageController extends Controller
 //                MarkPackageExcepted::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440));
 //            }
 //            $createPackage->save();
-//            $this->log(__METHOD__, 'success_' . __FUNCTION__, json_encode($request->all()), null);
+//            app('LogService')->log(__METHOD__, 'success_' . __FUNCTION__, json_encode($request->all()), null);
 //            return response()->json(['response' => ['flag' => 'Y', 'code' => '0000', 'message' => '正确接收']])
 //                ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
 //        }
 //        MarkPackageExcepted::dispatch($createPackage)->delay(Carbon::now()->addMinutes(1440));
-//        $this->log(__METHOD__,'success_'.__FUNCTION__,json_encode($request->all()),null);
+//        app('LogService')->log(__METHOD__,'success_'.__FUNCTION__,json_encode($request->all()),null);
         return response()->json(['response'=>['flag'=>'Y','code'=>'0000','message'=>'正确接收']])
             ->setEncodingOptions(JSON_UNESCAPED_UNICODE);
     }
@@ -185,17 +185,17 @@ class PackageController extends Controller
 //            $json=json_encode($json);
 //            $url=url(config('api.flux.package.new'));
 //            $response = Zttp::post($url, json_decode($json));
-//            $this->log(__METHOD__,'Sign'.__FUNCTION__,json_encode($response->json()),null);
+//            app('LogService')->log(__METHOD__,'Sign'.__FUNCTION__,json_encode($response->json()),null);
 //            $response=$response->json();
 //            $noIssues=true;
 //            if(!$response||!isset($response['response'])||!$response['response']['flag']=='Y'){
 //                $noIssues=false;
 //            }
 //            if($noIssues&&$response['response']['flag']=='Y'){
-//                $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
+//                app('LogService')->log(__METHOD__,'SUCCESS_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
 //                return ['result'=>'success'];
 //            }
-//            $this->log(__METHOD__,'ERROR_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
+//            app('LogService')->log(__METHOD__,'ERROR_'.__FUNCTION__,json_encode($json).'| response: '.json_encode($response),null);
 //            return ['result'=>'false'];
 //        }catch (\Exception $exception){
 //            Controller::logS(__METHOD__,'Exception_'.__FUNCTION__,'请求异常:'.$exception->getMessage(),null);
@@ -213,7 +213,7 @@ class PackageController extends Controller
             if(!$docOrderPackingSummary){
                 OracleDocOrderPackingSummary::create(['traceid'=>$package['logistic_number'],'orderno'=>$package['oracleInfo']['orderno'],'grossweight'=>$package['weight'],'addwho'=>'WAS','addtime'=>Carbon::now(),'editwho'=>'WAS','edittime'=>Carbon::now()]);
             }
-            $this->log(__METHOD__,'SUCCESS_'.__FUNCTION__,"称重写入WMS成功:".json_encode($package),null);
+            app('LogService')->log(__METHOD__,'SUCCESS_'.__FUNCTION__,"称重写入WMS成功:".json_encode($package),null);
             return ['result'=>'success'];
         }catch (\Exception $exception){
             Controller::logS(__METHOD__,'Exception_'.__FUNCTION__,'称重写入WMS请求异常:'.$exception->getMessage(),null);
@@ -232,7 +232,7 @@ class PackageController extends Controller
         OracleDOCWaveHeader::query()->where('waveno',$batchNumber)->update(['userdefine3'=>'Y']);
         OracleIdxAsrsReceive::saveOrUpdateWeightByBatch($batchNumber,$weight);
         OracleDocOrderPackingSummary::saveOrUpdateWeightByBatch($batchNumber,$weight);
-        
+
         Controller::logS(__METHOD__,'SUCCESS_'.__FUNCTION__,'标记WMS波次:'.$batchNumber.',userdefine3="Y"',auth()->user()['id']);
         return ['result'=>true];
     }

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

@@ -180,7 +180,7 @@ class ProcessController extends Controller
         //TODO 保留:根据条码与货主批量二次查找商品
         if (count($commoditiesData) > 0){
             app('CommodityService')->insert($commoditiesData);
-            $this->log(__METHOD__, 'FLUX二次加工单接口录入商品__' . __FUNCTION__, json_encode($commoditiesData), Auth::user()['id']);
+            app('LogService')->log(__METHOD__, 'FLUX二次加工单接口录入商品__' . __FUNCTION__, json_encode($commoditiesData), Auth::user()['id']);
             $commodities=Commodity::query()->whereIn('sku',$commoditiesTem['sku'])->whereIn('owner_id',$commoditiesTem['owner_id'])->get();
             foreach ($commodities as $commodity){
                 if (isset($commodityBarCodeData[$commodity->sku."_".$commodity->owner_id]))
@@ -188,7 +188,7 @@ class ProcessController extends Controller
             }
             if (count($commodityBarCodeData) > 0){
                 app('CommodityBarcodeService')->insert(array_values($commodityBarCodeData));
-                $this->log(__METHOD__, 'FLUX二次加工单接口录入商品条码__' . __FUNCTION__, json_encode($commodityBarCodeData), Auth::user()['id']);
+                app('LogService')->log(__METHOD__, 'FLUX二次加工单接口录入商品条码__' . __FUNCTION__, json_encode($commodityBarCodeData), Auth::user()['id']);
             }
         }
     }
@@ -200,7 +200,7 @@ class ProcessController extends Controller
             "code"=>$code
         ]);
         $owner->save();
-        $this->log(__METHOD__, 'FLUX二次加工单接口录入货主__' . __FUNCTION__, json_encode($owner), Auth::user()['id']);
+        app('LogService')->log(__METHOD__, 'FLUX二次加工单接口录入货主__' . __FUNCTION__, json_encode($owner), Auth::user()['id']);
         return $owner;
     }
 

+ 1 - 1
app/Http/Controllers/api/thirdPart/flux/ReceiveController.php

@@ -31,7 +31,7 @@ class ReceiveController extends Controller
         if($isNotAHugeList){
             $errors=$this->validatorForNew($request->all())->errors();
             if(count($errors)>0){
-                $this->log(__METHOD__, 'error_body' . __FUNCTION__, json_encode($request->getContent()));
+                app('LogService')->log(__METHOD__, 'error_body' . __FUNCTION__, json_encode($request->getContent()));
                 (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,'fields wrong, see Errors report please.'.'|'.json_encode($request).'|'.json_encode($errors));
                 return response()->json(['response'=>['flag'=>'W','message'=>'fields wrong, see Errors report please.',
                     'errors'=>$errors]])

+ 213 - 0
app/Http/Controllers/api/thirdPart/flux/SortingController.php

@@ -0,0 +1,213 @@
+<?php
+
+namespace App\Http\Controllers\Api\thirdPart\flux;
+
+use App\Batch;
+use App\Commodity;
+use App\Http\Controllers\Controller;
+use App\OracleActAllocationDetails;
+use App\Order;
+use App\OrderBin;
+use App\OrderCommodity;
+use App\Owner;
+use Carbon\Carbon;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Validator;
+use Zttp\Zttp;
+
+class SortingController extends Controller
+{
+
+    /**
+     * 新增被通知的波次列表(一个以上的波次),并且保存在本地数据库,供get波次使用
+     * 接收:request[(下边newBatch的字段)]
+     * 返回:Response{return{returnFlag(1/0),returnCode(0000/0001),returnDesc,resultInfo}}
+     */
+    public function newBatch(Request $request)
+    {
+        $requestArr=$request->all();
+        app('LogService')->log(__METHOD__, 'issued_' . __FUNCTION__, json_encode($request->all()));
+        !$requestArr?$requestArr=json_decode($request->getContent(),true):false;
+        $errors=$this->newBatchValidator($requestArr)->errors();
+        if(count($errors)>0){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, 'fields wrong, see Errors report please.'.'|'.json_encode($request->all()).'|'.json_encode($errors));
+            return response()->json(['Response'=>['return'=>['returnFlag'=>'0','returnCode'=>'0001',
+                'returnDesc'=>':Failure','resultInfo'=>'','errors'=>$errors]]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        $requestBatches = $requestArr['request']?? '';
+        foreach ($requestBatches as $requestBatch){
+            $requestBatch['edittime']&&strpos(trim($requestBatch['edittime']),' ')?$editTimeFormat='Y-m-d H:i:s':$editTimeFormat='YmdHis';
+            $batch=new Batch([
+                'code' => $requestBatch['waveno'],
+                'wms_type' => $requestBatch['batch_type']??'',
+                'wms_status' => $requestBatch['docstatus']??'',
+                'status' => '未处理',
+                'wms_created_at' => $requestBatch['edittime']?Carbon::createFromFormat($editTimeFormat,$requestBatch['edittime']):'',
+            ]);
+            $batch->save();
+            $oracleAlloactions=OracleActAllocationDetails::query()->where('waveno',$requestBatch['waveno'])->get();
+            foreach($requestBatch['order_list'] as $requestOrder){
+                $owner=Owner::query()->where('code',$requestOrder['customerid'])->first();
+                $order=Order::query()->where('code',$requestOrder['docno'])->first();
+                if(!$order){
+                    $order=new Order([
+                        'batch_id' => $batch['id'],
+                        'code' => $requestOrder['docno'],
+                        'owner_id' => $owner['id'],
+                        'wms_status' => $requestOrder['docstatus']??'波次下发',
+                        'status' => '未处理',
+                    ]);
+                }else{
+                    $order['batch_id']= $order['batch_id']??$batch['id'] ;
+                    $order['owner_id']=$order['owner_id']??$owner['owner_id'];
+                    $order['wms_status']=$order['wms_status']??$requestOrder['docstatus']??'波次下发';
+                    $order['status']=$order['status']??'未处理';
+                }
+                $order->save();
+                OrderBin::query()->firstOrCreate([
+                    'order_id' => $order['id'],
+                    'number' => $requestOrder['reservedfield01'],
+                ]);
+                foreach($requestOrder['barcode_list'] as $requestBarcode){
+                    $orderCommodity=OrderCommodity::query()
+                        ->where('order_id',$order['id'])->where('wms_ptltaskid',$requestBarcode['ptltaskid'])->first();
+                    if(!$orderCommodity){
+                        $commodity=Commodity::newCommodityBy_BarcodeOwnerIdNameSku($requestBarcode['alternate_sku1'],$owner['id'],$requestBarcode['descr_c'],$requestBarcode['sku']);
+                        $orderCommodity = new OrderCommodity([
+                            'order_id' => $order['id'],
+                            'commodity_id' => $commodity['id'],
+                            'amount' => $requestBarcode['fmqty_each']??0,
+                            'wms_ptltaskid' => $requestBarcode['ptltaskid'],
+                        ]);
+                        $allocation=$oracleAlloactions->where('orderno',$requestOrder['docno'])->where('sku',$commodity['sku'])->where('qty',$requestBarcode['fmqty_each'])->first();
+                        if($allocation)
+                            $orderCommodity['location'] = $allocation['location'];
+                        $orderCommodity->save();
+                    }
+                }
+            }
+        }
+        return response()->json(['Response'=>['return'=>['returnFlag'=>'1','returnCode'=>'0000',
+            'returnDesc'=>'消息处理成功:Success','resultInfo'=>'']]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+    }
+
+    protected function newBatchValidator(array $data)
+    {
+        return Validator::make($data, [
+            'request' => ['required', 'array', 'min:1'],
+            'request.*.waveno' => ['required', 'string', 'max:191','unique:batches,code'],
+            'request.*.taskprocess' => ['nullable', 'string', 'max:191'],
+            'request.*.edittime' => ['nullable', 'string', 'max:191'],
+            'request.*.batch_type' => ['nullable', 'string', 'max:191'],
+            'request.*.docstatus' => ['nullable', 'string', 'max:191'],
+            'request.*.batch_created_at' => ['nullable', 'string', 'max:191'],
+            'request.*.order_list' => ['required', 'array', 'min:1'],
+            'request.*.order_list.*.docno' => ['required', 'string', 'max:191'],
+            'request.*.order_list.*.customerid' => ['required', 'string', 'max:191','exists:owners,code'],
+            'request.*.order_list.*.docstatus' => ['nullable', 'string', 'max:191'],
+            'request.*.order_list.*.reservedfield01' => ['required',  'max:191'],
+            'request.*.order_list.*.barcode_list' => ['required_unless:request.*.order_list.*.docstatus,90', 'array'],
+            'request.*.order_list.*.barcode_list.*.alternate_sku1' => ['required', 'string', 'max:191'],
+            'request.*.order_list.*.barcode_list.*.descr_c' => ['required', 'string', 'max:191'],
+            'request.*.order_list.*.barcode_list.*.fmqty_each' => ['required', 'numeric'],
+            'request.*.order_list.*.barcode_list.*.ptltaskid' => ['required', 'string', 'max:191'],
+        ]);
+    }
+
+    /**
+     * 新增被通知的取消订单
+     * 接收:docno(订单号),docstatus(状态,唯一:canceled)
+     * 返回:Response{return{returnFlag(1/0),returnCode(0000/0001),returnDesc,resultInfo}} 1和0000成功,0和0001失败
+     */
+    public function newCanceledOrder(Request $request)
+    {
+        $requestArr=$request->all();
+        !$requestArr?$requestArr=json_decode($request->getContent(),true):false;
+        Controller::logS(__METHOD__,__FUNCTION__,"接收到WMS下发取消单:".$request->getContent());
+        $errors=$this->newCanceledOrderValidator($requestArr)->errors();
+        if(count($errors)>0){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, 'fields wrong, see Errors report please.'.'|'.json_encode($request->all()).'|'.json_encode($errors));
+            return response()->json(['Response'=>['return'=>['returnFlag'=>'0','returnCode'=>'0001',
+                'returnDesc'=>':Failure','resultInfo'=>'','errors'=>$errors]]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        $order=Order::query()->where('code',$requestArr['docno'])->first();
+        $order->cancel();
+        return response()->json(['Response'=>['return'=>['returnFlag'=>'1','returnCode'=>'0000',
+            'returnDesc'=>'消息处理成功:Success','resultInfo'=>'']]])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+    }
+
+    protected function newCanceledOrderValidator(array $data)
+    {
+        return Validator::make($data, [
+            'docno' => ['required', 'string', 'max:191', 'exists:orders,code'],
+            'docstatus' => ['required', 'string', 'max:191'],
+        ]);
+    }
+
+
+
+    public function informBinAssignment(Batch $batch)
+    {
+        $apiUrl=config('api.flux.inform.binAssignment');
+        if(config('api.faking')){$apiUrl=url(config('api.fake_flux_informBinAssignment'));}
+        $sendingData=['request'=>[]];
+        $batch->orders()->each(function(Order $order)use($batch,&$sendingData){
+            $sendingData['request'][]=[
+                'batch_id'=>$batch['code'],
+                'status'=>'00',//原来是beforeSorting,改成了00
+                'order_id'=>$order['code'],
+                'bin'=>$order->bin()->first()['number']
+            ];
+        });
+        $response=null;
+        try {
+            $response=Zttp::post($apiUrl,$sendingData);
+        }catch (\Exception $e){
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'catch:'.$e->getMessage());
+            return false;
+        }
+        $reJson=$response->json();
+        if(!$reJson || (!isset($reJson['Response'])||!isset($reJson['Response']['return'])) || $reJson['Response']['return']['returnFlag']!='1'){
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'$sending:'.json_encode($sendingData).'$response:'.$response->body());
+            return false;
+        }
+        return true;
+    }
+
+
+    public function informBatchFinished(Batch $batch){
+        $sendingData=['request'=>[]];
+        $batch->orders()->each(function (Order $order)use($batch,&$sendingData){
+            $order->orderCommodities()->each(function (OrderCommodity $orderCommodity)use($batch,$order,&$sendingData){
+                $bin=$order->bin()->first();
+                $sendingData['request'][]=[
+                    'ptltaskid'=>$orderCommodity['wms_ptltaskid'],
+                    'batch_id'=>$batch['code'],
+                    'status'=>'80', //原来是isSorted,改成了80
+                    'order_id'=>$order['code'],
+                    'bin'=>$bin?$bin['number']:'',
+                    'docstatus'=>'success',
+                    'sku'=>$orderCommodity->commodity()->first()?$orderCommodity->commodity()->first()['sku']:'',
+                    'amount'=>'0',
+                ];
+            });
+        });
+        $informApiUrl = config('api.flux.inform.batchFinished');
+        try{
+            $response=Zttp::post($informApiUrl,$sendingData);
+            $result=$response->json();
+            if(!$result||!$result['Response']['return']['returnFlag']||$result['Response']['return']['returnCode']!='0000'){
+                app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'$sending:'.json_encode($sendingData).'|$response:'.$response->body());
+                return false;
+            }
+        }
+        catch(\Exception $e){
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'catch:'.$e->getMessage());
+            return false;
+        }
+        app('LogService')->log(__METHOD__,'temp_'.__FUNCTION__,'$sending:'.json_encode($sendingData).'|$response:'.$response->body());
+        return true;
+    }
+
+
+}

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

@@ -24,7 +24,7 @@ class WaybillController extends Controller
         (new Controller())->log(__METHOD__,__FUNCTION__,'WMS requesting:.'.'|'.json_encode($request->all()));
         $errors=$this->validatorForNew($request->all())->errors();
         if(count($errors)>0){
-            $this->log(__METHOD__, 'error_' . __FUNCTION__, json_encode($request->getContent()));
+            app('LogService')->log(__METHOD__, 'error_' . __FUNCTION__, json_encode($request->getContent()));
             (new Controller())->log(__METHOD__,'error_'.__FUNCTION__,'fields wrong, see Errors report please.'.'|'.json_encode($request->all()).'|'.json_encode($errors));
             return response()->json(['response'=>['return'=>['returnFlag'=>'0','returnCode'=>'0001','returnDesc'=>'消息处理失败:Failure','resultInfo'=>'',
                 'errors'=>$errors]]])
@@ -154,7 +154,7 @@ class WaybillController extends Controller
         try{
             $response = Zttp::post($url, $sendingJson);
         }catch (\Exception $exception){
-            $this->log(__METHOD__,'Exception_'.__FUNCTION__,'CURL请求异常:'.$exception->getMessage(),null);
+            app('LogService')->log(__METHOD__,'Exception_'.__FUNCTION__,'CURL请求异常:'.$exception->getMessage(),null);
             return false;
         }
         $responseJson = $response->json();

+ 27 - 25
app/Http/Controllers/api/thirdPart/goodscan/PackageController.php

@@ -9,7 +9,6 @@ use App\MeasuringMachine;
 use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
-use App\Services\LogService;
 use App\Services\OrderService;
 use App\Waybill;
 use Carbon\Carbon;
@@ -25,13 +24,14 @@ class PackageController
             $requestInput[strtolower($key)] = $item;
         }
 
+        app('LogService')->log(__METHOD__,'GoodScan weightApi add'.__FUNCTION__,json_encode($request->getContent()));
         $errors = $this->validatorWeight($requestInput)->errors(); // 参数校验
         if($requestInput['weight'] == '-9.9'){   // 称重异常校验
-            LogService::log(__METHOD__,'GoodScan weightApi (Error)'.__FUNCTION__,'异方接口称重伤上传异常[异常值为-9.9,电子秤故障或未连接]');
+            app('LogService')->log(__METHOD__,'GoodScan weightApi (Error)'.__FUNCTION__,'异方接口称重伤上传异常[异常值为-9.9,电子秤故障或未连接]'.json_encode($request->getContent()));
             return json_encode(['code'=>500,'error'=>'weight=-9.9']);
         }
         if(count($errors) > 0){
-            LogService::log(__METHOD__,'error'.__FUNCTION__,json_encode($request).'||'.json_encode($errors),null);
+            app('LogService')->log(__METHOD__,'error'.__FUNCTION__,json_encode($request->getContent()).'||'.json_encode($errors),null);
             return json_encode(['code'=>500,'error'=>$errors]);
         }
 
@@ -59,16 +59,16 @@ class PackageController
                 $orderPackage = $this->getOrderPackage($requestInput, $measuringMachine, $order);// 返回包裹对象
                 $this->syncOrderPackageLogistic($orderPackage);// 同步包裹订单的承运商
             } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'GoodScan weightApi (Error)'.json_encode($request).'||'.json_encode($orderPackage),null);
+                app('LogService')->log(__METHOD__,__FUNCTION__,'GoodScan weightApi (Error)'.json_encode($request->getContent()).'||'.json_encode($orderPackage),null);
                 return json_encode(["code"=>500,"error"=>"写入WMS失败!"],JSON_UNESCAPED_UNICODE);
             }
         }
         if(!empty($orderPackage->order)){
             Waybill::setWeightByOrderCode($orderPackage->order->code,$orderPackage->weight);
         }
-//            event(new WeighedEvent($orderPackage));
+        event(new WeighedEvent($orderPackage));
         $response=["code"=>0,'error'=>'upload success'];
-        LogService::log(__METHOD__,__FUNCTION__,"下发写入包裹成功:".json_encode($request).'||'.json_encode($response),null);
+        app('LogService')->log(__METHOD__,__FUNCTION__,"下发写入包裹成功:".json_encode($request->getContent()).'||'.json_encode($response),null);
         return json_encode($response,JSON_UNESCAPED_UNICODE);
     }
 
@@ -94,7 +94,7 @@ class PackageController
             'h' => ['required', 'numeric', 'min:0'],
             'weight' => ['required', 'numeric', 'min:0'],
             'hid' => ['required', 'string', 'min:0'],
-            'picture' => ['required', 'string', 'min:0'],
+            'picture' => ['nullable'],
         ], [
             'required' => ':attribute 为必填项',
             'max' => ':attribute 字符过多或数值过大',
@@ -135,9 +135,9 @@ class PackageController
      */
     public function activityWaveNoProcessing(&$orderPackage) //处理活动波次
     {
-//        $fluxController = new \App\Http\Controllers\Api\thirdPart\flux\PackageController();
+        $fluxController = new \App\Http\Controllers\Api\thirdPart\flux\PackageController();
         if($orderPackage->isActivityBatch()){
-            LogService::log(__METHOD__,__FUNCTION__,"依波次号同步所有包裹:".json_encode($orderPackage),null);
+            app('LogService')->log(__METHOD__,__FUNCTION__,"依波次号同步所有包裹:".json_encode($orderPackage),null);
             $params = [
                 'weight'=>$orderPackage['weight'] ?? null,
                 'length'=>$orderPackage['length'] ?? null,
@@ -149,21 +149,21 @@ class PackageController
                 'paper_box_id'=>$orderPackage['paper_box_id'] ?? null,
             ];
             OrderPackage::query()->where('batch_number',$orderPackage['batch_number'])->update($params);
-//            $result=$fluxController->markWMSOnBatch($orderPackage['batch_number'], $orderPackage['weight']);
-//            if(!$result['result']){
-//                $orderPackage->status="上传异常";
-//            }
+            $result=$fluxController->markWMSOnBatch($orderPackage['batch_number'], $orderPackage['weight']);
+            if(!$result['result']){
+                $orderPackage->status="上传异常";
+            }
         }else{
-            LogService::log(__METHOD__,__FUNCTION__,"GoodScan 写入包裹至WMS:".json_encode($orderPackage),null);
-//            try{
-//                $result=$fluxController->accomplishToWMS($orderPackage);
-//                if ($result['result'])
-//                    $orderPackage->status="已上传";
-//                else
-//                    $orderPackage->status="上传异常";
-//            }catch (\Exception $e){
-//                $orderPackage->status="未上传";
-//            }
+            app('LogService')->log(__METHOD__,__FUNCTION__,"GoodScan 写入包裹至WMS:".json_encode($orderPackage),null);
+            try{
+                $result=$fluxController->accomplishToWMS($orderPackage);
+                if ($result['result'])
+                    $orderPackage->status="已上传";
+                else
+                    $orderPackage->status="上传异常";
+            }catch (\Exception $e){
+                $orderPackage->status="未上传";
+            }
         }
         $response=$this->saveOrderPackage($orderPackage);
         return $response??[];
@@ -187,7 +187,7 @@ class PackageController
             return [];
         } catch (\Exception $e) {
             $response=["msg"=>'称重下发修改时发生错误!',json_encode($e),'code'=>500,'data'=>null];
-            LogService::log(__METHOD__,'GoodScan weightApi (Error)'.__FUNCTION__,json_encode($orderPackage).'||'.json_encode($e),null);
+            app('LogService')->log(__METHOD__,'GoodScan weightApi (Error)'.__FUNCTION__,json_encode($orderPackage).'||'.json_encode($e),null);
             return $response;
         }
     }
@@ -215,7 +215,9 @@ class PackageController
         return OracleDOCOrderHeader::query()->with('actAllocationDetails','oracleBASCode')
             ->whereHas('actAllocationDetails',function($query)use($logisticNumber){
                 $query->where('picktotraceid',$logisticNumber);
-            })->orWhere('soreference5',$logisticNumber)->first();
+            })
+//            ->orWhere('soreference5',$logisticNumber)
+            ->first();
     }
 
     /**

+ 4 - 4
app/Http/Controllers/api/thirdPart/haiq/StorageController.php

@@ -49,14 +49,14 @@ class StorageController
         ]];
         $response = Http::post(config('api.haiq.storage.relocate'),$req);
         if (($response["code"] ?? false) && $response["code"] != 200){
-            LogService::log(__METHOD__,"haiq-料箱出库失败","REQUEST:".json_encode($this->request)." | RESPONSE:".$response);
+            app('LogService')->log(__METHOD__,"haiq-料箱出库失败","REQUEST:".json_encode($this->request)." | RESPONSE:".$response);
             return ['success'=>false,"data"=>$response["errMsg"]];
         }
        if (($response["status"] ?? false) && $response["status"] == 500){
-           LogService::log(__METHOD__,"haiq-料箱出库失败","REQUEST:".json_encode($this->request)." | RESPONSE:".$response);
+           app('LogService')->log(__METHOD__,"haiq-料箱出库失败","REQUEST:".json_encode($this->request)." | RESPONSE:".$response);
            return ['success'=>false,"data"=>$response["msg"]];
         }
-        LogService::log(__METHOD__,"haiq-料箱出库成功","REQUEST:".json_encode($this->request)." | RESPONSE:".$response);
+        app('LogService')->log(__METHOD__,"haiq-料箱出库成功","REQUEST:".json_encode($this->request)." | RESPONSE:".$response);
         return ["success"=>true];
     }
-}
+}

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

@@ -0,0 +1,180 @@
+<?php
+
+namespace App\Http\Controllers\Api\thirdPart\haochuang;
+
+use App\Batch;
+use App\CommodityBarcode;
+use App\Http\Controllers\Controller;
+use App\Order;
+use App\OrderCommodity;
+use App\SortingStation;
+use App\User;
+use App\UserToken;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Hash;
+use Illuminate\Support\Facades\Validator;
+
+class SortingController extends Controller
+{
+
+    function login(Request $request){
+        $name = $request->input('name');
+        $password = $request->input('password');
+        $station_id = $request->input('station_id');
+        $errors=$this->loginValidator($request->all())->errors();
+        if(count($errors)>0){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, json_encode($request->all()).'|'.json_encode($errors));
+            return response()->json(['result'=>'failure','fail_info'=>'error','errors'=>$errors])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        $user=User::query()->where('name',$name)->first();
+        if(!$user||!Hash::check($password, $user['password'])){
+            return ['result'=>'failure','fail_info'=>'认证错误'];
+        }
+        $station = SortingStation::findOrCreate($station_id);
+        $station->login();
+        return ['result'=>'success','token'=>$user->token()];
+    }
+
+    protected function loginValidator(array $data)
+    {
+        return Validator::make($data, [
+            'name' => ['required', 'string', 'max:191'],
+            'password' => ['required', 'string', 'max:191'],
+            'station_id' => ['required', 'string', 'max:191'],
+        ],[
+            'required' => ':attribute 不能为空',
+        ],[
+            'name' => '用户名',
+            'password' => '密码',
+            'station_id' => '设备ID',
+        ]);
+    }
+
+    function process(Request $request){
+        $token = trim($request->input('token'));
+        $station_id = $request->input('station_id');
+        $batch_id = $request->input('batch_id');
+        $errors=$this->processValidator($request->all())->errors();
+        if(count($errors)>0){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, json_encode($request->all()).'|'.json_encode($errors));
+            return response()->json(['result'=>'failure','fail_info'=>'error','errors'=>$errors])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+//        if(!UserToken::getUser($token)){
+//            return ['result'=>'unauthority','fail_info'=>'无效令牌或令牌过期'];
+//        }
+
+        /** @var Batch $batch */
+        $batch=Batch::query()->where('code',$batch_id)->orderBy('id','desc')->first();
+        $data=[
+            'result'=>'success',
+            'station_id'=>$station_id,
+            'batch_id'=>$batch_id,
+            'orders'=>[]
+        ];
+        $ordersSorted=$batch->orders()->get()->sortBy(function(Order $order){
+            return $order->bin()->first()['number'];
+        });
+        $ordersSorted->each(function(Order $order)use(&$data,$request){
+            if($order['status']=='取消')return;
+            $orderData=[
+                'order_id'=>$order['code'],
+                'owner'=>$order->owner()->first()['code'],
+                'status'=>$order['status']=='未处理'?'available':$order['status'],
+                'created_at'=>$order['created_at']->toDateTimeString(),
+                'bin'=>$order->bin()->first()['number'],
+                'barcodes'=>[]
+            ];
+            $order->orderCommodities()->each(function(OrderCommodity $orderCommodity)use(&$orderData,$request){
+                $commodity=$orderCommodity->commodity()->first();
+                if(!$commodity){
+                    app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, '播种位数据准备出错,找不到订单对应的Commodity id的对象'.$orderCommodity['commodity_id'].',是否表数据在波次生成后丢失?'.json_encode($request->all()));
+                }
+                $barcodeStr=$commodity->barcodes()->get()->map(function(CommodityBarcode $barcode){
+                    return $barcode['code'];
+                })->filter(function($code){
+                    return $code&&(!preg_match('/[\x{4e00}-\x{9fa5}]/u',$code));
+                })->join(',');
+                $orderData['barcodes'][]=[
+                    'id'=>$orderCommodity['id']??'',
+                    'barcode_id'=>$barcodeStr??'',
+                    'name'=>$commodity['name']??'',
+                    'sku'=>$commodity['sku']??'',
+                    'amount'=>$orderCommodity['amount']??'',
+                    'location'=>$orderCommodity['location']??'',
+                ];
+            });
+            $data['orders'][]=$orderData;
+        });
+
+        $sendToWms=(new \App\Http\Controllers\Api\thirdPart\flux\SortingController())->informBinAssignment($batch);
+        if(!$sendToWms){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, '播种位发送给WMS错误:'.json_encode($request->all()));
+            return response()->json(['result'=>'failure','fail_info'=>'播种位发送给WMS错误,请联系管理员检查错误'])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+
+        $station = SortingStation::findOrCreate($station_id);
+        $station->setProcessingBatch($batch);
+        return $data;
+    }
+
+    protected function processValidator(array $data)
+    {
+        return Validator::make($data, [
+            'token' => ['required', 'string', 'max:191'],
+            'station_id' => ['required', 'string', 'max:191'],
+            'batch_id' => ['required', 'string', 'max:191','exists:batches,code'],
+        ],[
+            'required' => ':attribute 不能为空',
+            'exists' => ':attribute 不存在',
+        ],[
+            'station_id' => '设备ID',
+            'batch_id' => '波次号',
+        ]);
+    }
+
+    function done(Request $request){
+        $token = $request->input('token');
+        $station_id = $request->input('station_id');
+        $batch_id = $request->input('batch_id');
+        app('LogService')->log(__METHOD__,  __FUNCTION__.'_request', '浩创的完成请求:'.json_encode($request->all()));
+        $errors=$this->doneValidator($request->all())->errors();
+        $failInfo='';
+        foreach ($errors as $error){$failInfo.=$error[0].'; ';}
+        if(count($errors)>0){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, json_encode($request->all()).'|'.json_encode($errors));
+            return response()->json(['result'=>'failure','fail_info'=>$failInfo,'errors'=>$errors])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        if(!UserToken::getUser($token)){
+            return ['result'=>'unauthority','fail_info'=>'无效令牌或令牌过期'];
+        }
+        $batch=Batch::query()->where('code',$batch_id)->first();
+        if($batch->status=='已处理'){
+            app('LogService')->log(__METHOD__,'alert_'.__FUNCTION__,$batch['code'].'重复发送,波次已处理');
+            return ['result'=>'failure','fail_info'=>$batch['code'].'重复发送,波次已处理'];
+        }
+        $sendToWms=(new \App\Http\Controllers\Api\thirdPart\flux\SortingController())->informBatchFinished($batch);
+        if(!$sendToWms){
+            app('LogService')->log(__METHOD__, 'error' . __FUNCTION__, '发送给WMS错误:'.json_encode($request->all()));
+            return response()->json(['result'=>'failure','fail_info'=>'发送给WMS错误,请联系管理员检查错误'])->setEncodingOptions(JSON_UNESCAPED_UNICODE);
+        }
+        $batch->setProcessed();
+        $station = SortingStation::query()->where('name',$station_id)->first();
+        $station->clearProcessingBatch();
+        return ['result'=>'success','batch_id'=>$batch_id];
+    }
+    protected function doneValidator(array $data)
+    {
+        return Validator::make($data, [
+            'token' => ['required', 'string', 'max:191'],
+            'station_id' => ['required', 'string', 'max:191','exists:sorting_stations,name'],
+            'batch_id' => ['required', 'string', 'max:191','exists:batches,code'],
+        ],[
+            'required' => ':attribute 不能为空',
+            'exists' => ':attribute 不存在',
+        ],[
+            'station_id' => '设备ID',
+            'batch_id' => '波次号',
+        ]);
+    }
+
+}

+ 11 - 11
app/Http/Controllers/api/thirdPart/jianshang/RejectedController.php

@@ -35,14 +35,14 @@ class RejectedController extends Controller
             $goods_name,$logistic_name_return,$logistic_number,$logistic_number_return,$order_number,
             $quality_label,$sender_mobile,$sender_name);
         if(!$json){
-            $this->log(__METHOD__,'error'.'_'.$logistic_number_return,"没有返回");
+            app('LogService')->log(__METHOD__,'error'.'_'.$logistic_number_return,"没有返回");
             return false;
         }
         if(!$json['success']){
-            $this->log(__METHOD__,'error'.'_'.$logistic_number_return,"返回错误:".json_encode($json));
+            app('LogService')->log(__METHOD__,'error'.'_'.$logistic_number_return,"返回错误:".json_encode($json));
             return false;
         }else{
-            $this->log(__METHOD__,'JianshangResponse'.'_'.$logistic_number_return,json_encode($json));
+            app('LogService')->log(__METHOD__,'JianshangResponse'.'_'.$logistic_number_return,json_encode($json));
         }
         return $json;
     }
@@ -72,7 +72,7 @@ class RejectedController extends Controller
                                       $goods_name,$logistic_name_return,$logistic_number,$logistic_number_return,$order_number,
                                       $quality_label,$sender_mobile,$sender_name){
         if(env('api_faking')){
-            $this->log(__METHOD__,'error_'.__FUNCTION__,'API FAKING');
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'API FAKING');
             return false;
         }
         $data="{\"amount\":\"$amount\", \"created_at\":\"$created_at\", \"fee_collected\":\"$fee_collected\",
@@ -101,13 +101,13 @@ class RejectedController extends Controller
             'timestamp'=>$timestamp,
             'Content-Type'=>'application/json'
         ])->post($url,json_decode($data,true));
-        $this->log(__METHOD__,__FUNCTION__,$data);
+        app('LogService')->log(__METHOD__,__FUNCTION__,$data);
         if(!$response){
-            $this->log(__METHOD__,'error_'.__FUNCTION__,'回复异常:'.$response->body());
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'回复异常:'.$response->body());
             return false;
         }
         if(!$response->json()){
-            $this->log(__METHOD__,'error_'.__FUNCTION__,'json为空:'.$response->body());
+            app('LogService')->log(__METHOD__,'error_'.__FUNCTION__,'json为空:'.$response->body());
             return false;
         }
         return $response->json();
@@ -204,7 +204,7 @@ class RejectedController extends Controller
         $timestamp=intval(microtime(true)*1000);
         $nonce=md5(microtime(true));
         $sign=$sortParamsAndMd5(json_decode($data,true),$timestamp,$nonce,config('api.sign_key_rejected_send_jianshang'));
-        $this->log(__METHOD__,'笕尚接口发送请求:',$data);
+        app('LogService')->log(__METHOD__,'笕尚接口发送请求:',$data);
         $url=config('api.url_rejected_send_jianshang2');
         if(env('api_faking'))$url=url(config('api.fakingUrl_rejected_send_jianshang'));
         try{
@@ -216,14 +216,14 @@ class RejectedController extends Controller
                 'Content-Type'=>'application/json'
             ])->post($url,json_decode($data,true));
         }catch (\Exception $e){
-            $this->log(__METHOD__,'笕尚接口返回异常!!:',$e->getMessage().'||'.json_encode($data));
+            app('LogService')->log(__METHOD__,'笕尚接口返回异常!!:',$e->getMessage().'||'.json_encode($data));
             $response=false;
         }
         if(!$response){
-            $this->log(__METHOD__,'笕尚接口返回异常!!:',$response->body());
+            app('LogService')->log(__METHOD__,'笕尚接口返回异常!!:',$response->body());
             return false;
         }
-        $this->log(__METHOD__,'笕尚接口返回:',$response->body());
+        app('LogService')->log(__METHOD__,'笕尚接口返回:',$response->body());
         return $response->json();
     }
 

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

@@ -27,7 +27,7 @@ class PackageController extends Controller
 //        $errors=$this->validatorWeight($request)->errors();
 //
 //        if (count($errors)>0){
-//            $this->log(__METHOD__,'error'.__FUNCTION__,json_encode($request).'||'.json_encode($errors),null);
+//            app('LogService')->log(__METHOD__,'error'.__FUNCTION__,json_encode($request).'||'.json_encode($errors),null);
 //            $response=["msg"=>$errors,"code"=>500,"data"=>null];
 //            return json_encode($response);
 //        }
@@ -40,7 +40,7 @@ class PackageController extends Controller
 //                'status'=>'在线'
 //            ]);
 //            $measuringMachine->save();
-//            $this->log(__METHOD__,'weightApi(new measuring machine)'.__FUNCTION__,json_encode($request),null);
+//            app('LogService')->log(__METHOD__,'weightApi(new measuring machine)'.__FUNCTION__,json_encode($request),null);
 //        }else{
 //            $measuringMachineStatus=new MeasuringMachine();
 //            $measuringMachineStatus->changeStatus($measuringMachine);
@@ -82,7 +82,7 @@ class PackageController extends Controller
 //                $package->bulk=$max*$centre*$min;
 //                $package->weighed_at=$reqDate;
 //                $package->status="未上传";
-//                $this->log(__METHOD__,'Batch_'.__FUNCTION__,json_encode($package),null);
+//                app('LogService')->log(__METHOD__,'Batch_'.__FUNCTION__,json_encode($package),null);
 //                $package->save();
 //                $result=$apiController->accomplishToWMS($package);
 //                if ($result['result']){
@@ -113,7 +113,7 @@ class PackageController extends Controller
 //                                "reqDate"=>$reqDate,
 //                                "resDate"=>Carbon::now()]
 //                        ];
-//            $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'|'.json_encode($response),null);
+//            app('LogService')->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'|'.json_encode($response),null);
 //            return json_encode($response,JSON_UNESCAPED_UNICODE);
 //        }
 //        if (!$package){
@@ -134,7 +134,7 @@ class PackageController extends Controller
 //            $createPackage->fetchPaperBox($max, $centre, $min);
 //            $result=$apiController->accomplishToWMS($createPackage);
 //            if(!$result['result']){
-//                $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($createPackage),null);
+//                app('LogService')->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($createPackage),null);
 //                $response=["msg"=>"写入WMS失败!","code"=>500,"data"=>null];
 //                return json_encode($response,JSON_UNESCAPED_UNICODE);
 //            }
@@ -153,18 +153,19 @@ class PackageController extends Controller
 //                        "reqDate"=>$reqDate,
 //                        "resDate"=>Carbon::now()]
 //                ];
-//                $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($response),null);
+//                app('LogService')->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($response),null);
 //                return json_encode($response,JSON_UNESCAPED_UNICODE);
 //            }
 //
 //            $response=["msg"=>"保存时发生错误(未下发)!","code"=>500,"data"=>null];
-//            $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response),null);
+//            app('LogService')->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response),null);
 //            return json_encode($response,JSON_UNESCAPED_UNICODE);
 //        }
 //    }
 
     public function new_(Request $requestInitial){
         $request=[];
+        app('LogService')->log(__METHOD__,'cczdelme'.__FUNCTION__,json_encode($requestInitial->all()),null);
         foreach ($requestInitial->all() as $k=>$v){
             $request[strtolower($k)]=$v;
         }
@@ -172,11 +173,12 @@ class PackageController extends Controller
         $errors=$this->validatorWeight($request)->errors();
 
         if (count($errors)>0){
-            $this->log(__METHOD__,'error'.__FUNCTION__,json_encode($request).'||'.json_encode($errors),null);
+            app('LogService')->log(__METHOD__,'error'.__FUNCTION__,json_encode($request).'||'.json_encode($errors),null);
             return json_encode(["msg"=>$errors,"code"=>500,"data"=>null]);
         }
 
-        $measuringMachine=MeasuringMachine::query()->firstOrCreate(['code'=>$request['id']]);
+        $id = $request['id']??'00C66186389';
+        $measuringMachine=MeasuringMachine::query()->firstOrCreate(['code'=> $id]);
         $measuringMachine->turnOn();
         $measuringMachine->turnOffInMinutes(30);
 
@@ -197,14 +199,14 @@ class PackageController extends Controller
             $package->fetchPaperBox();
             $package['bulk']=$edges[0]*$edges[1]*$edges[2];
             if ($package->isActivityBatch()){//处理活动波次
-                $this->log(__METHOD__,__FUNCTION__,"依波次号同步所有包裹:".json_encode($package),null);
+                app('LogService')->log(__METHOD__,__FUNCTION__,"依波次号同步所有包裹:".json_encode($package),null);
                 $package->unifyThisMeasureUnderSameBatch();
                 $result=$fluxController->markWMSOnBatch($package['batch_number'], $request['weight']);
                 if(!$result['result']){
                     $package->status="上传异常";
                 }
             }else{
-                $this->log(__METHOD__,__FUNCTION__,"写入包裹至WMS:".json_encode($package),null);
+                app('LogService')->log(__METHOD__,__FUNCTION__,"写入包裹至WMS:".json_encode($package),null);
                 try{
                     $result=$fluxController->accomplishToWMS($package);
                     if ($result['result']){
@@ -230,7 +232,7 @@ class PackageController extends Controller
                 }
             }catch (\Exception $e){
                 $response=["msg"=>"称重下发修改时发生错误!".json_encode($e),"code"=>500,"data"=>null];
-                $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.json_encode($e),null);
+                app('LogService')->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.json_encode($e),null);
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
         }
@@ -271,14 +273,14 @@ class PackageController extends Controller
                 $package->save();
             }catch (\Exception $e){
                 $response=["msg"=>$e->getMessage(),"code"=>500,"data"=>$e->getTraceAsString()];
-                $this->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.$e->getTraceAsString(),null);
+                app('LogService')->log(__METHOD__,'weightApi(ERROR)'.__FUNCTION__,json_encode($request).'||'.json_encode($response).'||'.$e->getTraceAsString(),null);
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
             $result=$fluxController->accomplishToWMS($package);
             if(!$package['batch_number'])
                 FetchPackageFromOracle::dispatch($package)->delay(Carbon::now()->addMinutes(1440));
             if(!$result['result']){
-                $this->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($package),null);
+                app('LogService')->log(__METHOD__,'weightApi'.__FUNCTION__,json_encode($request).'||'.json_encode($package),null);
                 $response=["msg"=>"写入WMS失败!","code"=>500,"data"=>null];
                 return json_encode($response,JSON_UNESCAPED_UNICODE);
             }
@@ -296,13 +298,13 @@ class PackageController extends Controller
                     "reqDate"=>$reqDate,
                     "resDate"=>Carbon::now()]
             ];
-            $this->log(__METHOD__,__FUNCTION__,"下发写入包裹成功:".json_encode($request).'|'.json_encode($response),null);
+            app('LogService')->log(__METHOD__,__FUNCTION__,"下发写入包裹成功:".json_encode($request).'|'.json_encode($response),null);
         return json_encode($response,JSON_UNESCAPED_UNICODE);
     }
 
     public function validatorWeight(array $request){
         $validator=Validator::make($request,[
-            'id'=>['required','max:30',/*function ($attribute, $value, $fail) {
+            'id'=>['nullable','max:30',/*function ($attribute, $value, $fail) {
                 $measuringMachine=MeasuringMachine::where('code',$value)->first();
                 if (!$measuringMachine) {
                     $fail($attribute.' 设备未录入在系统中!');

+ 1 - 1
app/Http/Controllers/api/thirdPart/weixin/WxController.php

@@ -102,7 +102,7 @@ class WxController extends Controller
         $waybill->carrier_weight_other=$carrier_weight_other;
 
         if ($waybill->save()){
-            $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
+            app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
             return ['success'=>true];
         }
         else return ['success'=>false];

+ 1 - 1
app/Http/Controllers/api/thirdPart/weixin/WxLoginController.php

@@ -17,7 +17,7 @@ class WxLoginController extends Controller
         if ($user){
             $isRight=Hash::check($pwd,$user['password']);
             if ($isRight){
-                $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),$user->id);
+                app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),$user->id);
                 return ['api_token'=>$user->token()];
             }
             else return ['api_token'=>''];

+ 1 - 0
app/Imports/OrderIssueImport.php

@@ -98,6 +98,7 @@ class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleShee
                     $arr['rejected_bill_id'] = $rejectedBill['id'];
                 }
                 $orderIssue = OrderIssue::query()->create($arr);
+                $orderIssue->同步退单状态();
                 if ($orderIssue) {
                     array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建成功!']);
                     OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);

+ 1 - 1
app/Imports/RejectedImport.php

@@ -127,7 +127,7 @@ class RejectedImport implements ToCollection, WithHeadingRow
                 $owner = Owner::find($rejectedBill['id_owner']);
                 if(strstr($owner->name??'','笕尚')){
                     $rejected=new Rejected();
-                    $this->log(__METHOD__,'找不到表','132行');
+                    app('LogService')->log(__METHOD__,'找不到表','132行');
                     $rejected->fill($rejectedBill->toArray());
                     $rejected->fill($item->toArray());
                     $rejectedJianshang=new RejectedController();

+ 5 - 5
app/Imports/StoreCheckingReceiveImport.php

@@ -177,7 +177,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 }
                 if (count($barcodes) > 0){
                     $commodityBarcodeService->insert($barcodes);
-                    LogService::log(__METHOD__,"盘收导入补录条码",json_encode($barcodes));
+                    app('LogService')->log(__METHOD__,"盘收导入补录条码",json_encode($barcodes));
                 }
             }
 
@@ -215,7 +215,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                     /** @var CommodityService $commodityService */
                     $commodityService = app('CommodityService');
                     $commodityService->insert($createCommodities);
-                    LogService::log(__METHOD__,"盘收录入临时商品",json_encode($createCommodities,JSON_UNESCAPED_UNICODE));
+                    app('LogService')->log(__METHOD__,"盘收录入临时商品",json_encode($createCommodities,JSON_UNESCAPED_UNICODE));
 
                     //拿到商品ID录入条码
                     $barcodes = [];
@@ -236,7 +236,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                     }
                     if (count($barcodes) > 0){
                         $commodityBarcodeService->insert(array_unique($barcodes));
-                        LogService::log(__METHOD__,"盘收导入录入条码",json_encode($barcodes));
+                        app('LogService')->log(__METHOD__,"盘收导入录入条码",json_encode($barcodes));
                     }
                 }
             }
@@ -251,7 +251,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             "created_at" => date('Y-m-d H:i:s'),
             'status' => "已导入",
         ]);
-        LogService::log(__METHOD__,"导入盘收任务-录入盘收任务",json_encode($storeCheckingReceive,JSON_UNESCAPED_UNICODE));
+        app('LogService')->log(__METHOD__,"导入盘收任务-录入盘收任务",json_encode($storeCheckingReceive,JSON_UNESCAPED_UNICODE));
         $storeCheckingReceive->owner_name = $owner_name;
 
         foreach ($items as &$item){
@@ -259,7 +259,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
         }
 
         app('StoreCheckingReceiveItemService')->insert($items);
-        LogService::log(__METHOD__,"导入盘收任务-批量录入盘收记录",json_encode($items,JSON_UNESCAPED_UNICODE));
+        app('LogService')->log(__METHOD__,"导入盘收任务-批量录入盘收记录",json_encode($items,JSON_UNESCAPED_UNICODE));
 
         Cache::put("storeCheckingReceive",["success"=>true,"data"=>$storeCheckingReceive,"errors"=>$errors],86400);
         return true;

+ 13 - 7
app/InventoryAccount.php

@@ -12,10 +12,10 @@ class InventoryAccount extends Model
     use ModelTimeFormat;
     use SoftDeletes;
     protected $fillable=[
-        'id','owner_id','type', 'start_at', 'end_at','total','processed','difference','returned','deleted_at','created_at','status','remark',
+        'id','owner_id','type', 'start_at', 'end_at','total','processed','difference','returned','deleted_at','created_at','status','remark','auditor'
     ];
     protected $appends = [
-            'surplus','check_surplus'
+            'surplus','check_surplus','ignored'
     ];
     public function creator(){
         return $this->hasOne('App\Sign','signable_id','id')
@@ -24,16 +24,22 @@ class InventoryAccount extends Model
     public function owner(){
         return $this->belongsTo('App\Owner','owner_id','id');
     }
+    public function userAuditor(){
+        return $this->belongsTo('App\User','auditor','id');
+    }
     public function inventoryMissions(){
         return $this->belongsTo('App\InventoryAccountMission','id','inventory_account_id');
     }
 
     public function getSurplusAttribute()
     {
-        return $this['total'] ? $this['total']-$this['processed']:0;
+        return $this['total'] ? $this['total']-($this['processed']+$this['ignored']):0;
+    }
+    public function getProcessedAttribute(){
+        return $this->inventoryMissions()->whereIn('checked',['是','确认差异','已复核'])->where('inventory_account_id',$this['id'])->count();
     }
-    public function getProcessedAmount(){
-        return $this->inventoryMissions()->whereIn('checked',['是','跳过','确认差异','已复核'])->where('inventory_account_id',$this['id'])->count();
+    public function getIgnoredAttribute(){
+        return $this->inventoryMissions()->where('checked','跳过')->where('inventory_account_id',$this['id'])->count();
     }
     //复盘剩余数
     public function getCheckSurplusAttribute()
@@ -41,11 +47,11 @@ class InventoryAccount extends Model
         $re_checked_amount=$this->inventoryMissions()->where('inventory_account_id',$this['id'])->whereNotNull('re_checked_amount')->count();
         return $this['total'] ? $this['total']-$re_checked_amount:null;
     }
-    public function getDifferenceAmount(){
+    public function getDifferenceAttribute(){
         return $this->inventoryMissions()->where('inventory_account_id',$this['id'])->where('difference_amount','!=',0)->count();
     }
     //复盘归位
-    public function getReturnedAmount(){
+    public function getReturnedAttribute(){
         return $this->inventoryMissions()->where('inventory_account_id',$this['id'])->where('returned','是')->count();
 
     }

+ 7 - 4
app/LaborReport.php

@@ -143,19 +143,19 @@ class LaborReport extends Model
     public function getThisRecordWorkingTimeAttribute(){
         if ($this['check_in_at']&&!$this['check_out_at']&&!$this['relax_time']){
             $workingTime=round(Carbon::parse(Carbon::now())->diffInSeconds(Carbon::parse($this['check_in_at']))/3600,2);
-            $checkInTime=Carbon::parse($this['check_in_at'])->format('H');
+            $checkInTime=Carbon::parse($this['check_in_at']);
             $checkOutTime=Carbon::parse(Carbon::now())->format('H');
             return  $this->minusLunchTime($checkInTime,$checkOutTime,$workingTime);
         }
         if ($this['check_in_at']&&$this['check_out_at']&&!$this['relax_time']){
             $workingTime=round(Carbon::parse($this['check_out_at'])->diffInSeconds(Carbon::parse($this['check_in_at']))/3600,2);
-            $checkInTime=Carbon::parse($this['check_in_at'])->format('H');
+            $checkInTime=Carbon::parse($this['check_in_at']);
             $checkOutTime=Carbon::parse($this['check_out_at'])->format('H');
             return  $this->minusLunchTime($checkInTime,$checkOutTime,$workingTime);
         }
         if ($this['check_in_at']&&$this['check_out_at']&&$this['relax_time']){
             $workingTime=round(Carbon::parse($this['check_out_at'])->diffInSeconds(Carbon::parse($this['check_in_at']))/3600,2);
-            $checkInTime=Carbon::parse($this['check_in_at'])->format('H');
+            $checkInTime=Carbon::parse($this['check_in_at']);
             $checkOutTime=Carbon::parse($this['check_out_at'])->format('H');
             return  $this->minusLunchTime($checkInTime,$checkOutTime,$workingTime)-$this['relax_time']/60;
         }
@@ -163,7 +163,10 @@ class LaborReport extends Model
 
     //工作时长减午饭休息时间
     public function minusLunchTime($checkInTime,$checkOutTime,$hour){
-        if ((int)$checkInTime<=12&&(int)$checkOutTime>=13){
+//        if ((int)$checkInTime<=12&&(int)$checkOutTime>=13){
+//            $hour=$hour-1;
+//        }
+        if ($checkInTime->lessThanOrEqualTo($checkInTime->clone()->setHours(11)->setMinutes(30))&&(int)$checkOutTime>=13){
             $hour=$hour-1;
         }
         return $hour;

+ 60 - 0
app/Listeners/ResetProcessStatisticStartDateListener.php

@@ -0,0 +1,60 @@
+<?php
+
+namespace App\Listeners;
+
+use App\Events\ResetProcessStatisticStartDateEvent;
+use App\Process;
+use App\ProcessStatistic;
+use Carbon\Carbon;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Queue\InteractsWithQueue;
+
+class ResetProcessStatisticStartDateListener
+{
+    /**
+     * Create the event listener.
+     *
+     * @return void
+     */
+    public function __construct()
+    {
+        //
+    }
+
+    /**
+     * Handle the event.
+     *
+     * @param  ResetProcessStatisticStartDateEvent  $event
+     * @return void
+     */
+    public function handle(ResetProcessStatisticStartDateEvent $event)
+    {
+        $process = $event->process;
+        $process->load(["processDailies"=>function($query){
+            /** @var Builder $query */
+            $query->orderBy("date")->withCount(["processDailyParticipants"]);
+        },"processStatistic"=>function($query){
+            /** @var Builder $query */
+            $query->select("process_id","started_at");
+        }]);
+
+        $dailies = $process->processDailies ?? false;
+        if ($dailies){
+            foreach ($dailies as $daily){
+                if ($daily->process_daily_participants_count > 0){
+                    $this->comparisonReplace($process->processStatistic,$daily->date." 09:00:00");
+                    return;
+                }
+            }
+        }
+        $this->comparisonReplace($process->processStatistic,null);
+    }
+
+    private function comparisonReplace($statistic, $date)
+    {
+        if ($statistic->started_at != $date){
+            ProcessStatistic::query()->where("process_id",$statistic->process_id)->update(["started_at"=>$date]);
+        }
+    }
+}

+ 14 - 0
app/OracleDOCASNDetail.php

@@ -17,4 +17,18 @@ class OracleDOCASNDetail extends Model
     public function oracleDocAsnHeader(){
         return $this->belongsTo('App\OracleDOCASNHeader','asnno','asnno');
     }
+    public function lineStatus()
+    {
+        return $this->hasOne(OracleBasCode::class,'code','linestatus')
+            ->where('codeid','ASN_STS');
+    }
+    public function qualityStatus()
+    {
+        return $this->hasOne(OracleBasCode::class,'code','lotatt08')
+            ->where('codeid','QLT_STS');
+    }
+    public function basSku()
+    {
+        return $this->hasOne(OracleBasSKU::class,'sku','sku');
+    }
 }

+ 20 - 0
app/OracleDOCASNHeader.php

@@ -10,4 +10,24 @@ class OracleDOCASNHeader extends Model
     use ModelTimeFormat;
     protected $connection="oracle";
     protected $table="Doc_ASN_Header";
+
+    public function asnType()
+    {
+        return $this->hasOne(OracleBasCode::class,'code','asntype')
+            ->where('codeid','ASN_TYP');
+    }
+
+    public function asnStatus()
+    {
+        return $this->hasOne(OracleBasCode::class,'code','asnstatus')
+            ->where('codeid','ASN_STS');
+    }
+
+    public function asnDetails()
+    {
+        return $this->hasMany(OracleDOCASNDetail::class,'asnno','asnno')
+            ->select('asnno','asnlineno','customerid','sku','skudescrc','linestatus','lotatt08','lotatt05','expectedqty','addtime','edittime');
+    }
+
+
 }

+ 52 - 1
app/Order.php

@@ -11,9 +11,10 @@ class Order extends Model
     use ModelTimeFormat;
 
     protected $fillable = [
+        'id', 'batch_id',  'owner_id', 'status',
         'created_at', 'code', 'shop_id', 'owner_id', 'client_code',
         'logistic_id', 'consignee_name', 'consignee_phone', 'province',
-        'city', 'district', 'address', 'wms_status','warehouse_id','wms_edittime'];
+        'city', 'district', 'address', 'wms_status','status','warehouse_id','wms_edittime'];
 
     /*
      * wms订单号             code=>DOC_ORDER_HEADER[orderno]
@@ -58,6 +59,18 @@ class Order extends Model
         return $this->hasOne(Warehouse::class, 'id', 'owner_id');
 
     }
+    public function orderCommodities(){
+        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');
+    }
+    public function batch(){
+        return $this->belongsTo('App\Batch', 'batch_id','id');
+    }
 
     public function getLogisticNumbersAttribute()
     {
@@ -115,4 +128,42 @@ class Order extends Model
         return parent::delete();
     }
 
+    public function isEquals(Order $order)
+    {
+        return
+            $this['code'] == $order['code'] &&
+            $this['warehouse_id'] == $order['warehouse_id'] &&
+            $this['owner_id'] == $order['owner_id'] &&
+            $this['shop_id'] == $order['shop_id'] &&
+            $this['logistic_id'] == $order['logistic_id'] &&
+            $this['consignee_name'] == $order['consignee_name'] &&
+            $this['consignee_phone'] == $order['consignee_phone'] &&
+            $this['province'] == $order['province'] &&
+            $this['city'] == $order['city'] &&
+            $this['district'] == $order['district'] &&
+            $this['address'] == $order['address'] &&
+            $this['client_code'] = $order['client_code'] &&
+            $this['wms_status'] == $order['wms_status'] &&
+            $this['wms_edittime'] == $order['wms_edittime'] &&
+            (string)$this['created_at'] == (string)$order['created_at'];
+    }
+
+    public function assignValueByOrder(Order $order)
+    {
+        $this['code'] = $order['code'] ;
+        $this['warehouse_id'] = $order['warehouse_id'] ;
+        $this['owner_id'] = $order['owner_id'] ;
+        $this['shop_id'] = $order['shop_id'] ;
+        $this['logistic_id'] = $order['logistic_id'] ;
+        $this['consignee_name'] = $order['consignee_name'] ;
+        $this['consignee_phone'] = $order['consignee_phone'] ;
+        $this['province'] = $order['province'] ;
+        $this['city'] = $order['city'] ;
+        $this['district'] = $order['district'] ;
+        $this['address'] = $order['address'] ;
+        $this['client_code'] = $order['client_code'] ;
+        $this['wms_status'] = $order['wms_status'] ;
+        $this['wms_edittime'] = $order['wms_edittime'];
+        $this['created_at'] =$order['created_at'];
+    }
 }

+ 12 - 0
app/OrderBin.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace App;
+
+use Illuminate\Database\Eloquent\Model;
+
+class OrderBin extends Model
+{
+    protected $fillable = [
+        'order_id', 'number',
+    ];
+}

+ 35 - 0
app/OrderCommodity.php

@@ -0,0 +1,35 @@
+<?php
+
+namespace App;
+
+use App\Http\Controllers\Controller;
+use Illuminate\Database\Eloquent\Model;
+
+class OrderCommodity extends Model
+{
+    protected $fillable = [
+        'id', 'order_id','commodity_id', 'amount','wms_ptltaskid','location'
+    ];
+    protected $appends=['barcode','name','sku'];
+    public function order(){
+        return $this->belongsTo('App\Order', 'order_id','id');
+    }
+    public function commodity(){
+        return $this->hasOne('\App\Commodity','id','commodity_id');
+    }
+    public function getBarcodeAttribute(){
+        $commodity=$this->commodity()->first();
+        if($commodity)return $commodity['barcode'];
+        return '';
+    }
+    public function getNameAttribute(){
+        $commodity=$this->commodity()->first();
+        if($commodity)return $commodity['name'];
+        return '';
+    }
+    public function getSkuAttribute(){
+        $commodity=$this->commodity()->first();
+        if($commodity)return $commodity['sku'];
+        return '';
+    }
+}

+ 19 - 7
app/OrderIssue.php

@@ -24,24 +24,25 @@ class OrderIssue extends Model
      * situation_explain
      * custom_code  自定义订单号 客户客服自定义
      * imported_status 导入处理
+     * 退回单号
      */
     protected $appends = [
 //        'secondLogisticNumber',
-        'createLog',
-        'endLog',
-        'processingTime',
-        'createUser',
-        'endUser',
+//        'createLog',
+//        'endLog',
+//        'processingTime',
+//        'createUser',
+//        'endUser',
     ];
 
     public function order()
     {
-        return $this->belongsTo('App\Order', 'order_id', 'id');
+        return $this->belongsTo(Order::class, 'order_id', 'id');
     }
 
     public function rejectedBill()
     {
-        return $this->hasOne(RejectedBill::class, 'logistic_number_return', 'logistic_number_return');
+        return $this->belongsTo(RejectedBill::class, 'logistic_number_return', 'logistic_number_return');
     }
 
     public function issueType()
@@ -217,4 +218,15 @@ class OrderIssue extends Model
         return parent::delete();
     }
 
+    public function syncRejectedBill()// 同步退回单
+    {
+        if(!isset($this['logistic_number_return'])){
+            $order = $this->order;
+            $rejectedBill = RejectedBill::query()->where('logistic_number','like','原单退回'.'%')->where('order_number',$order->client_code)->whereNotNull('order_number')->first();
+            if($rejectedBill){
+                $this->update(['logistic_number_return'=>$rejectedBill->logistic_number_return,'is_new_rejecting'=>'有']);
+            }
+        }
+    }
+
 }

+ 2 - 2
app/OrderPackage.php

@@ -109,7 +109,7 @@ class OrderPackage extends Model
             /** @var OrderService */
             $order = app('OrderService')->logisticNumberFirstOrCreateOrder($resultOracleObj['soreference5']);
             if (!$order){
-                LogService::log(__METHOD__,"此包裹在WMS未找到order",json_encode($resultOracleObj),Auth::user()['id']);
+                app('LogService')->log(__METHOD__,"此包裹在WMS未找到order",json_encode($resultOracleObj),Auth::user()['id']);
                 continue;
             }
             array_push($packages,[
@@ -143,7 +143,7 @@ class OrderPackage extends Model
         DB::transaction(function ()use($newPackages){
             OrderPackage::query()->insert($newPackages);
         });
-        LogService::log(__METHOD__,"批量录入包裹成功",json_encode($packages),Auth::user()['id']);
+        app('LogService')->log(__METHOD__,"批量录入包裹成功",json_encode($packages),Auth::user()['id']);
     }
     public function unifyThisMeasureUnderSameBatch(){
         $this->fetchPaperBox();

+ 5 - 3
app/OrderPackageCommodities.php

@@ -13,15 +13,17 @@ class OrderPackageCommodities extends Model
     /*
      * amount => OracleActAllocationDetails->qty_each
      */
-    protected $fillable = ['order_package_id','commodity_id','amount'];
+    protected $fillable = [
+        'order_package_id','commodity_id','amount'
+    ];
 
 
     public function package(){
-        return $this->belongsTo('App\OrderPackage','order_package_id','id');
+        return $this->belongsTo(OrderPackage::class,'order_package_id','id');
     }
 
     public function commodity(){
-        return $this->belongsTo('App\Commodity','commodity_id','id');
+        return $this->belongsTo(Commodity::class,'commodity_id','id');
     }
 
     public function orderTracking(){

+ 6 - 4
app/OrderTracking.php

@@ -19,13 +19,15 @@ class OrderTracking extends Model
     protected $appends =[
         'ownerName','sku','packageWeight','packageBulk','orderCity','packageLogisticNumber','packageLogistic','orderClientNumber'
     ];
-
     public function commodities(){
-        return $this->hasOne('App\OrderPackageCommodities','id','order_package_commodity_id');
+        return $this->hasOne(OrderPackageCommodities::class,'id','order_package_commodity_id');
     }
-
     public function owner(){
-        return $this->hasOne('App\Owner','id','owner_id');
+        return $this->hasOne(Owner::class,'id','owner_id');
+    }
+    public function uploadFile()
+    {
+        return $this->hasOne(UploadFile::class,'table_id','order_client_code')->where('table_name','order_trackings');
     }
 
     public function getOwnerNameAttribute(){

+ 1 - 0
app/Owner.php

@@ -37,6 +37,7 @@ class Owner extends Model
             return $query->where('id','0');
         }
         $ownerIds=app('UserService')->getPermittingOwnerIds($user);
+        if(empty($ownerIds))return $query;
         return $query->whereIn('id',$ownerIds);
     }
 

+ 4 - 0
app/Process.php

@@ -50,6 +50,10 @@ class Process extends Model
         return $this->hasMany('App\Sign','signable_id','id')
             ->where('signable_type','processes')->where('field','unit_price');
     }
+    public function processStatistic()
+    {
+        return $this->hasOne(ProcessStatistic::class,"process_id","id");
+    }
 
     public function automaticSupplementSign(){
         return $this->hasOne('App\Sign','signable_id','id')

+ 8 - 0
app/Providers/AppServiceProvider.php

@@ -15,9 +15,12 @@ use App\Services\DepositoryService;
 use App\Services\FeatureService;
 use App\Services\InventoryAccountMissionService;
 use App\Services\InventoryCompareService;
+use App\Services\LogService;
+use App\Services\OracleBasCustomerService;
 use App\Services\OracleBasSkuService;
 use App\Services\OracleDocAsnDetailService;
 use App\Services\OracleDOCOrderHeaderService;
+use App\Services\OracleDocAsnHerderService;
 use App\Services\OrderIssuePerformanceService;
 use App\Services\AllInventoryService;
 use App\Services\InventoryDailyLogService;
@@ -40,6 +43,7 @@ use App\Services\OwnerPriceOperationService;
 use App\Services\OwnerReportService;
 use App\Services\OwnerService;
 use App\Services\OwnerStoragePriceModelService;
+use App\Services\PackageService;
 use App\Services\PackageStatisticsService;
 use App\Services\ProcessesContentService;
 use App\Services\ProcessMethodService;
@@ -119,6 +123,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('WeighExceptedService',WeighExceptedService::class);
         app()->singleton('AllInventoryService',AllInventoryService::class);
         app()->singleton('InventoryDailyLogService',InventoryDailyLogService::class);
+        app()->singleton('LogService',LogService::class);
         app()->singleton('ProcessService',ProcessService::class);
         app()->singleton('ProcessStatisticService',ProcessStatisticService::class);
         app()->singleton('OwnerService',OwnerService::class);
@@ -136,6 +141,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('StoreCheckingReceiveService',StoreCheckingReceiveService::class);
         app()->singleton('StoreCheckingReceiveItemService',StoreCheckingReceiveItemService::class);
         app()->singleton('CommodityBarcodeService',CommodityBarcodeService::class);
+        app()->singleton('OracleBasCustomerService',OracleBasCustomerService::class);
         app()->singleton('OracleBasSkuService',OracleBasSkuService::class);
         app()->singleton('OracleDocAsnDetailService',OracleDocAsnDetailService::class);
         app()->singleton('InventoryAccountMissionService',InventoryAccountMissionService::class);
@@ -143,6 +149,8 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('StoreService',StoreService::class);
         app()->singleton('WarehouseService',WarehouseService::class);
         app()->singleton('StoreItemService',StoreItemService::class);
+        app()->singleton('PackageService',PackageService::class);
+        app()->singleton('ProcessMethodService',ProcessMethodService::class);
         app()->singleton('OwnerReportService',OwnerReportService::class);
         app()->singleton('OwnerAreaReportService',OwnerAreaReportService::class);
         app()->singleton('OwnerFeeDetailService',OwnerFeeDetailService::class);

+ 3 - 0
app/Providers/EventServiceProvider.php

@@ -27,6 +27,9 @@ class EventServiceProvider extends ServiceProvider
         'App\Events\CustomerStored' =>[
             'App\Listeners\FulfillPackageCustomer'
         ],
+        'App\Events\ResetProcessStatisticStartDateEvent' =>[
+            'App\Listeners\ResetProcessStatisticStartDateListener'
+        ],
     ];
 
     /**

+ 4 - 1
app/Providers/RouteServiceProvider.php

@@ -90,9 +90,12 @@ class RouteServiceProvider extends ServiceProvider
         Route::prefix('api/thirdPart/haiq')
             ->namespace('App\Http\Controllers\api\thirdPart\haiq')
             ->group(base_path('routes/api/thirdPart/haiq.php'));
-
         Route::prefix('api/thirdPart/goodscan')
             ->namespace('App\Http\Controllers\api\thirdPart\goodscan')
             ->group(base_path('routes/api/thirdPart/goodscan.php'));
+        Route::prefix('api/thirdPart/haochuang')
+            ->middleware('api')
+            ->namespace('App\Http\Controllers\Api\thirdPart\haochuang')
+            ->group(base_path('routes/api/thirdPart/haochuang.php'));
     }
 }

+ 22 - 6
app/RejectedBill.php

@@ -20,8 +20,24 @@ class RejectedBill extends Model
     use SoftDeletes;
     protected $fillable=['id_owner','order_number','sender','mobile_sender',
         'logistic_number','logistic_number_return','id_logistic_return',
-        'is_loaded','fee_collected','remark','id_operator','is_checked'
-        ,'is_finished','checked_numbers','remark','common_01','common_02'];
+        'is_loaded','fee_collected','remark','id_operator','is_checked',
+        'is_finished','checked_numbers','remark','common_01','common_02'];
+
+    /*
+     *  id_owner                    货主
+     *  order_number                订单号        OracleDOCOrderHeader->SOReference1
+     *  mobile_sender               电话          OracleDOCOrderHeader->[c_tell1,c_tell2]
+     *  logistic_number             原单单号
+     *  logistic_number_return      退回单号
+     *  id_logistic_return
+     *  is_loaded                   是否入库
+     *  fee_collected               到付费用
+     *  remark                      备注          OracleDOCOrderHeader->notes
+     *  id_operator
+     *  is_checked                  是否审核
+     *  is_finished                 是否完结
+     *  checked_numbers             审核编号
+     */
 
     protected $appends = ['owner_name','logistic_name','created_at_short'
         ,'is_loaded_str','goods_amount','is_loaded_null','operator_name'];
@@ -43,6 +59,9 @@ class RejectedBill extends Model
     function wmsReflectReceive(){
         return $this->belongsTo('App\WMSReflectReceive','id','id_rejected_bill');
     }
+    function orderIssue(){
+        return $this->hasOne( OrderIssue::class, 'logistic_number_return', 'logistic_number_return');
+    }
     function setIsLoaded_toWaitConfirm(){
         if(config('api.jianshang_rejecteds_log_switch'))Controller::logS(__METHOD__,__FUNCTION__,"将待推单修改为待确认! 退单号:".$this['logistic_number_return'],Auth::user()['id']);
         $bill=RejectedBill::find($this['id']);
@@ -65,10 +84,7 @@ class RejectedBill extends Model
         return $this['checked_numbers'];
     }
 
-    function orderIssue()
-    {
-        return $this->hasOne( OrderIssue::class, 'logistic_number_return', 'logistic_number_return');
-    }
+
 
     function update(array $attributes = [], array $options = [])
     {

+ 1 - 1
app/RejectedBillItem.php

@@ -21,7 +21,7 @@ class RejectedBillItem extends Model
     protected $appends = ['quality_label'];
 
     public function rejectedBill(){
-        return $this->belongsTo('App\RejectedBill', 'id_rejected_bill', 'id');
+        return $this->hasOne('App\RejectedBill', 'id', 'id_rejected_bill');
     }
     public function quality(){
         return $this->belongsTo(QualityLabel::class, 'id_quality_label', 'id');

+ 3 - 2
app/Services/CacheService.php

@@ -8,13 +8,14 @@ use Illuminate\Support\Facades\Cache;
 
 class CacheService
 {
-    function getOrExecute(String $key, $func){
+    function getOrExecute(String $key, $func, $expiration=null){
         $results = Cache::get($key);
         if(!$results){
             if(!$func||gettype($func)!='object') throw new \Exception('执行函数类型错误');
             $results = $func();
             if(!$results)return null;
-            Cache::put($key, $results, config('cache.expirations.default'));
+            if(!$expiration) $expiration=config('cache.expirations.default');
+            Cache::put($key, $results, $expiration);
         }
         return $results;
     }

+ 4 - 3
app/Services/CityService.php

@@ -3,6 +3,7 @@
 namespace App\Services;
 
 use App\City;
+use Illuminate\Support\Str;
 
 Class CityService
 {
@@ -29,15 +30,15 @@ Class CityService
         if(isset($city))return $city;
         foreach (CityService::$cities as $city) {
             if(strstr($city,$name) != null){
-               return City::query()->where('name',$city)->first();
+               return City::query()->where('name','like',$city.'%')->first();
             }
         }
         if(str_ends_with($name,'自治州')){
-            $city_name = str_split($name,strpos($name,'自治州'))[0];
+            $city_name = Str::before($name,'自治州');
             return City::query()->where('name','like',$city_name.'%')->first();
         }
         if(str_ends_with($name,'市')){
-            $city_name = str_split($name,strpos($name,'市'))[0];
+            $city_name =  Str::before($name,'市');
             return City::query()->where('name','like',$city_name.'%')->first();
         }
         return null;

+ 2 - 2
app/Services/CommodityService.php

@@ -198,9 +198,9 @@ Class CommodityService
         if(count($insert_params) > 0){
             try {
                 $this->insert($insert_params);
-                LogService::log(__METHOD__,__FUNCTION__,'批量添加 commodity ' . count($insert_params) .json_encode($insert_params) );
+                app('LogService')->log(__METHOD__,__FUNCTION__,'批量添加 commodity ' . count($insert_params) .json_encode($insert_params) );
             } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'批量添加 commodity error' .json_encode($insert_params) ."||".$e->getMessage().'||'.$e->getTraceAsString());
+                app('LogService')->log(__METHOD__,__FUNCTION__,'批量添加 commodity error' .json_encode($insert_params) ."||".$e->getMessage().'||'.$e->getTraceAsString());
             }
         }
         return Commodity::query()

+ 20 - 20
app/Services/InventoryAccountService.php

@@ -346,9 +346,9 @@ class InventoryAccountService
     //盘点修改盘点任务数据
     public function updateInventory($inventoryAccountId){
         $inventoryAccount=InventoryAccount::find($inventoryAccountId);
-        $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
-        $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
-        $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
+        $inventoryAccount->processed=$inventoryAccount->getProcessedAttribute();//已盘点数
+        $inventoryAccount->difference=$inventoryAccount->getDifferenceAttribute();//盘点差异数
+        $inventoryAccount->returned=$inventoryAccount->getReturnedAttribute(); //复盘归位数
         if($inventoryAccount->status=='待盘点')
             $inventoryAccount->status='盘点中';
         $inventoryAccount->update();
@@ -424,15 +424,15 @@ class InventoryAccountService
         $inventoryAccountMission->difference_amount=$count;//盘点差异
         $inventoryAccountMission->checked='是';
         $inventoryAccountMission->save();
-        Controller::logS(__METHOD__,"".__FUNCTION__,json_encode($inventoryId));
+        Controller::logS(__METHOD__,"增加系统之外的盘点记录".__FUNCTION__,json_encode($inventoryAccountMission));
         if ($inventoryAccountMission){
             $inventoryAccountMission->createSignStockInventoryPersons();
             Controller::logS(__METHOD__,"增加盘点人".__FUNCTION__,json_encode($inventoryId));
             $inventoryAccount=InventoryAccount::query()->find($inventoryId);
             $inventoryAccount->total=$inventoryAccount->total+1;
-            $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
-            $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
-            $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
+            $inventoryAccount->processed=$inventoryAccount->getProcessedAttribute();//已盘点数
+            $inventoryAccount->difference=$inventoryAccount->getDifferenceAttribute();//盘点差异数
+            $inventoryAccount->returned=$inventoryAccount->getReturnedAttribute(); //复盘归位数
             $inventoryAccount->update();
             Controller::logS(__METHOD__,"修改盘点任务记录".__FUNCTION__,json_encode($inventoryId));
             $inventoryAccountMission=InventoryAccountMission::with(['commodity.barcodes','stockInventoryPersons'])->where('id',$inventoryAccountMission->id)->first();
@@ -539,9 +539,9 @@ class InventoryAccountService
         if ($inventoryAccountMission>0){
             $inventoryAccount=InventoryAccount::query()->find($inventoryAccountId);
             $inventoryAccount->total=$inventoryAccount->total-1;
-            $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
-            $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
-            $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
+            $inventoryAccount->processed=$inventoryAccount->getProcessedAttribute();//已盘点数
+            $inventoryAccount->difference=$inventoryAccount->getDifferenceAttribute();//盘点差异数
+            $inventoryAccount->returned=$inventoryAccount->getReturnedAttribute(); //复盘归位数
             $inventoryAccount->update();
             Controller::logS(__METHOD__,'删除盘点记录时修改盘点任务信息'.__FUNCTION__,json_encode($inventoryAccountId));
         }
@@ -551,12 +551,12 @@ class InventoryAccountService
         $inventoryAccountMission=InventoryAccountMission::query()->find($inventoryAccountMissionId);
         $inventoryAccountMission->checked='跳过';
         $inventoryAccountMission->update();
-        LogService::log(__METHOD__,"跳过盘点记录修改checked状态",json_encode($inventoryAccountMissionId));
+        app('LogService')->log(__METHOD__,"跳过盘点记录修改checked状态",json_encode($inventoryAccountMissionId));
         if ($inventoryAccountMission->checked=='跳过'){
             $inventoryAccount=InventoryAccount::query()->find($inventoryAccountId);
-            $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
-            $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
-            $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
+            $inventoryAccount->processed=$inventoryAccount->getProcessedAttribute();//已盘点数
+            $inventoryAccount->difference=$inventoryAccount->getDifferenceAttribute();//盘点差异数
+            $inventoryAccount->returned=$inventoryAccount->getReturnedAttribute(); //复盘归位数
             $inventoryAccount->update();
             Controller::logS(__METHOD__,'跳过盘点记录时修改盘点任务信息'.__FUNCTION__,json_encode($inventoryAccountId));
         }
@@ -566,7 +566,7 @@ class InventoryAccountService
         $inventoryAccountMission=InventoryAccountMission::query()->find($inventoryAccountMissionId);
         $inventoryAccountMission->checked='确认差异';
         $inventoryAccountMission->update();
-        LogService::log(__METHOD__,"跳过盘点记录修改checked状态",json_encode($inventoryAccountMissionId));
+        app('LogService')->log(__METHOD__,"跳过盘点记录修改checked状态",json_encode($inventoryAccountMissionId));
         return $inventoryAccountMission;
     }
     public function 批量跳过或确认差异($checkData){
@@ -580,11 +580,11 @@ class InventoryAccountService
             $inventoryAccountMission->update();
             array_push($inventoryAccountMissions,$inventoryAccountMission);
         }
-        LogService::log(__METHOD__,"批量跳过或确认差异",json_encode($checkData));
+        app('LogService')->log(__METHOD__,"批量跳过或确认差异",json_encode($checkData));
         $inventoryAccount=InventoryAccount::query()->find($inventoryAccountId);
-        $inventoryAccount->processed=$inventoryAccount->getProcessedAmount();//已盘点数
-        $inventoryAccount->difference=$inventoryAccount->getDifferenceAmount();//盘点差异数
-        $inventoryAccount->returned=$inventoryAccount->getReturnedAmount(); //复盘归位数
+        $inventoryAccount->processed=$inventoryAccount->getProcessedAttribute();//已盘点数
+        $inventoryAccount->difference=$inventoryAccount->getDifferenceAttribute();//盘点差异数
+        $inventoryAccount->returned=$inventoryAccount->getReturnedAttribute(); //复盘归位数
         $inventoryAccount->update();
         Controller::logS(__METHOD__,'批量跳过或确认差异修改盘点任务信息'.__FUNCTION__,json_encode($inventoryAccountId));
         return $inventoryAccountMissions;
@@ -605,7 +605,7 @@ class InventoryAccountService
             'goodses'=>$goodses,
             'inventoryId'=>$inventoryId,
         ];
-        LogService::log(__METHOD__,"盘点基于盲收",json_encode($request));
+        app('LogService')->log(__METHOD__,"盘点基于盲收",json_encode($request));
         $inventoryAccountMissions=[];
         foreach ($goodses as $good){
             $barcode=$good['barcode']??'';

+ 3 - 2
app/Services/InventoryDailyLogService.php

@@ -26,7 +26,7 @@ Class InventoryDailyLogService
     }
 
     public function getSql(array $params){
-        return $this->conditionQuery($params)->selectRaw("inventory_daily_logs.created_at,inventory_daily_logs.amount,inventory_daily_logs.volumn_occupied,inventory_daily_logs.gross_weight")
+        return $this->conditionQuery($params)->selectRaw("inventory_daily_logs.id,inventory_daily_logs.created_at,inventory_daily_logs.amount,inventory_daily_logs.volumn_occupied,inventory_daily_logs.gross_weight")
             ->leftJoin('owners','inventory_daily_logs.owner_id','owners.id')
                 ->selectRaw('owners.name owner_name')
             ->leftJoin('depositories','inventory_daily_logs.depository_id','depositories.id')
@@ -34,7 +34,8 @@ Class InventoryDailyLogService
             ->leftJoin('commodities','inventory_daily_logs.commodity_id','commodities.id')
                 ->selectRaw('commodities.name commodity_name,commodities.sku commodity_sku,commodities.length commodity_length,commodities.width commodity_width,commodities.height commodity_height,commodities.volumn commodity_volumn')
             ->leftJoin('commodity_barcodes','commodity_barcodes.commodity_id','commodities.id')
-                ->selectRaw('commodity_barcodes.code commodity_barcode_code')
+                ->selectRaw("GROUP_CONCAT(commodity_barcodes.code) commodity_barcode_code")
+            ->groupBy('id')
             ->sql();
     }
 

+ 2 - 1
app/Services/LaborReportService.php

@@ -47,6 +47,8 @@ class LaborReportService
             'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
             'identity_number' => ['timeLimit' => 15],
             'name' => ['like' => ''],
+            'user_workgroup_id' => ['multi' => ','],
+            'labor_company_id' => ['multi' => ','],
             'id' => ['multi' => ',']
         ];
         $laborReports = app(QueryService::class)->query($params,$laborReports,$columnQueryRules,'labor_reports');
@@ -66,7 +68,6 @@ class LaborReportService
         return $this->conditionQuery($params)->paginate($params['paginate'] ?? 50);
     }
     public function get(array $params){
-//        dd($this->conditionQuery($params)->without("userDutyCheck")->toSql());
         return $this->conditionQuery($params)->without("userDutyCheck")->get();
     }
 

+ 10 - 16
app/Services/LogService.php

@@ -18,29 +18,23 @@ class LogService
             $user = auth()->user();
             if ($user) $id_user = $user['id'];
         }
+        $log=new Log([
+            'operation' => $method,
+            'type' => $type,
+            'description' => $description,
+            'id_user' => $id_user,
+            'ip' => request()->ip(),
+        ]);
         try {
             Redis::LLEN('LOGS');
         } catch (Exception $e) {
             //redis出现异常直接保存到数据库中
-            (new Log([
-                'operation' => $method,
-                'type' => $type,
-                'description' => $description,
-                'id_user' => $id_user,
-                'ip' => Request::ip(),
-            ]))->save();
+            $log->save();
             return;
         }
         $date = date('Y-m-d H:i:s');
-        $log = new Log([
-            'operation' => $method,
-            'type' => $type,
-            'description' => $description,
-            'id_user' => $id_user,
-            'ip' => Request::ip(),
-            'created_at' => $date,
-            'updated_at' => $date
-        ]);
+        $log['created_at']=$date;
+        $log['updated_at']=$date;
         Redis::LPUSH('LOGS', $log);
     }
 

+ 15 - 6
app/Services/LogisticService.php

@@ -9,14 +9,23 @@ use Illuminate\Support\Facades\Auth;
 
 Class LogisticService
 {
+    /** @var CacheService $cacheService */
+    private $cacheService;
+    function __construct(){
+        $this->cacheService=app('CacheService');
+    }
     public function getSelection($column = ['id','name']){
-        return Logistic::query()->select($column)->get();
+        return $this->cacheService->getOrExecute('LogisticAll_idName',function()use($column){
+            return Logistic::query()->select($column)->get();
+        },config('cache.expirations.persistent'));
     }
 
     public function firstOrCreate(array $params, array $values = null){
-        $logistic = Logistic::query();
-        if ($values)return $logistic->firstOrCreate($params, $values);
-        return $logistic->firstOrCreate($params);
+        return $this->cacheService->getOrExecute('LogisticFirstOrCreate'.md5(json_encode($params).json_encode($values)),function()use($params,$values){
+            $logistic = Logistic::query();
+            if ($values)return $logistic->firstOrCreate($params, $values);
+            return $logistic->firstOrCreate($params);
+        },config('cache.expirations.commonFrequent'));
     }
 
     public function getByWmsOrders($orderHeaders){
@@ -53,10 +62,10 @@ Class LogisticService
         try {
             if(count($insert_params) > 0){
                 $this->insert($insert_params);
-                LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . count($insert_params) . json_encode($insert_params) );
+                LogService::log(__METHOD__, __FUNCTION__, '批量创建 Logistic ' . count($insert_params) . json_encode($insert_params) );
             }
         } catch (\Exception $e) {
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建 owner error' . json_encode($insert_params) . "||".$e->getMessage() . '||' . $e->getTraceAsString() );
+            LogService::log(__METHOD__, __FUNCTION__, '批量创建 Logistic error' . json_encode($insert_params) . "||".$e->getMessage() . '||' . $e->getTraceAsString() );
         } finally {
             return Logistic::query()->whereIn('code',$codes)->get();
         }

+ 4 - 8
app/Services/LogisticTimingService.php

@@ -8,20 +8,16 @@ use App\Province;
 
 Class LogisticTimingService
 {
-    /**
-     * @param string $cityName
-     * @param string $provinceName
-     * @param string $logisticName
-     * @return \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object|null
-     */
+
     public function findByParams($cityName,$provinceName,$logisticId)
     {
         $logistic = Logistic::query()->where('id',$logisticId)->first();
-        if( str_starts_with($logistic->name,'顺丰')){
+        if(!str_starts_with($logistic->name,'新杰')){
             $city = app(CityService::class)->findByName($cityName);
             $province = app(ProvinceService::class)->findByName($provinceName);
+            $logistic = Logistic::query()->where('name','顺丰特惠')->first();
             if(isset($city) && isset($province)){
-                return $this->findByCityIdAndProvinceIdAndLogisticName($city->id,$province->id,$logisticId);
+                return $this->findByCityIdAndProvinceIdAndLogisticName($city->id,$province->id,$logistic->id);
             }
             return null;
         }

+ 2 - 2
app/Services/OracleActAllocationDetailService.php

@@ -13,10 +13,10 @@ Class OracleActAllocationDetailService
 {
     private function query($sql, array $params){
         if ($params['checktime_start'] ?? false){
-            $sql .= " AND checktime >= '".$params['checktime_start']." 00:00:00'";
+            $sql .= " AND checktime >= '".$params['checktime_start'].":00'";
         }
         if ($params['checktime_end'] ?? false){
-            $sql .= " AND checktime <= '".$params['checktime_end']." 23:59:59'";
+            $sql .= " AND checktime <= '".$params['checktime_end'].":59'";
         }
         return $sql;
     }

+ 15 - 0
app/Services/OracleBasCustomerService.php

@@ -6,6 +6,11 @@ use App\OracleBasCustomer;
 
 Class OracleBasCustomerService
 {
+    /** @var CacheService $cacheService */
+    private $cacheService;
+    function __construct(){
+        $this->cacheService=app('CacheService');
+    }
     public function getWareHouse($customerIDs = null)
     {
         if(!$customerIDs){
@@ -13,5 +18,15 @@ Class OracleBasCustomerService
         }
         return  OracleBasCustomer::query()->where('Customer_Type','WH')->get();
     }
+    public function getCustomers($codes)
+    {
+        return $this->cacheService->getOrExecute('OracleBasCustomersAll'.md5(json_encode($codes)),function()use($codes){
+            return OracleBasCustomer::query()->select('customerid','descr_c')
+                ->where('customer_type','OW')
+                ->where('active_flag','Y')
+                ->whereIn('customerid',$codes)
+                ->get();
+        },config('cache.expirations.owners'));
+    }
 
 }

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini