Bladeren bron

Merge branch 'master' into Haozi

# Conflicts:
#	public/css/app.css
#	public/js/app.js
haozi 5 jaren geleden
bovenliggende
commit
3b08a639e1

+ 1 - 1
app/Commodity.php

@@ -9,7 +9,7 @@ use App\Traits\ModelTimeFormat;
 class Commodity extends Model
 {
     use ModelTimeFormat;
-    protected $fillable=['name','sku','owner_id','created_at','length','width','height','volumn'];
+    protected $fillable=['name','sku','owner_id','created_at','length','width','height','volumn',"type"];
     protected $appends=['barcode'];
 //    protected $appends=['barcode','owner_name','owner_code'];
 

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

@@ -176,11 +176,12 @@ class CommodityController extends Controller
         return ['success'=>true];
     }
 
-
-    public function syncOwnerCommodities($owner_id,$owner_code,$sku = null){
+    //通过货主与SKU同步 WMS商品至本地 有则比对修正,无则录入
+    public function syncOwnerCommodities($owner_id,$owner_code,$sku = null, $barcode = null){
         ini_set('max_execution_time', '0');
         $params = ['customerid' => $owner_code];
         if ($sku) $params['sku'] = $sku;
+        if ($barcode) $params['alternate_sku1'] = $barcode;
 
         /** @var OracleBasSkuService $oracleBasSkuService */
         $oracleBasSkuService = app('oracleBasSkuService');

+ 28 - 6
app/Http/Controllers/StoreCheckingReceiveController.php

@@ -63,7 +63,7 @@ class StoreCheckingReceiveController extends Controller
     }
 
     public function insertItem(Request $request){
-        if(!Gate::allows('入库管理-盘收一体-盘收-查看')){ return ['success'=>false, 'data'=>'无权操作!'];  }
+        if(!Gate::allows('入库管理-盘收一体-盘收-编辑')){ return ['success'=>false, 'data'=>'无权操作!'];  }
         $mission_id = $request->mission_id ?? false;
         $goods = $request->goods ?? false;
         if (!($goods["amount"] ?? false))$goods["amount"] = 1;
@@ -135,14 +135,36 @@ class StoreCheckingReceiveController extends Controller
             }
             return ['success'=>true, 'type'=>"update", 'data'=>$item];
         }
-        $commodity_barcode = app('commodityBarcodeService')->first([
-            'code' => $goods['barcode'],
-        ]);
-        if (!$commodity_barcode) return ['success'=>false, 'data'=>'该条码未找到对应商品'];
+        $commodity = app('commodityService')->ownerBarcodeSeekCommodityFirst(['id'=>$storeCheckingReceive->owner_id], $goods['barcode']);
+        if (!$commodity) {
+            if (!$storeCheckingReceive->owner) return ['success'=>false, 'data'=>'未找到货主'];
+            $basSku = app('oracleBasSkuService')->first(['customerid'=>$storeCheckingReceive->owner->code, "barcode"=>$goods['barcode']]);
+            if ($basSku){
+                $commodity = app('commodityService')->firstOrCreate(['owner_id'=>$storeCheckingReceive->owner_id, 'sku'=>$basSku->sku],[
+                    "name"=>$basSku->descr_c,
+                    "sku"=>$basSku->sku,
+                    "owner_id"=>$storeCheckingReceive->owner_id,
+                    'length' => $basSku->skulength,
+                    'width' => $basSku->skuwidth,
+                    'height' => $basSku->skuhigh,
+                    'volumn' => $basSku->cube
+                ]);
+                if ($commodity) app('commodityBarcodeService')->firstOrCreate(['commodity_id'=>$commodity->id, 'code'=>$goods['barcode']]);
+            }else{
+                $commodity = app('commodityService')->createTemporaryCommodity([
+                    "sku"=>$goods['barcode'],
+                    "owner_id"=>$storeCheckingReceive->owner_id,
+                ]);
+                app('commodityBarcodeService')->create([
+                    "commodity_id"=>$commodity->id,
+                    "code" => $goods['barcode'],
+                ]);
+            }
+        };
         $item = app('storeCheckingReceiveItemService')->create([
             'store_checking_receive_id' => $mission_id,
             'bin_number' => $goods['bin_number'],
-            'commodity_id' => $commodity_barcode->commodity_id,
+            'commodity_id' => $commodity->id,
             'imported_amount' => 0,
             'imported_diff_amount' => $goods['amount'],
             'produced_at' => $goods['produce_date'],

+ 37 - 52
app/Http/Controllers/TestController.php

@@ -523,40 +523,12 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
     }
 
     public function test2(){
-        ini_set('max_execution_time',2500);
-        ini_set('memory_limit','1526M');
-        $logs = Log::query()
-        ->where('created_at','<','2020-09-30 18:00:36')
-        ->where('operation','App\Services\common\BatchUpdateService::batchUpdateItself')
-        ->where('id','9865536')->get();
-        $arr = [];
-        foreach ($logs as $log){
-            $str1 = mb_strlen("批量更新失败 SQL:(");
-            $str2 = mb_strripos($log->description,") 堆栈:");
-            $str = mb_substr($log->description,$str1,$str2-$str1);
-            dd($str);
-            $sign = "END WHERE commodity_id IN (";
-            $str3 = mb_strripos($str,$sign);
-            $str = substr($str,$str3+strlen($sign));
-            $str = substr($str,0,strlen($str)-1);
-            $arr = array_merge($arr,explode(',',$str));
-            /*try{
-                DB::select(DB::raw($str));
-                LogService::log(__METHOD__,"纠正商品-SQL执行BUG",$str);
-            }catch(\Exception $e){
-                LogService::log(__METHOD__,"纠正商品-SQL执行BUG-失败",$str." | 堆栈:". $e->getMessage() . $e->getTraceAsString());
-            }*/
-        }
-        $comId = [];
-        $logs = Log::query()
-            ->where('type','纠正商品-删除无用商品')->get();
-        foreach ($logs as $log){
-            $comId = array_merge($comId,explode(',',substr($log->description,1,strlen($log->description)-2)));
-        }
-        dd(array_diff($comId,$arr));
-        $si = [276705,277352,252318,313660,313687,313500,258354];
-
-        dd($arr);
+        $owner = Owner::where('name','B站')->first();
+        $commodities = Commodity::query()->where('owner_id',$owner->id)->get();
+        $comID = array_column($commodities->toArray(),'id');
+        CommodityBarcode::query()->whereIn('commodity_id',$comID)->delete();
+        Commodity::destroy($comID);
+        return $comID;
     }
 
     /*1*/
@@ -618,29 +590,16 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
 
     public function test3()
     {
-        /** @var DataHandlerService $dataHandlerService */
-        $dataHandlerService = app('dataHandlerService');
-        $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
         /** @var OrderTrackingService $orderTrackingService */
-        $orderTrackingService  = app('orderTrackingService');
+        $orderTrackingService = app('orderTrackingService');
         /** @var OrderService $orderService */
         $orderService = app(OrderService::class);
-        /** @var OracleDOCOrderHeaderService $orderHeaderService */
-        $orderHeaderService = app(OracleDOCOrderHeaderService::class);
-        /** @var OracleDOCOrderHeader $orderHeaders */
-//        $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
-        //$orderTrackingService->trackingWmsOrder($startDate);
         $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
         $startDate = \Illuminate\Support\Carbon::parse('2020-09-30 00:00:00')->toDateTimeString();
-//        $endData = \Illuminate\Support\Carbon::parse('2020-09-29 00:00:00')->toDateTimeString();
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('addTime','>=',$startDate)
-//            ->where('addTime','<=',$endData)
-            ->whereIn('customerID',data_get($owners,'*.code'))
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails', 'oracleBASCode'])
+            ->where('addTime', '>=', $startDate)
+            ->whereIn('customerID', data_get($owners, '*.code'))
             ->get();
-//        dd($orderHeaders);
-//        $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
         $orderService->createByWmsOrder($orderHeaders);
         $orderTrackingService->createByWmsOrderHeader($orderHeaders);
         $orderService->updateByWmsOrders($orderHeaders);
@@ -651,6 +610,7 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
         dd(Request::all());
         $users=User::query();
     }
+
     public function orderTrckingOwnerAll(){
         $owners = Owner::all();
         foreach ($owners as $owner) {
@@ -672,6 +632,31 @@ where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owne
             $order_code = $order->client_code;
             $orderTracking->update(['order_client_code'=>$order_code]);
         }
-     }
+    }
+
+    public function deleteWmsOrderIsCancel()
+    {
+        $startDate = \Illuminate\Support\Carbon::parse('2020-09-01 00:00:00')->toDateTimeString();
+        $endDate = \Illuminate\Support\Carbon::parse('2020-10-13 00:00:00')->toDateTimeString();
+        $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
+            ->where('addTime','>=',$startDate)
+            ->where('addTime','<=',$endDate)
+            ->whereIn('customerID',data_get($owners,'*.code'))
+            ->get();
+        app(OrderTrackingService::class)->删除订单追踪_订单取消($orderHeaders);
+    }
+
+    public function deleteRedundantOrderTrackingAndOrderInfo()
+    {
+        $startDate = \Illuminate\Support\Carbon::parse('2020-10-01 00:00:00')->toDateTimeString();
+        $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
+            ->where('addTime','>=',$startDate)
+            ->whereIn('customerID',data_get($owners,'*.code'))
+            ->get();
+        app(OrderPackageService::class)->删除多余的订单包裹_根据WMS订单($orderHeaders);
+    }
+
 
 }

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

