wugg 2 years ago
parent
commit
f9cabb32e3

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

@@ -1725,53 +1725,15 @@ class After extends Base
      */
     private function createSaleZixun(int $orid = 0, string $spuCode = '', array $info = [], array $old_sale = [], int $rm = 0, string $ri = '', int $addrid = 0, string $token = '')
     {
-//        $bidNo =isset($this->post['bidNo'])&&$this->post['bidNo']!="" ?  trim($this->post['bidNo']):"";
-//        if($bidNo==""){
-//            return error_show(1003,"参数bidNo不能为空");
-//        }
+
 
         $zxinfo = Db::name("consult_bids")->where(["bidNo" => $old_sale['zxNo'], "is_del" => 0])->find();
         if ($zxinfo == false) return error_show(1005, '未找到咨询单商品信息');
-
-//        if($zxinfo['status']!=6){
-//            return error_show(1003,"咨询单状态有误无法转单");
-//        }
-//        $zx =Db::name("consult_info")->where(["infoNo"=>$zxinfo['infoNo'],"is_del"=>0])->find();
-//        if($zx==false){
-//            return error_show(1003,"未找到咨询单信息");
-//        }
-//        if($zx['status']!=4){
-//            return error_show(1003,"咨询单状态有误无法转单");
-//        }
-//        $zxorder =Db::name("consult_order")->where(["zxNo"=>$zx["zxNo"],"is_del"=>0])->find();
-//        if($zxorder==false){
-//            return error_show(1003,"未找到咨询单信息");
-//        }
-//        $good_num =isset($this->post['good_num'])&&$this->post['good_num']!="" ?  intval($this->post['good_num']):"";
-//        if($good_num===""){
-//            return error_show(1003,"参数 good_num 不能为空");
-//        }
         $good_num = $info['error_num'];
         $sale_price = 0;
-//        $sale_price = isset($this->post['sale_price']) && $this->post['sale_price'] != "" ? floatval($this->post['sale_price']) : "";
-//        if ($sale_price === "") {
-//            return error_show(1003, "参数 sale_price 销售单价 不能为空");
-//        }
-//        if ($sale_price < $zxinfo['sale_price']) {
-//            return error_show(1003, "修改的销售单价不能低于原来的销售单价");
-//        }
-//        $sendtype = isset($this->post['sendtype'])&&$this->post['sendtype']!="" ? intval($this->post['sendtype']):"";
-//        if($sendtype==""){
-//            return error_show(1003,"参数sendtype不能为空");
-//        }
-
-//        $remark = isset($this->post['remark'])&&$this->post['remark']!="" ? trim($this->post['remark']):"";
 
         $orderCode = makeNo("QR");
-//        $spuCode = $zxinfo['spuCode'];
         $skuCode = "";
-//        $is_stock=0;
-
         //原有采购单信息
         $old_cgd = Db::name('order_num')
             ->alias('on')

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

@@ -2418,7 +2418,7 @@ class Consult extends Base
         	$companyNo='';
         	$relaComArr=$userCommon->handle("hqInfo",["code"=>$relaComNo]);
         	if(isset($relaComArr['code'])&&$relaComArr['code']==0&& empty($relaComArr['data'])) {
-        		$companyNo = $this->level==2?$relaComArr['data']['relation_code'] :$relaComArr['data']['code'];
+        		$companyNo = $this->level==3?$relaComArr['data']['relation_code'] :$relaComArr['data']['code'];
         	}
         	$where[]=['b.companyNo','<>', $companyNo];
         }

+ 12 - 5
app/admin/controller/Purch.php

@@ -1034,12 +1034,19 @@ class Purch extends Base
 
 //        $role = $this->checkDataShare();
 //        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ['a.apply_id', 'in', $role[DataGroupModel::$type_全部]];
-        $role = $this->checkDataShare();
-        $hand = resign_hand_user($this->uid,0);
-        if (!empty($role[DataGroupModel::$type_全部])) {
-            $arr= array_unique(array_merge($hand,$role[DataGroupModel::$type_全部]));
-            $where[] = ['a.apply_id', 'in',$arr];
+       $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo']!="" ? trim($this->post['relaComNo']):"";
+        if ($this->level == 2) {
+            $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+                $where[] = ['a.apply_id', 'in', $arr];
+            }
+             if($relaComNo!='') $where[]=['b.companyNo','=', $relaComNo];
         }
+		if($this->level==3){
+			 if($relaComNo!='') $where[]=['b.supplierNo','=', $relaComNo];
+		}
 
         $count = Db::name('purchease_diff')
             ->alias('a')

+ 48 - 104
app/admin/controller/Sale.php

@@ -31,29 +31,14 @@ class Sale extends Base
 
     public function create()
     {
-//        $token = isset($this->post['token']) && $this->post['token'] !== "" ? trim($this->post['token']) : "";
         $orderCode = makeNo("QR");
         $customer_code = isset($this->post['customer_code']) && $this->post['customer_code'] !== "" ? trim($this->post['customer_code']) : "";
         if ($customer_code == "") {
             return error_show(1002, "客户customer_code不能为空");
         }
-
-
-//        $customer = Db::name("customer_info")->where(["companyNo" => $customer_code])->find();
-//        if ($customer == false) {
-//            return error_show(1004, "未找到客户数据");
-//        }
         $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] !== "" ? trim($this->post['supplierNo']) : "";
-//        if ($supplierNo == "") {
-//            return error_show(1002, "参数supplierNo不能为空");
-//        }
-//        $supplier = Db::name("business")->where(["companyNo" => $supplierNo])->find();
-//        if ($supplier == false) {
-//            return error_show(1004, "未找到平台供应商数据");
-//        }
-
-        $userCommon = new \app\admin\common\User();
-        $tmp = $userCommon->handle('getCodeAndName',['code'=>[$customer_code,$supplierNo]]);
+		$userCommon = new \app\admin\common\User();
+		$tmp = $userCommon->handle('getCodeAndName',['code'=>[$customer_code,$supplierNo]]);
         if(!isset($tmp['code']) || $tmp['code']!=0) return json_show($tmp['code'],$tmp['message'],$tmp['data']);
         if(!isset($tmp['data'][$customer_code])) return json_show(1004, "未找到客户数据");
         if(!isset($tmp['data'][$supplierNo])) return json_show(1004, "未找到平台供应商数据");
@@ -84,12 +69,12 @@ class Sale extends Base
         }
         $paytime = isset($this->post['paytime']) && $this->post['paytime'] != "" ? $this->post['paytime'] : "";
         $workNo = isset($this->post['workNo']) && $this->post['workNo'] != "" ? trim($this->post['workNo']) : "";
-        // $poNo =isset($this->post['poNo'])&&$this->post['poNo']!=""? trim($this->post['poNo']):"";
         $ct = Db::name('good_platform')->alias('a')->join('good b', 'b.spuCode=a.spuCode', 'left')
             ->where(['a.skuCode' => $good_code])->field("b.*,a.skuCode,a.platform_code,a.plat_code")->find();
         if ($ct == false) {
             return error_show(1002, "未找到商品数据");
         }
+
         $goodinfo = $ct;
         $is_stock = $ct['is_stock'];
         $spuCode = $ct['spuCode'];
@@ -110,10 +95,6 @@ class Sale extends Base
             ->leftJoin("good_stock_info c", "a.id=c.stockid and c.balance_num>0")
             ->where(["spuCode" => $spuCode, "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo" =>$supplierNo])
             ->sum('balance_num');
-//            if ($stock == false || $stock['usable_stock'] < $good_num) {
-//                return error_show(1003, "库存数量不足");
-//            }
-
             if($stock_num < $good_num){
                 return error_show(1003, "库存数量不足");
             }
@@ -169,11 +150,6 @@ class Sale extends Base
         } else {
             $sale_price = 0;
         }
-//        $supplier_info = Db::name('supplier')
-//            ->field('id,person,personid')
-//            ->where('code',$ct['supplierNo'])
-//            ->findOrEmpty();
-        $userCommon= new \app\admin\common\User();
 		$supplier_temp =$userCommon->handle("sInfo",["code"=>$ct['supplierNo']]);
 		if($supplier_temp['code']!=0 || empty($supplier_temp['data']) ) return error_show(1002,"采购单供应商不存在");
 		$holder_id=$supplier_temp['data']['personid']??0;
@@ -183,6 +159,7 @@ class Sale extends Base
             "supplierNo" => $ct['supplierNo'],
             "supplierName" => $supplier_name,
             "companyNo" => $supplierNo,
+            "companyName" => $tmp['data'][$supplierNo]??"",
             "orderCode" => $orderCode,
             "spuCode" => $ct['spuCode'],
             "skuCode" => $ct['skuCode'],
@@ -231,6 +208,7 @@ class Sale extends Base
                 "good_code" => $spuCode,
                 "skuCode" => $skuCode,
                 "customer_code" => $customer_code,
+                "customerName" =>$tmp['data'][$customer_code]??"",
                 "good_name" => isset($goodinfo['good_name']) && $goodinfo['good_name'] !== '' ? $goodinfo['good_name'] : '',
                 "good_num" => $good_num,
                 "cat_id" => $goodinfo['cat_id'],
@@ -246,6 +224,9 @@ class Sale extends Base
                 "good_type" => $goodtype,
                 "send_type" => $sendtype,
                 "supplierNo" => $supplierNo,
+                "supplierName" => $tmp['data'][$supplierNo]??"",
+                "supName" => $supplier_name,
+                "supNo" => $ct['supplierNo'],
                 "is_del" => 0,
                 "zxNo" => "",
                 "platform_order" => $platform_order,
@@ -256,7 +237,6 @@ class Sale extends Base
                 "activity_code" => $actcode,
                 "order_type" => $is_stock == 1 ? 1 : 2,
                 "order_source" => 1,//1直接下单
-//                "poNo"=>$poNo,
                 'good_weight' => $ct['noble_weight'],
                 'gold_price' => isset($ct['cgd_gold_price']) ? $ct['cgd_gold_price'] : 0,
                 'cost_price' => isset($good['cost_fee']) ? $good['cost_fee'] : 0,
