Jelajahi Sumber

Merge branch 'master' into yang

ANG YU 4 tahun lalu
induk
melakukan
743cbd6d1a

+ 40 - 0
app/Http/Controllers/TestController.php

@@ -385,6 +385,46 @@ SQL;
     }
     public function test(Request $request)
     {
+        dd((int)ceil(101/8));
+        $codes = ['W123','W124'];
+        $no = "";
+        foreach ($codes as $code){
+            $no .= "'".$code."',";
+        }
+        $no = rtrim($no,',');
+        $sql = <<<SQL
+SELECT WAVENO,COUNT(*) count from DOC_WAVE_DETAILS WHERE WAVENO IN ({$no}) GROUP BY WAVENO
+SQL;
+        dd($sql);
+        $code = 'W211108000002';
+        $batch = null;
+        if (!$code || !$batch = Batch::query()->select("id","split_size")->where("code",$code)->first())$this->error("无记录");
+        $sql = <<<SQL
+SELECT a.ORDERNO,a.QTY,s.ALTERNATE_SKU1 FROM ACT_ALLOCATION_DETAILS a
+    LEFT JOIN DOC_ORDER_HEADER o ON a.ORDERNO = o.ORDERNO
+    LEFT JOIN DOC_WAVE_DETAILS w ON o.ORDERNO = w.ORDERNO
+    LEFT JOIN BAS_SKU s ON a.SKU = s.SKU
+WHERE w.WAVENO = '{$code}' ORDER BY w.SEQNO
+SQL;
+        $orders = DB::connection("oracle")->select(DB::raw($sql));
+        $result = [];
+        $currentList = [];
+        $slowPointer = 0;
+        $nodeSign = "";
+        foreach ($orders as $order){
+            if ($order->orderno!=$nodeSign){
+                if ($slowPointer==$batch->split_size){
+                    $result[] = $currentList;
+                    $currentList = [];
+                    $slowPointer = 0;
+                }
+                $slowPointer++;
+                $nodeSign = $order->orderno;
+            }
+            $currentList[] = ["barcode"=>$order->alternate_sku1,"qty"=>$order->qty];
+        }
+        if ($currentList)$result[] = $currentList;
+        dd($result);
         $request->offsetSet("station_id",'123456789');
         dd($this->process($request));
         echo 'Now memory_get_usage: ' . memory_get_usage() . '<br />';

+ 25 - 10
app/Http/Controllers/WaveController.php

@@ -162,14 +162,29 @@ class WaveController extends Controller
     public function split()
     {
         $codes = \request("codes",[]);
-        $splitSize = \request("splitSize");
-        if (!$codes || !$splitSize)$this->error("无记录");
-        if (!is_numeric($splitSize) || !is_int((int)$splitSize))$this->error("非法输入");
-        $size = Batch::query()->whereIn("code",$codes)->whereNull("split_size")->count();
-        if ($size!=count($codes))$this->error("波次不全或不允许二次分割");
-        Batch::query()->whereIn("code",$codes)->whereNull("split_size")->update([
-            "split_size" => $splitSize
-        ]);
+        $splitSize = \request("split");
+        $splitNumber = \request("number");
+        if (!$codes || (!$splitSize && !$splitNumber))$this->error("无记录");
+        if ((!is_numeric($splitSize) || !is_int((int)$splitSize)) && !is_numeric($splitNumber) || !is_int((int)$splitNumber))$this->error("非法输入");
+        if ($splitSize){
+            $size = Batch::query()->whereIn("code",$codes)->whereNull("split_size")->count();
+            if ($size!=count($codes))$this->error("波次不全或不允许二次分割");
+            Batch::query()->whereIn("code",$codes)->whereNull("split_size")->update([
+                "split_size" => $splitSize
+            ]);
+        }else{
+            $no = "";
+            foreach ($codes as $code){
+                $no .= "'".$code."',";
+            }
+            $no = rtrim($no,',');
+            $sql = <<<SQL
+SELECT WAVENO,COUNT(*) count from DOC_WAVE_DETAILS WHERE WAVENO IN ({$no}) GROUP BY WAVENO
+SQL;
+            foreach (DB::connection("oracle")->select(DB::raw($sql)) as $wave){
+                Batch::query()->where("code",$wave->waveno)->update(["split_size" => (int)ceil($wave->count/$splitNumber)]);
+            };
+        }
         $this->success();
     }
 
@@ -195,13 +210,13 @@ class WaveController extends Controller
     {
         $code = \request("code");
         $batch = null;
-        if (!$code || !$batch = Batch::query()->select("id")->where("code",$code)->first())$this->error("无记录");
+        if (!$code || !$batch = Batch::query()->select("id","split_size")->where("code",$code)->first())$this->error("无记录");
         $sql = <<<SQL
 SELECT a.ORDERNO,a.QTY,s.ALTERNATE_SKU1 FROM ACT_ALLOCATION_DETAILS a
     LEFT JOIN DOC_ORDER_HEADER o ON a.ORDERNO = o.ORDERNO
     LEFT JOIN DOC_WAVE_DETAILS w ON o.ORDERNO = w.ORDERNO
     LEFT JOIN BAS_SKU s ON a.SKU = s.SKU
-WHERE w.WAVENO = '{$code}' ORDER BY w.SEQNO;
+WHERE w.WAVENO = '{$code}' ORDER BY w.SEQNO
 SQL;
         $orders = DB::connection("oracle")->select(DB::raw($sql));
         $result = [];

+ 5 - 0
resources/views/order/wave/_split.blade.php

@@ -7,8 +7,13 @@
             </div>
             <div class="modal-body">
                 <div class="form-group m-5">
+                    <label class="label">按订单大小</label>
                     <input class="form-control" type="number" step="1" v-model="splitSize" placeholder="子波次大小">
                 </div>
+                <div class="form-group m-5">
+                    <label class="label">按波次数量</label>
+                    <input class="form-control" type="number" step="1" v-model="batchNumber" placeholder="子波次大小">
+                </div>
             </div>
             <div class="modal-footer">
                 <button class="col-12 btn btn-primary" @click="splitBatch()">确定</button>

+ 9 - 7
resources/views/order/wave/picking.blade.php

@@ -24,11 +24,11 @@
                     <input id="barcode" v-model="barcode" @keydown.enter="searchBarcode()" class="form-control form-control-sm rounded-pill col-6 offset-2" placeholder="条码"></input>
                 </div>
                 <div class="card-body">
-                    <div class="row border-info" style="height:60vh;overflow-y: auto">
-                        <div class="col-5 m-2 p-0" style="height: 80px;border: 1px solid #aaaaaa;z-index:100;position:relative;" v-for="index in waves.length"
-                             :style="[waveQtyMap['_'+(index-1)] && waveQtyMap['_'+(index-1)]>0 ? {boxShadow: '0 0 5px 5px rgba(19,193,137)'} : '']">
-                            <div class="text-center small font-weight-bold text-secondary">@{{ batch+'-'+index }}</div>
-                            <div style="display:flex;align-items:center;justify-content:center;" class="w-100 h-75 text-primary font-weight-bold">
+                    <div class="row border-info p-0" style="height:60vh;overflow-y: auto">
+                        <div class="col-4 m-0" style="height: 50px;border: 1px solid #aaaaaa;z-index:100;position:relative;" v-for="index in waves.length"
+                             :style="[waveQtyMap['_'+(index-1)] && waveQtyMap['_'+(index-1)]>0 ? {boxShadow: 'rgba(19,193,137) 0 0 5px 5px inset'} : '']">
+                            <div class="text-center small font-weight-bold text-secondary">@{{ 'W-'+index }}</div>
+                            <div style="display:flex;align-items:center;justify-content:center;" class="w-100 h-50 text-primary font-weight-bold">
                                 @{{ waveQtyMap['_'+(index-1)] ? waveQtyMap['_'+(index-1)] : '0' }}
                             </div>
                         </div>
@@ -52,6 +52,7 @@
             el:"#container",
             data:{
                 batch:"",
+                barcode:"",
                 isShow:false,
                 waves:[],
                 waveQtyMap:{},
@@ -99,8 +100,9 @@
                         })
                     })
                     this.waveQtyMap = waveQtyMap;
