Просмотр исходного кода

快速入库保留原FLUX接口留做选择,盘收一体实盘不纠正差异数量BUG修复

Zhouzhendong 5 лет назад
Родитель
Сommit
e55b8d6b9f

+ 51 - 5
app/Http/Controllers/StoreCheckingReceiveController.php

@@ -47,7 +47,12 @@ class StoreCheckingReceiveController extends Controller
         if(!Gate::allows('入库管理-盘收一体-盘收-查看')){ return redirect(url('/'));  }
         /** @var StoreCheckingReceiveService $service */
         $service = app('storeCheckingReceiveService');
-        $storeCheckingReceive = $service->find($id);
+        $withs = ['owner','storeCheckingReceiveItems'=>function($query){
+                    $query->with(['commodity'=>function($builder) {
+                        $builder->with('barcodes');
+                    }]);
+                }];
+        $storeCheckingReceive = $service->find($id,$withs);
         $is_show = $request->is_show ?? true;
 
         if ($storeCheckingReceive->owner ?? false){
@@ -68,7 +73,12 @@ class StoreCheckingReceiveController extends Controller
         $goods = $request->goods ?? false;
         if (!($goods["amount"] ?? false))$goods["amount"] = 1;
         if (!$mission_id || !$goods)return ['success'=>false, 'data'=>'参数传递错误!'];
-        $storeCheckingReceive = app('storeCheckingReceiveService')->find($mission_id);
+        $withs = ['owner','storeCheckingReceiveItems'=>function($query){
+            $query->with(['commodity'=>function($builder) {
+                $builder->with('barcodes');
+            }]);
+        }];
+        $storeCheckingReceive = app('storeCheckingReceiveService')->find($mission_id,$withs);
         if (!$storeCheckingReceive)return ['success'=>false, 'data'=>'盘收任务不存在'];
         if ($storeCheckingReceive->status == '已收货')return ['success'=>false, 'data'=>'盘收任务已结束'];
 
@@ -204,7 +214,12 @@ class StoreCheckingReceiveController extends Controller
     public function export(Request $request){
         if(!Gate::allows('入库管理-盘收一体-盘收-查看')){ return redirect(url('/'));  }
         $id = $request->mission_id ?? false;
-        $storeCheckingReceive = app('storeCheckingReceiveService')->find($id);
+        $withs = ['owner','storeCheckingReceiveItems'=>function($query){
+            $query->with(['commodity'=>function($builder) {
+                $builder->with('barcodes');
+            }]);
+        }];
+        $storeCheckingReceive = app('storeCheckingReceiveService')->find($id,$withs);
 
         if (!$storeCheckingReceive) new \Exception('盘收任务不存在');
 
@@ -263,7 +278,12 @@ class StoreCheckingReceiveController extends Controller
         $id = $request->mission_id ?? false;
         if (!$asn || !$id)return ['success'=>false, 'data'=>'传递参数错误'];
 
-        $storeCheckingReceive = app('storeCheckingReceiveService')->find($id);
+        $withs = ['owner','storeCheckingReceiveItems'=>function($query){
+            $query->with(['commodity'=>function($builder) {
+                $builder->with('barcodes');
+            }]);
+        }];
+        $storeCheckingReceive = app('storeCheckingReceiveService')->find($id,$withs);
         if (!$storeCheckingReceive) return ['success'=>false, 'data'=>'未找到此盘点任务!'];
         if ($storeCheckingReceive->status == '已收货')return ['success'=>false, 'data'=>'盘收任务已结束'];
 
@@ -372,8 +392,34 @@ class StoreCheckingReceiveController extends Controller
         if (!$id || !$counted_amount)return ['success'=>false, 'data'=>'参数传递错误!'];
         $item = app('storeCheckingReceiveItemService')->find($id);
         if (!$item)return ['success'=>false, 'data'=>'被盘项不存在'];
-        app('storeCheckingReceiveItemService')->updateFind($item,["counted_amount"=>$counted_amount]);
+        $params = ["counted_amount"=>$counted_amount];
+        if ($item->imported_amount)$params["imported_diff_amount"] = (int)$counted_amount - (int)$item->imported_amount;
+        if ($item->asn_amount)$params["asn_diff_amount"] = (int)$counted_amount - (int)$item->asn_diff_amount;
+        //修改差异状态
+        if ($item->imported_amount || $item->asn_amount){
+            $withs = ['storeCheckingReceiveItems'];
+            $storeCheckingReceive = app('storeCheckingReceiveService')->find($id,$withs);
+            $this->updateDiffStatus($storeCheckingReceive);
+        }
+        app('storeCheckingReceiveItemService')->updateFind($item,$params);
         LogService::log(__METHOD__,"盘点修改实盘数",'item:'.json_encode($item)."update:",$counted_amount);
         return ['success'=>true];
     }
+
+    //修改差异状态
+    private function updateDiffStatus(StoreCheckingReceive $scr){
+        $items = $scr->storeCheckingReceiveItems ?? [];
+        $is_receive_diff = "否";
+        $is_asn_diff = "否";
+        foreach ($items as $item){
+            if ($item->imported_diff_amount)$is_receive_diff = "是";
+            if ($item->asn_diff_amount)$is_asn_diff = "是";
+        }
+        if (($scr->is_receive_diff != $is_receive_diff) || ($scr->is_asn_diff != $is_asn_diff)){
+            $scr->update([
+                "is_receive_diff" => $is_receive_diff,
+                "is_asn_diff" => $is_asn_diff
+            ]);
+        }
+    }
 }

