wugg il y a 2 ans
Parent
commit
e17377a1e9

+ 9 - 1
app/admin/controller/After.php

@@ -56,6 +56,10 @@ class After extends Base
         $error =Db::name('result_info')->where(["result_code"=>$errorCode,"is_del"=>0])->find();
         if(empty($error)){
             return error_show(1005,"未找到退货原因数据");
+        }
+         $supplier =Db::name("supplier")->where(["code"=>$goon['supplierNo']])->find();
+        if($supplier==false){
+            return error_show(1005,"未找到商品供应商数据");
         }
         $remark =isset($this->post['remark']) &&$this->post['remark']!=''?trim($this->post['remark']) :"";
         $is_receive =isset($this->post['is_receive']) &&$this->post['is_receive']!==''?intval($this->post['is_receive']):"";
@@ -101,6 +105,8 @@ class After extends Base
                 "apply_name"=>$ri,
                 "cgder"=>$wsm['contactor_name'],
                 "cgderid"=>$wsm['contactor'],
+                "person"=>$supplier['person']??'',
+                "person_id"=>$supplier['personid']??0,
                 'total_num'=>$orderout['send_num'],
                 "error_code"=>$errorCode,
                 "error_num"=>$num,
@@ -204,7 +210,7 @@ class After extends Base
         $condition='';
         if(!empty($role['write']) && $this->uid!=""){
             // $where[]=["a.apply_id","in",$role['write']];
-            $condition .="a.cgderid = {$this->uid} or a.apply_id in (".implode(',',$role['write']).")";
+            $condition .="a.cgderid = {$this->uid} or a.apply_id in (".implode(',',$role['write']).") or a.person_id={$this->uid}";
         }
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["a.apply_id", 'in', get_company_item_user_by_name($company_name)];
@@ -1036,6 +1042,8 @@ class After extends Base
                         "apply_name"=>$info['apply_name'],
                         "cgder"=>$info['cgder'],
                         "cgderid"=>$info['cgderid'],
+                        "person"=>$info['person'],
+                        "person_id"=>$info['person_id'],
                         "contactor"=>$returninfo["contactor"],
                         "mobile"=>$returninfo["mobile"],
                         "addr"=>$returninfo["addr"],

+ 151 - 27
app/admin/controller/Allot.php

@@ -280,10 +280,13 @@ class Allot extends Base
 
             $data=[];
         foreach ($vmp as $k=>$value){
-            $s =Db::name('good_stock')->where(['spuCode'=>$value['good_type_code'],'wsm_code'=>$str['wsm_out']])
-                ->find();
+           $s = Db::name("good_stock_info")->alias("a")
+                     ->leftJoin("good_stock d" ,"d.id=a.stockid")
+                        ->where(['wsm_code' => $str['wsm_out'], 'a.bnCode' => $value['bnCode'], 'd.is_del' => 0])
+                        ->field("a.balance_num,a.origin_price")
+                        ->find();
             if($str['status']<=1) {
-                $value['usable_num'] = $s['usable_stock'];
+                $value['usable_num'] = $s['balance_num']??0;
             }
             $value['error_msg']="";
             $value['good_code']=$value['spuCode']=$value['good_type_code'];
@@ -350,9 +353,12 @@ class Allot extends Base
             $da = Db::name('allot_stock')->where(["id"=>$id,"is_del"=>0])->save($data);
             if($da!=false) {
                 foreach ($dain as $value) {
-                    $st = Db::name("good_stock")->alias("a")->leftJoin("good b" ,"a.spuCode=b.spuCode")
-                        ->where(['wsm_code' => $wsm_out, 'a.spuCode' => $value['spuCode'], 'a.is_del' => 0])
-                        ->field("a.spuCode,wsm_code,usable_stock,wait_out_stock,wait_in_stock,b.good_name")->find();
+                    $st = Db::name("good_stock_info")->alias("a")
+                     ->leftJoin("good_stock d" ,"d.id=a.stockid")
+                    ->leftJoin("good b" ,"d.spuCode=b.spuCode")
+                        ->where(['wsm_code' => $wsm_out, 'a.bnCode' => $value['bnCode'], 'd.is_del' => 0])
+                        ->field("d.spuCode,wsm_code,d.usable_stock,d.wait_out_stock,d.wait_in_stock,b.good_name,a.total_num,a.balance_num,a.origin_price")
+                        ->find();
                     if (empty($st)) {
                         Db::rollback();
                         return error_show(1003, "商品不能为空");
@@ -365,21 +371,23 @@ class Allot extends Base
                         }
                     }
 
-                    if($value['allot_num']>$st['usable_stock']){
+                    if($value['allot_num']>$st['balance_num']){
                         Db::rollback();
-                        return error_show(2000,"库存数量不足");
+                        return error_show(2000,"批次库存数量不足");
                     }
                     $temp = [];
                    isset($value['id'])&&$value['id']!=="" ? $temp['id'] = $value['id']:'';
                     $temp['good_name'] = $st['good_name'];
-                    $temp['good_type_code'] = $value['spuCode'];
+                    $temp['good_type_code'] = $st['spuCode'];
+                    $temp['bnCode'] =$value['bnCode'];
                     $temp['allot_num'] = $value['allot_num'];
-                    $temp['usable_num'] =$st['usable_stock'];
+                    $temp['usable_num'] =$st['balance_num'];
+                    $temp['origin_price'] = $st['origin_price'];
                     $temp['error_num'] = 0;
                     $temp['error_remark'] = "";
                     $temp['allot_code'] = $etid['allot_code'];
                     $temp['stock_num'] = 0;
-                    $temp['good_num']=$st['usable_stock'];
+                    $temp['good_num']=$st['balance_num'];
                     $temp['error_code']="";
                     $temp['is_del']=$value['is_del'];
                     isset($value['id'])&&$value['id']!=="" ? '' :$temp['addtime'] = date("Y-m-d H:i:s");
@@ -392,8 +400,6 @@ class Allot extends Base
                 }
                 $order = ["order_code"=>$etid['allot_code'],"status"=>$etid['status'],"action_remark"=>'',"action_type"=>"edit"];
                 ActionLog::logAdd($this->post['token'],$order,"DBD",$etid['status'],$this->post);
-//                $process=["order_code"=>$etid['allot_code'],"order_id"=>$etid['id'],"order_status"=>$etid['status'],"order_type"=>'DBD',"before_status"=>1];
-//                ProcessOrder::AddProcess($token,$process);
                 Db::commit();
                 return error_show(0, "调拨更新成功");
             }
@@ -455,7 +461,7 @@ class Allot extends Base
                             Db::rollback();
                             return error_show(2000,"超出库存数量");
                         }
