haozi пре 4 година
родитељ
комит
d608efb9ad

+ 12 - 0
app/Http/Controllers/HandInStorageController.php

@@ -68,5 +68,17 @@ class HandInStorageController extends Controller
         else $this->error('无效条码');
     }
 
+    public function fluxHandIn(Request $request)
+    {
+        $info=$request->input('info');
+//        dd($info);
+        if (!$info['customerid']||!$info['sku']||!$info['asnno']) $this->error('参数错误');
+        if ($info['amount']+$info['receivedqty']>$info['expectedqty'])$this->error('收货数大于预期数');
+        /** @var HandInStorageService $handInStorageService  */
+        $handInStorageService=app('HandInStorageService');
+        $handInStorageService->fluxHandIn($info);
+//        dd($result,"111");
+    }
+
 
 }

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

@@ -105,6 +105,7 @@ use App\ValueStore;
 use App\Waybill;
 use Carbon\Carbon;
 use Carbon\CarbonPeriod;
+use Cassandra\Uuid;
 use ChangeColumnOrderIdToOrderIssues;
 use Doctrine\DBAL\Exception\DatabaseObjectExistsException;
 use Doctrine\DBAL\Query\QueryBuilder;
@@ -1297,4 +1298,9 @@ TEXT;
             app('LogService')->log(__METHOD__,"采购管理-生成月账单报表",json_encode($totalBill));
         }
     }
+
+    public function uuid()
+    {
+        dd(md5( date("Y-m-d H:i:s")));
+    }
 }

+ 281 - 0
app/Services/HandInStorageService.php

@@ -6,11 +6,16 @@ use App\OracleBasCode;
 use App\OracleBasSKU;
 use App\OracleDOCASNDetail;
 use App\OracleDOCASNHeader;
+use App\OracleInvLotAtt;
 use App\Traits\ServiceAppAop;
+use App\ValueStore;
+use Carbon\Carbon;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Collection;
 use Illuminate\Database\Eloquent\Model;
+use Illuminate\Support\Facades\Auth;
 use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\DB;
 
 class HandInStorageService
 {
@@ -109,4 +114,280 @@ class HandInStorageService
                 ->first();
         });
     }