+ 15 - 6
app/Http/Controllers/StoreController.php

@@ -20,6 +20,7 @@ use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Gate;
 use Illuminate\Support\Facades\Validator;
 use Illuminate\View\View;
+use App\Http\Controllers\Api\thirdPart\flux\StoreController as FStoreController;
 
 class StoreController extends Controller
 {
@@ -53,13 +54,14 @@ class StoreController extends Controller
      * @return RedirectResponse|Response|Redirector
      */
     public function store(Request $request)
-    { //TODO 不依赖于FLUX的下发,was主动读取oracle并校验参数,此情况会导致was stores内仅存在已入库单
+    {
         if(!Gate::allows('入库管理-快速入库-录入')){ return redirect(url('/'));  }
         $this->validator($request);
-        $result = $this->quickStorage($request->input('asn_code'),$request->input('quality') == '正品' ? 'ZP' : 'CC',$request->input('depository_code'));
+        if (!$request->test)$result = $this->quickStorage($request->input('asn_code'),$request->input('quality') == '正品' ? 'ZP' : 'CC',$request->input('depository_code'));
+        else $result = $this->quickStorage_temp($request->input('asn_code'),$request->input('quality'),$request->input('depository_code'));
         $response = redirect('store/fast/create');
         if ($result['success'])return redirect('store/fast/create')->with('successTip',$result['data']);
-        else return $response->with('successError',$result['data']);
+        return $response->with('successError',$result['data']);
     }
 
     public function quickStorage_temp($asn,$quality,$depository_code){
@@ -75,7 +77,7 @@ class StoreController extends Controller
         }
         $owner=Owner::query()->where('code',$WMSReflectReceive->CUSTOMERID)->first();
         if (!$owner&&$WMSReflectReceive->CUSTOMERID){
-            $owner=new Warehouse([
+            $owner=new Owner([
                 'name'=>$WMSReflectReceive->CUSTOMERID,
                 'code'=>$WMSReflectReceive->CUSTOMERID
             ]);
@@ -138,7 +140,12 @@ class StoreController extends Controller
         }
         /** @var Store $store */
         $store=Store::with('storeItems')->where('asn_code',$asn)->first();
-        $result=$this->fluxReceiving($asn,$quality=='正品' ? 'ZP' : 'CC',$depository_code);
+        $storeApi=new FStoreController();
+        $result=$storeApi->accomplishToWMS($store,[
+            'quality'=>$quality,
+            'depository_code'=>$depository_code,
+            'follow_code'=>$store['id'],
+        ]);
         if ($result["success"]){
             $store->status='已入库';
             $store->save();
@@ -160,7 +167,9 @@ class StoreController extends Controller
         $query = DB::raw("SELECT * FROM DOC_ASN_HEADER WHERE ASNNO = ?");
         $asn = $db->selectOne($query,[$asnno]);
         if (!$asn) return ['success'=>false, 'data'=>"单据号不存在"];
-        if ((int)$asn->asnstatus >= 40)return ['success'=>false, 'data'=>'单据号已完成收货'];
+        if ($asn->asnstatus != '00')return ['success'=>false, 'data'=>'单据号状态非创建订单'];
+        if (array_search($asn->customerid,array_values(config('stores.owners'))) === false)return ['success'=>false, 'data'=>"不允许该货主快速入库"];
+        if (array_search($asn->asntype,array_values(config('stores.types'))) === false)return ['success'=>false, 'data'=>"该单据类型不允许被入库"];
         $query = DB::raw("SELECT b.ALTERNATE_SKU1,h.WAREHOUSEID,h.asnno,d.ASNLINENO,d.SKUDESCRC,h.CUSTOMERID,d.SKU,d.PACKID,d.RECEIVEDQTY_EACH,d.EXPECTEDQTY_EACH,d.LOTATT01,d.LOTATT02,d.lotatt04,".
             "d.lotatt05,d.lotatt08,d.USERDEFINE1,d.USERDEFINE2,d.USERDEFINE3,d.USERDEFINE4,d.USERDEFINE5,d.RECEIVINGLOCATION FROM DOC_ASN_DETAILS d ".
             " LEFT JOIN BAS_SKU b ON d.CUSTOMERID = b.CUSTOMERID AND d.SKU = b.SKU INNER JOIN DOC_ASN_HEADER h ON d.ASNNO = h.ASNNO WHERE h.ASNNO = ?");

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

@@ -105,8 +105,8 @@ class TestController extends Controller
                      'OUT_Return_Code:'.$result
                  );*/
     public function test4(){
-        $controller = new StoreController();
-        return $controller->fluxReceiving('ASN2010210001',"ZP",null);
+        if (array_search("1",array_values(config('stores'))) === false)return ['success'=>false, 'data'=>"不允许该货主快速入库"];
+        return "SUCCESS";
     }
 
     public function test2(){

+ 5 - 6
app/Services/StoreCheckingReceiveService.php

@@ -35,12 +35,11 @@ Class StoreCheckingReceiveService
         return StoreCheckingReceive::query()->create($params);
     }
 
-    public function find($id){
-        return StoreCheckingReceive::query()->with(['owner','storeCheckingReceiveItems'=>function($query){
-            $query->with(['commodity'=>function($builder){
-                $builder->with('barcodes');
-            }]);
-        }])->find($id);
+
+    public function find($id, array $withs = []){
+        $query = StoreCheckingReceive::query();
+        if ($withs) $query -> with($withs);
+        return $query->find($id);
     }
 
     public function updateFind(StoreCheckingReceive $storeCheckingReceive, array $params){

+ 12 - 0
config/stores.php

@@ -0,0 +1,12 @@
+<?php
+
+return [
+    "owners" => [
+        "笕尚" => "JIANSHANG",
+        "幼岚" => "ALLBLU",
+        "淳钲" => "CHUNZHENG",
+    ],
+    "types" => [
+        'THRK','DBRK','QTRK','HHRK','CGRK'
+    ]
+];

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

@@ -138,6 +138,7 @@
                     el: "#header",
                     column: column,
                     data: _this.storeCheckingReceives,
+                    fixedTop:($('#form_div').height())+2,
                     restorationColumn: 'id',
                 });
                 header.init();

+ 6 - 0
resources/views/store/fast/create.blade.php

@@ -19,6 +19,12 @@
                     @csrf
                     <div class="resource" v-for="num in sum">
 
+                        <div class="form-group row">
+                            <div class="custom-control custom-checkbox offset-4">
+                                <input type="checkbox" class="custom-control-input" id="test" name="test">
+                                <label class="custom-control-label text-primary" for="test">使用FLUX接口快速入库</label>
+                            </div>
+                        </div>
                         <div class="form-group row">
                             <label for="asn_code" class="col-2 col-form-label text-right">ASN编号</label>
                             <div class="col-8">