@@ -497,10 +477,6 @@ class Sale extends Base
     public function createCgd($data, array &$standing_book_da = [])
     {
         $cgdCode = makeNo("CG");
-//        $supplier = Db::name("supplier")->where(["code" => $data['supplierNo'], "is_del" => 0])->find();
-//        if ($supplier == false) {
-//            return false;
-//        }
         $wsm = Db::name("warehouse_info")->where(["supplierNo" => $data["supplierNo"], "companyNo" => $data['companyNo'], "wsm_type" => 2, "is_del" => 0])->find();
         if ($wsm == false) {
             $wsm_code = makeNo("WSM");
@@ -558,6 +534,7 @@ class Sale extends Base
             "supplierNo" => $data['supplierNo'],
             "supplier_name" => $data['supplierName'],
             "companyNo" => $data['companyNo'],
+            "companyName" => $data['companyName'],
             "send_status" => 1,
             "send_num" => 0,
             "wsend_num" => $data['good_num'],
@@ -668,11 +645,7 @@ class Sale extends Base
             return error_show(1005,"存在未完成退货订单数据");
         }
         $arrtime = isset($this->post['arrtime']) && $this->post['arrtime'] != "" ? $this->post['arrtime'] : "";
-//        $token = isset($this->post['token']) && $this->post['token'] !== "" ? trim($this->post['token']) : "";
-//        $apply_id = GetUserInfo($token);
-//        if (empty($apply_id) || $apply_id['code'] != 0) {
-//            return error_show(1002, "申请人数据不存在");
-//        }
+
         $rm = $this->uid;//isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
         $ri = $this->uname;//isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
         $addrlist = isset($this->post['addrlist']) && $this->post['addrlist'] !== "" ? $this->post['addrlist'] : "";
@@ -974,24 +947,14 @@ class Sale extends Base
         }
 
         $userCommon = new \app\admin\common\User();
-//        $tmp = $userCommon->handle('bInfo',['companyNo'=>$companyNo]);
-//        if(!isset($tmp['code']) || $tmp['code']!=0) return json_show($tmp['code'],$tmp['message'],$tmp['data']);
-//        if(empty($tmp['data'])) return json_show(1003, "业务公司数据未找到");
-
-//        $company = Db::name("business")->where(["companyNo" => $companyNo, "is_del" => 0])->find();
-//        if ($company == false) {
-//            return error_show(1003, "业务公司数据未找到");
 //        }
         $remark = isset($this->post['remark']) && $this->post['remark'] != "" ? trim($this->post['remark']) : "";
 
         $tmp = $userCommon->handle('sInfo',['code'=>$zxinfo['supplierNo']]);
         if(!isset($tmp['code']) || $tmp['code']!=0) return json_show($tmp['code'],$tmp['message'],$tmp['data']);
+        $companyinfo = $userCommon->handle('getCodeAndName',['code'=>[$companyNo,$zxorder['khNo']]]);
+        if(!isset($companyinfo['code']) || $companyinfo['code']!=0) return json_show($companyinfo['code'],$companyinfo['message'],$companyinfo['data']);
         $supplier_temp_info = $tmp['data'];
-//        if(empty($tmp['data'])) return json_show(1003, "业务公司数据未找到");
-//		 $supplier_temp_info=Db::name("supplier")
-//                ->field('id,person,personid')
-//                ->where(["code"=>$zxinfo['supplierNo']])
-//                ->findOrEmpty();
         $orderCode = makeNo("QR");
         $spuCode = $zxinfo['spuCode'];
         $skuCode = "";
@@ -1000,6 +963,7 @@ class Sale extends Base
             "supplierNo" => $zxinfo['supplierNo'],
             "supplierName" => $supplier_temp_info['name'],
             "companyNo" => $companyNo,
+            "companyName" => $companyinfo['data'][$companyNo]??"",
             "spuCode" => $spuCode,
             "skuCode" => $skuCode,
             "orderCode" => $orderCode,
@@ -1027,14 +991,6 @@ class Sale extends Base
             'good_createrid' => $zxinfo['createrid'],
             'good_creater' => $zxinfo['creater'],//商品创建人id
         ];
-//        $token = isset($this->post['token']) && $this->post['token'] != "" ? trim($this->post['token']) : "";
-//        if ($token == "") {
-//            return error_show(102, "参数token不能为空");
-//        }
-//        $apply_id = GetUserInfo($token);
-//        if (empty($apply_id) || $apply_id['code'] != 0) {
-//            return error_show(102, "申请人数据不存在");
-//        }
         $rm = $this->uid;//isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
         $ri = $this->uname;//isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
 
@@ -1081,6 +1037,7 @@ class Sale extends Base
                 "good_code" => $spuCode,
                 "skuCode" => $skuCode,
                 "customer_code" => $zxorder['khNo'],
+                "customerName" => $companyinfo['data'][$zxorder['khNo']]??"",
                 "good_name" => isset($zxinfo['good_name']) && $zxinfo['good_name'] !== '' ? $zxinfo['good_name'] : '',
                 "good_num" => $good_num,
                 "cat_id" => $zxinfo['cat_id'],
@@ -1096,7 +1053,10 @@ class Sale extends Base
                 "good_type" => 1,
                 "send_type" => $sendtype,
                 "supplierNo" => $companyNo,
+                "supplierName" =>$companyinfo['data'][$companyNo]??"",
                 "is_del" => 0,
+                "supNo" => $zxinfo['supplierNo'],
+                "supName" =>$supplier_temp_info['name'],
                 "zxNo" => $bidNo,
                 "platform_order" => $platform_order,
                 "platform_id" => $zxorder['platform_code'],
@@ -1379,14 +1339,9 @@ class Sale extends Base
         if ($planinfo == "") {
             return error_show(1002, "参数planinfo不能为空");
         }
-//        $token = isset($this->post['token']) && $this->post['token'] != "" ? trim($this->post['token']) : "";
-//        if ($token == "") {
-//            return error_show(102, "参数token不能为空");
-//        }
-//        $apply_id = GetUserInfo($token);
-//        if (empty($apply_id) || $apply_id['code'] != 0) {
-//            return error_show(102, "申请人数据不存在");
-//        }
+        $userCommon = new \app\admin\common\User();
+        $names = $userCommon->handle('getCodeAndName', ['code' =>[$project['companyNo'],$project['khNo']]]);
+		if($names['code']!=0 || empty($names['data']) ) return error_show($names['code'],$names['message']);
         $rm = $this->uid;//isset($apply_id["data"]['id']) ? $apply_id["data"]['id'] : "";
         $ri = $this->uname;//isset($apply_id["data"]['nickname']) ? $apply_id["data"]['nickname'] : "";
         Db::startTrans();
@@ -1397,11 +1352,14 @@ class Sale extends Base
                 return error_show(1004, "未找到方案信息");
             }
             $feedid = array_column($feedbackid, "feedback_id");
