Переглянути джерело

Merge branch 'zengjun'

# Conflicts:
#	resources/views/maintenance/role/index.blade.php
#	resources/views/order/issue/index.blade.php
LD 5 роки тому
батько
коміт
8174e7e0b9
29 змінених файлів з 1266 додано та 1012 видалено
  1. 136 111
      app/Http/Controllers/OrderIssueController.php
  2. 1 1
      app/Http/Controllers/OrderIssueProcessLogController.php
  3. 0 2
      app/Http/Controllers/RejectedBillItemController.php
  4. 4 4
      app/Http/Controllers/RejectedController.php
  5. 12 2
      app/Http/Controllers/RoleController.php
  6. 3 4
      app/Http/Controllers/UserController.php
  7. 36 41
      app/Imports/OrderIssueImport.php
  8. 51 37
      app/Order.php
  9. 1 2
      app/OrderIssue.php
  10. 1 2
      app/OrderIssueOnTop.php
  11. 0 1
      app/OrderPackage.php
  12. 18 13
      app/RejectedBill.php
  13. 118 136
      app/Services/OrderIssueService.php
  14. 50 17
      app/Services/OrderPackageCommoditiesService.php
  15. 37 18
      app/Services/OrderPackageService.php
  16. 26 57
      app/Services/OrderService.php
  17. 7 3
      app/Services/RejectedService.php
  18. 9 29
      app/Services/WaveService.php
  19. 39 0
      database/migrations/2020_08_20_172156_add_order_client_no.php
  20. 11 1
      resources/views/maintenance/role/index.blade.php
  21. 1 1
      resources/views/maintenance/user/index.blade.php
  22. 1 1
      resources/views/order/index/delivering.blade.php
  23. 99 162
      resources/views/order/issue/create.blade.php
  24. 105 59
      resources/views/order/issue/edit.blade.php
  25. 3 3
      resources/views/order/issue/import.blade.php
  26. 453 288
      resources/views/order/issue/index.blade.php
  27. 14 13
      routes/apiLocal.php
  28. 25 0
      tests/OrderIssues/Controllers/OrderIssueController_apiDestryTest.php
  29. 5 4
      tests/OrderIssues/Controllers/OrderIssueController_indexTest.php

+ 136 - 111
app/Http/Controllers/OrderIssueController.php

@@ -6,12 +6,13 @@ use App\Exports\Export;
 use App\Imports\OrderIssueExport;
 use App\Imports\OrderIssueImport;
 use App\Logistic;
+use App\OracleDOCOrderHeader;
 use App\Order;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
 use App\OrderIssueType;
-use App\OrderPackage;
 use App\Owner;
+use App\QualityLabel;
 use App\RejectedBill;
 use App\Services\OrderIssueService;
 use App\Services\OrderService;
@@ -43,7 +44,9 @@ class OrderIssueController extends Controller
         $orderIssueService = app('orderIssueService');
         $owners = Owner::all();
         $orderIssues = $orderIssueService->paginate($request->all());
-        return view('order.issue.index', compact('owners', 'orderIssues'));
+        $orderIssueType = OrderIssueType::all();
+        $qualityLabel = QualityLabel::all();
+        return view('order.issue.index', compact('owners', 'orderIssues', 'orderIssueType', 'qualityLabel'));
     }
 
     public function create()
@@ -95,19 +98,17 @@ class OrderIssueController extends Controller
                 return $query->with('commodity');
             }]);
         }])->where('id', $orderIssue->order_id)->first();
