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

Merge remote-tracking branch 'origin/master'

ANG YU 5 лет назад
Родитель
Сommit
e4b26520bd
37 измененных файлов с 315 добавлено и 137 удалено
  1. 2 2
      app/Http/Controllers/CommodityController.php
  2. 4 4
      app/Http/Controllers/CustomerController.php
  3. 2 2
      app/Http/Controllers/OrderCommodityAssignController.php
  4. 1 1
      app/Http/Controllers/OrderController.php
  5. 1 1
      app/Http/Controllers/OwnerController.php
  6. 2 2
      app/Http/Controllers/PackageController.php
  7. 9 9
      app/Http/Controllers/PriceModelController.php
  8. 1 1
      app/Http/Controllers/ProcessStatisticController.php
  9. 1 1
      app/Http/Controllers/StoreCheckingReceiveController.php
  10. 74 36
      app/Http/Controllers/TestController.php
  11. 6 16
      app/Http/Controllers/api/thirdPart/haiq/StorageController.php
  12. 2 1
      app/Imports/OwnerPriceDirectLogisticDetailImport.php
  13. 1 2
      app/Imports/OwnerPriceLogisticDetailImport.php
  14. 9 15
      app/Imports/UpdatePickZone.php
  15. 2 0
      app/OrderCommodityAssign.php
  16. 2 2
      app/Services/CommodityBarcodeService.php
  17. 14 9
      app/Services/CommodityService.php
  18. 4 4
      app/Services/OrderService.php
  19. 1 1
      app/Services/OwnerService.php
  20. 2 2
      app/Services/StoreItemService.php
  21. 1 2
      config/api.php
  22. 3 0
      database/factories/OracleBasSKUFactory.php
  23. 3 3
      database/migrations/2020_12_02_150054_create_order_commodity_assigns_table.php
  24. 54 0
      database/migrations/2020_12_12_093011_change_authorities_order_assign.php
  25. 1 1
      package-lock.json
  26. 1 1
      phpunit.xml
  27. 5 0
      resources/js/queryForm/export.js
  28. 3 3
      resources/views/inventory/stockInventory/inventoryMission.blade.php
  29. 2 2
      resources/views/maintenance/priceModel/logistic/index.blade.php
  30. 5 3
      resources/views/order/index/delivering.blade.php
  31. 1 1
      resources/views/order/index/menu.blade.php
  32. 28 4
      resources/views/station/monitor/_svg.blade.php
  33. 4 3
      resources/views/station/monitor/show.blade.php
  34. 0 2
      tests/Services/CommodityService/GetCommodityByOwnerCodeAndSKUTest.php
  35. 0 1
      tests/Services/CommodityService/GetParamsByBasSKUTest.php
  36. 61 0
      tests/Services/CommodityService/Get_Test.php
  37. 3 0
      tests/webApi/thirdPart/haiq/storage.http

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

@@ -41,7 +41,7 @@ class CommodityController extends Controller
     {
         if(!Gate::allows('商品信息-录入')){ return redirect(url('denied'));  }
         $ownerService=app(OwnerService::class);
-        $owners = $ownerService->getSelection();
+        $owners = $ownerService->getIntersectPermitting();
         return view('maintenance.commodity.create',compact('owners'));
     }
 
@@ -101,7 +101,7 @@ class CommodityController extends Controller
     {
         if(!Gate::allows('商品信息-编辑')){ return redirect(url('denied'));  }
         $ownerService=app(OwnerService::class);
-        $owners = $ownerService->getSelection();
+        $owners = $ownerService->getIntersectPermitting();
         return view('maintenance.commodity.edit',['commodity'=>$commodity,'owners'=>$owners]);
     }
 

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

@@ -34,7 +34,7 @@ class CustomerController extends Controller
         }];
         $ownerGroups = app('UserOwnerGroupService')->getSelection();
         $customers = app('CustomerService')->getSelection();
-        $owners = app('OwnerService')->getSelection();
+        $owners = app('OwnerService')->getIntersectPermitting();
         $reports = app("OwnerReportService")->paginate($request->input(),$withs);
         $params = $request->input();
         return response()->view('customer.project.report',compact("reports","ownerGroups","customers","owners","params"));
@@ -238,7 +238,7 @@ class CustomerController extends Controller
         $areas = app('OwnerAreaReportService')->paginate($request->input(),["owner"=>function($query){$query->with(["customer","ownerStoragePriceModels"]);}]);
         $ownerGroups = app('UserOwnerGroupService')->getSelection();
         $customers = app('CustomerService')->getSelection();
-        $owners = app('OwnerService')->getSelection();
+        $owners = app('OwnerService')->getIntersectPermitting();
         $params = $request->input();
         return response()->view('customer.project.area',compact("areas","ownerGroups","customers","owners","params"));
     }
@@ -306,7 +306,7 @@ class CustomerController extends Controller
         $params = $request->input();
         $shops = app('ShopService')->getSelection();
         $customers = app('CustomerService')->getSelection();
-        $owners = app('OwnerService')->getSelection();
+        $owners = app('OwnerService')->getIntersectPermitting();
         $details = app('OwnerFeeDetailService')->paginate($params,["owner"=>function($query){$query->with("customer");},"shop","processMethod","logistic"]);
         return response()->view('customer.finance.instantBill',compact("details","params","shops","customers","owners"));
     }
@@ -342,7 +342,7 @@ class CustomerController extends Controller
         $params = $request->input();
         $ownerGroups = app('UserOwnerGroupService')->getSelection();
         $customers = app('CustomerService')->getSelection();