+            $feedbacks = Db::name("project_feedback")
+            ->where(["id" => $feedid, "projectNo" => $plan['projectNo'], "is_del" => 0])
+            ->column("*","id");
+
             foreach ($planinfo as $key => $value) {
                 $good = [];
-                $feedback = Db::name("project_feedback")->where(["id" => $value['feedback_id'], "projectNo" => $plan['projectNo'],
-                    "is_del" => 0])->find();
-                if ($feedback == false) {
+                $feedback = $feedbacks[$value['feedback_id']]??[];
+                if (empty($feedback)) {
                     Db::rollback();
                     return error_show(1002, "反馈数据未找到");
                 }
@@ -1414,7 +1372,9 @@ class Sale extends Base
                 $good['sale_price'] = $price['sale_price'];
                 $good['origin_price'] = $feedback['origin_price'];
                 $good['companyNo'] = $project['companyNo'];
+                $good['companyName'] =$names['data'][$project['companyNo']]??'';
                 $good['customerNo'] = $project['khNo'];
+                $good['customerName'] =$names['data'][$project['khNo']]??'';
                 $good['pgNo'] = $feedback['pgNo'];
                 $good['platform_id'] = $project['platform_id'];
                 $good['arrtime'] = $arrtime;
@@ -1567,16 +1527,12 @@ class Sale extends Base
     {
         $goodinfo = Db::name("consult_bids")->where(["spuCode" => $data['spuCode'], "is_del" => 0])->find();
         if ($goodinfo == false) {
-            return false;
+           throw new Exception("咨询商品未找到");
         }
         $orderCode = makeNo("QR");
-//        $supplier_temp_info = Db::name('supplier')
-//            ->field('id,person,personid')
-//            ->where('code',$goodinfo['supplierNo'])
-//            ->findOrEmpty();
         $userCommon= new \app\admin\common\User();
 		$supplier_temp =$userCommon->handle("sInfo",["code"=>$goodinfo['supplierNo']]);
-		if($supplier_temp['code']!=0 || empty($supplier_temp['data']) ) return error_show(1002,"采购单供应商不存在");
+		if($supplier_temp['code']!=0 || empty($supplier_temp['data']) ) throw new Exception("采购单供应商不存在");
 		$holder_id=$supplier_temp['data']['personid']??0;
 		$holder_name=$supplier_temp['data']['person']??'';
 		$supplierName=$supplier_temp['data']['name']??'';
@@ -1585,6 +1541,7 @@ class Sale extends Base
             "supplierNo" => $goodinfo['supplierNo'],
             "supplierName" => $supplierName,
             "companyNo" => $data['companyNo'],
+            "companyName" => $data['companyName'],
             "spuCode" => $data['spuCode'],
             "skuCode" => "",
             "orderCode" => $orderCode,
@@ -1616,6 +1573,7 @@ class Sale extends Base
             "good_code" => $data['spuCode'],
             "skuCode" => "",
             "customer_code" => $data['customerNo'],
+            "customerName" => $data['customerName'],
             "good_name" => isset($goodinfo['good_name']) && $goodinfo['good_name'] !== '' ? $goodinfo['good_name'] : '',
             "good_num" => $data['good_num'],
             "cat_id" => $goodinfo['cat_id'],
@@ -1631,6 +1589,9 @@ class Sale extends Base
             "good_type" => 1,
             "send_type" => $data['sendtype'],
             "supplierNo" => $data['companyNo'],
+            "supplierName" => $data['companyName'],
+            "supNo" =>$goodinfo['supplierNo'],
+            "supName" => $supplierName,
             "is_del" => 0,
             "zxNo" => $data["pgNo"],
             "platform_order" => "",
@@ -1678,14 +1639,14 @@ class Sale extends Base
             ]);
             $bol = $this->createCgd($cgd, $standing_book_data);
             if ($bol == false) {
-                return false;
+                throw new Exception("采购单生成失败");
             }
             $bidstatus = $goodinfo['status'];
             $goodinfo['status'] = 6;
             $goodinfo['updatetime'] = date("Y-m-d H:i:s");
             $sa = Db::name("consult_bids")->save($goodinfo);
             if ($sa == false) {
-                return false;
+                throw new Exception("咨询反馈单更新失败");
             }
 
 
@@ -1694,7 +1655,7 @@ class Sale extends Base
             $saa = Db::name("consult_info")->where(["infoNo"=>$goodinfo['infoNo']])->update(["status"=>5,
             "updatetime"=>date("Y-m-d H:i:s")]);
             if ($saa == false) {
-                return false;
+               throw new Exception("咨询单更新失败");
             }
             //修改状态,添加待办
             ActionLog::logAdd(['id'=>$this->uid,'nickname'=>$this->uname], [
@@ -1706,7 +1667,7 @@ class Sale extends Base
 
             $zxorder = Db::name("consult_order")->where(["zxNo" => $goodinfo["zxNo"], "is_del" => 0])->find();
             if ($zxorder == false) {
-                return false;
+               throw new Exception("咨询单为找到");
             }
             $limt = [
                 "spuCode" => $goodinfo['spuCode'],
@@ -1719,6 +1680,7 @@ class Sale extends Base
                 "customized" => $goodinfo['work_day'],
                 "tax" => $goodinfo['tax'],
                 "supplierNo" => $goodinfo["supplierNo"],
+                "supplierName" => $supplierName,
                 "is_auth" => 0,
                 "craft_desc" => $goodinfo['good_name'],
                 "good_remark" => "",
@@ -1731,7 +1693,8 @@ class Sale extends Base
                 "noble_metal" => $goodinfo['metal_id'],
                 "is_gold_price" => $goodinfo['is_gold_price'],
                 "good_weight" => $goodinfo['good_weight'],
-                "companyNo" => $zxorder['companyNo'],
+                "companyNo" => $data['companyNo'],
+                "companyName" => $data['companyName'],
                 "config" => $goodinfo['config'],
                 "other_config" => $goodinfo['other_config'],
                 "weight" => $goodinfo['weight'],
@@ -1905,21 +1868,16 @@ class Sale extends Base
         }
 
         $orderCode = makeNo("QR");
-
-
-//        $supplier_temp_info = Db::name('supplier')
-//            ->field('id,person,personid')
-//            ->where('code',$good['supplierNo'])
-//            ->findOrEmpty();
 		$userCommon= new \app\admin\common\User();
 		$supplier_temp =$userCommon->handle("sInfo",["code"=>$good['supplierNo']]);
-		if($supplier_temp['code']!=0 || empty($supplier_temp['data']) ) return error_show(1002,"供应商不存在");
+		if($supplier_temp['code']!=0 || empty($supplier_temp['data']) )  throw new Exception("供应商不存在");
 		$supplier_temp_info = $supplier_temp['data'];
         $datas = [
             "orderCode" => $orderCode,
             "good_code" => $data['spuCode'],
             "skuCode" => $data['skuCode'],
             "customer_code" => $data['customerNo'],
+            "customerName" => $data['customerName'],
             "good_name" => isset($good['good_name']) && $good['good_name'] !== '' ? $good['good_name'] : '',
             "good_num" => $data['good_num'],
             "cat_id" => $good['cat_id'],
@@ -1935,6 +1893,9 @@ class Sale extends Base
             "good_type" => 1,
             "send_type" => $data['sendtype'],
             "supplierNo" => $data['companyNo'],
+            "supplierName" => $data['companyName'],
+            "supName" => $supplier_temp_info['name'],
+            "supNo" => $good['supplierNo'],
             "is_del" => 0,
             "zxNo" => $data["pgNo"],
             "platform_order" => "",
@@ -1983,6 +1944,7 @@ class Sale extends Base
                 "supplierNo" => $good['supplierNo'],
                 "supplierName" => $supplier_temp_info['name'],
                 "companyNo" => $data['companyNo'],
+                "companyName" => $data['companyName'],
                 "orderCode" => $orderCode,
                 "spuCode" => $good['spuCode'],
                 "skuCode" => $good['skuCode'],
@@ -2016,16 +1978,6 @@ class Sale extends Base
                 }
             } else {
 
-//                $stock = Db::name("good_stock")->alias("a")->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")->where
-//                (["spuCode" => $good['spuCode'], "a.is_del" => 0, "a.status" => 1, "b.wsm_type" => 5, "b.companyNo"
-//                => $data['companyNo']])->field("a.id,a.usable_stock,a.wait_out_stock,a.wsm_code")->find();
-//                if ($stock == false || $stock['usable_stock'] < $data['good_num']) {
-//                    return 1; //库存不足
-//                }
-//			$stock_num =Db::name("good_stock_info")->where(["stockid"=>$stock['id']])->sum('balance_num');
-//            if($stock_num <  $data['good_num']){
-//              return 1; //库存不足
-//            }
             $stock_arr = Db::name("good_stock")->alias("a")
 	            ->leftJoin("warehouse_info b", "a.wsm_code=b.wsm_code")
 	            ->leftJoin("good_stock_info c", "a.id=c.stockid and c.balance_num>0")
@@ -2036,20 +1988,12 @@ class Sale extends Base
 	            if($stock_num < $data['good_num']){
 	                return 1;
 	            }
-//                $bol = $this->RelaCgd(['orderCode' => $orderCode, "good_num" => $data['good_num'], "spuCode" => $good['spuCode'], "companyNo" => $data['companyNo'], "cost_fee" => $goodlass['cost_fee'], 'order_type' => $cgd['order_type'], 'order_source' => $cgd['order_source']], $standing_book_data);
-//                if ($bol == false) {
-//                    return 3;//关联采购失败
-//                }
                 if (!empty($stockid)) {
 
                      $stockinfo =GoodStockInfo::OrderBn($orderCode,$stockid,$data['good_num']);
                         if($stockinfo==false){
                         	      return 2; //库存不足
                         }
-                    //商品变动日志表,good_log_code字段存储采购单号
-//                    $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 2, 'stock' => $data['good_num'], "stock_name" => "usable_stock"];
-//                    $good_data[] = ['good_log_code' => $orderCode, "stock_id" => $stock['id'], "type" => 1, 'stock' => $data['good_num'], "stock_name" => "wait_out_stock"];
-//                    GoodLog::LogAdd(['id'=>$this->uid,'nickname'=>$this->uname], $good_data, "XSQRD");
                 }
 
             }

+ 1104 - 0
app/admin/controller/SupplierClient.php

@@ -0,0 +1,1104 @@
+<?php
+
+
+namespace app\admin\controller;
+
+
+use think\App;
+use think\facade\Db;
+class SupplierClient extends Base {
+	public function __construct(App $app) {parent::__construct($app);}
+	/**供应商销售单列表
+* @return \think\response\Json|void
+* @throws \think\db\exception\DataNotFoundException
+* @throws \think\db\exception\DbException
+* @throws \think\db\exception\ModelNotFoundException
+ */
+	public function cgdlist(){
+        $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 = [['po.is_del', "=", 0]];
+        $bkcode = isset($this->post['bk_code']) && $this->post['bk_code']!="" ? trim($this->post['bk_code']):"";
+        if($bkcode!==""){
+            $where[]=['po.bkcode',"like", "%{$bkcode}%"];
+        }
+        $status = isset($this->post['status']) && $this->post['status']!=="" ? intval($this->post['status']):"";
+        if($status!==""){
+            $where[]=['po.status',"=", $status];
+        }
+        $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo']!="" ? trim($this->post['cgdNo']) :"";
+        if($cgdNo!==""){
+            $where[]=['po.cgdNo',"like", "%{$cgdNo}%"];
+        }
+
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name']!="" ? trim($this->post['apply_name']):"";
+        if($apply_name!==""){
+            $where[]=['po.cgder',"like", "%{$apply_name}%"];
+        }
+        $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code']!="" ? trim($this->post['wsm_code']):"";
+        if($wsm_code!==""){
+            $where[]=['po.wsm_code',"=", $wsm_code];
+        }
+        $wsm_in_code = isset($this->post['wsm_in_code']) && $this->post['wsm_in_code']!="" ? trim($this->post['wsm_in_code']):"";
+        if($wsm_in_code!==""){
+            $incode = Db::name("purchease_in")->where(["wsm_in_code"=>Db::raw(" like %{$wsm_in_code}%"),"is_del"=>0])->column("cgdNo");
+            if(empty($incode)){
+                return error_show(1004,"未找到有关入库单信息");
+            }
+            $where[]=['po.cgdNo',"in", $incode];
+        }
+        $good_name = isset($this->post['good_name']) && $this->post['good_name']!="" ? trim($this->post['good_name']):"";
+        if($good_name!==""){
+            $where[]=['po.good_name',"like", "%{$good_name}%"];
+        }
+        $good_code = isset($this->post['good_code']) && $this->post['good_code']!="" ? trim($this->post['good_code']) :"";
+        if($good_code!==""){
+            $where[]=['po.spuCode',"like", "%{$good_code}%"];
+        }
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo']!="" ? trim($this->post['supplierNo']) :"";
+        if($supplierNo!==""){
+            $where[]=['po.supplierNo',"=", $supplierNo];
+        }
+        $wsm_supplierNo = isset($this->post['wsm_supplierNo']) && $this->post['wsm_supplierNo']!="" ? trim($this->post['wsm_supplierNo']) :"";
+        if($wsm_supplierNo!==""){
+            $wsmcode = Db::name("warehouse_info")->where(["is_del"=>0,"supplierNo"=>$wsm_supplierNo])->column("wsm_code");
+            $where[]=['po.wsm_code',"in", $wsmcode];
+        }
+        $start = isset($this->post['start']) && $this->post['start']!="" ?$this->post['start']:"";
+        if($start!==""){
+            $where[]=['po.addtime',">=", $start." 00:00:00"];
+        }
+        $end = isset($this->post['end']) && $this->post['end']!="" ?$this->post['end']:"";
+        if($end!==""){
+            $where[]=['po.addtime',"<=", $end." 23:59:59"];
+        }
+        $last_start = isset($this->post['last_start']) && $this->post['last_start']!="" ?$this->post['last_start']:"";
+        if($last_start!==""){
+            $where[]=['po.lasttime',">=", $last_start." 00:00:00"];
+
+        }
+        $last_end = isset($this->post['last_end']) && $this->post['last_end']!="" ?$this->post['last_end']:"";
+        if($last_end!==""){
+            $where[]=['po.lasttime',"<=", $last_end." 23:59:59"];
+        }
+        $orderCode = isset($this->post['orderCode']) && $this->post['orderCode']!="" ?$this->post['orderCode']:"";
+        if($orderCode!==""){
+            $where[]=['on.orderCode',"like", '%'.$orderCode.'%'];
+        }
+
+        //筛选供应商名称
+        $supplier_name = isset($this->post['supplier_name']) && $this->post['supplier_name'] != "" ? $this->post['supplier_name'] : "";
+        if ($supplier_name != '') $where[] = ['po.supplier_name', 'like', '%' . $supplier_name . '%'];
+
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo'] != "" ? trim($this->post['relaComNo']) : "";
+        if ($relaComNo !== "") $where[] = ['po.companyNo', '=', $relaComNo];
+
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo'] != "" ? trim($this->post['relaComNo']) : "";
+
+        $userCommon = new \app\admin\common\User();
+//        //只有level2的账号过滤数据权限
+        if ($this->level == 2) {
+            $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+
+                $supplierNos = Db::connect('mysql_sys')
+                    ->name('supplier')
+                    ->where(['is_del' => 0, 'personid' => $arr])
+                    ->column('code');
+
+                $where[] = ['po.supplierNo', 'in', $supplierNos];
+            }
+            if ($relaComNo !== "") $where[] = ['po.companyNo', '=', $relaComNo];
+        }
+         if ($this->level == 3) {
+			if ($relaComNo !== "") $where[] = ['po.supplierNo', '=', $relaComNo];
+         }
+
+        $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
+        if ($company_name !== "") $where[] = ["po.cgder_id", 'in', get_company_item_user_by_name($company_name)];
+
+        $order_type = isset($this->post['order_type']) && $this->post['order_type'] !== "" ? intval($this->post['order_type']) : "";
+        if ($order_type !== "") $where[] = ["po.order_type", '=', $order_type];
+
+        $order_source = isset($this->post['order_source']) && $this->post['order_source'] !== "" ? intval($this->post['order_source']) : "";
+        if ($order_source !== "") $where[] = ["po.order_source", '=', $order_source];
+
+        $count = Db::name("purchease_order")
+            ->alias('po')
+            ->leftJoin('order_num on', 'on.cgdNo=po.cgdNo')
+            ->leftJoin("depart_user u", "u.uid=po.cgder_id AND u.is_del=0")
+            ->where($where)
+            ->where(function ($query) use ($where) {
+                $query->whereOr([['po.order_type', '<>', 1], ['po.order_source', '=', 0]]);
+            })->count();
+        $total = ceil($count/$size);
+        $page = $page >= $total ? $total : $page;
+        $list = Db::name("purchease_order")
+            ->alias('po')
+            ->leftJoin('order_num on','on.cgdNo=po.cgdNo')
+            ->field('po.*,on.orderCode,"" supplier_cgderid,"" supplier_cgder')
+            ->where($where)
+            ->where(function($query) use ($where){$query->whereOr([['po.order_type', '<>', 1],['po.order_source', '=', 0]]);})
+            ->page($page,$size)
+            ->order("po.addtime desc")
+            ->select()
+            ->toArray();
+
+        $account = checkHasAccountBySupplierNos(array_column($list,'supplierNo'));
+        $all_createrid = array_column($list,'cgder_id');
+        $item = get_company_name_by_uid($all_createrid);
+        $data=[];
+        $wsmCodes = array_column($list, 'wsm_code');
+        $wsmcode = Db::name("warehouse_info")
+            ->alias("a")
+            ->where(["a.wsm_code" => $wsmCodes])
+            ->column("a.name as wsm_name,a.supplierNo as code", "wsm_code");
+        $names = $userCommon->handle('getCodeAndName', ['code' => array_unique(array_merge(array_column($wsmcode,"code"),array_column($list,"companyNo")))]);
+        $person_list = $userCommon->handle('sGetList', ['more_code' => array_unique(array_column($list, 'supplierNo')), 'size' => $size]);
+        $person_list = array_column($person_list['data']['list'], null, 'code');
+
+        foreach ($list as $value){
+            $value['wsm_name'] = $value['wsm_code'] != '' ? $wsmcode[$value['wsm_code']]['wsm_name'] ?? '' : "";
+            $value['wsm_supplier'] = $value['wsm_code'] != '' ? $person_list[$wsmcode[$value['wsm_code']]['code']]['name'] ?? "" : '';
+            $value['wsm_supplierNo'] = $value['wsm_code'] != '' ? $wsmcode[$value['wsm_code']]['code'] ?? "" : '';
+            $value['supplier_cgderid'] = $person_list[$value['supplierNo']]['personid'] ?? '';
+            $value['supplier_cgder'] = $person_list[$value['supplierNo']]['person'] ?? '';
+            $value['companyName'] = $names['data'][$value['companyNo']] ?? '';
+            if($value['order_type']==3){
+                $goon = Db::name("good_zixun")->where(["spuCode"=>$value['spuCode'],"is_del"=>0])->find();
+                $value["speclist"]=isset($goon['specinfo'])&&$goon['specinfo']!=""? json_decode($goon['specinfo'],true):"";
+                //为了格式统一,缺了一个spec_value
+                if ($value['speclist'] != '') {
+                    foreach ($value['speclist'] as &$v) {
+                        $v['spec_value'] = $v['spec_value_name'];
+                    }
+                }
+
+            }else {
+                $goon =Db::name('good_basic')->where(['spuCode'=>$value['spuCode']])->find();
+                $spec = Db::name("good_spec")->where(["spuCode"=>$goon['spuCode'],"is_del"=>0])->select()->toArray();
+                $speclist=[];
+                if(!empty($spec)){
+                    foreach ($spec as $val){
+                        $temp=[];
+                        $temp['id']=$val['id'];
+                        $temp['spuCode']=$val['spuCode'];
+                        $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["speclist"]=empty($speclist)?[]:$speclist;
+            }
+            $inorder= Db::name("purchease_in")
+                ->where(['cgdNo'=>$value['cgdNo'],"is_del"=>0])
+                ->select()
+                ->toArray();
+            $value['child']=empty($inorder)? [] : $inorder;
+            $value['send_num'] -=$value['th_num'];
+            $value['total_fee'] =round($value['total_fee']-$value['th_fee'],2);
+            $value['company_name'] = $item[$value['cgder_id']]??'';
+            $value['has_account'] = (int)isset($account[$value['supplierNo']]);
+            $data[]=$value;
+        }
+        return app_show(0,"获取成功",["list"=>$data ,"count"=>$count]);
+	}
+/**供应商入库单
+* @return \think\response\Json|void
+* @throws \think\db\exception\DataNotFoundException
+* @throws \think\db\exception\DbException
+* @throws \think\db\exception\ModelNotFoundException
+ */
+	public function cgdInList(){
+		$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]];
+        $wsm_in_code=isset($this->post['wsm_in_code']) && $this->post['wsm_in_code']!==""? trim($this->post['wsm_in_code']) :"";
+        if($wsm_in_code!==""){
+            $where[]=["a.wsm_in_code",'like',"%$wsm_in_code%"];
+        }
+        $cgdNo= isset($this->post['cgdNo']) && $this->post['cgdNo'] !==""? trim($this->post['cgdNo']) :"";
+        if($cgdNo!==""){
+            $where[]=['a.cgdNo','like',"%$cgdNo%"];
+        }
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] !==""? trim($this->post['apply_name']):"";
+        if($apply_name!==""){
+            $where[]=['a.apply_name','like',"%$apply_name%"];
+        }
+        $apply_id= isset($this->post['apply_id']) && $this->post['apply_id'] !==""? trim($this->post['apply_id']):"";
+        if($apply_id!==""){
+            $where[]=['a.apply_id','=',$apply_id];
+        }
+        $status= isset($this->post['status']) && $this->post['status'] !==""? trim($this->post['status']):"";
+        if($status!==""){
+            $where[]=['a.status','=',$status];
+        }
+        $start= isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
+        if ($start !=="") {
+            $where[]= ["a.sendtime",'>=',$start];
+        }
+        $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] :"";
+        if($end !==""){
+            $where[]= ["a.sendtime",'<=',$end];
+        }
+        $order_type=isset($this->post['order_type']) && $this->post['order_type']!==""? intval($this->post['order_type']):"";
+        if($order_type !==""){
+            $where[]= ["b.order_type",'=',$order_type];
+        }
+        $order_source=isset($this->post['order_source']) && $this->post['order_source']!==""? intval($this->post['order_source']):"";
+        if($order_source !=="")  $where[]= ["b.order_source",'=',$order_source];
+
+        $good_type_code=isset($this->post['good_type_code']) && $this->post['good_type_code']!==""? trim($this->post['good_type_code']):"";
+        if($good_type_code !==""){
+            $where[]= ["b.spuCode",'like',"%$good_type_code%"];
+        }
+        $good_name=isset($this->post['good_name']) && $this->post['good_name']!==""? trim($this->post['good_name']):"";
+        if($good_name !==""){
+            $where[]= ["b.good_name",'like',"%$good_name%"];
+        }
+        $supplie=isset($this->post['supplier']) && $this->post['supplier']!==""? trim($this->post['supplier']):"";
+        if($supplie !==""){
+            $where[]= ["b.supplier_name",'like',"%$supplie%"];
+        }
+        $wsm_code=isset($this->post['wsm_code']) && $this->post['wsm_code']!==""? trim($this->post['wsm_code']):"";
+        if($wsm_code !==""){
+            $where[]= ["a.wsm_code",'=',$wsm_code];
+        }
+        $supplierNo =isset($this->post['supplierNo']) &&$this->post['supplierNo'] !=="" ? trim($this->post['supplierNo']):"";
+        if($supplierNo!==""){
+            $where[]= ["b.supplierNo",'=',$supplierNo];
+        }
+        $condition=[];
+        $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)];
+
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo']!="" ? trim($this->post['relaComNo']):"";
+        if($this->level==2){
+        	if($relaComNo!=='') $where[]=['b.companyNo','=', $relaComNo];
+        	   $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+
+                if($arr){
+                    $sys_supplier = Db::connect('mysql_sys')
+                        ->name('supplier')
+                        ->field('code')
+                        ->where(['is_del'=>0,'personid'=>$arr])
+                        ->buildSql();
+                    $condition[] = ["b.supplierNo", "in", $sys_supplier];
+                }
+
+                $condition[] = ["a.apply_id", "in", $hand];
+                $condition[] = ["c.contactor", "in", $hand];
+            }
+        }
+        if($this->level==3){
+        	if($relaComNo!=='') $where[]=['b.supplierNo','=', $relaComNo];
+        }
+
+        $count = Db::name('purchease_in')
+            ->alias('a')
+            ->join("purchease_order b","b.cgdNo=a.cgdNo","left")
+            ->leftJoin("warehouse_info c","a.wsm_code=c.wsm_code")
+            ->where($where)
+            ->where(function ($query)use ($condition){$query->whereOr($condition);})
+            ->count();
+        $total = ceil($count/$size);
+        $page = $page >= $total ? $total : $page;
+        $list = Db::name('purchease_in')
+            ->alias('a')
+            ->join("purchease_order b","b.cgdNo=a.cgdNo","left")
+            ->leftJoin("warehouse_info c","a.wsm_code=c.wsm_code")
+            ->where($where)
+             ->where(function ($query)use ($condition){$query->whereOr($condition);})
+            ->page($page,$size)
+            ->field("a.apply_name,a.sendtime,b.order_type,b.order_source,a.status,a.cgdNo,a.wsm_in_code,a.send_num,a.wsm_code,b.good_name,b.spuCode,a.post_company,a.post_code,a.post_fee,a.apply_id,a.wsm_num,a.error_num,a.wait_num,a.status,a.check_name,a.checkid,b.bkcode,b.supplierNo,'' cgder_id,'' cgder,b.good_createrid,b.good_creater,c.name wsm_name,b.supplierNo,b.supplier_name,c.supplierNo wsm_supplierNo,b.companyNo")
+            ->order("a.addtime desc")
+            ->select()
+            ->toArray();
+
+        $all_createrid = array_column($list,'apply_id');
+        $item = get_company_name_by_uid($all_createrid);
+
+        //获取采购单供应商和仓库供应商的名称
+        $userCommon = new \app\admin\common\User();
+        $names = $userCommon->handle('getCodeAndName',['code'=>array_unique(array_merge(array_column($list,'companyNo'),array_column($list,'wsm_supplierNo')))]);
+
+        $all_supplier = $userCommon->handle('sGetList',['more_code'=>array_column($list,'supplierNo'),'page'=>1,'size'=>$size]);
+        $all_supplier_list = array_column($all_supplier['data']['list'],null,'code');
+
+        $data=[];
+        foreach ($list as $value){
+
+            $value['cgder_id'] = $all_supplier_list[$value['supplierNo']]['personid']??'';
+            $value['cgder'] = $all_supplier_list[$value['supplierNo']]['person']??'';
+
+            //获取规格、品牌信息
+            if ($value['order_type'] == 3) {
+                $temp = Db::name('good_zixun')
+                    ->alias('gz')
+                    ->field('gz.specinfo,b.brand_name')
+                    ->join('brand b', 'b.id=gz.brand_id')
+                    ->where(['gz.spuCode' => $value['spuCode'], 'gz.is_del' => 0])
+                    ->find();
+                $value["brand_name"] = $temp['brand_name'];
+                $value["speclist"] = json_decode($temp['specinfo'], true);
+
+            } else {
+                $value['brand_name'] = Db::name('good_basic')
+                    ->alias('gb')
+                    ->join('brand b', 'b.id=gb.brand_id')
+                    ->where(['gb.spuCode' => $value['spuCode']])
+                    ->value('b.brand_name');
+
+                $spec = Db::name("good_spec")
+                    ->where(["spuCode" => $value['spuCode'], "is_del" => 0])
+                    ->select()
+                    ->toArray();
+                $speclist = [];
+                if (!empty($spec)) {
+                    foreach ($spec as $val) {
+                        $temp = [];
+                        $temp['id'] = $val['id'];
+                        $temp['spuCode'] = $val['spuCode'];
+                        $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["speclist"] = empty($speclist) ? [] : $speclist;
+            }
+            $value['wsm_supplier'] = $names['data'][$value['wsm_supplierNo']]??'';
+            $value['companyName'] = $names['data'][$value['companyNo']]??'';
+            $value['company_name'] = $item[$value['apply_id']]??'';
+            $data[]=$value;
+        }
+        return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
+	}
+/** 采购端退货列表
+* @return \think\response\Json|void
+* @throws \think\db\exception\DataNotFoundException
+* @throws \think\db\exception\DbException
+* @throws \think\db\exception\ModelNotFoundException
+ */
+	 public function returnList(){
+        $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]];
+        $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo']!="" ? trim($this->post['cgdNo']):"";
+        if($cgdNo!=""){
+            $where[]=['a.cgdNo',"like", "%$cgdNo%"];
+        }
+        $returnCode= isset($this->post['returnCode']) && $this->post['returnCode']!="" ? trim($this->post['returnCode']):"";
+        if($returnCode!=""){
+            $where[]=['a.returnCode',"like", "%$returnCode%"];
+        }
+        $good_type_code=isset($this->post['good_type_code']) && $this->post['good_type_code']!==""? trim($this->post['good_type_code']):"";
+        if($good_type_code !=""){
+            $where[]= ["b.spuCode",'like',"%$good_type_code%"];
+        }
+        $good_name=isset($this->post['good_name']) && $this->post['good_name']!==""? trim($this->post['good_name']):"";
+        if($good_name !=""){
+            $where[]= ["b.good_name",'like',"%$good_name%"];
+        }
+        $status=isset($this->post['status']) && $this->post['status']!==""? trim($this->post['status']):"";
+        if($status!=""){
+            $where[]= ["a.status",'=',$status];
+        }
+
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo']!="" ? trim($this->post['relaComNo']):"";
+
+
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] != "" ? trim($this->post['supplierNo']) : "";
+        if ($supplierNo != '') $where[] = ['b.supplierNo', '=', $supplierNo];
+
+        $order_source = isset($this->post['order_source']) && $this->post['order_source'] != "" ? intval($this->post['order_source']) : "";
+        if ($order_source != '') $where[] = ['b.order_source', '=', $order_source];
+        $is_stock = isset($this->post['is_stock']) && $this->post['is_stock'] != "" ? intval($this->post['is_stock']) : "";
+        if ($is_stock != '') $where[] = ['c.is_stock', '=', $is_stock];
+
+//        $role = $this->checkDataShare();
+//        if (!empty($role[DataGroupModel::$type_全部])) $where[] = ["a.apply_id", "in", $role[DataGroupModel::$type_全部]];
+
+        //只有level2的账号过滤数据权限
+        if ($this->level == 2) {
+            $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+                $where[] = ['a.apply_id', 'in', $arr];
+            }
+             if($relaComNo!='') $where[]=['b.companyNo','=', $relaComNo];
+        }
+		if($this->level==3){
+			 if($relaComNo!='') $where[]=['b.supplierNo','=', $relaComNo];
+		}
+        $count = Db::name('purchease_return')
+            ->alias('a')
+            ->leftJoin("purchease_order b","b.cgdNo=a.cgdNo")
+            ->leftJoin("good_basic c","c.spuCode=b.spuCode")
+            ->where($where)
+            ->count();
+        $total = ceil($count / $size);
+        $page = $page >= $total ? $total : $page;
+        $list = Db::name('purchease_return')
+            ->alias('a')
+            ->leftJoin("purchease_order b","b.cgdNo=a.cgdNo")
+            ->leftJoin("good_basic c","c.spuCode=b.spuCode")
+            ->where($where)
+            ->page($page,$size)
+            ->field("a.*,b.spuCode,b.good_price,b.order_type,b.good_price,b.total_fee,b.good_name,b.order_source,c.is_stock,b.supplierNo,b.supplier_name,b.companyNo")
+            ->order("a.addtime desc")
+            ->select()
+            ->toArray();
+        $data=[];
+
+        $userCommon = new \app\admin\common\User();
+        $names = $userCommon->handle('getCodeAndName',['code'=>array_unique(array_column($list,'companyNo'))]);
+
+        foreach ($list as $value){
+            if($value['order_type']==3){
+                $goon = Db::name("good_zixun")->where(["spuCode"=>$value['spuCode'],"is_del"=>0])->find();
+            }else {
+                $goon =Db::name('good_basic')->where(['spuCode'=>$value['spuCode']])->find();
+            }
+            $value['can']= isset($goon['cat_id']) && $goon['cat_id'] !=0 ? made($goon['cat_id']):[];
+            $value['return_fee']= round($value['good_price']*$value['return_num'],2);
+            $value['companyName'] = $names['data'][$value['companyNo']]??'';
+
+            $data[]=$value;
+        }
+        return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
+    }
+/**供应商端公差单列表
+* @return \think\response\Json|void
+* @throws \think\db\exception\DataNotFoundException
+* @throws \think\db\exception\DbException
+* @throws \think\db\exception\ModelNotFoundException
+ */
+    public function difflist(){
+        $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]];
+        $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo']!="" ? trim($this->post['cgdNo']):"";
+        if($cgdNo!=""){
+            $where[]=['a.cgdNo',"like", "%$cgdNo%"];
+        }
+        $status = isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']):"";
+        if($status!==""){
+            $where[]=['a.status',"=",$status];
+        }
+        $start= isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
+        if ($start !="") {
+            $where[]= ["a.addtime",'>=',$start];
+        }
+        $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] :"";
+        if($end !=""){
+            $where[]= ["a.addtime",'<=',$end];
+        }
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] !==""? intval($this->post['apply_name']):"";
+        if($apply_name!==""){
+            $where[]=['a.apply_name',"like","%$apply_name%"];
+        }
+        $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)];
+
+        $order_source = $order_source = isset($this->post['order_source']) && $this->post['order_source'] != "" ? intval($this->post['order_source']) : "";
+        if ($order_source !== "")   $where[] = ['c.order_source', "=", $order_source];
+        $is_stock = $order_source = isset($this->post['is_stock']) && $this->post['is_stock'] != "" ? intval($this->post['is_stock']) : "";
+        if ($is_stock !== "") $where[] = ['b.is_stock', "=", $is_stock];
+
+
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo']!="" ? trim($this->post['relaComNo']):"";
+        if ($this->level == 2) {
+            $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+                $where[] = ['a.apply_id', 'in', $arr];
+            }
+             if($relaComNo!='') $where[]=['c.companyNo','=', $relaComNo];
+        }
+		if($this->level==3){
+			 if($relaComNo!='') $where[]=['c.supplierNo','=', $relaComNo];
+		}
+
+
+        $count = Db::name('purchease_diff')
+            ->alias('a')
+            ->leftJoin("good b","b.spuCode=a.good_code")
+            ->leftJoin("purchease_order c","c.cgdNo=a.cgdNo")
+            ->where($where)
+            ->count();
+        $total = ceil($count/$size);
+        $page = $page >= $total ? $total : $page;
+        $list = Db::name('purchease_diff')
+            ->alias('a')
+            ->leftJoin("good b","b.spuCode=a.good_code")
+            ->leftJoin("purchease_order c","c.cgdNo=a.cgdNo")
+            ->where($where)
+            ->page($page,$size)
+            ->order("a.addtime desc")
+            ->field("a.*,b.cat_id,c.order_source,b.is_stock")
+            ->select()
+            ->toArray();
+
+        $all_createrid = array_column($list,'apply_id');
+        $item = get_company_name_by_uid($all_createrid);
+
+        $data=[];
+
+        foreach ($list as $value){
+            $value['can']= isset($value['cat_id']) && $value['cat_id'] !=0 ? made($value['cat_id']):[];
+            $value['company_name'] = $item[$value['apply_id']]??'';
+
+            //是否具有编辑权限
+            $value['is_allow_update'] = 0;
+            if (in_array($this->roleid, [1, 33]) || in_array($value['apply_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+
+            $data[]=$value;
+        }
+        return app_show(0,"获取成功",['list'=>$data,'count'=>$count]);
+    }
+    //发货申请单列表
+    public function orderOut()
+    {
+        $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]];
+        $orderCode = isset($this->post['orderCode']) && $this->post['orderCode'] !== "" ? trim($this->post['orderCode']) : "";
+        if ($orderCode !== "") {
+            $where[] = ['a.orderCode', "like", "%$orderCode%"];
+        }
+        $order_type = isset($this->post['order_type']) && $this->post['order_type'] !== "" ? trim($this->post['order_type']) : "";
+        if ($order_type !== "") {
+            $where[] = ['a.order_type', "=", $order_type];
+        }
+        $outCode = isset($this->post['outCode']) && $this->post['outCode'] !== "" ? trim($this->post['outCode']) : "";
+        if ($outCode !== "") {
+            $where[] = ['a.outCode', "like", "%$outCode%"];
+        }
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] !== "" ? trim($this->post['apply_name']) : "";
+        if ($apply_name !== "") {
+            $where[] = ['a.apply_name', "like", "%$apply_name%"];
+        }
+        $good_code = isset($this->post['good_code']) && $this->post['good_code'] !== "" ? trim($this->post['good_code']) : "";
+        if ($good_code !== "") {
+            $where[] = ['b.good_code', "like", "%$good_code%"];
+        }
+        $good_name = isset($this->post['good_name']) && $this->post['good_name'] !== "" ? trim($this->post['good_name']) : "";
+        if ($good_name !== "") {
+            $where[] = ['b.good_name', "like", "%$good_name%"];
+        }
+        $supplier_name = isset($this->post['supplier_name']) && $this->post['supplier_name'] !== "" ? trim($this->post['supplier_name']) : "";
+        if ($supplier_name !== "") {
+            $where[] = ['wpo.supplier_name', "like", "%$supplier_name%"];
+        }
+        $status = isset($this->post['status']) && $this->post['status'] !== "" ? trim($this->post['status']) : "";
+        if ($status !== "") {
+            $where[] = ['a.status', "=", $status];
+        }
+        $start = isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start'] : "";
+        if ($start != "") {
+            $where[] = ["a.addtime", '>=', $start . " 00:00:00"];
+        }
+        $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] : "";
+        if ($end != "") {
+            $where[] = ["a.addtime", '<=', $end . " 23:59:59"];
+        }
+        $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] !== "" ? trim($this->post['companyNo']) : "";
+        if ($companyNo != "") {
+            $where[] = ['b.supplierNo', "like", "%$companyNo%"];
+
+        }
+
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo'] !== "" ? trim($this->post['relaComNo']) : "";
+
+
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] !== "" ? trim($this->post['supplierNo']) : "";
+        if ($supplierNo != '') {
+            //sale b 表里存的supplierNo值是GS开头的,即业务公司编码
+            //所以此处应该根据供应商编码筛选商品spuCode,然后筛选发货单
+            $spuCode = Db::name('good_basic')
+                ->where(['is_del' => 0, 'supplierNo' => $supplierNo])
+                ->column('spuCode');
+            $where[] = ['b.good_code', 'in', $spuCode];
+        }
+
+        $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo'] !== "" ? $this->post['cgdNo'] : "";
+        if ($cgdNo != "") {
+            $where[] = ["os.cgdNo", 'like', '%' . $cgdNo . '%'];
+        }
+        $condition = '';
+
+        //只有level2的账号过滤数据权限
+        if ($this->level == 2) {
+            $hand = resign_hand_user($this->uid, 0);
+            $uidarr = implode(",", $hand);
+            //库管只能看到库存品订单,供应商负责人只能看到非库存品订单
+            if (!in_array($this->roleid, [1, 33])) {
+                //库管看到所有的库存品发货申请单
+                if (in_array($this->roleid, config('app.wsm_cgder_role'))) $condition .= " b.is_stock=1";
+                else {
+                    $role = $this->checkDataShare();
+                    if (!empty($role[DataGroupModel::$type_全部])) {
+                        $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+                        if ($condition != '') $condition .= " or ";
+                        $condition .= " a.apply_id in (" . implode(',', $arr) . ")";
+                    }
+                }
+
+                if (!empty($hand)) {
+                    if ($condition != '') $condition .= " or ";
+                    $person_supplier = Db::connect('mysql_sys')
+                        ->name('supplier')
+                        ->where(['is_del'=>0,'personid'=>$uidarr])
+                        ->column('code');
+                    $condition .= "(b.is_stock=0 and wpo.supplierNo in ('" . implode('\',\'', $person_supplier) . "'))";
+                }
+            }
+             if ($relaComNo != '') $where[] = ['b.supplierNo', '=', $relaComNo];
+        }
+
+        //供应商账号只能看到非库存品的订单
+        if ($this->level == 3){
+        	$where[] = ['b.supNo', '=', $relaComNo];
+        }
+
+        $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)];
+
+        //发货时间筛选
+        $start_sendtime = isset($this->post['start_sendtime']) && $this->post['start_sendtime'] !== "" ? $this->post['start_sendtime'] : "";
+        $end_sendtime = isset($this->post['end_sendtime']) && $this->post['end_sendtime'] !== "" ? $this->post['end_sendtime'] : "";
+
+        if ($start_sendtime != "" && $end_sendtime != "") {
+            $where[] = ["a.sendtime", 'between', [$start_sendtime . " 00:00:00", $end_sendtime . " 23:59:59"]];
+            $where[] = ["a.status", '>=', 2];//搜索发货时间时,要指定状态为已发货及之后的状态值(0待发货,1待库管发货,2已发货待收货,3已收货,4已全部退货',)
+        }
+
+        $order_source = isset($this->post['order_source']) && $this->post['order_source'] !== "" ? intval($this->post['order_source']) : "";
+        if ($order_source !== "") $where[] = ["b.order_source", '=', $order_source];
+
+        $count = Db::name('order_out')
+            ->alias('a')
+            ->join("sale b", "b.orderCode=a.orderCode", "left")
+            ->join("warehouse_info n", "n.wsm_code=a.wsm_code", "left")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("purchease_order wpo", "wpo.cgdNo=os.cgdNo")
+            ->where($where)
+            ->where($condition)
+            ->count();
+        $total = ceil($count / $size);
+        $page = $page >= $total ? $total : $page;
+        $list = Db::name('order_out')
+            ->alias('a')
+            ->join("sale b", "b.orderCode=a.orderCode", "left")
+            ->join("warehouse_info n", "n.wsm_code=a.wsm_code AND n.is_del=0", "left")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("purchease_order wpo", "wpo.cgdNo=os.cgdNo")
+            ->field("a.*,b.order_type,b.order_source,b.good_name,b.good_code,b.skuCode,b.customer_code,'' companyName,b.origin_price,b.sale_price,b.total_price,os.cgdNo,wpo.supplierNo,n.supplierNo wsm_supplierNo")
+            ->where($where)
+            ->where($condition)
+            ->order("addtime desc")
+            ->page($page, $size)
+            ->select()
+            ->toArray();
+
+        $all_createrid = array_column($list, 'apply_id');
+        $item = get_company_name_by_uid($all_createrid);
+        $user = new \app\admin\common\User();
+        $names = $user->handle("getCodeAndName", ["code" => array_merge(array_column($list, "supplierNo"), array_column($list, "customer_code"), array_column($list, "wsm_supplierNo"))]);
+        $data = [];
+        foreach ($list as $value) {
+            $value['companyName'] = $names['data'][$value['customer_code']] ?? '';
+            if ($value['order_type'] == 1 && $value['wsm_code'] == '') {
+                $value['wsm_supplierNo'] = $value['supplierNo'];
+                $value['wsm_supplier'] = $names['data'][$value['supplierNo']] ?? "";
+            } else {
+                $value['wsm_supplier'] = $names['data'][$value['wsm_supplierNo']] ?? "";
+            }
+            $addr = Db::name("order_addr")->where(["id" => $value['addrid']])->find();
+            if ($addr) {
+                $addinfo = $addr['addr_code'] != '' ? json_decode($addr['addr_code'], true) ?? $addr['addr_code'] : '';
+                if (is_string($addinfo) && $addinfo != '') {
+                    $addinfo = ["provice_code" => '', "city_code" => '', "area_code" => ''];
+                    list($addinfo['provice_code'], $addinfo['city_code'], $addinfo['area_code']) = explode(",", $addr['addr_code']);
+                }
+                $addr['addr_cn'] = GetAddr(json_encode($addinfo));
+            }
+            if ($value['order_type'] == 3) {
+                $goon = Db::name("good_zixun")->field('id,cat_id')->where(["spuCode" => $value['good_code'], "is_del" => 0])->find();
+            } else {
+                $goon = Db::name('good_platform')->field('a.id,b.cat_id')->alias('a')->join('good b', 'b.spuCode=a.spuCode', 'left')->where(['a.skuCode' => $value['skuCode']])->find();
+            }
+            $value['wsm_has_account'] = 0;
+            $value['addr'] = isset($addr['addr']) ? $addr['addr_cn'] . $addr['addr'] : "";
+            $value['contactor'] = isset($addr['contactor']) ? $addr['contactor'] : "";
+            $value['mobile'] = isset($addr['mobile']) ? $addr['mobile'] : "";
+            $value['can'] = isset($goon['cat_id']) && $goon['cat_id'] != 0 ? made($goon['cat_id']) : [];
+            $value['company_name'] = $item[$value['apply_id']] ?? '';
+            $value['sendtime'] = $value['status'] < 2 ? '' : $value['sendtime'];
+            $data[] = $value;
+        }
+        return app_show(0, "获取成功", ['list' => $data, 'count' => $count]);
+    }
+	  //售后申请单列表
+    public function afterList()
+    {
+        $param = $this->request->only([
+            'page' => 1,
+            'size' => 10,
+            'relaComNo' => '',
+            'returnCode' => '',
+            'outCode' => '',
+            'status' => '',
+            'order_type' => '',
+            'orderCode' => '',
+            'good_code' => '',
+            'good_name' => '',
+            'except_code' => '',
+            'apply_name' => '',
+            'start' => '',
+            'end' => '',
+            'company_name' => '',//部门名称
+            'supplierNo' => '',
+            'customer_code' => '',
+            'companyNo' => '',
+            'order_source' => '',
+        ], 'post', 'trim');
+
+        $where = [['a.is_del', "=", 0]];
+        if ($param['returnCode'] !== '') $where[] = ['a.returnCode', "like", "%{$param['returnCode']}%"];
+        if ($param['outCode'] !== '') $where[] = ['a.outCode', "like", "%{$param['outCode']}%"];
+        if ($param['status'] !== '') $where[] = ['a.status', "=", $param['status']];
+        if ($param['order_type'] !== "") $where[] = ['a.order_type', "=", $param['order_type']];
+        if ($param['orderCode'] != "") $where[] = ['a.orderCode', "like", "%{$param['orderCode']}%"];
+        if ($param['good_code'] != "") $where[] = ['a.good_code', "like", "%{$param['good_code']}%"];
+        if ($param['good_name'] != "") $where[] = ['a.good_name', "like", "%{$param['good_name']}%"];
+        if ($param['customer_code'] != "") $where[] = ['a.customer_code', "like", "%{$param['customer_code']}%"];
+        if ($param['except_code'] != "") $where[] = ['a.except_code', "=", $param['except_code']];
+        if ($param['apply_name'] != "") $where[] = ['a.apply_name', "like", "%{$param['apply_name']}%"];
+        if ($param['start'] !== "") $where[] = ['a.addtime', ">=", $param['start']];
+        if ($param['end'] !== "") $where[] = ['a.addtime', "<=", $param['end']];
+        if ($param['order_source'] !== "") $where[] = ['c.order_source', "=", $param['order_source']];
+        if ($param['supplierNo'] !== "") $where[] = ['a.supplierNo', "like", '%' . $param['supplierNo'] . '%'];
+        if ($param['companyNo'] !== "") $where[] = ['a.companyNo', "like", '%' . $param['companyNo'] . '%'];
+
+
+        $condition = [];
+
+        //只有level2的账号过滤数据权限
+        if ($this->level == 2) {
+            $hand = resign_hand_user($this->uid, 0);
+            $role = $this->checkDataShare();
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+                $condition[] = ["a.person_id", "in", $hand];
+                $condition[] = ["a.apply_id", "in", $arr];
+                $condition[] = ["a.cgderid", "in", $hand];
+            }
+            if ($param['relaComNo'] !== '') $where[] = ['c.supplierNo', "=", $param['relaComNo']];
+        }
+
+        //level3账号不允许看到库存品订单
+        if ($this->level == 3){
+        	 $where[] = ['c.supNo', '=', $param['relaComNo']];
+        }
+//        $condition .="a.cgderid in {$hand} or a.person_id in {$hand} or a.apply_id in ("
+//        .implode(',',$role[DataGroupModel::$type_全部]).")";
+
+        if ($param['company_name'] !== "") $where[] = ["a.apply_id", 'in', get_company_item_user_by_name($param['company_name'])];
+
+        $count = Db::name("order_return")
+            ->alias("a")
+            ->leftJoin("order_returninfo b", "a.returnCode=b.returnCode")
+            ->leftJoin("sale c", "c.orderCode=a.orderCode AND c.is_del=0")
+            ->where($where)
+            ->where(function ($query) use ($condition) {
+                $query->whereOr($condition);
+            })
+            ->count('a.id');;
+        $list = Db::name("order_return")
+            ->alias("a")
+            ->leftJoin("order_returninfo b", "a.returnCode=b.returnCode")
+            ->leftJoin("sale c", "c.orderCode=a.orderCode AND c.is_del=0")
+            ->where($where)
+            ->where(function ($query) use ($condition) {
+                $query->whereOr($condition);
+            })
+            ->field("a.*,b.return_wsm,b.contactor,b.mobile,b.addr,b.addr_code,b.post_code,b.post_company,b.post_fee,b.gys_remark,c.order_source")
+            ->page($param['page'], $param['size'])
+            ->order("a.addtime desc")
+            ->select()
+            ->toArray();
+        $all_createrid = array_column($list, 'apply_id');
+        $item = get_company_name_by_uid($all_createrid);
+        $data = [];
+        foreach ($list as $value) {
+            $value['company_name'] = $item[$value['apply_id']] ?? '';
+            $data[] = $value;
+        }
+        return app_show(0, "获取成功", ['list' => $data, "count" => $count]);
+    }
+	/** 售后退货单
+	* @return \think\response\Json|void
+	* @throws \think\db\exception\DataNotFoundException
+	* @throws \think\db\exception\DbException
+	* @throws \think\db\exception\ModelNotFoundException
+	 */
+    public function backlist()
+    {
+        $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]];
+        $thNo = isset($this->post['thNo']) && $this->post['thNo'] != "" ? trim($this->post['thNo']) : "";
+        if ($thNo != "") {
+            $where[] = ['a.thNo', "like", "%{$thNo}%"];
+        }
+        $status = isset($this->post['status']) && $this->post['status'] !== "" ? intval($this->post['status']) : "";
+        if ($status !== "") {
+            // $where['status'] = $status;
+            $where[] = ['a.status', "=", $status];
+        }
+        $post_code = isset($this->post['post_code']) && $this->post['post_code'] != "" ? trim($this->post['post_code']) : "";
+        if ($post_code != "") {
+            $where[] = ['a.post_code', "like", "%{$post_code}%"];
+        }
+        $post_compay = isset($this->post['post_compay']) && $this->post['post_compay'] != "" ? trim($this->post['post_compay']) : "";
+        if ($post_compay != "") {
+            $where[] = ['a.post_company', "=", $post_compay];
+        }
+        $customer_code = isset($this->post['customer_code']) && $this->post['customer_code'] != "" ? trim($this->post['customer_code']) : "";
+        if ($customer_code != "") {
+            $where[] = ['a.customer_code', "like", "%{$customer_code}%"];
+        }
+
+
+
+        $order_code = isset($this->post['order_code']) && $this->post['order_code'] != "" ? trim($this->post['order_code']) : "";
+        if ($order_code != "") {
+            $where[] = ['a.orderCode', "like", "%{$order_code}%"];
+        }
+        $out_code = isset($this->post['out_code']) && $this->post['out_code'] != "" ? trim($this->post['out_code']) : "";
+        if ($out_code != "") {
+            $where[] = ['a.outCode', "like", "%{$out_code}%"];
+        }
+        $return_code = isset($this->post['return_code']) && $this->post['return_code'] != "" ? trim($this->post['return_code']) : "";
+        if ($return_code != "") {
+            $where[] = ['a.returnCode', "like", "%{$return_code}%"];
+        }
+        $start = isset($this->post['start']) && $this->post['start'] != '' ? $this->post['start'] : "";
+        if ($start !== "") {
+            $where[] = ['a.addtime', ">=", $start];
+        }
+        $end = isset($this->post['end']) && $this->post['end'] != '' ? $this->post['end'] : "";
+        if ($end !== "") {
+            $where[] = ['a.addtime', "<=", $end];
+        }
+
+        $order_source = isset($this->post['order_source']) && $this->post['order_source'] != "" ? trim($this->post['order_source']) : "";
+        if ($order_source !== "") {
+            $where[] = ['b.order_source', "=", $order_source];
+        }
+
+        $supplierNo = trim($this->post['supplierNo'] ?? '');
+        if ($supplierNo !== '') $where[] = ['a.supplierNo', 'like', '%'.$supplierNo.'%'];
+
+        $companyNo = trim($this->post['companyNo'] ?? '');
+        if ($companyNo !== '') $where[] = ['a.companyNo', 'like', '%'.$companyNo.'%'];
+        $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo'] != "" ? trim($this->post['relaComNo']) : "";
+        $condition = [];
+        //只有level2的账号过滤数据权限
+        if ($this->level == 2) {
+            $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+                $condition[] = ['a.apply_id', 'in', $arr];
+                $condition[] = ['a.cgderid', 'in', $hand];
+            }
+            if ($relaComNo != "") $where[] = ['b.supplierNo', '=', $relaComNo];
+        }
+
+        //供应商账号不允许看到库存品数据
+        if ($this->level == 3) {
+        	 $where[] = ['b.supNo', '=', $relaComNo];
+        }
+        $count = Db::name("order_back")
+            ->alias('a')
+            ->leftJoin('sale b', 'b.orderCode=a.orderCode AND b.is_del=0')
+            ->where($where)
+            ->where(function ($query) use ($condition) {
+                $query->whereOr($condition);
+            })
+            ->count('a.id');
+        $total = ceil($count / $size);
+        $page = $page >= $total ? $total : $page;
+        $list = Db::name("order_back")
+            ->alias('a')
+            ->leftJoin('sale b', 'b.orderCode=a.orderCode AND b.is_del=0')
+            ->where($where)
+            ->where(function ($query) use ($condition) {
+                $query->whereOr($condition);
+            })
+            ->field('a.*,b.order_source')
+            ->page($page, $size)
+            ->order("a.addtime desc")
+            ->select()
+            ->toArray();
+        $data = [];
+
+        $all_wsm = Db::name("warehouse_info")
+            ->alias("a")
+            ->where(["a.wsm_code" => array_column($list, 'return_wsm')])
+            ->column("a.name,a.supplierNo", 'a.wsm_code');//b.name,b.code
+
+        $userCommon = new \app\admin\common\User();
+        $names = $userCommon->handle('getCodeAndName', ['code' => array_unique(array_column($all_wsm, 'supplierNo'))]);
+
+        foreach ($list as $value) {
+            $value['wsm_name'] = "";
+            $value['wsm_supplier'] = '';
+            $value['wsm_supplierNo'] = '';
+            if ($value['return_wsm'] != "") {
+                $value['wsm_name'] = $all_wsm[$value['return_wsm']]['name'] ?? '';//isset($wsmcode['wsm_name']) ? $wsmcode['wsm_name']:"";
+                $value['wsm_supplier'] = $names['data'][$all_wsm[$value['return_wsm']]['supplierNo']] ?? '';//isset($wsmcode['name']) ? $wsmcode['name']:"";
+                $value['wsm_supplierNo'] = $all_wsm[$value['return_wsm']]['supplierNo'];//isset($wsmcode['code']) ? $wsmcode['code']:"";
+            }
+            $inorder = Db::name("order_backinfo")
+                ->where(['thNo' => $value['thNo'], "is_del" => 0])
+                ->select()
+                ->toArray();
+            $value['child'] = empty($inorder) ? [] : $inorder;
+            $data[] = $value;
+        }
+        return app_show(0, "获取成功", ["list" => $data, "count" => $count]);
+    }
+     //退货单列表
+    public function reorderlist(){
+        $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 =[['sr.is_del',"=",0]];
+        $bkcode = isset($this->post['returnCode']) && $this->post['returnCode']!="" ? trim($this->post['returnCode']):"";
+        if($bkcode!=""){
+            $where[]=['sr.returnCode',"like", "%{$bkcode}%"];
+        }
+        $status = isset($this->post['status']) && $this->post['status']!=="" ? intval($this->post['status']):"";
+        if($status!==""){
+            $where[]=['sr.status',"=", $status];
+        }
+        $orderCode = isset($this->post['orderCode']) && $this->post['orderCode']!="" ? trim($this->post['orderCode']) :"";
+        if($orderCode!=""){
+            $where[]=['sr.orderCode',"like", "%{$orderCode}%"];
+        }
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name']!="" ? trim($this->post['apply_name']) :"";
+        if($apply_name!=""){
+            $where[]=['sr.apply_name',"like", "%{$apply_name}%"];
+        }
+        $start =isset($this->post['start'])&&$this->post['start']!='' ? $this->post['start']:"";
+        if($start!==""){
+            $where[]=['sr.addtime',">=", $start.' 00:00:00'];
+        }
+        $end =isset($this->post['end'])&&$this->post['end']!='' ? $this->post['end']:"";
+        if($end!==""){
+            $where[]=['sr.addtime',"<=", $end.' 23:59:59'];
+        }
+        //商品成本编码搜索
+        $good_code = isset($this->post['good_code']) && $this->post['good_code'] != "" ? trim($this->post['good_code']) : "";
+        if ($good_code != "") {
+            $where[] = ['sr.good_code', "like", "%{$good_code}%"];
+        }
+        //商品上线编码搜索
+        $skuCode = isset($this->post['skuCode']) && $this->post['skuCode'] != "" ? trim($this->post['skuCode']) : "";
+        if ($skuCode != "") {
+            $where[] = ['b.skuCode', "like", "%{$skuCode}%"];
+        }
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] != "" ? trim($this->post['supplierNo']) : "";
+        if ($supplierNo !== "") $where[] = ['sr.supplierNo', "like", '%' . $supplierNo . '%'];
+
+        $companyNo = isset($this->post['companyNo']) && $this->post['companyNo'] != "" ? trim($this->post['companyNo']) : "";
+        if ($companyNo !== "") $where[] = ['sr.companyNo', "like", '%' . $companyNo . '%'];
+
+        $customer_code = isset($this->post['customer_code']) && $this->post['customer_code'] != "" ? trim($this->post['customer_code']) : "";
+        if ($customer_code !== "") $where[] = ['sr.customer_code', "like", '%' . $customer_code . '%'];
+
+        $order_source = $order_source = isset($this->post['order_source']) && $this->post['order_source'] != "" ? trim($this->post['order_source']) : "";
+        if ($order_source !== "") $where[] = ['b.order_source', "=", $order_source];
+
+
+        $condition=[];
+
+	    $relaComNo = isset($this->post['relaComNo']) && $this->post['relaComNo'] != "" ? trim($this->post['relaComNo']) : "";
+        //只有level2的账号过滤数据权限
+        if ($this->level == 2) {
+            $role = $this->checkDataShare();
+            $hand = resign_hand_user($this->uid, 0);
+            if (!empty($role[DataGroupModel::$type_全部])) {
+                $arr = array_unique(array_merge($hand, $role[DataGroupModel::$type_全部]));
+//        	$uidim =implode(",",$hand);
+//			$condition .= "sr.cgderid in ($uidim) or sr.person_id in ($uidim) or sr.apply_id in (" . implode(',',$arr) .
+//			 ")";
+                $condition[] = ["sr.apply_id", "in", $arr];
+                $condition[] = ["sr.cgderid", "in", $hand];
+                $condition[] = ["sr.person_id", "in", $hand];
+            }
+             if ($relaComNo != "") $where[] = ['sr.companyNo', '=', $relaComNo];
+        }
+
+        //供应商账号不允许看到库存品数据
+        if ($this->level == 3){
+        	 $where[] = ['b.supNo', '=', $relaComNo];
+        }
+		if(in_array($this->roleid,config('app.wsm_cgder_role'))){
+			$where[]=["b.order_type","=",1];
+		}
+        $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)];
+
+        $count=Db::name("sale_return")
+            ->alias('sr')
+            ->leftJoin("sale b", "b.orderCode=sr.orderCode AND b.is_del=0")
+            ->where($where)
+            ->where(function ($query)use ($condition){$query->whereOr($condition);})
+            ->count('sr.id');
+        $total = ceil($count/$size);
+        $page = $total>=$page ? $page :$total;
+        $list = Db::name("sale_return")
+            ->alias('sr')
+            ->field('sr.*,b.skuCode,b.sale_price,b.good_num total_num,b.order_source')
+            ->leftJoin("sale b", "b.orderCode=sr.orderCode AND b.is_del=0")
+            ->where($where)
+            ->where(function ($query)use ($condition){$query->whereOr($condition);})
+            ->order("sr.addtime desc")
+            ->page($page,$size)
+            ->select()
+            ->toArray();
+        $all_createrid = array_column($list,'apply_id');
+        $item = get_company_name_by_uid($all_createrid);
+      $data=[];
+        foreach ($list as $value){
+            $value['error_msg']='';
+            if($value['error_code']!=''){
+                $error = Db::name("result_info")->where(["result_code"=>$value['error_code']])->find();
+                $value['error_msg']= isset($error['result'])?$error['result']:"";
+            }
+            $value['return_total'] =$value['sale_price']*$value['num'] ;
+            $value['company_name'] = $item[$value['apply_id']]??'';
+            $data[]=$value ;
+        }
+        return app_show(0,"获取成功",["count"=>$count,'list'=>$data]);
+    }
+
+}

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

@@ -704,4 +704,12 @@ route::rule('filingTransfer', 'Filing/transfer');//转单
 //网络录单
 route::rule('interadd', 'admin/Filing/orderAdd');//线下订单录入
 route::rule('interedit', 'admin/Filing/orderEdit');
-route::rule('interinfo', 'admin/Filing/orderInfo');
+route::rule('interinfo', 'admin/Filing/orderInfo');
+
+route::rule('supplierCgdList', 'admin/SupplierClient/cgdlist'); //采购单列表
+route::rule('supplierCgdInList', 'admin/SupplierClient/cgdInList');//入库单列表
+route::rule('supplierReturnList', 'admin/SupplierClient/returnList');//入库退货单列表
+route::rule('supplierDiffList', 'admin/SupplierClient/difflist');//公差单列表
+route::rule('supplierAfterList', 'admin/SupplierClient/afterList'); //售后申请单列表
+route::rule('supplierBackList', 'admin/SupplierClient/backlist');//售后退货单列表
+route::rule('supplierReorderList', 'admin/SupplierClient/reorderlist');//未发货退货单列表