@@ -19,18 +19,20 @@ class StorageController
             "qty" => 9,//数量
         ];
         $bin = [
-            "taskCode" => "TEST-BS2010100001",//任务编号
+            "taskCode" => "TEST-BS2010100001",//任务编号 全局唯一
             "binCode" => "TEST-BIN01",//料箱编码
+            "toWorkStation" => "TEST-HQ01",//出库工作站
+            "fromWorkStation" => "TEST-HQ01",//回库工作站
             "fromLocCode" => "TEST-J04-058-3",//源库位编码
             "toLocCode" => "TEST-J24-128-7",//目标库位编码 出库填多个,表示这些库位都可以支持
             "sequence" => -1,//出库顺序 -1表示没有顺序,只有移库出库时需要指定顺序,其他可为-1
             "stockInfo" => [$stockInfo],//商品信息
         ];
         $this->request = [[
-            "groupCode" => 1,//组号/波次号 决定了出库的顺序,越大优先级越高
-            "taskMode" => 1,//任务模式 1(拣货出库) 2(入库指定料箱出库) 3(盘点出库) 4(移库出库) 5(入库不指定料箱出库)
-            "priority" => 99,//优先级 1-100 1最低
-            "sequenceFlag" => -1,//出库顺序 -1表示没有顺序,只有移库出库时需要指定顺序,其他可为-1
+            "groupCode" => 1,//组号/波次号 一组任务需要一起完成,再开始下一组任务;没有组任务的限制默认传-1或空
+            "taskMode" => 1,//任务模式 值 1 (输送线入库)值 2 (输送线出库)值 3(货架到缓存货架)值4(货架到流利货架)
+            "priority" => 99,//优先级 1-2147483647 1最低
+            "sequenceFlag" => -1,//是否需要有序 1:需要有序 0:不需要有序
             "bins" => [$bin],//可执行货箱任务
         ]];
     }

+ 123 - 93
app/Imports/StoreCheckingReceiveImport.php

@@ -2,6 +2,8 @@
 
 namespace App\Imports;
 
+use App\Http\Controllers\CommodityController;
+use App\Services\CommodityBarcodeService;
 use App\Services\CommodityService;
 use App\Services\LogService;
 use Carbon\Carbon;
