Ver Fonte

订单问题件 二次运单录入反向带出二次客户订单号,商品明细

ajun há 5 anos atrás
pai
commit
dcba3354ff

+ 20 - 9
app/Http/Controllers/OrderIssueController.php

@@ -9,6 +9,7 @@ use App\Order;
 use App\OrderIssue;
 use App\OrderIssueProcessLog;
 use App\OrderIssueType;
+use App\OrderPackage;
 use App\Owner;
 use App\QualityLabel;
 use App\RejectedBill;
@@ -314,8 +315,7 @@ class OrderIssueController extends Controller
             return ['success'=>false,'fail_info' => '没有对应权限'];
         }
         $orderNos = $request->input('orderNos');
-        $orderIssues =OrderIssue::query()
-            ->with('order')
+        $orderIssues =OrderIssue::query()->with('order')
             ->whereHas('order',function($query) use ($orderNos){
                 $query->whereIn('code',$orderNos);
             })->get();
@@ -462,20 +462,31 @@ class OrderIssueController extends Controller
         }
     }
 
+
     public function secondOrderAddOrderPackageApi(Request $request)
     {
-        if(!Gate::allows('订单管理-问题件-编辑')){
+        if(!Gate::allows('订单管理-问题件-编辑'))
             return ['success'=>false,'fail_info'=>'没有对应权限'];
+        /** @var OrderService $orderService */
+        $orderService = app(OrderService::class);
+        $order = $orderService->getOrderByLogisticNumber($request->logistic_number);
+        if($order){
+            $order = Order::query()->with(['packages.commodities.commodity','logistic'])->where('id', $order->id)->first();
+            OrderIssue::query()->where('id',$request->id)->update(['second_client_no' => $order->client_code]);
+            return ['success' => true,'order' => $order,'second_client_no'=>$order->client_code];
         }
         try {
-            $array = app(OrderPackageService::class)->createByLogisticNumberAndOrderClientNo( $request->input('client_code'),$request->input('logistic_number'));
-            if(!isset($array['orderPackage']))return ['success'=>false,'fail_info'=>'创建失败'];
-            return ['success'=>true,'orderPackage'=>$array['orderPackage'],'order'=>$array['order']];
+            $order = Order::query()->with('packages.commodities.commodity')->where('client_code', $request->client_code)->first();
+            if (!$order) $order = Order::query()->create(['client_code' => $request->client_code]);
+            $orderPackage = OrderPackage::query()->create(['order_id' => $order->id, 'logistic_number' => $request->logistic_number]);
+            OrderIssue::query()->where('id',$request->id)->update(['second_client_no' => $order->client_code]);
+            return ['success' => true, 'order' => $order, 'package' => $orderPackage,'second_client_no' => $order->client_code];
         } catch (Exception $e) {
-            LogService::log(__METHOD__,__FUNCTION__.'ERROR','问题件 根据二次客户单号和快递单创建OrderPakcage'.json_encode($request->getContent()).$e->getMessage());
-            return ['success'=>false, 'fail_info' => $e->getMessage()];
+            LogService::log(__METHOD__,__FUNCTION__,'添加问题件二次订单快递单号'.json_encode($request->getContent().$e->getMessage().$e->getTraceAsString()));
+            return ['success'=>false,'fail_info'=>$e->getMessage()];
         }
-
     }
 
+
+
 }

+ 38 - 92
app/Services/OrderIssueService.php

@@ -24,6 +24,11 @@ class OrderIssueService
         app()->bind("orderPackageCommoditiesService", OrderPackageCommoditiesService::class);
     }
 