+
+    /**
+     * @throws \Throwable
+     */
+    public function fluxHandIn(array $info)
+    {
+        $lotatt=array_filter($info,function ($key){
+            return strpos($key,'lotatt')===0;
+        },ARRAY_FILTER_USE_KEY);
+        $invlotatt=[];
+        for ($i=1;$i<=8;$i++){$invlotatt["lotatt0{$i}"]=null;}
+        foreach ($invlotatt as $key=>&$item){
+            foreach ($lotatt as $key1=>$item1){
+                if ($key===$key1) $item=$item1;
+            }
+        }
+        $who= 'WAS'.(Auth::user() ? '-'.Auth::user()["name"] : '');
+        $time=Carbon::now()->toDateTimeString();
+//        return DB::connection("oracle")->transaction(function ()use ($info,$invlotatt,$who,$time){
+            //flux 批次号
+//            $lotNum=$this->getOrCreateLotNum($info,$invlotatt,$who,$time);
+//            if (!$lotNum) return false;
+            //flux 创建入库事务
+//            $actTransactionLog=$this->setFluxActTransactionLog($info,$lotNum,$who,$time);
+//            if (!$actTransactionLog)return false;
+            //flux 创建上架任务
+//            $this->setFluxTskTaskListPA($info,$invlotatt, $actTransactionLog, $who, $time);
+            //flux 完善库存余量
+//            $this->updateFluxInv($info,$lotNum,$who,$time,$actTransactionLog);
+            //flux 更新asn_detail 和 asn_header 状态
+            $re=$this->updateFluxAsn($info,$invlotatt,$time,$who);
+            dd($re);
+//            return true;
+//        });
+
+    }
+
+    /**
+     * @throws \Throwable
+     */
+    public function updateFluxAsn(array $info, array $invlotatt, $time, $who): bool
+    {
+        $db=DB::connection("oracle");
+        $asn=OracleDOCASNHeader::query()
+            ->withCount('asnDetails')
+            ->with('asnDetails')
+            ->where('asnno',$info['asnno'])
+            ->first();
+        if (!$asn||!$asn->asnDetails||!$asn->asn_details_count) return false;
+        $asnDetails=$asn->asnDetails;
+        $receiveAsn=null;
+        foreach ($asnDetails as $asnDetail){
+            if ($asnDetail['asnno']==$info['asnno'] &&
+                $asnDetail['asnlineno']==$info['asnlineno'] &&
+                $asnDetail['customerid']==$info['customerid'] &&
+                $asnDetail['sku']==$info['sku']) $receiveAsn=$asnDetail;
+        }
+        return $db->transaction(function ()use($db,$info,$receiveAsn,$invlotatt,$time,$who){
+            if ($receiveAsn && (int)$receiveAsn['receivedqty']+(int)$info['amount']<(int)$receiveAsn['expectedqty']){
+                //asn_detail 收货数量+已收数量<预期数量
+                $db->update(DB::raw("UPDATE DOC_ASN_DETAILS SET linestatus = '30',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ?,
+             lotatt01=?,lotatt02=?,lotatt03=?,lotatt04=?,lotatt05=?,lotatt06=?,lotatt07=?,lotatt08=? WHERE asnno = ?"),
+                    [$time,$who,$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
+                        $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],$info['asnno']]);
+                //asn_header 部分收货状态
+                $db->update(DB::raw("UPDATE DOC_ASN_HEADER SET asnstatus = '30',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ? WHERE asnno = ?"),
+                    [$time,$who,$info['asnno']]);
+            }elseif ($receiveAsn && (int)$receiveAsn['receivedqty']+(int)$info['amount']==(int)$receiveAsn['expectedqty']){
+                //asn_detail 收货数量+已收数量=预期数量
+                $db->update(DB::raw("UPDATE DOC_ASN_DETAILS SET linestatus = '40',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ?,
+             lotatt01=?,lotatt02=?,lotatt03=?,lotatt04=?,lotatt05=?,lotatt06=?,lotatt07=?,lotatt08=? WHERE asnno = ?"),
+                    [$time,$who,$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
+                        $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],$info['asnno']]);
+                //当asn_detail 所有状态都为完全收货是  asn_header 状态修改为 完全收货(asnstatus=40)
+                if (OracleDOCASNDetail::query()->where('asnno',$info['asnno'])->where('linestatus',40)->count()==$asn->asn_details_count){
+                    $db->update(DB::raw("UPDATE DOC_ASN_HEADER SET asnstatus = '40',edittime = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),editwho = ? WHERE asnno = ?"),
+                        [$time,$who,$info['asnno']]);
+                }
+            }
+            return true;
+        });
+    }
+    /**
+     * @throws \Throwable
+     */
+    public function updateFluxInv(array $info, $lotNum, $who, $time, array $actTransactionLog)
+    {
+        $db = DB::connection("oracle");
+        $db->transaction(function ()use ($db,$info,$lotNum,$actTransactionLog,$who,$time){
+            //更新 inv_lot 批次 库存表
+            $invLot=$db->selectOne(DB::raw("SELECT * FROM INV_LOT WHERE lotnum = ? AND customerid = ? AND sku = ? "),[
+                $lotNum,$info['customerid'],$info['sku']
+            ]);
+            if ($invLot)$db->update(DB::raw("UPDATE INV_LOT SET qty = qty+?,edittime=?,editwho=? WHERE lotnum = ? AND customerid = ? AND sku = ?"),[
+                (int)$info['amount'],$time,$who,$lotNum,$info['customerid'],$info['sku'],
+            ]);
+            else $db->insert(DB::raw("INSERT INTO INV_LOT VALUES(?,?,?,?,0,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?)"),[
+                $lotNum,$info['customerid'],$info['sku'],$info['amount'],$time,$who, $time,$who
+            ]);
+            //更新 inv_lot_loc_id 批次/库位/跟踪号 库存表
+            $invLotId = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = ? FOR UPDATE"),[
+                $lotNum,$actTransactionLog['location'],$actTransactionLog['customerid'],$actTransactionLog['sku'],$actTransactionLog['trackid']
+            ]);
+
+            if ($info['location']){ //存在目标库位
+                $invLotIdHasPreLocation = $db->selectOne(DB::raw("SELECT * FROM inv_lot_loc_id WHERE lotnum = ? AND locationid = ? AND customerid = ? AND sku = ? AND traceid = ? FOR UPDATE"),[
+                    $lotNum,$info['location'],$actTransactionLog['customerid'],$actTransactionLog['sku'],$actTransactionLog['trackid']
+                ]);
+
+                if ($invLotIdHasPreLocation)$db->update(DB::raw("UPDATE inv_lot_loc_id SET qtypa = qtypa+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
+                    (int)$info['amount'],$time,$who,$lotNum,$info['location'],$actTransactionLog['trackid']
+                ]);
+                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',?,null)"),[
+                    $lotNum,$info['location'],$actTransactionLog['trackid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],0,$time,$who,$time,$who,(int)$info['amount']
+                ]);
+
+                if ($invLotId)$db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty+?,qtymvout = qtymvout+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
+                    (int)$info['amount'],(int)$info['amount'],$time,$who,$lotNum,$actTransactionLog['location'],$actTransactionLog['trackid']
+                ]);
+                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,?,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',0,null)"),[
+                    $lotNum,$actTransactionLog['location'],$actTransactionLog['trackid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],(int)$info['amount'],(int)$info['amount'],
+                    $time,$who,$time,$who,
+                ]);
+
+            }else{
+                if ($invLotId)$db->update(DB::raw("UPDATE inv_lot_loc_id SET qty = qty+?,edittime=?,editwho=? WHERE lotnum = ? AND locationid = ? AND traceid = ?"),[
+                    (int)$info['amount'],$time,$who,$lotNum,$actTransactionLog['location'],$actTransactionLog['trackid']
+                ]);
+                else $db->insert(DB::raw("INSERT INTO inv_lot_loc_id VALUES(?,?,?,?,?,?,0,0,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,0,'*',0,null)"),[
+                    $lotNum,$actTransactionLog['location'],$actTransactionLog['trackid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],(int)$info['amount'],$time,$who,$time,$who,
+                ]);
+            }
+        });
+    }
+
+    /**
+     * @throws \Throwable
+     */
+    public function setFluxTskTaskListPA(array $info, array $invlotatt, $actTransactionLog, $who, $time)
+    {
+        $db = DB::connection("oracle");
+        $db->transaction(function ()use ($db,$info,$invlotatt,$actTransactionLog,$who,$time){
+            $sql = <<<sql
+INSERT INTO TSK_TASKLISTS VALUES(?,'1','PA',?,?,'ASN',?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,null,null,?,?,?,?,?,?,?,?,null,null,null,null,
+    0,0,0,0,null,?,null,null,null,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),null,null,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),'N',null,null,
+    ?,?,?,'N',null,?,'*',null,null,null,'N',null,null)
+sql;
+            $db->insert(DB::raw($sql),[
+                $actTransactionLog['tsid'],$actTransactionLog['customerid'],$actTransactionLog['sku'],$actTransactionLog['docno'],$actTransactionLog['doclineno'],
+                $actTransactionLog['lotNum'],$actTransactionLog['packid'],'EA',$info['amount'],$info['amount'],$actTransactionLog['location'],$actTransactionLog['location'],
+                $actTransactionLog['trackid'],$actTransactionLog['lotNum'],$actTransactionLog['packid'],'EA',$info['amount'],$info['amount'],
+                $info['location'],$info['location'],$actTransactionLog['trackid'],'00','Putaway Task','3',$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
+                $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],$actTransactionLog['trid'],$who,$time,null,null,null,null,
+                $actTransactionLog['userdefine1'],$actTransactionLog['userdefine2'],$actTransactionLog['userdefine3'],$actTransactionLog['warehouseid']
+            ]);
+        });
+    }
+
+    /**
+     * @param array $info
+     * @param $lotNum
+     * @param $who
+     * @param $time
+     * @return mixed
+     * @throws \Throwable
+     * 创建入库事务
+     */
+    public function setFluxActTransactionLog(array $info,$lotNum,$who,$time)
+    {
+        $db = DB::connection("oracle");
+        return $db->transaction(function ()use ($db,$info,$lotNum,$time,$who){
+            if ($info['trackNumber'])$trackNumber=$info['trackNumber'];
+            else $trackNumber=substr(md5($time),0,30);
+            $asnHeader=OracleDOCASNHeader::query()->where('asnno',$info['asnno'])->first();
+            $asnDetail=OracleDOCASNDetail::query()->where('asnno',$info['asnno'])->where('sku',$info['sku'])->first();
+            $sql = <<<sql
+INSERT INTO ACT_TRANSACTION_LOG VALUES(?,'IN',?,?,?,?,'ASN',?,?,?,?,?,?,?,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,
+TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,0,0,0,0,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,?,null,null,null,?,?,?,?,?,?,?,?,
+?,?,?,?,'1','Y',null,?,?,?,?,null,null,?,null,null)
+sql;
+            list($trid,$max) = app('StorageService')->getTrNumber();
+            list($tsid,$max) = $this->getTsNum();
+            $db->insert(DB::raw($sql),[
+                $trid,$asnDetail->customerid,$asnDetail->sku,
+                $asnDetail->asnno,$asnDetail->asnlineno,$lotNum,$asnDetail->receivinglocation,'*',$asnDetail->packid,'EA',$info['amount'],$info['amount'],'99',$time,$who,
+                $time,$who,$time,$asnDetail->customerid,$asnDetail->sku,$trackNumber,$asnDetail->receivinglocation,$who,$asnDetail->packid,'EA',$info['amount'],$info['amount'],$lotNum,
+                '*','0','N',$tsid,substr($asnDetail->receivinglocation,-4),$asnHeader->userdefine1,$asnHeader->userdefine2,
+                $asnHeader->userdefine3,'O'
+            ]);
+            app('StorageService')->setTrNumber();
+            $this->setTsNum();
+            $actTransactionLog=[
+                'trid'=>$trid,'docno'=>$asnDetail->asnno,'customerid'=>$asnDetail->customerid,'sku'=>$asnDetail->sku,'doclineno'=>$asnDetail->asnlineno,'lotNum'=>$lotNum,'location'=>$asnDetail->receivinglocation,
+                'packid'=>$asnDetail->packid,'tsid'=>$tsid,'warehouseid'=>substr($asnDetail->receivinglocation,-4),'userdefine1'=>$asnHeader->userdefine1,'userdefine2'=>$asnHeader->userdefine2,
+                'userdefine3'=>$asnHeader->userdefine3,'trackid'=>$trackNumber
+            ];
+            return $actTransactionLog;
+        });
+    }
+    /**
+     * @param array $info
+     * @return mixed
+     * @throws \Throwable
+     * 或去flux 批次号
+     */
+    public function getOrCreateLotNum(array $info,array $invlotatt,$who,$time)
+    {
+        $invlotatt['customerid']=$info['customerid'];
+        $invlotatt['sku']=$info['sku'];
+        //根据批次规则查询或新建批次
+        $lotnum=OracleInvLotAtt::query()->where($invlotatt)->value('lotnum');
+        if ($lotnum) return $lotnum;
+
+        $db = DB::connection("oracle");
+        list($num,$max)=$this->getLtNum();
+        return $db->transaction(function ()use($db,$info,$invlotatt,$num,$who,$time){
+           $sql = <<<sql
+INSERT INTO INV_LOT_ATT VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,
+TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?,TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),?)
+sql;
+           $db->insert(DB::raw($sql),[
+               $num,$info['customerid'],$info['sku'],$invlotatt['lotatt01'],$invlotatt['lotatt02'],$invlotatt['lotatt03'],$invlotatt['lotatt04'],
+               $invlotatt['lotatt05'],$invlotatt['lotatt06'],$invlotatt['lotatt07'],$invlotatt['lotatt08'],null,null,null,null,$time,$who,$time,$who,$time,null
+           ]);
+           $this->setLtNum();
+           return $num;
+       });
+
+    }
+
+    /**
+     * 获取批次号
+     * @return array
+     */
+    private function getLtNum()
+    {
+        $val = ValueStore::query()->select("value")->where("name","flux_lt_number")->lockForUpdate()->first();
+        if (!$val)$val = ValueStore::query()->create(["name"=>"flux_lt_number","value"=>'0']);
+        $max = $val->value+1;
+        $number = sprintf("%07d", $max);
+        return array ('WLT'.$number,$max);
+    }
+
+    /**
+     * 设置批次号
+     */
+    private function setLtNum()
+    {
+        ValueStore::query()
+            ->select("value")
+            ->where("name","flux_lt_number")
+            ->update(["value"=>DB::raw("value+1")]);
+    }
+    /**
+     * 获取批次号
+     * @return array
+     */
+    private function getTsNum()
+    {
+        $val = ValueStore::query()->select("value")->where("name","flux_ts_number")->lockForUpdate()->first();
+        if (!$val)$val = ValueStore::query()->create(["name"=>"flux_ts_number","value"=>'0']);
+        $max = $val->value+1;
+        $number = sprintf("%07d", $max);
+        return array ('WTS'.$number,$max);
+    }
+
+    /**
+     * 设置批次号
+     */
+    private function setTsNum()
+    {
+        ValueStore::query()
+            ->select("value")
+            ->where("name","flux_ts_number")
+            ->update(["value"=>DB::raw("value+1")]);
+    }
 }

