Browse Source

库存统计getstockwsm,getstockbet相关接口优化

wufeng 2 years ago
parent
commit
56d943c7fa
1 changed files with 90 additions and 20 deletions
  1. 90 20
      app/admin/controller/Good.php

+ 90 - 20
app/admin/controller/Good.php

@@ -352,8 +352,7 @@ class Good extends Base
         if($wsm_code!==""){
             $condition[]=["wsm_code","=",$wsm_code];
         }
-        $suplierNo = isset($this->post['suplierNo']) &&$this->post['suplierNo'] !=="" ? trim($this->post['suplierNo'])
-            :"";
+        $suplierNo = isset($this->post['suplierNo']) &&$this->post['suplierNo'] !=="" ? trim($this->post['suplierNo']):"";
         if($suplierNo!==""){
             $wsmcode = Db::name("warehouse_info")->where(['supplierNo'=>$suplierNo,"is_del"=>0])->column("wsm_code");
             $condition[]=["wsm_code","in",$wsmcode];
@@ -378,21 +377,52 @@ class Good extends Base
         foreach ($list as $key=>$value){
             $temp=[];
             if($value['wsm_code']!=""){
-                $wsm = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")->where
-                (['a.wsm_code'=>$value['wsm_code'],"a.is_del"=>0])->field("a.name as wsm_name,wsm_code,b.code,b.name")
+                $wsm = Db::name("warehouse_info")
+                    ->alias("a")
+                    ->leftJoin("supplier b","a.supplierNo=b.code")
+                    ->leftJoin("business bus","a.companyNo=bus.companyNo")
+                    ->where(['a.wsm_code'=>$value['wsm_code'],"a.is_del"=>0])
+                    ->field("a.name as wsm_name,wsm_code,a.supplierNo,b.name supplierName,a.companyNo,bus.company")
                     ->find();
             }
             $temp['wsm_name'] = isset($wsm['wsm_name'])?$wsm['wsm_name']:"";
             $temp['wsm_code']=$value['wsm_code'];
-            $temp['supplier_code']=isset($wsm['code'])?$wsm['code']:"";
-            $temp['supplier_name']=isset($wsm['name'])?$wsm['name']:"";
+            $temp['supplier_code']=isset($wsm['supplierNo'])?$wsm['supplierNo']:"";
+            $temp['supplier_name']=isset($wsm['supplierName'])?$wsm['supplierName']:"";
+            $temp['company_no']=isset($wsm['companyNo'])?$wsm['companyNo']:"";
+            $temp['company_name']=isset($wsm['company'])?$wsm['company']:"";
             if($value['spuCode']!=""){
-                $good=Db::name("good")->where(["spuCode"=>$value['spuCode'],"is_del"=>0])->find();
+                $good=Db::name("good")
+                    ->alias('g')
+                    ->field('g.*,b.brand_name,u.unit')
+                    ->where(["g.spuCode"=>$value['spuCode'],"g.is_del"=>0])
+                    ->leftJoin('brand b','b.id=g.brand_id')
+                    ->leftJoin('unit u','u.id=g.good_unit')
+                    ->find();
+
+                //规格信息
+                $spec = Db::name("good_spec")->field('id,spec_id,spec_value_id')->where(["spuCode" => $value['spuCode'], "is_del" => 0])->select()->toArray();
+
+                $speclist = [];
+                if (!empty($spec)) {
+                    foreach ($spec as $val) {
+                        $tmp = [];
+                        $tmp['spec_id'] = $val['spec_id'];
+                        $tmp['spec_value_id'] = $val['spec_value_id'];
+                        $sp = Db::name("specs")->where(["id" => $val['spec_id']])->find();
+                        $tmp['spec_name'] = isset($sp["spec_name"]) ? $sp["spec_name"] : "";
+                        $spv = Db::name("spec_value")->where(["id" => $val['spec_value_id']])->find();
+                        $tmp['spec_value'] = isset($spv["spec_value"]) ? $spv["spec_value"] : "";
+                        $speclist[] = $tmp;
+                    }
+                }
+                $temp['specinfo'] = $speclist;
             }
             $temp['good_code']=isset($good['spuCode'])?$good['spuCode']:"";
             //  $temp['type_code']=isset($good['type_code'])?$good['type_code']:"";
             $temp['good_name']=isset($good['good_name'])?$good['good_name']:"";
             $temp['unit']=isset($good['unit'])?$good['unit']:"";
+            $temp['brand_name']=isset($good['brand_name'])?$good['brand_name']:"";
             //  $temp['attribute']=isset($good['attribute'])?$good['attribute']:"";
             $temp['sort_f']=isset($good['cat_id'])?$good['cat_id']:"";
             $temp['cat_info']=isset($good['cat_id'])?made($good['cat_id']):"";
@@ -422,13 +452,11 @@ class Good extends Base
         $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;
         $condition = [["is_del","=",0]];
-        $wsm_code = isset($this->post['wsm_code']) &&$this->post['wsm_code'] !=="" ? trim($this->post['wsm_code'])
-            :"";
+        $wsm_code = isset($this->post['wsm_code']) &&$this->post['wsm_code'] !=="" ? trim($this->post['wsm_code']):"";
         if($wsm_code!==""){
             $condition[]=["wsm_code","=",$wsm_code];
         }
-        $suplierNo = isset($this->post['supplierNo']) &&$this->post['supplierNo'] !=="" ? trim($this->post['supplierNo'])
-            :"";
+        $suplierNo = isset($this->post['supplierNo']) &&$this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']):"";
         if($suplierNo!==""){
             $wsmcode = Db::name("warehouse_info")->where(['supplierNo'=>$suplierNo,"is_del"=>0])->column("wsm_code");
             $condition[]=["wsm_code","in",$wsmcode];
@@ -441,23 +469,65 @@ class Good extends Base
         $build= Db::name("good_stock")->where($condition)->group("wsm_code")->field("wsm_code")->buildSql();
         $count = Db::table($build." a")->count();
         $page>=ceil($count/$size) ? $page=ceil($count/$size) :"";
-        $list = Db::name("good_stock")->where($condition)->page($page,$size)->group("wsm_code")
-            ->field("wsm_code,sum(wait_in_stock) wait_in_stock,sum(wait_out_stock) wait_out_stock,sum(usable_stock) usable_stock,
-          sum(intra_stock) intra_stock,sum(warn_stock) warn_stock,sum(total_stock) total_stock")->select();
+        $list = Db::name("good_stock")
+            ->where($condition)
+            ->page($page,$size)
+            ->group("wsm_code")
+            ->field("wsm_code,sum(wait_in_stock) wait_in_stock,sum(wait_out_stock) wait_out_stock,sum(usable_stock) usable_stock,sum(intra_stock) intra_stock,sum(warn_stock) warn_stock,sum(total_stock) total_stock")
+            ->select()
+            ->toArray();
         $data=[];
         foreach ($list as $key=>$value){
             $temp=[];
             if($value['wsm_code']!=""){
-                $wsm = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")->where
-                (['a.wsm_code'=>$value['wsm_code'],"a.is_del"=>0])->field("a.name as wsm_name,wsm_code,b.code,b.name")
+                $wsm = Db::name("warehouse_info")
+                    ->alias("a")
+                    ->leftJoin("business bus", "bus.companyNo=a.companyNo")
+                    ->leftJoin("supplier b","a.supplierNo=b.code")
+                    ->where(['a.wsm_code'=>$value['wsm_code'],"a.is_del"=>0])
+                    ->field("a.name as wsm_name,wsm_code,a.supplierNo,b.name supplierName,a.companyNo,bus.company")
                     ->find();
-                $good = Db::name("good_stock")->alias("a")
-                    ->join("good c","c.spuCode=a.spuCode","left")->where(["a.wsm_code"=>$value['wsm_code'],"a.is_del"=>0,"c.is_del"=>0])->select();
+                $good = Db::name("good_stock")
+                    ->alias("a")
+                    ->leftJoin("good c","c.spuCode=a.spuCode")
+                    ->where(["a.wsm_code"=>$value['wsm_code'],"a.is_del"=>0,"c.is_del"=>0])
+                    ->select()
+                    ->toArray();
+
+                //商品单位和品牌
+                $good_unit_s = Db::name("unit")->whereIn('id', array_column($good, 'good_unit'))->where('is_del', 0)->column('unit', 'id');
+                $brands = Db::name("brand")->whereIn('id', array_column($good, 'brand_id'))->where('is_del', 0)->column('brand_name', 'id');
+
+                foreach ($good as &$item_good){
+                    //规格信息
+                    $spec = Db::name("good_spec")->field('id,spec_id,spec_value_id')->where(["spuCode" => $item_good['spuCode'], "is_del" => 0])->select()->toArray();
+
+                    $speclist = [];
+                    if (!empty($spec)) {
+                        foreach ($spec as $val) {
+                            $tmp = [];
+                            $tmp['spec_id'] = $val['spec_id'];
+                            $tmp['spec_value_id'] = $val['spec_value_id'];
+                            $sp = Db::name("specs")->where(["id" => $val['spec_id']])->find();
+                            $tmp['spec_name'] = isset($sp["spec_name"]) ? $sp["spec_name"] : "";
+                            $spv = Db::name("spec_value")->where(["id" => $val['spec_value_id']])->find();
+                            $tmp['spec_value'] = isset($spv["spec_value"]) ? $spv["spec_value"] : "";
+                            $speclist[] = $tmp;
+                        }
+                    }
+                    $item_good['specinfo'] = $speclist;
+                    $item_good['unit'] = $good_unit_s[$item_good['good_unit']]??'';
+                    $item_good['brand_name'] = $brands[$item_good['brand_id']]??'';
+                }
+
+
             }
             $temp['wsm_name'] = isset($wsm['wsm_name'])?$wsm['wsm_name']:"";
             $temp['wsm_code']=$value['wsm_code'];
-            $temp['supplier_code']=isset($wsm['code'])?$wsm['code']:"";
-            $temp['supplier_name']=isset($wsm['name'])?$wsm['name']:"";
+            $temp['supplier_code']=isset($wsm['supplierNo'])?$wsm['supplierNo']:"";
+            $temp['supplier_name']=isset($wsm['supplierName'])?$wsm['supplierName']:"";
+            $temp['company_no']=isset($wsm['companyNo'])?$wsm['companyNo']:"";
+            $temp['company_name']=isset($wsm['company'])?$wsm['company']:"";
             $temp['usable_stock'] = $value['usable_stock'];
             $temp['wait_in_stock'] = $value['wait_in_stock'];
             $temp['wait_out_stock'] = $value['wait_out_stock'];