@@ -40,7 +42,7 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
         //去重 筛选 错误
         foreach ($collection as $index => $item){
             if (!$owner_name && $item["货主"]) $owner_name = $item["货主"];
-            if (!$item["条码"] || !$item["数量"] || !is_numeric($item["数量"])){
+            if (!$item["条码"] || !is_numeric($item["数量"])){
                 array_push($errors,($index+2)." 行:条码或数量不存在");
                 continue;
             }
@@ -72,13 +74,18 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             }
             $isUniqueCommodity = isset($commodities[$item["条码"]]);
             if ($isUniqueCommodity){
-                $line = &$items[$commodities[$item["条码"]]];
-                if ($line["produced_at"] == $item["生产日期"] && $line["invalid_at"] == $item["失效日期"]
-                    && $line["batch_code"] == $item["批号"] && $line["unique_code"] == $item["唯一码"]) {
-                    $line["imported_amount"] += $item["数量"];
-                    array_push($errors, ($index + 2) . " 行:重复数据已合并数量");
-                    continue;
+                $sign = false;
+                foreach ($commodities[$item["条码"]] as $i){
+                    $line = &$items[$i];
+                    if ($line["produced_at"] == $item["生产日期"] && $line["invalid_at"] == $item["失效日期"]
+                        && $line["batch_code"] == $item["批号"] && $line["unique_code"] == $item["唯一码"]) {
+                        $line["imported_amount"] += $item["数量"];
+                        array_push($errors, ($index + 2) . " 行:重复数据已合并数量");
+                        $sign = true;
+                        break;
+                    }
                 }
+                if ($sign) continue;
             }
             array_push($items,[
                 "imported_amount" => $item["数量"],
@@ -89,16 +96,15 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
                 "SKU" => $item["SKU"],
                 "商品名称" => $item["商品名称"],
                 "条码" => $item["条码"],
-                "lineno" => $index+2,
             ]);
             if ($isUniqueCommodity){
-                if (is_array($commodities[$item["条码"]])) array_push($commodities[$item["条码"]], count($items)-1);
-                else $commodities[$item["条码"]] = [$commodities[$item["条码"]], count($items)-1];
+                array_push($commodities[$item["条码"]], count($items)-1);
             }else{
-                $commodities[$item["条码"]] = count($items)-1 ;
+                $commodities[$item["条码"]] = [count($items)-1] ;
                 array_push($barcodes,$item["条码"]);
             }
         }
+
         //不存在货主
         if (!$owner_name){
             Cache::put("storeCheckingReceive",["success"=>false, "data"=>"货主为空,不允许录入,至少为一行标明货主!"],86400);
@@ -106,107 +112,131 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
         }
         $owner = app('ownerService')->firstOrCreate(["name"=>$owner_name],["name"=>$owner_name, "code"=>$owner_name]);
 
-        //使用条码获取商品ID
-        $commodityBarCodes = app('commodityBarcodeService')->getCommodities($barcodes, $owner->id);
+        //使用条码同步
+        $commodityController = new CommodityController();
+        $commodityController->syncOwnerCommodities($owner->id, $owner->code, null,$barcodes);
+
+        //使用条码获取商品ID,筛选出需要录入条码项
+        /** @var CommodityBarcodeService $commodityBarcodeService */
+        $commodityBarcodeService = app('commodityBarcodeService');
+        $commodityBarCodes = $commodityBarcodeService->getCommodities($barcodes, $owner->id);
         foreach ($commodityBarCodes as $barcode){
-            if (!is_array($commodities[$barcode->code])){
-                $commodities[$barcode->code] = [$commodities[$barcode->code]];
-            }
             foreach ($commodities[$barcode->code] as $index){
                 $items[$index]["commodity_id"] = $barcode->commodity_id;
                 unset($items[$index]["SKU"]);
                 unset($items[$index]["商品名称"]);
                 unset($items[$index]["条码"]);
-                unset($items[$index]["lineno"]);
             }
             unset($commodities[$barcode->code]);
         }
 
-        //填充商品ID,未找到项流转下一步,空SKU删除该行并返回错误
-        $skus = [];
-        $skuParam = [];
-        foreach ($commodities as $key => $value){
-            if (!is_array($value)){
-                $value = [$value];
+        if (count($commodities) > 0){
+            //获取SKU,将已存在的商品补录条码
+            $skus = [];
+            $skuMap = [];
+            foreach ($commodities as $arr){
+                foreach ($arr as $index){
+                    $item = $items[$index];
+                    if ($item['SKU']){
+                        $skus[] = $item['SKU'];
+                        //sku对应多个条码
+                        if (isset($skuMap[$item['SKU']]))$skuMap[$item['SKU']][] = $item['条码'];
+                        else $skuMap[$item['SKU']] = [$item['条码']];
+                    } else {
+                        $skus[] = $item['条码'];
+                        //sku对应多个条码
+                        if (isset($skuMap[$item['条码']]))$skuMap[$item['SKU']][] = $item['条码'];
+                        else $skuMap[$item['条码']] = [$item['条码']];
+                    }
+                }
             }
-            foreach ($value as $i => $index){
-                if (!$items[$index]["SKU"]){
-                    array_push($errors, ($items[$index]["lineno"]) . " 行:条码未找到商品时SKU不得为空");
-                    unset($items[$index]);
-                    if ($i == count($value)-1) unset($commodities[$key]);
-                    continue;
+            $commoditiesTem = app('commodityService')->get(['owner_id'=>$owner->id, 'sku'=>$skus]);
+
+            if (count($commoditiesTem) > 0){
+                $barcodes = [];
+                $date = Carbon::now();
+                foreach ($commoditiesTem as $item){
+                    //对比本地与导入的存在商品中条码差异 补充数据库
+                    foreach (array_unique(array_diff($skuMap[$item->sku], $item->barcodes)) as $code){
+                        $barcodes[] = [
+                            'commodity_id' => $item->id,
+                            'code' => $code,
+                            'created_at' => $date,
+                        ];
+                        foreach ($commodities[$code] as $index){
+                            $items[$index]["commodity_id"] = $item->id;
+                            unset($items[$index]["SKU"]);
+                            unset($items[$index]["商品名称"]);
+                            unset($items[$index]["条码"]);
+                        }
+                        unset($commodities[$code]);
+                    }
                 }
-                if (isset($skus[$items[$index]["SKU"]])) array_push($skus, $index);
-                else{
-                    $skus[$items[$index]["SKU"]] = [$index];
-                    array_push($skuParam,$items[$index]["SKU"]);
+                if (count($barcodes) > 0){
+                    $commodityBarcodeService->insert($barcodes);
+                    LogService::log(__METHOD__,"盘收导入补录条码",json_encode($barcodes));
                 }
             }
-        }
 
-        //使用货主+SKU获取商品ID,将条码补录
-        $barcodes = [];
-        /** @var CommodityService $commodityService */
-        $commodityService = app('commodityService');
-        if (count($skuParam) > 0)$commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
-        foreach ($commodities as $commodity){
-            foreach ($skus[$commodity->sku] as $i => $index){
-                $items[$index]["commodity_id"] = $commodity->id;
-                if ($i == 0){
-                    array_push($barcodes,[
-                        "code" => $items[$index]["条码"],
-                        "commodity_id" => $commodity->id,
-                        "created_at" => date('Y-m-d H:i:s')
-                    ]);
+            //WMS与本地皆不存在的商品 录入为临时商品
+            if (count($commodities) > 0){
+                $createCommodities = [];
+                $skus = [];
+                $skuMap = [];
+                $date = Carbon::now();
+                foreach ($commodities as $arr){
+                    foreach ($arr as $index){
+                        $item = $items[$index];
+                        if ($item["SKU"]) $sku = $item["SKU"];
+                        else $sku = $item["条码"];
+
+                        if (isset($skuMap[$sku])) $skuMap[$sku][] = $index;
+                        else {
+                            $skuMap[$sku] = [$index];
+                            $skus = $sku;
+
+                            $commodity = [
+                                "name" => $item["商品名称"],
+                                "sku" => $sku,
+                                "owner_id" => $owner->id,
+                                "type" => "临时",
+                                "created_at" => $date,
+                            ];
+                            $createCommodities[] = $commodity;
+                        }
+                    }
                 }
-                unset($items[$index]["SKU"]);
-                unset($items[$index]["商品名称"]);
-                unset($items[$index]["条码"]);
-                unset($items[$index]["lineno"]);
-            }
-            unset($skus[$commodity->sku]);
-        }
-        if (count($barcodes) > 0) app('commodityBarcodeService')->insert($barcodes);
 
-        //未找到商品录入商品
-        $commodities = [];
-        $skuParam = [];
-        $barcodes = [];
-        foreach ($skus as $sku => $arr){
-            $data = &$items[$arr[0]];
-            array_push($commodities,[
-                "name" => $data["商品名称"],
-                "sku" => $data["SKU"],
-                "owner_id" => $owner->id,
-                "created_at" => date('Y-m-d H:i:s'),
-            ]);
-            array_push($skuParam, $sku);
-        }
-        if (count($commodities) > 0){
-            $commodityService->insert($commodities);
-            LogService::log(__METHOD__,"导入盘收任务-批量录入商品",json_encode($commodities,JSON_UNESCAPED_UNICODE));
-        }
-        if (count($skuParam) > 0)$commodities = $commodityService->get(["owner_id"=>$owner->id,"sku"=>$skuParam]);
-        foreach ($commodities as $commodity){
-            foreach ($skus[$commodity->sku] as $i => $index){
-                $items[$index]["commodity_id"] = $commodity->id;
-                if ($i == 0){
-                    array_push($barcodes,[
-                        "code" => $items[$index]["条码"],
-                        "commodity_id" => $commodity->id,
-                        "created_at" => date('Y-m-d H:i:s')
-                    ]);
+                //录入商品
+                if (count($createCommodities) > 0){
+                    /** @var CommodityService $commodityService */
+                    $commodityService = app('commodityService');
+                    $commodityService->insert($createCommodities);
+                    LogService::log(__METHOD__,"盘收录入临时商品",json_encode($createCommodities,JSON_UNESCAPED_UNICODE));
+
+                    //拿到商品ID录入条码
+                    $barcodes = [];
+                    $date = Carbon::now();
+                    $commoditiesTem = $commodityService->get(['owner_id'=>$owner->id, 'sku'=>$skus]);
+                    foreach ($commoditiesTem as $item){
+                        foreach ($skuMap[$item->sku] as $index){
+                            $barcodes[] = [
+                                'commodity_id' => $item->id,
+                                'code' => $items[$index]["条码"],
+                                'created_at' => $date,
+                            ];
+                            $items[$index]["commodity_id"] = $item->id;
+                            unset($items[$index]["SKU"]);
+                            unset($items[$index]["商品名称"]);
+                            unset($items[$index]["条码"]);
+                        }
+                    }
+                    if (count($barcodes) > 0){
+                        $commodityBarcodeService->insert(array_unique($barcodes));
+                        LogService::log(__METHOD__,"盘收导入录入条码",json_encode($barcodes));
+                    }
                 }
-                unset($items[$index]["SKU"]);
-                unset($items[$index]["商品名称"]);
-                unset($items[$index]["条码"]);
-                unset($items[$index]["lineno"]);
             }
-            unset($skus[$commodity->sku]);
-        }
-        if (count($barcodes) > 0){
-            app('commodityBarcodeService')->insert($barcodes);
-            LogService::log(__METHOD__,"导入盘收任务-批量录入商品条码",json_encode($barcodes,JSON_UNESCAPED_UNICODE));
         }
 
         if (count($items) < 1){

+ 5 - 0
app/Services/CommodityBarcodeService.php

@@ -39,4 +39,9 @@ Class CommodityBarcodeService
         if (!$value)$value = $params;
         return CommodityBarcode::query()->firstOrCreate($params,$value);
     }
+
+    public function create(array $params)
+    {
+        return CommodityBarcode::query()->create($params);
+    }
 }

+ 21 - 103
app/Services/CommodityService.php

@@ -20,8 +20,18 @@ Class CommodityService
         return Commodity::query()->updateOrCreate($param);
     }
 
+    public function first(array $params, $with = null){
+        $commodity = Commodity::query();
+        if ($with)$commodity->with($with);
+        foreach ($params as $column => $value){
+            if (!is_array($value))$commodity->where($column,$value);
+            else $commodity->whereIn($column,$value);
+        }
+        return $commodity->first();
+    }
+
     public function get(array $params){
-        $query = Commodity::query();
+        $query = Commodity::query()->with('barcodes');
         if ($params["owner_id"] ?? false){
             $query->where("owner_id", $params["owner_id"]);
         }
@@ -36,111 +46,12 @@ Class CommodityService
         return Commodity::query()->insert($params);
     }
 
-    public function getWASCommoditiesByWMSOrderHeaders($orderHeaders)
-    {
-        $skus = [];
-        $customerIDs = [];
-        $logs = [];
-        $errs = [];
-        $fillables = [];
-        $owners_list = [];
-
-        foreach ($orderHeaders as $orderHeader) {
-            $customerIDs[] = $orderHeader['customerid'];
-            $oracleDOCOrderDetails = $orderHeader['oracleDOCOrderDetails'] ?? [];
-            foreach ($oracleDOCOrderDetails as $detail) {
-                $skus[] = $detail['sku'];
-            }
-        }
-        $skus = array_unique($skus);
-        $customerIDs = array_unique($customerIDs);
-
-        $owners = Owner::query()->whereIn('code',$customerIDs)->get();
-
-        foreach ($owners as $owner) {
-            $key = 'code='.$owner->code;
-            $owners_list[$key] = $owner;
-        }
-
-        $commodities = Commodity::query()->with('owner')->whereIn('sku',$skus)->get();
-
-        if(count($skus) > $commodities->count()){ //需要更新
-            $commoditiesSku = data_get($commodities,'*.sku');
-            $diffSku = array_diff($skus,$commoditiesSku);
-            $baseSKUs = OracleBasSKU::query()->whereIn('sku',$diffSku)->whereIn('CustomerID',$customerIDs)->get();
-            foreach ($baseSKUs as $baseSKU) {
-                $key = 'code='.$baseSKU['customerid'];
-                $owner = $owners_list[$key] ?? '';
-                $fillables[] = [
-                    'name' => $baseSKU['descr_c'],
-                    'sku' => $baseSKU['sku'],
-                    'owner_id' => $owner['id'] ?? '',
-                    'length' => $baseSKU['skulength'] ?? '',
-                    'width' => $baseSKU['skuwidth'] ?? '',
-                    'height' => $baseSKU['skuhigh'] ?? '',
-                    'volumn' => $baseSKU['cube'],
-                ];
-            }
-        }
-        try {
-            if(count($fillables) > 0){
-                Commodity::query()->create($fillables);
-                LogService::log(__METHOD__,__FUNCTION__,'添加商品信息'.json_encode($fillables));
-            }
-        } catch (\Exception $e) {
-            array_push($errs,json_encode($fillables).$e->getMessage().$e->getTraceAsString());
-        }
-        unset($customerIDs,$logs,$errs,$fillables);
-        return Commodity::query()->with('owner')->whereIn('sku',$skus)->get();
-    }
-
-    public function syncCommodityAttribute($noAttributeCommodity){
-        /** @var BatchUpdateService $batchUpdateService */
-        $batchUpdateService = app('batchUpdateService');
-        $multipleData = [];
-        $multipleData[] = ['id','length','width','height','volumn'];
-
-        $noAttributeCommodity = array_unique($noAttributeCommodity);
-        if(count($noAttributeCommodity) > 1){
-            $SkuCode = data_get($noAttributeCommodity,'*.sku');
-            $BasSKUs = OracleBasSKU::query()->whereIn('sku',$SkuCode)->get();
-            foreach ($noAttributeCommodity as $commodity){
-                $BasSKU = $BasSKUs
-                    ->where('sku',$commodity['code'])
-                    ->where('CustomerID',$commodity['owner']['code'])
-                    ->first();
-                $update = [
-                    'id' => $commodity['id'],
-                    'length' =>  $BasSKU['skulength'] ?? 0,
-                    'width' => $BasSKU['skuwidth'] ?? 0,
-                    'height' => $BasSKU['skuhigh'] ?? 0,
-                    'volumn' => $BasSKU['cube'] ?? 0,
-                ];
-                if($commodity['length'] !==$update['length'] ||$commodity['width'] !==$update['width'] ||$commodity['height'] !==$update['height'] ||$commodity['volumn'] !==$update['volumn'] ){
-                    $multipleData[] = $update;
-                }
-            }
-        }
-        if(count($multipleData) > 1){
-            try {
-                $tableName = 'commodities';
-                $batchUpdateService->batchUpdate($tableName, $multipleData);
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新'.count($multipleData).json_encode($multipleData));
-            } catch (\Exception $e) {
-                LogService::log(__METHOD__,__FUNCTION__,'批量更新失败'.json_encode($multipleData).$e->getMessage(),$e->getTraceAsString());
-            } finally {
-                unset($multipleData);
-            }
-        }
-    }
 
     public function getOwnerCommodities(array $params){
         $query = Commodity::query();
         foreach ($params as $column => $value){
-            if (!is_array($value)){
-                $value = [$value];
-            }
-            $query->whereIn($column,$value);
+            if (!is_array($value)) $query->where($column,$value);
+            else $query->whereIn($column,$value);
         }
         return $query->get();
     }
@@ -163,8 +74,9 @@ Class CommodityService
         });
         return $query;
     }
-    public function ownerBarcodeSeekCommodityFirst(array $ownerParam, $barcode){
+    public function ownerBarcodeSeekCommodityFirst(array $ownerParam, $barcode, $with = null){
         $commodity = Commodity::query();
+        if ($with) $commodity->with($with);
         $commodity = $this->ownerBarcodeSeekCommodityQuery($commodity, $ownerParam, $barcode);
         return $commodity->first();
     }
@@ -296,4 +208,10 @@ Class CommodityService
             ->whereIn('sku',data_get($params,'*.sku'))
             ->get();
     }
+
+    public function createTemporaryCommodity(array $params)
+    {
+        $params["type"] = "临时";
+        return Commodity::query()->create($params);
+    }
 }

+ 0 - 33
app/Services/LogisticService.php

@@ -13,39 +13,6 @@ Class LogisticService
         return Logistic::query()->select($column)->get();
     }
 
-
-    public function getWASLogisticsByWMSOrderHeaders($WMSOrderHeaders){
-        $carrierIds = [];
-        foreach ($WMSOrderHeaders as $WMSOrderHeader) {
-            $carrierIds [] = $WMSOrderHeader->carrierid;
-        }
-        $carrierIds = array_unique($carrierIds);
-        $carrierIds = array_diff($carrierIds,['*','',null]);
-        $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
-        $insert_params = [];
-        if(count($carrierIds) > count($logistics)){
-            $logistics_fillter= data_get($logistics,'*.code');
-            $logisticDiff = array_diff($carrierIds, $logistics_fillter);
-            $basCustomers = OracleBasCustomer::query()->where('Customer_Type','CA')->whereIn('CustomerID',$logisticDiff)->get();
-            foreach ($basCustomers as $basCustomer){
-                $fillable = ['name' => $basCustomer['descr_c'], 'code' => $basCustomer['customerid']];
-                array_push($insert_params,$fillable);
-            }
-        }
-        try {
-            if(count($insert_params) > 0){
-                Logistic::query()->insert($insert_params);
-                LogService::log(__METHOD__,__FUNCTION__,'批量创建 logistic'.count($insert_params).json_encode($insert_params));
-            }
-        } catch (\Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__,'创建失败 logistic error' .json_encode($insert_params). $e->getMessage().$e->getTraceAsString());
-        } finally {
-           return  $logistics = Logistic::query()->whereIn('code',$carrierIds)->get();
-        }
-    }
-
-
-
     public function firstOrCreate(array $params, array $values = null){
         $logistic = Logistic::query();
         if ($values)return $logistic->firstOrCreate($params, $values);

+ 11 - 23
app/Services/OracleDOCOrderHeaderService.php

@@ -16,30 +16,7 @@ Class OracleDOCOrderHeaderService
         }
         return $order->first();
     }