-                        $stockinfo = Db::name("good_stock_info")->where(["bnCode"=>$value['bnCode'],"stock_id"=>$stock['id'],"is_del"=>0])->find();
+                        $stockinfo = Db::name("good_stock_info")->where(["bnCode"=>$value['bnCode'],"stockid"=>$stock['id']])->find();
                          if($value['allot_num']>$stockinfo['balance_num']){
                             Db::rollback();
                             return error_show(2000,"超出bn库存数量");
@@ -596,25 +602,20 @@ class Allot extends Base
         if($datainfo>0) {
             $good_data=[];
             foreach ($dain as $value) {
-                $st = Db::name("good_stock")->alias("a")->leftJoin("good b" ,"a.spuCode=b.spuCode")
-                    ->where(['wsm_code' => $al['wsm_out'], 'a.spuCode' => $value['good_code'], 'a.is_del' => 0])
-                    ->field("a.spuCode,wsm_code,usable_stock,wait_out_stock,wait_in_stock,b.good_name")->find();
-                if ($st==false) {
-                    Db::rollback();
-                    return error_show(1003, "未找到商品");
-                }
+//                $st = Db::name("good_stock")->alias("a")->leftJoin("good b" ,"a.spuCode=b.spuCode")
+//                    ->where(['wsm_code' => $al['wsm_out'], 'a.spuCode' => $value['good_code'], 'a.is_del' => 0])
+//                    ->field("a.spuCode,wsm_code,usable_stock,wait_out_stock,wait_in_stock,b.good_name")->find();
+//                if ($st==false) {
+//                    Db::rollback();
+//                    return error_show(1003, "未找到商品");
+//                }
                 $n = Db::name('allot_info')->where(['id'=>$value['id'],'allot_code'=>$al['allot_code'],'is_del'=>0])->find();
                 if($n==false){
                     Db::rollback();
                     return error_show(10032, "未找到盘点信息数据");
                 }
-//                if($value['allot_num']>$st['usable_stock']){
-//                    return error_show(2000,"库存数量不足");
-//                }
                 $temp = [];
                 $temp['error_code']=$value['error_code'];
-                $temp['good_num']=$st['usable_stock'];
-                $temp['usable_num'] = $st['usable_stock'];
                 $temp['error_num'] = $value['error_num'];
                 $temp['error_remark'] = $value['error_remark'];
                 $temp['stock_num']=$n['allot_num']-$value['error_num'];
@@ -740,7 +741,7 @@ public function vesio(){
                     Db::rollback();
                     return error_show(1004, "验货更新失败");
                 }
-                $stoup =GoodStockInfo::bnStock($stock['id'],$value['bnCode'],$value['allot_num'],0,$p['origin_price']);
+                $stoup =GoodStockInfo::bnStock($stock['id'],$p['bnCode'],$p['allot_num'],0,$p['origin_price']);
                 if($stoup==false){
                 	Db::rollback();
                     return error_show(1002,"bn库存数修改失败");
@@ -762,4 +763,127 @@ public function vesio(){
         return error_show(1005,$e->getMessage());
     }
 }
+
+	public function goodlist()
+    {
+        $page = isset($this->post['page']) && $this->post['page'] !== "" ? intval($this->post['page']) : 1;
+        $size = isset($this->post['size']) && $this->post['size'] !== "" ? intval($this->post['size']) : 10;
+        $condtion = [['b.is_del', "=", 0], ['c.is_del', "=", 0],["d.balance_num",">=",0]];
+        $wsmcode = isset($this->post['wsm_code']) && $this->post['wsm_code'] !== "" ? trim($this->post['wsm_code']) : "";
+        if ($wsmcode !== "") {
+            //return error_show(1002,"仓库code不能为空");
+            $condtion[] = ['c.wsm_code', "=", $wsmcode];
+            // $typecode= Db::name("good_stock")->where(["wsm_code"=>$wsmcode,'is_del'=>0])->column("good_type_code");
+        }
+        $goodcode = isset($this->post['good_code']) && $this->post['good_code'] !== "" ? trim($this->post['good_code'])
+            : "";
+        if ($goodcode != "") {
+            // $condtion['a.good_code'] = Db::raw("like '%{$goodcode}%'");
+            $condtion[] = ['b.spuCode', "like", "%{$goodcode}%"];
+        }
+        $good_name = isset($this->post['good_name']) && $this->post['good_name'] !== "" ? trim($this->post['good_name'])
+            : "";
+        if ($good_name != "") {
+            //  $condtion['a.good_name'] = Db::raw("like '%{$good_name}%'");
+            $condtion[] = ['b.good_name', "like", "%{$good_name}%"];
+        }
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] !== "" ? trim($this->post['supplierNo']) : "";
+        if ($supplierNo != "") {
+            $supplier = Db::name("supplier")->where(["code" => $supplierNo])->find();
+            if (empty($supplier)) {
+                return error_show(1004, "未找到供应商信息");
+            }
+            $wsmcode = Db::name("warehouse_info")->where(["is_del" => 0, "supplierNo" => $supplierNo])->column("wsm_code");
+            $condtion[] = ['c.wsm_code', "in", $wsmcode];
+        }
+        $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] !== "" ? trim($this->post['companyNo']) : "";
+        if ($companyNo !== "") {
+            $wsmcode = Db::name("warehouse_info")->where(['companyNo' => $companyNo, "is_del" => 0])->column("wsm_code");
+            $condition[] = ["c.wsm_code", "in", $wsmcode];
+        }
+        $stock_low = isset($this->post['stock_low']) && $this->post['stock_low'] !== "" ? intval($this->post['stock_low'])
+            : "";
+        if ($stock_low != "") {
+            $condtion[] = ['d.balance_num', ">=", $stock_low];
+        }
+        $stock_up = isset($this->post['stock_up']) && $this->post['stock_up'] !== "" ? trim($this->post['stock_up'])
+            : "";
+        if ($stock_up != "") {
+            $condtion[] = ['d.balance_num', "<=", $stock_up];
+        }
+
+        $cat_id = isset($this->post['cat_id']) && $this->post['cat_id'] !== "" ? intval($this->post['cat_id']) : "";
+        if ($cat_id != "") {
+            $at = Db::name('cat')->where(['id' => $cat_id])->find();
+            if (empty($at)) {
+                return error_show(1004, "未找到分类信息");
+            }
+            $cat = manger([$at['id']], $at['level']);
+            $condtion[] = ['b.cat_id', "in", $cat];
+        }
+        $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
+        if ($company_name !== "") $condtion[] = ["b.createrid", 'in', get_company_item_user_by_name($company_name)];
+
+        $count = Db::name("good")
+            ->alias("b")
+            ->join("good_stock c", "c.spuCode=b.spuCode", "left")
+            ->join("good_stock_info d", "c.id=d.stockid", "left")
+            ->where($condtion)
+            ->count();
+        $page >= ceil($count / $size) ? $page = ceil($count / $size) : "";
+        $list = Db::name("good")
+            ->alias("b")
+            ->leftJoin("good_stock c", "c.spuCode=b.spuCode")
+            ->join("good_stock_info d", "c.id=d.stockid", "left")
+            ->leftJoin("depart_user u", "u.uid=b.createrid AND u.is_del=0")
+            ->where($condtion)
+            ->field("b.*,c.id as stock_id,c.usable_stock,c.wait_in_stock,c.wait_out_stock,c.wsm_code,u.uid,u.nickname,u.itemid,d.bnCode,d.balance_num,d.origin_price")
+            ->page($page, $size)
+            ->select()
+            ->toArray();
+
+        $data = [];
+        if ($list) {
+            //品牌信息
+            $brands = Db::name('brand')->whereIn('id', array_column($list, 'brand_id'))->where('is_del', 0)->column('brand_name', 'id');
+            $units = Db::name('unit')->whereIn('id', array_column($list, 'good_unit'))->where('is_del', 0)->column('unit', 'id');
+            $business = Db::name('business')->whereIn('companyNo', array_column($list, 'companyNo'))->where('is_del', 0)->column('company', 'companyNo');
+            foreach ($list as $key => $value) {
+                $supplier = Db::name("supplier")->where(["code" => $value['supplierNo']])->find();
+                $value['supplier_name'] = isset($supplier['name']) ? $supplier['name'] : "";
+                $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b", "a.supplierNo=b.code")->where(["a.wsm_code" => $value['wsm_code']])->field("a.name as wsm_name,b.name,b.code")->find();
+                $value['wsm_name'] = isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name'] : "";
+                $value['wsm_supplier'] = isset($wsmcode['name']) ? $wsmcode['name'] : "";
+                $value['wsm_supplierNo'] = isset($wsmcode['code']) ? $wsmcode['code'] : "";
+                $value['can'] = isset($value['cat_id']) && $value['cat_id'] != 0 ? made($value['cat_id']) : [];
+
+                $value['brand_name'] = isset($brands[$value['brand_id']]) ? $brands[$value['brand_id']] : '';
+                $value['unit'] = isset($units[$value['good_unit']]) ? $units[$value['good_unit']] : '';
+                $value['companyName'] = isset($business[$value['companyNo']]) ? $business[$value['companyNo']] : '';
+                //规格信息
+                $spec = Db::name("good_spec")->where(["spuCode" => $value['spuCode'], "is_del" => 0])->select()->toArray();
+
+                $speclist = [];
+                if (!empty($spec)) {
+                    foreach ($spec as $val) {
+                        $temp = [];
+                        $temp['spec_id'] = $val['spec_id'];
+                        $temp['spec_value_id'] = $val['spec_value_id'];
+                        $sp = Db::name("specs")->where(["id" => $val['spec_id']])->find();
+                        $temp['spec_name'] = isset($sp["spec_name"]) ? $sp["spec_name"] : "";
+                        $spv = Db::name("spec_value")->where(["id" => $val['spec_value_id']])->find();
+                        $temp['spec_value'] = isset($spv["spec_value"]) ? $spv["spec_value"] : "";
+                        $speclist[] = $temp;
+                    }
+                }
+                $value['specinfo'] = $speclist;
+                $value['cgder'] = isset($supplier['person']) ? $supplier['person'] : '';
+                $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
+                $data[] = $value;
+            }
+
+        }
+
+        return app_show(0, "获取成功", ["list" => $data, "count" => $count]);
+    }
 }

+ 274 - 309
app/admin/controller/Check.php

@@ -108,6 +108,7 @@ public function __construct(App $app)
             ->leftJoin("good_stock c", "c.spuCode=b.spuCode")
             ->leftJoin("depart_user u", "u.uid=b.createrid AND u.is_del=0")
             ->where($condtion)
+            ->field("b.*,c.id as stock_id,c.usable_stock,c.wait_in_stock,c.wait_out_stock,c.wsm_code,u.uid,u.nickname,u.itemid")
             ->page($page, $size)
             ->select()
             ->toArray();
@@ -131,7 +132,7 @@ public function __construct(App $app)
                 $value['brand_name'] = isset($brands[$value['brand_id']]) ? $brands[$value['brand_id']] : '';
                 $value['unit'] = isset($units[$value['good_unit']]) ? $units[$value['good_unit']] : '';
                 $value['companyName'] = isset($business[$value['companyNo']]) ? $business[$value['companyNo']] : '';
-
+                $value['bninfo'] =Db::name("good_stock_info")->where([["stockid","=",$value['stock_id']],["balance_num",">",0]])->select()->toArray();
                 //规格信息
                 $spec = Db::name("good_spec")->where(["spuCode" => $value['spuCode'], "is_del" => 0])->select()->toArray();
 
@@ -149,17 +150,8 @@ public function __construct(App $app)
                     }
                 }
                 $value['specinfo'] = $speclist;