+    public function insert($params)
+    {
+        OrderIssue::query()->insert($params);
+    }
+
     public function getQuery(array $arr, array $condition = null)
     {
         if (!isset($condition)) {
@@ -254,32 +259,44 @@ class OrderIssueService
         return compact('orderPackageSql','secondOrderPackageSql','orderIssueSql','rejectedBillItemSql','logSql');
     }
 
-    public function paginate(array $arr)
+    public function paginate(array $params)
     {
-        return $query = $this->getConditionQuery($arr)->paginate($arr['paginate'] ?? 50);
-
+        return $query = $this->getConditionQuery($params)->paginate($params['paginate'] ?? 50);
     }
 
     public function orderIssueTag(array $params)
     {
         $orderNos = $params['orderNos'];
-        $meg = ['success' => true];
-        foreach ($orderNos as $orderNo) {
-            try {
-                $orderIssue = $this->createOrFindByOrderNo($orderNo);
-                if($orderIssue != null){
-                    OrderIssue::query()->where('id', $orderIssue['id'])->update(['order_issue_type_id' => $params['typeId'], 'result_explain' => $params['result_explain']]);
-                    OrderIssueProcessLog::query()->create(['order_issue_id' => $orderIssue['id'], 'user_id' => Auth::user()['id'], 'content' => '', 'type' => '创建']);
-                    LogService::log(__METHOD__, __FUNCTION__, '标记订单问题件' . json_encode($orderNo).json_encode($orderIssue));
-                }
-            } catch (\Exception $e) {
-                LogService::log(__METHOD__, __FUNCTION__, '标记订单问题件error' . json_encode($orderNo).$e->getMessage(),$e->getTraceAsString());
-                $meg['success'] = false;
-                $meg['fail_info'][]=  $orderNo.$e->getMessage();
-            }
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])->whereIn('orderNo',$orderNos)->get();
+        $bool = $this->createOrderIssueByWmsOrder($orderHeaders,$params['typeId'],$params['result_explain']);
+        if($bool){
+            return ['success'=>$bool];
+        }else{
+            return ['success'=>$bool,'fail_info'=>'问题件创建失败'];
+        }
+    }
+
+    public function createOrderIssueByWmsOrder($orderHeaders,$order_issue_type_id,$result_explain)
+    {
+        /** @var OrderService $orderService */
+        $orderService = app(OrderService::class);
+        $orders = $orderService->createByWmsOrder($orderHeaders);
+        $innerParams = [];
+        foreach ($orders as $order) {
+            $innerParams[] = [
+                'order_id'=>$order->id,
+                'order_issue_type_id' => $order_issue_type_id,
+                'result_explain'=>$result_explain
+            ];
+        }
+        try {
+            $this->insert($innerParams);
+            LogService::log(__METHOD__,__FUNCTION__,'创建问题件'.count($innerParams).json_encode($innerParams));
+            return true;
+        } catch (\Exception $e) {
+            LogService::log(__METHOD__,__FUNCTION__,'创建问题件 error'.count($innerParams).json_encode($innerParams).$e->getMessage().$e->getTraceAsString());
+            return false;
         }
-        unset($params,$orderIssues,$orderNos);
-        return $meg;
     }
 
     public function createOrFindByOrderNo($orderNo)
@@ -379,85 +396,14 @@ class OrderIssueService
         return $orderIssue;
     }
 