-    public function 根据时间获取在这段时间内创建的WMS订单($startDate){
-        /** @var OwnerService $ownerService */
-        $ownerService = app('ownerService');
-        $owners = $ownerService->获取订单跟踪的货主();
-        $ownerIds = data_get($owners, '*.code');
-        return OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('addtime', '>=', $startDate)
-            ->whereIn('customerID', $ownerIds)
-            ->get();
-    }
 
-    public function 根据时间获取在这段时间内更新的WMS订单($startDate){
-        /** @var OwnerService $ownerService */
-        $ownerService = app('ownerService');
-        $owners = $ownerService->获取订单跟踪的货主();
-        $ownerIds = data_get($owners, '*.code');
-        return OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('EditTime','>=',$startDate)
-            ->whereColumn('EditTime','<>','addtime')
-            ->whereIn('customerID', $ownerIds)
-            ->get();
-    }
 
     public function getWmsOrderOnStartDateCreate($startDate){
         /** @var Owner $owners */
@@ -62,4 +39,15 @@ Class OracleDOCOrderHeaderService
             ->get();
     }
 
+    /**
+     * @param OracleDOCOrderHeader $orderHeader
+     * @return array|mixed
+     */
+    public function getLogisticNumbers($orderHeader)
+    {
+        if(!$orderHeader ?? false){return [];}
+        $actAllocationDetails = $orderHeader->actAllocationDetails ?? [];
+        return array_diff(data_get($actAllocationDetails,'*.picktotraceid'),['','*',null]) ;
+    }
+
 }