-        $owners = app('OwnerService')->getSelection();
+        $owners = app('OwnerService')->getIntersectPermitting();
         $bills = app('OwnerBillReportService')->paginate($params,["owner"=>function($query){
             /** @var Builder $query */
             $query->with(["customer","userOwnerGroup"]);

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

@@ -12,14 +12,14 @@ class OrderCommodityAssignController extends Controller
 {
     public function index()
     {
-        if(!Gate::allows('指定分配-查询')){ return redirect(url('denied'));  }
+        if(!Gate::allows('订单管理-指定分配-查询')){ return redirect(url('denied'));  }
         $assigns = app("OrderCommodityAssignService")->paginate();
         return view("order.index.index",compact("assigns"));
     }
 
     public function import(Request $request)
     {
-        if(!Gate::allows('指定分配-编辑')){ return ["success"=>false,"data"=>"无权操作!"];  }
+        if(!Gate::allows('订单管理-指定分配-编辑')){ return ["success"=>false,"data"=>"无权操作!"];  }
         $fileSuffix=$request->file('file')->getClientOriginalExtension();
         if ($fileSuffix != 'xlsx' && $fileSuffix != 'xls' && $fileSuffix != 'csv')
             return ['success'=>false,'data'=>'不支持该文件类型'];

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

@@ -24,7 +24,7 @@ class OrderController extends Controller
         /** @var OrderService $orderService */
         $orderService = app('OrderService');
         $request = $request->input();
-        $owners = app('OwnerService')->getSelection(['id','code']);
+        $owners = app('OwnerService')->getIntersectPermitting(['id','code']);
         $codes = array_column($owners->toArray(),'code');
         if ($request['customerid'] ?? false){
             $arr = explode(',',$request['customerid']);

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

@@ -92,7 +92,7 @@ class OwnerController extends Controller
 
     public function getOwners()
     {
-        $owners = app('OwnerService')->getSelection(['id', 'code', 'name']);
+        $owners = app('OwnerService')->getIntersectPermitting(['id', 'code', 'name']);
         return $owners;
     }
 

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

@@ -143,7 +143,7 @@ class PackageController extends Controller
 
     public function statistics(Request $request){
         $packages = app('PackageStatisticsService')->get($request->input());
-        $owners=app('OwnerService')->getSelection();
+        $owners=app('OwnerService')->getIntersectPermitting();
         $logistics=app('LogisticService')->getSelection();
         $ownerTemp = [];
         foreach ($owners as $owner){
@@ -237,7 +237,7 @@ class PackageController extends Controller
             $data = $service->get(['owner_id'=>$request->data]);
         }
 
-        $owners=app('OwnerService')->getSelection();
+        $owners=app('OwnerService')->getIntersectPermitting();
         $ownerTemp = [];
         foreach ($owners as $owner){
             $ownerTemp[$owner->id] = $owner->name;

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

@@ -109,7 +109,7 @@ class PriceModelController extends Controller
         $features = app("FeatureService")->getMapArray();
         OwnerPriceOperation::$features = $features;
         $models = app('OwnerPriceOperationService')->paginate($request->input(),["ownerPriceOperationOwners","ownerInStorageRule"=>function($query){$query->with("unit");}])->append("featureFormat");
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         return response()->view('maintenance.priceModel.operation.index',compact("models","owners"));
     }
 
@@ -223,7 +223,7 @@ class PriceModelController extends Controller
 
     public function operationCreate(){
         if(!Gate::allows('计费模型-作业-录入')){ return redirect('denied');  }
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         $units = app('UnitService')->getSelection();
         return response()->view('maintenance.priceModel.operation.create',compact("owners","units"));
     }
@@ -279,7 +279,7 @@ class PriceModelController extends Controller
     {
         if(!Gate::allows('计费模型-作业-编辑')){ return redirect('denied');  }
         $model = app('OwnerPriceOperationService')->find($id,true,["ownerPriceOperationOwners"]);
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         $units = app('UnitService')->getSelection();
         return response()->view('maintenance.priceModel.operation.create',compact("owners","units","model"));
     }
@@ -441,7 +441,7 @@ class PriceModelController extends Controller
     public function expressCreate(){
         if(!Gate::allows('计费模型-快递-录入')){ return redirect('denied');  }
         $logistics = app("LogisticService")->getSelection();
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         return response()->view('maintenance.priceModel.express.create',compact("logistics","owners"));
     }
 
@@ -468,7 +468,7 @@ class PriceModelController extends Controller
         if(!Gate::allows('计费模型-快递-编辑')){ return redirect('denied');  }
         /** @var OwnerPriceExpress $model */
         $model = app('OwnerPriceExpressService')->find($id)->append(["owner_id","logistic_id"]);
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         $logistics = app('LogisticService')->getSelection();
         return response()->view('maintenance.priceModel.express.create',compact("owners","logistics","model"));
     }
@@ -535,7 +535,7 @@ class PriceModelController extends Controller
     public function logisticCreate()
     {
         if(!Gate::allows('计费模型-物流-录入')){ return redirect('denied');  }
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         $logistics = app('LogisticService')->getSelection();
         $units = app('UnitService')->getSelection();
         return response()->view('maintenance.priceModel.logistic.create',compact("owners","logistics","units"));
@@ -567,7 +567,7 @@ class PriceModelController extends Controller
     public function logisticEdit($id)
     {
         if(!Gate::allows('计费模型-物流-编辑')){ return redirect('denied');  }
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         $logistics = app('LogisticService')->getSelection();
         $units = app('UnitService')->getSelection();
         $model = app("OwnerPriceLogisticService")->find($id)->append(["owner_id","logistic_id"]);
@@ -796,7 +796,7 @@ class PriceModelController extends Controller
 
     public function directLogisticCreate(){
         if(!Gate::allows('计费模型-直发-录入')){ return redirect('denied');  }
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         return response()->view('maintenance.priceModel.directLogistic.create',compact("owners"));
     }
 
@@ -829,7 +829,7 @@ class PriceModelController extends Controller
     public function directLogisticEdit($id)
     {
         if(!Gate::allows('计费模型-直发-编辑')){ return redirect('denied');  }
-        $owners = app("OwnerService")->getSelection();
+        $owners = app("OwnerService")->getIntersectPermitting();
         $model = app("OwnerPriceDirectLogisticService")->find($id)->append("owner_id");
         return response()->view('maintenance.priceModel.directLogistic.create',compact("model","owners"));
     }

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

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

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

@@ -24,7 +24,7 @@ class StoreCheckingReceiveController extends Controller
 
         $params = $request->input();
         $storeCheckingReceives = $service->paginate($params);
-        $owners = app('OwnerService')->getSelection();
+        $owners = app('OwnerService')->getIntersectPermitting();
         return view('store.checkingReceive.mission',compact('storeCheckingReceives','params','owners'));
     }
 

+ 74 - 36
app/Http/Controllers/TestController.php

@@ -55,16 +55,20 @@ use App\Services\StoreService;
 use App\Services\WarehouseService;
 use App\Store;
 use App\StoreCheckingReceiveItem;
+use App\StoreItems;
 use App\User;
 use App\Warehouse;
 use App\Waybill;
 use App\WaybillPriceModel;
 use Carbon\Carbon;
+use Exception;
+use GuzzleHttp\Client;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Http;
 use Illuminate\Support\Str;
 use Maatwebsite\Excel\Facades\Excel;
 use Ramsey\Collection\Collection;
@@ -106,18 +110,77 @@ class TestController extends Controller
             app(BatchUpdateService::class)->batchUpdate('inventory_accounts', $updateParams);
         }
     }
+    public function zui(){
+        $a = new \Illuminate\Support\Collection(["a"=>"b"]);
+        foreach ($a as $i=>$l)dump($i,$l);
+    }
     public function zzd()
     {
-        $a = DB::connection("oracle")->select(DB::raw("select * from DOC_WAVE_DETAILS where WAVENO = 'W201210000112'"));
-        $str="";
-        $a = array_column($a,"orderno");
-        foreach ($a as $t){
-            $str.="'".$t."',";
+        $post=Http::post("http://localhost:9722",["type"=>"base","format"=>[
+            "method"=>"warpText",
+            "mergeColumn"=>["column"],
+            "mergeRow"=>["row"=>"row"],
+            "datum"=>"datum",
+        ],"connection"=>[
+            "driver"=>"mysql",
+            "host"=>"host",
+            "port"=>"port",
+            "database"=>"databse",
+            "username"=>"username",
+            "password"=>"password",
+            "charset"=>"char",
+            "parsetime"=>"pars",
+            "sid"=>"",
+        ],"data"=>[
+            "row"=>["sql-row"],
+            "list"=>[["sql-list"]],
+            "sql"=>"sql",
+            "rule"=>["sql"=>"rule"],
+        ],"path"=>[
+            "log"=>"log",
+            "file"=>""
+        ]]);
+        $http = new Client();
+        $response = $http->get("http://localhost:9722", ["type"=>"base","format"=>[
+            "method"=>"warpText",
+            "mergeColumn"=>["column"],
+            "mergeRow"=>["row"=>"row"],
+            "datum"=>"datum",
+        ],"connection"=>[
+            "driver"=>"mysql",
+            "host"=>"host",
+            "port"=>"port",
+            "database"=>"databse",
+            "username"=>"username",
+            "password"=>"password",
+            "charset"=>"char",
+            "parsetime"=>"pars",
+            "sid"=>"",
+        ],"data"=>[
+            "row"=>["sql-row"],
+            "list"=>[["sql-list"]],
+            "sql"=>"sql",
+            "rule"=>["sql"=>"rule"],
+        ],"path"=>[
+            "log"=>"log",
+            "file"=>""
+        ]]);
+        if ($response->getStatusCode() == 500){
+            throw new \Exception($response->getHeader("Msg"));
+        }
+        return \response($response,200, [
+            "Content-type"=>"application/octet-stream",
+            "Content-Disposition"=>"attachment; filename=测试.xlsx",
+        ]);
+
+        if ($post->status() == 500){
+            throw new Exception($post->header("Msg"));
         }
-        dd($str);
-        $str = rtrim($str,",");
-        $c = DB::connection("oracle")->select(DB::raw("select SUM(qtyordered) s from DOC_ORDER_DETAILS where ORDERNO IN (".$str.")"));
-        dd($c);
+        $test = "test";
+        return response($response->get,200, [
+            "Content-type"=>"application/octet-stream",
+            "Content-Disposition"=>"attachment; filename=".$test."-".date('ymdHis').'.xlsx',
+        ]);
     }
 
     public function mergeCarrier(){
@@ -1266,37 +1329,12 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         dd($requests);
     }
 
-    public function testGetCommodity()
-    {
-        /**
-         * @var CommodityService $commodityService
-         */
-        $ownerIds=['13'];
-        $barcodes = 'BH08B4029E027110';
-        $skus = ['BH08B4029E027110'];
-        $commodityService = app(CommodityService::class);
-        //$commodities=$commodityService->get_($ownerIds,$skus,[],true);
-//        dd($commodities->first());
-        $ownerId=13;
-        $sku='BH08B4029E027110';
-        $commodity=$commodityService->syncBarcodes($barcodes,$ownerId,$sku);
-        dd($commodity);
-    }
-
     public function syncOrderTracking()
     {
+        $startDate = \Illuminate\Support\Carbon::parse('2020-12-12 00:00:00')->toDateTimeString();
         /** @var OrderTrackingService $orderTrackingService */
         $orderTrackingService = app('OrderTrackingService');
-        /** @var OrderService $orderService */
-        $orderService = app(OrderService::class);
-        /*$owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();*/
-        /*$startDate = \Illuminate\Support\Carbon::parse('2020-10-28 00:00:00')->toDateTimeString();*/
-        $orderNos = ['SO201205001735', 'SO201204003891', 'SO201204003706', 'SO201204002877', 'SO201203003771'];
-        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails', 'oracleBASCode'])
-            ->whereIn('orderno', $orderNos)
-            ->get();
-        $orderService->updateByWmsOrders($orderHeaders);
-        $orderTrackingService->createByWmsOrderHeader($orderHeaders);
+        $orderTrackingService->trackingWmsOrder($startDate);
     }
 
     public function testSyncOrderTask(){

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

@@ -174,21 +174,8 @@ class StorageController
         return ["success"=>true];
     }
     public function light(Request $request,$post){
-        $response = Http::post(config('api.haiq.storage.moveBin'),$post);
-        if (!$response->ok()){
-            app('LogService')->log(__METHOD__,"haiq-请求失败,路径异常","REQUEST:".json_encode($this->post)." | RESPONSE:".$response);
-            return ['success'=>false,"data"=>$response->body()];
-        }
-        if (($response["code"] ?? false) && $response["code"] != 200){
-            app('LogService')->log(__METHOD__,"haiq-料箱出库失败","REQUEST:".json_encode($this->post)." | RESPONSE:".$response);
-            return ['success'=>false,"data"=>$response["errMsg"]];
-        }
-       if (($response["status"] ?? false) && $response["status"] == 500){
-           app('LogService')->log(__METHOD__,"haiq-料箱出库失败","REQUEST:".json_encode($this->post)." | RESPONSE:".$response);
-           return ['success'=>false,"data"=>$response["msg"]];
-        }
-        app('LogService')->log(__METHOD__,"haiq-料箱出库成功","REQUEST:".json_encode($this->post)." | RESPONSE:".$response);
-        return ["success"=>true];
+        $response = Http::post(config('api.haiq.storage.light'),$post);
+        return $response->body();
     }
     public function moveBin(Request $request){
         return $this->relocate($request,$this->post);
@@ -203,7 +190,10 @@ class StorageController
         return $this->relocate($request,$this->move);
     }
     public function lightOn(Request $request){
-        return $this->relocate($request,$this->lightOn);
+        return $this->light($request,$this->lightOn);
+    }
+    public function lightOff(Request $request){
+        return $this->light($request,$this->lightOff);
     }
     public function taskUpdate(Request $request){
         $this->service->taskUpdate();

+ 2 - 1
app/Imports/OwnerPriceDirectLogisticDetailImport.php

@@ -35,6 +35,7 @@ class OwnerPriceDirectLogisticDetailImport implements ToCollection,WithHeadingRo
         }
         $row = $collection->first();
         $additional = "续费";
+
         foreach ($row as $key => $str){
             if (mb_strpos($key,$additional) !== false){
                 $row["续费"] = $str;
@@ -42,6 +43,7 @@ class OwnerPriceDirectLogisticDetailImport implements ToCollection,WithHeadingRo
                 break;
             }
         }
+
         $header = [
             "车型","起步费","续费"
         ];
@@ -51,7 +53,6 @@ class OwnerPriceDirectLogisticDetailImport implements ToCollection,WithHeadingRo
                 return false;
             }
         }
-        if ($row)
 
         //车型map
         $map = [];

+ 1 - 2
app/Imports/OwnerPriceLogisticDetailImport.php

@@ -19,7 +19,7 @@ HeadingRowFormatter::default('none');
 class OwnerPriceLogisticDetailImport implements ToCollection,WithHeadingRow
 {
     protected $logistic;
-    public function __construct(OwnerPriceLogistic $logistic = null)
+    public function __construct(OwnerPriceLogistic $logistic)
     {
         $this->logistic = $logistic;
     }
@@ -30,7 +30,6 @@ class OwnerPriceLogisticDetailImport implements ToCollection,WithHeadingRow
     */
     public function collection(Collection $collection)
     {
-
         if (!$this->logistic){
             Cache::put("logistic",["success"=>false, "data"=>"不存在父级"],86400);
             return false;

+ 9 - 15
app/Imports/UpdatePickZone.php

@@ -50,7 +50,7 @@ class UpdatePickZone implements ToCollection,WithHeadingRow
                 $errors[] = "第“" . ($index + 2) . "”行不存在日期";
                 continue;
             }
-            $detail = OracleDOCOrderDetail::query()->select("customerid","sku")
+            $detail = OracleDOCOrderDetail::query()->select("customerid","sku","orderno","orderlineno")
                 ->where("orderno",$item["订单编号"])
                 ->whereHas("sku",function ($query)use($item){
                     /** @var Builder $query */
@@ -84,25 +84,19 @@ class UpdatePickZone implements ToCollection,WithHeadingRow
                 $max = null;
                 $map = [];
                 foreach ($lot as $i => $l){
-                    $qty = (int)$l->quty;
+                    $qty = (int)$l->qty;
                     $map[$qty] = $i;
-                    if ($qty >= (int)$item["数量"] && $qty<=$max)$max = $qty;
-                    if ($qty < (int)$item["数量"] && $qty>=$min)$min = $qty;
+                    if (($qty >= (int)$item["数量"] && $qty<=$max) || $max===null)$max = $qty;
+                    if (($qty < (int)$item["数量"] && $qty>=$min) || $min===null)$min = $qty;
                 }
                 if ($max !== null)$result = $lot[$map[$max]];
                 else $result = $lot[$map[$min]];
             }
             if (count($lot) == 1)$result = $lot[0];
-            if ($result){dd($result);
+            if ($result){
                 try{
-                    $detail->update([
-                        "lotnum" => $result->lotnum,
-                        "pickzone" => $result->pickzone,
-                        "kitreferenceno" => '0',
-                        "d_edi_09" => '0',
-                        "d_edi_10" => '0',
-                    ]);
-                    DB::connection("oracle")->commit();
+                    $sql = "UPDATE DOC_ORDER_DETAILS SET LOTNUM = ?,PICKZONE = ?,KITREFERENCENO = ?,D_EDI_09 = ?,D_EDI_10 = ? WHERE ORDERNO = ? AND ORDERLINENO = ?";
+                    DB::connection("oracle")->update(DB::raw($sql),[$result->lotnum,$result->pickzone,'0','0','0',$detail->orderno,$detail->orderlineno]);
                     LogService::log(__METHOD__,"SUCCESS-指定效期分配修改库位",json_encode($detail)." | ".json_encode($result));
                     $order = app("OrderService")->first(["code"=>$item["订单编号"]]);
                     if (!$order){
@@ -115,8 +109,8 @@ class UpdatePickZone implements ToCollection,WithHeadingRow
                         continue;
                     }
                     $model = app("OrderCommodityAssignService")->create([
-                        "order_id"      =>  1,//$order->id,
-                        "commodity_id"  =>  1,//$barcode->commodity_id,
+                        "order_id"      =>  $order->id,
+                        "commodity_id"  =>  $barcode->commodity_id,
                         "amount"        =>  $item["数量"],
                         "produced_at"   =>  $item["生产日期"],
                         "valid_at"      =>  $item["失效日期"],

+ 2 - 0
app/OrderCommodityAssign.php

@@ -2,10 +2,12 @@
 
 namespace App;
 
+use App\Traits\ModelTimeFormat;
 use Illuminate\Database\Eloquent\Model;
 
 class OrderCommodityAssign extends Model
 {
+    use ModelTimeFormat;
     protected $fillable = [
         "order_id",         //外键订单
         "commodity_id",     //外键商品

+ 2 - 2
app/Services/CommodityBarcodeService.php

@@ -274,8 +274,8 @@ Class CommodityBarcodeService
             });
             return $map;
         })();
-        return CommodityBarcode::query()->with('commodity')->whereHas('commodity', function ($query) use ($owner_id,$sku) {
-            $query->whereIn('owner_id', array_unique($owner_id))->whereIn('sku',array_unique($sku));
+        return CommodityBarcode::query()->with('commodity')->whereIn('commodity_id', function ($query) use ($owner_id,$sku) {
+            $query->from('commodities')->select('id')->whereIn('owner_id', array_unique($owner_id))->whereIn('sku',array_unique($sku));
         })->get();
     }
     public function deleteCommodityBarcode(array $delete_params)

+ 14 - 9
app/Services/CommodityService.php

@@ -101,6 +101,11 @@ Class CommodityService
             if (is_array($barcode)) $builder->whereIn('code', $barcode);
             else $builder->where('code', $barcode);
         });
+        // haozi  2020-12-14
+//        $query->whereIn('id', function ($builder) use ($barcode) {
+//            if (is_array($barcode)) $builder->from('commodity_barcodes')->select('commodity_id')->whereIn('code', $barcode);
+//            else $builder->from('commodity_barcodes')->select('commodity_id')->where('code', $barcode);
+//        });
         return $query;
     }
 
@@ -264,12 +269,12 @@ Class CommodityService
             return $barcodes;
         })();
         //
-        $commodities=$this->get_([$ownerId],[$sku],[],true);
-        if ($commodities->first()){
-            $commodity=$commodities->first();
-        }else{
+//        $commodities=$this->get_([$ownerId],[$sku],[],true);
+//        if ($commodities->first()){
+//            $commodity=$commodities->first();
+//        }else{
             $commodity = $this->firstOrCreate(['owner_id' => $ownerId, 'sku' => $sku]);
-        }
+//        }
         $commodityBarcodes = $commodity['barcodes'] ?? new Collection();
 
 
@@ -784,8 +789,8 @@ Class CommodityService
                     return Cache::remember('commodity_' . $md5, $time, function () use ($skus, $barcodes) {
                         return Commodity::query()
                             ->with(['barcodes', 'owner'])
-                            ->whereHas('barcodes', function ($query) use ($barcodes) {
-                                $query->whereIn('code', $barcodes);
+                            ->whereIn('id', function ($query) use ($barcodes) {
+                                $query->from('commodity_barcodes')->select('commodity_id')->whereIn('code', $barcodes);
                             })
                             ->whereIn('sku', $skus)->get();
                     });
@@ -796,8 +801,8 @@ Class CommodityService
                 sort($barcodes);
                 $commodities = Commodity::query()
                     ->with(['barcodes', 'owner'])
-                    ->whereHas('barcodes', function ($query) use ($barcodes) {
-                        $query->whereIn('code', $barcodes);
+                    ->whereIn('id', function ($query) use ($barcodes) {
+                        $query->from('commodity_barcodes')->select('commodity_id')->whereIn('code', $barcodes);
                     })->get();
                 if ($ownerIds) {
                     sort($ownerIds);

+ 4 - 4
app/Services/OrderService.php

@@ -238,7 +238,7 @@ class OrderService
         ,DOC_ORDER_HEADER.soreference5,DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
        DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG
         ,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,DOC_ORDER_HEADER.OrderTime,DOC_Order_Details.CustomerID,
-       DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,DOC_Order_Details.LineStatus,DOC_Order_Details.OrderLineNo,order_code.codename_c as orderCodeName,
+       DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,DOC_Order_Details.LOTNUM,DOC_Order_Details.LineStatus,DOC_Order_Details.OrderLineNo,order_code.codename_c as orderCodeName,
        order_detail_code.codename_c as orderDetailCodeName,BAS_Customer.descr_c as customer_descr_c,
        BAS_SKU.Alternate_SKU1,BAS_SKU.Descr_C,(select count(*) from DOC_ORDER_HEADER WHERE 1=1";
         $sql=$this->preciseQuery($params,$sql);
@@ -280,7 +280,7 @@ class OrderService
                       DOC_ORDER_HEADER.EDIREMARKS2,DOC_ORDER_HEADER.WaveNo,DOC_ORDER_HEADER.SOReference1, DOC_ORDER_HEADER.soreference5,
                       DOC_ORDER_HEADER.EDISENDFLAG2,DOC_ORDER_HEADER.EDISendTime2,DOC_ORDER_HEADER.Notes,DOC_ORDER_HEADER.ERPCANCELFLAG,
                       DOC_ORDER_HEADER.Picking_Print_Flag,DOC_ORDER_HEADER.EDISENDFLAG,DOC_ORDER_HEADER.ReleaseStatus,DOC_ORDER_HEADER.C_Address1,
-                      DOC_ORDER_HEADER.OrderTime,DOC_Order_Details.CustomerID,DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,
+                      DOC_ORDER_HEADER.OrderTime,DOC_Order_Details.CustomerID,DOC_Order_Details.SKU,DOC_Order_Details.QtyOrdered,DOC_Order_Details.LOTNUM,
                       DOC_Order_Details.LineStatus,DOC_Order_Details.OrderLineNo,order_code.codename_c,order_detail_code.codename_c,BAS_Customer.descr_c,
                       BAS_SKU.Alternate_SKU1,BAS_SKU.Descr_C ORDER BY DOC_ORDER_HEADER.ADDTIME desc";
         return $sql;
@@ -330,12 +330,12 @@ class OrderService
             if (isset($commodities[$order->orderno])){
                 array_push($commodities[$order->orderno],
                     ["sku"=>$order->sku,"alternate_sku1"=>$order->alternate_sku1,"descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered
-                        ,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]);
+                        ,"lotnum"=>$order->lotnum,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]);
                 unset($orders[$index]);
                 continue;
             }
             $commodities[$order->orderno]=[["sku"=>$order->sku,"alternate_sku1"=>$order->alternate_sku1,
-                "descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]];
+                "descr_c"=>$order->descr_c,"qtyordered"=>$order->qtyordered,"lotnum"=>$order->lotnum,"checktime"=>$order->checktime,"orderdetailcodename"=>$order->orderdetailcodename]];
             $orderNos .= ",'".$order->orderno."'";
         }
         $orderNos .= ")";

+ 1 - 1
app/Services/OwnerService.php

@@ -33,7 +33,7 @@ Class OwnerService
 
     public function getSelection($column = ['id'])
     {
-        return $this->cacheService->getOrExecute('OwnersAll_Id',function()use($column){
+        return $this->cacheService->getOrExecute('OwnersAll_'.md5(json_encode($column)),function()use($column){
             return Owner::filterAuthorities()->select($column)->get();
         },config('cache.expirations.owners'));
     }

+ 2 - 2
app/Services/StoreItemService.php

@@ -167,8 +167,8 @@ Class StoreItemService
         if (!$asnDetails) {
             return null;
         }
-        return StoreItems::query()->with('store')->whereHas('store', function ($query) use ($asnDetails) {
-            $query->whereIn('asn_code', array_unique(data_get($asnDetails, '*.asnno')));
+        return StoreItems::query()->with('store')->whereIn('store_id', function ($query) use ($asnDetails) {
+            $query->from('stores')->select('id')->whereIn('asn_code', array_unique(data_get($asnDetails, '*.asnno')));
         })->get();
     }
 

+ 1 - 2
config/api.php

@@ -46,8 +46,7 @@ return [
         'storage'=>[
 //            'relocate' => "http://59.37.126.227:65448/api/haiqEss/gr/relocate",
             'moveBin' => "http://192.168.1.201:2011/api/haiqEss/gr/relocate",  //移动料箱
-            'lightOn' => "http://192.168.1.201:2011/api/ptl/curlPTL",  //亮灯
-            'lightOff' => "",  //灭灯
+            'light' => "http://192.168.1.201:40000/api/haiqEss/ctlPTL",  //控灯
         ],
     ],
 

+ 3 - 0
database/factories/OracleBasSKUFactory.php

@@ -10,6 +10,9 @@ $factory->define(OracleBasSKU::class, function (Faker $faker) {
         'customerid'=>$faker->name,
         'sku' =>$faker->name,
         'descr_c' =>$faker->title(20),
+        'alternate_sku1' =>$faker->name,
+        'alternate_sku2' =>$faker->name,
+        'alternate_sku3' =>$faker->name,
         'packid'=>$faker->name,
         'skulength' =>$faker->numberBetween(1,100),
         'skuwidth'=>$faker->numberBetween(1,100),

+ 3 - 3
database/migrations/2020_12_02_150054_create_order_commodity_assigns_table.php

@@ -8,9 +8,9 @@ class CreateOrderCommodityAssignsTable extends Migration
 {
 
     protected $authorities = [
-        "指定分配",
-        "指定分配-查询",
-        "指定分配-编辑",
+        "订单管理-指定分配",
+        "订单管理-指定分配-查询",
+        "订单管理-指定分配-编辑",
     ];
     /**
      * Run the migrations.

+ 54 - 0
database/migrations/2020_12_12_093011_change_authorities_order_assign.php

@@ -0,0 +1,54 @@
+<?php
+
+use App\Authority;
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeAuthoritiesOrderAssign extends Migration
+{
+
+    protected $changeNames=[
+
+        ["指定分配","订单管理-指定分配"],
+        ["指定分配-查询","订单管理-指定分配-查询"],
+        ["指定分配-编辑","订单管理-指定分配-编辑"],
+        ["商品配置","订单管理-指定分配"],
+        ["商品配置-查询","订单管理-指定分配-查询"],
+        ["商品配置-编辑","订单管理-指定分配-编辑"],
+    ];
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        //修改或没有则添加
+        foreach ($this->changeNames as $namePack){
+            $authority=Authority::where('name',$namePack[0])->orWhere('name',$namePack[1])->first();
+            if(!$authority){
+                (new Authority(['name'=>$namePack[1],'alias_name'=>$namePack[1]]))->save();
+            }elseif($authority['name']==$namePack[0]){
+                $authority['name']=$namePack[1];
+                $authority['alias_name']=$namePack[1];
+                $authority->save();
+            }
+        }
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        //改回旧的
+        foreach ($this->changeNames as $namePack){
+            $authority=Authority::where('name',$namePack[1])->first();
+            $authority['name']=$namePack[0];
+            $authority->save();
+        }
+    }
+}

+ 1 - 1
package-lock.json

@@ -6259,7 +6259,7 @@
         },
         "minimist": {
             "version": "1.2.0",
-            "resolved": "https://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
+            "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
             "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
             "dev": true
         },

+ 1 - 1
phpunit.xml

@@ -34,7 +34,7 @@
         <server name="APP_ENV" value="testing"/>
         <server name="BCRYPT_ROUNDS" value="4"/>
         <server name="CACHE_DRIVER" value="redis"/>
-        <!--<server name="DB_CONNECTION" value="sqlite"/>
+      <!--  <server name="DB_CONNECTION" value="sqlite"/>
         <server name="DB_DATABASE" value=":memory:"/>-->
         <server name="MAIL_DRIVER" value="array"/>
         <server name="QUEUE_CONNECTION" value="sync"/>

+ 5 - 0
resources/js/queryForm/export.js

@@ -4,6 +4,11 @@ function excelExport(checkAllSign,checkData,url,sum,token,reservation = null) {
         if (sum > 10000){
             if (!confirm('导出条数超过一万条,耗时可能过长,您确定继续吗?'))return;
         }
+        if (sum > 1000000){
+            tempTip.setDuration(3000);
+            tempTip.showSuccess('导出条数超过百万条,超出最大执行条目!');
+            return;
+        }
         let thisUrl=document.URL;
         let parameter=thisUrl.split('?',2);
         url += "?checkAllSign=true";

+ 3 - 3
resources/views/inventory/stockInventory/inventoryMission.blade.php

@@ -222,7 +222,7 @@
 
                     <span class="form-group ml-4" v-if="dataExtraStatus.addingNew&&addInventoryMission" id="countBlock">
                         <label for="count" class="text-secondary font-weight-bold">请输盘点数</label>
-                        <input type="text" id="amountInput"  @keypress="amountPress($event)"
+                        <input type="number" id="amountInput"  @keypress="amountPress($event)"
                                name="count" class="form-control input" value="@if(old('count')){{old('count')}}@endif"  autocomplete="off">
                     </span>
                     <span type="button" class="btn btn-sm btn-outline-danger col-md-2 form-group ml-4" v-if="location" style="max-width: 160px" @click="stockInventoryByLocation()">盘点该库位下所有记录</span>
@@ -251,7 +251,7 @@
                         </tr>
                         <tr  class="selectingRow" id="blueTrPc">
                             <td>
-                                <input type="text"  onkeypress="listVue.selectingRow(event)" name="amount" class="form-control-sm blueAmountPc"   autocomplete="off"  oninput="inputs.amount=event.target.value">
+                                <input type="number"  onkeypress="listVue.selectingRow(event)" name="amount" class="form-control-sm blueAmountPc"   autocomplete="off"  oninput="inputs.amount=event.target.value">
                             </td>
                             <td>
                                 <span class="btn btn-sm btn-outline-primary stockButtonPc"  onclick="listVue.盘点选中任务(event)">选定盘点</span>
@@ -281,7 +281,7 @@
                                 <div>
                                     <span  class="mr-3 text-nowrap"><span class="font-weight-bold">输入盘点数:</span>
                                         <span>
-                                                <input type="text"  onkeypress="listVue.selectingRow(event)" name="amount" class="form-control-sm blueAmount"  autocomplete="off"  oninput="inputs.amount=event.target.value">
+                                                <input type="number"  onkeypress="listVue.selectingRow(event)" name="amount" class="form-control-sm blueAmount"  autocomplete="off"  oninput="inputs.amount=event.target.value">
                                         </span>
                                     </span>
                                     <span class="mr-3 text-nowrap"><span class="font-weight-bold">操作:</span><span class="btn btn-sm btn-outline-primary stockButton" onclick="listVue.盘点选中任务(event)">选定盘点</span></span>

+ 2 - 2
resources/views/maintenance/priceModel/logistic/index.blade.php

@@ -191,7 +191,7 @@
                     }
                     let formData = new FormData();
                     formData.append("file",file);
-                    formData.append("id",this.id);
+                    formData.append("id",this.models[this.index]["id"]);
                     window.tempTip.setIndex(1099);
                     window.tempTip.setDuration(9999);
                     window.tempTip.waitingTip("执行中,请耐心等候......");
@@ -304,4 +304,4 @@
             },
         });
     </script>
-@stop
+@stop

+ 5 - 3
resources/views/order/index/delivering.blade.php

@@ -101,7 +101,7 @@
                         <td class="text-nowrap"> @{{ order.warehouseid }}</td>
                         <td class="text-nowrap"><span v-if="order.edisendflag2=='Y'">是</span><span v-if="order.edisendflag2=='N'">否</span><span v-if="order.edisendflag2=='W'">错误</span></td>
                         <td class="text-nowrap">@{{ order.edisendtime2 }}</td>
-                        <td colspan="6" class="text-center">
+                        <td colspan="7" class="text-center">
                             <table v-if="commodities[order.orderno]&&commodities[order.orderno].length==1 || isBtn[order.orderno]" class="table text-nowrap table-sm">
                                 <tr v-for="oracleDOCOrderDetail in commodities[order.orderno]">
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.sku }}</div></td>
@@ -111,12 +111,13 @@
                                         <div class="text-nowrap tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起全部">@{{ oracleDOCOrderDetail.descr_c  }}</div>
 {{--                                        <div :title="oracleDOCOrderDetail.descr_c" class="tooltipTarget" style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.descr_c }}</div>--}}
                                     </td>
-                                    <td>@{{ oracleDOCOrderDetail.qtyordered }}</td>
+                                    <td><div style="min-width: 100px">@{{ oracleDOCOrderDetail.qtyordered }}</div></td>
+                                    <td><div style="min-width: 150px">@{{ oracleDOCOrderDetail.lotnum }}</div></td>
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.orderdetailcodename }}</div></td>
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.checktime }}</div></td>
                                 </tr>
                                 <tr v-if="isBtn[order.orderno]">
-                                    <td colspan="6">
+                                    <td colspan="7">
                                         <b style="cursor:pointer;color: #4aa0e6;" @click="isBtn[order.orderno]=false;">点击收起明细</b>
                                     </td>
                                 </tr>
@@ -364,6 +365,7 @@
                     {name:'alternate_sku1',value: '产品条码', neglect: true, style:"min-width: 150px"},
                     {name:'descr_c',value: '产品名称', neglect: true, style:"min-width: 180px"},
                     {name:'qtyordered',value: '订单数量', neglect: true},
+                    {name:'lotnum',value: '批次号', style:"min-width: 150px"},
                     {name:'orderdetailcodename',value: '明细状态', neglect: true, style:"min-width: 150px"},
                     {name:'checktime',value: '复核时间', neglect: true},
                     {name:'notes',value: '备注', style:"min-width: 260px"},

+ 1 - 1
resources/views/order/index/menu.blade.php

@@ -8,7 +8,7 @@
                     <li class="nav-item">
                         <a class="nav-link" href="{{url('order/index/delivering')}}" :class="{active:isActive('delivering',3)}">查询</a>
                     </li> @endcan
-                @can('指定分配')
+                @can('订单管理-指定分配')
                     <li class="nav-item">
                         <a class="nav-link" href="{{url('order/index/commodityAssign')}}" :class="{active:isActive('commodityAssign',3)}">指定分配</a>
                     </li> @endcan

+ 28 - 4
resources/views/station/monitor/_svg.blade.php

@@ -1,5 +1,5 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="blue-cube"
-     viewBox="68 30 180 220" {{--style="transform: rotate3d(0,0,60,40deg)"--}}>
+{{--<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="blue-cube"
+     viewBox="68 30 180 220" --}}{{--style="transform: rotate3d(0,0,60,40deg)"--}}{{-->
     <defs>
         <g id="cube" style="fill-opacity: .9;stroke-miterlimit: 0;">
             <rect width="21" height="24" fill="#fff" stroke="#0079ad"
@@ -20,6 +20,30 @@
                   transform="scale(1.41,.81) rotate(45) translate(0 -21)" />
         </g>
     </defs>
-    <use v-for="box in boxes" xlink:href="#cube" :x="box.x" :y="box.y" />
+    <use v-for="box in boxes" :xlink:href="box.sign ? '#exceptionCube' : '#cube'" :x="box.x" :y="box.y" />
+</svg>--}}
 
-</svg>
+
+<svg width="579.9997059770881" height="399.999797225578" xmlns="http://www.w3.org/2000/svg">
+    <g>
+        <title>background</title>
+        <rect height="402" width="582" y="-1" x="-1" fill="#fff" id="canvas_background"/>
+        <g y="0" x="0" height="100%" width="100%" display="none" overflow="visible" id="canvasGrid">
+            <rect height="100%" width="100%" y="0" x="0" stroke-width="0" fill="url(#gridpattern)"/>
+        </g>
+    </g>
+    <g>
+        <title>Layer 1</title>
+        <line y2="228.67" x2="335.5" y1="229.67" x1="176.5" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_1"/>
+        <line y2="267.67" x2="177.5" y1="229.67" x1="177.5" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_4"/>
+        <line y2="266.67" x2="334.5" y1="229.67" x1="334.5" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_8"/>
+        <line y2="146.17" x2="190.5" y1="230.17" x1="176.5" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_10"/>
+        <line y2="228.67" x2="334.5" y1="141.67" x1="316.5" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" fill="none" id="svg_13"/>
+        <line y2="264.67" x2="334.5" y1="265.67" x1="177.5" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_14"/>
+        <line y2="145.835" x2="317.751" y1="146.835" x1="191.252" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_15"/>
+        <line y2="229.334" x2="334.25" y1="144.835" x1="317.751" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_16"/>
+        <line y2="181.835" x2="324.75" y1="182.335" x1="185.252" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_17"/>
+        <line y2="228.834" x2="224.751" y1="147.335" x1="231.751" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_18"/>
+        <line y2="228.834" x2="280.751" y1="145.835" x1="279.251" stroke-width="1.5" stroke-linejoin="undefined" stroke-linecap="undefined" stroke="#0000ff" fill="none" id="svg_19"/>
+    </g>
+</svg>

+ 4 - 3
resources/views/station/monitor/show.blade.php

@@ -40,7 +40,7 @@
                         </div>
                         <div class="row pt-2">
                             <div class="col">
-                                {{--@include("station.monitor._svg")--}}
+{{--                                @include("station.monitor._svg")--}}
                                 <img src="{{asset('images/demoBin.png')}}" alt="" class="img">
                             </div>
                         </div>
@@ -130,7 +130,7 @@
                 });
                 this._broadcast();
                 this._renderingWall(this.wall.amount,this.wall.row,this.wall.column);
-                this._renderingBox(2,4);
+               /* this._renderingBox(3,5);*/
             },
             methods:{
                 _broadcast(){
@@ -198,7 +198,8 @@
                     let boxes = [];
                     for (let i=0;i<column;i++){
                         for (let j=row-1;j>=0;j--){
-                            boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height)});
+                            if (boxes.length===5) boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height),sign:true});
+                            else boxes.push({x:((i+j)*width)+x,y:(y+(i*height))-(j*height),sign:false});
                         }
                     }
                     this.boxes = boxes;

+ 0 - 2
tests/Services/CommodityService/GetCommodityByOwnerCodeAndSKUTest.php

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

+ 0 - 1
tests/Services/CommodityService/GetParamsByBasSKUTest.php

@@ -12,7 +12,6 @@ use Tests\TestCase;
 
 class GetParamsByBasSKUTest extends TestCase
 {
-    use RefreshDatabase;
     /** @var CommodityService $service */
     private $service;
     private $data = [];

+ 61 - 0
tests/Services/CommodityService/Get_Test.php

@@ -0,0 +1,61 @@
+<?php
+
+
+namespace Tests\Services\CommodityService;
+
+
+use App\Commodity;
+use App\CommodityBarcode;
+use App\OracleBasSKU;
+use App\Owner;
+use App\Services\CommodityService;
+use Tests\TestCase;
+
+class Get_Test extends TestCase
+{
+    /** @var CommodityService $service */
+    private $service;
+    private $data = [];
+    private $owner_id;
+    public function setUp(): void
+    {
+        parent::setUp(); // TODO: Change the autogenerated stub
+        cache()->flush();
+        $this->service = app('CommodityService');
+        $owner =  factory(Owner::class)->create();
+        $commodity=factory(Commodity::class)->create(['owner_id'=>$owner->id]);
+        $this->data['owner'] = $owner;
+        $this->data['commodity'] = $commodity;
+        $this->data['basSku']=OracleBasSKU::query()->orderByDesc('edittime')->first();
+    }
+
+    public function testGet_OnlyOwnerIds()
+    {
+        $commodities=$this->service->get_([$this->data['commodity']['owner_id']]);
+        $this->assertNotNull($commodities);
+        $this->assertEquals($this->data['commodity']['sku'],$commodities->first()['sku']);
+    }
+    public function testGet_HasOwnerIdsAndSkus()
+    {
+        $commodities=$this->service->get_([$this->data['commodity']['owner_id']],[$this->data['commodity']['sku']]);
+        $this->assertEquals(1,count($commodities));
+    }
+    public function testGet_SyncAndSelect()
+    {
+        if ($this->data['basSku']) $this->assertNotNull($this->data['basSku']);
+        $this->owner_id=Owner::query()->where('code',$this->data['basSku']['customerid'])->value('id');
+        $commodities=$this->service->get_([ $this->owner_id],[$this->data['basSku']['sku']],[],true);
+        $this->assertEquals($this->data['basSku']['sku'],$commodities->first()['sku']);
+    }
+
+    public function tearDown(): void
+    {
+        $this->data['owner']->delete();
+        $this->data['commodity']->delete();
+        $commodity_id=Commodity::query()->where('owner_id',$this->owner_id)->value('id');
+        Commodity::query()->where('id',$commodity_id)->delete();
+        CommodityBarcode::query()->where('commodity_id',$commodity_id)->delete();
+        cache()->flush();
+        parent::tearDown(); // TODO: Change the autogenerated stub
+    }
+}

+ 3 - 0
tests/webApi/thirdPart/haiq/storage.http

@@ -10,6 +10,9 @@ POST http://bswas/api/thirdPart/haiq/storage/moveBinM
 ###
 POST http://bswas/api/thirdPart/haiq/storage/moveBinIn
 
+###
+POST http://bswas/api/thirdPart/haiq/storage/lightOn
+
 ###