Browse Source

入库管理-开单入库->预约单号-校验

loustwo 4 năm trước cách đây
mục cha
commit
d8550ed376

+ 21 - 2
app/Http/Controllers/ReceivingTaskController.php

@@ -5,13 +5,12 @@ namespace App\Http\Controllers;
 use App\DeliveryAppointmentCar;
 use App\Filters\ReceivingTaskFilters;
 use App\Http\Requests\Api\ReceivingTaskRequest;
-use App\Owner;
 use App\ReceivingTask;
 use App\Services\OwnerService;
 use App\Services\ReceivingTaskService;
 use App\Warehouse;
 use Illuminate\Support\Facades\Gate;
-use Illuminate\Support\Facades\Request;
+use Illuminate\Http\Request;
 
 class ReceivingTaskController extends Controller
 {
@@ -78,4 +77,24 @@ class ReceivingTaskController extends Controller
             return ['success' => false, 'message' => '生成入库单任务失败,请重新尝试'];
         }
     }
+
+    /**
+     * 根据预约号获取Asn单号
+     * @param Request $request
+     * @return array
+     */
+    public function getAsnByAppointmentNumberApi(Request $request): array
+    {
+        $appointment_number = $request->input('appointment_number');
+        if (!$appointment_number){
+            return ['success' => false, 'errors' => ['appointment_number' => '预约号不能为空']];
+        }
+        $delivery_appointment_car = DeliveryAppointmentCar::query()->with('deliveryAppointment')->where('appointment_number',$appointment_number)->first();
+        if (ReceivingTask::query()->where('delivery_appointment_car_id',$delivery_appointment_car->id)->exists()){
+            return ['success' => false, 'errors' =>['appointment_number' => ['预约号已有对应的任务']]];
+        }
+        $ans_number_string = $delivery_appointment_car->deliveryAppointment->asn_number ?? '';
+        $ans_numbers = array_filter(preg_split('/[,, ]+/is', $ans_number_string));
+        return ['success' => true,'data' => $ans_numbers];
+    }
 }

+ 1 - 2
app/Http/Requests/Api/ReceivingTaskRequest.php

@@ -36,7 +36,7 @@ class ReceivingTaskRequest extends FormRequest
             'provide_list' => 'required',
             'receiving_type' => 'required',
             'driving_license_image' => 'required|image',
-            'asn_nos' => 'required|array'
+            'asn_nos' => 'array'
         ];
     }
 
@@ -54,7 +54,6 @@ class ReceivingTaskRequest extends FormRequest
             'receiving_type.required' => "收货类型为必选项",
             'driving_license_image.required' => "驾驶证扫描件不能为空",
             'driving_license_image.image' => "驾驶证扫描件格式错误",
-            'asn_nos.required' => "勾选入库单",
             'asn_nos.array' => "入库单号参数类型错误"
         ];
     }

+ 4 - 1
app/Services/OracleDocAsnHerderService.php

@@ -43,7 +43,8 @@ class OracleDocAsnHerderService
                 $query->with(['lineStatus', 'qualityStatus', 'basSku']);
             }])
             ->whereIn("AsnStatus", ['00', '30'])
-            ->where('CustomerId', $customId)->orderByDesc('addtime')->forPage($page,$perGage)->get();
+            ->whereIn('asnType',['B2BRK','CGRK','CSKC','DBRK','F10','F21','F31','F32','HHRK','QTRK'])
+            ->where('CustomerId', $customId)->orderByDesc('addTime')->forPage($page,$perGage)->get();
     }
 
     public function getToBeProcessAsnCountByCustomId($customId): int
@@ -53,6 +54,8 @@ class OracleDocAsnHerderService
                 $query->with(['lineStatus', 'qualityStatus', 'basSku']);
             }])
             ->whereIn("AsnStatus", ['00', '30'])
+
+            ->whereIn('asnType',['B2BRK','CGRK','CSKC','DBRK','F10','F21','F31','F32','HHRK','QTRK'])
             ->where('CustomerId', $customId)->count();
     }
 

+ 1 - 1
app/Services/ReceivingTaskService.php

@@ -59,7 +59,7 @@ class ReceivingTaskService
         DB::transaction(function () use ($deliveryAppointmentCar, $params, &$receivingTask) {
             $receivingTask->save();
             if ($receivingTask->id) {
-                $ans_number_string = $deliveryAppointmentCar->deliveryAppointment->asn_number ?? [];
+                $ans_number_string = $deliveryAppointmentCar->deliveryAppointment->asn_number ?? '';
                 $ans_numbers = array_filter(preg_split('/[,, ]+/is', $ans_number_string));
                 $ans_numbers = array_merge($ans_numbers, $params['asn_nos'] ?? []);
                 $this->itemService->createItems($receivingTask, $ans_numbers);

+ 21 - 1
resources/views/store/receivingTasks/create.blade.php

@@ -115,6 +115,7 @@
                                     <input type="text" class="form-control form-control-sm col-12" placeholder=""
                                            name="appointment_number" id="appointment_number"
                                            :class="{'is-invalid':errors.appointment_number}"
+                                           @keydown.enter="getAnsNo"
                                            @change="clearError('appointment_number')"
                                            v-model="receiving_task.appointment_number">
                                     <div id="validation-delivery-appointment-number" class="invalid-feedback"
@@ -462,7 +463,8 @@
                 printerList: [],
                 print_setting: {
                     printer_index: 0,
-                }
+                },
+                appointment_number_asn_nos:[], // 预约号对应的ans号
             },
             mounted() {
                 $("#list").removeClass('d-none');
@@ -567,6 +569,22 @@
                         this.errorTempTip(err);
                     });
                 },
+                getAnsNo(){
+                    let url = "{{route('store.receivingMask.getAsnNumberApi')}}";
+                    this.appointment_number_asn_nos = [];
+                    let data = {
+                        'appointment_number':this.receiving_task.appointment_number,
+                    };
+                    window.axios.post(url,data).then(res => {
+                        if (res.data.success) {
+                            this.appointment_number_asn_nos = res.data.data;
+                            return;
+                        }
+                        this.errorTempTip(res.data.message ? res.data.message : '校验预约号出现异常');
+                    }).catch(err => {
+                        this.errorTempTip(err);
+                    });
+                },
                 formatAsnHeaderDetails(asnHeaderDetails) {
                     return asnHeaderDetails.map(e => this.formatAsnHeaderDetail(e));
                 },
@@ -636,6 +654,8 @@
                         result = {success: false, message: "司机电话不能为空", field: 'driver_phone'};
                     } else if (!appointment_number) {
                         result = {success: false, message: "预约单号不能为空", field: 'appointment_number'};
+                    } else if (this.appointment_number_asn_nos.length === 0){
+                        result = {success: false, message: "预约单号对应的asn单号为空", field: 'appointment_number'};
                     }
                     if (!result.success) return result;
                     if (!logistics_single_number) {

+ 2 - 0
routes/apiLocal.php

@@ -66,6 +66,8 @@ Route::group(['prefix' => 'personnel'], function () {
 Route::prefix('store')->group(function(){
     Route::prefix('receivingMask')->group(function(){
         Route::post("/createApi","ReceivingTaskController@storeApi")->name("store.receivingMask.storeApi");
+        Route::post('/deliveryAppointment/asnNumber','ReceivingTaskController@getAsnByAppointmentNumberApi')
+            ->name('store.receivingMask.getAsnNumberApi');
     });
 });
 Route::prefix('oracle')->group(function(){