+ 44 - 0
app/Services/OrderPackageCommoditiesService.php

@@ -14,6 +14,7 @@ use App\Owner;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
+use Illuminate\Support\Collection;
 
 class OrderPackageCommoditiesService
 {
@@ -263,6 +264,7 @@ class OrderPackageCommoditiesService
         $order_packages = OrderPackage::query()->with('order')->whereHas('order',function($query) use ($order_nos){
             $query->whereIn('code',$order_nos);
         })->get();
+
         $order_package_logistic_numbers_map = $dataHandlerService->dataHeader(['logistic_number'],$order_packages);
         $order_no_map = [];
         foreach ($order_package_commodities as $order_package_commodity) {
@@ -345,4 +347,46 @@ class OrderPackageCommoditiesService
     {
         return app(BatchUpdateService::class)->batchUpdateItself('order_package_commodities', $column, $params);
     }
+
+    /**
+     * @param array $logistic_numbers
+     * @return array|mixed
+     */
+    public function 删除包裹商品信息_根据快递单号($logistic_numbers)
+    {
+        $orderPackageCommodities = OrderPackageCommodities::query()->with('package')->whereHas('package',function($query)use($logistic_numbers){
+            $query->whereIn('logistic_number',$logistic_numbers);
+        })->get();
+        $ids = data_get($orderPackageCommodities, '*.id');
+        if(count($ids) == 0){return [];}
+        try {
+            OrderPackageCommodities::query()->whereIn('id', $ids)->delete();
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities '.$orderPackageCommodities->count().json_encode($orderPackageCommodities),null);
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackageCommodities error'.$orderPackageCommodities->count().json_encode($orderPackageCommodities).$e->getMessage().$e->getTraceAsString(),null);
+            return [];
+        }
+        return $ids;
+    }
+
+    /**
+     * @param array $orderNos
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
+     */
+    public function getByOrderNos($orderNos)
+    {
+        return OrderPackageCommodities::query()->with('package.order','commodity')
+            ->whereHas('package.order',function($query) use ($orderNos){
+                $query->whereIn('code',$orderNos);
+            })->get();
+    }
+
+    /**
+     * @param Collection $orders
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
+     */
+    public function getByOrders($orders)
+    {
+        return $this->getByOrderNos(data_get($orders,'*.code'));
+    }
 }

+ 54 - 4
app/Services/OrderPackageService.php

@@ -8,6 +8,7 @@ use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
+use App\OrderTracking;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
@@ -191,6 +192,7 @@ class OrderPackageService
         foreach ($orders as $order) {
             $orderHeader =  $dataHandlerService->getKeyValue(['orderno'=>$order->code],$order_headers_orderNo_map);
             if(!$orderHeader){ continue;}
+            if(!$orderHeader->sostatus == 90){ continue;}
             $params = $this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
             if(!$params){continue;}
             foreach ($params as $param) {
@@ -213,14 +215,15 @@ class OrderPackageService
         unset($orderHeaders);
     }
 
-    public function getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map){
+    public function getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map)
+    {
         /** @var DataHandlerService $dataHandlerService */
         $dataHandlerService = app(DataHandlerService::class);
         $actAllocationDetails = $orderHeader->actAllocationDetails;
         $logistic_numbers = array_diff(array_unique(data_get($actAllocationDetails,'*.picktotraceid')),['','*',null]);
         $params = [];
-        $created_at = Carbon::now()->format('Y-m-d H:i:s');;
-        $updated_at = Carbon::now()->format('Y-m-d H:i:s');;
+        $created_at = Carbon::now()->format('Y-m-d H:i:s');
+        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($logistic_numbers as $logistic_number) {
             if($logistic_number == $orderHeader->orderno)continue;
             $key  = ['order_id'=>$order->id,'logistic_number'=>$logistic_number];
@@ -233,6 +236,26 @@ class OrderPackageService
         return $params;
     }
 
+    public function getUpdateParamsByOrderHeader($orderHeader,$order,$orderPackages)
+    {
+        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
+        $wms_logistic_number =  app(OracleDOCOrderHeaderService::class)->getLogisticNumbers($orderHeader);
+        $order_packages  = $orderPackages->where('order_id',$order->id)->get();
+        $was__logistic_number = data_get($order_packages,'*.logistic_number');
+        $arr1=  array_diff($was__logistic_number,$wms_logistic_number);
+        $arr2=  array_diff($wms_logistic_number,$was__logistic_number);
+        if(count($arr2) > 0 && count($arr1) == 0){
+            return [
+                'id'=>$order_packages->first()->id,
+                'logistic_number' => $arr1[0],
+                'updated_at'=> $updated_at,
+            ];
+        }
+        return null;
+    }
+
     public function updateOrderPackageByWmsOrder($orderHeaders){
         /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
         $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
@@ -250,7 +273,7 @@ class OrderPackageService
         foreach ($orderHeaders as $orderHeader) {
             $order = $dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno ?? ''],$orders_code_map);
             if(!$order){continue;}
-            $order_packages = $order->packages;
+            $order_packages = $order->packages ?? null;
             if(!$order_packages){continue;}
             $params =$this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
             if(count($params) > 0){
@@ -266,6 +289,7 @@ class OrderPackageService
             $this->create($insertParams);
         }
         $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
+        $this->删除多余的订单包裹_根据WMS订单($orderHeaders);
     }
 
     public function getByWmsOrders($orderHeaders){
@@ -290,4 +314,30 @@ class OrderPackageService
             return OrderPackage::query()->whereIn('logistic_number',$logistic_numbers)->get();
         }
     }