-    public function verifyOrderIssue(array $arr)
-    {
-        $orders = Order::query()->whereIn('code', $arr)->get();
-        if (count($orders) == 0) {
-            return [];
-        }
-        $order_ids = [];
-        foreach ($orders as $order){
-            $order_ids[] = $order['id'];
-        }
-        unset($orders,$arr);
-        return OrderIssue::query()->with('order')->whereIn('order_id', $order_ids)->get();
-    }
-
-    public function exportExcel(Request $request)
-    {
-        $result = null;
-        if ($request->getMethod() == 'GET') {
-            if ($request->has('checkAllSign')) {
-                $result = $this->getConditionQuery($request->all(), null)->get();
-            }
-        } else if ($request->getMethod() == 'POST') {
-            $request['order_issue_ids'] = $request->input('data');
-            $result = $this->getConditionQuery($request->all(), null)->get();
-        }
-        return $result;
-    }
-
-    public function updateOrderIssue(OrderIssue $orderIssue, array $arr)
-    {
-        if ($arr['rejectedBill'] ?? false) {
-            if ($arr['rejectedBill']['id'] ?? false) {
-                $rejectedBill = RejectedBill::query()->where('id', $arr['rejectedBill']['id'])->first();
-                $arr['orderIssues']['rejected_bill_id'] = $rejectedBill['id'];
-                $arr['orderIssues']['is_new_rejecting'] = '有';
-                $rejectedBill->fill($arr['rejectedBill']);
-                $rejectedBill->update();
-                $rejectedBill->同步问题件();
-                $rejectedBill->同步问题件退件状态();
-
-            } else if ($arr['rejectedBill']['id_logistic_return'] ?? false && $arr['rejectedBill']['logistic_number_return'] ?? false) {
-
-                $owner_id = $orderIssue['order']['owner_id'];
-                $rejectedBill = RejectedBill::query()->firstOrCreate([
-                    'id_logistic_return' => $arr['rejectedBill']['id_logistic_return'] ?? '',
-                    'id_owner' => $owner_id ?? '',
-                    'logistic_number_return' => $arr['rejectedBill']['logistic_number_return'],]
-                );
-                $rejectedBill->save();
-                $rejectedBill->同步问题件();
-                $rejectedBill->同步问题件退件状态();
-                $arr['orderIssues']['rejected_bill_id'] = $rejectedBill['id'];
-                $arr['orderIssues']['is_new_rejecting'] = '有';
-            }
-        }
-        if ($arr['order'] ?? false) {
-            $order = Order::query()->where('id', $arr['order']['id'])->first();
-            $order->fill($arr['order']);
-            $order->update();
-        }
-        $orderIssue->fill($arr['orderIssues']);
-        $orderIssue->同步退单状态();
-        $orderIssue->update();
-        unset($orderIssue,$arr);
-    }
-
     public function batchDestroy($ids){
-        $bool = null;
         try {
             $bool = OrderIssue::query()->whereIn('id', $ids)->delete();
             LogService::log(__METHOD__,__FUNCTION__,json_encode($ids));
+            return ['success'=>$bool];
         } catch (\Exception $e) {
             LogService::log(__METHOD__,__FUNCTION__,'error'.json_decode($ids).'||'.$e->getMessage().'||'.$e->getTraceAsString());
-        } finally {
-            if($bool ?? false){
-                return ['success'=>true];
-            }else{
-                return ['success' => false];
-            }
+            return ['success' => false];
         }
     }
 

+ 0 - 20
app/Services/OrderPackageCommoditiesService.php

@@ -471,26 +471,6 @@ class OrderPackageCommoditiesService
         return $createParams;
     }
 
-    public function createByOrderHeader($orderHeaders)
-    {
-        $orderPackageCommodities = $this->getByWmsOrder($orderHeaders);
-        $OPCCollects = $this->将orderPackageCommodity抽象成数组($orderPackageCommodities);
-        $creatParams = $this->返回创建数组_WMS订单($orderHeaders);
-        $this->数据重组($OPCCollects,$creatParams);
-        $collect = $this->删选需要修改的OrderPackageCommodities($OPCCollect,$creatParam);
-        $ids = $this->删选出删除的OrderPackageCommodities($OPCCollect,$creatParam);
-        $insertParam = $this->删选出需要添加的OrderPackageCommodities($OPCCollect,$creatParam);
-        $updateParams = [];
-        foreach ($collect as $item) {
-            $updateParams[] = $item;
-        }
-        $this->根据更新数组进行更新($updateParams);
-        $this->删除OPC以及对应的追踪件($ids);
-        $creatParams = $this->生成OrderPackageCommodities_基于创建数组($insertParam);
-        $this->create($creatParams);
-    }
-
-
     /**
      * @param $orderHeaders
      */

+ 3 - 2
app/Services/OrderPackageService.php

