소스 검색

Merge branch 'master' into Haozi

haozi 5 년 전
부모
커밋
b9acff1df5
53개의 변경된 파일1192개의 추가작업 그리고 814개의 파일을 삭제
  1. 4 0
      app/CommodityBarcode.php
  2. 21 4
      app/Console/Commands/InventoryDailyLoggingOwner.php
  3. 41 2
      app/Http/Controllers/CommodityController.php
  4. 4 3
      app/Http/Controllers/InventoryController.php
  5. 1 2
      app/Http/Controllers/LaborReportController.php
  6. 16 1
      app/Http/Controllers/OrderController.php
  7. 23 6
      app/Http/Controllers/OrderIssueController.php
  8. 22 1
      app/Http/Controllers/RejectedBillItemController.php
  9. 174 174
      app/Http/Controllers/TestController.php
  10. 1 1
      app/Http/Controllers/UserDutyCheckController.php
  11. 14 11
      app/Http/Controllers/api/thirdPart/flux/ProcessController.php
  12. 1 1
      app/Imports/CommodityImport.php
  13. 0 2
      app/Imports/RejectedImport.php
  14. 2 3
      app/Imports/StoreCheckingReceiveImport.php
  15. 4 1
      app/InventoryDailyLog.php
  16. 1 1
      app/OrderTracking.php
  17. 8 2
      app/Providers/AppServiceProvider.php
  18. 0 2
      app/RejectedBill.php
  19. 2 2
      app/RejectedBillItem.php
  20. 10 2
      app/Services/CommodityBarcodeService.php
  21. 55 0
      app/Services/CommodityService.php
  22. 13 0
      app/Services/DepositoryService.php
  23. 14 0
      app/Services/InventoryAccountMissionService.php
  24. 5 0
      app/Services/InventoryCompareService.php
  25. 9 1
      app/Services/InventoryDailyLogService.php
  26. 17 0
      app/Services/OracleBasSkuService.php
  27. 16 0
      app/Services/OrderIssueProcessLogService.php
  28. 25 5
      app/Services/OrderIssueService.php
  29. 86 132
      app/Services/OrderPackageCommoditiesService.php
  30. 40 123
      app/Services/OrderPackageService.php
  31. 35 55
      app/Services/OrderService.php
  32. 74 43
      app/Services/OrderTrackingService.php
  33. 14 0
      app/Services/ProcessesContentService.php
  34. 4 0
      app/Services/StoreCheckingReceiveItemService.php
  35. 1 0
      app/Services/WaybillService.php
  36. 18 0
      app/Services/common/BatchUpdateService.php
  37. 4 1
      app/Services/common/DataHandlerService.php
  38. 32 0
      database/migrations/2020_09_29_101752_change_inventory_daily_logs_add_column_depository_id.php
  39. 33 0
      database/migrations/2020_09_30_153758_change_order_issue_and_o_rder_issue_logs.php
  40. 1 1
      package-lock.json
  41. 24 3
      public/t.php
  42. 3 0
      resources/views/inventory/statement/dailyLog.blade.php
  43. 1 1
      resources/views/inventory/stockInventory/mission.blade.php
  44. 16 2
      resources/views/order/index/delivering.blade.php
  45. 283 216
      resources/views/order/issue/index.blade.php
  46. 2 2
      resources/views/order/menu.blade.php
  47. 9 4
      resources/views/order/tracking/index.blade.php
  48. 1 1
      resources/views/store/checkingReceive/mission.blade.php
  49. 3 2
      resources/views/waybill/index.blade.php
  50. 1 0
      routes/apiLocal.php
  51. 2 0
      serves/excelExportGo/api/controller/rejectedController.go
  52. 1 1
      tests/webApi/test.http
  53. 1 0
      webpack.mix.js

+ 4 - 0
app/CommodityBarcode.php

@@ -9,4 +9,8 @@ class CommodityBarcode extends Model
 {
     use ModelTimeFormat;
     protected $fillable=['code','commodity_id','created_at'];
+
+    public function commodity(){
+        return $this->belongsTo('App\Commodity','commodity_id','id');
+    }
 }

+ 21 - 4
app/Console/Commands/InventoryDailyLoggingOwner.php

@@ -37,8 +37,11 @@ class InventoryDailyLoggingOwner extends Command
 
     /**
      * Execute the console command.
+     *
+     *  TODO : 增量添加,每天都会重复去录入之前数据,没有限制去重条件. 因业务需要去查看每天同批货的变动
+     *
      * @param CommodityService $commodityService
-     * @return int
+     * @return void
      */
     public function handle(CommodityService $commodityService)
     {
@@ -49,9 +52,11 @@ class InventoryDailyLoggingOwner extends Command
         if ($let == 0)return;
         //拼接SQL,SELECT仅取指定字段
         $sql = "SELECT INV_LOT.customerid,INV_LOT.sku,INV_LOT.qty,BAS_SKU.skulength,
-                BAS_SKU.skuwidth,BAS_SKU.skuhigh,BAS_SKU.cube,BAS_SKU.descr_c,BAS_SKU.alternate_sku1,BAS_SKU.grossweight
+                BAS_SKU.skuwidth,BAS_SKU.skuhigh,BAS_SKU.cube,BAS_SKU.descr_c,BAS_SKU.alternate_sku1,BAS_SKU.grossweight,
+                INV_LOT_ATT.lotatt05
                 FROM INV_LOT
                 LEFT JOIN BAS_SKU ON INV_LOT.sku = BAS_SKU.sku AND INV_LOT.customerid = BAS_SKU.customerid
+                LEFT JOIN INV_LOT_ATT ON INV_LOT.lotnum = INV_LOT_ATT.lotnum
                 WHERE INV_LOT.customerid IN (";
         $index = 1;
         foreach ($owners as $code => $id){
@@ -85,6 +90,7 @@ class InventoryDailyLoggingOwner extends Command
                     'amount' => $invLot->qty,
                     'volumn_occupied' => 0,
                     'gross_weight' => 0,
+                    'depository_code' => $invLot->lotatt05,
                 ];
             }
         }
@@ -110,20 +116,31 @@ class InventoryDailyLoggingOwner extends Command
             ];
             $result = $commodityService->updateOrCreate($param,$column);
             LogService::log(__METHOD__,"同步库存每日记录时修改或生成商品",json_encode($column));
+
             $commodity_id = $result->id;
             //寻找对应barcode是否存在,不存在录入
             if ($commodity['code']) CommodityBarcode::query()->firstOrCreate(['commodity_id'=>$commodity_id,'code'=>$commodity['code']]);
             //计算总体积,商品体积×该单数量
             $volumn_occupied = $commodity['volumn']*$inventoryDailyLog["amount"];
             $gross_weight = $commodity['weight']*$inventoryDailyLog["amount"];
-            array_push($data,[
+
+            $depository = null;
+            if ($inventoryDailyLog['depository_code']){
+                $depository = app('depositoryService')->firstOrCreate(["code"=>$inventoryDailyLog['depository_code']],[
+                    "name"=>$inventoryDailyLog['depository_code'],
+                    "code"=>$inventoryDailyLog['depository_code'],
+                ]);
+            }
+
+            $data[]  = [
                 "owner_id"=>$commodity['owner_id'],
                 "created_at"=>date('Y-m-d H:i:s'),
                 "commodity_id"=>$commodity_id,
                 "amount"=>$inventoryDailyLog['amount'],
                 "volumn_occupied"=>$volumn_occupied,
                 "gross_weight"=>$gross_weight,
-            ]);
+                "depository_id"=>$depository ? $depository->id : null,
+            ];
         }
         DB::table('inventory_daily_logs')->insert($data);
         LogService::log(__METHOD__,"同步库存每日记录",json_encode($data));

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

@@ -283,6 +283,8 @@ class CommodityController extends Controller
         $createCommodities = [];
         $barcodeMap = [];
         $skus = [];
+        $barcodes = [];
+        $barcodeIndex = [];
 
         foreach ($map as $sku => $index){
             if (substr($sku,-1) == "*")continue;
@@ -299,15 +301,52 @@ class CommodityController extends Controller
             ];
             $barcodeMap[$wms->sku] = [];
             if ($wms->alternate_sku1){
-                $barcodeMap[$wms->sku][] = rtrim($wms->alternate_sku1,"*");
+                $code = rtrim($wms->alternate_sku1,"*");
+                $barcodeMap[$wms->sku][] = $code;
+                $barcodes[] = $code;
+                $barcodeIndex[$code] = count($createCommodities) - 1;
             }
             if ($wms->alternate_sku2){
-                $barcodeMap[$wms->sku][] = rtrim($wms->alternate_sku2,"*");
+                $code = rtrim($wms->alternate_sku2,"*");
+                $barcodeMap[$wms->sku][] = $code;
+                $barcodes[] = $code;
+                $barcodeIndex[$code] = count($createCommodities) - 1;
             }
             $skus[] = $wms->sku;
             unset($wmsCommodities[$index]);
         }
 
+        if (count($barcodes) > 0){
+            $commodities = $commodityService->ownerBarcodeSeekCommodityGet(['id'=>$owner_id], $barcodes, true);
+            $updateCommodities = [];
+            $updateCommodities[] = [
+                'id', 'sku', 'name', 'length', 'width', 'height', 'volumn',
+            ];
+            foreach ($commodities as $commodity){
+                foreach ($commodity->barcodes as $code){
+                    if (isset($barcodeIndex[$code->code])){
+                        $goods = $createCommodities[$barcodeIndex[$code->code]] ?? false;
+                        if (!$goods)continue;
+                        $updateCommodities[] = [
+                            "id" => $commodity->id,
+                            'sku'=>$goods['sku'],
+                            'name' => $goods['name'],
+                            'length' => $goods['length'],
+                            'width' => $goods['width'],
+                            'height' => $goods['height'],
+                            'volumn' => $goods['volumn'],
+                        ];
+                        unset($createCommodities[$barcodeIndex[$code->code]]);
+                        break;
+                    }
+                }
+            }
+            if (count($updateCommodities) > 0){
+                $commodityService->batchUpdate($updateCommodities);
+                LogService::log(__METHOD__,"同步商品-批量更新",json_encode($updateCommodities));
+            }
+        }
+
         if (count($createCommodities) > 0){
             $commodityService->insert($createCommodities);
             LogService::log(__METHOD__,"同步商品-录入商品",json_encode($createCommodities));

+ 4 - 3
app/Http/Controllers/InventoryController.php

@@ -4,6 +4,7 @@ namespace App\Http\Controllers;
 
 use App\OracleBasCustomer;
 use App\Services\AllInventoryService;
+use App\Services\InventoryDailyLogService;
 use App\Services\InventoryService;
 use App\Services\OwnerService;
 use Exception;
@@ -81,7 +82,7 @@ class InventoryController extends Controller
      */
     function dailyLog(Request $request,OwnerService $ownerService){
         if (!Gate::allows('库存管理-库存体积')){return redirect(url('/')); }
-        /** @var InventoryService*/
+        /** @var InventoryDailyLogService*/
         $inventoryDailyLogs = app('inventoryDailyLogService')->paginate($request->input());
         $owners = $ownerService->getSelection();
         $param = $request->input();
@@ -112,8 +113,8 @@ class InventoryController extends Controller
 
         }else $sql=app('inventoryDailyLogService')->getSql(['id'=>$request->data]);
 
-        $row = ["货主","日期","商品名称","商品编码","商品条码","在库数量","长","宽","高","体积","总占用体积","总毛重"];
-        $column = ["owner_name", "created_at", "commodity_name", "commodity_sku", "commodity_barcode_code",
+        $row = ["货主","日期","商品名称","商品编码","商品条码","属性仓","在库数量","长","宽","高","体积","总占用体积","总毛重"];
+        $column = ["owner_name", "created_at", "commodity_name", "commodity_sku", "commodity_barcode_code","depository_name",
             "amount", "commodity_length", "commodity_width", "commodity_height", "commodity_volumn", "volumn_occupied", "gross_weight"];
         $rule = ["created_at"=> "mysqlDate"];
         $post = Http::post(config('go.export.url'),['type'=>'unify','sql'=>$sql, 'connection'=>'mysql',

+ 1 - 2
app/Http/Controllers/LaborReportController.php

@@ -95,7 +95,7 @@ class LaborReportController extends Controller
                 "working_duration" => $laborReport->working_duration,
                 "remark" => $laborReport->remark,
             ];
-            array_push($data,$row);
+            $data[] = $row;
         }
         $post = Http::post(config('go.export.url'),['type'=>'laborReport','data'=>json_encode($data,JSON_UNESCAPED_UNICODE)]);
         if ($post->status() == 500){
@@ -119,7 +119,6 @@ class LaborReportController extends Controller
         $laborReportStatus->save();
         $this->log(__METHOD__,"门卫打卡审核创建当前临时工报表状态".__FUNCTION__,json_encode($laborReportStatus),Auth::user()['id']);
         $userDutyCheck=UserDutyCheck::find($userDutyCheckId);
-        $delme=Auth::user();
         $userDutyCheck->verify_user_id=Auth::user()['id'];
         $userDutyCheck->update();
         event(new GuardAuditEvent($userDutyCheck));

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

@@ -24,11 +24,26 @@ class OrderController extends Controller
         /** @var OrderService $orderService */
         $orderService = app('orderService');
         $request = $request->input();
+        $owners = app('ownerService')->getSelection(['id','code']);
+        $codes = array_column($owners->toArray(),'code');
+        if ($request['customerid'] ?? false){
+            $arr = explode(',',$request['customerid']);
+            $request['customerid'] = [];
+            foreach ($arr as $value){
+                if (in_array($value,$codes))$request['customerid'][] = $value;
+            }
+            if (count($request['customerid']) < 1)$request['customerid'] = [''];
+        }else $request['customerid'] = $codes;
+
         $result = $orderService->paginate($request);
         $picktotraceids = $result['picktotraceids'];
         $orders = $result['orders'];
         $commodities = $result['commodities'];
-        $customers=OracleBasCustomer::query()->select('customerid','descr_c')->where('customer_type','OW')->where('active_flag','Y')->get();
+        $customers=OracleBasCustomer::query()->select('customerid','descr_c')
+            ->where('customer_type','OW')
+            ->where('active_flag','Y')
+            ->whereIn('customerid',$codes)
+            ->get();
         $page = $request["page"] ?? 1;
         $codes=DB::connection('oracle')->table('BAS_CODES')->select('code','codename_c')->where('codeid','SO_STS')->orderBy('code','asc')->get();
         $orderIssueType = OrderIssueType::all();

+ 23 - 6
app/Http/Controllers/OrderIssueController.php

@@ -13,6 +13,7 @@ use App\Owner;
 use App\QualityLabel;
 use App\RejectedBill;
 use App\Services\LogService;
+use App\Services\OrderIssueProcessLogService;
 use App\Services\OrderIssueService;
 use App\Services\OwnerService;
 use App\Shop;
@@ -140,7 +141,7 @@ class OrderIssueController extends Controller
         }else{
             $sqlList = app('orderIssueService')->getSqlList(['id'=>$request->data]);
         }
-        $post = Http::post(config('go.export.url'),['type'=>'orderIssue','sqlList'=>json_encode($sqlList)]);
+        $post = Http::post(config('go.export.url'),['type'=>'orderIssue','sqlList'=>json_encode($sqlList),'createFormat'=>'merge']);
         if ($post->status() == 500){
             throw new Exception($post->header("Msg"));
         }
@@ -373,21 +374,21 @@ class OrderIssueController extends Controller
         if (!Gate::allows('订单管理-问题件-编辑')) {
             return ['success'=>false,'fail_info' => '没有对应权限'];
         }
-
         try {
-
             /** @var OrderIssue $orderIssue */
             $orderIssue = OrderIssue::query()->where('id',$request->input('id'))->first();
             $orderIssue->update(['logistic_number_return' => $request->input('logisticNumberReturn')]);
             $orderIssue->同步退单状态();
-
             $rejectedBill = RejectedBill::query()
                 ->with('items')
                 ->where('logistic_number_return',$request->input('logisticNumberReturn'))
                 ->first();
-
             LogService::log(__METHOD__, __FUNCTION__, json_encode($request->getContent()));
-            return ['success' => true, 'rejectedBill' => $rejectedBill,'rejectingStatus' =>$orderIssue->rejecting_status];
+            if(!$rejectedBill){
+                return ['success' => false, 'message' => '退回单号已修改,退回单号没有相应退件信息'];
+            }else{
+                return ['success' => true, 'rejectedBill' => $rejectedBill,'rejectingStatus' =>$orderIssue->rejecting_status];
+            }
         } catch (Exception $e) {
             LogService::log(__METHOD__, __FUNCTION__,'error'. json_encode($request->getContent()).'||'.$e->getMessage().'||'.$e->getTraceAsString());
             return ['success' => false ,'fail_info' => $e->getMessage()];
@@ -429,4 +430,20 @@ class OrderIssueController extends Controller
             'id_logistic_return'=> '退回单号承运商',
         ]);
     }
+
+
+    public function endOrderIssuesApi(Request $request)
+    {
+        if (!Gate::allows('订单管理-问题件-编辑')) {
+            return ['success'=>false,'fail_info' => '没有对应权限'];
+        }
+        $orderIssue_ids = $request->input('ids');
+        $bool = app(OrderIssueProcessLogService::class)->isExistOrderIssueTypeIsEnd($orderIssue_ids);
+        if($bool)return ['success'=>false,'fail_info'=> '需要完结的订单问题件重已有完结的订单问题件'];
+        $bool = app(OrderIssueService::class)->endOrderIssues($orderIssue_ids);
+        if($bool == 0) return ['success'=>false,'fail_info' => '操作失败'];
+        $params = ['ids'=>$orderIssue_ids,'content'=>'完结订单','type'=>'结束'];
+        $logs = app(OrderIssueProcessLogService::class)->create($params);
+        return ['success'=>true,'logs'=>$logs];
+    }
 }

+ 22 - 1
app/Http/Controllers/RejectedBillItemController.php

@@ -7,6 +7,7 @@ use App\Events\InformWMSReceivedEvent;
 use App\Owner;
 use App\RejectedBill;
 use App\RejectedBillItem;
+use App\Services\CommodityService;
 use App\WMSReflectReceive;
 use App\WMSReflectReceiveSku;
 use Illuminate\Http\Request;
@@ -71,7 +72,27 @@ class RejectedBillItemController extends Controller
             $rejectedBillItem=new RejectedBillItem($request->all());
             $rejectedBillItem->save();
         }
-        $rejectedBillItem->injectCommodityName();
+
+        if (!$rejectedBillItem->rejectedBill || !$rejectedBillItem->rejectedBill->owner)return ['success'=>'false','failure_info'=>'退货单或货主不存在'];
+
+        /** @var CommodityService $commodityService */
+        $commodityService = app('commodityService');
+        $commodity = $commodityService->ownerBarcodeSeekCommodityFirst(['name'=>$rejectedBillItem->rejectedBill->owner->name],$rejectedBillItem->barcode_goods);
+        if (!$commodity){
+            $commodity = $commodityService->ownerAndBarcodeFirstOrCreate($rejectedBillItem->rejectedBill->owner,$rejectedBillItem->barcode_goods);
+            if (!$commodity){
+                $commodity = $commodityService->create([
+                    "name" => $rejectedBillItem->name_goods,
+                    "owner_id" => $rejectedBillItem->rejectedBill->owner->id,
+                ]);
+                app('commodityBarcodeService')->first([
+                    'commodity_id' => $commodity->id,
+                    'code' => $rejectedBillItem->barcode_goods,
+                ]);
+            }
+        }
+
+
         $rejectedBIll = RejectedBill::where('id',$request->input('id_rejected_bill'))->first();
         $rejectedBIll->同步问题件();
         $rejectedBIll->同步问题件退件状态();

+ 174 - 174
app/Http/Controllers/TestController.php

@@ -7,6 +7,7 @@ use App\Authority;
 use App\Batch;
 use App\City;
 use App\Commodity;
+use App\CommodityBarcode;
 use App\Events\CancelOrder;
 use App\Log;
 use App\Logistic;
@@ -20,7 +21,6 @@ use App\OracleDOCWaveDetails;
 use App\Order;
 use App\OrderIssue;
 use App\OrderPackage;
-use App\OrderPackageCommodities;
 use App\OrderTracking;
 use App\OrderTrackingOwner;
 use App\Owner;
@@ -30,20 +30,16 @@ use App\ProcessDaily;
 use App\ProcessStatistic;
 use App\RejectedBill;
 use App\RejectedBillItem;
-use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
 use App\Services\common\DataHandlerService;
 use App\Services\InventoryCompareService;
-use App\Services\LogisticService;
 use App\Services\LogService;
 use App\Services\OracleDOCOrderHeaderService;
 use App\Services\OrderIssueService;
-use App\Services\OrderPackageCommoditiesService;
 use App\Services\OrderPackageService;
 use App\Services\OrderService;
 use App\Services\OrderTrackingOwnerService;
 use App\Services\OrderTrackingService;
-use App\Services\OwnerService;
 use App\Unit;
 use App\User;
 use App\Waybill;
@@ -255,7 +251,7 @@ class TestController extends Controller
                         'measuring_machine_id'=>$package->measuring_machine_id,
                         'weighed_at'=>$package->weighed_at,
                         'status'=>$package->status]);
-               if (!$orderPackage)array_push($error,$package->id);
+                if (!$orderPackage)array_push($error,$package->id);
             }
             LogService::log(__METHOD__,"同步时WMS中未找到这些订单",json_encode($error));
             $id = $packages[count($packages)-1]->id;