+
+    /**
+     * @param OracleDOCOrderHeader $orderHeaders
+     */
+    public function 删除多余的订单包裹_根据WMS订单($orderHeaders)
+    {
+        if(!isset($orderHeaders)){return;}
+        if(is_array($orderHeaders) && count($orderHeaders) == 0){return;}
+        $orderPackages = $this->getByWmsOrders($orderHeaders);
+        $Was_logistic_number = data_get($orderPackages,'*.logistic_number');
+        $Wms_logistic_number = array_unique(data_get($orderHeaders,'*.actAllocationDetails.*.picktotraceid'));
+        $delete_logistic_number = array_diff($Was_logistic_number,$Wms_logistic_number);
+        if(count($delete_logistic_number) == 0){return;}
+        $delete_orderPackages = OrderPackage::query()->wherein('logistic_number',$delete_logistic_number)->get();
+        $delete_ids = app(OrderPackageCommoditiesService::class)->删除包裹商品信息_根据快递单号($delete_logistic_number);
+        try {
+            OrderPackage::query()->whereIn('logistic_number', $delete_logistic_number)->delete();
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackage '.$delete_orderPackages->count().json_encode($delete_orderPackages),null);
+            $orderTracking = OrderTracking::query()->whereIn('order_package_commodity_id', $delete_ids)->get();
+            app(OrderTrackingService::class)->deleteOrderTracings($orderTracking);
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'删除多余OrderPackage error'.$delete_orderPackages->count().json_encode($delete_orderPackages).$e->getMessage().$e->getTraceAsString(),null);
+        }
+    }
+
+
 }

+ 1 - 1
app/Services/OrderService.php

@@ -524,7 +524,7 @@ class OrderService
         }
         $logistic_XJWL = Logistic::query()->where('code' ,'XJWL')->first();
         foreach ($orderHeaders_map as $orderHeader) {
-            if($order_code_map[$orderHeader->orderno] ?? false)continue;
+             if($order_code_map[$orderHeader->orderno] ?? false)continue;
             $owner = $owners_code_map[$orderHeader->customerid] ?? null;
             $logistic =  $logistics_code_map[$orderHeader->userdefine1] ?? null;
             $shop = $shop_name_map[' _owner_code'.$orderHeader->customerid.' name='.$orderHeader->issuepartyname] ?? '';

+ 40 - 2
app/Services/OrderTrackingService.php

@@ -10,6 +10,7 @@ use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Services\common\QueryService;
 use Illuminate\Support\Carbon;
+use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
 use Maatwebsite\Excel\Facades\Excel;
 
@@ -232,7 +233,7 @@ class OrderTrackingService
             if(!$order){continue ;}
             $order_header = $order_headers_map[$order->code];
             if(!$order_header){continue ;}
-
+            if($order_header->sostatus == 90){continue;}
             $client = null;
             $order_remark = null;
             if ($order_header['notes'] ?? false) {
@@ -240,7 +241,6 @@ class OrderTrackingService
                 if (strpos($notes, '[')) {
                     $arr= str_split($notes,strpos($notes,'['));
                     $client = $arr[0] ?? '';
-//                    $order_remark = $arr[1] ?? '';
                     $order_remark = str_replace(['[',']'],'', $arr[1] ?? '');
                 }
             }
@@ -312,6 +312,7 @@ class OrderTrackingService
         $update_params = [];
         $update_params[0] =['id','client','pick_up_at','order_remark','gross_weight','bulk'];
         foreach ($orderHeaders as $orderHeader) {
+            if($orderHeader->sostatus == '90'){continue;}
             $order_package_commodity_list = $order_package_commodity_order_code_map[$orderHeader->orderno] ?? false;
 
             if(!$order_package_commodity_list){continue;}
@@ -396,6 +397,7 @@ class OrderTrackingService
                 LogService::log(__METHOD__,__FUNCTION__,'批量添加 OrderTracking error'.json_encode($insert_params) .'||'.$e->getMessage(),'||'.$e->getTraceAsString());
             }
         }