@@ -377,15 +377,16 @@ class OrderPackageService
      * @param string $logisticNumber
      * @return array|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object
      */
-    public function createByLogisticNumberAndOrderClientNo($orderClientNo,$logisticNumber)
+    public function update($orderClientNo,$logisticNumber)
     {
         $order = Order::query()->with('packages.commodities.commodity')->where('client_code',$orderClientNo)->first();
         if(!$order){
             $order = Order::query()->create(['client_code'=>$orderClientNo]);
         }
         $orderPackage = OrderPackage::query()->where('logistic_number',$logisticNumber)->first();
-        if($orderPackage){return $orderPackage;}
+        if($orderPackage){return  compact('orderPackage','order');}
         $orderPackage = OrderPackage::query()->create(['order_id'=>$order->id,'logistic_number'=>$logisticNumber]);
         return  compact('orderPackage','order');
     }
+
 }

+ 35 - 15
app/Services/OrderService.php

@@ -436,12 +436,9 @@ class OrderService
         } else {
             $orderHeader = app('oracleDocOrderHeaderService')->first(['soreference5' => $logistic_number]);
         }
-
         if ($orderHeader == null) return null;
-
         $order = $this->first(['code'=>$orderHeader->orderno]);
         if ($order) return $order;
-
         /** @var OwnerService */
         $owner = app('ownerService')->first(['code' => $orderHeader->customerid]);
         if (!$owner) {
@@ -476,7 +473,10 @@ class OrderService
         ]);
     }
 
-
+    /**
+     * @param $orderHeaders
+     * @return \Illuminate\Database\Eloquent\Builder[]|Collection|null
+     */
     public function createByWmsOrder($orderHeaders)
     {
         if($orderHeaders->isEmpty())return null;
@@ -533,12 +533,12 @@ class OrderService
              if($order_code_map[$orderHeader->orderno] ?? false)continue;
             $owner = $owners_code_map[$orderHeader->customerid] ?? null;
             $logistic =  $logistics_code_map[$orderHeader->userdefine1] ?? null;
-            $shop = $shop_name_map[' _owner_code'.$orderHeader->customerid.' name='.$orderHeader->issuepartyname] ?? '';
+            $key = ' owner_code='.$orderHeader->customerid.' name='.$orderHeader->issuepartyname ?? '';
+            $shop = $shop_name_map[$key] ?? '';
             // 自提 转 新杰物流
             if($logistic!= null && $logistic->name == '自提'){
                 $logistic = $logistic_XJWL;
             }
-
             $params[] = [
                 'code' => $orderHeader->orderno,
                 'owner_id' => $owner->id ?? null,
@@ -711,14 +711,15 @@ class OrderService
      */
     public function updateOrderByOrderHeader($order,$orderHeader)
     {
-        $params = $this->getParamByOrderHeader($orderHeader);
-        if($params['client_code']!= $order->client_code){
+        if(!$orderHeader){return ;}
+        if($orderHeader->orderno == $order->code){
             return ;
-        }else{
-            if($params['code'] == $order->code){
-                return ;
-            }
-            $data = [
+        }else if($orderHeader->soreference1 != $order->client_code){
+            return ;
+        }
+        $params = $this->getParamByOrderHeader($orderHeader);
+
+        $data = [
                 'code'=>$order->code ?? $params['code'],
                 'owner_id'=>$order->code ?? $params['owner_id'],
                 'shop_id'=>$order->code ?? $params['shop_id'],
@@ -730,8 +731,27 @@ class OrderService
                 'address'=>$order->code ?? $params['address'],
                 'wms_edittime'=>$order->code ?? $params['wms_edittime'],
                 'wms_status'=>$order->code ?? $params['wms_status'],
-            ];
-            Order::query()->where('id',$order->id)->update($data);
+        ];
+        Order::query()->where('id',$order->id)->update($data);
+    }
+
+    public function getOrderByLogisticNumber($logisticNumber)
+    {
+        $order = Order::query()->with('packages.commodities.commodity')
+            ->whereHas('packages',function($query)use($logisticNumber){
+                $query->where('logistic_number',$logisticNumber);
+            })->first();
+        if($order){
+            $orderHeader = OracleDOCOrderHeader::query()->where('soreference1',$order->client_no)->first();
+            $this->updateOrderByOrderHeader($order,$orderHeader);
+            return $order;
         }
+        $orderHeaders = OracleDOCOrderHeader::query()->with(['oracleDOCOrderDetails', 'actAllocationDetails','oracleBASCode'])
+            ->whereHas('actAllocationDetails',function($query)use($logisticNumber){
+                $query->where('picktotraceid',$logisticNumber);
+            })->get();
+        app(CommodityService::class)->getByWmsOrders($orderHeaders);
+        $orders =$this->createByWmsOrder($orderHeaders);
+        return  $orders ? $orders->first() : null ;
     }
 }

+ 2 - 2
public/js/app.js

@@ -83218,8 +83218,8 @@ module.exports = tempTip;
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-__webpack_require__(/*! D:\wamp64\www\bswas\resources\js\app.js */"./resources/js/app.js");
-module.exports = __webpack_require__(/*! D:\wamp64\www\bswas\resources\sass\app.scss */"./resources/sass/app.scss");
+__webpack_require__(/*! D:\phpstudy_pro\WWW\bswas\resources\js\app.js */"./resources/js/app.js");
+module.exports = __webpack_require__(/*! D:\phpstudy_pro\WWW\bswas\resources\sass\app.scss */"./resources/sass/app.scss");
 
 
 /***/ }),

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