@@ -307,7 +303,6 @@ class TestController extends Controller
     public function changePackage()
     {
         $packages = Package::where('delivery_number', '<>', null)->where('logistic_id', null)->get();
-        dd($packages);
         $packages = Package::whereRaw('delivery_number IS NOT NULL AND logistic_id IS NULL')->get();
         $logistics = Logistic::get();
         $packages->each(function ($package) use ($logistics) {
@@ -418,9 +413,135 @@ class TestController extends Controller
         }
     }
 
+    private function cleanBarcode(){
+
+        $logCommodityBarcodes = CommodityBarcode::query()->where('code',"")->get();
+        if (count($logCommodityBarcodes) > 0)LogService::log(__METHOD__,"纠正商品-删除空条码",json_encode($logCommodityBarcodes,JSON_UNESCAPED_UNICODE));
+
+        CommodityBarcode::query()->where('code',"")->delete();
+        $barcodes = DB::select(DB::raw('select * from commodity_barcodes c
+where (c.code,c.commodity_id) in (select code,commodity_id from commodity_barcodes group by code,commodity_id having count(*) > 1) order by commodity_id'));
+        $barcodeMap = [];
+        $barcodeDelete = [];
+        foreach ($barcodes as $barcode){
+            if (isset($barcodeMap[$barcode->code.'_'.$barcode->commodity_id]))$barcodeDelete[] = $barcode->id;
+            else $barcodeMap[$barcode->code.'_'.$barcode->commodity_id] = $barcode->id;
+        }
+
+        $logCommodityBarcodes = CommodityBarcode::query()->whereIn('id',$barcodeDelete)->get();
+        if (count($logCommodityBarcodes) > 0)LogService::log(__METHOD__,"纠正商品-删除重复条码",json_encode($logCommodityBarcodes,JSON_UNESCAPED_UNICODE));
+
+        CommodityBarcode::destroy($barcodeDelete);
+    }
+    public function correctCommodity(){
+        ini_set('max_execution_time',2500);
+        ini_set('memory_limit','1526M');
+        //清理冗余条码
+        $this->cleanBarcode();
+
+        //获取重复条码
+        $commodities = DB::select(DB::raw('select commodities.name,commodities.sku,commodities.owner_id,commodity_barcodes.id as barcode_id,commodity_barcodes.code as barcode_code,commodity_barcodes.commodity_id from commodities LEFT JOIN commodity_barcodes on commodities.id = commodity_barcodes.commodity_id
+where (commodities.owner_id,commodity_barcodes.code) in (select commodities.owner_id,commodity_barcodes.code from commodities LEFT JOIN commodity_barcodes on commodities.id = commodity_barcodes.commodity_id group by commodities.owner_id,commodity_barcodes.code having count(*) > 1) order by commodities.owner_id,commodity_barcodes.code'));
+
+        //对比map池
+        $commodityMap = [];
+        //需要删除项
+        $commodityDelete = [];
+        foreach ($commodities as $index => $commodity){
+            $commodity->barcode_code=strtolower(trim($commodity->barcode_code));
+            //货主+条码 为唯一key值 设想正常数据下同货主不应该有同条码
+            $key = $commodity->owner_id.'_'.$commodity->barcode_code;
+            //使用map池对比为重复数据
+            if(isset($commodityMap[$key])){
+                //获取下标指针指向的源数据
+                $c = $commodities[$commodityMap[$key]];
+                //源数据不符合规范,当前数据替换掉它
+                if (($c->sku == null || $c->sku == "") && ($commodity->sku != null && $commodity->sku != "")){
+                    $commodityDelete[] = $commodityMap[$key];
+                    $commodityMap[$key] = $index;
+                }else{
+                    //当前数据比源数据更符合预期,替换掉
+                    if (($c->sku == $commodity->sku) && (strlen($c->name) < strlen($commodity->name))){
+                        $commodityDelete[] = $commodityMap[$key];
+                        $commodityMap[$key] = $index;
+                    }else{
+                        //扔进处理池
+                        $commodityDelete[] = $index;
+                    }
+                }
+            //第一次出现的新数据,val为下标,当作指针指向源数据
+            }else $commodityMap[$key] = $index;
+        }
+        $createBarcodes = []; //批量生成条码
+        $deleteCommodities = []; //批量删除商品及商品条码
+
+        $updateCommodities = [];
+        foreach ($commodityDelete as $index){
+            //获取到被处理数据 与 目标数据
+            $del = $commodities[$index];
+            $target = $commodities[$commodityMap[$del->owner_id.'_'.$del->barcode_code]];
+
+            //记录ID删除商品与条码
+            $deleteCommodities[] = $del->commodity_id;
+
+            //有效条码合并
+            $barcodes = DB::select(DB::raw("select * from
+            (select * from commodity_barcodes where commodity_id = ".$del->commodity_id.")a
+            where (select count(1) as num from commodity_barcodes b
+            where commodity_id = ".$target->commodity_id." and b.code = a.code) = 0"));
+            if (count($barcodes) > 0){
+                foreach ($barcodes as $barcode){
+                    $createBarcodes[] = ['code'=>$barcode->code, 'commodity_id'=>$target->commodity_id];
+                }
+            }
+            $updateCommodities[$del->commodity_id] = $target->commodity_id;
+        }
+        if (count($updateCommodities) > 0){
+            $targets=array_chunk($updateCommodities,1000);
+            foreach($targets as $targetCommodities){
+                app('inventoryAccountMissionService')->batchUpdateItself('commodity_id', $targetCommodities);//批量更新库存盘点任务
+                app('inventoryCompareService')->batchUpdateItself('commodity_id', $targetCommodities);//批量更新库存对比
+                app('inventoryDailyLogService')->batchUpdateItself('commodity_id', $targetCommodities);//批量更新库存每日记录
+                app('processesContentService')->batchUpdateItself('commodity_id', $targetCommodities);//批量更新二次加工内容单
+                app('storeCheckingReceiveItemService')->batchUpdateItself('commodity_id', $targetCommodities);//批量更新入库盘收一体
+                app('orderPackageCommoditiesService')->batchUpdateItself('commodity_id', $targetCommodities);//批量更新订单商品
+            }
+        }
+
+        if (count($createBarcodes) > 0)LogService::log(__METHOD__,"纠正商品-录入合并条码",json_encode(data_get($createBarcodes,'*.id'),JSON_UNESCAPED_UNICODE));
+
+        CommodityBarcode::query()->insert($createBarcodes);
+        $logCommodityBarcodes = CommodityBarcode::query()->whereIn('commodity_id',$deleteCommodities)->get();
+        if (count($logCommodityBarcodes) > 0)LogService::log(__METHOD__,"纠正商品-删除无用商品条码",json_encode(data_get($logCommodityBarcodes,'*.id'),JSON_UNESCAPED_UNICODE));
+
+        CommodityBarcode::query()->whereIn('commodity_id',$deleteCommodities)->delete();
+
+//        $logCommodities = Commodity::query()->whereIn('id',$deleteCommodities)->get();
+        if (count($deleteCommodities) > 0)LogService::log(__METHOD__,"纠正商品-删除无用商品",json_encode($deleteCommodities,JSON_UNESCAPED_UNICODE));
+
+        Commodity::destroy($deleteCommodities);
+    }
+
     public function test2(){
-        $c = Commodity::find(325434);
-        dd($c['name']);
+        ini_set('max_execution_time',2500);
+        ini_set('memory_limit','1526M');
+        $logs = Log::query()->where('created_at','>','2020-09-30 12:25:36')
+        ->where('created_at','<','2020-09-30 18:00:36')
+        ->where('operation','App\Services\common\BatchUpdateService::batchUpdateItself')
+        ->get();
+        foreach ($logs as $log){
+            $str1 = mb_strlen("批量更新失败 SQL:(");
+            $str2 = mb_strripos($log->description,") 堆栈:");
+            $str = mb_substr($log->description,$str1,$str2-$str1);
+            $str = str_replace('CASEcommodity_id',"CASE commodity_id",$str);
+            $str = str_replace('END WHERE commodity_id'," END WHERE commodity_id",$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());
+            }
+        }
     }
 
     /*1*/
@@ -480,29 +601,11 @@ class TestController extends Controller
     }
 
 
-    public function divide()
-    {
-        $trackings = OrderTracking::query()->with('commodities.package')->get();
-        $trackings->each(function ($tracking){
-            $package = $tracking->commodities->package;
-            $bulk = $package->bulk;
-            if($bulk>=1000000){
-                $bulk = bcdiv($bulk,1000000000,3);
-                OrderPackage::query()->where('id',$package->id)->update(['bulk'=>$bulk]);
-            }
-        });
-    }
-
     public function test3()
     {
-////        dd(bcmul(0.3,0.3,5));
-//        $logistic = Logistic::query()->where('code','XJWL')->first();
-//        if(!$logistic){
-//            Logistic::query()->create(['code'=>'XJWL','name'=>'新杰物流']);
-//        }
-
         /** @var DataHandlerService $dataHandlerService */
-        $dataHandlerService = app(DataHandlerService::class);
+        $dataHandlerService = app('dataHandlerService');
+        $startDate = \Illuminate\Support\Carbon::parse('2020-05-06 13:16:51')->toDateTimeString();
         /** @var OrderTrackingService $orderTrackingService */
         $orderTrackingService  = app('orderTrackingService');
         /** @var OrderService $orderSerivce */
@@ -513,16 +616,15 @@ class TestController extends Controller
 //        $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-25 00:00:00')->toDateTimeString();
-//        $endData = \Illuminate\Support\Carbon::parse('2020-09-26 00:00:00')->toDateTimeString();
-        $endData = \Illuminate\Support\Carbon::parse('2020-09-26 00:00:00')->toDateTimeString();
+        $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'))
             ->get();
-
+//        dd($orderHeaders);
 //        $orderHeaders = app(OracleDOCOrderHeaderService::class)->getWmsOrderOnStartDateCreate($startData);
         $orderService->createByWmsOrder($orderHeaders);
         $orderTrackingService->createByWmsOrderHeader($orderHeaders);
@@ -530,156 +632,54 @@ class TestController extends Controller
         $orderTrackingService->updateByWmsOrderHeaders($orderHeaders);
 
     }
-    public function test4()
-    {
-
-        $owners = app(OrderTrackingOwnerService::class)->getTrackingOrderOwner();
-        $startDate = \Illuminate\Support\Carbon::parse('2020-09-25 00:00:00')->toDateTimeString();
-        $orderHeaders = OracleDOCOrderHeader::query()
-            ->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
-            ->where('addTime','>=',$startDate)
-//            ->where('addTime','<=',$endData)
-            ->whereIn('customerID',data_get($owners,'*.code'))
-            ->get();
-        dd($orderHeaders);
 
+    public function usage(){
+        dd(Request::all());
+        $users=User::query();
     }
-
-//    public function syncWmsOrder(){
-//        $startDate = \Illuminate\Support\Carbon::parse('2020-09-19 00:00:00')->toDateTimeString();
-//        /** @var OrderTrackingService $orderTrackingService */
-//        $orderTrackingService  = app('orderTrackingService');
-//        $orderTrackingService->trackingWmsOrder($startDate);
-//    }
-
-//    public function updateOrderPackingCommodity(){
-//        /** @var OrderTrackingService  $orderTrackingService */
-//        $orderTrackingService =  app(OrderTrackingService::class);
-//        /** @var OrderPackageCommoditiesService  $orderPackageCommoditiesService */
-//        $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
-//
-//        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
-//        $orderNo = data_get($orderTrackings,'*.commodities.package.order.code');
-//        $order_packages = OrderPackage::query()->with('order')->whereHas('order',function($query) use($orderNo){
-//            $query->whereIn('code',$orderNo);
-//        })->get();
-//
-//        $id = data_get($order_packages,'*.id');
-//        $list =  OrderPackageCommodities::query()->whereIn('order_package_id',$id)->get();
-////        dd(data_get($list,'*.id'),data_get($orderTrackings,'*.id'));
-//        $count1 = OrderPackageCommodities::destroy(data_get($list,'*.id'));
-//        $count2 = OrderTracking::destroy(data_get($orderTrackings,'*.id'));
-//        $orderHeaders = OracleDOCOrderHeader::query()->whereIn('orderno',$orderNo)->get();
-//        $order_packages =  app(OrderPackageService::class)->getByWmsOrders($orderHeaders);
-//        $owners =  app(OwnerService::class)->getByWmsOrders($orderHeaders);
-//        $commodities =  app(CommodityService::class)->getByWmsOrders($orderHeaders);
-//        $owner_code_map=[];
-//        foreach ($owners as $owner) {
-//            $owner_code_map[$owner->code] = $owner;
-//        }
-////        $orderService->createByWmsOrder($orderHeaders);
-//        $orderPackageCommoditiesService->createByWmsOrder($orderHeaders,$order_packages,$owner_code_map,$commodities);
-//        $orderTrackingService->createByWmsOrderHeader($orderHeaders);
-//    }
-
-//    public function orderTrckingOwnerAll(){
-//        $owners = Owner::all();
-//        foreach ($owners as $owner) {
-//            $orderTrackingOwner =  OrderTrackingOwner::query()->where('owner_id',$owner->id)->first();
-//            if($orderTrackingOwner == null){
-//                OrderTrackingOwner::query()->create(['owner_id'=>$owner->id,'status'=>'启用']);
-//            }else{
-//                if($orderTrackingOwner->status == '禁用'){
-//                    $orderTrackingOwner->status = '启用';
-//                }
-//            }
-//        }
-//    }
-
-//    public function deleteOrderTraking()
-//    {
-//        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
-//        $orderNo = data_get($orderTrackings,'*.commodities.package.order.code');
-//        $order_nos = array_unique($orderNo);
-//        $orders = Order::query()->whereIn('code',$order_nos)->get();
-//        $order_packages = OrderPackage::query()->with('order')->whereHas('order',function($query) use($order_nos){
-//            $query->whereIn('code',$order_nos);
-//        });
-//        $order_package_commodities = OrderPackageCommodities::query()->with('package.order')->whereHas('package.order',function($query) use ($order_nos){
-//            $query->whereIn('code',$order_nos);
-//        })->get();
-//        dd($order_nos,$orders->count(),$order_packages->count(),$order_package_commodities->count());
-//    }
-
-//    public function updateOrderTracking(){  // update  client  order_remark
-//        $orderTrackings = OrderTracking::query()
-//            ->with('commodities.package.order')
-//            ->get();
-//        $orderNos = [];
-//        $order_tracking = [];
-//        foreach ($orderTrackings as $orderTracking) {
-//            $order = $orderTracking->commodities->package->order ?? '';
-//            $orderNos[] = $order->code;
-//            $order_tracking[$order->code][] = $orderTracking;
-//        }
-//        $orderHeaders = OracleDOCOrderHeader::query()
-//            ->whereIn('orderNo',$orderNos)
-//            ->get();
-//
-//        $fillables = [['id','client','order_remark']];
-//        foreach ($orderHeaders as $orderHeader) {
-//            $orderTracking_list =  $order_tracking[$orderHeader->orderno];
-//            $notes = $orderHeader['notes'];
-////            $notes = str_replace('【','[',$notes);
-//            $client = null;
-//            $order_remark = null;
-//            if (strpos($notes, '[')) {
-//                $arr= str_split($notes,strpos($notes,'['));
-//                $client = $arr[0] ?? '';
-//                $order_remark = $arr[1] ?? '';
-//                $order_remark = str_replace(['[',']'],'',$order_remark);
-//            }
-//
-//            foreach ($orderTracking_list as $item) {
-//                $fillables[] = [
-//                    'id' => $item->id,
-//                    'client' => $client,
-//                    'order_remark' => $order_remark
-//                ];
-//            }
-//        }
-//        /** @var BatchUpdateService $batchUpdateService */
-//        $batchUpdateService = app('batchUpdateService');
-//        $batchUpdateService->batchUpdate('order_trackings',$fillables);
-//    }
-
-    public function updateOrderTrackingLogistic(){
-        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
-        $order_nos = data_get($orderTrackings,'*.commodities.package.order.code');
-        $order_nos =  array_unique($order_nos);
-        $orders = Order::query()->whereIn('code',$order_nos)->get();
-        foreach ($orders as $order) {
-            $orderHeader = OracleDOCOrderHeader::query()->where('OrderNo',$order->code)->first();
-            $logistic =Logistic::query()->where('code',$orderHeader->userdefine1)->first();
-            if($order->logistic_id == 61)continue;
-            if($order->logistic_id !== $logistic->id){
-                Order::query()->where('id',$order->id)->update(['logistic_id'=>$logistic->id]);
-                dd($order->logistic_id,$logistic->id,$order);
+    public function orderTrckingOwnerAll(){
+        $owners = Owner::all();
+        foreach ($owners as $owner) {
+            $orderTrackingOwner =  OrderTrackingOwner::query()->where('owner_id',$owner->id)->first();
+            if($orderTrackingOwner == null){
+                OrderTrackingOwner::query()->create(['owner_id'=>$owner->id,'status'=>'启用']);
+            }else{
+                if($orderTrackingOwner->status == '禁用'){
+                    $orderTrackingOwner->status = '启用';
+                }
             }
         }
     }
 
     public function updateOrderTracking(){
-        $orderTrackings = OrderTracking::query()->with('commodities.package.order')->get();
+        $orderTrackings = OrderTracking::query()->with('commodities.package.order')
+            ->whereHas('commodities.package.order',function($query){
+                $query->where('client_code','O2009027827');
+            })
+            ->where('created_at','>','2020-09-28 00:07:06')->first();
+        $order = $orderTrackings->commodities->package->order;
+        $client_code = $order->client_code;
+        if(preg_match('/^O[\d]/',$client_code ?? '') > 0){
+            OrderTracking::query()->where('id',$orderTrackings->id)->update(['web_order_number'=>$client_code]);
+        }
+    }
+
+    public function updateOrderTrackingGrossWeightAndBulk(){
+        $orderTrackings = OrderTracking::query()->with('commodities.package.order.owner','commodities.commodity')
+            ->where('created_at','>','2020-09-17 00:00:00')->get();
         foreach ($orderTrackings as $orderTracking) {
-            if(!$orderTracking->web_order_number){
-                $order = $orderTracking->commodities->package->order;
-                $client_code = $order->client_code;
-                if(preg_match('/^O[\d]/',$client_code ?? '') > 0){
-                    OrderTracking::query()->where('id',$orderTracking->id)->update(['web_order_number'=>$client_code]);
-                }
+            $code = $orderTracking->commodities->package->order->owner->code ?? false;
+            $amount = $orderTracking->commodities->amount;
+            if(!$code){continue;}
+            $commodity = $orderTracking->commodities->commodity;
+            $basSku =  OracleBasSKU::query()->where('CustomerID',$code)->where('SKU',$commodity->sku)->first();
+            $gross_weight = null;
+            $bulk = null;
+            $gross_weight = round($basSku->grossweight * $amount,3);
+            $bulk = round($basSku->cube * $amount,3);
+            if($orderTracking->gross_weight!= $gross_weight ||$orderTracking->bulk!= $bulk ){
+                OrderTracking::query()->where('id',$orderTracking->id)->update(['gross_weight'=>$gross_weight,'bulk'=>$bulk]);
             }
         }
     }
-
 }

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

@@ -348,7 +348,7 @@ class UserDutyCheckController extends Controller
         $userDutyCheck = UserDutyCheck::where('user_id', $userDetail->user_id)->where('checked_at', 'like', $dateNow. '%')->orderBy('id', 'desc')->first();
         if (!$userDutyCheck['verify_user_id']) return "<h1 style='color: red;text-align:center'>进场门卫还未审核,暂无法进组!</h1>";
         if ($userDutyCheck->type == '登出') return "<h1 style='color: red;text-align:center'>进场是否未打卡?如若未打,请先返回打进场卡!</h1>";
-        $this->log(__METHOD__, "进组扫码未绑定设备重新绑定__" . __FUNCTION__, json_encode($userWorkgroupID,$userDetail));
+        $this->log(__METHOD__, "进组扫码未绑定设备重新绑定__" . __FUNCTION__, json_encode([$userWorkgroupID,$userDetail]));
         $html=$this->updateLaborReport($userDetail->user_id,$userWorkgroupID,$userLaborToken);
         if ($html)return $html;
     }

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

@@ -176,19 +176,22 @@ class ProcessController extends Controller
             array_push($commoditiesData,["owner_id"=>$owners[$oracleBasSkus[$i]->customerid],"name"=>$oracleBasSkus[$i]->descr_c,"sku"=>$oracleBasSkus[$i]->sku,"created_at"=>Carbon::now()]);
             array_push($commoditiesTem['sku'],$oracleBasSkus[$i]->sku);
             array_push($commoditiesTem['owner_id'],$owners[$oracleBasSkus[$i]->customerid]);
-            $commodityBarCodeData[$oracleBasSkus[$i]->sku."_".$owners[$oracleBasSkus[$i]->customerid]]=["code"=>$oracleBasSkus[$i]->alternate_sku1,"commodity_id"=>'','created_at'=>Carbon::now()];
+            if ($oracleBasSkus[$i]->alternate_sku1)$commodityBarCodeData[$oracleBasSkus[$i]->sku."_".$owners[$oracleBasSkus[$i]->customerid]]=["code"=>$oracleBasSkus[$i]->alternate_sku1,"commodity_id"=>'','created_at'=>Carbon::now()];
         }
-        DB::table('commodities')->insert($commoditiesData);
-        $this->log(__METHOD__, 'FLUX二次加工单接口录入商品__' . __FUNCTION__, json_encode($commoditiesData), Auth::user()['id']);
-        $commodities=Commodity::query()->whereIn('sku',$commoditiesTem['sku'])->whereIn('owner_id',$commoditiesTem['owner_id'])->get();
-        foreach ($commodities as $commodity){
-            $commodityBarCodeData[$commodity->sku."_".$commodity->owner_id]['commodity_id']=$commodity->id;
-        }
-        foreach ($commodityBarCodeData as $key=>$value){
-            array_push($commodityBarCodeTem,$value);
+        //TODO 保留:根据条码与货主批量二次查找商品
+        if (count($commoditiesData) > 0){
+            app('commodityService')->insert($commoditiesData);
+            $this->log(__METHOD__, 'FLUX二次加工单接口录入商品__' . __FUNCTION__, json_encode($commoditiesData), Auth::user()['id']);
+            $commodities=Commodity::query()->whereIn('sku',$commoditiesTem['sku'])->whereIn('owner_id',$commoditiesTem['owner_id'])->get();
+            foreach ($commodities as $commodity){
+                if (isset($commodityBarCodeData[$commodity->sku."_".$commodity->owner_id]))
+                    $commodityBarCodeData[$commodity->sku."_".$commodity->owner_id]['commodity_id']=$commodity->id;
+            }
+            if (count($commodityBarCodeTem) > 0){
+                app('commodityBarcodeService')->insert(array_values($commodityBarCodeData));
+                $this->log(__METHOD__, 'FLUX二次加工单接口录入商品条码__' . __FUNCTION__, json_encode($commodityBarCodeTem), Auth::user()['id']);
+            }
         }
-        DB::table('commodity_barcodes')->insert($commodityBarCodeTem);
-        $this->log(__METHOD__, 'FLUX二次加工单接口录入商品条码__' . __FUNCTION__, json_encode($commodityBarCodeTem), Auth::user()['id']);
     }
 
 

+ 1 - 1
app/Imports/CommodityImport.php

@@ -35,7 +35,7 @@ class CommodityImport implements ToCollection, WithHeadingRow
             $owner_id=Owner::where('name',$owner)->value('id');
             $commodity=Commodity::whereHas('barcodes', function (Builder $query)use($barcode){
                 $query->where('code',$barcode);
-            })->first();
+            })->where('owner_id',$owner_id)->first();
             if($commodity){
                 if($this->isOverride){
                     $name?$commodity['name']= $name:false;

+ 0 - 2
app/Imports/RejectedImport.php

@@ -2,7 +2,6 @@
 
 namespace App\Imports;
 
-use App\Commodity;
 use App\Http\Controllers\api\jianshang\RejectedController;
 use App\Http\Controllers\Controller;
 use App\Logistic;
@@ -11,7 +10,6 @@ use App\Rejected;
 use App\RejectedBill;
 use App\RejectedBillItem;
 use Illuminate\Support\Collection;
-use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Session;
 use Maatwebsite\Excel\Concerns\ToCollection;
 use Maatwebsite\Excel\Concerns\WithHeadingRow;

+ 2 - 3
app/Imports/StoreCheckingReceiveImport.php

@@ -112,9 +112,10 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             Cache::put("storeCheckingReceive",["success"=>false, "data"=>"货主为空,不允许录入,至少为一行标明货主!"],86400);
             return false;
         }
+        $owner = app('ownerService')->firstOrCreate(["name"=>$owner_name],["name"=>$owner_name, "code"=>$owner_name]);
 
         //使用条码获取商品ID
-        $commodityBarCodes = app('commodityBarcodeService')->getCommodities($barcodes);
+        $commodityBarCodes = app('commodityBarcodeService')->getCommodities($barcodes, $owner->id);
         foreach ($commodityBarCodes as $barcode){
             if (!is_array($commodities[$barcode->code])){
                 $commodities[$barcode->code] = [$commodities[$barcode->code]];
@@ -129,8 +130,6 @@ class StoreCheckingReceiveImport implements ToCollection,WithHeadingRow
             unset($commodities[$barcode->code]);
         }
 
-        $owner = app('ownerService')->firstOrCreate(["name"=>$owner_name],["name"=>$owner_name, "code"=>$owner_name]);
-
         //填充商品ID,未找到项流转下一步,空SKU删除该行并返回错误
         $skus = [];
         $skuParam = [];

+ 4 - 1
app/InventoryDailyLog.php

@@ -8,7 +8,7 @@ class InventoryDailyLog extends Model
 {
     public $timestamps=false;
     protected $fillable=[
-        'owner_id','created_at','commodity_id','amount','volumn_occupied','gross_weight'
+        'owner_id','created_at','commodity_id','amount','volumn_occupied','gross_weight','depository_id'
     ];
 
     public function owner(){
@@ -17,4 +17,7 @@ class InventoryDailyLog extends Model
     public function commodity(){
         return $this->hasOne('App\Commodity','id','commodity_id');
     }
+    public function depository(){
+        return $this->hasOne('App\Depository','id','depository_id');
+    }
 }

+ 1 - 1
app/OrderTracking.php

@@ -14,7 +14,7 @@ class OrderTracking extends Model
         'pick_up_at','sale','client',
         'order_remark','pallet_total','planning_sent_at',
         'is_on_duty_shift','is_arrival','signed_at',
-        'receive_bill_status','remark'];
+        'receive_bill_status','remark','gross_weight','bulk'];
 
     protected $appends =[
         'ownerName','sku','packageWeight','packageBulk','orderCity','packageLogisticNumber','packageLogistic','orderClientCode'

+ 8 - 2
app/Providers/AppServiceProvider.php

@@ -3,11 +3,14 @@
 namespace App\Providers;
 
 use App\Http\Controllers\Controller;
-use App\OrderIssueProcessLog;
+use App\InventoryAccountMission;
 use App\Services\CommodityService;
 use App\Services\common\BatchUpdateService;
 use App\Services\CommodityBarcodeService;
 use App\Services\common\DataHandlerService;
+use App\Services\DepositoryService;
+use App\Services\InventoryAccountMissionService;
+use App\Services\InventoryAccountService;
 use App\Services\InventoryCompareService;
 use App\Services\OracleBasSkuService;
 use App\Services\OracleDocAsnDetailService;
@@ -26,6 +29,7 @@ use App\Services\OrderPackageCommoditiesService;
 use App\Services\OrderTrackingService;
 use App\Services\OwnerService;
 use App\Services\PackageStatisticsService;
+use App\Services\ProcessesContentService;
 use App\Services\ProcessMethodService;
 use App\Services\ProcessService;
 use App\Services\ProcessStatisticService;
@@ -111,9 +115,10 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('storeCheckingReceiveService',StoreCheckingReceiveService::class);
         app()->singleton('storeCheckingReceiveItemService',StoreCheckingReceiveItemService::class);
         app()->singleton('commodityBarcodeService',CommodityBarcodeService::class);
-        app()->singleton('commodityService',CommodityService::class);
         app()->singleton('oracleBasSkuService',OracleBasSkuService::class);
         app()->singleton('oracleDocAsnDetailService',OracleDocAsnDetailService::class);
+        app()->singleton('inventoryAccountMissionService',InventoryAccountMissionService::class);
+        app()->singleton('processesContentService',ProcessesContentService::class);
 
         $this->loadingOrderModuleService();
         $this->loadingBasedModuleService();
@@ -140,6 +145,7 @@ class AppServiceProvider extends ServiceProvider
         app()->singleton('commodityService' , CommodityService::class);
         app()->singleton('batchUpdateService' , BatchUpdateService::class);
         app()->singleton('dataHandlerService',DataHandlerService::class);
+        app()->singleton('depositoryService',DepositoryService::class);
     }
 
     private function loadingRejectedModuleService(){

+ 0 - 2
app/RejectedBill.php

@@ -4,11 +4,9 @@ namespace App;
 
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\LogisticNumberFeatureController;
-use App\Services\OrderPackageCommoditiesService;
 use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Database\Eloquent\SoftDeletes;
-use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\Auth;
 use Overtrue\LaravelPinyin\Facades\Pinyin;
 

+ 2 - 2
app/RejectedBillItem.php

@@ -39,10 +39,10 @@ class RejectedBillItem extends Model
         if(!$this['name_goods'])return;
         $barcode=$this['barcode_goods'];
         $name=$this['name_goods'];
+        $owner=Owner::where('name',$this->rejectedBill->owner->name)->first();
         $commodity=Commodity::whereHas('barcodes', function (Builder $query)use($barcode){
             $query->where('code',$barcode);
-        })->first();
-        $owner=Owner::where('name',$this->rejectedBill->owner->name)->first();
+        })->where('owner_id',$owner ? $owner['id'] : null)->first();
         if($commodity){
             if($commodity['name']!=$name){
                 $commodity['name']=$name;

+ 10 - 2
app/Services/CommodityBarcodeService.php

@@ -6,8 +6,10 @@ use App\CommodityBarcode;
 
 Class CommodityBarcodeService
 { 
-    public function getCommodities(array $codes){
-        return CommodityBarcode::query()->select('code','commodity_id')->whereIn('code',$codes)->get();
+    public function getCommodities(array $codes, $owner_id){
+        return CommodityBarcode::query()->whereHas('commodity',function ($query)use($owner_id){
+            $query->where('owner_id',$owner_id);
+        })->select('code','commodity_id')->whereIn('code',$codes)->get();
     }
 
     public function insert(array $params){
@@ -31,4 +33,10 @@ Class CommodityBarcodeService
         }
         return $query->get();
     }
+
+    public function firstOrCreate(array $params, array $value = null)
+    {
+        if (!$value)$value = $params;
+        return CommodityBarcode::query()->firstOrCreate($params,$value);
+    }
 }

+ 55 - 0
app/Services/CommodityService.php

@@ -7,6 +7,7 @@ use App\OracleBasSKU;
 use App\Owner;
 use App\Services\common\BatchUpdateService;
 use Carbon\Carbon;
+use Illuminate\Database\Eloquent\Builder;
 
 Class CommodityService
 {
@@ -148,6 +149,60 @@ Class CommodityService
         return app(BatchUpdateService::class)->batchUpdate('commodities', $params);
     }
 
+    /* 根据货主条形码查找商品 */
+    private function ownerBarcodeSeekCommodityQuery(Builder $query, array $ownerParam, $barcode){
+        $query->whereHas('owner',function ($builder)use($ownerParam){
+            foreach ($ownerParam as $column => $param){
+                $builder->where($column, $param);
+            }
+        });
+        $query->whereHas('barcodes',function ($builder)use($barcode){
+            if (is_array($barcode))$builder->whereIn('code',$barcode);
+            else $builder->where('code',$barcode);
+        });
+        return $query;
+    }
+    public function ownerBarcodeSeekCommodityFirst(array $ownerParam, $barcode){
+        $commodity = Commodity::query();
+        $commodity = $this->ownerBarcodeSeekCommodityQuery($commodity, $ownerParam, $barcode);
+        return $commodity->first();
+    }
+    public function ownerBarcodeSeekCommodityGet(array $ownerParam, $barcode, $isNullSku = false){
+        $commodities = Commodity::query()->with('barcodes');
+        if ($isNullSku)$commodities->whereNull('sku');
+        $commodities = $this->ownerBarcodeSeekCommodityQuery($commodities, $ownerParam, $barcode);
+        return $commodities->get();
+    }
+
+    /* 通过货主代码与条形码寻找FLUX商品补充至WMS */
+    public function ownerAndBarcodeFirstOrCreate(Owner $owner,$barcode){
+        $wmsCommodity = app('oracleBasSkuService')->first(['customerid'=>$owner->code, 'barcode'=>$barcode]);
+        if (!$wmsCommodity) return null;
+
+        $commodity = $this->firstOrCreate(['owner_id'=>$owner->id, 'sku'=>$wmsCommodity->sku],[
+            "name" => $wmsCommodity->descr_c,
+            "sku" => $wmsCommodity->sku,
+            "owner_id" => $owner->id,
+            "length" => $wmsCommodity->skulength,
+            "width" => $wmsCommodity->skuwidth,
+            "height" => $wmsCommodity->skuhigh,
+            "volumn" => $wmsCommodity->cube,
+        ]);
+        if ($wmsCommodity->alternate_sku1)app('commodityBarcodeService')->first([
+            'commodity_id' => $commodity->id,
+            'code' => $wmsCommodity->alternate_sku1,
+        ]);
+        if ($wmsCommodity->alternate_sku2)app('commodityBarcodeService')->first([
+            'commodity_id' => $commodity->id,
+            'code' => $wmsCommodity->alternate_sku2,
+        ]);
+        return $commodity;
+    }
+
+    public function create(array $params){
+        return Commodity::query()->create($params);
+    }
+
     public function getByWmsOrders($orderHeaders){
         if(!$orderHeaders) return null;
         $customerId_sku_map = [];

+ 13 - 0
app/Services/DepositoryService.php

@@ -0,0 +1,13 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Depository;
+
+Class DepositoryService
+{ 
+    public function firstOrCreate(array $params, array $values = null){
+        if (!$values) $values = $params;
+        return Depository::query()->firstOrCreate($params, $values);
+    }
+}

+ 14 - 0
app/Services/InventoryAccountMissionService.php

@@ -0,0 +1,14 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Services\common\BatchUpdateService;
+
+Class InventoryAccountMissionService
+{
+
+    public function batchUpdateItself($column, array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdateItself('inventory_account_missions', $column, $params);
+    }
+}

+ 5 - 0
app/Services/InventoryCompareService.php

@@ -8,6 +8,7 @@ use App\Http\Controllers\Controller;
 use App\InventoryCompare;
 use App\OracleInvLotLocId;
 use App\Owner;
+use App\Services\common\BatchUpdateService;
 use App\Services\common\QueryService;
 use Carbon\Carbon;
 use Illuminate\Support\Facades\Cache;
@@ -250,4 +251,8 @@ class InventoryCompareService
 //        return $inventoryCompare;
 //    }
 //
+    public function batchUpdateItself($column, array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdateItself('inventory_compares', $column, $params);
+    }
 }

+ 9 - 1
app/Services/InventoryDailyLogService.php

@@ -4,13 +4,14 @@ namespace App\Services;
 
 use App\InventoryDailyLog;
 use App\InventoryDailyLoggingOwner;
+use App\Services\common\BatchUpdateService;
 use App\Services\common\QueryService;
 
 Class InventoryDailyLogService
 {
     //库存体积条件
     function conditionQuery(array $param){
-        $inventoryDailyLogs = InventoryDailyLog::query()->with(['owner','commodity'=>function($query){
+        $inventoryDailyLogs = InventoryDailyLog::query()->with(['depository','owner','commodity'=>function($query){
             $query->with('barcodes');
         }])->orderByDesc('inventory_daily_logs.id');
         $columnQueryRules=[
@@ -28,6 +29,8 @@ Class InventoryDailyLogService
         return $this->conditionQuery($params)->selectRaw("inventory_daily_logs.created_at,inventory_daily_logs.amount,inventory_daily_logs.volumn_occupied,inventory_daily_logs.gross_weight")
             ->leftJoin('owners','inventory_daily_logs.owner_id','owners.id')
                 ->selectRaw('owners.name owner_name')
+            ->leftJoin('depositories','inventory_daily_logs.depository_id','depositories.id')
+                ->selectRaw('depositories.name depository_name')
             ->leftJoin('commodities','inventory_daily_logs.commodity_id','commodities.id')
                 ->selectRaw('commodities.name commodity_name,commodities.sku commodity_sku,commodities.length commodity_length,commodities.width commodity_width,commodities.height commodity_height,commodities.volumn commodity_volumn')
             ->leftJoin('commodity_barcodes','commodity_barcodes.commodity_id','commodities.id')
@@ -53,4 +56,9 @@ Class InventoryDailyLogService
         return InventoryDailyLoggingOwner::query()->firstOrCreate($param);
     }
 
+    public function batchUpdateItself($column, array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdateItself('inventory_daily_logs', $column, $params);
+    }
+
 }

+ 17 - 0
app/Services/OracleBasSkuService.php

@@ -21,6 +21,9 @@ Class OracleBasSkuService
         $query = $this->query($params);
         return $query->get();
     }
+    public function first(array $params){
+        return $this->query($params)->first();
+    }
 
     public function count(array $params){
         $query = $this->query($params);
@@ -30,6 +33,12 @@ Class OracleBasSkuService
     private function query(array $params){
         $query = OracleBasSKU::query();
         foreach ($params as $column => $value){
+            if ($column == "barcode"){
+                $query->where(function ($builder)use($value){
+                   $builder->where('alternate_sku1',$value)->orWhere('alternate_sku2',$value);
+                });
+                continue;
+            }
             if (is_array($value))$query->whereIn($column,$value);
             else $query->where($column,$value);
         }
@@ -54,4 +63,12 @@ Class OracleBasSkuService
         $sql .= " ORDER BY addtime)WHERE rn>".$start." AND rn <= ".($start+$amount);
         return DB::connection('oracle')->select(DB::raw($sql));
     }
+
+    public function 获取BasSKu_通过WMSOrderHeaders($orderHeaders){
+        if(!$orderHeaders){return null;}
+        $customer_Ids = array_unique(data_get($orderHeaders,'*.customerid'));
+        $sku_s = array_unique(data_get($orderHeaders,'*.oracleDOCOrderDetails.*.sku'));
+        if(!$customer_Ids || !$sku_s){return null;}
+        return OracleBasSKU::query()->whereIn('customerid',$customer_Ids)->whereIn('sku',$sku_s)->get();
+    }
 }

+ 16 - 0
app/Services/OrderIssueProcessLogService.php

@@ -21,4 +21,20 @@ class OrderIssueProcessLogService
         return $logs;
     }
 
+    public function create(array  $params)
+    {
+        $ids = $params['ids'];
+        $content = $params['content'];
+        $user_id = Auth::user()['id'];
+        $logs = [];
+        foreach ($ids as $id) {
+            $logs[] = OrderIssueProcessLog::query()->create(['order_issue_id' => $id, 'content' => $content, 'user_id' => $user_id, 'type' => $params['type']]);
+        }
+        return OrderIssueProcessLog::query()->with('user')->whereIn('id',data_get($logs,'*.id'))->get();
+    }
+
+    public function isExistOrderIssueTypeIsEnd($ids){
+        return OrderIssueProcessLog::query()->whereIn('order_issue_id',$ids)->where('type','结束')->count() > 0;
+    }
+
 }

+ 25 - 5
app/Services/OrderIssueService.php

@@ -55,6 +55,10 @@ class OrderIssueService
                 }
             });
         }
+        if(isset($arr['is_new_rejecting'])){
+            $query->where('is_new_rejecting','=',$arr['is_new_rejecting']);
+        }
+
         $query->selectRaw('order_issues.* ,order_issue_on_tops.id top_id ,order_issue_on_tops.remark,order_issue_on_tops.updated_at top_update')
             ->leftJoin('order_issue_on_tops', 'order_issue_on_tops.order_issue_id', '=', 'order_issues.id')
             ->whereNull('order_issue_on_tops.deleted_at')
@@ -87,7 +91,7 @@ class OrderIssueService
                         return $this->searchWay($query,$arr['good_barcode'],'sku');
                     }
                     if ($arr['good_name'] ?? false) {
-                        $query->where('name','like', $arr['good_name']);
+                        $query->where('name','like', '%'.$arr['good_name'].'%');
                     }
                 });
             }