-                    this.barcode = "";
-                    $("#barcode").focus();
+                    let el = $("#barcode");
+                    el.focus();
+                    el.select();
                 },
             }
         });

+ 7 - 2
resources/views/order/wave/search.blade.php

@@ -138,6 +138,7 @@
                 selectTr:'',
                 batchCodes:"",
                 splitSize:"",
+                batchNumber:"",
                 infoShow:false,
                 splitGroupBySize:{},
             },
@@ -286,15 +287,19 @@
                 },
                 splitBatch(){
                     window.tempTip.setDuration(2000);
+                    window.tempTip.setIndex(999);
                     if (this.checkData.length<1){
                         window.tempTip.show("未选中记录行");
                         return;
                     }
-                    if (!this.splitSize){
+                    if (!this.splitSize && !this.batchNumber){
                         window.tempTip.show("未输入分割大小");
                         return;
                     }
-                    window.tempTip.postBasicRequest("{{url('order/wave/split')}}",{codes:this.checkData,split:this.splitSize},res=>{})
+                    window.tempTip.postBasicRequest("{{url('order/wave/split')}}",{codes:this.checkData,split:this.splitSize,number:this.batchNumber},res=>{
+                        $("#splitBatch").modal('hide');
+                        return "分割成功";
+                    },true)
                 },
                 exePrint(){
                     window.tempTip.setDuration(2000);