wugg 2 years ago
parent
commit
07dbb58057
1 changed files with 31 additions and 24 deletions
  1. 31 24
      app/admin/model/GoodStockInfo.php

+ 31 - 24
app/admin/model/GoodStockInfo.php

@@ -32,14 +32,17 @@ class GoodStockInfo extends Model
 				"addtime"=>date("Y-m-d H:i:s"),
 				"updatetime"=>date("Y-m-d H:i:s")
 				];
+			$result=self::insert($data);
 		}else{
 			$total_num = $data["balance_num"]+$num;
 			if($total_num> $data["total_num"]) throw new Exception("批次入库数量超过总数",1006);
-			$data["balance_num"]=$num;
-			$data["updatetime"]=date("Y-m-d H:i:s");
+			$temp=[];
+			$temp["balance_num"]=$num;
+			$temp["updatetime"]=date("Y-m-d H:i:s");
+			$result=self::update($temp,$data);
 		}
 
-		return (new self())->save($data);
+		return $result;
     }
 
 	/**
@@ -58,20 +61,21 @@ class GoodStockInfo extends Model
 		foreach ($arr as $item) {
 			if($num<=0) break;
 			$temp=[];
+			$update=[];
 		    if($item['balance_num']<=$num){
-		    	$item['balance_num'] =0;
-		    	$item['used_num'] +=$item['balance_num'];
+		    	$update['balance_num'] =0;
+		    	$update['used_num']= $item['used_num']+$item['balance_num'];
 		    	$num-=$item['balance_num'];
-		    	$item['updatetime'] =date("Y-m-d H:i:s");
+		    	$update['updatetime'] =date("Y-m-d H:i:s");
 		    	$temp=["bnCode"=>$item['bnCode'],"num"=>$item['balance_num'],"origin_price"=>$item["origin_price"]];
 		    }else{
-				$item['balance_num']-=$num;
-		    	$item['used_num'] +=$num;
+				$update['balance_num']=$item['balance_num']-$num;
+		    	$update['used_num']=$item['used_num']+$num;
 		    	$num=0;
-		    	$item['updatetime'] =date("Y-m-d H:i:s");
+		    	$update['updatetime'] =date("Y-m-d H:i:s");
 		    	$temp=["bnCode"=>$item['bnCode'],"num"=>$num,"origin_price"=>$item["origin_price"]];
 		    }
-			(new self())->save($item);
+			self::update($update,$item);
 		    $list[]=$temp;
 		}
 		return $list;
@@ -86,10 +90,11 @@ class GoodStockInfo extends Model
 	static function CheckBn(int $stockid,string $bn,int $num){
 		$data=self::where(["stockid"=>$stockid,"bnCode"=>$bn])->findOrEmpty()->toArray();
 		if(empty($data)) throw new Exception("未找到Bn库存数据",1006);
-			$data["balance_num"]=$num;
-			$data["total_num"]=$data["used_num"]+$num;
-			$data["updatetime"]=date("Y-m-d H:i:s");
-		return (new self())->save($data);
+			$update=[];
+			$update["balance_num"]=$num;
+			$update["total_num"]=$data["used_num"]+$num;
+			$update["updatetime"]=date("Y-m-d H:i:s");
+		return self::update($update,$data);
     }
 	/**
 	* @param string $orderCode
@@ -140,7 +145,7 @@ class GoodStockInfo extends Model
     	    "num"=>$num,
     	    "addtime"=>date("Y-m-d H:i:s")
     	    ];
-    	return self::name("return_info")->save($return);
+    	return self::name("return_info")->insert($return);
     }
 	/**  调拨专用 需要注意bn总数变化
 	* @param int $stockid 库存id
@@ -152,18 +157,19 @@ class GoodStockInfo extends Model
 	* @throws \think\Exception
  */
 	static function bnStock(int $stockid,string $bnCode,int $num,int $flag=0,float $origin_price=0){
-			$stock =self::where(["stockid"=>$stockid,"bnCode"=>$bnCode])->findOrEmpty()->toArray();
+			$stock =self::where(["stockid"=>$stockid,"bnCode"=>$bnCode])->lock(true)->findOrEmpty()->toArray();
+			$update=[];
 			if($flag==1) {
 				if(empty($stock)|| $stock['balance_num']< $num)
 					throw new Exception("bn库存数不足",1006);
 				else{
-						$stock['balance_num']-=$num;
-						$stock['total_num']-=$num;
-						$stock['updatetime']=date("Y-m-d H:i:s");
+						$update['balance_num']-=$num;
+						$update['total_num']-=$num;
+						$update['updatetime']=date("Y-m-d H:i:s");
 					}
 			}else{
 				if (empty($stock)){
-					$stock=[
+					$update=[
 						"bnCode"=>$bnCode,
 						"stockid"=>$stockid,
 						"total_num"=>$num,
@@ -174,11 +180,12 @@ class GoodStockInfo extends Model
 						"updatetime"=>date("Y-m-d H:i:s")
 						];
 				}else{
-						$stock['balance_num']+=$num;
-						$stock['total_num']+=$num;
-						$stock['updatetime']=date("Y-m-d H:i:s");
+						$update['balance_num']+=$num;
+						$update['total_num']+=$num;
+						$update['updatetime']=date("Y-m-d H:i:s");
 				}
 			}
-			return	(new self())->save($stock);
+
+			return	empty($stock)? self::insert($update): self::update($update,$stock);
 	}
 }