Selaa lähdekoodia

临时工申请系统 修改分配规则

ANG YU 4 vuotta sitten
vanhempi
commit
f83c28be48

+ 53 - 27
app/Http/Controllers/LaborCompanyController.php

@@ -4,55 +4,68 @@ namespace App\Http\Controllers;
 
 use App\LaborCompany;
 use App\Warehouse;
+use Illuminate\Contracts\Foundation\Application;
+use Illuminate\Http\RedirectResponse;
 use Illuminate\Http\Request;
+use Illuminate\Routing\Redirector;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
+use Illuminate\Validation\ValidationException;
 
 class LaborCompanyController extends Controller
 {
 
     public function index()
     {
-        if(!Gate::allows('劳务所-查询')){ return redirect(url('/'));  }
-        $laborCompanys=LaborCompany::query()
+        if (!Gate::allows('劳务所-查询')) {
+            return redirect(url('/'));
+        }
+        $laborCompanys = LaborCompany::query()
             ->with(['warehouse'])
-            ->orderBy('id','desc')
+            ->orderBy('id', 'desc')
             ->paginate(35);
-        return view('maintenance.laborCompany.index',['laborCompanys'=>$laborCompanys]);
+        return view('maintenance.laborCompany.index', ['laborCompanys' => $laborCompanys]);
     }
 
 
     public function create()
     {
-        if(!Gate::allows('劳务所-录入')){ return redirect(url('/'));  }
+        if (!Gate::allows('劳务所-录入')) {
+            return redirect(url('/'));
+        }
         $warehouses = Warehouse::all();
-        return view('maintenance.laborCompany.create',compact('warehouses'));
+        return view('maintenance.laborCompany.create', compact('warehouses'));
     }
 
 
     public function store(Request $request)
     {
-        if(!Gate::allows('劳务所-录入')){ return redirect(url('/'));  }
+        if (!Gate::allows('劳务所-录入')) {
+            return redirect(url('/'));
+        }
         $this->validatorCreate($request->all())->validate();
-        $laborCompany=new LaborCompany($request->all());
+        $laborCompany = new LaborCompany($request->all());
         $laborCompany->save();
         app('LaborCompanyService')->createRole($laborCompany);
-        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-        return redirect('maintenance/laborCompany/create')->with('successTip',"成功录入劳务所“{$request->input('name')}”");
+        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)
     {
         return Validator::make($data, [
             'name' => ['required', 'string', 'max:50', 'unique:labor_companies'],
         ]);
     }
+
     protected function validatorUpdate(array $data)
     {
         return Validator::make($data, [
             'name' => ['required', 'string', 'max:50'],
         ]);
     }
+
     /**
      * Display the specified resource.
      *
@@ -72,27 +85,38 @@ class LaborCompanyController extends Controller
      */
     public function edit(LaborCompany $laborCompany)
     {
-        if(!Gate::allows('劳务所-编辑')){ return redirect(url('/'));  }
+        if (!Gate::allows('劳务所-编辑')) {
+            return redirect(url('/'));
+        }
         $warehouses = Warehouse::all();
-        return view('maintenance.laborCompany.edit',compact('laborCompany','warehouses'));
+        return view('maintenance.laborCompany.edit', compact('laborCompany', 'warehouses'));
     }
 
     /**
-     * Update the specified resource in storage.
-     *
      * @param Request $request
-     * @param  $laborCompany
-     * @return
+     * @param LaborCompany $laborCompany
+     * @return array|Application|RedirectResponse|Redirector|void
+     * @throws ValidationException
      */
     public function update(Request $request, LaborCompany $laborCompany)
     {
-        if(!Gate::allows('劳务所-编辑')){ return redirect(url('/'));  }
-        $this->validatorUpdate($request->all())->validate();
-        $laborCompany->fill($request->all());
-        $laborCompany->update();
-        app('LaborCompanyService')->updateRole($laborCompany);
-        app('LogService')->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
-        return redirect('maintenance/laborCompany/')->with('successTip',"成功修改劳务所“{$laborCompany['name']}”!");
+        if (!Gate::allows('劳务所-编辑')) {
+            return redirect(url('/'));
+        }
+        if (!empty($request->input('name'))) {
+            $this->validatorUpdate($request->all())->validate();
+            $laborCompany->fill($request->all());
+            $laborCompany->update();
+            app('LaborCompanyService')->updateRole($laborCompany);
+            app('LogService')->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
+            return redirect('maintenance/laborCompany/')->with('successTip', "成功修改劳务所“{$laborCompany['name']}”!");
+        } else if (!empty($request->input('status'))) {
+            $laborCompany = LaborCompany::query()->find($request->input('id'));
+            $laborCompany->status = $request->input('status');
+            $laborCompany->save();
+            return ['success' => true, 'data' => ['status' => $request->input('status')]];
+        }
+
     }
 
     /**
@@ -104,9 +128,11 @@ class LaborCompanyController extends Controller
      */
     public function destroy(LaborCompany $laborCompany)
     {
-        if(!Gate::allows('劳务所-删除')){ return redirect(url('/'));  }
-        app('LogService')->log(__METHOD__,__FUNCTION__,$laborCompany->toJson(),Auth::user()['id']);
-        $re=$laborCompany->delete();
-        return ['success'=>$re];
+        if (!Gate::allows('劳务所-删除')) {
+            return redirect(url('/'));
+        }
+        app('LogService')->log(__METHOD__, __FUNCTION__, $laborCompany->toJson(), Auth::user()['id']);
+        $re = $laborCompany->delete();
+        return ['success' => $re];
     }
 }

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