+        $this->删除订单追踪_订单取消($orderHeaders);
     }
 
     public function getParamsByOrderHeaderAndOrder($orderHeader,$order){
@@ -426,5 +428,41 @@ class OrderTrackingService
         ];
     }
 
+    /**
+     * @param Collection $orderHeaders
+     */
+    public function 删除订单追踪_订单取消($orderHeaders)
+    {
+        $cancelledOrderHeaders = $orderHeaders->where('sostatus','90');
+        $orderTracking = $this->getOrderTracingByWmsOrder($cancelledOrderHeaders);
+        $this->deleteOrderTracings($orderTracking);
+    }
+
+    /**
+     * @param Collection $orderHeaders
+     * @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|Collection|\Tightenco\Collect\Support\Collection
+     */
+    public function getOrderTracingByWmsOrder($orderHeaders)
+    {
+        if($orderHeaders->count() == 0){return  collect();}
+        $orderNos = data_get($orderHeaders,'*.orderno');
+        return OrderTracking::query()->with('commodities.package.order')
+            ->whereHas('commodities.package.order',function($query)use($orderNos){
+                $query->whereIn('code',$orderNos);
+            })->get();
+    }
 
+    /**
+     * @param Collection $orderTracking
+     */
+    public function deleteOrderTracings($orderTracking)
+    {
+        if($orderTracking->count() == 0){return;}
+        try {
+            OrderTracking::query()->whereIn('id', data_get($orderTracking,'*.id'))->delete();
+            LogService::log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking '.$orderTracking->count().json_encode($orderTracking),null);
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'删除订单取消的OrderTracking error'.$orderTracking->count().json_encode($orderTracking).$e->getMessage().$e->getTraceAsString(),null);
+        }
+    }
 }

+ 0 - 32
app/Services/OwnerService.php

@@ -65,36 +65,6 @@ Class OwnerService
         return Owner::query()->firstOrCreate($params,$values);
     }
 