-
-                //采购人
-//                $value['cgder'] = Db::name('supplier')
-//                    ->where([
-//                        'code' => $value['supplierNo'],
-//                        'is_del' => 0,
-//                    ])->value('person', '');
                 $value['cgder'] = isset($supplier['person']) ? $supplier['person'] : '';
-
                 $value['company_name'] = implode('/', array_column(GetPart($value['itemid']), 'name'));
-
                 $data[] = $value;
             }
 
@@ -167,295 +159,268 @@ public function __construct(App $app)
 
         return app_show(0, "获取成功", ["list" => $data, "count" => $count]);
     }
-public function list()
-{
-    $page = isset($this->post['page']) && $this->post['page'] !== "" ? intval($this->post['page']) : "1";
-    $size = isset($this->post['size']) && $this->post['size'] !== "" ? intval($this->post['size']) : "10";
-    $where = [['a.is_del',"=",0],['b.is_del',"=",0]];
-    $start= isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
-    if ($start !="") {
-      //  $where["a.addtime"]=Db::raw(">= '{$start}'");
-        $where[]=['a.addtime',">=",$start];
-    }
-    $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] :"";
-    if($end !=""){
-      //  $where["a.addtime"] = Db::raw("<= '{$end}'");
-        $where[]=['a.addtime',"<=",$end];
-    }
-    $check_code = isset($this->post['check_code']) && $this->post['check_code'] !== "" ? trim($this->post['check_code']) : "";
-    if ($check_code !== "") {
-       // $where['a.check_code'] = Db::raw("like '%$check_code%'");
-        $where[]=['a.check_code',"like","%$check_code%"];
-    }
-    $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !== "" ? trim($this->post['wsm_code']) : "";
-    if ($wsm_code  !== "") {
-      //  $where['a.wsm_code'] =  Db::raw("like '%$wsm_code%'");
-        $where[]=['a.wsm_code',"like","%$wsm_code%"];
-    }
-    $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] !== "" ? trim($this->post['apply_name']) : "";
-    if ($apply_name !== "") {
-     //   $where['a.apply_name'] = $apply_name;
-        $where[]=['a.apply_name',"like","%$apply_name%"];
-    }
-    $type = isset($this->post['type']) && $this->post['type'] !== "" ? trim($this->post['type']) : "";
-    if ($type !== "") {
-       // $where['a.type'] = $type;
-        $where[]=['a.type',"=",$type];
-    }
-    $apply_id = isset($this->post['apply_id']) && $this->post['apply_id'] !== "" ? intval($this->post['apply_id']) : "";
-    if ($apply_id!== "") {
-       // $where['a.apply_id'] = $apply_id;
-        $where[]=['a.apply_id',"=",$apply_id];
-    }
-    $status= isset($this->post['status']) && $this->post['status'] !== "" ? intval($this->post['status']) : "";
-    if ($status !== "") {
-       // $where['a.status '] = $status;
-        $where[]=['a.status',"=",$status];
-    }
-    $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] !== "" ? trim($this->post['companyNo']) : "";
-    if ($companyNo !== "") {
-        $condition[]=["a.companyNo ","=",$companyNo ];
-    }
-    $count = Db::name('good_check')->alias('a')->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
-        ->join("supplier v","v.code=b.supplierNo","left")
-        ->where($where)->count();
-    $total = ceil($count / $size);
-    $page = $page <= $total ? $page : $total;
-    $list = Db::name('good_check')->alias('a')->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
-        ->join("supplier v","v.code=b.supplierNo","left")
-        ->field("a.status,a.apply_id,a.apply_name,a.type,a.addtime,a.wsm_code,a.check_code,b.name,a.id,v.name as 'caname',v.code")->where($where)->page($page,$size)->order("a.id desc")->select();
-    $data=[];
-    foreach ($list as $key=>$value){
-        $value['rename'] ='';
-        if($value['apply_id']!=0){
-            $depart = Db::name("depart_user")->alias("a")->leftJoin("company_item b","a.itemid = b.id")->where(['a.uid'=>$value['apply_id'],'a.is_del'=>0])
-                ->column('b.name');
-           // var_dump(Db::name("depart_user")->getLastSql());
-            $value['rename'] =implode(",",$depart);
-        }
-        $data[] = $value;
-    }
-    return app_show(0,"获取成功",['count'=>$count,'list'=>$data]);
-
-    }
-public function goodlist(){
-    $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']) :"1";
-    $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']) :"10";
-    $where = ['is_del'=>0];
-    $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
-    if($id==""){
-        return error_show(1002,"参数id不能为空");
-    }
-    $fo = Db::name('good_check')->alias('a')->join('warehouse_info b',"b.wsm_code=a.wsm_code","left")
-        ->join('supplier c',"c.code=b.supplierNo","left")->field("c.name,c.code,a.*")
-        ->where(['a.id'=>$id,'a.is_del'=>0])->find();
-    if(empty($fo)){
-        return error_show(1003,"未找到盘点信息");
-    }
-    if ($fo['check_code'] !== "") {
-        $where['check_code'] = $fo['check_code'];
-    }
-    $count = Db::name('check_item')->where($where)->count();
-    $total = ceil($count / $size);
-    $page = $page >= $total ?  $total: $page;
-    $list = Db::name('check_item')->where($where)->page($page,$size)->select();
-    return app_show(0,"获取成功",['count'=>$count,'list'=>$list]);
-}
-public function create(){
-    $token =isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
-
-    $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !=="" ? trim($this->post['wsm_code']):"";
-    if($wsm_code==""){
-        return error_show(1002,"盘点仓库编号不能为空");
-    }
-    $type = isset($this->post['type']) && $this->post['type'] !=="" ? intval($this->post['type']) :"";
-    if($type==""){
-        return error_show(1002,"盘点类型不能为空");
-    }
-    $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] !=="" ? trim($this->post['companyNo']) :"";
-    if($companyNo==""){
-        return error_show(1002,"参数companyNo不能为空");
-    }
-    $company =Db::name("business")->where(['companyNo'=>$companyNo,"is_del"=>0])->find();
-    if($company==false){
-        return error_show(1002,"未找到业务公司");
-    }
-    $check_code = makeNo("CK");
-    $apply_id=GetUserInfo($token);
-    if(empty($apply_id)||$apply_id['code']!=0){
-        return error_show(1002,"申请人数据不存在");
-    }
-    $rm= isset($apply_id["data"]['id']) ?  $apply_id["data"]['id'] : "";
-    $ri= isset($apply_id["data"]['nickname']) ?  $apply_id["data"]['nickname'] : "";
-    $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"0";
-    $remark = isset($this->post['remark']) && $this->post['remark'] !=="" ? intval($this->post['remark']) :"";
-    Db::startTrans();
-    try{
-        $data=[
-            "check_code"=>$check_code,
-            "wsm_code"=>$wsm_code,
-            "type"=>$type,
-            "status"=>$status,
-            "companyNo"=>$companyNo,
-            "remark"=>$remark,
-            "apply_id"=>$rm,
-            "apply_name"=>$ri,
-            "is_del"=>0,
-            "addtime"=>date('Y-m-d H:i:s'),
-            "updatetime"=>date("Y-m-d H:i:s")
-        ];
-        $da= Db::name('good_check')->insert($data,true);
-//        $dio=[];
-//        if($da>0){
-//            foreach ($dain as $value){
-//            $st=Db::name("good_type")->alias("b")->join("good a","a.good_code = b.good_code","left")
-//                ->join("good_stock c","c.good_type_code = b.type_code","left")->where(['c.wsm_code'=>$wsm_code,'good_type_code'=>$value['type_code'],'b.is_del'=>0,'a.is_del'=>0])->where("c.is_del=0 or c.is_del is null")
-//                ->field("b.type_code,a.good_name,c.wsm_code,c.wait_in_stock,c.wait_out_stock,c.usable_stock,c.good_type_code,a.original_price")->find();
-//
-//            $temp=[];
-//            $temp['good_name']=$st['good_name'];
-//            $temp['origin_price']=$st['original_price'];
-//            $temp['good_type_code']=$st['good_type_code'];
-//            $temp['origin_num']=$st['usable_stock'];
-//            $temp['check_num']=0;
-//            $temp['diff_num']=0;
-//            $temp['status']=0;
-//            $temp['remark']="";
-//            $temp['is_del']=0;
-//            $temp['check_time']=date('Y-m-d H:i:s');
-//            $temp['check_code']=$check_code;
-//            $temp['addtime']=date("Y-m-d H:i:s");
-//            $temp['updatetime']=date("Y-m-d H:i:s");
-//            $dio[] =$temp;
-//            }
-//            $in= Db::name('check_item')->insertAll($dio);
-//        }
-        if($da){
-            $orde = ["order_code"=>$check_code,"status"=>$data['status'],"action_remark"=>'',"action_type"=>"create"];
-            ActionLog::logAdd($this->post['token'],$orde,'PDD',$data['status'],$orde);
-            $process=["order_code"=>$check_code,"order_id"=>$da,"order_status"=>$data['status'],"order_type"=>'PDD',"before_status"=>$data['status'], 'holder_id' => $data['apply_id']];
-            ProcessOrder::AddProcess($this->post['token'],$process);
-           Db::commit();
-            return error_show(0,"盘点创建成功");
-        }else{
-            Db::rollback();
-           return error_show(1002,"创建失败");
-        }
-    }catch (\Exception $e){
-        Db::rollback();
-        return error_show(1005,$e->getMessage());
-   }
-    }
-public function info(){
-    $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
-    if($id==""){
-        return error_show(1002,"参数id不能为空");
-    }
-    $fo = Db::name('good_check')->alias('a')->join('warehouse_info b',"b.wsm_code=a.wsm_code","left")
-        ->join('supplier c',"c.code=b.supplierNo","left")->field("c.name,c.code,a.*")
-        ->where(['a.id'=>$id,'a.is_del'=>0])->find();
-    if(empty($fo)){
-        return error_show(1003,"未找到盘点信息");
-    }
-    $fi = Db::name('check_item')->where(['check_code'=>$fo['check_code'],'is_del'=>0])->select();
-    $fo['item']=$fi;
-    if(empty($fo)){
-        return error_show(1002,"未找到盘点编号");
-    }else{
-        return app_show(0,"获取成功",$fo);
-    }
-}
-public function edit()
-{
-    $token =isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
-    $id = isset($this->post['id']) && $this->post['id'] !== "" ? intval($this->post['id']) : "";
-    $eid = Db::name('good_check')->where(['id' => $id, 'is_del' => 0])->find();
-    if ($eid ==="") {
-        return error_show(1002, "未找到盘点编号信息");
-    }
-    $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !== "" ? trim($this->post['wsm_code']) : "";
-    if ($wsm_code == "") {
-        return error_show(1002, "盘点仓库不能为空");
-    }
-    $type = isset($this->post['type']) && $this->post['type'] !== "" ? trim($this->post['type']) : "";
-    $remark = isset($this->post['remark']) && $this->post['remark'] !== "" ? trim($this->post['remark']) : "";
-    if ($type == "") {
-        return error_show(1002, "盘点类型不能为空");
-    }
-    $apply_id=GetUserInfo($token);
-    if(empty($apply_id)||$apply_id['code']!=0){
-        return error_show(1002,"申请人数据不存在");
-    }
-    $rm= isset($apply_id["data"]['id']) ?  $apply_id["data"]['id'] : "";
-    $ri= isset($apply_id["data"]['nickname']) ?  $apply_id["data"]['nickname'] : "";
-//    $dain=isset($this->post['good']) && $this->post['good'] !=="" ? $this->post['good']:"";
-//    if($type==2){
-//       // var_dump($dain);
-//        if($dain==""||empty($dain)){
-//            return error_show(1002,"商品不能为空");
-//        }
-//    }else{
-//        if($type==1) {
-//
-//            $dain= Db::name("good_type")->alias("b")->join("good a","a.good_code = b.good_code","left")
-//                ->join("good_stock c","c.good_type_code = b.type_code","left")->where(['c.wsm_code'=>$wsm_code,'b.is_del'=>0,'a.is_del'=>0])->where("c.is_del=0 or c.is_del is null")
-//                ->field("b.type_code,a.good_name")->select();
-//            //var_dump($dain);
-//        }
-//        if($dain==""){
-//            return error_show(1003,"商品不能为空");
-//        }
-//    }
-    Db::startTrans();
-    try {
-        $var = [
-            "wsm_code" => $wsm_code,
-            "type" => $type,
-            "apply_id" => $rm,
-            "apply_name" => $ri,
-            "remark" => $remark,
-            "updatetime" => date("Y-m-d H:i:s")
-        ];
-        $up = Db::name('good_check')->where(['id'=>$id,'is_del' => 0])->save($var);
-//            $dn =[];
-//            if($up>0){
-//                foreach ($dain as $value){
-//                    $st=Db::name("good_type")->alias("b")->join("good a","a.good_code = b.good_code","left")
-//                        ->join("good_stock c","c.good_type_code = b.type_code","left")->where(['c.wsm_code'=>$wsm_code,'good_type_code'=>$value['type_code'],'b.is_del'=>0,'a.is_del'=>0])->where("c.is_del=0 or c.is_del is null")
-//                        ->field("b.type_code,a.good_name,c.wsm_code,c.wait_in_stock,c.wait_out_stock,c.usable_stock,c.good_type_code,a.original_price")->find();
-//                    $temp=[];
-//                    $temp['good_name']=$st['good_name'];
-//                    $temp['origin_price']=$st['original_price'];
-//                    $temp['good_type_code']=$st['good_type_code'];
-//                    $temp['origin_num']=$st['usable_stock'];
-//                    $temp['check_num']=0;
-//                    $temp['diff_num']=0;
-//                    $temp['status']=0;
-//                    $temp['remark']="";
-//                    $temp['is_del']=0;
-//                    $temp['check_time']=date('Y-m-d H:i:s');
-//                    $temp['check_code']=$eid['check_code'];
-//                    $temp['addtime']=date("Y-m-d H:i:s");
-//                    $temp['updatetime']=date("Y-m-d H:i:s");
-//                    $dn[] =$temp;
-//                }
-//                $np = Db::name('check_item')->where(['check_code'=>$eid['check_code'],'is_del'=>0])->update(['is_del'=>1,'updatetime'=>date('Y-m-d H:i:s')]);
-//               $io = db::name('check_item')->insertAll($up);
-               // var_dump(Db::name('check_item')->getLastSql());
-                if ($up) {
-                    $orde = ["order_code"=>$eid['check_code'],"status"=>$eid['status'],"action_remark"=>'',"action_type"=>"edit"];
-                    ActionLog::logAdd($this->post['token'],$orde,'qrd',$eid['status'],$orde);
-                    Db::commit();
-                    return error_show(0, "盘点更新成功");
-                }
+	public function list()
+	{
+	    $page = isset($this->post['page']) && $this->post['page'] !== "" ? intval($this->post['page']) : "1";
+	    $size = isset($this->post['size']) && $this->post['size'] !== "" ? intval($this->post['size']) : "10";
+	    $where = [['a.is_del',"=",0],['b.is_del',"=",0]];
+	    $start= isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
+	    if ($start !="") {
+	      //  $where["a.addtime"]=Db::raw(">= '{$start}'");
+	        $where[]=['a.addtime',">=",$start];
+	    }
+	    $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] :"";
+	    if($end !=""){
+	      //  $where["a.addtime"] = Db::raw("<= '{$end}'");
+	        $where[]=['a.addtime',"<=",$end];
+	    }
+	    $check_code = isset($this->post['check_code']) && $this->post['check_code'] !== "" ? trim($this->post['check_code']) : "";
+	    if ($check_code !== "") {
+	       // $where['a.check_code'] = Db::raw("like '%$check_code%'");
+	        $where[]=['a.check_code',"like","%$check_code%"];
+	    }
+	    $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !== "" ? trim($this->post['wsm_code']) : "";
+	    if ($wsm_code  !== "") {
+	      //  $where['a.wsm_code'] =  Db::raw("like '%$wsm_code%'");
+	        $where[]=['a.wsm_code',"like","%$wsm_code%"];
+	    }
+	    $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] !== "" ? trim($this->post['apply_name']) : "";
+	    if ($apply_name !== "") {
+	     //   $where['a.apply_name'] = $apply_name;
+	        $where[]=['a.apply_name',"like","%$apply_name%"];
+	    }
+	    $type = isset($this->post['type']) && $this->post['type'] !== "" ? trim($this->post['type']) : "";
+	    if ($type !== "") {
+	       // $where['a.type'] = $type;
+	        $where[]=['a.type',"=",$type];
+	    }
+	    $apply_id = isset($this->post['apply_id']) && $this->post['apply_id'] !== "" ? intval($this->post['apply_id']) : "";
+	    if ($apply_id!== "") {
+	       // $where['a.apply_id'] = $apply_id;
+	        $where[]=['a.apply_id',"=",$apply_id];
+	    }
+	    $status= isset($this->post['status']) && $this->post['status'] !== "" ? intval($this->post['status']) : "";
+	    if ($status !== "") {
+	       // $where['a.status '] = $status;
+	        $where[]=['a.status',"=",$status];
+	    }
+	    $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] !== "" ? trim($this->post['companyNo']) : "";
+	    if ($companyNo !== "") {
+	        $condition[]=["a.companyNo ","=",$companyNo ];
+	    }
+	    $count = Db::name('good_check')->alias('a')->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
+	        ->join("supplier v","v.code=b.supplierNo","left")
+	        ->where($where)->count();
+	    $total = ceil($count / $size);
+	    $page = $page <= $total ? $page : $total;
+	    $list = Db::name('good_check')->alias('a')->join("warehouse_info b","a.wsm_code = b.wsm_code","left")
+	        ->join("supplier v","v.code=b.supplierNo","left")
+	        ->field("a.status,a.apply_id,a.apply_name,a.type,a.addtime,a.wsm_code,a.check_code,b.name,a.id,v.name as 'caname',v.code")->where($where)->page($page,$size)->order("a.id desc")->select();
+	    $data=[];
+	    foreach ($list as $key=>$value){
+	        $value['rename'] ='';
+	        if($value['apply_id']!=0){
+	            $depart = Db::name("depart_user")->alias("a")->leftJoin("company_item b","a.itemid = b.id")->where(['a.uid'=>$value['apply_id'],'a.is_del'=>0])
+	                ->column('b.name');
+	           // var_dump(Db::name("depart_user")->getLastSql());
+	            $value['rename'] =implode(",",$depart);
+	        }
+	        $data[] = $value;
+	    }
+	    return app_show(0,"获取成功",['count'=>$count,'list'=>$data]);
 