@@ -21,7 +21,7 @@ class LaborCompanyDispatchController extends Controller
         /** @var Builder $builder */
         $builder = LaborCompanyDispatch::query()
             ->filter($filters)
-            ->with(['laborCompany.warehouse', 'laborCompanyDispatchDetails']);
+            ->with(['laborCompany', 'laborCompanyDispatchDetails','warehouse']);
 
         /** @var User $user */
         $user = auth()->user();

+ 135 - 105
app/Http/Controllers/TestController.php

@@ -23,6 +23,7 @@ use App\Http\Requests\AndroidGateRequest;
 use App\Http\Requests\OrderDelivering;
 use App\Jobs\BatchTaskJob;
 use App\Jobs\CacheShelfTaskJob;
+use App\Jobs\CalculationArrivedManNumJob;
 use App\Jobs\OrderCreateInstantBill;
 use App\Jobs\OrderCreateWaybill;
 use App\Jobs\SettlementBillReportJob;
@@ -137,10 +138,11 @@ class TestController extends Controller
     {
         try {
             return call_user_func([$this, $method], $request);
-        }catch (\BadMethodCallException $e){
+        } catch (\BadMethodCallException $e) {
             dd("方法不存在");
         }
     }
+
     /**
      * @param $wave
      * @return string
@@ -168,39 +170,40 @@ class TestController extends Controller
         }
         return $wms_status;
     }
+
     public function assignBatch()
     {
         $code = \request("code");
-        $batches = Batch::query()->where("code",$code)->get();
-        if (!$batches->count()){
-            $wave = DB::connection("oracle")->selectOne(DB::raw("select * from DOC_WAVE_HEADER where WAVENO = ?"),[$code]);
-            if (!$wave){
+        $batches = Batch::query()->where("code", $code)->get();
+        if (!$batches->count()) {
+            $wave = DB::connection("oracle")->selectOne(DB::raw("select * from DOC_WAVE_HEADER where WAVENO = ?"), [$code]);
+            if (!$wave) {
                 dd("FLUX无波次");
             }
             $owner = app("OwnerService")->codeGetOwner($wave->customerid);
             $obj = [
                 "wms_status" => $this->wms_status($wave),
-                "wms_type"=>$wave->descr,
-                "created_at"=>date("Y-m-d H:i:s"),
-                "wms_created_at"=>$wave->addtime,
-                "updated_at"=>$wave->edittime,
-                "owner_id"=>$owner->id,
+                "wms_type" => $wave->descr,
+                "created_at" => date("Y-m-d H:i:s"),
+                "wms_created_at" => $wave->addtime,
+                "updated_at" => $wave->edittime,
+                "owner_id" => $owner->id,
             ];
-            $wave = Batch::query()->where("code",$code)->first();
-            if (!$wave){
+            $wave = Batch::query()->where("code", $code)->first();
+            if (!$wave) {
                 $obj["code"] = $code;
                 $wave = Batch::query()->create($obj);
-            }else{
-                Batch::query()->where("code",$code)->update($obj);
+            } else {
+                Batch::query()->where("code", $code)->update($obj);
             }
-            $ordernos = array_column(DB::connection("oracle")->select(DB::raw("select orderno from DOC_WAVE_DETAILS where WAVENO = ?"),[$code]),"orderno");
-            Order::query()->whereIn("code",$ordernos)->update([
-                "batch_id"=>$wave->id
+            $ordernos = array_column(DB::connection("oracle")->select(DB::raw("select orderno from DOC_WAVE_DETAILS where WAVENO = ?"), [$code]), "orderno");
+            Order::query()->whereIn("code", $ordernos)->update([
+                "batch_id" => $wave->id
             ]);
-            Order::query()->with(["batch","bin"])->whereIn("code",$ordernos)->get()->each(function ($order){
-                if (!$order->bin){
-                    $bin = DB::connection("oracle")->selectOne(DB::raw("select seqno from DOC_WAVE_DETAILS where waveno = ? and orderno = ?"),[$order->batch->code,$order->code]);
-                    if ($bin){
+            Order::query()->with(["batch", "bin"])->whereIn("code", $ordernos)->get()->each(function ($order) {
+                if (!$order->bin) {
+                    $bin = DB::connection("oracle")->selectOne(DB::raw("select seqno from DOC_WAVE_DETAILS where waveno = ? and orderno = ?"), [$order->batch->code, $order->code]);
+                    if ($bin) {
                         OrderBin::query()->create([
                             'order_id' => $order->id,
                             'number' => $bin->seqno,
@@ -208,10 +211,11 @@ class TestController extends Controller
                     }
                 }
             });
-            $batches = Batch::query()->where("code",$code)->get();
+            $batches = Batch::query()->where("code", $code)->get();
         }
         app("BatchService")->assignTasks($batches);
     }
+
     private function i3()
     {
         $taskItem = new TaskItem();
@@ -223,13 +227,14 @@ class TestController extends Controller
         ];
         $taskItem->attributes = [
             "orderLineNo" => "1",
-            "skuLineNo"   => "1",
-            "sku"         => "TEST3",
-            "lotNum"      => "LOT1792011",
-            "logisticNumber"=> "极兔",
+            "skuLineNo" => "1",
+            "sku" => "TEST3",
+            "lotNum" => "LOT1792011",
+            "logisticNumber" => "极兔",
         ];
         return (array)$taskItem->get();
     }
+
     private function i2()
     {
         $taskItem = new TaskItem();
@@ -241,13 +246,14 @@ class TestController extends Controller
         ];
         $taskItem->attributes = [
             "orderLineNo" => "1",
-            "skuLineNo"   => "1",
-            "sku"         => "TEST1",
-            "lotNum"      => "LOT179201",
-            "logisticNumber"=> "圆通",
+            "skuLineNo" => "1",
+            "sku" => "TEST1",
+            "lotNum" => "LOT179201",
+            "logisticNumber" => "圆通",
         ];
         return (array)$taskItem->get();
     }
+
     private function i1()
     {
         $taskItem = new TaskItem();
@@ -259,13 +265,14 @@ class TestController extends Controller
         ];
         $taskItem->attributes = [
             "orderLineNo" => "1",
-            "skuLineNo"   => "1",
-            "sku"         => "TEST",
-            "lotNum"      => "LOT17920",
-            "logisticNumber"=> "顺丰",
+            "skuLineNo" => "1",
+            "sku" => "TEST",
+            "lotNum" => "LOT17920",
+            "logisticNumber" => "顺丰",
         ];
         return (array)$taskItem->get();
     }
+
     private function t1()
     {
         $task = new Task();
@@ -276,7 +283,7 @@ class TestController extends Controller
             "customer" => "幼岚",
         ];
         $task->type = Task::TOTAL_PICKING;
-        $task->storages = [["type"=>"1A_container"]];
+        $task->storages = [["type" => "1A_container"]];
         $task->items = [
             $this->i1(),
             $this->i2(),
@@ -284,26 +291,29 @@ class TestController extends Controller
         ];
         return $task->get();
     }
+
     use Signature;
+
     private static $delayedHour = 48;
+
     public function test(Request $request)
     {
         $delayedDateTime = "2021-10-26 00:00:00";
         dd(\App\ReceiveRecord::query()
-            ->where("record_at",">",$delayedDateTime)
-            ->where("delayed",0)
-            ->whereIn("logistic_number",RejectedBill::query()->select("logistic_number_return")
-                ->where("created_at",">",$delayedDateTime)->whereIn("logistic_number_return",
+            ->where("record_at", ">", $delayedDateTime)
+            ->where("delayed", 0)
+            ->whereIn("logistic_number", RejectedBill::query()->select("logistic_number_return")
+                ->where("created_at", ">", $delayedDateTime)->whereIn("logistic_number_return",
                     \App\ReceiveRecord::query()->select("logistic_number")
-                        ->where("record_at",">",$delayedDateTime)
-                        ->where("delayed",0)))->sql());
+                        ->where("record_at", ">", $delayedDateTime)
+                        ->where("delayed", 0)))->sql());
         $ser = new \App\Http\Controllers\api\thirdPart\syrius\producer\OrderController();
 
         $code = "W211025000233";
         $s = new SyriusTaskService();
-        $orders = Order::query()->with(["owner:id,name","batch:id,code","orderCommodities.commodity.barcodes"])
-            ->whereIn("batch_id",Batch::query()->select("id")->where("code",$code))->get();
-        foreach ($orders as $order){
+        $orders = Order::query()->with(["owner:id,name", "batch:id,code", "orderCommodities.commodity.barcodes"])
+            ->whereIn("batch_id", Batch::query()->select("id")->where("code", $code))->get();
+        foreach ($orders as $order) {
             $task = $s->formatTask($order);
             dump($ser->createOrder($task)->body());
         }
@@ -311,6 +321,7 @@ class TestController extends Controller
         $a = new \App\Http\Controllers\api\thirdPart\syrius\producer\OrderController();
         dd($a->createOrder($this->t1())->body());
     }
+
     public function test1()
     {
         $a = new \App\Http\Controllers\api\thirdPart\syrius\producer\OrderController();
@@ -318,8 +329,6 @@ class TestController extends Controller
     }
 
 
-
-
     private function t2()
     {
         $task = new Task();
@@ -330,13 +339,14 @@ class TestController extends Controller
         $task->attributes = [
             "customer" => "幼岚",
         ];
-        $task->storages = [["serialNo"=>"1635055429594424"]];
+        $task->storages = [["serialNo" => "1635055429594424"]];
         $task->items = [
             $this->p1(),
             $this->p2(),
         ];
         return $task->get();
     }
+
     private function p1()
     {
         $taskItem = new TaskItem();
@@ -347,15 +357,16 @@ class TestController extends Controller
             "G11-133-1",
         ];
         $taskItem->attributes = [
-            "storageSerialNo"=>"1635055429594424",
+            "storageSerialNo" => "1635055429594424",
             "orderLineNo" => "1",
-            "skuLineNo"   => "1",
-            "sku"         => "TEST1",
-            "lotNum"      => "LOT179201",
-            "logisticNumber"=> "圆通",
+            "skuLineNo" => "1",
+            "sku" => "TEST1",
+            "lotNum" => "LOT179201",
+            "logisticNumber" => "圆通",
         ];
         return (array)$taskItem->get();
     }
+
     private function p2()
     {
         $taskItem = new TaskItem();
@@ -366,12 +377,12 @@ class TestController extends Controller
             "G11-099-1",
         ];
         $taskItem->attributes = [
-            "storageSerialNo"=>"1635055429594424",
+            "storageSerialNo" => "1635055429594424",
             "orderLineNo" => "1",
-            "skuLineNo"   => "1",
-            "sku"         => "TEST",
-            "lotNum"      => "LOT17920",
-            "logisticNumber"=> "顺丰",
+            "skuLineNo" => "1",
+            "sku" => "TEST",
+            "lotNum" => "LOT17920",
+            "logisticNumber" => "顺丰",
         ];
         return (array)$taskItem->get();
     }
@@ -490,25 +501,26 @@ sql;
             ]);
     }
 
-    public function syncOrderPackage(){
-        ini_set('memory_limit','500M');
+    public function syncOrderPackage()
+    {
+        ini_set('memory_limit', '500M');
         ini_set('max_execution_time', 0);
         $orderPackingSummary = OracleDocOrderPackingSummary::query()
-            ->where('editTime','>=','2021-09-11 12:00:00')
-            ->where('editTime','<=','2021-09-12 12:40:00')
+            ->where('editTime', '>=', '2021-09-11 12:00:00')
+            ->where('editTime', '<=', '2021-09-12 12:40:00')
             ->get();
 
         $orderPackingSummary_chunk = $orderPackingSummary->chunk(200);
         foreach ($orderPackingSummary_chunk as $orderPackingSummarys) {
             foreach ($orderPackingSummarys as $orderPackingSummary) {
-                $orderPackage = OrderPackage::query()->where('logistic_number',$orderPackingSummary->traceid)->first();
+                $orderPackage = OrderPackage::query()->where('logistic_number', $orderPackingSummary->traceid)->first();
                 $orderPackage->update([
-                    'uploaded_to_wms'=> true,
-                    'weight'=>$orderPackingSummary->grossweight,
-                    'length'=>$orderPackingSummary->length,
-                    'width'=>$orderPackingSummary->width,
-                    'height'=>$orderPackingSummary->height,
-                    'weighed_at'=>$orderPackingSummary->edittime
+                    'uploaded_to_wms' => true,
+                    'weight' => $orderPackingSummary->grossweight,
+                    'length' => $orderPackingSummary->length,
+                    'width' => $orderPackingSummary->width,
+                    'height' => $orderPackingSummary->height,
+                    'weighed_at' => $orderPackingSummary->edittime
                 ]);
                 dispatch(new WeightUpdateInstantBill($orderPackage));
             }
@@ -520,8 +532,8 @@ sql;
     {
         /** @var OrderPackageService $service */
         $service = app('OrderPackageService');