@@ -146,9 +150,11 @@ class OrderIssueService
             $query->where('order_issue_type_id', $condition['order_issue_type_id']);
         }
         if (!($condition['is_handle'] ?? false) && !($condition['final_status'] ?? false)) {
-            $query->where(function ($query) {
-                $query->where('final_status', '<>', '已解决')->orWhereNull('final_status');
-            });
+            if(! (isset($condition['settlement_at_start']) || isset($condition['settlement_at_end']))){
+                $query->where(function ($query) {
+                    $query->where('final_status', '<>', '已解决')->orWhereNull('final_status');
+                });
+            }
         }
         if (isset($condition['logistic_indemnity_money'])) {
             $query->where('logistic_indemnity_money', $condition['logistic_indemnity_money']);
@@ -163,7 +169,16 @@ class OrderIssueService
             }
             $query->whereIn('order_issues.id', $orderIssuesId);
         }
-
+        if(isset($condition['settlement_at_start']) || isset($condition['settlement_at_end'])){
+            $query->whereHas('logs',function($query) use ($condition){
+                if(isset($condition['settlement_at_start'])){
+                    $query->where('created_at','>=',$condition['settlement_at_start'].' 00:00:00')->where('type','结束');
+                }
+                if(isset($condition['settlement_at_end'])){
+                    $query->where('created_at','<=',$condition['settlement_at_start'].' 23:59:59')->where('type','结束');
+                }
+            });
+        }
         return $query;
     }
 
@@ -440,4 +455,9 @@ class OrderIssueService
             }
         }
     }
+
+    public function endOrderIssues(array $ids)
+    {
+        return OrderIssue::query()->whereIn('id',$ids)->update(['final_status'=>'已解决']);
+    }
 }

+ 86 - 132
app/Services/OrderPackageCommoditiesService.php

@@ -12,6 +12,7 @@ use App\OrderPackage;
 use App\OrderPackageCommodities;
 use App\Owner;
 use App\Services\common\BatchUpdateService;
+use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
 
 class OrderPackageCommoditiesService