-    //  XXX 代码逻辑有待纠正
-    public function 获取WMS订单列中对应的WAS货主列($WMSOrderHeaders)
-    {
-        $customerIds =  array_unique(data_get($WMSOrderHeaders, '*.customerid'));
-        $owners = Owner::query()->whereIn('code', $customerIds)->get();
-        $codes = data_get($owners, '*.code');
-        $codeDiff = array_diff($customerIds, $codes);
-        $logs = [];
-        $errs = [];
-
-        if (count($codes) > count($customerIds)) {
-            $basCustomer = OracleBasCustomer::query()->whereIn('customerid', $codeDiff)->get();
-            foreach ($basCustomer as $customer) {
-                if($customer['descr_c'] ?? false && $customer['customerid'] && false){
-                    try {
-                        $owner = Owner::query()->create(['name' => $customer['descr_c'], 'code' => $customer['customerid']]);
-                        $owners->push($owner);
-                        array_push($logs, ['info' => '创建「' . json_encode($owner) . '」']);
-                    } catch (\Exception $e) {
-                        array_push($errs, ['info' => '创建「' . json_encode($errs) . '」']);
-                    }
-                }
-            }
-        }
-        if(count($logs)>0)
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建客户「:' . json_encode($logs) . '」', Auth::user()['id']);
-        if(count($errs)>0)
-            LogService::log(__METHOD__, __FUNCTION__, '批量创建客户失败「:' . json_encode($errs) . '」', Auth::user()['id']);
-        return $owners;
-    }
 
     public function 获取订单跟踪的货主(){
         return Owner::query()->with('orderTrackingOwner')->whereHas('orderTrackingOwner',function($query){
@@ -148,8 +118,6 @@ Class OwnerService
         return Owner::query()->insert($fillables);
     }
 
-
-
     public function getAuthorizedOwners(){
         $user = Auth::user();
         return Owner::query()->whereIn('id',$user->getPermittingOwnerIdsAttribute()??[])->get();

+ 2 - 2
database/migrations/2020_07_29_160826_create_order_issues_table.php

@@ -28,9 +28,9 @@ class CreateOrderIssuesTable extends Migration
             $table->integer('second_order_id')->nullable()->comment('二次订单号');
             $table->enum('final_status', ['已解决', '待退回', '退回中'])->index()->nullable()->comment('最终状态');
             $table->decimal('logistic_indemnity_money')->index()->nullable()->comment('承运商赔偿金额');
-            $table->enum('logistic_express_remission', ['原单减免', '部分减免', '全部减免'])->index()->nullable()->comment('承运商快递减免');
+            $table->enum('logistic_express_remission', ['原单减免', '补发减免', '全部减免'])->index()->nullable()->comment('承运商快递减免');
             $table->decimal('baoshi_indemnity_money')->index()->nullable()->comment('宝时赔偿金额');
-            $table->enum('baoshi_express_remission', ['原单减免', '部分减免', '全部减免'])->index()->nullable()->comment('宝时快递减免');
+            $table->enum('baoshi_express_remission', ['原单减免', '补发减免', '全部减免'])->index()->nullable()->comment('宝时快递减免');
             $table->integer('user_workgroup_id')->index()->nullable()->comment('事故责任方');
 
 

+ 5 - 6
database/migrations/2020_09_30_153758_change_order_issue_and_o_rder_issue_logs.php → database/migrations/2020_10_13_101611_add_commodities_column_type.php

@@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration;
 use Illuminate\Database\Schema\Blueprint;
 use Illuminate\Support\Facades\Schema;
 
-class ChangeOrderIssueAndORderIssueLogs extends Migration
+class AddCommoditiesColumnType extends Migration
 {
     /**
      * Run the migrations.
@@ -13,8 +13,8 @@ class ChangeOrderIssueAndORderIssueLogs extends Migration
      */
     public function up()
     {
-        Schema::table('order_issues', function (Blueprint $table) {
-            $table->dropColumn('settlement_at');
+        Schema::table('commodities', function (Blueprint $table) {
+            $table->enum('type',['无','临时'])->default('无')->comment('类型(用以区分有效商品与临时商品)');
         });
     }
 
@@ -25,9 +25,8 @@ class ChangeOrderIssueAndORderIssueLogs extends Migration
      */
     public function down()
     {
-        Schema::table('order_issues', function (Blueprint $table) {
-            $table->timestamp('settlement_at')->index()->nullable()->comment('完结日期');
+        Schema::table('commodities', function (Blueprint $table) {
+            $table->dropColumn('type');
         });
-
     }
 }

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

@@ -19,7 +19,7 @@
                         </div>
                     </span>
                     <div class="custom-control custom-checkbox ml-1">
-                        <input type="checkbox" class="custom-control-input" id="customCheck" v-model="is_merge">
+                        <input type="checkbox" class="custom-control-input" id="customCheck" name="is_merge" v-model="is_merge">
                         <label class="custom-control-label" for="customCheck">导出是否格式化</label>
                     </div>
                     @can('订单管理-批量备注')<button @click="modal()" type="button" class="btn btn-sm ml-2 btn-outline-primary">批量备注追加</button>@endcan
@@ -62,7 +62,7 @@
                 <table class="table table-sm table-striped table-bordered table-hover card-body mt-2 ml-3 d-none" id="headerRoll"></table>
                 <table class="table table-sm table-striped table-bordered table-hover card-body mt-2 ml-3" id="headerParent">
                     <tr class="text-nowrap" id="header"></tr>
-                    <tr v-for="(order,i) in orders" @click="selectedColor(order.orderno)" :style="{'font-weight': order.orderno==selectedStyle?'bold':''}">
+                    <tr v-for="(order,i) in orders" @click="selectedColor(order.orderno)" :style="{'background-color': order.orderno==selectedStyle?'#aac7ea':''}">
                         <td>
                             <input class="checkItem" type="checkbox" :value="order.orderno" v-model="checkData">
                         </td>
@@ -534,10 +534,7 @@
                     $("#myModal").modal('hide');
                 },
                 selectedColor(orderno){
-                    if (orderno==this.selectedStyle){
-                        this.selectedStyle='';
-                        return;
-                    }
+                    if (orderno==this.selectedStyle) return;
                     this.selectedStyle=orderno;
                 },
                 freeze(orderno,waveno){

+ 1 - 1
resources/views/order/issue/create.blade.php

@@ -303,7 +303,7 @@
                 // 二次订单
                 secondOrder: {logistic_id: '', code: '',},
                 final_status: ['已解决', '待退回', '退回中'],
-                Remission: ['原单减免', '部分减免', '全部减免'],
+                Remission: ['原单减免', '补发减免', '全部减免'],
                 finalStatus: @if(old('final_status')){{old('final_status')}}@else''@endif,
                 logistic_express_remission: @if(old('logistic_express_remission')){{old('logistic_express_remission')}}@else''@endif,
                 baoshi_express_remission: @if(old('baoshi_express_remission')){{old('baoshi_express_remission')}}@else''@endif,

+ 2 - 2
resources/views/order/issue/edit.blade.php

@@ -165,8 +165,8 @@
                 orderIssueType:{!! $orderIssueType !!},
                 rejectingStatus: ['无', '未退回', '全部退回', '部分退回', '差异退回', '超量退回'],
                 final_status: ['已解决', '待退回', '退回中',],
-                logisticExpressRemission: ['原单减免', '部分减免', '全部减免'],
-                baoShiExpressRemission: ['原单减免', '部分减免', '全部减免'],
+                logisticExpressRemission: ['原单减免', '补发减免', '全部减免'],
+                baoShiExpressRemission: ['原单减免', '补发减免', '全部减免'],
                 logistic_number:@if($rejectedBill)'{!! $rejectedBill->logistic_number_return !!}'@else ''@endif,
                 isSubmit:false
             },

+ 8 - 5
resources/views/order/issue/index.blade.php

@@ -342,8 +342,9 @@
                             </div>
 
                             <template v-if="orderIssue.logs && orderIssue.logs.length > 0" class="p-0 m-0 ">
-                                <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id" :data-value="orderIssue.logShow == null ? orderIssue.logShow=false:''">
-                                    <tr style="position:static" align="center" v-for="(log,index) in orderIssue.logs" :class="(orderIssue.logs.length <= 2 ? '' : ((index === 0 || orderIssue.logShow )  ? '' : 'd-none' )) "
+                                <table class="table table-sm p-0 m-0 " :id="'logs'+orderIssue.id" :data-value="orderIssue.logShow = true">
+                                    <tr style="position:static" align="center" v-for="(log,index) in orderIssue.logs"
+                                        :class="(index > 1 && orderIssue.logShow) ? 'd-none':''"
                                         v-on:mouseover="showDelBtn($event)" v-on:mouseleave="hideDelBtn($event)" >
                                         <td style="min-width: 200px">@{{ log.content }}</td>
                                         <td class="text-muted" style="min-width: 120px">@{{ log.user.name }}</td>
@@ -648,7 +649,7 @@
                     {name:{{$logistic->id}},value:'{{$logistic->name}}'},
                     @endforeach
                 ],
-                expressRemission:['原单减免', '部分减免', '全部减免'],
+                expressRemission:['原单减免', '补发减免', '全部减免'],
                 checkData: [],
                 from: '',
                 finalStatus: [{value:'',name:""},{value:'已解决',name:"已解决"},{value:'待退回',name:"待退回"},{value:'退回中',name:"退回中"},],//['无','已解决', '待退回', '退回中'],
@@ -1130,9 +1131,11 @@
                 },
                 toggleLogs(orderIssue, e) {
                     if ( orderIssue.logShow  === false) {
-                        $(e.target).text('点击收起');
-                    } else {
                         $(e.target).text("记录共" + $(e.target).attr('data-value') + "条,点击展开");
+                        $('#logs'+orderIssue.id).find('tr:gt(1)').addClass('d-none');
+                    } else {
+                        $('#logs'+orderIssue.id).find('tr').removeClass('d-none');
+                        $(e.target).text('点击收起');
                     }
                     orderIssue.logShow = !orderIssue.logShow;
                 },

+ 2 - 1
resources/views/store/checkingReceive/mission.blade.php

@@ -23,7 +23,8 @@
                         <label><b class="text-primary">货主</b>,SKU,商品名称,<b class="text-primary">条码</b>,<b class="text-primary">数量</b>,生产日期,失效日期,批号,唯一码</label><br>
                         <label>
                             <input name="file" hidden type="file" class="col-5" id="excelFile" @change="getFile($event)"
-                                   accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel">
+                                   {{--accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"--}}
+                                   accept=".csv, .xlsx, .xls">
                         </label>
                         <button class="btn btn-dark col-5" @click="selectFile()">选择Excel文件</button><br>
                         <small class="text-primary">@{{ excel.file ? excel.file.name : '' }}</small>

+ 2 - 2
resources/views/store/checkingReceive/show.blade.php

@@ -107,7 +107,7 @@
                     </span>
                     </td>
                     <td>@{{ storeCheckingReceiveItem.imported_amount }}</td>
-                    <td @click="showInput(storeCheckingReceiveItem.id)">
+                    <td @click="showInput(storeCheckingReceiveItem.id)" v-if="is_show">
                         <div class="form-inline">
                             <input  @blur="delFocus()" :id = "'counted_amount_'+storeCheckingReceiveItem.id" :value="storeCheckingReceiveItem.counted_amount"
                                     class="form-control form-control-sm" type="text" :disabled="disabledItemId == storeCheckingReceiveItem.id ? false : true">
@@ -116,8 +116,8 @@
                             <button v-if="disabledItemId == storeCheckingReceiveItem.id" type="button" class="btn btn-sm btn-danger"
                                 @click="disabledItemId = ''">取消</button>
                         </div>
-
                     </td>
+                    <td v-if="!is_show">@{{ storeCheckingReceiveItem.counted_amount }}</td>
                     <td>@{{ storeCheckingReceiveItem.asn_amount }}</td>
                     <td>@{{ storeCheckingReceiveItem.imported_diff_amount }}</td>
                     <td>@{{ storeCheckingReceiveItem.asn_diff_amount }}</td>