-       return $service->collectUpload([
-           '75601803541125'
+        return $service->collectUpload([
+            '75601803541125'
         ]);
     }
 
@@ -558,14 +570,14 @@ sql;
 //        $startDate = $this->getDate();
         $startDate = '2021-09-25 13:23:14';
         $diffDay = 1; // 天数
-        for($i = 0;$i<=$diffDay;$i++){
+        for ($i = 0; $i <= $diffDay; $i++) {
             $endDate = Carbon::parse($startDate)->addDays(1)->toDateTimeString();
-            $doc_asn_headers = $this->getDocAsnHeader($startDate,$endDate);
+            $doc_asn_headers = $this->getDocAsnHeader($startDate, $endDate);
 //            if (count($doc_asn_headers)>0){
 //                $this->syncStores($doc_asn_headers);
 //                $this->syncDate($endDate);
 //            }
-            dump($startDate,$endDate);
+            dump($startDate, $endDate);
             $startDate = $endDate;
         }
         $this->clearCache();
@@ -578,12 +590,11 @@ sql;
     }
 
 
-
-    public function getDocAsnHeader($startDate,$endDate)
+    public function getDocAsnHeader($startDate, $endDate)
     {
         return OracleDOCASNHeader::query()
             ->with(['asnType', 'asnStatus'])
-            ->select('asnno','asnstatus','asntype','addtime','edittime','customerid','notes','warehouseid','asnreference3','asnreference2')
+            ->select('asnno', 'asnstatus', 'asntype', 'addtime', 'edittime', 'customerid', 'notes', 'warehouseid', 'asnreference3', 'asnreference2')
             ->where('EditTime', '>=', $startDate)
             ->where('EditTime', '<=', $endDate)
             ->whereColumn('EditTime', '<>', 'addTime')
@@ -591,13 +602,15 @@ sql;
             ->get();
     }
 
-    public function getDate(){
-        return ValueStore::query()->where('name','asn_last_updated_sync_at')->value('value');
+    public function getDate()
+    {
+        return ValueStore::query()->where('name', 'asn_last_updated_sync_at')->value('value');
     }
 
-    public function syncStores($doc_asn_headers){
+    public function syncStores($doc_asn_headers)
+    {
         $service = new StoreService();
-        $service->createStore($doc_asn_headers,"update");
+        $service->createStore($doc_asn_headers, "update");
         $service->updateStore($doc_asn_headers);
         $service->createStoreRejected($doc_asn_headers);
         unset($doc_asn_headers);
@@ -613,6 +626,7 @@ sql;
             'value' => $date,
         ]);
     }
+
     public function clearCache()
     {
         $service = new StoreService();
@@ -622,6 +636,7 @@ sql;
         // 清空保存 ans  号的栈
         // 清除 更新时间 开始 结束
     }
+
     public function updateStoreItem()
     {
         ini_set('max_execution_time', 0);
@@ -645,10 +660,12 @@ sql;
 
     public function init_SettlementBillReportTask()
     {
-        $this->dispatch(new SettlementBillReportJob('2021-09-01',[]));
+        $this->dispatch(new SettlementBillReportJob('2021-09-01', []));
     }
-    public function test2(){
-        $source_file ="E:\OneDrive\桌面\工作目录\文件库\\5.jpg";
+
+    public function test2()
+    {
+        $source_file = "E:\OneDrive\桌面\工作目录\文件库\\5.jpg";
 
         $img = ImageCreateFromJpeg($source_file);
         imagecolortransparent($img);//将某个颜色设置成透明色
@@ -662,27 +679,31 @@ sql;
     const FILE_NOT_FOUND = '-1';
     const FILE_EXTNAME_ILLEGAL = '-2';
 
-    public function run($src1, $src2) {
-        if(!is_file($src1) || !is_file($src2)) exit(self::FILE_NOT_FOUND);
+    public function run($src1, $src2)
+    {
+        if (!is_file($src1) || !is_file($src2)) exit(self::FILE_NOT_FOUND);
         $hash1 = $this->getHashValue($src1);
         $hash2 = $this->getHashValue($src2);
-        if(strlen($hash1) !== strlen($hash2)) return false;
+        if (strlen($hash1) !== strlen($hash2)) return false;
         $count = 0;
         $len = strlen($hash1);
-        for($i = 0; $i < $len; $i++) if($hash1[$i] !== $hash2[$i]){
+        for ($i = 0; $i < $len; $i++) if ($hash1[$i] !== $hash2[$i]) {
             $count++;
         }
         dd($count);
         return $count <= 10 ? true : false;
     }
 
-    public function getImage($file) {
+    public function getImage($file)
+    {
         $extname = pathinfo($file, PATHINFO_EXTENSION);
-        if(!in_array($extname, ['jpg','jpeg','png','gif'])) exit(self::FILE_EXTNAME_ILLEGAL);
-        $img = call_user_func('imagecreatefrom'. ( $extname == 'jpg' ? 'jpeg' : $extname ) , $file);
+        if (!in_array($extname, ['jpg', 'jpeg', 'png', 'gif'])) exit(self::FILE_EXTNAME_ILLEGAL);
+        $img = call_user_func('imagecreatefrom' . ($extname == 'jpg' ? 'jpeg' : $extname), $file);
         return $img;
     }
-    public function getHashValue($file) {
+
+    public function getHashValue($file)
+    {
         $w = 32;
         $h = 32;
         $img = imagecreatetruecolor($w, $h);
@@ -692,7 +713,7 @@ sql;
         imagedestroy($src);
         $total = 0;
         $array = array();
-        for( $y = 0; $y < $h; $y++) {
+        for ($y = 0; $y < $h; $y++) {
             for ($x = 0; $x < $w; $x++) {
                 $rgb = imagecolorat($img, $x, $y);
                 $gray = $rgb & 0xFF;
@@ -701,7 +722,7 @@ sql;
                     ($rgb >> 16) & 0xFF,
                     $rgb & 0xFF,
                 ]);*/
-                if(!isset($array[$y])) $array[$y] = array();
+                if (!isset($array[$y])) $array[$y] = array();
                 $array[$y][$x] = $gray;
                 $total += $gray;
             }
@@ -709,8 +730,8 @@ sql;
         imagedestroy($img);
         $average = intval($total / ($w * $h * 2));
         $hash = '';
-        for($y = 0; $y < $h; $y++) {
-            for($x = 0; $x < $w; $x++) {
+        for ($y = 0; $y < $h; $y++) {
+            for ($x = 0; $x < $w; $x++) {
                 $hash .= ($array[$y][$x] >= $average) ? '1' : '0';
             }
         }
@@ -720,17 +741,17 @@ sql;
 
     public function sortTransferStatus()
     {
-        $orderPackage = OrderPackage::query()->where('logistic_number','75601831068018')->first();
+        $orderPackage = OrderPackage::query()->where('logistic_number', '75601831068018')->first();
         app('OrderPackageService')->sortOrderPackageTransferStatus($orderPackage);
         dd($orderPackage);
     }
 
     public function clear_work_space()
     {
-        \App\LaborApply::query()->truncate();
+//        \App\LaborApply::query()->truncate();
 
         LaborCompanyDispatch::query()->truncate();
-
+//
         \App\LaborCompanyDispatchDetail::query()->truncate();
     }
 
@@ -738,12 +759,12 @@ sql;
     {
         $last_start_key = config('sync.order_sync.cache_prefix.last_start_at');
         $last_end_key = config('sync.order_sync.cache_prefix.last_end_at');
-        Cache::put($last_start_key,Carbon::make('2021-10-12 06:23:37'));
-        Cache::put($last_end_key,Carbon::make('2021-10-12 06:23:38'));
-        ValueStore::query()->where('name','order_last_created_sync_at')->update(['value' => '2021-10-12 06:23:37']);
-        ValueStore::query()->where('name','order_last_updated_sync_at')->update(['value' => '2021-10-12 06:23:37']);
-        ValueStore::query()->where('name','last_order_sync_task_start_at')->update(['value' => '2021-10-12 06:23:37']);
-        ValueStore::query()->where('name','last_order_sync_task_end_at')->update(['value' => '2021-10-12 06:23:38']);
+        Cache::put($last_start_key, Carbon::make('2021-10-12 06:23:37'));
+        Cache::put($last_end_key, Carbon::make('2021-10-12 06:23:38'));
+        ValueStore::query()->where('name', 'order_last_created_sync_at')->update(['value' => '2021-10-12 06:23:37']);
+        ValueStore::query()->where('name', 'order_last_updated_sync_at')->update(['value' => '2021-10-12 06:23:37']);
+        ValueStore::query()->where('name', 'last_order_sync_task_start_at')->update(['value' => '2021-10-12 06:23:37']);
+        ValueStore::query()->where('name', 'last_order_sync_task_end_at')->update(['value' => '2021-10-12 06:23:38']);
     }
 
 
@@ -752,7 +773,7 @@ sql;
         $code = \request("code");
         $service = new OracleDOCOrderHeaderService();
         $orderService = new OrderService();
-        $orderHeaders = $service->getQuery()->where('DOC_Order_Header.WaveNo',$code)->get();
+        $orderHeaders = $service->getQuery()->where('DOC_Order_Header.WaveNo', $code)->get();
         $orderService->syncOrderByWMSOrderHeaders($orderHeaders);
         app("OrderCommodityService")->syncOrderCommodity($orderHeaders);
         dd('同步完成');
@@ -764,4 +785,13 @@ sql;
         $service = app('OwnerStoreOutFeeReportService');
         $service->recordReport(null, [2]);
     }
+
+    public function init_labor_company_dispatch()
+    {
+        $dispatches = LaborCompanyDispatch::all();
+        foreach ($dispatches as $dispatch) {
+            $dispatch->warehouse_id = $dispatch->laborCompany->warehouse_id ?? null;
+            $dispatch->save();
+        }
+    }
 }

+ 29 - 0
app/LaborCompany.php

@@ -24,6 +24,35 @@ class LaborCompany extends Model
         'woman_num',//女工人数
     ];
 
+    static public $enums = [
+        'status' => [
+            '' => 0,
+            '启用' => 1,
+            '禁用' => 2,
+        ],
+    ];
+
+    function __construct(array $attributes = [])
+    {
+        foreach (self::$enums as &$enum) {
+            $enum = $enum + array_flip($enum);
+        }
+        parent::__construct($attributes);
+    }
+
+
+    public function getStatusAttribute($value)
+    {
+        if (!$value) return '';
+        return self::$enums['status'][$value];
+    }
+
+    public function setStatusAttribute($value)
+    {
+        if (!$value) return 0;
+        $this->attributes['status'] = self::$enums['status'][$value];
+    }
+
     /**
      * @return BelongsTo
      */

+ 6 - 0
app/LaborCompanyDispatch.php

@@ -24,6 +24,7 @@ class LaborCompanyDispatch extends Model
         'dispatch_date',//分配日期
         'exceed_max_labor_num_status',//是否超过最大允许值 1 未超过 2 超过
         'status',//状态
+        'warehouse_id',//仓库ID
     ];
 
 
@@ -72,6 +73,11 @@ class LaborCompanyDispatch extends Model
         return $this->hasMany(LaborCompanyDispatchDetail::class);
     }
 
+    public function warehouse(): BelongsTo
+    {
+        return $this->belongsTo(Warehouse::class);
+    }
+
     public function scopeFilter($query, $filters)
     {
         return $filters->apply($query);

+ 12 - 5
app/Services/LaborApplyService.php

@@ -109,13 +109,13 @@ class LaborApplyService
             //按照仓库查询对应的劳务所
             $companies = $this->getCompanies($warehouse);
             //没有找到劳务所直接跳出
-            if (empty($companies)) continue;
+            if ($companies->isEmpty()) continue;
             //需要的男工人数
             $man_num = $apply_man_nums->man_num;
             //需要的女工人数
             $woman_num = $apply_man_nums->woman_num;
             //插入的分配数据
-            $laborCompanyDispatchInsertArray = $this->buildLaborCompanyDispatchInsertArray($companies, $man_num, $woman_num, $dispatch_date);
+            $laborCompanyDispatchInsertArray = $this->buildLaborCompanyDispatchInsertArray($companies, $man_num, $woman_num, $dispatch_date, $warehouse->id);
             //插入分配数据
             LaborCompanyDispatch::query()->insert($laborCompanyDispatchInsertArray);
             //更新申请状态
@@ -137,9 +137,10 @@ class LaborApplyService
      * @param $man_num
      * @param $woman_num
      * @param string $dispatch_date
+     * @param int $warehouse_id
      * @return array
      */
-    private function buildLaborCompanyDispatchInsertArray(Collection $companies, $man_num, $woman_num, string $dispatch_date): array
+    private function buildLaborCompanyDispatchInsertArray(Collection $companies, $man_num, $woman_num, string $dispatch_date, int $warehouse_id): array
     {
         //分配数组
         $laborCompanyDispatchInsertArray = [];
@@ -152,13 +153,17 @@ class LaborApplyService
                 'woman_num' => 0,
                 'exceed_max_labor_num_status' => LaborCompanyDispatch::NOT_EXCEED_MAX_LABOR_NUM,//没有超限额
                 'status' => 1,//创建
+                'warehouse_id' => $warehouse_id,
             ];
         }
         //分配男工
         $this->dispatchWorker($man_num, $laborCompanyDispatchInsertArray, $companies, 'man_num');
         //分配女工
         $this->dispatchWorker($woman_num, $laborCompanyDispatchInsertArray, $companies, 'woman_num');
-        return $laborCompanyDispatchInsertArray;
+        //保留 man_num || woman_num 不为0的
+        return array_filter($laborCompanyDispatchInsertArray, function ($item) {
+            return $item['man_num'] > 0 || $item['woman_num'] > 0;
+        });
     }
 
     /**
@@ -169,7 +174,9 @@ class LaborApplyService
     private function getCompanies($warehouse): Collection
     {
         return LaborCompany::query()
-            ->where('warehouse_id', $warehouse->id)->get();
+            ->where('warehouse_id', $warehouse->id)
+            ->where('status', 1)//状态为启用
+            ->get();
     }
 
     /**

+ 32 - 0
database/migrations/2021_10_28_101509_add_status_to_labor_companies_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddStatusToLaborCompaniesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('labor_companies', function (Blueprint $table) {
+            $table->tinyInteger('status')->default(1)->comment('状态');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('labor_companies', function (Blueprint $table) {
+            $table->dropColumn('status');
+        });
+    }
+}

+ 32 - 0
database/migrations/2021_10_28_110839_add_warehouse_id_to_labor_company_dispatches_table.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddWarehouseIdToLaborCompanyDispatchesTable extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('labor_company_dispatches', function (Blueprint $table) {
+            $table->unsignedInteger('warehouse_id')->nullable()->comment('仓库ID');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('labor_company_dispatches', function (Blueprint $table) {
+            $table->dropColumn('warehouse_id');
+        });
+    }
+}

+ 57 - 23
resources/views/maintenance/laborCompany/index.blade.php

@@ -19,7 +19,8 @@
                         <th>女工人数</th>
                         <th>操作</th>
                     </tr>
-                    <tr v-for="(laborCompany,i) in laborCompanys"  @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
+                    <tr v-for="(laborCompany,i) in laborCompanys" @click="selectTr===i+1?selectTr=0:selectTr=i+1"
+                        :class="{ focusing:selectTr===i+1 ,'text-muted': laborCompany.status==='禁用'}">
                         <td class="text-muted">@{{laborCompany.id}}</td>
                         <td>@{{laborCompany.name}}</td>
                         <td>@{{laborCompany.warehouse && laborCompany.warehouse.name}}</td>
@@ -30,9 +31,17 @@
                         <td class="text-muted">@{{laborCompany.created_at}}</td>
                         <td>
                             @can('劳务所-编辑')
-                            <button class="btn btn-sm btn-outline-primary" @click="edit(laborCompany.id)">改</button> @endcan
+                                <button class="btn btn-sm btn-outline-primary" @click="edit(laborCompany.id)">改
+                                </button> @endcan
                             @can('劳务所-删除')
-                            <button class="btn btn-sm btn-outline-dark" @click="destroy(laborCompany)">删</button> @endcan
+                                <button class="btn btn-sm btn-outline-dark" @click="destroy(laborCompany)">删
+                                </button> @endcan
+                            @can('劳务所-启用禁用')
+                                <button class="btn btn-sm"
+                                        :class="laborCompany.status==='启用'?'btn btn-outline-danger':'btn btn-outline-success'"
+                                        @click="openOrClose(laborCompany)">@{{ laborCompany.status==='启用'?'禁用':'启用' }}
+                                </button>
+                            @endcan
                         </td>
                     </tr>
                 </table>
@@ -45,44 +54,69 @@
 @section('lastScript')
     <script>
         new Vue({
-            el:"#list",
-            data:{
-                laborCompanys:[
+            el: "#list",
+            data: {
+                laborCompanys: [
                     @foreach( $laborCompanys as $laborCompany )
-                    {!! $laborCompany !!},
+                        {!! $laborCompany !!},
                     @endforeach
                 ],
-                selectTr:0
+                selectTr: 0
             },
-            methods:{
-                edit:function(id){
-                    location.href = "{{url('maintenance/laborCompany')}}/"+id+"/edit";
+            methods: {
+                edit: function (id) {
+                    location.href = "{{url('maintenance/laborCompany')}}/" + id + "/edit";
                 },
-                destroy:function(laborCompany){
-                    if(!confirm('确定要删除劳务所“' + laborCompany.name + '”吗?')){return};
-                    let data=this;
-                    let url = "{{url('maintenance/laborCompany')}}/"+laborCompany.id;
-                    axios.delete(url,{id:laborCompany.id})
+                destroy: function (laborCompany) {
+                    if (!confirm('确定要删除劳务所“' + laborCompany.name + '”吗?')) {
+                        return
+                    }
+                    ;
+                    let data = this;
+                    let url = "{{url('maintenance/laborCompany')}}/" + laborCompany.id;
+                    axios.delete(url, {id: laborCompany.id})
                         .then(function (response) {
-                            if(response.data.success){
+                            if (response.data.success) {
                                 for (let i = 0; i < data.laborCompanys.length; i++) {
-                                    if (data.laborCompanys[i].id===laborCompany.id){
-                                        data.laborCompanys.splice(i,1);
+                                    if (data.laborCompanys[i].id === laborCompany.id) {
+                                        data.laborCompanys.splice(i, 1);
                                         break;
                                     }
                                 }
                                 tempTip.setDuration(1000);
-                                tempTip.showSuccess('删除劳务所"'+laborCompany.name+'"成功!')
-                            }else{
+                                tempTip.showSuccess('删除劳务所"' + laborCompany.name + '"成功!')
+                            } else {
                                 tempTip.setDuration(1000);
-                                tempTip.show('删除劳务所"'+laborCompany.name+'"失败!')
+                                tempTip.show('删除劳务所"' + laborCompany.name + '"失败!')
                             }
                         })
                         .catch(function (err) {
                             tempTip.setDuration(3000);
-                            tempTip.show('删除物流公司失败!'+'网络错误:' + err)
+                            tempTip.show('删除物流公司失败!' + '网络错误:' + err)
                         });
                 },
+                openOrClose(laborCompany) {
+                    let status = laborCompany.status === '启用' ? '禁用' : '启用';
+                    if (!confirm("确定要" + status + "劳务所" + laborCompany.name + '”吗?')) {
+                        return
+                    }
+                    let url = "{{url('maintenance/laborCompany')}}/";
+                    axios.put(url + laborCompany.id, {id: laborCompany.id, status: status})
+                        .then(response => {
+                            if (response.data.success) {
+                                laborCompany.status = response.data.data.status;
+                                tempTip.setDuration(1000);
+                                tempTip.showSuccess('更新劳务所"' + laborCompany.name + '"成功!')
+                            } else {
+                                tempTip.setDuration(1000);
+                                tempTip.show('更新劳务所"' + laborCompany.name + '"失败!')
+                            }
+                        })
+                        .catch(function (err) {
+                            tempTip.setDuration(3000);
+                            tempTip.show('更新劳务所失败!' + '网络错误:' + err)
+                        });
+                }
             }
         });
     </script>

+ 1 - 1
resources/views/personnel/laborApply/dispatch/index.blade.php

@@ -63,7 +63,7 @@
                         @endcan()
                     </td>
                     <td>@{{ labor_company_dispatch.labor_company.name }}</td>
-                    <td>@{{ labor_company_dispatch.labor_company.warehouse ? labor_company_dispatch.labor_company.warehouse.name:'' }}</td>
+                    <td>@{{ labor_company_dispatch.warehouse ?labor_company_dispatch.warehouse.name:''}}</td>
                     <td><span :class="getStatusClass(labor_company_dispatch.status)">@{{ labor_company_dispatch.status }}</span>
                     </td>
                     <td>@{{ labor_company_dispatch.man_num }}</td>