@@ -403,28 +404,27 @@ class OrderPackageCommoditiesService
         return $orderPackagerCommodities;
     }
 
-    public function createByWmsOrder($orderHeaders,$order_packages,$owner_code_map,$commodities)
+    public function createByWmsOrder($orderHeaders)
     {
-        if(!$order_packages){ return [];}
-        if(!$order_packages){ return [];}
         if(!$orderHeaders){ return [];}
-        $order_packages_logistic_number_map = [];
-        $commodity_owner_id_sku_map = [];
-        foreach ($order_packages as $order_package) {
-            $order_packages_logistic_number_map[$order_package->logistic_number]  = $order_package;
-        }
-        if($commodities ?? false){
-            foreach ($commodities as $commodity) {
-                $commodity_owner_id_sku_map[' owner_id='.$commodity->owner_id.' sku='.$commodity->sku] = $commodity;
-            }
-        }
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
+
+        $order_packages = app(OrderPackageService::class)->getByWmsOrders($orderHeaders);
+        $order_packages_logistic_number_map = $dataHandlerService->dataHeader(['logistic_number'],$order_packages);
+
+        $commodities = app(CommodityService::class)->getByWmsOrders($orderHeaders);
+        $commodity_owner_id_sku_map =  $dataHandlerService->dataHeader(['owner_id','sku'],$commodities);
+
+        $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
+        $owner_code_map = $dataHandlerService->dataHeader(['code'],$owners);
+
         $order_packages_commodities = $this->getByWmsOrder($orderHeaders);
         $map = [];
         foreach ($order_packages_commodities as $item) {
             $key = ' commodity_id='.$item->commodity_id.' order_package_id'.$item->order_package_id.' amount='.$item->amount;
             $map[$key][] = $item;
         }
-
         $insert_params = [];
         foreach ($orderHeaders as $orderHeader) {
             $actAllocationDetails = $orderHeader->actAllocationDetails;
@@ -445,50 +445,30 @@ class OrderPackageCommoditiesService
                 $insert_params = array_merge($insert_params,$params);
                 unset($params);
             }
-            $oracleDOCOrderDetails = $orderHeader->oracleDOCOrderDetails;
-            if(count($logistic_numbers) ==0 && $oracleDOCOrderDetails->count() > 0){
-                $logistic_number = $orderHeader->soreference5;
-                $params = $this->getParamsByOracleDOCOrderDetail($oracleDOCOrderDetails,
-                    $order_packages_logistic_number_map,
-                    $owner_code_map,
-                    $commodity_owner_id_sku_map,
-                    $logistic_number
-                );
-                foreach ($params as $key =>$param) {
-                    $mapkey =  ' commodity_id='.($param['commodity_id'] ?? '').' order_package_id'.($param['order_package_id'] ?? '').' amount='.($param['amount'] ?? '');
-                    if($map[$mapkey] ?? false){
-                        array_shift($map[$mapkey]);
-                        unset($params[$key]);
-                    }
-                }
-                $insert_params = array_merge($insert_params,$params);
-                unset($params);
-            }
         }
-        $order_packages_commodities= [];
         if(count($insert_params) > 0){
-            $order_packages_commodities = $this->create($insert_params);
+            $this->create($insert_params);
         }
         unset($orderHeaders,$order_packages,$owner_code_map,$commodities,$insert_params);
-        return $order_packages_commodities;
     }
 
     public function getParamsByActAllocationDetails($details,array $order_packages_logistic_number_map,array $owner_code_map,array $commodity_owner_id_sku_map,array $logistic_numbers){
-        if(!$details){return [];}
-
-        $fillables = [];
+        /** @var DataHandlerService  $dataHandlerService */
+        $dataHandlerService =  app(DataHandlerService::class);
+        if(!$details)return [];
+        $params = [];
         $create_at = Carbon::now()->format('Y-m-d H:i:s');
+        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
         foreach ($details as $actAllocationDetail) {
             $pickToTraceID = $actAllocationDetail->picktotraceid;
             if(in_array($pickToTraceID,$logistic_numbers)){
-                $orderPackage = $order_packages_logistic_number_map[$pickToTraceID] ?? false;
-                if(!$orderPackage){continue;}
-                $owner = $owner_code_map[$actAllocationDetail->customerid] ?? false;
-                if(!$owner){continue;}
-                $key= ' owner_id=' . $owner->id . ' sku=' . $actAllocationDetail->sku;
-                $commodity = $commodity_owner_id_sku_map[$key] ?? false;
-                if(!$commodity){continue;}
-                $fillables[] = [
+                $orderPackage = $dataHandlerService->getKeyValue(['logistic_number'=>$pickToTraceID],$order_packages_logistic_number_map);
+                if(!$orderPackage)continue;
+                $owner = $dataHandlerService->getKeyValue(['code'=>$actAllocationDetail->customerid],$owner_code_map);
+                if(!$owner)continue;
+                $commodity = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id,'sku'=>$actAllocationDetail->sku],$commodity_owner_id_sku_map);
+                if(!$commodity)continue;
+                $params[] = [
                     'commodity_id' =>$commodity->id,
                     'order_package_id' =>$orderPackage->id,
                     'amount' => $actAllocationDetail->qty,
@@ -497,31 +477,9 @@ class OrderPackageCommoditiesService
             }
         }
         unset($details,$order_packages_logistic_number_map,$owner_code_map,$commodity_owner_id_sku_map,$logistic_numbers);
-        return $fillables;
+        return $params;
     }
-    public function getParamsByOracleDOCOrderDetail($details,array $order_packages_logistic_number_map,array $owner_code_map,array $commodity_owner_id_sku_map,$logistic_number)
-    {
-        if(!$details){ return [];}
-
-        $orderPackage = $order_packages_logistic_number_map[$logistic_number] ?? false;
-        if(!$orderPackage){return [];}
 
-        $fillables = [];
-        $create_at = Carbon::now()->format('Y-m-d H:i:s');
-        foreach ($details as $oracleDOCOrderDetail) {
-            $owner = $owner_code_map[$oracleDOCOrderDetail->customerid] ?? false;
-            if(!$owner){continue;}
-            $commodity = $commodity_owner_id_sku_map[ ' owner_id='.$owner->id.' sku='.$oracleDOCOrderDetail->sku];
-            $fillables[] = [
-                'commodity_id' =>$commodity->id,
-                'order_package_id' =>$orderPackage->id,
-                'amount' => $oracleDOCOrderDetail->qtyordered,
-                'created_at' => $create_at
-            ];
-        }
-        unset($details,$order_packages_logistic_number_map,$owner_code_map,$commodity_owner_id_sku_map,$logistic_number);
-        return $fillables;
-    }
 
     public function create(array $params){
         if(!$params){return [];}
@@ -540,40 +498,36 @@ class OrderPackageCommoditiesService
         }
     }
 
-
     public function updateByWmsOrder($orderHeaders){
         if(!$orderHeaders){return ;}
-        /** @var CommodityService $commodityService */
-        /** @var OwnerService $ownerService */
-        $commodityService = app(CommodityService::class);
-        $ownerService = app(OwnerService::class);
-        $owners =$ownerService->getByWmsOrders($orderHeaders);
-        $owner_code_map = [];
-        $owner_id_map = [];
-        foreach ($owners as $owner) {
-            $owner_code_map[$owner->code] = $owner;
-            $owner_id_map[$owner->id] = $owner;
-        }
-        $commodities = $commodityService->getByWmsOrders($orderHeaders);
+        /** @var DataHandlerService $dataHandlerService*/
+        $dataHandlerService = app(DataHandlerService::class);
+        $commodities = app(CommodityService::class)->getByWmsOrders($orderHeaders);
+        $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
+        $owners_id_map = $dataHandlerService->dataHeader(['id'],$owners);
+        $owner_code_map = $dataHandlerService->dataHeader(['code'],$owners);
+        $commodity_owner_id_sku_map = $dataHandlerService->dataHeader(['owner_id','sku'],$commodities);
+
         $commodities_owner_code_code_map = [];
         foreach ($commodities as $commodity) {
-            $owner = $owner_id_map[$commodity->owner_id] ?? '';
+            $owner = $dataHandlerService->getKeyValue(['id'=>$commodity->owner_id],$owners_id_map);
             $commodities_owner_code_code_map[' owner_code='.$owner->code.' code='.$commodity->code] = $commodity;
         }
 
         $order_nos = data_get($orderHeaders,'*.orderno');
-        $order_package_commodities = OrderPackageCommodities::query()
-            ->with('package.order')
+        $order_package_commodities = OrderPackageCommodities::query()->with('package.order','commodity')
             ->whereHas('package.order',function($query) use ($order_nos){
                 $query->whereIn('code',$order_nos);
             })->get();
+
+        $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 = [];
-        $order_package_logistic_numbers_map = [];
         foreach ($order_package_commodities as $order_package_commodity) {
-            $order_package = $order_package_commodity->package;
-            $order = $order_package->order;
+            $order = $order_package_commodity->package->order;
             $order_no_map[$order->code][] = $order_package_commodity;
-            $order_package_logistic_numbers_map[$order_package->logistic_number] = $order_package;
         }
 
         $insertParams = [];
@@ -581,57 +535,52 @@ class OrderPackageCommoditiesService
         $updated_at = Carbon::now()->toDateTimeString();
         $created_at = Carbon::now()->toDateTimeString();
         foreach ($orderHeaders as $orderHeader) {
-            $order_no = $orderHeader->orderno;
-            $order_package_commodities = $order_no_map[$order_no] ?? false;
-            if(!$order_package_commodities){continue;}
+            $order_package_commodities = $order_no_map[$orderHeader->orderno] ?? false;
             $actAllocationDetails = $orderHeader->actAllocationDetails;
-            foreach ($actAllocationDetails as $actAllocationDetail) {
-                $logistic_number = $actAllocationDetail->picktotraceid;
-                if(in_array($logistic_number,['*','',null])){continue;}
-                $order_package = $order_package_logistic_numbers_map[$logistic_number] ?? false;
-                if(!$order_package){continue;}
-                $key = ' owner_code='.$actAllocationDetail->code.' code='.$actAllocationDetail->sku;
-                $commodity = $commodities_owner_code_code_map[$key] ?? false;
-                if(!$commodity){continue;}
-                foreach ($order_package_commodities as $key=>$order_package_commodity) {
-                    if($order_package_commodity->sku == $actAllocationDetail->sku  &&
-                        $order_package_commodity->commodity_id ==  $actAllocationDetail->id &&
-                        $order_package_commodity->amount == $actAllocationDetail->qty){
-                        unset($order_package_commodities[$key]);
-                        break;
-                    }elseif($order_package_commodity->sku == $actAllocationDetail->sku  &&
-                        $order_package_commodity->commodity_id ==  $actAllocationDetail->id){
-                        $updateParams[] = [
-                            'id' => $order_package_commodity->id,
-                            'commodity_id' => $order_package_commodity->commodity_id,
-                            'amount' => $actAllocationDetail->qty,
-                            'updated_at' => $updated_at
-                        ];
-                        unset($order_package_commodities[$key]);
-                        break;
-                    }elseif($order_package_commodity->sku !== $actAllocationDetail->sku  &&
-                        $order_package_commodity->amount !== $actAllocationDetail->qty){
-                        $insertParams[] = [
-                            'order_package_id' => $order_package->id,
-                            'commodity_id' => $order_package_commodity->commodity_id,
-                            'amount' => $actAllocationDetail->qty,
-                            'created_at' => $created_at
-                        ];
-                        break;
+            $logistic_numbers = array_unique(array_diff(data_get($actAllocationDetails,'*.picktotraceid'),['','*',null])) ;
+            if(!$order_package_commodities){
+                $params =  $this->getParamsByActAllocationDetails($actAllocationDetails,$order_package_logistic_numbers_map, $owner_code_map, $commodity_owner_id_sku_map, $logistic_numbers);
+                foreach ($params as $param) {
+                    $insertParams[] = $param;
+                }
+                continue;
+            }
+            if($actAllocationDetails->count() > count($order_package_commodities)){
+                $deleteKey = [];
+                foreach ($actAllocationDetails as $key1=>$actAllocationDetail) {
+                    foreach ( $order_package_commodities as $key=>$item) {
+                        $commodity = $item->commodity;
+                        if($actAllocationDetail->sku == $commodity->sku && $item->amount ==  $actAllocationDetail->qty){
+                            unset($order_package_commodities[$key]);
+                            unset($actAllocationDetails[$key1]);
+                            $deleteKey[] = $key1;
+                            break;
+                        }else if($item ->sku == $commodity->sku && $item->amount !=  $actAllocationDetail->qty){
+                            $updateParams[] = [
+                                'id' => $item->id,
+                                'commodity_id' => $commodity->id,
+                                'amount' => $actAllocationDetail->qty,
+                                'updated_at' => $updated_at
+                            ];
+                            $deleteKey[] = $key1;
+                            unset($actAllocationDetails[$key1]);
+                        }
                     }
                 }
+                $actAllocationDetails  =$actAllocationDetails->filter(function ($value, $key) use($deleteKey) {
+                    return !in_array($key, $deleteKey);
+                });
+                $params =  $this->getParamsByActAllocationDetails($actAllocationDetails,$order_package_logistic_numbers_map, $owner_code_map, $commodity_owner_id_sku_map, $logistic_numbers);
+                foreach ($params as $param) {
+                    $insertParams[] = $param;
+                }
+                continue;
             }
         }
 
         if(count($updateParams) > 0){
             $this->batchUpdate($updateParams);
         }
-//        {
-//            /** @var OrderPackageService $orderPackageService */
-//            $orderPackageService = app(OrderPackageService::class);
-//            $order_packages = $orderPackageService->getByWmsOrders($orderHeaders);
-//            $this->createByWmsOrder($orderHeaders, $order_packages, $owner_code_map, $commodities);
-//        }
 
         if(count($insertParams) > 0){
             try {
@@ -652,4 +601,9 @@ class OrderPackageCommoditiesService
             })->get();
     }
 
+
+    public function batchUpdateItself($column, array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdateItself('order_package_commodities', $column, $params);
+    }
 }

+ 40 - 123
app/Services/OrderPackageService.php

@@ -9,6 +9,7 @@ use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
 use App\Services\common\BatchUpdateService;
+use App\Services\common\DataHandlerService;
 use Carbon\Carbon;
 
 class OrderPackageService
@@ -346,184 +347,100 @@ class OrderPackageService
         }
     }
 
-    public function createByWmsOrder($orderHeaders_map)
+    public function createByWmsOrder($orderHeaders)
     {
-        if(!$orderHeaders_map ){return [];}
+        if(!$orderHeaders ){return ;}
         /** @var OrderService $orderService */
         $orderService = app(OrderService::class);
-        $orders = $orderService->getByWmsOrders($orderHeaders_map);
-        if(!$orders){return [];}
-        $orders_code_map = [];
-        foreach ($orders as $order) {
-            $orders_code_map[$order->code] = $order;
-        }
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
+        $order_headers_orderNo_map =  $dataHandlerService->dataHeader(['orderno'],$orderHeaders);
 
-        $order_packages_logistic_number_map = [];
+        $orders = $orderService->getByWmsOrders($orderHeaders);
+        if(!$orders){return ;}
         $order_packages = OrderPackage::query()->whereIn('order_id',data_get($orders,'*.id'))->get();
-        foreach ($order_packages as $order_package) {
-//            $key = ' order_id='.$order_package->order_id.' logistic_number='.$order_package->logistic_number;
-            $key =  ' order_id='.$order_package->order_id.' logistic_number='.$order_package->logistic_number;
-            $order_packages_logistic_number_map[$key] = $order_package;
-        }
+        $order_packages_logistic_number_map  =$dataHandlerService->dataHeader(['order_id','logistic_number'],$order_packages);
 
         $insert_params = [];
-        foreach ($orders_code_map as $key=>$order) {
-            $orderHeader = $orderHeaders_map[$key];
+        foreach ($orders as $order) {
+            $orderHeader =  $dataHandlerService->getKeyValue(['orderno'=>$order->code],$order_headers_orderNo_map);
             if(!$orderHeader){ continue;}
             $params = $this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
             if(!$params){continue;}
-            $insert_params[] = $params;
+            foreach ($params as $param) {
+                $key = ['order_id'=>$param['order_id'],'logistic_number'=>$param['logistic_number']];
+                $orderPackage = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
+                if(isset($orderPackage)){
+                    continue;
+                }else{
+                    $insert_params[] = $param;
+                }
+            }
         }
         if(count($insert_params)>0){
             $order_packages = $this->create($insert_params);
         }
+        unset($orders_code_map,$order_packages_logistic_number_ma,$insert_params,$order_packages,$order_package_commodities);
         /** @var OrderPackageCommoditiesService $orderPackageCommodityService */
-        /** @var OwnerService  $ownerService */
-        /** @var CommodityService  $commodityService */
         $orderPackageCommodityService = app(OrderPackageCommoditiesService::class);
-        $ownerService = app(OwnerService::class);
-        $commodityService = app(CommodityService::class);
-        $owner_code_map = [];
-
-        $commodities = $commodityService->getByWmsOrders($orderHeaders_map);
-        $owners = $ownerService->getByWmsOrders($orderHeaders_map);
-        foreach ($owners as $owner) {
-            $owner_code_map[$owner->code] = $owner;
-        }
-        $order_package_commodities = $orderPackageCommodityService->createByWmsOrder($orderHeaders_map,$order_packages,$owner_code_map,$commodities);
-        unset($orderHeaders_map,$orders_code_map,$fillables,$order_packages_logistic_number_map);
-        $this->updateWeightAndBulk($order_packages,$order_package_commodities);
-        unset($order_packages,$order_package_commodities);
+        $orderPackageCommodityService->createByWmsOrder($orderHeaders);
+        unset($orderHeaders);
     }
 
 
 
     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');;
         foreach ($logistic_numbers as $logistic_number) {
-            $map_key = ' order_id='.$order->id.' logistic_number='.$logistic_number;
-            if(isset($order_packages_logistic_number_map[$map_key])){ continue;}
+            $key  = ['order_id'=>$order->id,'logistic_number'=>$logistic_number];
+            $orderPackage = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
+            if(isset($orderPackage)){ continue;}
             $params[] = [
-                'order_id' => $order->id, 'logistic_number' => $logistic_number,'created_at' => $created_at
+                'order_id' => $order->id, 'logistic_number' => $logistic_number,'created_at' => $created_at,'updated_at' => $updated_at
             ];
         }
-        $oracleDOCOrderDetails = $orderHeader->oracleDOCOrderDetails;
-        if(count($logistic_numbers) === 0 && count($oracleDOCOrderDetails) > 0){
-            $key = ' logistic_number='.$orderHeader->soreference5;
-            if(!isset($orderHeader->soreference5) || in_array($orderHeader->soreference5,[''.'*',null])){return $params;}
-            if(!isset($order_packages_logistic_number_map[$key])){
-                $params[] = [
-                    'order_id' => $order->id, 'logistic_number' => $orderHeader->soreference5,'created_at' => $created_at
-                ];
-            }
-        }
         return $params;
     }
 