@@ -309,7 +309,13 @@
                             </div>
                         </td>
 
-                        <td class="child-layer-3">@{{ orderIssue.result_explain}}</td>
+                        <td class="child-layer-3">
+                            @can('订单管理-问题件-编辑')
+                            <textarea class="form-control form-control-sm"  @change="updateOrderIssue(orderIssue,'result_explain',$event)" data-toggle="tooltip" data-placement="bottom" :title="orderIssue.result_explain">@{{ orderIssue.result_explain }}</textarea>
+                            @else
+                            @{{ orderIssue.result_explain}}
+                            @endcan
+                        </td>
                         <td class="child-layer-3">
                             @can('订单管理-问题件-编辑')
                                 <select class="form-control form-control-sm" :value="orderIssue.order_issue_type_id" @change="updateOrderIssue(orderIssue,'order_issue_type_id',$event)">
@@ -695,7 +701,7 @@
                 let tr = $('.tr-yellow')[1];
                 let countShow = $(tr).children('.one-layer').length;
                 $('.header-1').attr('colspan',countShow);
-
+                $('[data-toggle="tooltip"]').tooltip({'trigger': 'hover'})
                 $('#list').removeClass("d-none");
                 let _this = this;
                 let log_content_range = [{name:'15',value:'15天内'},{name:'31',value:'近一月'},{name:'92',value:'近三月'},{name:'183',value:'近半年'},{name:'366',value:'近一年'},{name:'0',value:'不限'},];
@@ -1364,13 +1370,18 @@
                         if(response.data.success){
                             tempTip.setDuration(2000)
                             tempTip.showSuccess('添加成功')
-                            if(orderIssue.second_order == null){
+                            if(response.data.order != null){
                                 orderIssue.second_order = response.data.order
                             }
-                            if(orderIssue.second_order.packages==null){
+                            if(orderIssue.second_order.packages == null){
                                 orderIssue.second_order.packages = []
                             }
-                            orderIssue.second_order.packages.push(response.data.orderPackage);
+                            if(response.data.package != null){
+                                orderIssue.second_order.packages.push(response.data.package)
+                            }
+                            if( response.data.second_client_no != null) {
+                                orderIssue.second_client_no = response.data.second_client_no
+                            }
                             _this.edit.orderIssue.id = ''
                             _this.edit.orderIssue.showId = ''
                         }else{