+ 7 - 7
app/Services/StorageService.php

@@ -490,7 +490,7 @@ sql;
                 '*','0','N','*',$task->taskid_sequence,$task->warehouseid,$task->userdefine1,$task->userdefine2,
                 $task->userdefine3,'O'
             ]);
-            $this->setTrNumber($max);
+            $this->setTrNumber();
             $sql = <<<sql
 update TSK_TASKLISTS set TASKPROCESS = '99',REASONCODE = 'OK',PLANTOLOCATION = ?,PLANLOGICALTOSEQUENCE = ?,
 COMPLETED_TRANSACTIONID = ?,OPENWHO = ?,OPENTIME = TO_DATE(?,'yyyy-mm-dd hh24:mi:ss'),
@@ -507,7 +507,8 @@ sql;
         return true;
     }
 
-    private function checkAsn($task)
+    private function
+    checkAsn($task)
     {
         $sql = <<<SQL
 SELECT 1 FROM DOC_ASN_DETAILS WHERE ASNNO = ? AND LINESTATUS != '40'
@@ -559,9 +560,9 @@ SQL;
      *
      * @return array
      */
-    private function getTrNumber()
+    public function getTrNumber()
     {
-        $val = ValueStore::query()->select("value")->where("name","flux_tr_number")->first();
+        $val = ValueStore::query()->select("value")->where("name","flux_tr_number")->lockForUpdate()->first();
         if (!$val)$val = ValueStore::query()->create(["name"=>"flux_tr_number","value"=>'0']);
         $max = $val->value+1;
         $number = sprintf("%09d", $max);
@@ -571,11 +572,10 @@ SQL;
     /**
      * 设置事务现号
      *
-     * @param integer $max
      */
-    private function setTrNumber($max)
+    public function setTrNumber()
     {
-        ValueStore::query()->select("value")->where("name","flux_tr_number")->update(["value"=>(string)((int)$max+1)]);
+        ValueStore::query()->select("value")->where("name","flux_tr_number")->update(["value"=>DB::raw("value+1")]);
     }
 
     /**

+ 32 - 4
resources/views/store/handInStorage/receiveDetailPage.blade.php

@@ -31,12 +31,17 @@
                     </div>
                     <div class="form-group row m-1">
                         <label for="amount" class="text-right text-danger font-weight-bold">实收数量:</label>
-                        <input type="text" class="form-control form-control-sm col-8" id="amount"
+                        <input type="number" class="form-control form-control-sm col-8" id="amount"
                                :class="errors.amount ? 'is-invalid' : ''" v-model="info.amount" @keydown.enter="enterVal($event)">
                         <span class="invalid-feedback offset-3" role="alert" v-if="errors.amount">
                             <strong>@{{ errors.amount[0] }}</strong>
                         </span>
                     </div>
+                    <div class="form-group row m-1">
+                        <label for="location" class="text-right">目标库位:</label>
+                        <input type="text" class="form-control form-control-sm col-8" id="location"
+                               @keydown.enter="enterVal($event)" v-model="info.location">
+                    </div>
                     <div class="form-group row m-1">
                         <label for="trackNumber" class="text-right">托盘号:</label>
                         <input type="text" class="form-control form-control-sm col-8" id="trackNumber"
@@ -149,7 +154,7 @@
                 isAndroid:false,
                 isInit:true,
                 element:[
-                    "sku","amount","trackNumber"
+                    "sku","amount","location","trackNumber"
                 ],
                 selectTr:'',
             },
@@ -227,6 +232,7 @@
                     this.info.name=asnDetail.skudescrc;
                     this.info.expectedqty=asnDetail.expectedqty;
                     this.info.receivedqty=asnDetail.receivedqty;
+                    this.info.asnlineno=asnDetail.asnlineno;
                 },
                 //聚焦 白名单
                 codeFocus(){
@@ -236,6 +242,7 @@
                     let error = {};
                     if (!this.info.sku)error.sku = ["条码必填"];
                     if (!this.info.amount)error.amount = ["实收数量必填"];
+                    if (this.info.amount && ((Number(this.info.amount)+Number(this.info.receivedqty))>Number(this.info.expectedqty)))error.amount = ["总数不能超过预期数"];
                     if (this.basSku.lot_id && this.basSku.lot_id.lotkey01==='Y' && !this.info.lotatt01) error.lotatt01=["生产日期为选"];
                     if (this.basSku.lot_id && this.basSku.lot_id.lotkey02==='Y' && !this.info.lotatt02) error.lotatt02=["失效日期为选"];
                     if (this.basSku.lot_id && this.basSku.lot_id.lotkey03==='Y' && !this.info.lotatt03) error.lotatt03=["入库日期为选"];
@@ -271,8 +278,29 @@
                     })
                 },
                 ensure(){
-                  this.checkInfo();
-                  console.log(this.info)
+                    this.checkInfo();
+                    this.info.customerid=this.customerid;
+                    this.info.asnno=this.asnno;
+                    console.log( this.info.trackNumber,this.info.location)
+                    if (this.info.trackNumber==''||this.info.trackNumber==null||this.info.trackNumber==undefined)this.info.trackNumber='';
+                    if (this.info.location==''||this.info.location==null||this.info.location==undefined)this.info.location='';
+                    // this.info.trackNumber='';
+                    // this.info.location='';
+                    console.log(this.info)
+                    let url = '{{url('store/handInStorage/fluxHandIn')}}';
+                    window.axios.post(url,{info:this.info})
+                        .then(res=>{
+                            if (res.data.success){
+                                // this.asnDetails=res.data.data;
+                                // this.$forceUpdate()
+                                return;
+                            }
+                            window.tempTip.setDuration(2000);
+                            window.tempTip.show(res.data.data);
+                        }).catch(err=>{
+                        window.tempTip.setDuration(2000);
+                        window.tempTip.show("网络错误:"+err);
+                    })
                 },
             },
         });

+ 1 - 0
routes/web.php

@@ -475,6 +475,7 @@ Route::group(['middleware'=>'auth'],function ($route){
             Route::post('selectAsn','HandInStorageController@selectAsn');
             Route::post('selectAsnDetails','HandInStorageController@selectAsnDetails');
             Route::post('getBasSkuWithLot','HandInStorageController@getBasSkuWithLot');
+            Route::post('fluxHandIn','HandInStorageController@fluxHandIn');
             Route::get('receiveDetailPage/{asnno}/{customerid}','HandInStorageController@receiveDetailPage');
         });
         Route::group(['prefix'=>'fast'],function() {