-    public function updateWeightAndBulk($orderPackages,$orderPackageCommodities){
-        if(!$orderPackageCommodities){return ;}
-        if(!$orderPackages){return ;}
-        $orderPackageCommodities_map =[];
-        foreach ($orderPackageCommodities as $orderPackageCommodity) {
-            $order_package_id = $orderPackageCommodity->order_package_id;
-            if(!isset($orderPackageCommodities_map[$order_package_id])){
-                $orderPackageCommodities_map[$order_package_id]= [];
-            }
-            $orderPackageCommodities_map[$order_package_id][] = $orderPackageCommodity;
-        }
-
-        $update_params = [['id','bulk','updated_at']];
-        $updated_at = Carbon::now()->format('Y-m-d H:i:s');
-        foreach ($orderPackages as $orderPackage) {
-            $order_package_id = $orderPackage->id;
-            $orderPackageCommodity_list = $orderPackageCommodities_map[$order_package_id] ?? [];
-            if(!$orderPackageCommodity_list){continue;}
-            if( isset($orderPackage['bulk']) && $orderPackage['bulk']!=0){
-                continue;
-            }
-            $params = ['id'=>$order_package_id,'bulk' => null,'updated_at'=>$updated_at];
-            foreach ($orderPackageCommodity_list as $orderPackageCommodity) {
-                $commodity = $orderPackageCommodity->commodity;
-                if(!$commodity['length'] || !$commodity['width'] || !$commodity['height']){
-                    continue;
-                }
-//                $bulk = bcmul($commodity['length'],$commodity['width'],5);
-//                $bulk = bcmul($commodity['height'],$bulk,5);
-//                $bulk = bcmul($bulk,$orderPackageCommodity->amount,5);
-                $bulk = round($commodity['length']*$commodity['width'],5);
-                $bulk = round($commodity['height']*$bulk,5);
-                $bulk = round($bulk*$orderPackageCommodity->amount,5);
-//                if($bulk>=1000000)bcdiv($bulk,1000000000,3);
-                if($bulk>=1000000)round($bulk/1000000000,3);
-                $params['bulk'] +=  $bulk;
-            }
-            if($params['bulk'] == $orderPackage->bulk && $orderPackage->bulk!= 0){continue;}
-            $update_params[]= $params;
-        }
-        if(count($update_params) > 1){
-            $this->batchUpdate($update_params);
-        }
-    }
-
     public function updateOrderPackageByWmsOrder($orderHeaders){
         /** @var OrderPackageCommoditiesService $orderPackageCommoditiesService */
         $orderPackageCommoditiesService =  app(OrderPackageCommoditiesService::class);
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService = app(DataHandlerService::class);
         if(!$orderHeaders){return;}
 
-        $order_nos = data_get($orderHeaders,'*.orderno');
-        $orders = Order::query()->with('packages')->whereIn('code',$order_nos)->get();
-
-        $orders_code_map = [];
-        $order_packages_logistic_number_map = [];
-        foreach ($orders as $order) {
-            $orders_code_map[$order->code] = $order;
-            $order_packages = $order->packages;
-            if(!$order_packages){continue;}
-            foreach ($order_packages as $order_package) {
-                $key = ' order_id='.$order->id.' logistic_number='.$order_package->logistic_number;
-                $order_packages_logistic_number_map[$key] =$order_package;
-            }
-        }
+        $orders = Order::query()->with('packages')->whereIn('code',data_get($orderHeaders,'*.orderno'))->get();
+        $orders_code_map =  $dataHandlerService->dataHeader(['code'],$orders);
 
+        $orderPackages =$this->getByWmsOrders($orderHeaders);
+        $order_packages_logistic_number_map = $dataHandlerService->dataHeader(['order_id','logistic_number'],$orderPackages);
 
         $insertParams = [];
         foreach ($orderHeaders as $orderHeader) {
-            $order = $orders_code_map[$orderHeader->orderno] ?? false;
+            $order = $dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno ?? ''],$orders_code_map);
             if(!$order){continue;}
             $order_packages = $order->packages;
             if(!$order_packages){continue;}
             $params =$this->getParamsByOrderHeader($orderHeader,$order,$order_packages_logistic_number_map);
             if(count($params) > 0){
                 foreach ($params as $param) {
-                    $key = ' order_id='.$param['order_id'].' logistic_number='.$param['logistic_number'];
-                    $order_package =  $order_packages_logistic_number_map[$key] ?? false;
-//                    $order_package =  $order_packages_logistic_number_map[$param['logistic_number']] ?? false;
-//                    $order_package = $order_packages->where('logistic_number',$param)->first();
+                    $key  = ['order_id'=>$param['order_id'],'logistic_number'=>$param['logistic_number']];
+                    $order_package = $dataHandlerService->getKeyValue($key,$order_packages_logistic_number_map);
                     if($order_package){continue;}
                     $insertParams[] = $param;
                 }
             }
         }
         if(count($insertParams)>0){
-            $this->insert($insertParams);
+            $this->create($insertParams);
         }
-
         $orderPackageCommoditiesService->updateByWmsOrder($orderHeaders);
-        $order_packages = OrderPackage::query()->with('order')
-            ->whereHas('order',function($query) use($order_nos){
-                $query->whereIn('code',$order_nos);
-            })->get();
-
-        $order_package_ids = data_get($order_packages,'*.id');
-        $order_package_commodities = OrderPackageCommodities::query()
-            ->with('package')
-            ->whereHas('package',function($query) use ($order_package_ids){
-                $query->whereIn('id',$order_package_ids);
-            })->get();
-        $this->updateWeightAndBulk($order_packages,$order_package_commodities);
     }
 
     public function getLogisticNumbersByOrderHeader($orderHeader){

+ 35 - 55
app/Services/OrderService.php

@@ -105,7 +105,8 @@ class OrderService
             $sql.=" and addtime<=to_date('".$orderdate_end.":59','yyyy-mm-dd hh24:mi:ss')";
         }
         if ($customerid){
-            $arr = explode(',',$customerid);
+            if (!is_array($customerid))$arr = explode(',',$customerid);
+            else $arr = $customerid;
             if (count($arr)>0) {
                 $sql.=" and customerid in (";
                 foreach ($arr as $index=>$str){
@@ -265,6 +266,11 @@ class OrderService
     }
 
     public function paginate(array $params){
+        if (($params['is_display_all'] ?? false) && !($params['codename_c'] ?? false) && !($params['codename_c_end'] ?? false)){
+            $params['codename_c'] = "00";
+            $params['codename_c_end'] = "62";
+        }
+
         $sql = $this->getSql($params,$params['page'] ?? 1, $params['paginate'] ?? 50);
         $orders=DB::connection('oracle')->select(DB::raw($sql));
         return $this->orderFormat($orders);
@@ -805,15 +811,12 @@ class OrderService
         $shopService = app(ShopService::class);
         $orderPackageService = app(OrderPackageService::class);
 
-        $orderHeaders_map = [];$owners_code_map = [];$logistics_code_map = [];$shop_name_map=[]; $owners_id_map = [];
+        $owners_code_map = [];$logistics_code_map = [];$shop_name_map=[]; $owners_id_map = [];
 
         $owners = $ownerService->getByWmsOrders($orderHeaders);
         $logistics = $logisticService->getByWmsOrders($orderHeaders);
         $shops = $shopService->getByWmsOrders($orderHeaders);
 
-        foreach ($orderHeaders as $orderHeader) {
-            $orderHeaders_map[$orderHeader->orderno] = $orderHeader;
-        }
         foreach ($owners as $owner) {
             $owners_code_map[$owner->code] = $owner;
             $owners_id_map[$owner->id] = $owner;
@@ -827,30 +830,19 @@ class OrderService
             $key = ' owner_code='.$owner_code.' name='.$shop->name;
             $shop_name_map[$key] = $shop;
         }
-
-//        $this->filterExitingOrder($orderHeaders_map);
-        $insert_params = $this->getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map);
-        $this->create($insert_params);
-
-        $orderPackageService->createByWmsOrder($orderHeaders_map);
-        $order_nos = array_keys($orderHeaders_map);
+        $insert_params = $this->getParamsByOrderHeader($orderHeaders,$owners_code_map,$logistics_code_map,$shop_name_map);
+        if(count($insert_params)> 0){
+            $this->create($insert_params);
+        }
+        $orderPackageService->createByWmsOrder($orderHeaders);
+        $order_nos = data_get($orderHeaders,'*.orderno');
         unset($orderHeaders_map,$orders_code_map,$shop_name_map,$logistics_code_map,$owners_code_map);
         return Order::query()->whereIn('code',$order_nos)->get();
     }
 
-    public function filterExitingOrder(&$orderHeaders_map){
-        $order_map = [];
-        $order_nos = array_keys($orderHeaders_map);
-        $orders = Order::query()->whereIn('code',$order_nos)->get();
 
-        foreach ($orders as $order) {
-            $key = $order->code;
-            $order_map[$key] = $order;
-        }
-        $orderHeaders_map = array_diff_key($orderHeaders_map,$order_map);
-    }
-
-    public function getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map){
+    public function getParamsByOrderHeader($orderHeaders_map,$owners_code_map,$logistics_code_map,$shop_name_map)
+    {
         $params = [];
         // 自提 转 新杰物流
         $orders = Order::query()->whereIn('code',data_get($orderHeaders_map,'*.orderno'))->get();
@@ -903,33 +895,23 @@ class OrderService
 
     public function updateByWmsOrders($orderHeaders)
     {
+        if(!$orderHeaders){return null;}
+        /** @var DataHandlerService $dataHandlerService */
+        $dataHandlerService =  app(DataHandlerService::class);
         /** @var OrderPackageService $orderPackageService */
         $orderPackageService = app(OrderPackageService::class);
         if(!$orderHeaders || $orderHeaders->count() == 0){return null;}
-        $order_nos = data_get($orderHeaders,'*.orderno');
-        $orders = Order::query()->whereIn('code',$order_nos)->get();
-        $order_code_map = [];
-        foreach ($orders as $order) {
-            $order_code_map[$order->code] = $order;
-        }
-
+        $orders = $this->getByWmsOrders($orderHeaders);
+        $orders_code_map =  $dataHandlerService->dataHeader(['code'],$orders);
         $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
-        $owner_code_map = [];
-        foreach ($owners as $owner) {
-            $owner_code_map[$owner->code] = $owner;
-        }
+        $owner_code_map = $dataHandlerService->dataHeader(['code'],$owners);
+
         $logistics = app(LogisticService::class)->getByWmsOrders($orderHeaders);
-        $logistics_code_map = [];
-        foreach ($logistics as $logistic) {
-            $logistics_code_map[$logistic->code] = $logistic;
-        }
+        $logistics_code_map = $dataHandlerService->dataHeader(['code'],$logistics);
 
         $shops = app(ShopService::class)->getByWmsOrders($orderHeaders);
-        $shops_owner_id_name_map = [];
-        foreach ($shops as  $shop){
-            $key = ' owner_id='.$shop->owner_id.' name='.$shop->name;
-            $shops_owner_id_name_map[$key] = $shop;
-        }
+        $shops_map = $dataHandlerService->dataHeader(['owner_id','name'],$shops);
+
         $updateParams = [[
             'id','owner_id','wms_status','logistic_id','shop_id','consignee_name','consignee_phone','province','city','district','address','client_code','updated_at','wms_edittime'
         ]];
@@ -937,20 +919,18 @@ class OrderService
         // 新杰物流
         $logistic_XJWL = Logistic::query()->where('code','XJWL')->first();
         foreach ($orderHeaders as $orderHeader) {
-            $order_no = $orderHeader->orderno;
-            $order = $order_code_map[$order_no] ?? false;
+            $order =$dataHandlerService->getKeyValue(['code'=>$orderHeader->orderno],$orders_code_map);
             if(!$order){continue;}
-            $logistic = $logistics_code_map[$orderHeader->userdefine1] ?? '';
+            $logistic = $dataHandlerService->getKeyValue(['code'=>$orderHeader->userdefine1] ,$logistics_code_map);
             // 自提 转 新杰物流
             if($logistic != '' && $logistic->name == '自提'){
                 $logistic = $logistic_XJWL;
             }
-            $owner = $owner_code_map[$orderHeader->customerid] ?? '';
-            $shop = $shops_owner_id_name_map[' owner_id='.$owner->id.' name='.$orderHeader->issuepartyname] ?? '';
-
-            $shop_id = $shop['id'] ?? '';
-            $logistic_id = $logistic->id ?? '';
-            $owner_id = $owner['id'] ?? '';
+            $owner = $dataHandlerService->getKeyValue(['code'=>$orderHeader->customerid] ,$owner_code_map);
+            $shop = $dataHandlerService->getKeyValue(['owner_id'=>$owner->id ?? '','name'=> $orderHeader->issuepartyname] ,$shops_map);
+            $shop_id = $shop->id ?? null;
+            $logistic_id = $logistic->id ?? null;
+            $owner_id = $owner->id ?? null;
 
             if($order->wms_status != $orderHeader->oracleBASCode_codename_c ||
                 $order->logistic_id != $logistic_id ||
@@ -966,7 +946,7 @@ class OrderService
                 $order->wms_edittime != $orderHeader->edittime){
                 $updateParams[] = [
                     'id'=>$order->id,
-                    'owner_id' => $owner->id ?? null,
+                    'owner_id' => $owner_id,
                     'wms_status' => $orderHeader->oracleBASCode_codename_c ?? '',
                     'logistic_id' => $logistic_id,
                     'shop_id' => $shop_id,
@@ -981,7 +961,7 @@ class OrderService
                     'wms_edittime' =>$orderHeader->edittime];
             }
         }
-        if(count($updateParams) > 0){
+        if(count($updateParams) > 1){
             $this->batchUpdate($updateParams);
         }
         $this->createByWmsOrder($orderHeaders);

+ 74 - 43
app/Services/OrderTrackingService.php

@@ -7,6 +7,7 @@ use App\OracleDOCOrderHeader;
 use App\OrderPackageCommodities;
 use App\OrderTracking;
 use App\Services\common\BatchUpdateService;
+use App\Services\common\DataHandlerService;
 use App\Services\common\QueryService;
 use Illuminate\Support\Facades\Auth;
 use Maatwebsite\Excel\Facades\Excel;
@@ -366,6 +367,14 @@ class OrderTrackingService
     public function createByWmsOrderHeader($orderHeaders)
     {
         if(!$orderHeaders){return;}
+        /** @var DataHandlerService $dataService */
+        $dataService = app(DataHandlerService::class);
+
+        $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
+        $owner_id_map = $basSKUs_data = $dataService->dataHeader(['id'],$owners);
+
+        $BasSKUs = app(OracleBasSkuService::class)->获取BasSKu_通过WMSOrderHeaders($orderHeaders);
+        $BasSKUs_code_sku_map = $dataService->dataHeader(['customerid','sku'],$BasSKUs);
         $order_nos = data_get($orderHeaders,'*.orderno');
         $order_package_commodities  = OrderPackageCommodities::query()
             ->with('package.order')
@@ -402,8 +411,8 @@ class OrderTrackingService
                 if (strpos($notes, '[')) {
                     $arr= str_split($notes,strpos($notes,'['));
                     $client = $arr[0] ?? '';
-                    $order_remark = $arr[1] ?? '';
-                    $order_remark = str_replace(['[',']'],'',$order_remark);
+//                    $order_remark = $arr[1] ?? '';
+                    $order_remark = str_replace(['[',']'],'', $arr[1] ?? '');
                 }
             }
             $web_order_number = null;
@@ -411,6 +420,10 @@ class OrderTrackingService
                 $web_order_number = $order_header['soreference1'];
             }
 
+            $owner = $dataService->getKeyValue(['id'=>$order->owner_id],$owner_id_map);
+            $basSkU = $dataService->getKeyValue(['customerid'=>$owner->code,'sku'=>$item->commodity->sku],$BasSKUs_code_sku_map);
+            $gross_weight = round($basSkU->grossweight * $item->amount, 2);
+            $bulk = round($basSkU->cube * $item->amount, 2);
             $params[] =[
                 'order_package_commodity_id' => $item->id,
                 'owner_id' => $order->owner_id,
@@ -418,7 +431,9 @@ class OrderTrackingService
                 'created_at' => $order->created_at,
                 'order_remark' => $order_remark,
                 'pick_up_at' => $order_header->lastshipmenttime, // 提货时间,
-                'web_order_number' => $web_order_number
+                'web_order_number' => $web_order_number,
+                'gross_weight'=> $gross_weight,
+                'bulk'=> $bulk
             ];
         }
 
@@ -435,6 +450,8 @@ class OrderTrackingService
     public function updateByWmsOrderHeaders($orderHeaders)
     {
         if(!$orderHeaders){return ;}
+        /** @var DataHandlerService $dataService */
+        $dataService = app(DataHandlerService::class);
         $order_nos = data_get($orderHeaders,'*.orderno');
         $order_package_commodities = OrderPackageCommodities::query()
             ->with('package.order')
@@ -446,10 +463,7 @@ class OrderTrackingService
         foreach ($orderTrackings as $orderTracking) {
             $order_tracking_id_map[$orderTracking->order_package_commodity_id] = $orderTracking;
         }
-//        $is_exist_ids = data_get($orderTrackings,'*.order_package_commodity_id');
-//        $order_package_commodities = $order_package_commodities->filter(function($order_package_commodity) use($is_exist_ids){
-//           return !in_array($order_package_commodity->id,$is_exist_ids);
-//        });
+
         $order_package_commodity_order_code_map = [];
         $order_code_map = [];
         foreach ($order_package_commodities as $order_package_commodity) {
@@ -459,19 +473,14 @@ class OrderTrackingService
             $order_package_commodity_order_code_map[$order->code][] = $order_package_commodity;
         }
 
-//        $insert_params = [];
-//        foreach ($orderHeaders as $orderHeader) {
-//            $order_package_commodity_list = $order_package_commodity_order_code_map[$orderHeader->orderno] ?? false;
-//            if(!$order_package_commodity_list){continue;}
-//            $order = $order_code_map[$orderHeader->orderno];
-//            $params = $this->getParamsByOrderHeaderAndOrder($orderHeader,$order);
-//            foreach ($order_package_commodity_list as $item) {
-//                $params['order_package_commodity_id'] = $item->id;
-//                $insert_params = $params;
-//            }
-//        }
+        $owners = app(OwnerService::class)->getByWmsOrders($orderHeaders);
+        $owner_code_map = $basSKUs_data = $dataService->dataHeader(['code'],$owners);
+
+        $BasSKUs = app(OracleBasSkuService::class)->获取BasSKu_通过WMSOrderHeaders($orderHeaders);
+        $BasSKUs_code_sku_map = $dataService->dataHeader(['customerid','sku'],$BasSKUs);
+
         $update_params = [];
-        $update_params[0] =['id','client','pick_up_at','order_remark'];
+        $update_params[0] =['id','client','pick_up_at','order_remark','gross_weight','bulk'];
         foreach ($orderHeaders as $orderHeader) {
             $order_package_commodity_list = $order_package_commodity_order_code_map[$orderHeader->orderno] ?? false;
 
@@ -483,47 +492,69 @@ class OrderTrackingService
                 if(!$order_tracking){continue;}
 
                 $params = $this->getParamsByOrderHeaderAndOrder($orderHeader,$order);
-
+                $owner =  $dataService->getKeyValue(['code'=>$orderHeader->customerid],$owner_code_map);
+                $basSku = $dataService->getKeyValue(['customerid'=>$owner->code,'sku'=>$order_package_commodity->commodity->sku],$BasSKUs_code_sku_map);
+                $gross_weight = round($basSku->grossweight * $order_package_commodity->amount,2) ;
+                $bulk = round($basSku->cube * $order_package_commodity->amount,2) ;
                 if($order_tracking->owner_id != $params['owner_id'] ||
                     $order_tracking->client !=$params['client'] ||
                     $order_tracking->order_remark != $params['order_remark'] ||
-                    $order_tracking->pick_up_at != $params['pick_up_at']){
+                    $order_tracking->pick_up_at != $params['pick_up_at'] ||
+                    $order_tracking->gross_weight != $gross_weight ||
+                    $order_tracking->bulk != $bulk){
                     $update_params[] = [
                         'id' => $order_tracking->id,
                         'client' => $params['client'],
                         'pick_up_at' => $params['pick_up_at'],
                         'order_remark' => $params['order_remark'],
                         'web_order_number' => $params['web_order_number'],
+                        'gross_weight'  => $gross_weight,
+                        'bulk' => $bulk
                     ];
                 }
             }
         }
-
         if(count($update_params) > 1){
             $this->batchUpdate($update_params);
         }
-
-        $is_exist_ids = data_get($orderTrackings,'*.order_package_commodity_id');
-        $order_package_commodities = $order_package_commodities->filter(function($order_package_commodity) use($is_exist_ids){
-            return !in_array($order_package_commodity->id,$is_exist_ids);
-        });
-        $order_package_commodity_order_code_map = [];
-        $order_code_map = [];
-        foreach ($order_package_commodities as $order_package_commodity) {
-            $order =$order_package_commodity->package->order;
-            if(!$order){continue;}
-            $order_code_map[$order->code] = $order;
-            $order_package_commodity_order_code_map[$order->code][] = $order_package_commodity;
-        }
         $insert_params = [];
         foreach ($orderHeaders as $orderHeader) {
-            $order_package_commodity_list = $order_package_commodity_order_code_map[$orderHeader->orderno] ?? false;
-            if(!$order_package_commodity_list){continue;}
-            $order = $order_code_map[$orderHeader->orderno];
-            $params = $this->getParamsByOrderHeaderAndOrder($orderHeader,$order);
+            $order_package_commodity_list=  $order_package_commodity_order_code_map[$orderHeader->orderno] ?? false;
+            if(!$order_package_commodity_list)continue;
             foreach ($order_package_commodity_list as $item) {
-                $params['order_package_commodity_id'] = $item->id;
-                $insert_params[] = $params;
+                $order_tracking =  $order_tracking_id_map[$item->id] ?? false;
+                if(!$order_tracking){
+                    $order = $order_code_map[$orderHeader->orderno] ?? false;
+                    if(!$order) continue;
+                    $client = null;
+                    $order_remark = null;
+                    if ($orderHeader['notes'] ?? false) {
+                        $notes = $orderHeader->notes;
+                        if (strpos($notes, '[')) {
+                            $arr= str_split($notes,strpos($notes,'['));
+                            $client = $arr[0] ?? '';
+                            $order_remark = str_replace(['[',']'],'', $arr[1] ?? '');
+                        }
+                    }
+                    $web_order_number = null;
+                    if(preg_match('/^O[\d]/',$orderHeader['soreference1'])){
+                        $web_order_number = $orderHeader['soreference1'];
+                    }
+                    $basSkU = $dataService->getKeyValue(['customerid'=>$orderHeader->customerid,'sku'=>$item->commodity->sku],$BasSKUs_code_sku_map);
+                    $gross_weight = round($basSkU->grossweight * $item->amount, 2);
+                    $bulk = round($basSkU->cube * $item->amount, 2);
+                    $insert_params[] =[
+                        'order_package_commodity_id' => $item->id,
+                        'owner_id' => $order->owner_id,
+                        'client' => $client,
+                        'created_at' => $order->created_at,
+                        'order_remark' => $order_remark,
+                        'pick_up_at' => $orderHeader->lastshipmenttime, // 提货时间,
+                        'web_order_number' => $web_order_number,
+                        'gross_weight' => $gross_weight,
+                        'bulk' => $bulk
+                    ];
+                }
             }
         }
         if(count($insert_params) > 0){
@@ -551,8 +582,8 @@ class OrderTrackingService
             }
         }
         $web_order_number = null;
-        if(preg_match('/^O[\d]/',$order_header['soreference1'] ?? '') > 0){
-            $web_order_number = $order_header['soreference1'];
+        if(preg_match('/^O[\d]/',$orderHeader['soreference1'] ?? '') > 0){
+            $web_order_number = $orderHeader['soreference1'];
         }
         return [
             'owner_id' => $order->owner_id,

+ 14 - 0
app/Services/ProcessesContentService.php

@@ -0,0 +1,14 @@
+<?php 
+
+namespace App\Services; 
+
+use App\Services\common\BatchUpdateService;
+
+Class ProcessesContentService
+{
+
+    public function batchUpdateItself($column, array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdateItself('processes_contents', $column, $params);
+    }
+}

+ 4 - 0
app/Services/StoreCheckingReceiveItemService.php

@@ -39,5 +39,9 @@ Class StoreCheckingReceiveItemService
     public function destroy($id){
         return StoreCheckingReceiveItem::destroy($id);
     }
+    public function batchUpdateItself($column, array $params)
+    {
+        return app(BatchUpdateService::class)->batchUpdateItself('store_checking_receive_items', $column, $params);
+    }
 
 }

+ 1 - 0
app/Services/WaybillService.php

@@ -35,6 +35,7 @@ Class WaybillService
             'wms_bill_number' => ['like' => ''],
             'origination' => ['like' => ''],
             'destination' => ['like' => ''],
+            'source_bill' => ['like' => ''],
             'created_at_start' => ['alias' => 'created_at' , 'startDate' => ' 00:00:00'],
             'created_at_end' => ['alias' => 'created_at' , 'endDate' => ' 23:59:59'],
             'uriType' => ['alias' => 'type'],

+ 18 - 0
app/Services/common/BatchUpdateService.php

@@ -67,4 +67,22 @@ class BatchUpdateService
             return false;
         }
     }