-        Db::rollback();
-        return error_show(1003,"盘点更新失败");
-    } catch (\Exception $e) {
-        Db::rollback();
-        return error_show(1005, $e->getMessage());
-    }
-}
+	    }
+	public function goodlist(){
+	    $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']) :"1";
+	    $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']) :"10";
+	    $where = ['is_del'=>0];
+	    $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
+	    if($id==""){
+	        return error_show(1002,"参数id不能为空");
+	    }
+	    $fo = Db::name('good_check')->alias('a')->join('warehouse_info b',"b.wsm_code=a.wsm_code","left")
+	        ->join('supplier c',"c.code=b.supplierNo","left")->field("c.name,c.code,a.*")
+	        ->where(['a.id'=>$id,'a.is_del'=>0])->find();
+	    if(empty($fo)){
+	        return error_show(1003,"未找到盘点信息");
+	    }
+	    if ($fo['check_code'] !== "") {
+	        $where['check_code'] = $fo['check_code'];
+	    }
+	    $count = Db::name('check_item')->where($where)->count();
+	    $total = ceil($count / $size);
+	    $page = $page >= $total ?  $total: $page;
+	    $list = Db::name('check_item')->where($where)->page($page,$size)->select();
+	    return app_show(0,"获取成功",['count'=>$count,'list'=>$list]);
+	}
+	public function create(){
+	    $token =isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
+	    $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !=="" ? trim($this->post['wsm_code']):"";
+	    if($wsm_code==""){
+	        return error_show(1002,"盘点仓库编号不能为空");
+	    }
+	    $type = isset($this->post['type']) && $this->post['type'] !=="" ? intval($this->post['type']) :"";
+	    if($type==""){
+	        return error_show(1002,"盘点类型不能为空");
+	    }
+	    $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] !=="" ? trim($this->post['companyNo']) :"";
+	    if($companyNo==""){
+	        return error_show(1002,"参数companyNo不能为空");
+	    }
+	    $company =Db::name("business")->where(['companyNo'=>$companyNo,"is_del"=>0])->find();
+	    if($company==false){
+	        return error_show(1002,"未找到业务公司");
+	    }
+	    $check_code = makeNo("CK");
+	    $apply_id=GetUserInfo($token);
+	    if(empty($apply_id)||$apply_id['code']!=0){
+	        return error_show(1002,"申请人数据不存在");
+	    }
+	    $rm= isset($apply_id["data"]['id']) ?  $apply_id["data"]['id'] : "";
+	    $ri= isset($apply_id["data"]['nickname']) ?  $apply_id["data"]['nickname'] : "";
+	    $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"0";
+	    $remark = isset($this->post['remark']) && $this->post['remark'] !=="" ? intval($this->post['remark']) :"";
+	    Db::startTrans();
+	    try{
+	        $data=[
+	            "check_code"=>$check_code,
+	            "wsm_code"=>$wsm_code,
+	            "type"=>$type,
+	            "status"=>$status,
+	            "companyNo"=>$companyNo,
+	            "remark"=>$remark,
+	            "apply_id"=>$rm,
+	            "apply_name"=>$ri,
+	            "is_del"=>0,
+	            "addtime"=>date('Y-m-d H:i:s'),
+	            "updatetime"=>date("Y-m-d H:i:s")
+	        ];
+	        $da= Db::name('good_check')->insert($data,true);
+	        if($da){
+	            $orde = ["order_code"=>$check_code,"status"=>$data['status'],"action_remark"=>'',"action_type"=>"create"];
+	            ActionLog::logAdd($this->post['token'],$orde,'PDD',$data['status'],$orde);
+	            $process=["order_code"=>$check_code,"order_id"=>$da,"order_status"=>$data['status'],"order_type"=>'PDD',"before_status"=>$data['status']];
+	            ProcessOrder::AddProcess($this->post['token'],$process);
+	           Db::commit();
+	            return error_show(0,"盘点创建成功");
+	        }else{
+	            Db::rollback();
+	           return error_show(1002,"创建失败");
+	        }
+	    }catch (\Exception $e){
+	        Db::rollback();
+	        return error_show(1005,$e->getMessage());
+	   }
+	    }
+	public function info(){
+	    $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
+	    if($id==""){
+	        return error_show(1002,"参数id不能为空");
+	    }
+	    $fo = Db::name('good_check')->alias('a')->join('warehouse_info b',"b.wsm_code=a.wsm_code","left")
+	        ->join('supplier c',"c.code=b.supplierNo","left")->field("c.name,c.code,a.*")
+	        ->where(['a.id'=>$id,'a.is_del'=>0])->find();
+	    if(empty($fo)){
+	        return error_show(1003,"未找到盘点信息");
+	    }
+	    $fi = Db::name('check_item')->where(['check_code'=>$fo['check_code'],'is_del'=>0])->select();
+	    $fo['item']=$fi;
+	    if(empty($fo)){
+	        return error_show(1002,"未找到盘点编号");
+	    }else{
+	        return app_show(0,"获取成功",$fo);
+	    }
+	}
+	public function edit()
+	{
+	    $token =isset($this->post['token']) && $this->post['token'] !=="" ? trim($this->post['token']) :"";
+	    $id = isset($this->post['id']) && $this->post['id'] !== "" ? intval($this->post['id']) : "";
+	    $eid = Db::name('good_check')->where(['id' => $id, 'is_del' => 0])->find();
+	    if ($eid ==="") {
+	        return error_show(1002, "未找到盘点编号信息");
+	    }
+	    $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] !== "" ? trim($this->post['wsm_code']) : "";
+	    if ($wsm_code == "") {
+	        return error_show(1002, "盘点仓库不能为空");
+	    }
+	    $type = isset($this->post['type']) && $this->post['type'] !== "" ? trim($this->post['type']) : "";
+	    $remark = isset($this->post['remark']) && $this->post['remark'] !== "" ? trim($this->post['remark']) : "";
+	    if ($type == "") {
+	        return error_show(1002, "盘点类型不能为空");
+	    }
+	    $apply_id=GetUserInfo($token);
+	    if(empty($apply_id)||$apply_id['code']!=0){
+	        return error_show(1002,"申请人数据不存在");
+	    }
+	    $rm= isset($apply_id["data"]['id']) ?  $apply_id["data"]['id'] : "";
+	    $ri= isset($apply_id["data"]['nickname']) ?  $apply_id["data"]['nickname'] : "";
+	//    $dain=isset($this->post['good']) && $this->post['good'] !=="" ? $this->post['good']:"";
+	//    if($type==2){
+	//       // var_dump($dain);
+	//        if($dain==""||empty($dain)){
+	//            return error_show(1002,"商品不能为空");
+	//        }
+	//    }else{
+	//        if($type==1) {
+	//
+	//            $dain= Db::name("good_type")->alias("b")->join("good a","a.good_code = b.good_code","left")
+	//                ->join("good_stock c","c.good_type_code = b.type_code","left")->where(['c.wsm_code'=>$wsm_code,'b.is_del'=>0,'a.is_del'=>0])->where("c.is_del=0 or c.is_del is null")
+	//                ->field("b.type_code,a.good_name")->select();
+	//            //var_dump($dain);
+	//        }
+	//        if($dain==""){
+	//            return error_show(1003,"商品不能为空");
+	//        }
+	//    }
+	    Db::startTrans();
+	    try {
+	        $var = [
+	            "wsm_code" => $wsm_code,
+	            "type" => $type,
+	            "apply_id" => $rm,
+	            "apply_name" => $ri,
+	            "remark" => $remark,
+	            "updatetime" => date("Y-m-d H:i:s")
+	        ];
+	        $up = Db::name('good_check')->where(['id'=>$id,'is_del' => 0])->save($var);
+	//            $dn =[];
+	//            if($up>0){
+	//                foreach ($dain as $value){
+	//                    $st=Db::name("good_type")->alias("b")->join("good a","a.good_code = b.good_code","left")
+	//                        ->join("good_stock c","c.good_type_code = b.type_code","left")->where(['c.wsm_code'=>$wsm_code,'good_type_code'=>$value['type_code'],'b.is_del'=>0,'a.is_del'=>0])->where("c.is_del=0 or c.is_del is null")
+	//                        ->field("b.type_code,a.good_name,c.wsm_code,c.wait_in_stock,c.wait_out_stock,c.usable_stock,c.good_type_code,a.original_price")->find();
+	//                    $temp=[];
+	//                    $temp['good_name']=$st['good_name'];
+	//                    $temp['origin_price']=$st['original_price'];
+	//                    $temp['good_type_code']=$st['good_type_code'];
+	//                    $temp['origin_num']=$st['usable_stock'];
+	//                    $temp['check_num']=0;
+	//                    $temp['diff_num']=0;
+	//                    $temp['status']=0;
+	//                    $temp['remark']="";
+	//                    $temp['is_del']=0;
+	//                    $temp['check_time']=date('Y-m-d H:i:s');
+	//                    $temp['check_code']=$eid['check_code'];
+	//                    $temp['addtime']=date("Y-m-d H:i:s");
+	//                    $temp['updatetime']=date("Y-m-d H:i:s");
+	//                    $dn[] =$temp;
+	//                }
+	//                $np = Db::name('check_item')->where(['check_code'=>$eid['check_code'],'is_del'=>0])->update(['is_del'=>1,'updatetime'=>date('Y-m-d H:i:s')]);
+	//               $io = db::name('check_item')->insertAll($up);
+	               // var_dump(Db::name('check_item')->getLastSql());
+	                if ($up) {
+	                    $orde = ["order_code"=>$eid['check_code'],"status"=>$eid['status'],"action_remark"=>'',"action_type"=>"edit"];
+	                    ActionLog::logAdd($this->post['token'],$orde,'qrd',$eid['status'],$orde);
+	                    Db::commit();
+	                    return error_show(0, "盘点更新成功");
+	                }
+	        Db::rollback();
+	        return error_show(1003,"盘点更新失败");
+	    } catch (\Exception $e) {
+	        Db::rollback();
+	        return error_show(1005, $e->getMessage());
+	    }
+	}
 
     /**
      * @return \think\response\Json|void
@@ -557,12 +522,12 @@ public function edit()
         if(empty($fo)){
             return error_show(1003,"未找到盘点信息");
         }
-        $list = Db::name("good_basic")->alias("b")
-            ->join("good_stock c","c.spuCode=b.spuCode","left")
-            ->join("good_stock_info d","c.id=d.stock_id and d.balance_num>0","left")
-            ->where(['c.wsm_code'=>$fo['wsm_code'],"b.is_del"=>0,"c.is_del"=>0])->field("d.bnCode,b.spuCode'商品编码',
+        $list = Db::name("good_stock_info")->alias("d")
+            ->join("good_stock c","c.id=d.stockid and d.balance_num>0","left")
+            ->join("good b","c.spuCode=b.spuCode","left")
+            ->where(['c.wsm_code'=>$fo['wsm_code'],"b.is_del"=>0,"c.is_del"=>0])->field("d.bnCode '商品批次号',b.spuCode'商品编码',
             b.good_name '商品名称',b.craft_desc '商品描述',b.brand_id '品牌',b.good_unit '单位',b.supplierNo '供应商编码','' as '供应商名称','' as  '一级分类','' as '二级分类','' as  '三级分类',
-            b.addtime '新建时间',c.wsm_code '仓库编码','' as '仓库名称',c.usable_stock '可用总库存',d.balance_num 'bn库存数','' as '盘点库存'")
+            b.addtime '新建时间',c.wsm_code '仓库编码','' as '仓库名称',c.usable_stock '可用总库存',d.balance_num '批次库存数','' as '盘点库存'")
             ->select();
         $data=[];
         foreach ($list as $key=>$value){
@@ -606,13 +571,13 @@ public function edit()
         $insert=[];
         foreach ($data as $value){
             if($value["value0"]==""){
-                return error_show(1003,"商品编号不能为空");
+                return error_show(1003,"商品批次编号不能为空");
             }
-            if($value["value14"]===""){
+            if($value["value16"]===""){
                 continue;
             }
             $stock = Db::name("good_stock")->alias("a")
-            ->join("good_stock_info b","a.id=b.stock_id","left")
+            ->join("good_stock_info b","a.id=b.stockid","left")
             ->where(["a.spuCode"=>$value["value1"],"wsm_code"=>$fo['wsm_code'],"bnCode"=>$value['value0'],"is_del"=>0])->find();
             $stock_num = isset($stock) ? $stock['balance_num']:0;
             $insert[]=[
@@ -621,9 +586,9 @@ public function edit()
                 "good_name"=>$value["value2"],
                 "origin_price"=>0,
                 "origin_num"=>isset($stock) ? $stock['balance_num']:0,
-                "check_num"=>$value["value14"],
-                "is_profit"=>intval($value["value14"])>=$stock_num ?0:1,
-                "diff_num"=>intval($value["value14"])>=$stock_num ?intval($value["value14"])-$stock_num:$stock_num-intval($value["value14"]),
+                "check_num"=>$value["value16"],
+                "is_profit"=>intval($value["value16"])>=$stock_num ?0:1,
+                "diff_num"=>intval($value["value16"])>=$stock_num ?intval($value["value16"])-$stock_num:$stock_num-intval($value["value16"]),
                 'addtime'=>date("Y-m-d H:i:s"),
                 'updatetime'=>date("Y-m-d H:i:s"),
                 "check_code"=>$fo['check_code']

+ 1 - 1
app/admin/controller/Orderback.php

@@ -68,7 +68,7 @@ class Orderback extends Base
         $condition='';
         if(!empty($role['write']) && $this->uid!=""){
             // $where[]=["a.apply_id","in",$role['write']];
-            $condition .="cgderid = {$this->uid} or apply_id in (".implode(',',$role['write']).")";
+            $condition .="cgderid = {$this->uid} or apply_id in (".implode(',',$role['write']).") or person_id={$this->uid}";
         }
 //        if(!empty($role['platform']) ){
 //            $where[]=["platform_id","in",$role['platform']];

+ 139 - 151
app/admin/controller/Reorder.php

@@ -85,6 +85,8 @@ class Reorder extends Base
                 "apply_name"=>$ri,
                 "cgderid"=>$goon['createrid'],
                 "cgder"=>$goon['creater'],
+                "person"=>$supplier['person']??'',
+                "person_id"=>$supplier['personid']??0,
                 "error_code"=>$errorCode,
                 "num"=>$thnum,
                 "total_fee"=>round($order['sale_price']*$thnum,2),
@@ -104,22 +106,9 @@ class Reorder extends Base
                 ActionLog::logAdd($this->post['token'],$stn,"XSTHD",$in['status'],$in);
                 $process=["order_code"=>$returnCode,"order_id"=>$create,"order_status"=>$in['status'],"order_type"=>'XSTHD',"before_status"=>0,'holder_id'=>$in['apply_id']];
                 ProcessOrder::AddProcess($this->post['token'],$process);
-
                 //维护台账信息
                 Db::execute("UPDATE `wsm_standing_book` SET `returnGoodCode`=CONCAT(IFNULL(`returnGoodCode`,''),',{$returnCode}'),`updatetime`='" . date('Y-m-d H:i:s') . "' WHERE `orderCode`='{$ordeCode}'");
 
-//                $rs = Db::name('standing_book')->where('orderCode', $ordeCode)->order('returnGoodCode')->find();
-//                if (!empty($rs)) {
-//                    if ($rs['returnGoodCode'] == '') Db::name('standing_book')->where('id', $rs['id'])->update(["returnGoodCode" => $returnCode, "updatetime" => date("Y-m-d H:i:s")]);
-//                    else {
-//                        unset($rs['id']);
-//                        $rs['standBookNo'] = makeNo('IO');
-//                        $rs['addtime'] = $rs['updatetime'] = date("Y-m-d H:i:s");
-//                        $rs['returnGoodCode'] = $returnCode;
-//                        Db::name('standing_book')->insert($rs);
-//                    }
-//                }
-
                 if($returnadr!=""){
                     $inf=[];
                     foreach ($returnadr as $val){
@@ -242,89 +231,100 @@ class Reorder extends Base
                         "order_status" =>$order['status'],"before_status"=>$lor
                     ]);
 
-                    $ordernum = Db::name("order_num")->where(['orderCode' => $ordeCode])->find();
-                    if ($ordernum == false) {
-                        Db::rollback();
-                        return error_show(1005, '未找到关联采购单');
-                    }
-                    $ordernum['send_num'] -= $thnum;
-                    $orderup = Db::name("order_num")->save($ordernum);
-                    if ($orderup == false) {
-                        Db::rollback();
-                        return error_show(1005, '关联数据更新失败');
-                    }
-                    $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
-                    if ($cgd == false) {
-                        Db::rollback();
-                        return error_show(1005, '未找到采购单数据');
-                    }
-                    $cgd['th_fee'] += round($cgd['good_price'] * $thnum, 2);
-                    $cgd['th_num'] += $thnum;
-                    $cgd['updatetime'] = date("Y-m-d H:i:s");
-                    $cgdup = Db::name("purchease_order")->save($cgd);
-                    if ($cgdup == false) {
-                        Db::rollback();
-                        return error_show(1005, '采购单数据更新失败');
-                    }
-                    if ($cgd['bkcode'] != "") {
-                        $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "order_source" =>0, "is_del" => 0])
-                            ->find();
-                        if ($bk == false) {
-                            Db::rollback();
-                            return error_show(1005, '未找到备库单数据');
-                        }
-                        $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
-                        if ($orderbk == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单未完全入库');
-                        }
-                        $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" =>
-                                1, "is_del" => 0])->where("order_source","<>",0)->field("sum(send_num)-sum(th_num) as num")
-                            ->find();
+//                    $ordernum = Db::name("order_num")->where(['orderCode' => $ordeCode])->find();
+//                    if ($ordernum == false) {
+//                        Db::rollback();
+//                        return error_show(1005, '未找到关联采购单');
+//                    }
+//                    $ordernum['send_num'] -= $thnum;
+//                    $orderup = Db::name("order_num")->save($ordernum);
+//                    if ($orderup == false) {
+//                        Db::rollback();
+//                        return error_show(1005, '关联数据更新失败');
+//                    }
+//                    $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+//                    if ($cgd == false) {
+//                        Db::rollback();
+//                        return error_show(1005, '未找到采购单数据');
+//                    }
+//                    $cgd['th_fee'] += round($cgd['good_price'] * $thnum, 2);
+//                    $cgd['th_num'] += $thnum;
+//                    $cgd['updatetime'] = date("Y-m-d H:i:s");
+//                    $cgdup = Db::name("purchease_order")->save($cgd);
+//                    if ($cgdup == false) {
+//                        Db::rollback();
+//                        return error_show(1005, '采购单数据更新失败');
+//                    }
+//                    if ($cgd['bkcode'] != "") {
+//                        $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "order_source" =>0, "is_del" => 0])
+//                            ->find();
+//                        if ($bk == false) {
+//                            Db::rollback();
+//                            return error_show(1005, '未找到备库单数据');
+//                        }
+//                        $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
+//                        if ($orderbk == false) {
+//                            Db::rollback();
+//                            return error_show(1005, '备库单未完全入库');
+//                        }
+//                        $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" =>
+//                                1, "is_del" => 0])->where("order_source","<>",0)->field("sum(send_num)-sum(th_num) as num")
+//                            ->find();
+//
+//                        $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
+//                        $orderbk['merge_num'] = $merge_num['num'];
+//                        $orderbk['updatetime'] = date("Y-m-d H:i:s");
+//                        $orderbkup = Db::name("order_bk")->save($orderbk);
+//                        if ($orderbkup == false) {
+//                            Db::rollback();
+//                            return error_show(1005, '备库单库存数据释放失败');
+//                        }
+//                    }
 
-                        $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
-                        $orderbk['merge_num'] = $merge_num['num'];
-                        $orderbk['updatetime'] = date("Y-m-d H:i:s");
-                        $orderbkup = Db::name("order_bk")->save($orderbk);
-                        if ($orderbkup == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单库存数据释放失败');
-                        }
-                    }
-                    $stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'wsm_code' => $cgd['wsm_code']])
+					$saleinfo=Db::name("sale_info")->where([["orderCode","=",$ordeCode],["num",">",0]])->select()
+					->toArray();
+					if(empty($saleinfo)) {
+						Db::rollback();
+						return error_show(1005, '商品批次数据未找到');
+					}
+					$tempnum =$thnum;
+					foreach ( $saleinfo as $va){
+					if($tempnum ==0) break;
+					$stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'id' => $va['stockid']])
                         ->find();
-                    if (empty($stock)) {
-                        $stock = [
-                            "spuCode" => $order['good_code'],
-                            "wsm_code" => $cgd['wsm_code'],
-                            "usable_stock" => 0,
-                            "wait_out_stock" => 0,
-                            "wait_in_stock" => 0,
-                            "total_stock" => 0,
-                            "addtime" => date("Y-m-d H:i:s"),
-                            "updatetime" => date("Y-m-d H:i:s"),
-                        ];
-                    }
-//                    if($stock['presale_stock']>0){
-//                            if($stock['presale_stock']>=$thnum){
-//                                $stock['presale_stock']-=$thnum;
-//                            }else{
-//                                $stock['presale_stock']=0;
-//                                $stock['usable_stock']+=$thnum;
-//                                $stock['wait_out_stock'] -= ($thnum -$stock['presale_stock']);
-//                            }
-//                    }else{
-                        $stock['usable_stock']+=$thnum;
-                        $stock['wait_out_stock'] -= $thnum;
-              //      }
+					if($stock==false) {
+						Db::rollback();
+						return error_show(1005, '商品库存数据未找到');
+					}
+					if($va['num']>=$tempnum) {
+						$tnm = $tempnum;
+						$va['num']-= $tempnum;
+						$tempnum=0;
+					}else{
+						$tnm = $va['num'];
+						$tempnum -=$va['num'];
+						$va['num'] =0;
+					}
+                    $stock['usable_stock']+=$tnm;
+                    $stock['wait_out_stock'] -=$tnm;
                     $stock['updatetime'] = date("Y-m-d H:i:s");
                     $st_up = Db::name("good_stock")->save($stock);
                     if ($st_up == false) {
                         return error_show(1005, '可售商品入库失败');
                     }
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
+					$ps = GoodStockInfo::AddBn($va['stockid'],$va['bnCode'],$tnm);
+                     if ($ps == false) {
+                        return error_show(1005, '商品批次退货入库失败');
+                    }
+                     $ret = GoodStockInfo::ReturnBn($returnCode,$va['id'],$tnm);
+                     if ($ret == false) {
+                        return error_show(1005, '商品批次退货入库失败');
+                    }
+                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
+                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
                     GoodLog::LogAdd($this->post['token'], $good_data, 'XSTHD');
+					}
+
                     $data=[
                         "orderCode"=>$ordeCode,
                         "th_type"=>1,
@@ -394,7 +394,7 @@ class Reorder extends Base
         $condition='';
         if(!empty($role['write']) && $this->uid!=""){
             // $where[]=["sr.apply_id","in",$role['write']];
-            $condition .="sr.cgderid = {$this->uid} or sr.apply_id in (".implode(',',$role['write']).")";
+            $condition .="sr.cgderid = {$this->uid} or sr.apply_id in (".implode(',',$role['write']).") or sr.person_id={$this->uid}";
         }
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["sr.apply_id", 'in', get_company_item_user_by_name($company_name)];
@@ -869,6 +869,7 @@ class Reorder extends Base
                                 return error_show(1005, '可售商品入库失败');
                             }
 
+
                         } else {
                             $orderinfo['th_num'] += $info['num'];
                             if($orderinfo['th_num']==$orderinfo['send_num']&& $orderinfo['wsend_num']==0){
@@ -1179,14 +1180,17 @@ class Reorder extends Base
         }
         $remark =isset($this->post['remark']) &&$this->post['remark']!=''?trim($this->post['remark']) :"";
         $addr =Db::name("order_addr")->where([["orderCode","=",$orderCode],["is_del","=",0]])->select()->toArray();
-         $ordernum = Db::name("order_num")->where(['orderCode' => $orderCode])->find();
-        if ($ordernum == false) {
-        	return error_show(1005, '未找到关联采购单');
-        }
-         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
-        if ($cgd == false) {
-            return error_show(1005, '未找到采购单数据');
+        if($order['is_stock']==0){
+        	 $ordernum = Db::name("order_num")->where(['orderCode' => $orderCode])->find();
+	        if ($ordernum == false) {
+	            return error_show(1005, '未找到关联采购单');
+	        }
+	         $cgd = Db::name("purchease_order")->where(["cgdNo" => $ordernum['cgdNo'], "is_del" => 0])->find();
+	        if ($cgd == false) {
+	            return error_show(1005, '未找到采购单数据');
+	        }
         }
+
         if($order['is_stock']==0&&$cgd['send_status']!=1){
         	return error_show(1005, '采购单已发起入库');
         }
@@ -1202,6 +1206,8 @@ class Reorder extends Base
                 "apply_name"=>$this->uname,
                 "cgderid"=>$goon['createrid'],
                 "cgder"=>$goon['creater'],
+                 "person"=>$supplier['person']??'',
+                "person_id"=>$supplier['personid']??0,
                 "error_code"=>$errorCode,
                 "num"=>$order['wsend_num'],
                 "total_fee"=>round($order['sale_price']*$order['wsend_num'],2),
@@ -1317,67 +1323,49 @@ class Reorder extends Base
                         'holder_id=' => $order['apply_id']
                     ]);
 
-                    $ordernum['send_num'] -= $thnum;
-                    $orderup = Db::name("order_num")->save($ordernum);
-                    if ($orderup == false) {
-                        Db::rollback();
-                        return error_show(1005, '关联数据更新失败');
-                    }
-					$cgd['th_fee'] += round($cgd['good_price'] * $thnum, 2);
-                    $cgd['th_num'] += $thnum;
-                    $cgd['updatetime'] = date("Y-m-d H:i:s");
-                    $cgdup = Db::name("purchease_order")->save($cgd);
-                    if ($cgdup == false) {
-                        Db::rollback();
-                        return error_show(1005, '采购单数据更新失败');
-                    }
-					 if ($cgd['bkcode'] != "") {
-                        $bk = Db::name("purchease_order")->where(["bkcode" => $cgd['bkcode'], "order_type" => 1, "order_source" =>0, "is_del" => 0])
-                            ->find();
-                        if ($bk == false) {
-                            Db::rollback();
-                            return error_show(1005, '未找到备库单数据');
-                        }
-                        $orderbk = Db::name("order_bk")->where(['cgdNo' => $bk['cgdNo'], "is_del" => 0])->find();
-                        if ($orderbk == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单未完全入库');
-                        }
-                        $merge_num = Db::name("purchease_order")->where(["bkcode" => $bk['bkcode'], "order_type" =>1, "is_del" => 0])->where("order_source","<>",0)->field("sum(send_num)-sum(th_num) as num")
-                            ->find();
-                        $orderbk['balance_num'] = $orderbk['total_num'] - $merge_num['num'];
-                        $orderbk['merge_num'] = $merge_num['num'];
-                        $orderbk['updatetime'] = date("Y-m-d H:i:s");
-                        $orderbkup = Db::name("order_bk")->save($orderbk);
-                        if ($orderbkup == false) {
-                            Db::rollback();
-                            return error_show(1005, '备库单库存数据释放失败');
-                        }
-                    }
-					  $stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'wsm_code' => $cgd['wsm_code']])
+                  	$saleinfo=Db::name("sale_info")->where([["orderCode","=",$orderCode],["num",">",0]])->select()
+					->toArray();
+					if(empty($saleinfo)) {
+						Db::rollback();
+						return error_show(1005, '商品批次数据未找到');
+					}
+					$tempnum =$thnum;
+					foreach ( $saleinfo as $va){
+					if($tempnum ==0) break;
+					$stock = Db::name("good_stock")->where(["spuCode" => $order['good_code'], 'id' => $va['stockid']])
                         ->find();
-                    if (empty($stock)) {
-                        $stock = [
-                            "spuCode" => $order['good_code'],
-                            "wsm_code" => $cgd['wsm_code'],
-                            "usable_stock" => 0,
-                            "wait_out_stock" => 0,
-                            "wait_in_stock" => 0,
-                            "total_stock" => 0,
-                            "addtime" => date("Y-m-d H:i:s"),
-                            "updatetime" => date("Y-m-d H:i:s"),
-                        ];
-                    }
-                    $stock['usable_stock']+=$thnum;
-                    $stock['wait_out_stock'] -= $thnum;
+					if($stock==false) {
+						Db::rollback();
+						return error_show(1005, '商品库存数据未找到');
+					}
+					if($va['num']>=$tempnum) {
+						$tnm = $tempnum;
+						$va['num']-= $tempnum;
+						$tempnum=0;
+					}else{
+						$tnm = $va['num'];
+						$tempnum -=$va['num'];
+						$va['num'] =0;
+					}
+                    $stock['usable_stock']+=$tnm;
+                    $stock['wait_out_stock'] -=$tnm;
                     $stock['updatetime'] = date("Y-m-d H:i:s");
                     $st_up = Db::name("good_stock")->save($stock);
                     if ($st_up == false) {
                         return error_show(1005, '可售商品入库失败');
                     }
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
-                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => isset($stock['id']) ? $stock['id'] : Db::name("good_stock")->getLastInsID(), "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
-                    GoodLog::LogAdd(["id"=>$this->uid,"nickname"=>$this->uname], $good_data, 'XSTHD');
+					$ps = GoodStockInfo::AddBn($va['stockid'],$va['bnCode'],$tnm);
+                     if ($ps == false) {
+                        return error_show(1005, '商品批次退货入库失败');
+                    }
+                     $ret = GoodStockInfo::ReturnBn($returnCode,$va['id'],$tnm);
+                     if ($ret == false) {
+                        return error_show(1005, '商品批次退货入库失败');
+                    }
+                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 1, 'stock' => $thnum, "stock_name" => "usable_stock"];
+                    $good_data[]= ['good_log_code' => $returnCode, "stock_id" => $va['stockid'], "type" => 2, 'stock' => $thnum, "stock_name" => "wait_out_stock"];
+                    GoodLog::LogAdd($this->post['token'], $good_data, 'XSTHD');
+					}
                     $data=[
                         "orderCode"=>$orderCode,
                         "th_type"=>1,

+ 44 - 36
app/admin/model/GoodStockInfo.php

@@ -11,6 +11,7 @@ use think\Model;
  */
 class GoodStockInfo extends Model
 {
+
     /**
 	* @param int $stockid 仓库库存id
 	* @param string $bn bn编号
@@ -18,8 +19,8 @@ class GoodStockInfo extends Model
 	* @param float $origin_price 采购成本价
 	* @return bool  入库bn库存数新建 或退回bn库存数
 	*/
-    public function AddBn(int $stockid,string $bn,int $num,float $origin_price=0){
-		$data=$this->where(["stockid"=>$stockid,"bnCode"=>$bn])->findOrEmpty();
+    static function AddBn(int $stockid,string $bn,int $num,float $origin_price=0){
+		$data=self::where(["stockid"=>$stockid,"bnCode"=>$bn])->findOrEmpty()->toArray();
 		if(empty($data)){
 			$data=[
 				"stockid"=>$stockid,
@@ -31,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 $this->save($data);
+		return $result;
     }
 
 	/**
@@ -50,27 +54,28 @@ class GoodStockInfo extends Model
 	* @throws \think\db\exception\DbException
 	* @throws \think\db\exception\ModelNotFoundException
 	*/
-    public function SaleBn(int $stockid,int $num){
-		$arr = $this->where([["stockid","=",$stockid],["balance_num",">",0]])->select()->toArray();
+	static function SaleBn(int $stockid,int $num){
+		$arr = self::where([["stockid","=",$stockid],["balance_num",">",0]])->select()->toArray();
 		if(empty($arr)) throw new Exception("库存批次数量不足","1006");
 		$list=[];
 		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"]];
 		    }
-		    $this->save($item);
+			self::update($update,$item);
 		    $list[]=$temp;
 		}
 		return $list;
@@ -82,13 +87,14 @@ class GoodStockInfo extends Model
 	* @return bool  盘点修改bn仓库库存数
 	* @throws \think\Exception
 	*/
-    public function CheckBn(int $stockid,string $bn,int $num){
-		$data=$this->where(["stockid"=>$stockid,"bnCode"=>$bn])->findOrEmpty();
+	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 $this->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
@@ -100,8 +106,8 @@ class GoodStockInfo extends Model
 	* @throws \think\db\exception\DbException
 	* @throws \think\db\exception\ModelNotFoundException
 	 */
-    public function OrderBn(string $orderCode,int $stockid,int $num){
-        $bnArr=$this->SaleBn($stockid,$num);
+	static function OrderBn(string $orderCode,int $stockid,int $num){
+        $bnArr=self::SaleBn($stockid,$num);
         if(empty($bnArr)) throw new Exception("未找到Bn库存数据",1006);
         $ordBn=[];
         foreach ($bnArr as $value){
@@ -117,7 +123,7 @@ class GoodStockInfo extends Model
 	        $ordBn[]=$saleBn;
         }
 
-        return $this->name("sale_info")->insertAll($ordBn);
+        return self::name("sale_info")->insertAll($ordBn);
     }
 	/**
 	* @param string $returnCode
@@ -127,8 +133,8 @@ class GoodStockInfo extends Model
 	 * @return bool
 	* @throws \think\Exception
 	 */
-    public function ReturnBn(string $returnCode,int $salebnid,int $num,int $type=1){
-    	$sabn=$this->name("sale_info")->where(['id'=>$salebnid])->findOrEmpty();
+	static function ReturnBn(string $returnCode,int $salebnid,int $num,int $type=1){
+    	$sabn=self::name("sale_info")->where(['id'=>$salebnid])->findOrEmpty()->toArray();
     	if(empty($sabn))throw new Exception("未找到Bn订单数据",1006);
     	$return=[
     		"returnCode"=>$returnCode,
@@ -139,7 +145,7 @@ class GoodStockInfo extends Model
     	    "num"=>$num,
     	    "addtime"=>date("Y-m-d H:i:s")
     	    ];
-    	return $this->name("return_info")->save($return);
+    	return self::name("return_info")->insert($return);
     }
 	/**  调拨专用 需要注意bn总数变化
 	* @param int $stockid 库存id
@@ -150,19 +156,20 @@ class GoodStockInfo extends Model
 	 * @return bool
 	* @throws \think\Exception
  */
-    public function bnStock(int $stockid,string $bnCode,int $num,int $flag=0,float $origin_price=0){
-			$stock =$this->where(["stockid"=>$stockid,"bnCode"=>$bnCode])->lock(true)->findOrEmpty();
+	static function bnStock(int $stockid,string $bnCode,int $num,int $flag=0,float $origin_price=0){
+			$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']=$stock['balance_num']-$num;
+						$update['total_num']=$stock['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,
@@ -173,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']=$stock['balance_num']+$num;
+						$update['total_num']=$stock['total_num']+$num;
+						$update['updatetime']=date("Y-m-d H:i:s");
 				}
 			}
-			return	$this->save($stock);
+
+			return	empty($stock)? self::insert($update): self::update($update,$stock);
 	}
 }

+ 1 - 0
app/admin/route/app.php

@@ -131,6 +131,7 @@ Route::rule('allotstatus','admin/Allot/status');
 Route::rule('allotgetont','admin/Allot/getont');
 Route::rule('allotgetin','admin/Allot/getin');
 Route::rule('allotvesio','admin/Allot/vesio');
+Route::rule('allotgood','admin/Allot/goodlist');
 
 Route::rule('userlist', 'admin/User/list');
 Route::rule('userinfo', 'admin/User/userInfo');