-        $secondOrder = Order::with(['packages'=>function($query){
-            return $query->with(['commodities'=>function($query){
+        $secondOrder = Order::with(['packages' => function ($query) {
+            return $query->with(['commodities' => function ($query) {
                 return $query->with(['commodity']);
             }]);
         }])->where('id', $orderIssue->second_order_id)->first();
         $rejectedBill = RejectedBill::where('id', $orderIssue->rejected_bill_id)->first();
         $userWorkgroup = UserWorkgroup::all();
         $orderIssueType = OrderIssueType::all();
-
         $owners = Owner::all();
         $shops = Shop::all();
         $logistics = Logistic::all();
-//        return view('order/issue/edit', compact(['orderIssue', 'owners', 'userWorkgroup', 'shops', 'logistics', 'orderIssueType',]));
         return view('order/issue/edit', compact(['orderIssue', 'owners', 'userWorkgroup', 'shops', 'logistics', 'orderIssueType', 'order', 'secondOrder', 'rejectedBill']));
     }
 
@@ -127,13 +128,13 @@ class OrderIssueController extends Controller
             return redirect(url('/'));
         }
         $file = $request->file('file');
-        $fileSuffix = $request->file('file')->getClientOriginalExtension();
+        $fileSuffix = $file->getClientOriginalExtension();
         if (in_array($fileSuffix, ['xlsx', 'xlsm', 'xltx', 'xltm', 'xls', 'xlt', 'ods', 'ots', 'slk', 'xml', 'gnumeric', 'htm', 'html', 'csv', 'tsv'])) {
             ini_set('max_execution_time', 2100);
             ini_set('memory_limit', '512M');
             $extension = $request->file()['file']->getClientOriginalExtension();
             $extension[0] = strtoupper($extension[0]);
-            Excel::import(new OrderIssueImport(), $request->file()['file']->path(), null, $extension);
+            Excel::import(new OrderIssueImport(), $request->file('file')->path(), null, $extension);
             if (Cache::has('error')) {
                 return '<h1 class="text-danger">导入Excel失败<br><p style="color: red">' . Cache::pull('error') . '</p></h1>';
             } else {
@@ -153,21 +154,17 @@ class OrderIssueController extends Controller
     public function exportOrderIssue(Request $request)
     {
         $orderIssueService = app('orderIssueService');
-        $resultdata = $orderIssueService->exportExcel($request);
-
+        $resultData = $orderIssueService->exportExcel($request);
         $row = [[
-            'id' => 'ID', 'created_at' => '状态', 'order_created_at' => '登记日期', 'owner' => '客户', 'shop' => '店铺', 'order_no' => '原始订单号',
-            'logistic' => '原始承运商', 'consignee_name' => '收货人', 'consignee_phone' => '收货电话',
+            'id' => 'ID', 'order_created_at' => '登记日期', 'created_at' => '创建日期', 'owner' => '客户', 'shop' => '店铺', 'client_code' => '客户订单号',
+            'logistic' => '原始承运商', 'logistic_number' => '原始运单号', 'consignee_name' => '收货人', 'consignee_phone' => '收货电话',
             'province' => '省', 'city' => '市', 'district' => '区', 'address' => '收货人地址',
-// 原始商品信息order -> package -> commodity
             'commodity_code' => '商品条码', 'commodity_name' => '商品名称', 'amount' => '数量',
-// 退回商品信息 rejectedBill -> items
             'barcode_goods' => '商品条码', 'name_goods' => '商品名称', 'goods_amount' => '数量', 'is_checked' => '是否正品', 'remark' => '备注',
-            'rejecting_status'=>'退单状态',
-            'logtype'=>'操作类型','logremark'=>'说明','user'=>'操作者',
+            'rejecting_status' => '退单状态',
+            'logtype' => '操作类型', 'logremark' => '说明', 'user' => '操作者',
             'order_issue_type' => '问题类别',
             'second_order' => '二次订单', 'second_logistic' => '二次承运商', 'second_logistic_number' => '二次运单号',
-// 二次商品信息 order -> package -> commodity
             's_commodity_code' => '条码', 's_commodity_name' => '商品名', 's_amount' => '数量', /*'s_is_checked' => '是否正品', 's_remark' => '备注',*/
             'final_status' => '最终状态', 'logistic_indemnity_money' => '承运商赔偿金额', 'logistic_express_remission' => '承运商快递减免',
             'baoshi_indemnity_money' => '宝时赔偿金额', 'baoshi_express_remission' => '宝时快递减免', 'user_workgroup' => '事故责任方']];
@@ -175,15 +172,13 @@ class OrderIssueController extends Controller
         $list = [];
         $mergeCell = [];
         $i = 0;
-        foreach ($resultdata as $result) {
+        foreach ($resultData as $result) {
             $count = 0;
             $list[$i] = [
                 'id' => $result->id,
                 'created_at' => $result->created_at,    // 登记日期
                 'order_created_at' => isset($result->order) ? $result->order->created_at : '', // 订单创建日期
-                'owner' => isset($result->owner) ? $result->owner->name : '',   // 货主
-                'shop' => isset($result->shop) ? $result->shop->name : '',      // 店铺
-                'final_status' => $result->final_status,                        // 最终处理结果
+                'final_status' => $result->final_status,     // 最终处理结果
                 'order_issue_type' => isset($result->type) ? $result->type->name : '',
                 'logistic_indemnity_money' => $result->logistic_indemnity_money,
                 'logistic_express_remission' => $result->logistic_express_remission,
@@ -192,8 +187,10 @@ class OrderIssueController extends Controller
                 'user_workgroup' => isset($result->userWorkGroup) ? $result->userWorkGroup->name : '',
                 'rejecting_status' => isset($result->rejecting_status) ? $result->rejecting_status : '',
             ];
-            $sign=$i+2;
+            $sign = $i + 2;
             if (isset($result->order)) {
+                $list[$i]['shop'] = $result->order->shop ? $result->order->shop->name : '';// 店铺
+                $list[$i]['owner'] = $result->order->owner ? $result->order->owner->name : '';// 货主
                 $list[$i]['logistic'] = $result->order->logistic ? $result->order->logistic->name : '';
                 $list[$i]['consignee_name'] = $result->order->consignee_name;
                 $list[$i]['consignee_phone'] = $result->order->consignee_phone;
@@ -201,34 +198,35 @@ class OrderIssueController extends Controller
                 $list[$i]['city'] = $result->order->city;
                 $list[$i]['district'] = $result->order->district;
                 $list[$i]['address'] = $result->order->address;
-                $list[$i]['order_no'] = $result->order->code;
+                $list[$i]['client_code'] = $result->order->client_code;
+                $list[$i]['logisticNumbers'] = $result->order->logistic_number;
                 $cell = $i;
                 if (isset($result->order->packages)) {
                     $packages = $result->order->packages;
                     foreach ($packages as $key => $value) {
-                        if(isset($value->commodities)){
+                        if (isset($value->commodities)) {
                             $commodities = $value->commodities;
-                            foreach($commodities as $commodity){
-                                $list[$cell]['commodity_code'] = isset($commodity->commodity)? $commodity->commodity->sku:'';
-                                $list[$cell]['commodity_name'] = isset($commodity->commodity)?$commodity->commodity->name :'';
+                            foreach ($commodities as $commodity) {
+                                $list[$cell]['commodity_code'] = isset($commodity->commodity) ? $commodity->commodity->sku : '';
+                                $list[$cell]['commodity_name'] = isset($commodity->commodity) ? $commodity->commodity->name : '';
                                 $list[$cell]['amount'] = $commodity->amount;
+                                $cell++;
                             }
                         }
-                        $cell++;
                     }
                     $count = $cell - $i;
                 }
             }
-            if(isset($result->logs)){
+            if (isset($result->logs)) {
                 $logs = $result->logs;
                 $cell = $i;
-                foreach ($logs as $log){
+                foreach ($logs as $log) {
                     $list[$cell]['logtype'] = $log->type;
-                    $list[$cell]['logremark'] =$log->content;
-                    $list[$cell]['user'] = isset($log->user) ? $log->user->name:"";
+                    $list[$cell]['logremark'] = $log->content;
+                    $list[$cell]['user'] = isset($log->user) ? $log->user->name : "";
                     $cell++;
                 }
-                $count = $cell - $i > $count ?  $cell - $i : $count;
+                $count = $cell - $i > $count ? $cell - $i : $count;
             }
             if (isset($result->secondOrder)) {
                 $list[$i]['second_order'] = $result->secondOrder->code;
@@ -236,20 +234,20 @@ class OrderIssueController extends Controller
                 $list[$i]['second_logistic_number'] = $result->secondOrder->code;
                 $secondOrder = $result->secondOrder;
                 if (isset($secondOrder->secondOrder->packages)) {
-                    $spackages = $result->order->packages;
+                    $packages = $result->order->packages;
                     $cell = $i;
-                    foreach ($spackages as $key => $value) {
-                        if(isset($value->commodities)){
+                    foreach ($packages as $key => $value) {
+                        if (isset($value->commodities)) {
                             $commodities = $value->commodities;
-                            foreach($commodities as $commodity){
-                                $list[$cell]['s_commodity_code'] = isset($commodity->commodity)? $commodity->commodity->sku:'';
-                                $list[$cell]['s_commodity_name'] = isset($commodity->commodity)?$commodity->commodity->name :'';
+                            foreach ($commodities as $commodity) {
+                                $list[$cell]['s_commodity_code'] = isset($commodity->commodity) ? $commodity->commodity->sku : '';
+                                $list[$cell]['s_commodity_name'] = isset($commodity->commodity) ? $commodity->commodity->name : '';
                                 $list[$cell]['s_amount'] = $commodity->amount;
+                                $cell++;
                             }
                         }
-                        $cell++;
                     }
-                    $count = $cell - $i > $count ?  $cell - $i : $count;
+                    $count = $cell - $i > $count ? $cell - $i : $count;
                 }
             }
             if (isset($result->rejectedBill)) {
@@ -261,34 +259,23 @@ class OrderIssueController extends Controller
                     $list[$cell]['goods_amount'] = $value['amount'];
                     $list[$cell]['is_checked'] = $value['is_checked'];
                     $list[$cell]['remark'] = $value['remark'];
-                    $cell ++;
+                    $cell++;
                 }
-                $count = $cell - $i > $count ?  $cell - $i : $count;
+                $count = $cell - $i > $count ? $cell - $i : $count;
             }
             $i += $count;
-            $mergeCell[$sign] = $i+1;
+            $mergeCell[$sign] = $i + 1;
         }
         $columnName = [
-            "A", "B", "C", "D", "E", "F",
-            "G", "H", "I",
-            "J", "K", "L", "M",
-            /*"N", "O", "P",*/
-            /*"Q", "R", "S", "T", "U",*/
-            "V",
-            /*"W", "X", "Y",*/
-            "Z",
-            "AA", "AB", "AC",
-            /*"AD", "AF", "AG",*/
-            "AH", "AI", "AJ",
-            "AK", "AL" , "AM"];
-        if(Gate::has('客户不可见')){
+            "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", /* "O", "P","Q",*//* "R", "S", "T", "U", "V",*/
+            "W", /*"X", "Y",*/"Z", "AA", "AB", "AC", /*"AD", "AF", "AG",*/"AH", "AI", "AJ", "AK", "AL", "AM"];
+        if (Gate::has('客户不可见')) {
             unset($row[0]['baoshi_indemnity_money']);
             unset($columnName['AK']);
-
         }
-        foreach ($list as $key=>&$value){
-            foreach ($row[0] as $rowKey=>$rowValue){
-                if(!isset($value[$rowKey])){
+        foreach ($list as $key => &$value) {
+            foreach ($row[0] as $rowKey => $rowValue) {
+                if (!isset($value[$rowKey])) {
                     $value[$rowKey] = '';
                 }
             }
@@ -339,23 +326,30 @@ class OrderIssueController extends Controller
         if (!Gate::allows('订单管理-问题件-编辑')) {
             return ['success' => false, 'fail_info' => '没有对应权限'];
         }
-        $validator =  $this->apiUpdateValidator($request);
-        if ($validator->fails()){
+        $validator = $this->apiUpdateValidator($request->input('orderIssues'));
+        if ($validator->fails()) {
             $arr = [];
-            foreach ($validator->getMessageBag()->toArray() as $k=>$error){
+            foreach ($validator->getMessageBag()->toArray() as $k => $error) {
                 array_push($arr, $error[0]);
             }
-            return [
-                'success' => false,
-                'errors' => $arr
-            ];
+            return ['success' => false, 'errors' => $arr];
         }
-        $orderIssue = OrderIssue::where('id', $request->input('id'))->first();
+        if($request->filled( 'rejectedBill')){
+            $validator = $this->apiUpdateValidatorRejectedBill($request->input('rejectedBill'));
+            if($validator->fails()){
+                $arr = [];
+                foreach ($validator->getMessageBag()->toArray() as $k => $error) {
+                    array_push($arr, $error[0]);
+                }
+                return ['success' => false, 'errors' => $arr];
+            }
+        }
+        $orderIssue = OrderIssue::where('id', $request->input('orderIssues')['id'])->first();
         if (!$orderIssue) {
             return ['success' => false, 'fail_info' => '数据库没有相应记录,请到查询页面刷新重试'];
         }
-        $orderIssue->fill($request->all());
-        $orderIssue->update();
+        $orderIssueService = app('orderIssueService');
+        $orderIssueService->updateOrderIssue($orderIssue, $request->all());
         $this->log(__METHOD__, __FUNCTION__, json_encode($request->toArray()), Auth::user()['id']);
         return ['success' => true, 'id' => $orderIssue['id']];
     }
@@ -368,11 +362,11 @@ class OrderIssueController extends Controller
         if (!$request->has('ids')) {
             return ['success' => false, 'fail_info' => '没有传入对应的参数'];
         }
-        $count = OrderIssue::whereIn('id', $request->input('ids'))->where('handle_status', 2)->count();
+        $count = OrderIssue::whereIn('id', $request->input('ids'))->where('final_status', '已解决')->count();
         if ($count > 0) {
             return ['success' => false, 'fail_info' => '勾选的内容中已有完结的订单问题件,取消勾选后重试'];
         } else {
-            $count = OrderIssue::whereIn('id', $request->input('ids'))->update(['handle_status' => 2]);
+            OrderIssue::whereIn('id', $request->input('ids'))->update(['final_status' => '已解决']);
             foreach ($request->input('ids') as $id) {
                 OrderIssueProcessLog::create(['order_issue_id' => $id, 'user_id' => Auth::user()['id'], 'type' => '结束', 'content' => '完结订单']);
             }
@@ -391,72 +385,89 @@ class OrderIssueController extends Controller
         }
         $bool = OrderIssue::where('id', $request->input('id'))->update(['is_new_rejecting' => '已处理']);
         if ($bool) {
-            OrderIssueProcessLog::create(['order_issue_id' => $request->input('id'), 'user_id' => Auth::user()['id'], 'content' => '订单已处理', 'type' => '处理']);
-            return ['success' => true];
+            $log = OrderIssueProcessLog::create(['order_issue_id' => $request->input('id'), 'user_id' => Auth::user()['id'], 'content' => '订单已处理', 'type' => '处理']);
+            $log=OrderIssueProcessLog::with(['user'])->where('id',$log['id'])->first();
+            return ['success' => true,'data'=> $log];
         }
         return ['success' => false, 'fail_info' => '修改失败'];
     }
 
-    public function apiGetOrderInfoByWMSOrderNo(Request $request)
+    public function apiGetOrderInfoByClientNo(Request $request)
     {
-        if (!$request->filled('WMSOrderNo')) {
-            return ['success' => false, 'fail_info' => '缺失WMS订单参数无法查询'];
+        if (!$request->filled('clientNo')) {
+            return ['success' => false, 'fail_info' => '缺失WMS订单参数无法查询'];
         }
         $orderService = app('orderService');
-        $orderInfo = $orderService->createOrderByWMSOrderNo($request->input('WMSOrderNo'));
+        $orderInfo = $orderService->findOrCreateByClientCode($request->input('clientNo'));
         if (!$orderInfo) {
-            return ['success' => false, 'fina_info' => '没有对应的WMS订单号'];
+            return ['success' => false, 'fail_info' => '没有对应的WMS订单信息'];
         }
         return ['success' => true, 'data' => $orderInfo];
     }
 
-    public function apiOrderIssueHasCreate(Request $request)
+    public function apiOrderIssueHasClientCode(Request $request)
     {
-        if (!$request->filled(['type', 'id'])) {
+        if (!$request->filled('clientCode')) {
             return ['success' => false, 'fail_info' => '缺少对应的参数或条件'];
         }
         $orderService = app('orderService');
-        $rejectedService = app('rejectedService');
-        if ($request->input('type') == 'WMSOrderNo') {
-            $order = $orderService->createOrderByWMSOrderNo($request->input('id'));
-            $bool = OrderIssue::where('order_id', $order['id'])->count() > 0;
-            if ($bool) {
-                return ['success' => false, 'fail_info' => '该订单号已有问题订单件'];
-            } else {
-                $order = $orderService->createOrderByWMSOrderNo($request->input('id'));
-                $rejectedBill = $rejectedService->getRejectedByWMSOrderNo($request->input('id'));
-                return ['success' => true, 'data' => compact(['order', 'rejectedBill'])];
+        $clientCode = $request->input('clientCode');
+        $order = Order::where('client_code', $clientCode)->first();
+        if ($order) {
+            if (OrderIssue::where('order_id', $order['id'])->count()) {
+                return ['success' => false, 'fail_info' => '该客户订单号已有对应的订单问题件'];
             }
-        } else if ($request->input('type') == 'RejectedBill') {
-            $rejectedBill = RejectedBill::where('logistic_number_return',$request->input('id'))->first();
-            if(!$rejectedBill){
-                return ['success'=>true,'fail_info' => '没有对应的退回单号将但仍可以创建订单问题件'];
+            $order = $orderService->findOrCreateByClientCode($clientCode);
+            return ['success' => true, 'order' => $order];
+        } else {
+            $orderHeader = OracleDOCOrderHeader::where('SOReference1', $clientCode)->first();
+            if (!$orderHeader) {
+                return ['success' => false, 'fail_info' => '该客户订单号没有对应的订单信息'];
+            } else {
+                $order = $orderService->findOrCreateByClientCode($clientCode);
+                $rejectedBill = $orderService->getRejectedBillOfClientCode($clientCode);
+                return ['success' => true, 'order' => $order, 'rejectedBill' => $rejectedBill];
             }
-            $bool = OrderIssue::where('rejected_bill_id',$rejectedBill['id'] )->count() > 0;
-            if ($bool) {
-                return ['success' => false, 'fail_info' => '退回单号已有对应的问题单'];
+        }
+    }
+
+    public function apiOrderIssueHasLogisticNumberReturn(Request $request)
+    {
+        if (!$request->filled('logisticNumberReturn')) {
+            return ['success' => false, 'fail_info' => '缺少对应的参数或条件'];
+        }
+        $logisticNumberReturn = $request->input('logisticNumberReturn');
+        $rejectedBill = RejectedBill::with('items')->where('logistic_number_return', $logisticNumberReturn)->first();
+        if ($rejectedBill) {
+            $orderIssue = OrderIssue::where('rejected_bill_id', $rejectedBill->id)->first();
+
+            if ($orderIssue) {
+                return ['success' => false, 'fail_info' => '该退回单号已有对应的问题件'];
             } else {
-                $order = $orderService->getOrderInfoByLogisticNumberReturn($request->input('id'));
-                $rejectedBill = RejectedBill::with('items')->where('logistic_number_return', $request->input('id'))->first();
-                return ['success' => true, 'data' => compact(['order', 'rejectedBill'])];
+                $orderService = app('orderService');
+                $order = $orderService->findOrCreteByLogisticNumberReturn($logisticNumberReturn);
+                return ['success' => true, 'order' => $order, 'rejectedBill' => $rejectedBill];
             }
+        } else {
+            return ['success' => true, 'meg' => '没有对应的退回单号,但仍可以录入'];
         }
     }
 
-    public function apiUpdateValidator(Request $request){
-        return Validator::make($request->input(), [
+    public function apiUpdateValidator(array $arr)
+    {
+        return Validator::make($arr, [
             'order_issue_type_id' => ['required'],
             'handle_status' => ['nullable'],
             'result_explain' => ['nullable'],
-            'logistic_indemnity_money' => ['nullable','numeric'],
+            'logistic_indemnity_money' => ['nullable', 'numeric'],
             'logistic_express_remission' => ['nullable'],
-            'baoshi_indemnity_money' => ['nullable','numeric'],
+            'baoshi_indemnity_money' => ['nullable', 'numeric'],
             'baoshi_express_remission' => ['nullable'],
-        ],[
-            'required' => [':attribute 为必填项',':attribute'] ,
-            'numeric' => [':attribute  为可确认的数值',':attribute']
-        ],[
-            'order_issue_type_id'=>'问题类别',
+        ], [
+            'required' => [':attribute 为必填项', ':attribute'],
+            'numeric' => [':attribute  为可确认的数值', ':attribute']
+        ], [
+            'order_issue_type_id' => '问题类别',
             'handle_status' => '处理状态',
             'result_explain' => '处理结果说明',
             'logistic_indemnity_money' => '承运商赔偿金额',
@@ -465,4 +476,18 @@ class OrderIssueController extends Controller
             'baoshi_express_remission' => '宝时快递减免',
         ]);
     }
+
+    public function apiUpdateValidatorRejectedBill(array $arr){
+        return Validator::make($arr, [
+            'logistic_number_return'=>['required'],
+            'id_owner'=>['required'],
+            'id_logistic_return'=>['required'],
+        ], [
+            'required' => [':attribute 为必填项', ':attribute'],
+        ], [
+            'logistic_number_return'=> '退回单号',
+            'id_owner'=> '退回单号货主',
+            'id_logistic_return'=> '退回单号承运商',
+        ]);
+    }
 }

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

@@ -69,7 +69,7 @@ class OrderIssueProcessLogController extends Controller
         }
     }
 
-    public function apisDestroy(Request $request){
+    public function apiDestroy(Request $request){
         if(!$request->filled('id')){
             return ['success'=>false,'fail_info'=>'没有传入对应参数'];
         }

+ 0 - 2
app/Http/Controllers/RejectedBillItemController.php

@@ -72,10 +72,8 @@ class RejectedBillItemController extends Controller
             $rejectedBillItem->save();
         }
         $rejectedBillItem->injectCommodityName();
-
         $rejectedBIll = RejectedBill::where('id',$request->input('id_rejected_bill'))->first();
         $rejectedBIll->syncOrderIssue();
-
         $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
         return ['success'=>'true','id'=>$rejectedBillItem['id']];
     }

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

@@ -492,10 +492,10 @@ class RejectedController extends Controller
         if(!$request->filled('logisticNumberReturn')){
             return ['success' => false,'fail_info' => '没有传入对应的参数'];
         }
-        $data =  RejectedBill::with(['items'])->where('logistic_number_return',$request->input('logisticNumberReturn'));
-        if(!$data){
-            return ['success' => false,'fail_info' => '没有对应的退回单'];
+        $rejectedBill =  RejectedBill::with(['items'])->where('logistic_number_return',$request->input('logisticNumberReturn'))->first();
+        if(!$rejectedBill){
+            return ['success' => true,'msg' => '没有对应的退回单号,但仍可以生成问题订单'];
         }
-        return ['success'=>true,'data' => $data];
+        return ['success'=>true,'rejectedBill' => $rejectedBill];
     }
 }

+ 12 - 2
app/Http/Controllers/RoleController.php

@@ -18,10 +18,20 @@ class RoleController extends Controller
      *
      * @return Response
      */
-    public function index()
+    public function index(Request $request)
     {
         if(!Gate::allows('角色-查询')){ return redirect(url('/'));  }
-        $roles=Role::with('authorities')->orderBy('id','desc')->paginate(35);
+        $query = Role::with('authorities');
+/*        if($request->has('user')){
+            $user = $request->input('user');
+            $query->whereHas('users',function($query) use ($user){
+                $query->where('name','like',$user);
+            });
+        }*/
+        if($request->has('role')){
+            $query->where('name','like',$request->input('role'));
+        }
+        $roles= $query->orderBy('id','desc')->paginate(35);
         return view('maintenance.role.index',['roles'=>$roles]);
     }
 

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

@@ -26,16 +26,15 @@ class UserController extends Controller
     {
         if(!Gate::allows('用户-查询')){ return redirect(url('/'));  }
         $query = User::with(['roles','carriers','userWorkgroups']);
-        if($request->has('name')){
-           $query->where('name','like',$request->input('name'));
+        if($request->has('user')){
+           $query->where('name','like',$request->input('user'));
         }
         if($request->has('role')){
             $role = $request->input('role');
             $query->whereHas('roles',function($query) use ($role){
-                return $query->where('name','like',$role);
+                 $query->where('name','like',$role);
             });
         }
-
 //        $users=User::with(['roles','carriers','userWorkgroups'])->orderBy('id','desc')->paginate(35);
         $users = $query->orderBy('id','desc')->paginate(35);
         $users->each(function (User $user){

+ 36 - 41
app/Imports/OrderIssueImport.php

@@ -7,6 +7,8 @@ use App\Order;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
 use App\OrderIssueType;
+use App\Services\OrderService;
+use App\Services\RejectedService;
 use Doctrine\DBAL\Connection;
 use Illuminate\Support\Collection;
 use Illuminate\Support\Facades\Auth;
@@ -18,70 +20,62 @@ use Maatwebsite\Excel\Imports\HeadingRowFormatter;
 
 HeadingRowFormatter::default('none');
 
-class OrderIssueImport implements ToCollection, WithHeadingRow,WithMultipleSheets
+class OrderIssueImport implements ToCollection, WithHeadingRow, WithMultipleSheets
 {
 
     public function Collection(Collection $collection)
     {
         $endIS = false;
-        if (!isset($collection->toArray()[0]['原始运单号']) || !isset($collection->toArray()[0]['情况说明']) || !isset($collection->toArray()[0]['问题类别']))
+        if (!isset($collection->toArray()[0]['原始运单号']) || !isset($collection->toArray()[0]['情况说明']) || !isset($collection->toArray()[0]['问题类别'])) {
             Cache::put('error', '请检查您第一行标题是否存在原始运单号,情况说明,问题类别');
-        else $endIS = true;
+        } else {
+            $endIS = true;
+        }
         $exception = [];
         $sum = 2;
         $orderService = app('orderService');
-        $orderIssueService = app('orderIssueService');
-        $orderIssues = [];
+        $rejectedService = new RejectedService();
         if ($endIS) {
             foreach ($collection as $row) {
-
+                $client_no = trim($row['原始运单号'], ' ');
                 if (!$row['原始运单号']) {
                     array_push($exception, ['第' . $sum . '行数据运单号为空!']);
                     $sum++;
                     continue;
-                }
-                if (!$row['情况说明']) {
+                } else if (!$row['情况说明']) {
                     array_push($exception, ['第' . $sum . '行问题说明为空!']);
                     $sum++;
                     continue;
-                }
-                if (!$row['问题类别']) {
+                } else if (!$row['问题类别']) {
                     array_push($exception, ['第' . $sum . '行问题类别为空!']);
                     $sum++;
                     continue;
                 }
-                if(OracleDOCOrderHeader::where('orderNo',$row['原始运单号'])->count() == 0){
-                    array_push($exception, ['订单' . $row['原始运单号'] . '运单号不存在']);
+                $count = OracleDOCOrderHeader::where('SOReference1', $client_no)->count();
+                if (!$count) {
+                    array_push($exception, ['原始运单号' . $row['原始运单号'] . '对应的WMS运单不存在']);
+                    $sum++;
                     continue;
                 }
-                $order = Order::with('issue')->where('code', $row['原始运单号'])->first();
-
-                $orderHeader =OracleDOCOrderHeader::where('orderNo',$row['原始运单号'])->first();
-                if (!$row['问题类别']) {
-                    array_push($exception, ['订单' . $row['原始运单号'] . '没有对应的问题类别']);
-                } else if (!$orderHeader) {
-                    array_push($exception, ['订单' . $row['原始运单号'] . '对应的WMS运单不存在']);
-                } else if (isset($order->issue) ) {
-                    array_push($exception, ['订单' . $row['原始运单号'] . '对应的问题件已存在']);
+                $order = $orderService->findOrCreateByClientCode($client_no);
+                $orderIssue = OrderIssue::where('order_id', $order['id'])->first();
+                $rejectedBill = $rejectedService->getRejectedByClientNo($client_no);
+                if ($orderIssue) {
+                    array_push($exception, ['原始运单号' . $row['原始运单号'] . '对应的问题件已存在']);
+                    $sum++;
+                    continue;
+                }
+                $arr = ['order_id' => $order['id'],];
+//                $arr['result_explain'] = $row['情况说明'];
+                if ($rejectedBill) {
+                    $arr['rejected_bill_id'] = $rejectedBill['id'];
+                }
+                $orderIssue = OrderIssue::create($arr);
+                if ($orderIssue) {
+                    array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建成功!']);
+                    OrderIssueProcessLog::create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => $row['情况说明'], 'type' => '创建']);
                 } else {
-                    $type = OrderIssueType::where('name',$row['问题类别'])->first();
-                    if ($type == null) {
-                        array_push($exception, ['订单' . $row['原始运单号'] . '没有对应的问题类别']);
-                        continue;
-                    }
-                    $order = $orderService->createOrderByWMSOrderNo($row['原始运单号']);
-                    if (!$order) {
-
-                        $orderIssue = $orderIssueService->createOrFind($row['原始运单号']);
-                        $orderIssue->order_issue_type_id = $type->id;
-                        $orderIssue->save();
-
-                        if (!$orderIssue) {
-                            array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建失败']);
-                        }
-                        OrderIssueProcessLog::create(['order_issue_id'=>$orderIssue['id'],'user_id'=>Auth::user()['id'],'content'=>'创建订单问题件','type'=>'创建']);
-                        array_push($orderIssues, $orderIssue);
-                    }
+                    array_push($exception, ['订单' . $row['原始运单号'] . '问题件创建失败']);
                 }
                 $sum++;
             }
@@ -94,7 +88,8 @@ class OrderIssueImport implements ToCollection, WithHeadingRow,WithMultipleSheet
      * ExcelImprot 默认是有多少个分表就执行多少次的分表
      * @return OrderIssueImport[]|array
      */
-    public function sheets():array{
-        return [0=>new OrderIssueImport()];
+    public function sheets(): array
+    {
+        return [0 => new OrderIssueImport()];
     }
 }

+ 51 - 37
app/Order.php

@@ -11,66 +11,64 @@ class Order extends Model
     use ModelTimeFormat;
 
     protected $fillable = [
-        'created_at','code','shop_id','owner_id',
-        'logistic_id','consignee_name','consignee_phone','province',
-        'city','district','address','wms_status'];
+        'created_at', 'code', 'shop_id', 'owner_id', 'client_code',
+        'logistic_id', 'consignee_name', 'consignee_phone', 'province',
+        'city', 'district', 'address', 'wms_status'];
 
     protected $appends = [
-        'creator',
         'logisticNumbers',
         'amount',
+        'commodityPackages'
     ];
 
-    public function logistic(){
-        return $this->belongsTo('App\Logistic','logistic_id','id');
+    public function logistic()
+    {
+        return $this->belongsTo('App\Logistic', 'logistic_id', 'id');
     }
 
-    public function issue(){
-        return $this->hasOne('App\OrderIssue','id','order_id');
+    public function issue()
+    {
+        return $this->hasOne('App\OrderIssue', 'id', 'order_id');
     }
 
-    public function shop(){
-        return $this->belongsTo('App\Shop','shop_id','id');
+    public function shop()
+    {
+        return $this->belongsTo('App\Shop', 'shop_id', 'id');
     }
 
-    public function owner(){
-        return $this->belongsTo('App\Owner','owner_id','id');
+    public function owner()
+    {
+        return $this->belongsTo('App\Owner', 'owner_id', 'id');
     }
 
-    public function packages(){
-        return $this->hasMany('App\OrderPackage','order_id','id');
+    public function packages()
+    {
+        return $this->hasMany('App\OrderPackage', 'order_id', 'id');
     }
 
-    public function setCreatorAttribute ($id,$user_id){
-        Sign::updateOrCreate(['signable_type'=>'orders','signable_id'=>$id,'field'=>'creator','mark'=>$user_id]);
-    }
-
-    public function getCreatorAttribute(){
-       return  $this->hasOne('App\Sign','signable_id','id')
-            ->where('signable_type','orders')
-            ->where('field','creator')
-            ->value('mark');
-    }
-
-    public function getlogisticNumbersAttribute(){
-        if(!$this->packages){
+    public function getLogisticNumbersAttribute()
+    {
+        $packages = $this->packages;
+        if (!$packages) {
             return [];
-        }else{
+        } else {
             $arr = [];
-           foreach ( $this->packages as $package){
-               $arr[] = $package->logistic_number;
-           }
-           return $arr;
+            foreach ($packages as $package) {
+                array_push($arr, $package->logistic_number);
+            }
+            return $arr;
         }
     }
 
-    public function getAmountAttribute(){
-        if(!$this->packages){
+    public function getAmountAttribute()
+    {
+        $packages = $this->packages;
+        if (!$packages) {
             return 0;
-        }else{
+        } else {
             $count = 0;
-            foreach ( $this->packages as $package){
-                foreach ($package->commodities as $item){
+            foreach ($packages as $package) {
+                foreach ($package->commodities as $item) {
                     $count += $item->amount;
                 }
             }
@@ -78,4 +76,20 @@ class Order extends Model
         }
     }
 
+    public function getCommodityPackagesAttribute()
+    {
+        $packages = $this->packages;
+        if (!$packages) {
+            return 0;
+        } else {
+            $count = 0;
+            foreach ($packages as $package) {
+                foreach ($package->commodities as $item) {
+                    $count++;
+                }
+            }
+            return $count;
+        }
+    }
+
 }

+ 1 - 2
app/OrderIssue.php

@@ -11,7 +11,7 @@ class OrderIssue extends Model
     use ModelTimeFormat;
 
     protected $fillable = [
-        'order_id','handle_status','create_at','rejected_bill_id','rejecting_status','result_explain',
+        'order_id','create_at','rejected_bill_id','rejecting_status','result_explain',
         'situation_explain', 'order_issue_type_id','second_order_id','is_new_rejecting',
         'final_status','logistic_indemnity_money','logistic_express_remission','baoshi_indemnity_money','baoshi_express_remission','user_workgroup_id'];
 
@@ -50,5 +50,4 @@ class OrderIssue extends Model
     public function getSecondLogisticNumberAttribute(){
         return $this['secondOrder']['code'] ??'';
     }
-
 }

+ 1 - 2
app/OrderIssueOnTop.php

@@ -9,11 +9,10 @@ class OrderIssueOnTop extends Model
 {
     //
     use ModelTimeFormat;
-
+    
     protected $fillable = [ 'order_issue_id','remark'];
 
     public function OrderIssue(){
         return $this->belongsTo('App\OrderIssue','order_issue_id','id');
     }
-
 }

+ 0 - 1
app/OrderPackage.php

@@ -12,7 +12,6 @@ class OrderPackage extends Model
 
     protected $fillable = ['order_id','logistic_number'];
 
-
     public function order(){
         return $this->belongsTo('App\Order','order_id','id');
     }

+ 18 - 13
app/RejectedBill.php

@@ -66,8 +66,10 @@ class RejectedBill extends Model
         $this['checked_numbers']=$initials.Carbon::now()->format('Ymd').$owner->getIncreasedCheckingCount();
         return $this['checked_numbers'];
     }
-    function orderIssue(){
-        return $this->hasOne('App\OrderIssue','rejected_bill_id','id');
+
+    function orderIssue()
+    {
+        return $this->hasOne('App\OrderIssue', 'rejected_bill_id', 'id');
     }
 
     function update(array $attributes = [], array $options = [])
@@ -138,11 +140,14 @@ class RejectedBill extends Model
         return $this['is_loaded'];
     }
 
-    public function syncOrderIssue(){
+    public function syncOrderIssue()
+    {
         $orderIssue = $this->orderIssue()->first();
-        if(isset($orderIssue)){
-           $this-> judgeRejectingStatus($orderIssue);
-           OrderIssue::where('id',$orderIssue['id'])->update(['is_new_rejecting'=>'有']);
+        if ($orderIssue ?? false) {
+            $this->judgeRejectingStatus($orderIssue);
+            OrderIssue::where('id', $orderIssue['id'])->update(['is_new_rejecting' => '有']);
+        } else {
+            OrderIssue::where('rejected_bill_id', $this->id)->update(['is_new_rejecting' => '有']);
         }
     }
 
@@ -151,13 +156,13 @@ class RejectedBill extends Model
         $orderPackageCommoditiesService = new OrderPackageCommoditiesService();
         $rejectedItems = [];
         $orderItems = [];
-        if ($orderIssue->rejected_bill_id) {
-            $rejectedBill = RejectedBill::find($orderIssue->rejected_bill_id)->first();
-            $rejectedBillItems = RejectedBillItem::where('id_rejected_bill', $rejectedBill->id)->get();
+        if ($orderIssue['rejected_bill_id'] ?? false) {
+            $rejectedBill = RejectedBill::find($orderIssue['rejected_bill_id'])->first();
+            $rejectedBillItems = RejectedBillItem::where('id_rejected_bill', $rejectedBill['id'])->get();
             if ($rejectedBillItems) {
                 foreach ($rejectedBillItems as $item) {
-                    if(!isset($rejectedItems[$item->barcode_goods])){
-                        $rejectedItems[$item->barcode_goods]  =0;
+                    if (!isset($rejectedItems[$item->barcode_goods])) {
+                        $rejectedItems[$item->barcode_goods] = 0;
                     }
                     $rejectedItems[$item->barcode_goods] = $item->amount + $rejectedItems[$item->barcode_goods] ?? 0;
                 }
@@ -167,12 +172,12 @@ class RejectedBill extends Model
             $orderIssue->save();
             return;
         }
-        if ($orderIssue->order_id) {
+        if ($orderIssue['order_id'] ?? false) {
             $orderPackageCommodities = $orderPackageCommoditiesService->getOrderPackageCommoditiesByOrderId($orderIssue->order_id);
             if ($orderPackageCommodities) {
                 foreach ($orderPackageCommodities as $key => $item) {
                     if (!isset($orderItems[$item->commodity->sku])) {
-                        Arr::add($orderItems,$item->commodity->sku,0);
+                        Arr::add($orderItems, $item->commodity->sku, 0);
                     }
                     $orderItems[$item->commodity->sku] = $orderItems[$item->commodity->sku] ?? 0 + $item->amount;
                 }

+ 118 - 136
app/Services/OrderIssueService.php

@@ -2,19 +2,13 @@
 
 namespace App\Services;
 
-use App\OracleDOCASNDetail;
-use App\OracleDOCASNHeader;
-use App\OracleDOCOrderDetail;
 use App\OracleDOCOrderHeader;
 use App\OrderIssue;
-use App\OrderIssueOnTop;
 use App\OrderIssueProcessLog;
 use App\OrderPackage;
 use App\Order;
-use App\OrderPackageCommodities;
 use App\RejectedBill;
 use App\RejectedBillItem;
-use App\Sign;
 use Illuminate\Http\Request;
 use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\Auth;
@@ -38,31 +32,26 @@ class OrderIssueService
         $user = Auth::user();
         $owner_ids = $user ? $user->getPermittingOwnerIdsAttribute() : [];
         $order_ids = [];
-        if (isset($condition['owner_id'])) {
+        if ($condition['owner_id'] ?? false) {
             $owner_ids = explode(',', $condition['owner_id']);
         }
-        $orderIssues = OrderIssue::whereHas('order', function ($query) use ($owner_ids) {
-            $query->whereHas('owner', function ($query) use ($owner_ids) {
-                return $query->whereIn('id', $owner_ids);
-            });
-        })->get();
 
         $orders = Order::select('id')->whereIn('owner_id', $owner_ids)->get();
         foreach ($orders as $order) {
             array_push($order_ids, $order['id']);
         }
         $query = OrderIssue::with(['top', 'userWorkGroup', 'issueType', 'logs' => function ($query) {
-            return $query->with(['user'])->orderByDesc('created_at');
-        }, 'order' => function ($query) use ($order_ids) {
-            return $query->whereIn('id', $order_ids)->with(['shop', 'logistic', 'owner', 'packages' => function ($query) {
-                return $query->with(['commodities' => function ($query) {
+            $query->with(['user'])->orderByDesc('created_at');
+        }, 'order' => function ($query) {
+            $query->with(['shop', 'logistic', 'owner', 'packages' => function ($query) {
+                $query->with(['commodities' => function ($query) {
                     return $query->with('commodity');
                 }]);
             }]);
         }, 'rejectedBill' => function ($query) {
-            return $query->with(['items']);
+            $query->with(['items']);
         }, 'secondOrder' => function ($query) {
-            return $query->with(['shop', 'logistic', 'owner', 'packages' => function ($query) {
+            $query->with(['shop', 'logistic', 'owner', 'packages' => function ($query) {
                 return $query->with(['commodities' => function ($query) {
                     return $query->with('commodity');
                 }]);
@@ -72,7 +61,7 @@ class OrderIssueService
                 return $query->whereIn('id', $owner_ids);
             });
         });
-        // ->whereIn('order_id', $order_ids)
+
         $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')
@@ -81,9 +70,54 @@ class OrderIssueService
         return $query;
     }
 
-    public function getConditionQuery(array $arr , array $condition = null)
+    private function getOrderQuery(array $arr, $query)
+    {
+        $query->whereHas('order', function ($query) use ($arr) {
+            if ($arr['client_code'] ?? false) {
+                $query->where('client_code', $arr['client_code']);
+            }
+            if ($arr['consignee_name'] ?? false) {
+                $query->where('consignee_name', 'like', $arr['consignee_name']);
+            }
+            if ($arr['consignee_phone'] ?? false) {
+                $query->where('consignee_phone', 'like', $arr['consignee_phone']);
+            }
+            if ($arr['logistic_number'] ?? false) {
+                $logistic_number = $arr['logistic_number'];
+                $query->whereHas('packages', function ($query) use ($logistic_number) {
+                    $query->where('logistic_number', $logistic_number);
+                });
+            }
+        });
+        return $query;
+    }
+
+    public function getRejectedBillQuery(array $arr, $query)
+    {
+        if (($arr['id_quality_label'] ?? false) || ($arr['good_barcode'] ?? false) || ($arr['good_name'] ?? false)) {
+            $query->whereHas('rejectedBill', function ($query) use ($arr) {
+                $query->whereHas('items', function ($query) use ($arr) {
+                    if ($arr['id_quality_label'] ?? false) {
+                        $query->where('id_quality_label', $arr['id_quality_label']);
+                    }
+                    if ($arr['good_barcode'] ?? false) {
+                        $query->where('barcode_goods', $arr['good_barcode']);
+                    }
+                    if ($arr['good_name'] ?? false) {
+                        $query->where('name_goods', 'like', $arr['good_name']);
+                    }
+                });
+            });
+        }
+        return $query;
+    }
+
+    public function getConditionQuery(array $arr, array $condition = null)
     {
         $query = $this->getQuery($arr, $condition);
+        $query = $this->getOrderQuery($condition ?? $arr, $query);
+        $query = $this->getRejectedBillQuery($condition ?? $arr, $query);
+
         if (!isset($condition)) {
             $condition = $arr;
         }
@@ -96,17 +130,19 @@ class OrderIssueService
         if (isset($condition['final_status'])) {
             $query->where('final_status', $condition['final_status']);
         }
-        if (isset($condition['handle_status'])) {
-            $query->where('handle_status', intval($condition['handle_status']));
+        if (isset($condition['order_issue_type_id'])) {
+            $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['logistic_indemnity_money'])) {
             $query->where('logistic_indemnity_money', $condition['logistic_indemnity_money']);
         }
-        if (isset($condition['baoshi_express_remission'])) {
-            $query->where('baoshi_express_remission', $condition['baoshi_express_remission']);
-        }
-        if (isset($condition['is_new_rejecting'])) {
-            $query->where('is_new_rejecting', $condition['is_new_rejecting']);
+        if (isset($condition['baoshi_indemnity_money'])) {
+            $query->where('baoshi_indemnity_money', $condition['baoshi_indemnity_money']);
         }
         if (isset($condition['order_issue_ids'])) {
             $orderIssuesId = $condition['order_issue_ids'];
@@ -115,13 +151,13 @@ class OrderIssueService
             }
             $query->whereIn('order_issues.id', $orderIssuesId);
         }
-//        dd($query->toSql());
+
         return $query;
     }
 
     public function paginate(array $arr)
     {
-        return $this->getConditionQuery($arr)->paginate(isset($arr['paginate'])??50);
+        return $this->getConditionQuery($arr)->paginate($arr['paginate'] ?? 50);
     }
 
     public function orderIssueTag(array $arr)
@@ -133,24 +169,39 @@ class OrderIssueService
             return $meg;
         }
         foreach ($orderNos as $orderNo) {
-            $orderIssue = $this->createOrFind($orderNo);
+            $orderIssue = $this->createOrFindByOrderNo($orderNo);
             OrderIssueProcessLog::create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '标记创建订单问题件', 'type' => '创建']);
         }
         $meg['success'] = true;
         return $meg;
     }
 
-    public function createOrFind($orderNo)
+    public function createOrFindByOrderNo($orderNo)
+    {
+        $orderService = app('orderService');
+        $rejectedService = app('rejectedService');
+        $orderHeader = OracleDOCOrderHeader::where('orderNo', $orderNo)->first();
+        if (!$orderHeader) {
+            return null;
+        }
+        return $this->createOrFind($orderHeader['soreference1']);
+    }
+
+    public function createOrFind($clientCode)
     {
         $orderService = app('orderService');
         $rejectedService = app('rejectedService');
-        $order = $orderService->createOrderByWMSOrderNo($orderNo);
+        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1', $clientCode)->first();
+        if (!$orderHeader) {
+            return null;
+        }
+        $order = $orderService->findOrCreateByClientCode($clientCode);
         $arr = [
-            'order_id' => $order->id,
+            'order_id' => $order['id'],
         ];
         $orderIssue = OrderIssue::create($arr);
-        if ($order->code) {
-            $rejectedBill = $rejectedService->getRejectedByWMSOrderNo($order->code);
+        if ($order->client_code) {
+            $rejectedBill = $rejectedService->getRejectedByClientNo($clientCode);
             if ($rejectedBill) {
                 $orderIssue->rejected_bill_id = $rejectedBill['id'];
                 $orderIssue->save();
@@ -161,22 +212,12 @@ class OrderIssueService
         return $orderIssue;
     }
 
-    /*    public function createOrderIssue(Request $request)
-        {
-            $orderService = app('orderService');
-            $this->validatorCreate($request)->validate();
-            $oracleOrderNo = $request->input('order_id');
-            $logistic_number = $request->input('logistic_number');
-            $order = $orderService->creted($oracleOrderNo);
-            $this->create($request);
-        }*/
-
     public function validatorCreate(Request $request)
     {
         return Validator::make($request->input(), [
             'rejected_bill_id' => ['nullable'],
             'order_id' => ['nullable'],
-            'owner_id'=>['required'],
+            'owner_id' => ['required'],
             'second_order_id' => ['nullable'],
             'logistic_id' => ['nullable'],
             'order_issue_type_id' => ['required'],
@@ -189,7 +230,7 @@ class OrderIssueService
             'unique' => ':attribute 已存在',
             'numeric' => ':attribute 为数组',
         ], [
-            'owner_id'=>'货主',
+            'owner_id' => '货主',
             'rejected_bill_id' => '退回单号',
             'order_id' => '订单ID',
             'second_order_id' => '退回订单id',
@@ -314,7 +355,7 @@ class OrderIssueService
         return $orderIssue;
     }
 
-    public function verifyOrderIssue( array $arr)
+    public function verifyOrderIssue(array $arr)
     {
         $orderIds = $arr['orderNos'];
         $orders = Order::whereIn('code', $orderIds)->get();
@@ -329,110 +370,51 @@ class OrderIssueService
         return $count != 0;
     }
 
-    /*    public function verifyOracleOrderNo(Request $request)
-        {
-            $meg = ['success' => false];
-            $oracleOrderNo = $request->input('oracleOrderNo');
-            $type = $request->input('type');
-            $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($oracleOrderNo, "'"))->first();
-            if ($orderHeader == null) {
-                $meg['fail_info'] = '没有编号对应的订单信息';
-            } else {
-                if ($type == 'backExpressNumber') {
-
-                    $orderASNHeader = OracleDOCASNHeader::where('ASNReference2', $orderHeader->soreference1)->first();
-
-                    if ($orderASNHeader == null) {
-                        $meg['fail_info'] = '没有对应的退件信息';
-                    } else {
-                        $express_number = $orderASNHeader->asnreference3; // 快递单号
-                        $express_number == null ? $meg['fail_info'] = '没有对应的快递单号' : ($meg['success'] = true && $meg['expressNumber'] = $express_number);
-                    }
-                } else if ($type == 'verify') {
-                    if (!$orderHeader) {
-                        $mes['fail_info'] = '编号对应的订单信息不存在';
-                    } else {
-                        $mes['success'] = true;
-                    }
-                }
-            }
-            return $meg;
-        }*/
-
-    /*    public function verifyLogisticNumber(Request $request)
-        {
-            $logisticNumber = $request->input('logisticNumber');
-            $ASNHeader = OracleDOCASNHeader::where('ASNReference2', $logisticNumber)->first();
-            $orderHeader = OracleDOCOrderHeader::where('soreference1', $ASNHeader->asnreference3)->first();
-            $meg = ['success' => false];
-            if (!$orderHeader) {
-                $meg['fail_info'] = '快递单号没有对应的订单';
-            }
-            return $meg['success'] = true;
-        }*/
-
-//    public function getOrderHead(Request $request)
-//    {
-//        $data = ['orderHeader' => null, 'orderDetails' => null, 'rejectedBill' => null];
-//        $logisticNumberReturn = $request->input('logisticNumberReturn');
-//        $ASNOrderHeaders = OracleDOCASNHeader::where('ASNReference3', $logisticNumberReturn)->get();
-//        if (count($ASNOrderHeaders) == 0) {
-//            return $data;
-//        }
-//        $orderHeader = OracleDOCOrderHeader::where('SOReference1', $ASNOrderHeaders->asnreference3)->get();
-//        $data['orderHeader'] = $orderHeader;
-//        $orderDetails = OracleDOCASNDetail::with(['sku'])->where('OrderNo', $orderHeader)->get();
-//        $data['orderDetails'] = $orderDetails;
-//
-//        return $data;
-//    }
-
-    public function getReturnLogisticInfo(Request $request)
-    {
-        $logisticNumberReturn = $request->input('logisticNumberReturn');
-        $ASNOrderHeaders = OracleDOCASNHeader::where('ASNReference3', $logisticNumberReturn)->get();
-        $ASNNo = [];
-        foreach ($ASNOrderHeaders as $ASNOrderHeader) {
-            $ASNNo[] = $ASNOrderHeader->asnno;
-        }
-        return OracleDOCASNDetail::whereIn('asnno', $ASNNo)->get();
-    }
-
-    public function getOrderHeadByOrderNo(Request $request)
-    {
-        $orderNo = $request->input('orderNo');
-        $orderHeader = OracleDOCOrderHeader::where('orderNo', $orderNo)->get();
-        $orderDetails = OracleDOCOrderDetail::with(['sku'])->where('orderNo', $orderNo)->get();
-        return ['orderHeader' => $orderHeader, 'orderDetails' => $orderDetails];
-    }
-
     public function exportExcel(Request $request)
     {
         $result = null;
         if ($request->getMethod() == 'GET') {
-// 所有页
             if ($request->has('checkAllSign')) {
-                $result = $this->getConditionQuery($request, null)->get();
+                $result = $this->getConditionQuery($request->all(), null)->get();
             }
         } else if ($request->getMethod() == 'POST') {
-// 选中
             $orderIssueIds = $request->input('data');
             $ids = explode(',', $orderIssueIds);
-            $result = $this->getConditionQuery($request, ['order_issue_ids' => $ids])->get();
+            $request['order_issue_ids'] = $ids;
+
+            $result = $this->getConditionQuery($request->all(), null)->get();
         }
         return $result;
     }
 
-    public function paddingData(array $row, array $rowData)
+    public function updateOrderIssue(OrderIssue $orderIssue, array $arr)
     {
-        foreach ($rowData as $key => $value) {
-            foreach ($row as $rowKey) {
-                if (!isset($value[$rowKey])) {
-                    $value[$rowKey] = '';
-                }
+        if ($arr['rejectedBill'] ?? false) {
+            if ($arr['rejectedBill']['id'] ?? false) {
+                $rejectedBill = RejectedBill::where('id', $arr['rejectedBill']['id'])->first();
+                $rejectedBill->fill($arr['rejectedBill']);
+                $rejectedBill->update();
+                $rejectedBill->syncOrderIssue();
+                $request['orderIssues']['rejected_bill_id'] = $rejectedBill['id'];
+            } else if ($arr['rejectedBill']['id_logistic_return'] ?? false && $arr['rejectedBill']['logistic_number_return'] ?? false) {
+                $rejectedBill = RejectedBill::firstOrCreate([
+                        'id_logistic_return' => $arr['rejectedBill']['id_logistic_return'],
+                        'id_owner' => $arr['rejectedBill']['id_owner'],
+                        'logistic_number_return' => $arr['rejectedBill']['logistic_number_return'],]
+                );
+                $rejectedBill->save();
+                $rejectedBill->syncOrderIssue();
+                $request['orderIssues']['rejected_bill_id'] = $rejectedBill['id'];
+
             }
         }
-        return $rowData;
+        if ($arr['order'] ?? false) {
+            $order = Order::where('id', $arr['order']['id'])->first();
+            $order->fill($arr['order']);
+            $order->update();
+        }
+        $orderIssue->fill($arr['orderIssues']);
+        $orderIssue->update();
     }
 
 }

+ 50 - 17
app/Services/OrderPackageCommoditiesService.php

@@ -10,39 +10,72 @@ use App\Order;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
 use App\Owner;
+use Illuminate\Support\Arr;
 
 class OrderPackageCommoditiesService
 {
-    public function createdOrderPackage(OrderPackage $orderPackage)
+    public function basedOnOracleDetailsStore($orderNo, $orderPackage)
+    {
+        $details = OracleDOCOrderDetail::where('orderNo', $orderNo)->get();
+        foreach ($details as $key => $detail) {
+            $this->createByOrderDetail($detail, $orderPackage);
+        }
+    }
+
+    public function basedOnActAllocationDetailsStoreByOrderNo($orderNo,$orderPackage){
+        $details = OracleActAllocationDetails::where('orderno', $orderNo)->get();
+        foreach ($details as $key => $detail) {
+            $this->createByActAllocationDetails($detail, $orderPackage);
+        }
+    }
+
+    public function basedOnActAllocationDetailsStore($orderPackage)
+    {
+        $details = OracleActAllocationDetails::where('picktotraceid', $orderPackage->logistic_number)->get();
+        foreach ($details as $key => $detail) {
+            $this->createByActAllocationDetails($detail, $orderPackage);
+        }
+    }
+
+    private function createByActAllocationDetails($detail, OrderPackage $orderPackage)
     {
-        $detail = OracleActAllocationDetails::where('picktotraceid',$orderPackage->logistic_number)->first();
         $owner = Owner::where(['code' => $detail->customerid])->first();      // 货主
         $sku = $detail->sku;
-        $owner_id = $owner->id;
+        $owner_id = $owner['id'];
         $commodity = Commodity::where(['sku' => $sku, 'owner_id' => $owner_id])->first();
         if ($commodity == null) {
             $basSku = OracleBasSKU::where(['sku' => $sku, 'customerid' => $detail->customerid])->first();
             $commodity = Commodity::create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
         }
-        $arr = [
-            'order_package_id' => $orderPackage->id,      // 包裹id
-            'commodity_id' => $commodity->id,             // 商品id
-            'amount' => $detail->qty,                     // 商品数量
-        ];
-        $OrderPackageCommodities = OrderPackageCommodities::create($arr);
-        $OrderPackageCommodities->commodity = $commodity;
-        return $OrderPackageCommodities;
+        return OrderPackageCommodities::create(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qty']]);
     }
 
-    public function getOrderPackageCommoditiesByOrderId($orderId){
-        $order =  Order::where('id',$orderId)->first();
-        if(!$order){
+
+
+    public function getOrderPackageCommoditiesByOrderId($orderId)
+    {
+        $order = Order::where('id', $orderId)->first();
+        if (!$order) {
             return null;
         }
-        $orderPackageIds = OrderPackage::select('id')->where('order_id',$order['id'])->get();
-        if(!$orderPackageIds){
+        $orderPackageIds = OrderPackage::select('id')->where('order_id', $order['id'])->get();
+        if (!$orderPackageIds) {
             return null;
         }
-        return  OrderPackageCommodities::with('commodity')->whereIn('order_package_id',$orderPackageIds)->get();
+        return OrderPackageCommodities::with('commodity')->whereIn('order_package_id', $orderPackageIds)->get();
+    }
+
+    public function createByOrderDetail(OracleDOCOrderDetail $detail, OrderPackage $orderPackage)
+    {
+        $owner = Owner::where(['code' => $detail['customerid']])->first();      // 货主
+        $sku = $detail->sku;    // sku
+        $owner_id = $owner->id; // 货主id
+        $commodity = Commodity::where(['sku' => $sku, 'owner_id' => $owner_id])->first(); // 商品
+        if ($commodity == null) {
+            $basSku = OracleBasSKU::where(['sku' => $sku, 'customerid' => $detail->customerid])->first();   // 没有找到对应的商品信息
+            $commodity = Commodity::create(['sku' => $sku, 'owner_id' => $owner_id, 'name' => $basSku->descr_c]);
+        }
+       return  OrderPackageCommodities::create(['order_package_id' => $orderPackage['id'], 'commodity_id' => $commodity['id'], 'amount' => $detail['qtyordered']]);
     }
+
 }

+ 37 - 18
app/Services/OrderPackageService.php

@@ -16,30 +16,49 @@ class OrderPackageService
         app()->bind('orderPackageCommoditiesService', OrderPackageCommoditiesService::class);
     }
 
-    public function createdByOrder(Order $order, OracleDOCOrderHeader $orderHeader = null)
+    public function createdByOrder(Order $order)
     {
         $orderPackageCommoditiesService = app('orderPackageCommoditiesService');
-        if (!$orderHeader) {
-            $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($order->code, "'"))->first();
-        }
-// 获取orderNo 对应的打包详情
-        $orderActAllocationDetails = OracleActAllocationDetails::where(['OrderNo' => $order->code])->get();
-        if (!$orderActAllocationDetails) {
-            return [];
-        }
-        $orderPackages = [];
-        foreach ($orderActAllocationDetails as $detail){
-            $logistic_number = $detail->picktotraceid;
-            $orderPackage = OrderPackage::where(['logistic_number'=>$logistic_number])->first();
-            if(!$orderPackage){
-                $orderPackage = OrderPackage::firstOrCreate(['order_id'=>$order['id'],'logistic_number'=>$logistic_number]);
+        $actAllocationCount = OracleActAllocationDetails::where('OrderNo', $order['code'])->count();
+        $orderHeader = OracleDOCOrderHeader::where('OrderNo', $order['code'])->first();
+        $orderDetailCount = OracleDOCOrderDetail::where('OrderNo', $order['code'])->count();
+        $logistic_number = null;
+        if ($actAllocationCount == 0) {  // 通过oracle Order Detail
+            $logistic_number = $orderHeader['soreference5'];
+            if ($orderDetailCount == 0) {return null;}
+            if ($logistic_number == null || $logistic_number == '*') { return null; }
+            $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
+            $orderPackageCommoditiesService->basedOnOracleDetailsStore($orderHeader['orderno'], $orderPackage);
+        } else if ($actAllocationCount > 0) {
+            $count = OracleActAllocationDetails::where('OrderNo', $order['code'])->whereNull('picktotraceid')->count();
+            if ($count > 0) {   // 快递单号为空
+                if (($orderHeader['soreference5'] ?? false) && $orderHeader['soreference5'] == '*') { return null; }
+                $logistic_number = $orderHeader['soreference5'];
+                $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
+                $orderPackageCommoditiesService->basedOnOracleDetailsStore($order, $orderPackage);
+            } else {
+                $ActAllocationDetails = OracleActAllocationDetails::where('orderno', $order['code'])->get();
+                foreach ($ActAllocationDetails as $detail) {
+                    $logistic_number = $detail['picktotraceid'];
+                    if ($logistic_number == null || $logistic_number == '*') {
+                        $logistic_number = $orderHeader['soreference5'];
+                        if ($logistic_number == null || $logistic_number == '*')  return null;
+                        $orderPackage = OrderPackage::where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
+                        if($orderPackage)continue;
+                        $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
+                        $orderPackageCommoditiesService->basedOnActAllocationDetailsStoreByOrderNo($order['code'], $orderPackage);
+                        continue;
+                    }
+                    $orderPackage = OrderPackage::where(['order_id' => $order['id'], 'logistic_number' => $logistic_number])->first();
+                    if ($orderPackage) continue;
+                    $orderPackage = OrderPackage::create(['order_id' => $order['id'], 'logistic_number' => $logistic_number]);
+                    $orderPackageCommoditiesService->basedOnActAllocationDetailsStore($orderPackage);
+                }
             }
-            $orderPackageCommoditiesService->createdOrderPackage($orderPackage,$detail);
         }
-       $orderPackages =  OrderPackage::with(['commodities' => function($query){
+        return OrderPackage::with(['commodities' => function ($query) {
             return $query->with(['commodity']);
         }])->get();
-        return  $orderPackages;
     }
 
 }

+ 26 - 57
app/Services/OrderService.php

@@ -13,6 +13,7 @@ use App\OrderItems;
 use App\OrderPackage;
 use App\OrderPackageCommodities;
 use App\Owner;
+use App\RejectedBill;
 use App\Shop;
 
 class OrderService
@@ -22,11 +23,10 @@ class OrderService
         app()->bind("orderPackageService", OrderPackageService::class);
     }
 
-//createOrFindBy
-    public function createOrderByWMSOrderNo($oracleOrderNo)
+    public function findOrCreateByClientCode($clientCode)
     {
-        $order = Order::where('code', $oracleOrderNo)->first();
-        $orderHeader = OracleDOCOrderHeader::where('OrderNo', trim($oracleOrderNo, "'"))->first();
+        $order = Order::where('client_code', $clientCode)->first();
+        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1',$clientCode )->first();
         if ($orderHeader == null) {
             return null;
         }
@@ -41,14 +41,7 @@ class OrderService
                 $shop = Shop::firstOrCreate(['name' => $shop_name, 'owner_id' => $owner_id]);
                 $shop_Id = $shop->id;
             }
-
             $logistics = Logistic::where(['name' => $orderHeadAttr['carriername']])->first();
-/*            if ($logistics == null) {
-                $oracleBasCustomer = OracleBasCustomer::where(['descr_c' => $orderHeadAttr['carriername'], 'Customer_Type' => 'CA'])->first();
-                if ($oracleBasCustomer) {
-                    $logistics = Logistic::firstOrCreate(['code' => $oracleBasCustomer->customerid, 'name' => $oracleBasCustomer->descr_c]);
-                }
-            }*/
             $logistics_id = null;
             if ($logistics) {
                 $logistics_id = $logistics->id;
@@ -66,28 +59,13 @@ class OrderService
                 'city' => $orderHeadAttr['c_city'],
                 'district' => $orderHeadAttr['c_district'],
                 'address' => $orderHeadAttr['c_address1'],
+                'client_code'=> $orderHeadAttr['soreference1'],
             ];
-
             $order = Order::create($arr);
-            // $order = Order::create([]);
             $orderPackageService = app('orderPackageService');
-            $order->packages = $orderPackageService->createdByOrder($order, $orderHeader);
-        } else {
-            return $this->getOrderInfo($order['id']);
-        }
-        return $order;
-    }
-
-    public function getOrderInfoByLogisticNumberReturn($logisticNumberReturn){
-        $ASNHeader =  OracleDOCASNHeader::where('ASNReference3',$logisticNumberReturn)->first();
-        if(!$ASNHeader){
-            return null;
-        }
-        $OrderHeader = OracleDOCOrderHeader::where('SOReference1',$ASNHeader->asnreference2)->first();
-        if(!$OrderHeader){
-            return null;
+            $orderPackageService->createdByOrder($order);
         }
-        return $this->createOrderByWMSOrderNo($OrderHeader->orderno);
+        return $this->getOrderInfo($order['id']);
     }
 
     public function getOrderInfo($orderId)
@@ -99,36 +77,27 @@ class OrderService
         }])->where('id', $orderId)->first();
     }
 
-    public function getOrderInfoByWMSNo($code)
-    {
-        return Order::with(['packages' => function ($query) {
-            return $query->with(['commodities' => function ($query) {
-                return $query->with(['commodity']);
-            }]);
-        }])->where('code', $code)->first();
-    }
-
-    public function getWMSOrderInfoByWMSOrderNo($WMSOrderNo)
-    {
-        if(!OracleDOCOrderHeader::where('orderNo',$WMSOrderNo)->count()){
-            return [];
+    public function getRejectedBillOfClientCode($clientCode){
+        $orderHeader = OracleDOCOrderHeader::where('SOReference1',$clientCode)->first();
+        if(!$orderHeader){
+            return null;
         }
-        $orderHeader = $this->getWMSOrderHeaderByWMSOrderNo($WMSOrderNo);
-        $orderDetails = $this->getWMSOrderDetailsByWMSOrderNo($WMSOrderNo);
-        $allocationDetails = $this->getWMSOrderAllDetailsByWMSOrderNo($WMSOrderNo);
-        return compact('orderHeader','orderDetails','allocationDetails');
-    }
-
-    public function getWMSOrderHeaderByWMSOrderNo($WMSOrderNo){
-        return OracleDOCOrderHeader::where('orderNo',$WMSOrderNo)->first();
-    }
-
-    public function getWMSOrderDetailsByWMSOrderNo($WMSOrderNo){
-        return OracleDOCOrderDetail::where('orderNo',$WMSOrderNo)->get();
+        $ASNHeader =  OracleDOCASNHeader::where('ASNReference2',$orderHeader->soreference2)->first();
+        if(!$ASNHeader){
+            return null;
+        }
+        return  RejectedBill::with(['owner','logistic','items'])->where('logistic_number_return',$ASNHeader->asnreference2)->first();
     }
 
-    public function getWMSOrderAllDetailsByWMSOrderNo($WMSOrderNo){
-        return OracleActAllocationDetails::where('orderNo',$WMSOrderNo)->get();
+    public function findOrCreteByLogisticNumberReturn($logisticNumberReturn){
+        $ASNHeader = OracleDOCASNHeader::where('ASNReference3',$logisticNumberReturn)->first();
+        if(!$ASNHeader){
+            return null;
+        }
+        $orderHeader = OracleDOCOrderHeader::where('SOReference1',$ASNHeader->ASNReference2);
+        if(!$orderHeader){
+            return null;
+        }
+        return $this->findOrCreateByClientCode($orderHeader[soreference1]);
     }
-
 }

+ 7 - 3
app/Services/RejectedService.php

@@ -118,12 +118,16 @@ class RejectedService
         OrderIssue::where('order_id', $order->id)->where('is_new_rejecting', '<>', 2)->update('is_new_rejecting', 2);
     }
 
-    public function getRejectedByWMSOrderNo($WMSOrderNo){
-        $orderHeader = OracleDOCOrderHeader::where('orderNo',$WMSOrderNo)->first();
+    public function getRejectedByClientNo($clientNo){
+        $orderHeader = OracleDOCOrderHeader::where('SOREFERENCE1',$clientNo)->first();
         if(!$orderHeader){
             return null;
         }
-        $ASNHeader =  OracleDOCASNHeader::where('ASNReference3',$orderHeader->sorefernce1)->first();
+        $rejectedBill = RejectedBill::with('items')->where('order_number',$orderHeader->orderno)->first();
+        if($rejectedBill){
+            return $rejectedBill;
+        }
+        $ASNHeader =  OracleDOCASNHeader::where('ASNREFERENCE2',$clientNo)->first();
         if(!$ASNHeader){
             return null;
         }

+ 9 - 29
app/Services/WaveService.php

@@ -51,7 +51,6 @@ class WaveService
     }
     public function cancelPrint($ids)
     {
-        DB::enableQueryLog();
         $meg = ['success' => false, 'fail_info' => null];
         if (!$ids) {
             $meg['fail_info'] = '没有选中需要重置打印标记的波次!';
@@ -60,6 +59,11 @@ class WaveService
         if (is_string($ids)) {
             $ids = [$ids];
         }
+        $count = $this->verfifyIds($ids);
+        if (!$count) {
+            $meg['fail_info'] = "取消打印的波次中有不符合条件的波次";
+            return $meg;
+        }
         $cancelPrint = OracleDOCWaveHeader::whereIn("WAVENO", $ids)->update(['udfprintflag2' => 'N', 'UserDefine2' => '']);
         if (!$cancelPrint) {
             $meg['fail_info'] = '没有选中需要重置打印标记的波次!';
@@ -68,30 +72,6 @@ class WaveService
         $meg['success'] = true;
         return $meg;
     }
-//    // cancel Print
-//    public function cancelPrint($ids)
-//    {
-//        $meg = ['success' => false, 'fail_info' => null];
-//        if (!$ids) {
-//            $meg['fail_info'] = '没有选中需要重置打印标记的波次!';
-//            return $meg;
-//        }
-//        if (is_string($ids)) {
-//            $ids = [$ids];
-//        }
-//        $count = $this->verfifyIds($ids);
-//        if(!$count) {
-//            $meg['fail_info'] = "取消打印的波次中有不符合条件的波次";
-//            return $meg;
-//        }
-//        $cancelPrint = OracleDOCWaveHeader::whereIn("WAVENO", $ids)->update(['udfprintflag2' => 'N','UserDefine2'=>'']);
-//        if (!$cancelPrint) {
-//            $meg['fail_info'] = '没有选中需要重置打印标记的波次!';
-//            return $meg;
-//        }
-//        $meg['success'] = true;
-//        return $meg;
-//    }
 
     public function getWaveStatus()
     {
@@ -224,9 +204,9 @@ class WaveService
         return $sqlString;
     }
 
-    public function verfifyIds($ids){
-        $sql =  "select count(1) count from DOC_WAVE_HEADER where  WaveNo in (".$this->getWaveNoString(implode(',',$ids)).") and WAVESTATUS ='99' and UdfPrintFlag2 ='Y'";
-        $count=  DB::connection('oracle')->select(DB::raw($sql))[0]->count;
-        return $count = 0;
+    public function verfifyIds($ids)
+    {
+        $count = OracleDOCWaveHeader::whereIn('WaveNo', $ids)->where('WAVESTATUS', '99')->where('UdfPrintFlag2', 'Y')->count();
+        return $count == 0;
     }
 }

+ 39 - 0
database/migrations/2020_08_20_172156_add_order_client_no.php

@@ -0,0 +1,39 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddOrderClientNo extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('orders', function (Blueprint $table) {
+            $table->string('client_code')->index()->nullable()->comment('客户订单编号');
+        });
+        Schema::table('order_issues', function (Blueprint $table) {
+            $table->dropColumn('handle_status');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('orders', function (Blueprint $table) {
+            $table->dropColumn('client_code');
+        });
+        Schema::table('order_issues', function (Blueprint $table) {
+            $table->enum('handle_status', ['处理中', '已完结'])->default('处理中')->comment('处理状态');
+            $table->enum("status",['处理中','未处理','已处理','取消','异常'])->default('未处理');
+        });
+    }
+}

+ 11 - 1
resources/views/maintenance/role/index.blade.php

@@ -8,6 +8,7 @@
     </span>
     <div class="container-fluid">
         <div class="card">
+            <div id="form_div"></div>
             <div class="card-body" id="list">
                 @if(Session::has('successTip'))
                     <div class="alert alert-success h1">{{Session::get('successTip')}}</div>
@@ -49,6 +50,7 @@
 @endsection
 
 @section('lastScript')
+    <script type="text/javascript" src="{{asset('js/queryForm/queryForm200825.js')}}"></script>
     <script type="text/javascript" src="{{asset('js/queryForm/header200826b.js')}}"></script>
     <script>
         new Vue({
@@ -61,11 +63,19 @@
                     },
                     @endforeach
                 ],
+                form:'',
             },
             mounted:function(){
+                let data = [[
+                    {name:'role',type:'input',tip:'角色名:可在两侧添加百分号(%)进行模糊搜索',placeholder:'角色名'}]];
+                this.form = new query({
+                    el: '#form_div',
+                    condition: data,
+                })
+                this.form.init();
                 let column = [
                     {name:'id',value: 'ID'},
-                    {name:'name',value: '用户名'},
+                    {name:'name',value: '角色'},
                     {name:'alias_name',value: '允许权限', neglect: true},
                     {name:'alias_name_false',value: '禁止权限', neglect: true},
                     {name:'created_at',value: '创建时间'},

+ 1 - 1
resources/views/maintenance/user/index.blade.php

@@ -75,7 +75,7 @@
                 form:'',
             },
             mounted:function(){
-                let data = [[{name:'name',type:'input',tip:'用户名:可在两侧添加百分号(%)进行模糊搜索',placeholder:'用户名'},
+                let data = [[{name:'user',type:'input',tip:'用户名:可在两侧添加百分号(%)进行模糊搜索',placeholder:'用户名'},
                     {name:'role',type:'input',tip:'角色名:可在两侧添加百分号(%)进行模糊搜索',placeholder:'角色名'}]];
                 this.form = new query({
                     el: '#form_div',

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

@@ -507,7 +507,7 @@
                         tempTip.cancelWaitingTip();
                         if(res.data.success){
                             tempTip.setDuration(3000);
-                            tempTip.showSuccess('已标记为问题件');
+                            tempTip.showSuccess('已标记为问题件,稍后前往订单问题件查询页面');
                             setTimeout(function(){
                                 window.location.href = "{{url('order/issue/index')}}";
                             },1000);

+ 99 - 162
resources/views/order/issue/create.blade.php

@@ -17,25 +17,24 @@
                         <div class="form-group row">
                             <label for="logistic_number_return" class="col-2 col-form-label text-right ">退回单号</label>
                             <div class="col-8 ">
-                                <input type="text" name="logistic_number_return" id="logistic_number_return"
-                                       class="form-control col-lg-5 @error('logistic_number_return') is-invalid @enderror"
+                                <input type="text" name="logistic_number_return" id="logistic_number_return" class="form-control col-lg-5 @error('logistic_number_return') is-invalid @enderror"
                                        v-model="logistic_number_return"
-                                       @blur="checkLogisticNumberReturn()"
-                                       value="@if(old('logistic_number_return')){{old('logistic_number_return')}}@endif">
+                                       value="@if(old('logistic_number_return')){{old('logistic_number_return')}}@endif"
+                                       @blur="checkLogisticNumberReturn">
                                 @error('logistic_number_return')
                                 <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
                                 @enderror
                             </div>
                         </div>
                         <div class="form-group row">
-                            <label for="wms_order_no" class="col-2 col-form-label text-right ">原始WMS订单号</label>
+                            <label for="wms_order_no" class="col-2 col-form-label text-right ">原始客户订单号</label>
                             <div class="col-8">
-                                <input type="text" name="wms_order_no" id="wms_order_no"
-                                       class="form-control col-lg-5 @error('wms_order_no') is-invalid @enderror"
-                                       @blur="checkWMSOrderNo($event)"
-                                       v-model="wms_order_no"
-                                       value="@if(old('wms_order_no')){{old('wms_order_no')}}@endif">
-                                @error('wms_order_no')
+                                <input type="text" name="client_code" id="client_code"
+                                       class="form-control col-lg-5 @error('client_code') is-invalid @enderror"
+                                       value="@if(old('client_code')){{old('client_code')}}@endif"
+                                       @blur="checkClientCode($event)"
+                                       v-model="client_code">
+                                @error('client_code')
                                 <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
                                 @enderror
                             </div>
@@ -43,10 +42,10 @@
                         <div class="form-group row">
                             <label for="order_issue_type_id" class="col-2 col-form-label text-right text-primary"><span class="text-danger">*</span>问题类别</label>
                             <div class="col-8">
-                                <select name="order_issue_type_id" id="order_issue_type_id"
-                                        class="form-control @error('order_issue_type_id') is-invalid @enderror" v-model="order_issue_type_id">
+                                <select name="order_issue_type_id" id="order_issue_type_id" v-model="order_issue_type_id"
+                                        class="form-control @error('order_issue_type_id') is-invalid @enderror">
                                     <option value></option>
-                                    <option v-for="type in types " :value="type.id">@{{ type.name }}</option>
+                                    <option v-for="type in types" :value="type.id">@{{ type.name }}</option>
                                 </select>
                                 @error('order_issue_type_id')
                                 <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
@@ -64,23 +63,21 @@
                                 </div>
                                 <table class="table table-responsive-sm" v-if="order.packages">
                                     <tr>
-                                        <th>条码</th>
-                                        <th>商品名</th>
-                                        <th>数量</th>
+                                        <th>条码</th><th>商品名</th><th>数量</th>
                                     </tr>
-                                    <tr v-for="packages in order.packages">
-                                        <template v-for="items in packages.commodities">
+                                    <template v-for="packages in order.packages">
+                                        <tr v-for="items in packages.commodities">
                                             <td>@{{ items.commodity.sku }}</td>
                                             <td>@{{ items.commodity.name }}</td>
                                             <td>@{{ items.amount }}</td>
-                                        </template>
-                                    </tr>
+                                        </tr>
+                                    </template>
                                 </table>
                             </div>
                         </div>
                         <div class="form-group row">
                             <label for="" class="col-2 col-form-label text-right ">退回单商品详情</label>
-                            <div class="col-8" id="">
+                            <div class="col-8">
                                 <div class="alert alert-success" role="alert" v-if="rejectedBill.items">
                                     商品详情已填充
                                 </div>
@@ -89,11 +86,7 @@
                                 </div>
                                 <table class="table table-responsive-sm" v-if="rejectedBill.items">
                                     <tr>
-                                        <th>条码</th>
-                                        <th>商品名</th>
-                                        <th>数量</th>
-                                        <th>是否正品</th>
-                                        <th>备注</th>
+                                        <th>条码</th><th>商品名</th><th>数量</th><th>是否正品</th><th>备注</th>
                                     </tr>
                                     <tr v-for="item in rejectedBill.items">
                                         <td>@{{ item.barcode_goods }}</td>
@@ -106,10 +99,11 @@
                             </div>
                         </div>
                         <div class="form-group row">
-                            <label for="wms_order_no" class="col-2 col-form-label text-right text-primary"><span class="text-danger">*</span>货主</label>
+                            <label for="wms_order_no" class="col-2 col-form-label text-right text-primary"><span
+                                    class="text-danger">*</span>货主</label>
                             <div class="col-8 row">
                                 <div class="form-group col-lg-5">
-                                    <select class="form-control @error('owner_id') is-invalid @enderror" name="owner_id" v-model="order.owner_id" >
+                                    <select class="form-control @error('owner_id') is-invalid @enderror" name="owner_id" v-model="order.owner_id">
                                         <option value></option>
                                         <option v-for="owner in owners" :value="owner.id">@{{ owner.name }}</option>
                                     </select>
@@ -125,9 +119,7 @@
                                 <div class="form-group col-lg-5">
                                     <select class="form-control " name="logistic_id" v-model="order.logistic_id">
                                         <option value></option>
-                                        <option v-for="logistic in logistics" :value="logistic.id">@{{ logistic.name
-                                            }}
-                                        </option>
+                                        <option v-for="logistic in logistics" :value="logistic.id">@{{ logistic.name }}</option>
                                     </select>
                                 </div>
                             </div>
@@ -135,29 +127,27 @@
                         <div class="form-group row">
                             <label for="wms_order_no" class="col-2 col-form-label text-right ">收货人名称</label>
                             <div class="col-8">
-                                <input type="text" name="consignee_name " class="form-control"
-                                       v-model="order.consignee_name">
+                                <input type="text" name="consignee_name " class="form-control" v-model="order.consignee_name">
                             </div>
                         </div>
                         <div class="form-group row">
                             <label for="wms_order_no" class="col-2 col-form-label text-right ">收货人号码</label>
                             <div class="col-8">
-                                <input type="text" name="consignee_phone" class="form-control"
-                                       v-model="order.consignee_phone">
+                                <input type="text" name="consignee_phone" class="form-control" v-model="order.consignee_phone">
                             </div>
                         </div>
                         <div class="form-group row">
                             <label class="col-2 col-form-label text-right ">收货人地址</label>
                             <div class="col-8 row">
                                 <div class="form-group col-lg-4">
-                                    <input type="text" name="province" class="form-control" placeholder="省"
-                                           v-model="order.province"></div>
+                                    <input type="text" name="province" class="form-control" placeholder="省" v-model="order.province">
+                                </div>
                                 <div class="form-group col-lg-4">
-                                    <input type="text" name="city" class="form-control" placeholder="市"
-                                           v-model="order.city"></div>
+                                    <input type="text" name="city" class="form-control" placeholder="市" v-model="order.city"
+                                    ></div>
                                 <div class="form-group col-lg-4">
-                                    <input type="text" name="district" class="form-control" placeholder="区"
-                                           v-model="order.district"></div>
+                                    <input type="text" name="district" class="form-control" placeholder="区" v-model="order.district">
+                                </div>
                             </div>
                         </div>
                         <div class="form-group row">
@@ -166,14 +156,12 @@
                                 <input type="text" name="address" class="form-control " v-model="order.address">
                             </div>
                         </div>
-
                         <div class="form-group row">
-                            <label for="second_order_no" class="col-2 col-form-label text-right">二次订单号</label>
+                            <label for="second_order_no" class="col-2 col-form-label text-right">二次客户订单号</label>
                             <div class="col-8">
                                 <input type="text" name="second_order_no" id="second_order_no" class="form-control"
-                                       value="@if(old('second_order_no')){{old('second_order_no')}}@endif"
-                                       @blur="verifySecondOrder($event)"
-                                       v-model="secondOrderNo">
+                                       value="@if(old('secondClientNO')){{old('secondClientNO')}}@endif"
+                                       v-model="secondClientNO" @blur="verifySecondOrder($event)">
                                 <div class="valid-feedback" style="display: none" id="secondOrderNo_feedback"></div>
                             </div>
                         </div>
@@ -188,19 +176,17 @@
                             </div>
                         </div>
                         <div class="form-group row">
-                            <label for="" class="col-2 col-form-label text-right">二次订单商品明细</label>
+                            <label for="" class="col-2 col-form-label text-right">二次客户订单商品详情</label>
                             <div class="col-8" id="">
                                 <div class="alert alert-success" role="alert" v-if="secondOrder.packages">
-                                    商品详情已填充
+                                    二次客户订单商品详情已填充
                                 </div>
                                 <div class="alert alert-secondary" role="alert" v-else>
-                                    商品明细通过二次订单编号进行自动填充
+                                    二次客户订单商品详情通过二次订单编号进行自动填充
                                 </div>
                                 <table class="table table-responsive-sm" v-if="secondOrder.packages">
                                     <tr>
-                                        <th>条码</th>
-                                        <th>商品名</th>
-                                        <th>数量</th>
+                                        <th>条码</th><th>商品名</th><th>数量</th>
                                     </tr>
                                     <tr v-for="packages in secondOrder.packages">
                                         <template v-for="items in packages.commodities">
@@ -215,15 +201,14 @@
                         <div class="form-group row">
                             <label for="order_issue_type_id" class="col-2 col-form-label text-right ">最终状态</label>
                             <div class="col-8">
-                                <select name="final_status" id="final_status" class="form-control"
-                                        v-model="finalStatus">
+                                <select name="final_status" id="final_status" class="form-control" v-model="finalStatus">
                                     <option value></option>
                                     <option v-for="type in final_status " :value="type">@{{ type }}</option>
                                 </select>
                             </div>
                         </div>
                         <div class="form-group row">
-                            <label for="" class="col-2 col-form-label text-right ">处理结果说明</label>
+                            <label for="" class="col-2 col-form-label text-right ">处理结果</label>
                             <div class="col-8">
                                 <textarea name="result_explain" class="form-control"></textarea>
                             </div>
@@ -233,9 +218,7 @@
                             <label for="logistic_indemnity_money"
                                    class="col-2 col-form-label text-right ">承运商赔偿金额</label>
                             <div class="col-8">
-                                <input type="text" name="logistic_indemnity_money" id="logistic_indemnity_money"
-                                       class="form-control"
-                                       value="@if(old('logistic_indemnity_money')){{old('logistic_indemnity_money')}}@endif">
+                                <input type="text"  class="form-control" name="logistic_indemnity_money" id="logistic_indemnity_money" value="@if(old('logistic_indemnity_money')){{old('logistic_indemnity_money')}}@endif">
                                 @error('logistic_indemnity_money')
                                 <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
                                 @enderror
@@ -246,12 +229,9 @@
                             <label for="logistic_express_remission"
                                    class="col-2 col-form-label text-right ">承运商快递减免</label>
                             <div class="col-8">
-                                <select name="logistic_express_remission" id="logistic_express_remission"
-                                        class="form-control"
-                                        v-model='logistic_express_remission'>
+                                <select id="logistic_express_remission" name="logistic_express_remission"  class="form-control" v-model='logistic_express_remission'>
                                     <option value></option>
-                                    <option v-for="remission in Remission " :value="remission">@{{ remission }}
-                                    </option>
+                                    <option v-for="remission in Remission " :value="remission">@{{ remission }}</option>
                                 </select>
                             </div>
                         </div>
@@ -260,8 +240,7 @@
                             <label for="baoshi_indemnity_money"
                                    class="col-2 col-form-label text-right ">宝时赔偿金额</label>
                             <div class="col-8">
-                                <input type="text" name="baoshi_indemnity_money" id="baoshi_indemnity_money"
-                                       class="form-control"
+                                <input  id="baoshi_indemnity_money" type="text" name="baoshi_indemnity_money"  class="form-control"
                                        value="@if(old('baoshi_indemnity_money')){{old('baoshi_indemnity_money')}}@endif">
                                 @error('baoshi_indemnity_money')
                                 <span class="invalid-feedback" role="alert"><strong>{{ $message }}</strong></span>
@@ -273,8 +252,7 @@
                             <label for="baoshi_express_remission"
                                    class="col-2 col-form-label text-right ">宝时快递减免</label>
                             <div class="col-8">
-                                <select name="baoshi_express_remission" id="baoshi_express_remission"
-                                        class="form-control" v-model="baoshi_express_remission">
+                                <select name="baoshi_express_remission" id="baoshi_express_remission" class="form-control" v-model="baoshi_express_remission">
                                     <option value></option>
                                     <option v-for="remission in Remission " :value="remission">@{{ remission }}</option>
                                 </select>
@@ -285,11 +263,9 @@
                             <label for="user_workgroup_id"
                                    class="col-2 col-form-label text-right ">事故责任方</label>
                             <div class="col-8">
-                                <select name="user_workgroup_id" id="user_workgroup_id" class="form-control"
-                                        v-model="userWorkgroupId">
+                                <select name="user_workgroup_id" id="user_workgroup_id" class="form-control" v-model="userWorkgroupId">
                                     <option value></option>
-                                    <option v-for="wrokGroup in userWorkGroup " :value="wrokGroup.id">@{{ wrokGroup.name }}
-                                    </option>
+                                    <option v-for="wrokGroup in userWorkGroup " :value="wrokGroup.id">@{{ wrokGroup.name }}</option>
                                 </select>
                             </div>
                         </div>
@@ -303,24 +279,18 @@
                 </div>
             </div>
         </div>
-
     </div>
 @endsection
 @section('lastScript')
     <script type="text/javascript">
         let crete_vue = new Vue({
-                el: '#issue_create_div',
+            el: '#issue_create_div',
             data: {
-                logistic_number_return: @if(old('logistic_number_return'))"{{old('logistic_number_return')}}"
-                @else''@endif,
-                wms_order_no: @if(old('wms_order_no'))"{{old('wms_order_no')}}"
-                @else''@endif,
-                second_order_id: @if(old('second_order_id'))"{{old('second_order_id')}}"
-                @else''@endif,
-                secondOrderNo: @if(old('secondOrderNo'))"{{old('secondOrderNo')}}"
-                @else''@endif,
-                order_issue_type_id: @if(old('order_issue_type_id'))"{{old('order_issue_type_id')}}"
-                @else''@endif,
+                logistic_number_return: @if(old('logistic_number_return'))"{{old('logistic_number_return')}}"@else''@endif,
+                client_code: @if(old('client_code'))"{{old('client_code')}}"@else''@endif,
+                second_order_id: @if(old('second_order_id'))"{{old('second_order_id')}}"@else''@endif,
+                secondClientNO: @if(old('secondClientNO'))"{{old('secondClientNO')}}"@else''@endif,
+                order_issue_type_id: @if(old('order_issue_type_id'))"{{old('order_issue_type_id')}}"@else''@endif,
                 owners:{!! $owners !!},
                 logistics:{!! $logistic !!},
                 types:{!! $types !!},
@@ -329,27 +299,11 @@
                 order_id: @if(old('order_id')){{old('order_id')}}@else''@endif,
                 isSubmit: false,
                 // 原始订单信息
-                order: {
-                    orderno: '',
-                    logstic_number: '',
-                    address: '',
-                    province: '',
-                    city: '',
-                    district: '',
-                    consignee_name: '',
-                    consignee_phone: '',
-                    carrierid: '',
-                    owner_id: @if(old('owner_id')){{old('owner_id')}}@else '' @endif,
-                    ownerName: '',
-                    order_id: '',
-                },
+                order: {orderno: '', logstic_number: '', address: '', province: '', city: '', district: '', consignee_name: '', consignee_phone: '', carrierid: '', owner_id: @if(old('owner_id')){{old('owner_id')}}@else '' @endif, ownerName: '', order_id: '',},
                 // 二次订单
-                secondOrder: {
-                    logistic_id: '', code: '',
-                },
-                final_status: ['已解决', '已解决', '待退回', '退回中'],
+                secondOrder: {logistic_id: '', code: '',},
+                final_status: ['已解决', '待退回', '退回中'],
                 Remission: ['原单减免', '部分减免', '全部减免'],
-                order_issue_type_id: @if(old('order_issue_type_id')){{old('order_issue_type_id')}}@else''@endif,
                 finalStatus: @if(old('final_status')){{old('final_status')}}@else''@endif,
                 logistic_express_remission: @if(old('logistic_express_remission')){{old('logistic_express_remission')}}@else''@endif,
                 baoshi_express_remission: @if(old('baoshi_express_remission')){{old('baoshi_express_remission')}}@else''@endif,
@@ -358,45 +312,29 @@
             mounted: function () {
                 $("#issue_create_div").removeClass('d-none');
                 if (this.wms_order_no) {
-                    this.checkWMSOrderNo();
+                    this.checkClientCode();
                 }
-                if (this.secondOrderNo) {
+                if (this.secondClientNO) {
                     this.verifySecondOrder();
                 }
                 if (this.logistic_number_return) {
-                    this.logistic_number_return= this.logistic_number_return;
                     this.checkLogisticNumberReturn();
                 }
             },
             watch: {
+                client_code:function(value){
+                    if(value== null || value === ''){
+                        this.order = {orderno: '', logstic_number: '', address: '', province: '', city: '', district: '', consignee_name: '', consignee_phone: '', carrierid: '', owner_id: '' , ownerName: '', order_id: ''};
+                    }
+                },
                 order_issue_type_id: {
                     handler: function (value) {
-                        if (value == null || value == '') {
+                        if (value == null || value === '') {
                             this.isSubmit = false;
                         }
                     },
                     immediate: true
                 },
-                order:function(value){
-                    if(value){
-
-                    }
-
-                },
-                logistic_number_return: {
-                    handler: function (value) {
-                        $("#wms_order_no").attr('disabled', !(value === ''));
-                        $("#logistic_number").attr('disabled', !(value === ''));
-                    },
-                    immediate: true
-                },
-                wms_order_no: {
-                    handler: function (value) {
-                        $("#logistic_number_return").attr('disabled', !(value === ''));
-                        $("#logistic_number").attr('disabled', !(value === ''));
-                    },
-                    immediate: true
-                },
                 secondOrder: function (order) {
                     if (order) {
                         this.second_order_id = order.id;
@@ -404,42 +342,43 @@
                         this.second_order_id = '';
                     }
                 },
-                rejectedBill:function(value){
-                    if(value){
+                rejectedBill: function (value) {
+                    if (value) {
                         this.logistic_number_return = value.logistic_number_return;
-                    }else{
+                    } else {
                         this.logistic_number_return = '';
                     }
+                },
+                logistic_number_return:function(value){
+                    if(!value){
+                        this.rejectedBill = '';
+                    }
                 }
             },
             methods: {
                 checkLogisticNumberReturn: function () {
-// 校验退回单号是否存在及是否存在退回单是否已有对应的问题件
-                    if (this.logistic_number_return == null || this.logistic_number_return == '') {
+                    if (this.logistic_number_return == null || this.logistic_number_return === '') {
                         return;
                     }
                     let _this = this;
-                    let data = {type: 'RejectedBill', id: this.logistic_number_return};
-                    axios.post("{{url('apiLocal/order/issue/orderIssueHasCreate')}}", data).then(function (res) {
+                    let data = {logisticNumberReturn: this.logistic_number_return};
+                    axios.post("{{url('apiLocal/order/issue/orderIssueHasLogisticNumberReturn')}}", data).then(function (res) {
                         if (res.data.success) {
-                            if(res.data.data){
-                                if (res.data.data.order) {
-                                    _this.order = res.data.data.order;
-                                }
-                                if (res.data.data.rejectedBill) {
-                                    _this.rejectedBill = res.data.data.rejectedBill;
-                                }
+                            if (res.data.order) {
+                                _this.order = res.data.order;
                             }
-                            if(res.data.fail_info){
+                            if (res.data.rejectedBill) {
+                                _this.rejectedBill = res.data.rejectedBill;
+                            }
+                            if (res.data.meg) {
                                 tempTip.setDuration(3000);
-                                tempTip.showSuccess(res.data.fail_info);
+                                tempTip.showSuccess(res.data.meg);
                             }
                             _this.isSubmit = true;
                         } else {
                             tempTip.setDuration(3000);
                             tempTip.show(res.data.fail_info);
                             _this.isSubmit = false;
-
                         }
                     }).catch(function (err) {
                         tempTip.setDuration(5000);
@@ -447,42 +386,42 @@
                         _this.isSubmit = false;
                     });
                 },
-                checkWMSOrderNo() {
-                    if (this.wms_order_no == '' || this.wms_order_no == null) {
+                checkClientCode() {
+                    if (this.client_code == null || this.client_code === '' ) {
+                        $('#logistic_number_return').attr('disabled', false);
                         return;
                     }
                     let _this = this;
-                    let data = {type: 'WMSOrderNo', id: this.wms_order_no};
-                    axios.post("{{url('apiLocal/order/issue/orderIssueHasCreate')}}", data).then(function (res) {
+                    let data = {clientCode: this.client_code};
+                    axios.post("{{url('apiLocal/order/issue/orderIssueHasClientCode')}}", data).then(function (res) {
                         if (res.data.success) {
-                            if (res.data.data.order) {
-                                _this.order = res.data.data.order;
+                            if (res.data.order) {
+                                _this.order = res.data.order;
                             }
-                            if (res.data.data.rejectedBill) {
-                                _this.rejectedBill = res.data.data.rejectedBill;
-                                if (res.data.data.rejectedBill.items) {
-                                    _this.rejectedBillItems = res.data.data.rejectedBill.items;
-                                }
+                            if (res.data.rejectedBill) {
+                                _this.rejectedBill = res.data.rejectedBill;
+                            } else {
+                                $('#logistic_number_return').attr('disabled', true);
                             }
                             _this.isSubmit = true;
                         } else {
                             tempTip.setDuration(3000);
                             tempTip.show(res.data.fail_info);
                             _this.isSubmit = false;
+                            $('#logistic_number_return').attr('disabled', false);
                         }
                     }).catch(function (err) {
                         tempTip.setDuration(5000);
                         tempTip.show('网络链接失败:' + err);
                         _this.isSubmit = false;
+                        $('#logistic_number_return').attr('disabled', false);
                     });
                 },
                 verifySecondOrder: function () {
-                    if (this.secondOrderNo == '' || this.secondOrderNo == null) {
-                        return;
-                    }
+                    if ( this.secondClientNO == null || this.secondClientNO === '' ) {return;}
                     let _this = this;
-                    let data = {type: 'WMSOrderNo', WMSOrderNo: this.secondOrderNo};
-                    axios.post("{{url('apiLocal/order/issue/getOrderInfoByWMSOrderNo')}}", data).then(function (res) {
+                    let data = {clientNo: this.secondClientNO};
+                    axios.post("{{url('apiLocal/order/issue/getOrderInfoByClientNo')}}", data).then(function (res) {
                         if (res.data.success) {
                             _this.secondOrder = res.data.data;
                             _this.isSubmit = true;
@@ -499,7 +438,5 @@
                 },
             }
         })
-
     </script>
-
 @endsection

+ 105 - 59
resources/views/order/issue/edit.blade.php

@@ -12,65 +12,78 @@
             <input type="hidden" name="rejected_bill_id" v-model="orderIssues.rejected_bill_id">
             <input type="hidden" name="order_issue_type_id" v-model="orderIssues.order_issue_type_id">
             <input type="hidden" name="second_order_id" v-model="orderIssues.second_order_id">
-
             <div class="card-body">
-{{--WMS订单号--}}
                 <div class="form-group row">
-                    <label for="name" class="col-2 col-form-label text-right">WMS订单号</label>
+                    <label for="name" class="col-2 col-form-label text-right">原始客户订单号</label>
                     <div class="col-8">
-                        <input type="text" class="form-control" name="name" v-model="order.code" disabled>
+                        <input type="text" class="form-control" name="client_code" v-model="order.client_code" disabled>
                     </div>
                 </div>
-{{--退回单号--}}
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">退回单号</label>
+                    <label class="col-2 col-form-label text-right">问题类别</label>
                     <div class="col-8">
-                        <input type="text" class="form-control" name="" v-model="rejectedBill.logistic_number_return"
-                               disabled>
+                        <select name="order_issue_type_id" class="form-control" id="order_issue_type_id" v-model="orderIssues.order_issue_type_id">
+                            <option value></option>
+                            <option v-for="type in orderIssueType" :value="type.id">@{{ type.name }}</option>
+                        </select>
                     </div>
                 </div>
-
-{{--处理状态--}}
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">处理状态</label>
+                    <label class="col-2 col-form-label text-right">客户</label>
                     <div class="col-8">
-                        <select name="handle_status" class="form-control" disabled v-model="orderIssues.handle_status">
-                            <option v-for="value in handleStatus" :value="value">@{{ value }}</option>
+                        <select name="owner_id" class="form-control" id="owner_id" v-model="order.owner_id">
+                            <option value></option>
+                            <option v-for="type in owners" :value="type.id">@{{ type.name }}</option>
                         </select>
                     </div>
                 </div>
-{{--问题类别--}}
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">问题类别</label>
+                    <label class="col-2 col-form-label text-right">承运商</label>
                     <div class="col-8">
-                        <select name="order_issue_type_id" class="form-control" id="order_issue_type_id"
-                                v-model="orderIssues.order_issue_type_id">
+                        <select name="logistic_id" class="form-control" id="logistic_id" v-model="order.logistic_id">
                             <option value></option>
-                            <option v-for="type in orderIssueType" :value="type.id">@{{ type.name }}</option>
+                            <option v-for="type in logistics" :value="type.id">@{{ type.name }}</option>
                         </select>
                     </div>
                 </div>
-{{--二次订单号--}}
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">二次订单号</label>
+                    <label class="col-2 col-form-label text-right">退回单号</label>
                     <div class="col-8">
-                        <input type="text" name="second_order_id" class="form-control" v-model="secondOrder.code" @blur="getSecondOrder($event)">
+                        <input type="text" class="form-control" name="logistic_number" v-model="rejectedBill.logistic_number_return" @blur="getRejectedBill" id="logistic_number_return">
                     </div>
                 </div>
-{{--二次运单号--}}
+                <div class="form-group row" >
+                    <label class="col-2 col-form-label text-right">退回单号客户</label>
+                    <div class="col-8 form-group">
+                        <select class="form-control" name="id_owner" v-model="rejectedBill.id_owner" id="id_owner">
+                            <option value></option>
+                            <option v-for="owner in owners" :value="owner.id">@{{ owner.name }}</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="form-group row" >
+                    <label class="col-2 col-form-label text-right">退回单号承运商</label>
+                    <div class="col-8 form-group">
+                        <select class="form-control" name="id_logistic_return" v-model="rejectedBill.id_logistic_return" id="id_logistic_return">
+                            <option value></option>
+                            <option v-for="logistic in logistics" :value="logistic.id">@{{ logistic.name }}</option>
+                        </select>
+                    </div>
+                </div>
+
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">二次运单详情</label>
+                    <label class="col-2 col-form-label text-right">二次客户订单号</label>
                     <div class="col-8">
-                        <div class="alert alert-success" v-if="secondOrder.packages">
-                            订单详情已填充
-                        </div>
-                        <div class="alert alert-secondary" v-else>
-                            二次运单详情
-                        </div>
+                        <input type="text" name="second_order_id" class="form-control" v-model="secondOrder.client_code" @blur="getSecondOrder($event)" id="order_id">
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="col-2 col-form-label text-right">二次运单商品详情</label>
+                    <div class="col-8">
+                        <div class="alert alert-success" v-if="secondOrder.packages">二次运单商品详情已填充</div>
+                        <div class="alert alert-secondary" v-else>二次运单商品详情</div>
                         <table class="table" v-if="secondOrder.packages">
-                            <tr>
-                                <th>条码</th><th>商品名</th><th>数量</th>
-                            </tr>
+                            <tr><th>条码</th><th>商品名</th><th>数量</th></tr>
                             <template v-for="package in secondOrder.packages">
                                 <tr v-for="commodity in package.commodities">
                                     <td>@{{ commodity.commodity.sku }}</td>
@@ -81,14 +94,12 @@
                         </table>
                     </div>
                 </div>
-{{--最终状态--}}
                 <div class="form-group row">
-                    <label class="col-2 col-form-label text-right">处理结果说明</label>
+                    <label class="col-2 col-form-label text-right">处理结果</label>
                     <div class="col-8">
                         <textarea name="result_explain" class="form-control" v-model="orderIssues.result_explain"></textarea>
                     </div>
                 </div>
-{{--最终状态--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">最终状态</label>
                     <div class="col-8">
@@ -98,7 +109,6 @@
                         </select>
                     </div>
                 </div>
-{{--承运商赔偿金额--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">承运商赔偿金额</label>
                     <div class="col-8">
@@ -106,7 +116,6 @@
                                v-model="orderIssues.logistic_indemnity_money">
                     </div>
                 </div>
-{{--承运商快递减免--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">承运商快递减免</label>
                     <div class="col-8">
@@ -118,7 +127,6 @@
                         </select>
                     </div>
                 </div>
-{{--宝时赔偿金额--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">宝时赔偿金额</label>
                     <div class="col-8">
@@ -126,7 +134,6 @@
                                v-model="orderIssues.baoshi_indemnity_money">
                     </div>
                 </div>
-{{--宝时快递减免--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">宝时快递减免</label>
                     <div class="col-8">
@@ -138,7 +145,6 @@
                         </select>
                     </div>
                 </div>
-{{--事故责任方--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right">事故责任方</label>
                     <div class="col-8">
@@ -149,7 +155,6 @@
                         </select>
                     </div>
                 </div>
-{{--提交--}}
                 <div class="form-group row">
                     <label class="col-2 col-form-label text-right"></label>
                     <div class="col-8">
@@ -158,15 +163,11 @@
                     </div>
                 </div>
             </div>
-{{--deleteOrderIssue--}}
             <div class="modal fade" id="alertModal" tabindex="-1" role="dialog"  aria-labelledby="alertModalLabel" aria-hidden="true">
                 <div class="modal-dialog  modal-dialog-centered">
                     <div class="modal-content">
                         <div class="modal-header">
                             <h5 class="modal-title" id="exampleModalLabel">提示</h5>
-{{--                            <button type="button" class="close" data-dismiss="modal" aria-label="Close" >--}}
-{{--                                <span aria-hidden="true">&times;</span>--}}
-{{--                            </button>--}}
                         </div>
                         <div class="modal-body">
                             <div class="alert alert-success">
@@ -189,9 +190,10 @@
             el: '#editOrderIssue',
             data: {
                 orderIssues: {!! $orderIssue!!},
-                order: {!! $order !!},
-                secondOrder: @if($secondOrder){!! $secondOrder !!}@else ''@endif,
-                rejectedBill: @if($rejectedBill){!! $rejectedBill !!}@else ''@endif,
+                order: @if($order){!! $order !!}@else {id:null,owner_id:null}@endif,
+                secondOrder: @if($secondOrder){!! $secondOrder !!}@else {client_code:''}@endif,
+                rejectedBill: @if($rejectedBill){!! $rejectedBill !!}@else {logistic_number_return:''}@endif,
+                create_RejectedBill:'',
                 owners:{!! $owners  !!},
                 logistics:{!! $logistics !!},
                 userWorkgroup: {!! $userWorkgroup !!},
@@ -201,27 +203,60 @@
                 final_status: ['已解决', '待退回', '退回中',],
                 logisticExpressRemission: ['原单减免', '部分减免', '全部减免'],
                 baoShiExpressRemission: ['原单减免', '部分减免', '全部减免'],
-                handleStatus: ['处理中', '已完结'],
+                logistic_number:@if($rejectedBill)'{!! $rejectedBill->logistic_number_return !!}'@else ''@endif
             },
             mounted: function () {
                 $("#editOrderIssue").removeClass('d-none');
-                console.log(this.secondOrder);
-
+                console.log(this.rejectedBill);
             },
             watch:{
                 secondOrder:{
                     handler:function(value){
                         if(value.code === ''){
                             this.secondOrder.packages = '';
-
                         }
                     },
                     deep:true,
                 },
             },
             methods: {
+                getRejectedBill(){
+                    let logistic_number_return =  this.rejectedBill.logistic_number_return;
+                    console.log(123,logistic_number_return);
+                    let _this = this;
+                    if( logistic_number_return === null || logistic_number_return == '' ){
+                        this.rejectedBill = {logistic_number_return:logistic_number_return} ;
+                        this.orderIssues.rejected_bill_id = null;
+                        return ;
+                    }
+                    let data = {logisticNumberReturn:logistic_number_return};
+                    axios.post("{{url('apiLocal/rejectedBill/getRejectedByLogisticNumberReturn')}}",data).then(function(res){
+                        if(res.data.success){
+                            if(res.data.rejectedBill){
+                                _this.rejectedBill = res.data.rejectedBill;
+                                _this.rejectedBill.id_logistic_return = res.data.rejectedBill.id_logistic_return;
+                                _this.rejectedBill.id_owner = res.data.rejectedBill.id_owner;
+                                _this.orderIssues.rejected_bill_id = res.data.rejectedBill.id;
+                            }
+                            if(res.data.msg){
+                                tempTip.setDuration(2000);
+                                tempTip.showSuccess(res.data.msg);
+                                _this.orderIssues.rejected_bill_id = null;
+                                _this.rejectedBill =  {logistic_number_return:logistic_number_return};
+                            }else {
+                                tempTip.setDuration(2000);
+                                tempTip.showSuccess('找到对应的问题单');
+                            }
+                        }else{
+                            tempTip.setDuration(4000);
+                            tempTip.show(res.data.fain_info);
+                        }
+                    }).catch(function(err){
+                        tempTip.setDuration(4000);
+                        tempTip.show('网络异常:' + err);
+                    });
+                },
                 orderIssueUpdate() {
-                    let data = this.orderIssues;
                     let arr = {
                         '问题类别':'order_issue_type_id',
                         '处理状态':'handle_status',
@@ -230,6 +265,15 @@
                         '承运商快递减免':'logistic_express_remission',
                         '宝时赔偿金额':'baoshi_indemnity_money',
                         '宝时快递减免':'baoshi_express_remission',
+                        '宝时快递减免':'baoshi_express_remission',
+                        '宝时快递减免':'baoshi_express_remission',
+                        '退回单号':'logistic_number_return',
+                        '退回单号货主':'id_owner',
+                        '退回单号承运商':'id_logistic_return',
+                    }
+                    let data = {orderIssues:this.orderIssues,order:this.order,rejectedBill:this.rejectedBill};
+                    if(data.rejectedBill.logistic_number_return == null || data.rejectedBill.logistic_number_return===''){
+                        data.rejectedBill = null;
                     }
                     axios.post('{{url("apiLocal/order/issue/update")}}', data).then(function (res) {
                         if (res.data.success) {
@@ -253,17 +297,18 @@
                 },
                 getSecondOrder(e){
                     let _this = this;
-                    let orderNo = $(e.target).val();
-                    if(!orderNo){
+                    let client_code = $(e.target).val();
+                    if(!client_code){
+                        _this.secondOrder = '';
+                        _this.orderIssues.second_order_id = null;
                         return ;
                     }
-                    if(orderNo){
-                        let data = {WMSOrderNo:orderNo};
-                        axios.post("{{url('apiLocal/order/issue/getOrderInfoByWMSOrderNo')}}",data).then(function(res){
+                    if(client_code){
+                        let data = {clientNo:client_code};
+                        axios.post("{{url('apiLocal/order/issue/getOrderInfoByClientNo')}}",data).then(function(res){
                             if(res.data.success){
                                 _this.secondOrder = res.data.data;
                                 _this.orderIssues.second_order_id = res.data.data.id;
-                                console.log(_this.orderIssues);
                             } else {
                                 tempTip.setDuration(4000);
                                 tempTip.show('查询订单信息出现异常:' + res.data.fail_info);
@@ -283,6 +328,7 @@
             $(this).removeClass('is-invalid');
         })
 
+
     </script>
 
 @endsection

+ 3 - 3
resources/views/order/issue/import.blade.php

@@ -11,9 +11,9 @@
                     @csrf
                     <div class="form-group row text-center">
                         <div class="col-12 text-danger">
-                           <span class="text-dark"> 注意:请保证表第一行有以下对应的字段名<br>(可不按顺序):<br></span>
-                            <span class="font-weight-bold">原始订单号,情况说明,问题类别</span><br>
-                            <span class="text-muted" style="opacity: 0.7">订单问题类别: ('拦截', '快递异常', '信息更改', '联系不上', '其他', '错漏发', '仓库问题', '快递丢件', '破损', '撤销丢件', '二次加工', '全检问题', '系统问题', '延迟发货', '仓库丢件', )</span><br>
+                            注意:请保证表第一行有以下对应的字段名<br>(可不按顺序):<br>
+                            原始运单号,情况说明,问题类别<br>
+                            订单问题类别:('拦截', '快递异常', '信息更改', '联系不上', '其他', '错漏发', '仓库问题', '快递丢件', '破损', '撤销丢件', '二次加工', '全检问题', '系统问题', '延迟发货', '仓库丢件', )<br>
                         </div>
                         <div class="col-12 text-info ">
                             导入时间随文件大小可能达数十分钟以上,请耐心等候

Різницю між файлами не показано, бо вона завелика
+ 453 - 288
resources/views/order/issue/index.blade.php


+ 14 - 13
routes/apiLocal.php

@@ -29,17 +29,18 @@ Route::post('waybill/recoverSelected', 'WaybillController@apiRestoreSelected');
 Route::post('waybill/changeFee', 'WaybillController@changeFee');
 Route::post('waybill/changeCharge', 'WaybillController@changeCharge');
 
-Route::post('rejectedBill/getRejectedByLogisticNumberReturn','RejectedBillItemController@apiGetRejectedByLogisticNumberReturn');
-Route::group(['prefix'=>'order'],function(){
-    Route::post('issue/onTop/store','OrderIssueOnTopController@apiStore');
-    Route::post('issue/onTop/cancelTop','OrderIssueOnTopController@apiDestroy');
-    Route::post('issue/update','OrderIssueController@apiUpdate');
-    Route::post('issue/destroy','OrderIssueController@apiDestroy');
-    Route::post('issue/orderIssueTag','OrderIssueController@apiOrderIssueTag');
-    Route::post('issue/log/store','OrderIssueProcessLogController@apiStore');
-    Route::post('issue/log/destroy','OrderIssueProcessLogController@apisDestroy');
-    Route::post('issue/disposeOrderIssue','OrderIssueController@apiDisposeOrderIssue');
-    Route::post('issue/endOrderIssue','OrderIssueController@apiEndOrderIssue');
-    Route::post('issue/orderIssueHasCreate','OrderIssueController@apiOrderIssueHasCreate');
-    Route::post('issue/getOrderInfoByWMSOrderNo','OrderIssueController@apiGetOrderInfoByWMSOrderNo');
+Route::post('rejectedBill/getRejectedByLogisticNumberReturn','RejectedController@apiGetRejectedByLogisticNumberReturn');
+Route::group(['prefix' => 'order'], function () {
+    Route::post('issue/onTop/store', 'OrderIssueOnTopController@apiStore');
+    Route::post('issue/onTop/cancelTop', 'OrderIssueOnTopController@apiDestroy');
+    Route::post('issue/orderIssueHasClientCode', 'OrderIssueController@apiOrderIssueHasClientCode');
+    Route::post('issue/orderIssueHasLogisticNumberReturn', 'OrderIssueController@apiOrderIssueHasLogisticNumberReturn');
+    Route::post('issue/update', 'OrderIssueController@apiUpdate');
+    Route::post('issue/destroy', 'OrderIssueController@apiDestroy');
+    Route::post('issue/orderIssueTag', 'OrderIssueController@apiOrderIssueTag');
+    Route::post('issue/log/store', 'OrderIssueProcessLogController@apiStore');
+    Route::post('issue/log/destroy', 'OrderIssueProcessLogController@apiDestroy');
+    Route::post('issue/disposeOrderIssue', 'OrderIssueController@apiDisposeOrderIssue');
+    Route::post('issue/endOrderIssue', 'OrderIssueController@apiEndOrderIssue');
+    Route::post('issue/getOrderInfoByClientNo', 'OrderIssueController@apiGetOrderInfoByClientNo');
 });

+ 25 - 0
tests/OrderIssues/Controllers/OrderIssueController_apiDestryTest.php

@@ -0,0 +1,25 @@
+<?php
+
+
+namespace Tests\OrderIssues\Controllers;
+
+use App\Owner;
+use App\User;
+
+use Tests\TestCase;
+
+class OrderIssueController_indexTest extends TestCase
+{
+    public $user;
+    protected $response = null;
+
+    public function setUp(): void
+    {
+        parent::setUp();
+        $this->json('post','');
+    }
+    protected function tearDown(): void
+    {
+        parent::tearDown();
+    }
+}

+ 5 - 4
tests/OrderIssues/Controllers/OrderIssueController_indexTest.php

@@ -3,6 +3,7 @@
 
 namespace Tests\OrderIssues\Controllers;
 
+use App\Owner;
 use App\User;
 
 use Tests\TestCase;
@@ -15,18 +16,18 @@ class OrderIssueController_indexTest extends TestCase
     public function setUp(): void
     {
         parent::setUp();
-        $url = "http://bswas/order/issue/create";
-        $this->user = User::where('name', '18887874545')->first();
+        $url = "http://bswas/order/issue/index";
+        $this->user = User::where('name', 'zengjun')->first();
         $this->response = $this->actingAs($this->user)->get($url);
     }
 
     public function testHasView()
     {
-        $this->response->assertStatus(302);
+        $this->response->assertStatus(200);
     }
 
     public function testViewHasOwners(){
-        var_dump($this->response);
+        $this->response->assertJson(['owners'=>Owner::all()]);
     }
 
     protected function tearDown(): void

Деякі файли не було показано, через те що забагато файлів було змінено