+
+    public function batchUpdateItself($tableName, $column, array $params, $connection = 'mysql')
+    {
+        $sql = "UPDATE ".$tableName;
+        $sql .= " SET ".$column." = CASE ".$column;
+        foreach ($params as $key => $value){
+            $sql .= " WHEN ".$key." THEN ".$value;
+        }
+        $sql .= " END WHERE ".$column." IN (".implode(',',array_keys($params)).")";
+        try {
+            $bool = DB::connection($connection)->update($sql);
+            LogService::log(__METHOD__, __FUNCTION__, '批量更新本身' .$sql);
+            return $bool;
+        }catch (\Exception $e){
+            LogService::log(__METHOD__, __FUNCTION__, '批量更新失败 SQL:(' . $sql .") 堆栈:". $e->getMessage() . $e->getTraceAsString());
+            return false;
+        }
+    }
 }

+ 4 - 1
app/Services/common/DataHandlerService.php

@@ -8,11 +8,13 @@ class DataHandlerService
 {
     public function dataHeader(array $mapKeys= [], $resultData =[]){
         $handlerData = [];
+        $handlerData['mapkey'] = $mapKeys;
+        if(!$resultData){return $handlerData;}
         foreach ($resultData as $data) {
             $key =  $this->getKey($mapKeys,$data);
             $handlerData[$key] = $data;
         }
-        $handlerData['mapkey'] = $mapKeys;
+
         return $handlerData;
     }
 
@@ -76,6 +78,7 @@ class DataHandlerService
     public function getKeyValue($keyValues,$data){
          $mapkeys =  $data['mapkey'];
          $key = '';
+         if(!$data){return null;}
          foreach ($mapkeys as $mapkey) {
              $key .=$mapkey.'='.$keyValues[$mapkey];
          }

+ 32 - 0
database/migrations/2020_09_29_101752_change_inventory_daily_logs_add_column_depository_id.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeInventoryDailyLogsAddColumnDepositoryId extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('inventory_daily_logs', function (Blueprint $table) {
+            $table->bigInteger('depository_id')->nullable()->comment('外联属性仓');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('inventory_daily_logs', function (Blueprint $table) {
+            $table->dropColumn('depository_id');
+        });
+    }
+}

+ 33 - 0
database/migrations/2020_09_30_153758_change_order_issue_and_o_rder_issue_logs.php

@@ -0,0 +1,33 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class ChangeOrderIssueAndORderIssueLogs extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('order_issues', function (Blueprint $table) {
+            $table->dropColumn('settlement_at');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('order_issues', function (Blueprint $table) {
+            $table->timestamp('settlement_at')->index()->nullable()->comment('完结日期');
+        });
+
+    }
+}

+ 1 - 1
package-lock.json

@@ -8763,7 +8763,7 @@
         },
         "socket.io-client": {
             "version": "2.3.0",
-            "resolved": "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsocket.io-client%2Fdownload%2Fsocket.io-client-2.3.0.tgz",
+            "resolved": "https://registry.npm.taobao.org/socket.io-client/download/socket.io-client-2.3.0.tgz",
             "integrity": "sha1-FNW6LgC5vNFFrkQ6uWs/hsvMG7Q=",
             "requires": {
                 "backo2": "1.0.2",

+ 24 - 3
public/t.php

@@ -1,5 +1,26 @@
 <?php
-$value=`·sdf
-aa·`;
-var_dump( preg_match('/[\r\n]/',$value));
 
+//
+//ini_set('max_execution_time',2500);
+//ini_set('memory_limit','2526M');
+//
+//$file=fopen('logs.txt','r');
+//
+//$adding=fread($file,filesize('logs.txt'));
+////$adding=fread($file,20000);
+//$re=[];
+//preg_match_all("/(批量更新失败 SQL\:\(.*?\) 堆栈)*/",$adding,$re);
+//$str='';
+//$fileToWrite=fopen('logSql.txt','a+');
+//foreach ($re[1] as $str) {
+//    fwrite($fileToWrite,$str);
+//}
+
+
+$arr=[];
+$arr['abc']=123;
+$arr['abcd']=22;
+$arr['bb']=22;
+$arr['bbc']=33;
+
+var_dump(array_chunk($arr,2));

+ 3 - 0
resources/views/inventory/statement/dailyLog.blade.php

@@ -65,6 +65,7 @@
                             </span>
                         </span>
                     </td>
+                    <td>@{{ inventoryDailyLog.depository_name }}</td>
                     <td>@{{ inventoryDailyLog.amount }}</td>
                     <td>@{{ inventoryDailyLog.commodity_length }}</td>
                     <td>@{{ inventoryDailyLog.commodity_width }}</td>
@@ -102,6 +103,7 @@
                         commodity_height:'{{$inventoryDailyLog->commodity ? $inventoryDailyLog->commodity->height : ''}}',
                         commodity_volumn:'{{$inventoryDailyLog->commodity ? $inventoryDailyLog->commodity->volumn : ''}}',
                         volumn_occupied:'{{$inventoryDailyLog->volumn_occupied}}',
+                        depository_name:'{{$inventoryDailyLog->depository ? $inventoryDailyLog->depository->name : ''}}',
                         gross_weight:'{{$inventoryDailyLog->gross_weight}}'},
                     @endforeach
                 ],
@@ -159,6 +161,7 @@
                     {name: 'commodity_name', value: '商品名称'},
                     {name:'commodity_sku',value: '商品编码'},
                     {name: 'commodity_barcodes', value: '商品条码', neglect: true},
+                    {name: 'depository_name', value: '属性仓'},
                     {name: 'amount', value: '在库数量', neglect: true},
                     {name: 'commodity_length', value: '长', neglect: true},
                     {name: 'commodity_width',value: '宽', neglect: true},

+ 1 - 1
resources/views/inventory/stockInventory/mission.blade.php

@@ -20,7 +20,7 @@
             <span class="form-inline">
                 <input type="date" @change="hasDateStart" class="form-control form-control-sm ml-5 tooltipTarget" name="date_start" id="date_start"  title="选择创建日期的开始时间" style="width: 150px">
                 <input type="date" @change="hasDateEnd" class="form-control form-control-sm ml-5 tooltipTarget" name="date_end" id="date_end"  title="选择创建日期的结束时间" style="width: 150px">
-                <input type="text" @change="hasLocation" class="form-control form-control-sm ml-5 tooltipTarget" name="location" id="location"  title="选择创建盘点任务库位的前缀字母" placeholder="库位前缀字母" style="width: 150px" autocomplete="off">
+                <input type="text" @change="hasLocation" class="form-control form-control-sm ml-5 tooltipTarget" name="location" id="location"  title="选择创建盘点任务库位的前缀字母,支持多个,以空格或逗号分隔" placeholder="库位前缀字母,多个空格分隔" style="width: 150px" autocomplete="off">
                 <input type="text" @change="hasBarcode" class="form-control form-control-sm ml-5 tooltipTarget" name="barcode" id="barcode"  title="商品条码,糊模查找需要在左边打上%符号" placeholder="条码" style="width: 200px" autocomplete="off">
             </span>
             <span class="ml-5">

+ 16 - 2
resources/views/order/index/delivering.blade.php

@@ -101,7 +101,11 @@
                                 <tr v-for="oracleDOCOrderDetail in commodities[order.orderno]">
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.sku }}</div></td>
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.alternate_sku1 }}</div></td>
-                                    <td><div :title="oracleDOCOrderDetail.descr_c" class="tooltipTarget" style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.descr_c }}</div></td>
+                                    <td>
+                                        <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ oracleDOCOrderDetail.descr_c  }}</div>
+                                        <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="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.orderdetailcodename }}</div></td>
                                     <td><div style="width: 180px;overflow: hidden">@{{ oracleDOCOrderDetail.checktime }}</div></td>
@@ -296,6 +300,7 @@
                         {name:'releasestatus',type:'select',tip:'是否冻结冻结',placeholder:'是否冻结',data:[{name:'H',value:'是'},{name:'',value:'否'}]},
                         {name:'checktime_start',type:'dateTime',tip:'选择显示复核时间的起始日期'},
                         {name:'checktime_end',type:'dateTime',tip:'选择显示复核时间的结束日期'},
+                        {name: 'is_display_all', type: 'checkbox', tip: '是否隐藏装箱完成以后的状态', data: [{name: 'ture', value: '隐藏完成状态'}]},
                     ],
                 ];
                 this.form = new query({
@@ -732,9 +737,18 @@
                         tempTip.setDuration(3000)
                         tempTip.show('网络异常:'+error)
                     })
+                },
+                truncateText(e){
+                    let nowrapSpan = $(e.target);
+                    nowrapSpan.hide();
+                    nowrapSpan.siblings('.text-truncate').show();
+                },
+                nowrapText(e){
+                    let truncateSpan = $(e.target);
+                    truncateSpan.hide();
+                    truncateSpan.siblings('.text-nowrap').show();
                 }
             },
-
         });
     </script>
 @endsection

+ 283 - 216
resources/views/order/issue/index.blade.php

@@ -20,20 +20,20 @@
                         </div>
                     </span>
                     @cannot('订单管理-问题件-客户不可见')
-                    <span class="ml-1">
+                        <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm   tooltipTarget" @click="endOrderIssue" :class="[checkData.length>0?'btn-dark text-light':'']">
                             完结
                         </button>
                     </span>
                     @endcannot @can('订单管理-问题件-删除')
-                    <span class="ml-1">
+                        <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="batchDeleteOrderIssue">
                             删除
                         </button>
                     </span>
                     @endcan
                     @can('订单管理-问题件-编辑')
-                    <span class="ml-1">
+                        <span class="ml-1">
                         <button type="button" class="btn btn-outline-dark btn-sm form-control-sm  tooltipTarget" @click="batchStoreLogsModel">
                             修改
                         </button>
@@ -57,20 +57,20 @@
                         </th>
                         <th class="font-weight-bolder header-3">
 
-{{--                            @cannot('订单管理-问题件-客户不可见')--}}
+                            {{--                            @cannot('订单管理-问题件-客户不可见')--}}
                             <button class="btn btn-sm btn-outline-secondary float-left" v-if="isShowRejectedBill" @click="hideRejectedBill">
                                 隐藏退单列
                             </button>
-{{--                            @endcannot--}}
+                            {{--                            @endcannot--}}
                             情况说明
                             @cannot('订单管理-问题件-客户不可见')
-                            <button class="btn btn-sm btn-outline-secondary" v-if="isShowSecondOrderInfo" @click="hideSecondOrder">
-                                隐藏运单列
-                            </button>
+                                <button class="btn btn-sm btn-outline-secondary" v-if="isShowSecondOrderInfo" @click="hideSecondOrder">
+                                    隐藏运单列
+                                </button>
                             @endcannot
                         </th>
                         @cannot('订单管理-问题件-客户不可见')
-                        <th></th>
+                            <th></th>
                         @endcannot
                     </tr>
 
@@ -84,15 +84,15 @@
                         <th class="one-layer align-middle" rowspan="2" style=" min-width: 50px;">序号</th>
                         <th class="one-layer align-middle" rowspan="2" style=" min-width: 25px;">ID</th>
                         @cannot('订单管理-问题件-客户不可见')
-                        <th class="one-layer align-middle" rowspan="2" style=" min-width: 75px;">退件</th>
-                        @can("订单管理-问题件-置顶")
-                        <th class="one-layer align-middle" rowspan="2" style=" min-width: 75px;">置顶</th>
-                        @endcan
-                        <th class="one-layer align-middle" rowspan="2" style=" min-width: 100px;">退单状态</th>
+                            <th class="one-layer align-middle" rowspan="2" style=" min-width: 75px;">退件</th>
+                            @can("订单管理-问题件-置顶")
+                                <th class="one-layer align-middle" rowspan="2" style=" min-width: 75px;">置顶</th>
+                            @endcan
+                            <th class="one-layer align-middle" rowspan="2" style=" min-width: 100px;">退单状态</th>
                         @endcannot
                         <th class="one-layer align-middle" rowspan="2" style="min-width: 120px">最终状态</th>
                         @cannot('订单管理-问题件-客户不可见')
-                        <th class="tow-layer align-middle td-yellow" rowspan="2" style="min-width: 165px;">登记日期</th>
+                            <th class="tow-layer align-middle td-yellow" rowspan="2" style="min-width: 165px;">登记日期</th>
                         @endcannot
 
                         <th class="tow-layer align-middle td-yellow" rowspan="2" style="min-width: 165px;">订单日期</th>
@@ -110,27 +110,29 @@
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" rowspan="2" style="min-width: 70px">区</th>
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" rowspan="2" style="min-width:300px">收货人地址</th>
                         <th class="tow-layer align-middle td-yellow" v-if="isShowOrderInfo" colspan="3" style="min-width:300px">原始商品明细</th>
-{{--                        <th class="three-layer  align-middle" rowspan="2" >退回单号</th>--}}
-{{--                        @cannot('订单管理-问题件-客户不可见')--}}
+                        {{--                        <th class="three-layer  align-middle" rowspan="2" >退回单号</th>--}}
+                        {{--                        @cannot('订单管理-问题件-客户不可见')--}}
                         <th class="three-layer   align-middle" rowspan="2" v-if="!isShowRejectedBill" style="min-width:50px">展开</th>
                         <th class="three-layer align-middle" rowspan="2" v-if="isShowRejectedBill" style="min-width:220px">退回单号</th>
                         <th class="three-layer   align-middle" colspan="5" v-if="isShowRejectedBill" style="min-width: 450px">返回商品明细</th>
-{{--                        @endcannot--}}
+                        {{--                        @endcannot--}}
                         <th class="three-layer bg-whit  align-middle" rowspan="2" style="min-width: 115px">情况说明</th>
                         <th class="three-layer   align-middle" rowspan="2" style="min-width: 115px">问题类别</th>
-                        <th class="three-layer  align-middle" colspan="3" style="min-width: 115px">处理结果</th>
+                        <th class="three-layer  align-middle" colspan="4" style="min-width: 155px">处理结果</th>
                         @cannot('订单管理-问题件-客户不可见')
-                        <th class="three-layer  align-middle" rowspan="2" v-if="!isShowSecondOrderInfo" style="width:50px">展开</th>
-                        <th class="three-layer  align-middle" rowspan="2" v-if="isShowSecondOrderInfo" style=" min-width: 120px;">二次客户订单号</th>
-                        <th class="three-layer  align-middle" rowspan="2" v-if="isShowSecondOrderInfo" style=" min-width: 100px;">二次承运商</th>
-                        <th class="three-layer  align-middle" rowspan="2" v-if="isShowSecondOrderInfo" style=" min-width: 200px;">二次运单号</th>
-                        <th class="three-layer" colspan="3" style="min-width: 300px" v-if="isShowSecondOrderInfo" style=" min-width: 350px;">二次商品明细</th>
+                            <th class="three-layer  align-middle" rowspan="2" v-if="!isShowSecondOrderInfo" style="width:50px">展开</th>
+                            <th class="three-layer  align-middle" rowspan="2" v-if="isShowSecondOrderInfo" style=" min-width: 120px;">二次客户订单号</th>
+                            <th class="three-layer  align-middle" rowspan="2" v-if="isShowSecondOrderInfo" style=" min-width: 100px;">二次承运商</th>
+                            <th class="three-layer  align-middle" rowspan="2" v-if="isShowSecondOrderInfo" style=" min-width: 200px;">二次运单号</th>
+                            <th class="three-layer" colspan="3" style="min-width: 300px" v-if="isShowSecondOrderInfo" style=" min-width: 350px;">二次商品明细</th>
                         @endcannot
-                        <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">承运商赔偿金额</th>
-                        <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">承运商快递减免</th>
                         @cannot('订单管理-问题件-客户不可见')
+                            <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">承运商赔偿金额</th>
+                            <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">承运商快递减免</th>
+                        @endcannot
                         <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">宝时赔偿金额</th>
                         <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">宝时快递减免</th>
+                        @cannot('订单管理-问题件-客户不可见')
                         <th class="three-layer  align-middle" rowspan="2" style="min-width: 120px">事故责任方</th>
                         <th class="align-middle" rowspan="2" style="min-width: 120px">操作</th>
                         @endcannot
@@ -140,19 +142,21 @@
                         <th class="td-yellow" v-if="isShowOrderInfo" style="min-width: 150px">商品名</th>
                         <th class="td-yellow" v-if="isShowOrderInfo" style="min-width: 75px">数量</th>
                         @cannot('订单管理-问题件-客户不可见')
-                        <th  v-if="isShowRejectedBill" style="min-width: 75px">条码</th>
-                        <th  v-if="isShowRejectedBill" style="min-width: 100px">商品名</th>
-                        <th  v-if="isShowRejectedBill" style="min-width: 50px">数量</th>
-                        <th  v-if="isShowRejectedBill" style="min-width: 50px">是否正品</th>
-                        <th  v-if="isShowRejectedBill" style="min-width: 100px">备注</th>
+                            <th  v-if="isShowRejectedBill" style="min-width: 75px">条码</th>
+                            <th  v-if="isShowRejectedBill" style="min-width: 100px">商品名</th>
+                            <th  v-if="isShowRejectedBill" style="min-width: 50px">数量</th>
+                            <th  v-if="isShowRejectedBill" style="min-width: 50px">是否正品</th>
+                            <th  v-if="isShowRejectedBill" style="min-width: 100px">备注</th>
                         @endcannot
                         <th  style="min-width: 75px">操作类型</th>
                         <th  style="min-width: 120px">说明</th>
                         <th  style="min-width: 100px">操作者</th>
+                        <th  style="min-width: 170px">时间</th>
+                        <th ></th>
                         @cannot('订单管理-问题件-客户不可见')
-                        <th  v-if="isShowSecondOrderInfo" style="min-width: 100px">条码</th>
-                        <th  v-if="isShowSecondOrderInfo" style="min-width: 100px">商品名</th>
-                        <th  v-if="isShowSecondOrderInfo" style="min-width: 75px">数量</th>
+                            <th  v-if="isShowSecondOrderInfo" style="min-width: 100px">条码</th>
+                            <th  v-if="isShowSecondOrderInfo" style="min-width: 100px">商品名</th>
+                            <th  v-if="isShowSecondOrderInfo" style="min-width: 75px">数量</th>
                         @endcannot
                     </tr>
 
@@ -167,43 +171,43 @@
                         <td class="child-layer-1">@{{index+1}}</td>
                         <td class="child-layer-1">@{{ orderIssue.id }}</td>
                         @cannot('订单管理-问题件-客户不可见')
-                        <td class="child-layer-1">
-                            @can('订单管理-问题件-编辑')
-                            <button type="button" class="btn btn-sm btn-outline-secondary" @click="disposeOrderIssue($event,orderIssue)" :data-value="orderIssue.id"
-                                    v-if="orderIssue.is_new_rejecting === '有'">有
-                            </button>
-                            <span v-else>@{{ orderIssue.is_new_rejecting }}</span>
-                            @else
-                            <span v-if="orderIssue.is_new_rejecting">@{{ orderIssue.is_new_rejecting }}</span>
-                            @endcan
-                        </td>
-                        @can("订单管理-问题件-置顶")
-                        <td class="text-muted child-layer-1">
-                            <button type="button" class="btn btn-sm btn-outline-danger " @click="cancelOnTop($event)" :data-value="orderIssue.top.id" style="opacity: 0.75" v-if="orderIssue.top">
-                                取消
-                            </button>
-                            <button type="button" class="btn btn-sm btn-outline-secondary" @click="OrderIssueOnTop($event)" :data-value="orderIssue.id" style="opacity: 0.75" v-else>
-                                置顶
-                            </button>
-                        </td>
-                        <td class="child-layer-1">
-                            @can('订单管理-问题件-编辑')
-                            <select class="form-control form-control-sm" :value="orderIssue.rejecting_status" @change="updateOrderIssue(orderIssue,'rejecting_status',$event)">
-                                <option v-for="item in rejectingStatus" :value="item.name">@{{ item.value }}</option>
-                            </select>
-                            @else
-                                @{{ orderIssue.rejecting_status }}
+                            <td class="child-layer-1">
+                                @can('订单管理-问题件-编辑')
+                                    <button type="button" class="btn btn-sm btn-outline-secondary" @click="disposeOrderIssue($event,orderIssue)" :data-value="orderIssue.id"
+                                            v-if="orderIssue.is_new_rejecting === '有'">有
+                                    </button>
+                                    <span v-else>@{{ orderIssue.is_new_rejecting }}</span>
+                                @else
+                                    <span v-if="orderIssue.is_new_rejecting">@{{ orderIssue.is_new_rejecting }}</span>
+                                @endcan
+                            </td>
+                            @can("订单管理-问题件-置顶")
+                                <td class="text-muted child-layer-1">
+                                    <button type="button" class="btn btn-sm btn-outline-danger " @click="cancelOnTop($event)" :data-value="orderIssue.top.id" style="opacity: 0.75" v-if="orderIssue.top">
+                                        取消
+                                    </button>
+                                    <button type="button" class="btn btn-sm btn-outline-secondary" @click="OrderIssueOnTop($event)" :data-value="orderIssue.id" style="opacity: 0.75" v-else>
+                                        置顶
+                                    </button>
+                                </td>
+                                <td class="child-layer-1">
+                                    @can('订单管理-问题件-编辑')
+                                        <select class="form-control form-control-sm" :value="orderIssue.rejecting_status" @change="updateOrderIssue(orderIssue,'rejecting_status',$event)">
+                                            <option v-for="item in rejectingStatus" :value="item.name">@{{ item.value }}</option>
+                                        </select>
+                                    @else
+                                        @{{ orderIssue.rejecting_status }}
+                                    @endcan
+                                </td>{{--退件状态--}}
                             @endcan
-                        </td>{{--退件状态--}}
-                        @endcan
                         @endcannot
                         <td class="child-layer-1">
                             @can('订单管理-问题件-编辑')
-                            <select class="form-control form-control-sm" :value="orderIssue.final_status" @change="updateOrderIssue(orderIssue,'final_status',$event)">
-                                <option v-for="item in  finalStatus" :value="item">@{{ item }}</option>
-                            </select>
+                                <select class="form-control form-control-sm" :value="orderIssue.final_status" @change="updateOrderIssue(orderIssue,'final_status',$event)">
+                                    <option v-for="item in  finalStatus" :value="item.value">@{{ item.name }}</option>
+                                </select>
                             @else
-                            @{{ orderIssue.final_status }}
+                                @{{ orderIssue.final_status }}
                             @endcan
                         </td>{{--最终状态--}}
                         @cannot('订单管理-问题件-客户不可见')  {{--登记日期--}}
@@ -218,9 +222,9 @@
                         <td class="td-yellow child-layer-2">
                             @cannot('订单管理-问题件-客户不可见')
                             @else
-                            <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
-                                置顶备注:@{{ orderIssue.remark }}
-                            </div>
+                                <div v-if="orderIssue.remark" class="bg-light-yellow  text-danger top text-left" data-toggle="tooltip" style="opacity: 0.1;position: absolute;z-index: 1">
+                                    置顶备注:@{{ orderIssue.remark }}
+                                </div>
                             @endcannot
                             @{{ orderIssue.order.created_at }}
                         </td>
@@ -236,10 +240,10 @@
                             <span v-if='orderIssue.order.logistic'>@{{ orderIssue.order.logistic.name }}</span>
                         </td>
                         <td class=" hide-content p-0 td-yellow child-layer-2" valign="middle" align="center">
-                            <div :id="'logisticNumbers'+orderIssue.id" :class="orderIssue.order.logisticNumbers.length > 1 ?'collapse ':''">
-                                <p v-for="logisticNumber in orderIssue.order.logisticNumbers" class="m-0 p-0  text-muted ">@{{ logisticNumber }}</p>
-                            </div>
-                            <button v-if="orderIssue.order.logisticNumbers.length > 1" type="button" class="btn btn-sm btn-outline-primary   align-middle mt-1"
+                            <span :id="'logisticNumbers'+orderIssue.id" :class="orderIssue.order.logisticNumbers.length > 1 ?'collapse ':''">
+                                <span class="text-nowrap" v-for="logisticNumber in orderIssue.order.logisticNumbers" class="m-0 p-0  text-muted ">@{{ logisticNumber }}</span>
+                            </span>
+                            <button v-if="orderIssue.order.logisticNumbers.length > 1" type="button" class="btn btn-sm btn-outline-primary align-middle mt-1"
                                     :id="'logisticNumbersBtn'+orderIssue.id" data-toggle="collapse" :data-target="'#logisticNumbers'+orderIssue.id"
                                     @click="toggleLogisticNumbers(orderIssue.id,orderIssue.order.logisticNumbers.length)">
                                 分箱@{{ orderIssue.order.logisticNumbers.length }}件,点击展开
@@ -262,14 +266,16 @@
                             v-if="isShowOrderInfo">
                             <div v-if="orderIssue.order">
                                 <table  class="table table-sm m-0" v-if="orderIssue.order.packages"
-                                       :class="orderIssue.orderPackagecount > 1  ? 'collapse' : ''" :id="'order'+orderIssue.id"
+                                        :class="orderIssue.orderPackagecount > 1  ? 'collapse' : ''" :id="'order'+orderIssue.id"
                                         :data-value="orderIssue.orderCount = 0" :data-count="orderIssue.orderPackagecount = 0">
                                     <template v-for="packages in orderIssue.order.packages">
-                                        <tr v-for="item in packages.commodities" class="text-center" :data-value="orderIssue.orderCount += 1" align="center">
+                                        <tr v-for="item in packages.commodities" class="text-center" :data-value="orderIssue.orderCount += 1" align="center" v-if="item.commodity">
                                             <td >@{{ item.commodity.sku }}</td>
                                             <td>
-                                                <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.commodity.name }}</p>
-                                                <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)">@{{ item.commodity.name }}</p>
+                                                <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.commodity.name }}</div>
+                                                <div class="text-nowrap m-0 p-0 tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</div>
+                                                {{--                                                <p class="text-truncate text-primary m-0 p-0 tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开"  @dblclick="nowrapText($event)">@{{ item.commodity.name }}</p>--}}
+                                                {{--                                                <p class="text-nowrap m-0 p-0 tooltipTarget" style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</p>--}}
                                             </td>
                                             <td  :data-value="orderIssue.orderPackagecount += item.amount ">@{{ item.amount }}</td>
                                         </tr>
@@ -285,16 +291,16 @@
                         {{--商品明细 结束--}}
 
                         {{--退单商品明细 开始--}}
-{{--                        @cannot('订单管理-问题件-客户不可见')--}}
+                        {{--                        @cannot('订单管理-问题件-客户不可见')--}}
 
                         <td class="text-muted child-layer-3-hide" v-if="isShowRejectedBill">
                             @can('订单管理-问题件-编辑')
-                            <input type="text" class="form-control form-control-sm" :value="orderIssue.logistic_number_return" @change="changeRejectedBill(orderIssue,$event)">
+                                <input type="text" class="form-control form-control-sm" :value="orderIssue.logistic_number_return" @change="changeRejectedBill(orderIssue,$event)">
                             @else
-                            @{{ orderIssue.logistic_number_return }}
+                                @{{ orderIssue.logistic_number_return }}
                             @endcan
                         </td>
-{{--                        @cannot('订单管理-问题件-客户不可见')--}}
+                        {{--                        @cannot('订单管理-问题件-客户不可见')--}}
                         <td class="p-0 m-0 child-layer-3" v-if="!isShowRejectedBill && index === 0 " style="width:50px;" :rowspan="orderIssues.length" >
                             <span class="btn  btn-outline-secondary "  @click="showRejectedBill"  :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''" >展开退单列</span>
                         </td>
@@ -306,8 +312,10 @@
                                         :data-value="orderIssue.rejected_bill.sum += item.amount" align="center">
                                         <td style="min-width: 75px" >@{{ item.barcode_goods }}</td>
                                         <td style="min-width: 100px" >
-                                            <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.name_goods }}</p>
-                                            <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)">@{{ item.name_goods }}</p>
+                                            <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.name_goods }}</div>
+                                            <div class="text-nowrap m-0 p-0 tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.name_goods }}</div>
+                                            {{--                                            <p class="text-truncate text-primary m-0 p-0 tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开"  @dblclick="nowrapText($event)" >@{{ item.name_goods }}</p>--}}
+                                            {{--                                            <p class="text-nowrap m-0 p-0 tooltipTarget" style="display: none;cursor:pointer"  title="双击收起" @dblclick="truncateText($event)" >@{{ item.name_goods }}</p>--}}
                                         </td>
                                         <td style="min-width: 50px" :data-value="orderIssue.rejectedCount += item.amount">@{{ item.amount }}</td>
                                         <td style="min-width: 50px" >@{{ item.quality_label }}</td>
@@ -320,7 +328,7 @@
                                 </button>
                             </div>
                         </td>
-{{--                        @endcannot--}}
+                        {{--                        @endcannot--}}
                         {{--退单商品明细 结束--}}
 
                         <td class="child-layer-3">@{{ orderIssue.result_explain}}</td>
@@ -329,16 +337,16 @@
                                 <select class="form-control form-control-sm" :value="orderIssue.order_issue_type_id" @change="updateOrderIssue(orderIssue,'order_issue_type_id',$event)">
                                     <option value></option>
                                     <option v-for="type in orderIssueType" :value="type.name" >@{{ type.value }}</option>
-                                <select>
-                            @else
-                            <span v-if="orderIssue.issue_type">
+                                    <select>
+                                        @else
+                                            <span v-if="orderIssue.issue_type">
                                 @{{ orderIssue.issue_type.name}}
                             </span>
                             @endcan
                         </td>
 
                         {{--处理结果--}}
-                        <td class=" m-0 p-0 log-td child-layer-3" valign="middle" align="center" v-on:mouseover="showAddBtn($event)" v-on:mouseleave="hideAddBtn($event)" colspan="3">
+                        <td class=" m-0 p-0 log-td child-layer-3" valign="middle" align="center" v-on:mouseover="showAddBtn($event)" v-on:mouseleave="hideAddBtn($event)" colspan="4">
                             <div class="addLogDiv row m-0 p-0 form-group" :id="'AddLog_'+orderIssue.id" style="display: none;">
                                 <input type="hidden" name="id" :value="orderIssue.id">
                                 <div style="width: 45px"></div>
@@ -362,10 +370,10 @@
                                         v-on:mouseover="showDelBtn($event)" v-on:mouseleave="hideDelBtn($event)" >
                                         <td style="min-width: 75px">@{{ log.type }}</td>
                                         <td style="min-width: 200px">@{{ log.content }}</td>
-                                        <td style="min-width: 120px">@{{ log.user.name }}</td>
+                                        <td class="text-muted" style="min-width: 120px">@{{ log.user.name }}</td>
+                                        <td class="text-muted" style="min-width: 170px">@{{ log.created_at }}</td>
                                         <td style="" class="m-0 p-0 border-0">
-                                            <button type="button" class="btn btn-sm btn-outline-danger m-0 del-btn invisible"
-                                                    @click="deleteOrderIssueLog(log.id,orderIssue.id)">删</button>
+                                            <button type="button" class="btn btn-sm btn-outline-danger m-0 del-btn invisible" @click="deleteOrderIssueLog(log.id,orderIssue.id)">删</button>
                                         </td>
                                     </tr>
                                 </table>
@@ -379,116 +387,121 @@
                             </div>
                         </td>
                         @cannot('订单管理-问题件-客户不可见')
-                        <td class="p-0 m-0 h-100 child-layer-3" v-if="!isShowSecondOrderInfo && index === 0" style="width:50px;" :rowspan="orderIssues.length" >
-                            <span class="btn btn-outline-secondary " @click="showSecondeOrder"   :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''">展开运单列</span>
-                        </td>
-                        <td class="child-layer-3-hide" v-if="isShowSecondOrderInfo">
-                            <span v-if="orderIssue.second_order" class="p-0"> @{{ orderIssue.second_order.client_code }}</span>
-                        </td>
-                        <td class="child-layer-3-hide" v-if="isShowSecondOrderInfo">
-                            <span v-if="orderIssue.second_order" class="p-0"> @{{ orderIssue.second_order.logistic.name }}</span>
-                        </td>
-                        <td class="p-0 child-layer-3-hide" valign="middle" align="center" v-if="isShowSecondOrderInfo">
-                            <template v-if="orderIssue.second_order">
-                                <div class=" m-0" :id="'secondOrderNumbers'+orderIssue.id"
-                                     :class="orderIssue.seconderCount > 1 ? 'collapse':''"
-                                     :data-value="orderIssue.seconderCount = 0">
-                                    <p class="m-0 p-0  text-muted " v-for="logisticNumber in orderIssue.second_order.logisticNumbers"
-                                       :data-value="orderIssue.seconderCount +=1">@{{ logisticNumber }}</p>
-                                </div>
-                                <button v-if="orderIssue.seconderCount > 1" type="button"
-                                        class="btn btn-sm btn-outline-primary align-middle mt-1"
-                                        data-toggle="collapse"
-                                        :id="'secondOrderNumbersBtn'+orderIssue.id"
-                                        :data-target="'#secondOrderNumbers'+orderIssue.id"
-                                        @click="toggleseCondOrderNumbers(orderIssue.id,orderIssue.second_order.logisticNumbers.length)">
-                                    分箱@{{ orderIssue.second_order.logisticNumbers.length }}件,点击展开
-                                </button>
-                            </template>
-                        </td>
-                        <td class="child-layer-3-hide p-0" colspan="3" v-if="isShowSecondOrderInfo">
-                            <template v-if="orderIssue.second_order" class=" p-0">
-                                <div class="m-0 p-0" :class="orderIssue.secondeOrderCount > 1 ? 'collapse':''"
-                                     :id="'secondOrder'+orderIssue.id">
-                                    <table class="table table-sm  m-0 "
-                                           :data-count="orderIssue.secondeOrderCount = 0"
-                                           :data-value="orderIssue.secondeOrderItems = 0">
-                                        <template v-for="packages in orderIssue.second_order.packages">
-                                            <tr v-for="item in packages.commodities" :data-value="orderIssue.secondeOrderCount += 1">
-                                                <td >@{{ item.commodity.sku }}</td>
-                                                <td >
-                                                    <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.commodity.name }}</p>
-                                                    <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)">@{{ item.commodity.name }}</p>
-                                                </td>
-                                                <td :data-value="orderIssue.secondeOrderItems+=item.amount">@{{ item.amount }}</td>
-                                            </tr>
-                                        </template>
-                                    </table>
-                                </div>
-                                <button type="button" class="btn btn-sm btn-outline-primary  align-middle mt-1"  data-toggle="collapse"
-                                        v-if="orderIssue.secondeOrderCount > 0"
-                                        :id="'secondOrderBtn'+orderIssue.id"
-                                        :data-target="'#secondOrder'+orderIssue.id"
-                                        @click="toggleSecond(orderIssue.id,orderIssue.secondeOrderItems)">
-                                    商品@{{ orderIssue.secondeOrderItems }}件,点击展开
-                                </button>
-                            </template>
-                        </td>
+                            <td class="p-0 m-0 h-100 child-layer-3" v-if="!isShowSecondOrderInfo && index === 0" style="width:50px;" :rowspan="orderIssues.length" >
+                                <span class="btn btn-outline-secondary " @click="showSecondeOrder"   :style="orderIssues.length>4 ?'{height: 200px;line-height: 100px':''">展开运单列</span>
+                            </td>
+                            <td class="child-layer-3-hide" v-if="isShowSecondOrderInfo">
+                                <span v-if="orderIssue.second_order" class="p-0"> @{{ orderIssue.second_order.client_code }}</span>
+                            </td>
+                            <td class="child-layer-3-hide" v-if="isShowSecondOrderInfo">
+                                <span v-if="orderIssue.second_order" class="p-0"> @{{ orderIssue.second_order.logistic.name }}</span>
+                            </td>
+                            <td class="p-0 child-layer-3-hide" valign="middle" align="center" v-if="isShowSecondOrderInfo">
+                                <template v-if="orderIssue.second_order">
+                                    <div class=" m-0" :id="'secondOrderNumbers'+orderIssue.id"
+                                         :class="orderIssue.seconderCount > 1 ? 'collapse':''"
+                                         :data-value="orderIssue.seconderCount = 0">
+                                        <p class="m-0 p-0  text-muted " v-for="logisticNumber in orderIssue.second_order.logisticNumbers"
+                                           :data-value="orderIssue.seconderCount +=1">@{{ logisticNumber }}</p>
+                                    </div>
+                                    <button v-if="orderIssue.seconderCount > 1" type="button"
+                                            class="btn btn-sm btn-outline-primary align-middle mt-1"
+                                            data-toggle="collapse"
+                                            :id="'secondOrderNumbersBtn'+orderIssue.id"
+                                            :data-target="'#secondOrderNumbers'+orderIssue.id"
+                                            @click="toggleseCondOrderNumbers(orderIssue.id,orderIssue.second_order.logisticNumbers.length)">
+                                        分箱@{{ orderIssue.second_order.logisticNumbers.length }}件,点击展开
+                                    </button>
+                                </template>
+                            </td>
+                            <td class="child-layer-3-hide p-0" colspan="3" v-if="isShowSecondOrderInfo">
+                                <template v-if="orderIssue.second_order" class=" p-0">
+                                    <div class="m-0 p-0" :class="orderIssue.secondeOrderCount > 1 ? 'collapse':''"
+                                         :id="'secondOrder'+orderIssue.id">
+                                        <table class="table table-sm  m-0 "
+                                               :data-count="orderIssue.secondeOrderCount = 0"
+                                               :data-value="orderIssue.secondeOrderItems = 0">
+                                            <template v-for="packages in orderIssue.second_order.packages">
+                                                <tr v-for="item in packages.commodities" :data-value="orderIssue.secondeOrderCount += 1" v-if="item.commodity">
+                                                    <td >@{{ item.commodity.sku }}</td>
+                                                    <td >
+                                                        <div class="text-truncate text-primary tooltipTarget" style="width: 100px;cursor:pointer;text-decoration: underline" title="双击展开" @dblclick="nowrapText($event)">@{{ item.commodity.name }}</div>
+                                                        <div class="text-nowrap tooltipTarget"  style="display: none;cursor:pointer" @dblclick="truncateText($event)" title="双击收起">@{{ item.commodity.name }}</div>
+                                                        {{--                                                    <p class="text-truncate text-primary m-0 p-0" style="width: 100px;cursor:pointer;text-decoration: underline"  @click="nowrapText($event)">@{{ item.commodity.name }}</p>--}}
+                                                        {{--                                                    <p class="text-nowrap m-0 p-0" style="display: none;cursor:pointer" @click="truncateText($event)" >@{{ item.commodity.name }}</p>--}}
+                                                    </td>
+                                                    <td :data-value="orderIssue.secondeOrderItems+=item.amount">@{{ item.amount }}</td>
+                                                </tr>
+                                            </template>
+                                        </table>
+                                    </div>
+                                    <button type="button" class="btn btn-sm btn-outline-primary  align-middle mt-1"  data-toggle="collapse"
+                                            v-if="orderIssue.secondeOrderCount > 0"
+                                            :id="'secondOrderBtn'+orderIssue.id"
+                                            :data-target="'#secondOrder'+orderIssue.id"
+                                            @click="toggleSecond(orderIssue.id,orderIssue.secondeOrderItems)">
+                                        商品@{{ orderIssue.secondeOrderItems }}件,点击展开
+                                    </button>
+                                </template>
+                            </td>
                         @endcannot
-                        <td class="child-layer-3">
-                            @can('订单管理-问题件-编辑')
-                            <input type="number" class="form-control form-control-sm" :value="orderIssue.logistic_indemnity_money" @change="updateOrderIssue(orderIssue,'logistic_indemnity_money',$event)">
-                            @else
-                                @{{ orderIssue.logistic_indemnity_money }}
-                            @endcan
-                        </td>
-                        <td class="child-layer-3">
-                            @can('订单管理-问题件-编辑')
-                            <select class="form-control form-control-sm" :value="orderIssue.logistic_express_remission" @change="updateOrderIssue(orderIssue,'logistic_express_remission',$event)">
-                                <option value></option>
-                                <option v-for="item in expressRemission" :value="item">@{{ item }}</option>
-                            </select>
-                            @else
-                                @{{ orderIssue.logistic_express_remission }}
-                            @endcan
-                        </td>
                         @cannot('订单管理-问题件-客户不可见')
+                            <td class="child-layer-3">
+                                @can('订单管理-问题件-编辑')
+                                    <input type="number" class="form-control form-control-sm" :value="orderIssue.logistic_indemnity_money" @change="updateOrderIssue(orderIssue,'logistic_indemnity_money',$event)">
+                                @else
+                                    @{{ orderIssue.logistic_indemnity_money }}
+                                @endcan
+                            </td>
+                            <td class="child-layer-3">
+                                @can('订单管理-问题件-编辑')
+                                    <select class="form-control form-control-sm" :value="orderIssue.logistic_express_remission" @change="updateOrderIssue(orderIssue,'logistic_express_remission',$event)">
+                                        <option value></option>
+                                        <option v-for="item in expressRemission" :value="item">@{{ item }}</option>
+                                    </select>
+                                @else
+                                    @{{ orderIssue.logistic_express_remission }}
+                                @endcan
+                            </td>
+                        @endcannot
                         <td class="child-layer-3">
                             @can('订单管理-问题件-编辑')
-                            <input type="number" class="form-control form-control-sm" :value="orderIssue.baoshi_indemnity_money" @change="updateOrderIssue(orderIssue,'baoshi_indemnity_money',$event)">
+                                <input type="number" class="form-control form-control-sm" :value="orderIssue.baoshi_indemnity_money" @change="updateOrderIssue(orderIssue,'baoshi_indemnity_money',$event)">
                             @else
                                 @{{ orderIssue.baoshi_indemnity_money }}
                             @endcan
                         </td>
                         <td class="child-layer-3">
                             @can('订单管理-问题件-编辑')
-                            <select class="form-control form-control-sm" :value="orderIssue.baoshi_express_remission" @change="updateOrderIssue(orderIssue,'baoshi_express_remission',$event)">
-                                <option value></option>
-                                <option v-for="item in expressRemission" :value="item">@{{ item }}</option>
-                            </select>
+                                <select class="form-control form-control-sm" :value="orderIssue.baoshi_express_remission" @change="updateOrderIssue(orderIssue,'baoshi_express_remission',$event)">
+                                    <option value></option>
+                                    <option v-for="item in expressRemission" :value="item">@{{ item }}</option>
+                                </select>
                             @else
                                 @{{ orderIssue.baoshi_express_remission }}
                             @endcan
                         </td>
-                        <td class="child-layer-3">
-                            <select class="form-control form-control-sm" :value="orderIssue.user_workgroup_id" @change="updateOrderIssue(orderIssue,'user_workgroup_id',$event)">
-                                <option value></option>
-                                <option v-for="item in userWorkGroup" :value="item.name">@{{ item.value }}</option>
-                            </select>
-                        </td>
-                        <td>
-                            @can('订单管理-问题件-编辑')
-                            <a :href="'edit/'+orderIssue.id"  class="btn btn-sm btn-outline-primary" target="_blank">改</a>
-                            @endcan
-                            @can('订单管理-问题件-删除')
-                            <button type="button" class="btn btn-sm btn-outline-danger" @click="deleteOrderIssue($event)" :data-value="orderIssue.id">
-                                删
-                            </button>
-                            @endcan
-                        </td>
+                        @cannot('订单管理-问题件-客户不可见')
+                            <td class="child-layer-3">
+                                <select class="form-control form-control-sm" :value="orderIssue.user_workgroup_id" @change="updateOrderIssue(orderIssue,'user_workgroup_id',$event)">
+                                    <option value></option>
+                                    <option v-for="item in userWorkGroup" :value="item.name">@{{ item.value }}</option>
+                                </select>
+                            </td>
+                            <td>
+                                @can('订单管理-问题件-编辑')
+                                    <a :href="'edit/'+orderIssue.id"  class="btn btn-sm btn-outline-primary" target="_blank">改</a>
+                                @endcan
+                                @can('订单管理-问题件-删除')
+                                    <button type="button" class="btn btn-sm btn-outline-danger" @click="deleteOrderIssue($event)" :data-value="orderIssue.id">
+                                        删
+                                    </button>
+                                @endcan
+                            </td>
                         @endcannot
                     </tr>
                 </table>
+                <div class="text-info h5 btn btn">{{$orderIssues->count()}}/@{{  total }}</div>
                 {{$orderIssues->withQueryString()->links()}}
             </div>
         </div>
@@ -634,11 +647,11 @@
                 orderIssues: {!!  $orderIssues->toJson() !!}['data'],
                 owners: [@foreach($owners as $owner){name: '{{ $owner->id }}', value: '{{ $owner->name}}'},@endforeach],
                 orderIssueType: [
-                    @foreach($orderIssueType as $type)
+                        @foreach($orderIssueType as $type)
                     {name: '{{$type->id}}', value: '{{$type->name}}' },
                     @endforeach],
                 qualityLabel: [
-                    @foreach($qualityLabel as $type)
+                        @foreach($qualityLabel as $type)
                     {name: '{{$type->id}}', value: '{{$type->name}}'},
                     @endforeach],
                 userWorkGroup: [
@@ -657,7 +670,7 @@
                 expressRemission:['原单减免', '部分减免', '全部减免'],
                 checkData: [],
                 from: '',
-                finalStatus: ['已解决', '待退回', '退回中'],
+                finalStatus: [{value:'',name:""},{value:'已解决',name:"已解决"},{value:'待退回',name:"待退回"},{value:'退回中',name:"退回中"},],//['无','已解决', '待退回', '退回中'],
                 selectedStyle: '',
                 deleteId: '',
                 total: {!!  $orderIssues->toJson() !!}['total'],
@@ -670,6 +683,7 @@
                 },
             },
             mounted: function () {
+                $(".tooltipTarget").tooltip({'trigger':'hover'});
                 this.isShowOrderInfo = false;
                 this.isShowRejectedBill= false;
                 this.isShowSecondOrderInfo= false;
@@ -677,11 +691,10 @@
                 let countShow = $(tr).children('.one-layer').length;
                 $('.header-1').attr('colspan',countShow);
 
-                $('.tooltipTarget').tooltip({'trigger': 'hover'});
                 $('#list').removeClass("d-none");
 
                 let _this = this;
-                let log_content_range = [{name:'31',value:'近一月'},{name:'92',value:'近三月'},{name:'183',value:'近半年'},{name:'366',value:'近一年'},{name:'0',value:'不限'},];
+                let log_content_range = [{name:'15',value:'15天内'},{name:'31',value:'近一月'},{name:'92',value:'近三月'},{name:'183',value:'近半年'},{name:'366',value:'近一年'},{name:'0',value:'不限'},];
                 let final_status = [
                     {name: 'null', value: '无'},
                     {name: '已解决', value: '已解决'},
@@ -700,26 +713,33 @@
                     {name: 'logistic_number', type: 'input', tip: ['输入原始运单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索'], placeholder: '运单号'},
                     {name: 'logistic_number_return', type: 'input', tip: '退回单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '退回单号'},
                     {name: 'send_client_code', type: 'input', tip: '二次订单号:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '二次订单号'},
+
                 ], [
                     {name: 'created_at_end', type: 'dateTime', tip: '订单结束日期'},
                     {name: 'consignee_name', type: 'input', tip: '收货人名称:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '收货人名称'},
                     {name: 'consignee_phone', type: 'input', tip: '收货人电话:前或后加百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '收货人电话'},
                     {name: 'good_barcode', type: 'input', tip: '条码:前或后加 百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '条码'},
                     {name: 'good_name', type: 'input', tip: '商品名:前或后加 百分号为单个模糊搜索,否则为多条件精确搜索', placeholder: '商品名'},
-                    {name: 'id_quality_label', type: 'select', tip: '是否正品', placeholder: '是否正品', data: this.qualityLabel
-                    },
+                    {name: 'id_quality_label', type: 'select', tip: '是否正品', placeholder: '是否正品', data: this.qualityLabel},
+
                 ],[
-                    {name: 'logistic_indemnity_money', type: 'input', tip: '承运商赔偿金额', placeholder: '承运商赔偿金额'},
                     @cannot('订单管理-问题件-客户不可见')
+                    {name: 'logistic_indemnity_money', type: 'input', tip: '承运商赔偿金额', placeholder: '承运商赔偿金额'},
+                    @endcannot
                     {name: 'baoshi_indemnity_money', type: 'input', tip: '宝时赔偿金额', placeholder: '宝时赔偿金额'},
+                    @cannot('订单管理-问题件-客户不可见')
                     {name: 'final_status', type: 'select', tip: '问题件的最终状态', placeholder: '最终状态', data: final_status},
                     {name: 'order_issue_type_id', type: 'select', tip: '问题类别', placeholder: '问题类别', data: this.orderIssueType},
+                    @endcannot
                     {name: ['log_content','addtime'], type: 'input_select', tip: ['处理结果:前或后加 百分号为单个模糊搜索,否则为多条件精确搜索','查询范围越短,搜索速度越快'], placeholder: ['处理结果',''],
                         data:log_content_range,
                         rules:[{son:{addtime:{default:'31',required_without_all_if:['created_at_start','created_at_end']}}}]},
-                         // {date_relevance:{date:['orderdate_start','orderdate_end'],relevance:'addtime',killing:'date',default:[31,92,183,366]}}]},
+                    // {date_relevance:{date:['orderdate_start','orderdate_end'],relevance:'addtime',killing:'date',default:[31,92,183,366]}}]},
                     {name: 'is_handle', type: 'checkbox', tip: '是否已处理', data: [{name: 'ture', value: '已解决'}]},
-                    @endcannot
+                ],[
+                    {name: 'settlement_at_start', type: 'dateTime', tip: '完结起始日期'},
+                    {name: 'settlement_at_end', type: 'dateTime', tip: '完结结束日期' },
+                    {name: 'is_new_rejecting', type: 'select', tip: '退件状态',placeholder: '退件状态',data:[{name:'无',value:'无'},{name:'有',value:'有'},{name:'已处理',value:'已处理'}]},
                 ]];
                 this.form = new query({
                     el: '#form_div',
@@ -783,6 +803,7 @@
                 },
                 deleteOrderIssueById() {
                     let _this = this;
+
                     tempTip.setDuration(99999)
                     tempTip.waitingTip('删除中,请稍候')
                     let id = $('#deleteId').val();
@@ -938,25 +959,26 @@
                     }
                     let _this = this;
                     let ids = _this.checkData;
-                    let data = {ids: ids};
-                    axios.post('{{url('apiLocal/order/issue/endOrderIssue')}}', data).then(function (res) {
-                        if (res.data.success) {
-                            tempTip.setDuration(2000);
-                            tempTip.showSuccess('勾选订单已变为已完结');
-                            _this.orderIssues.forEach(function (item,index) {
-                                if (ids.includes(item.id)) {
-                                    item.final_status = '已解决'
-                                }
-                            });
-                            _this.checkData = [];
-                        } else {
-                            tempTip.setDuration(3000)
-                            tempTip.show(res.data.fail_info)
-                        }
-                    }).catch(function (err) {
-                        tempTip.setDuration(4000);
-                        tempTip.show('网络异常:' + err);
-                    })
+                    // let data = {ids: ids};
+                    this.endOrderIssues(ids)
+                    {{--axios.post('{{url('apiLocal/order/issue/endOrderIssue')}}', data).then(function (res) {--}}
+                    {{--    if (res.data.success) {--}}
+                    {{--        tempTip.setDuration(2000);--}}
+                    {{--        tempTip.showSuccess('勾选订单已变为已完结');--}}
+                    {{--        _this.orderIssues.forEach(function (item,index) {--}}
+                    {{--            if (ids.includes(item.id)) {--}}
+                    {{--                item.final_status = '已解决'--}}
+                    {{--            }--}}
+                    {{--        });--}}
+                    {{--        _this.checkData = [];--}}
+                    {{--    } else {--}}
+                    {{--        tempTip.setDuration(3000)--}}
+                    {{--        tempTip.show(res.data.fail_info)--}}
+                    {{--    }--}}
+                    {{--}).catch(function (err) {--}}
+                    {{--    tempTip.setDuration(4000);--}}
+                    {{--    tempTip.show('网络异常:' + err);--}}
+                    {{--})--}}
                 },
                 disposeOrderIssue(e,orderIssue) {
                     let _this = this;
@@ -976,6 +998,39 @@
                         tempTip.show('网路链接异常' + err);
                     });
                 },
+                endOrderIssueById(id){
+                    this.endOrderIssues([id]);
+                },
+                endOrderIssues(ids){
+                    let data = {ids:ids}
+                    let orderIssues = {};
+                    for (let i = 0; i < this.orderIssues.length; i++) {
+                        let id = this.orderIssues[i]['id']
+                        if(ids.includes(id))orderIssues[id] = this.orderIssues[i];
+
+                    }
+                    axios.post('{{url('apiLocal/order/issue/endOrderIssues')}}',data).then(function(response){
+                        if(response.data.success){
+                            tempTip.setDuration(3000)
+                            tempTip.showSuccess('订单已处理')
+                            let logs = response.data.logs
+                            for (let i = 0; i < logs.length; i++) {
+                                let log = logs[i]
+                                let orderIssue = orderIssues[log['order_issue_id']]
+                                if(orderIssue){
+                                    orderIssue.logs.unshift(log)
+                                    orderIssue['final_status'] = '已解决'
+                                }
+                            }
+                        }else{
+                            tempTip.setDuration(3000)
+                            tempTip.show(response.data.fail_info)
+                        }
+                    }).catch(function(error){
+                        tempTip.setDuration(4000)
+                        tempTip.show('网路链接异常' + error);
+                    })
+                },
                 addOrderIssueLog(id,orderIssue) {
                     let idInput = $('#' + id + ' :input[name="id"]');
                     let contentInput = $('#' + id + ' :input[name="content"]');
@@ -1003,6 +1058,7 @@
                 },
                 deleteOrderIssueLog(id, OrderIssueId) {
                     let _this = this;
+                    if(!confirm('是否删除当前记录'))return;
                     axios.post("{{url('apiLocal/order/issue/log/destroy')}}", {id: id}).then(function (res) {
                         if (res.data.success) {
                             _this.orderIssues.forEach(function (orderIssue) {
@@ -1143,7 +1199,12 @@
                     this.isShowSecondOrderInfo = true;
                 },
                 updateOrderIssue(orderIssue,column,e){
-                    let data = {id:orderIssue['id'],column:column,value:$(e.target).val()}
+                    let value = $(e.target).val()
+                    if(column === 'final_status' && value === '已解决'){
+                        this.endOrderIssueById(orderIssue['id'])
+                        return ;
+                    }
+                    let data = {id:orderIssue['id'],column:column,value:value}
                     axios.post('{{url("apiLocal/order/issue/updateColumn")}}',data).then(function(response){
                         if(response.data.success){
                             orderIssue[column] = data.value
@@ -1164,6 +1225,7 @@
                         tempTip.show('没有勾选内容')
                         return;
                     }
+                    if(!confirm('是否删除当前问题件'))return;
                     let _this = this
                     let data = {ids:this.checkData}
                     axios.post('{{url('apiLocal/order/issue/batchDestroy')}}',data).then(function(response){
@@ -1234,8 +1296,13 @@
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('修改成功')
                         }else{
-                            tempTip.setDuration(3000)
-                            tempTip.show('修改失败:'+response.data.fail_info)
+                            if(response.data.message){
+                                orderIssue['logistic_number_return'] = logistic_number_return
+                                tempTip.okWindow(response.data.message,'确认')
+                            }else{
+                                tempTip.setDuration(3000)
+                                tempTip.show('修改失败:'+response.data.fail_info)
+                            }
                         }
                     }).catch(function(error){
                         tempTip.setDuration(3000)

+ 2 - 2
resources/views/order/menu.blade.php

@@ -8,13 +8,13 @@
             </li>
             @endcan
             @can('订单管理-波次-查询')
-                <li class="nav-item">
+            <li class="nav-item">
                     <a class="nav-link" href="{{url('order/wave/index/')}}" :class="{active:isActive('wave',2)}">波次</a>
             </li>
             @endcan
             @can('订单管理-问题件-查询')
             <li class="nav-item">
-                <a class="nav-link" href="{{url('order/issue/index/')}}" :class="{active:isActive('issue',2)}">问题件</a>
+                <a class="nav-link" href="{{url('order/issue/index?addtime=15')}}" :class="{active:isActive('issue',2)}">问题件</a>
             </li>
             @endcan
             @can('订单管理-跟踪')

+ 9 - 4
resources/views/order/tracking/index.blade.php

@@ -126,8 +126,8 @@
                                 @{{ trackOrder.order_remark }}
                             @endcan
                         </td>
-                        <td class="td-yellow">@{{ trackOrder.packageWeight }}</td>
-                        <td class="td-yellow">@{{ trackOrder.packageBulk |millimeterToCubic}}</td>
+                        <td class="td-yellow">@{{ trackOrder.gross_weight }}</td>
+                        <td class="td-yellow">@{{ trackOrder.bulk |millimeterToCubic}}</td>
                         <td class="td-yellow">
                             @can('订单管理-跟踪-仓库编辑')
                                 <input class="form-control form-control-sm" :value="trackOrder.pallet_total" @change="warehouseUpdate($event,'pallet_total',trackOrder)" >
@@ -178,7 +178,7 @@
                                 @{{ trackOrder.receive_bill_status }}
                             @endcan
                         </td>
-                        <td class="td-calm">
+                        <td class="td-calm" data-toggle="tooltip">
                             @can('订单管理-跟踪-物流公司编辑')
                                 <input class="form-control form-control-sm" @change="logisticUpdate($event,'remark',trackOrder)" :value="trackOrder.remark" data-toggle="tooltip" data-placement="bottom" :title="trackOrder.remark">
                             @else
@@ -187,7 +187,7 @@
                         </td>
                     </tr>
                 </table>
-
+                <div class="text-info h5 btn btn">{{$trackOrders->count()}}/@{{  page.total }}</div>
               {{ $trackOrders->withQueryString()->links() }}
 
                 <div id="alert_modal" class="modal fade " tabindex="-1" aria-hidden="true" >
@@ -410,6 +410,11 @@
                             item[param] = value
                         }
                     })
+                    setTimeout(function () {
+                        let $data = $('[data-toggle="tooltip"]');
+                        $data.tooltip('dispose')
+                        $data.tooltip({'trigger': 'hover'})
+                    })
                 },
                 getTrackOrder(id){
                     return this.trackOrders.filter(function(trackOrder){

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

@@ -190,7 +190,6 @@
                                 is_asn_diff:receive.is_asn_diff
                             };
                             this.storeCheckingReceives.unshift(storeCheckingReceive);
-                            console.log(this.storeCheckingReceives);
                             if (res.data.errors.length < 1) $("#import").modal('hide');
                             else this.writeErrorText(res.data.errors);
 
@@ -208,6 +207,7 @@
                         tempTip.show(res.data.data);
                     }).catch(err=> {
                         tempTip.setDuration(3000);
+                        tempTip.setIndex(1099);
                         tempTip.show("网络错误:"+err);
                     })
                 },

+ 3 - 2
resources/views/waybill/index.blade.php

@@ -366,9 +366,10 @@
                         {name:'owner_id',type:'select_multiple_select',tip:['输入关键词快速定位下拉列表,回车确定','选择要显示的客户'],
                             placeholder:['货主','定位或多选货主'],data:this.owners},
                         {name:'created_at_start',type:'dateTime',tip:'选择显示指定日期的起始时间'},
-                        {name:'origination',type:'input',tip:'始发地:可在侧增加百分号(%)进行模糊搜索',placeholder: '始发地'},
-                        {name:'carrier_bill',type:'input',tip:'承运商单号:可在侧增加百分号(%)进行模糊搜索',placeholder: '承运商单号'},
+                        {name:'origination',type:'input',tip:'始发地:可在侧增加百分号(%)进行模糊搜索',placeholder: '始发地'},
+                        {name:'carrier_bill',type:'input',tip:'承运商单号:可在侧增加百分号(%)进行模糊搜索',placeholder: '承运商单号'},
                         {name:'status',type:'select',placeholder: '运单状态',data:this.status},
+                        {name:'source_bill',type:'input',tip: '上游单号:可在左侧增加百分号(%)进行模糊搜索',placeholder: '上游单号'},
                     ],
                     [
                         {name:'wms_bill_number',type:'input',tip:'WMS单号:可在两侧增加百分号(%)进行模糊搜索',placeholder: 'WMS单号'},

+ 1 - 0
routes/apiLocal.php

@@ -47,6 +47,7 @@ Route::group(['prefix' => 'order'], function () {
         Route::post('getOrderInfoByClientNo', 'OrderIssueController@apiGetOrderInfoByClientNo');
         Route::post('isExistByOrderNo','OrderIssueController@isExistByOrderNoApi');
         Route::post('updateLogisticNumberReturn','OrderIssueController@updateLogisticNumberReturnApi');
+        Route::post('endOrderIssues','OrderIssueController@endOrderIssuesApi');
 
          Route::group(['prefix'=>'onTop'],function(){
             Route::post('/store', 'OrderIssueOnTopController@apiStore');

+ 2 - 0
serves/excelExportGo/api/controller/rejectedController.go

@@ -80,6 +80,8 @@ func RejectedFormat(data []map[string]string) ([]interface{}, [][]interface{}, m
 					val = "待推单"
 				case "3":
 					val = "上传异常"
+                case "4":
+                    val = "交互异常"
 				}
 			}
 			line[value] = val

+ 1 - 1
tests/webApi/test.http

@@ -8,7 +8,7 @@
 POST http://bswas/api/thirdPart/weight/new
 Content-Type: application/json
 
-{"id": "abc6","barcode": "233170028951","weight": "13","length": 3,"width": 1,"height": 2}
+{"id": "TESTgpios","barcode": "test200928-c","weight": "697","length": 1010,"width": 1009,"height": 1000}
 
 ###
 POST http://bswas/api/thirdPart/weight/new

+ 1 - 0
webpack.mix.js

@@ -24,3 +24,4 @@ mix.copy('resources/js/queryForm/export.js','public/js/queryForm/export200918.js
 mix.js('resources/js/queryForm/header.js','public/js/queryForm/header200826b.js');
 
 mix.copy('resources/sound/','public/sound');
+