Explorar el Código

细节优化,销售单列表新增字段,新增销售单取消接口

wufeng hace 2 años
padre
commit
8cfc6d37cb

+ 10 - 8
app/admin/controller/OrderOutChild.php

@@ -130,7 +130,7 @@ class OrderOutChild extends Base
             'order_type' => '',
         ], 'post', 'trim');
 
-        $where = [['a.id', '=', 0]];
+        $where = [['a.is_del', '=', 0]];
         if ($param['start'] != '') $where[] = ['a.addtime', '>=', $param['start']];
         if ($param['end'] != '') $where[] = ['a.addtime', '<', $param['end'] . ' 23:59:59'];
         if ($param['orderCode'] != '') $where[] = ['a.orderCode', 'like', '%' . $param['orderCode'] . '%'];
@@ -150,8 +150,9 @@ class OrderOutChild extends Base
 
         $list = Db::name('order_out_child')
             ->alias('a')
-            ->field('a.outChildCode 发货工单号,a.orderCode 确认单编号,a.outCode 发货申请单号,a.companyNo 业务公司编号,a.companyName 业务公司名称,a.customer_code 客户编号,a.customer_name 客户名称,a.supplierNo 供应商编号,a.supplierName 供应商名称,a.spuCode 商品成本编号,a.skuCode 商品上线编号,a.good_name 商品名称,case a.order_source when 1 then "直接下单" when 2 then "咨询" when 3 then "项目" when 4 then "平台" when 5 then "有赞" when 6 then "售后补换货" when 7 then "报备转单" when 8 then "支付渠道" end "订单来源",case order_type when 1 then "备库" when 2 then "非库存" when 3 then "咨询商品" when 4 then "报备商品" end "商品类型",a.num 数量,case a.status when 1 then "待发货" when 2 then "发货完成" when 3 then "已收货" when 4 then "已全部退货" end "分单状态",a.addtime 下单时间,a.apply_id,a.apply_name 申请人名称')
+            ->field('a.outChildCode 发货工单号,a.orderCode 确认单编号,a.outCode 发货申请单号,a.companyNo 业务公司编号,a.companyName 业务公司名称,a.customer_code 客户编号,a.customer_name 客户名称,a.supplierNo 供应商编号,a.supplierName 供应商名称,a.spuCode 商品成本编号,a.skuCode 商品上线编号,a.good_name 商品名称,case a.order_source when 1 then "直接下单" when 2 then "咨询" when 3 then "项目" when 4 then "平台" when 5 then "有赞" when 6 then "售后补换货" when 7 then "报备转单" when 8 then "支付渠道" end "订单来源",case order_type when 1 then "备库" when 2 then "非库存" when 3 then "咨询商品" when 4 then "报备商品" end "商品类型",a.num 数量,case a.status when 1 then "待发货" when 2 then "发货完成" when 3 then "已收货" when 4 then "已全部退货" end "分单状态",a.addtime 下单时间,a.apply_name 申请人名称')
             ->order(['a.addtime' => 'desc', 'a.id' => 'desc'])
+            ->where($where)
             ->select()
             ->toArray();
 
@@ -294,7 +295,7 @@ class OrderOutChild extends Base
     public function send()
     {
 
-        if ($this->level != 1) return json_show(0, '管理员不能操作');
+        if ($this->level == 1) return json_show(0, '管理员不能操作');
 
         $param = $this->request->post('list/a', '', 'trim');
 
@@ -372,12 +373,13 @@ class OrderOutChild extends Base
 
                 //如果是库存品,只能由库管操作
                 //非库存品和采返商品只能由供应商负责人操作
-                if ($sale[$child[$value['outChildCode']]['orderCode']]['is_stock'] == 1) {
-                    if ($this->uid != $wsm_contactor[$child[$value['outChildCode']]['wsm_code']]) throw new Exception('库存品只能由仓库管理员操作');
-                } else {
-                    if ($this->uid != $person[$child[$value['outChildCode']]['supplierNo']]) throw new Exception('非库存品和采返商品只能由供应商负责人操作');
+                if ($this->level == 2) {
+                    if ($sale[$child[$value['outChildCode']]['orderCode']]['is_stock'] == 1) {
+                        if ($this->uid != $wsm_contactor[$child[$value['outChildCode']]['wsm_code']]) throw new Exception('库存品只能由仓库管理员操作');
+                    } else {
+                        if ($this->uid != $person[$child[$value['outChildCode']]['supplierNo']]) throw new Exception('非库存品和采返商品只能由供应商负责人操作');
+                    }
                 }
-
                 //工单
                 if (!isset($child[$value['outChildCode']])) throw new Exception($value['outChildCode'] . '工单不存在或状态不允许发货');
 

+ 111 - 95
app/admin/controller/Purch.php

@@ -24,91 +24,92 @@ class Purch extends Base
     }
 
     //采购单列表
-    public function  list(){
-        $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']):"1";
-        $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']):"10";
+    public function  list()
+    {
+        $page = isset($this->post['page']) && $this->post['page'] !== "" ? intval($this->post['page']) : "1";
+        $size = isset($this->post['size']) && $this->post['size'] !== "" ? intval($this->post['size']) : "10";
         $where = [['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}%"];
+        $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!==""){
+        $status = isset($this->post['status']) && $this->post['status'] !== "" ? intval($this->post['status']) : "";
+        if ($status !== "") {
             // $where['status'] = $status;
-            $where[]=['po.status',"=", $status];
+            $where[] = ['po.status', "=", $status];
         }
-        $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo']!="" ? trim($this->post['cgdNo']) :"";
-        if($cgdNo!==""){
+        $cgdNo = isset($this->post['cgdNo']) && $this->post['cgdNo'] != "" ? trim($this->post['cgdNo']) : "";
+        if ($cgdNo !== "") {
             //$where['cgdNo'] = Db::Raw("like '%{$cgdNo}%'");
-            $where[]=['po.cgdNo',"like", "%{$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!==""){
+        $apply_name = isset($this->post['apply_name']) && $this->post['apply_name'] != "" ? trim($this->post['apply_name']) : "";
+        if ($apply_name !== "") {
             // $where['cgder'] =Db::Raw("like '%{$apply_name}%'");
-            $where[]=['po.cgder',"like", "%{$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!==""){
+        $wsm_code = isset($this->post['wsm_code']) && $this->post['wsm_code'] != "" ? trim($this->post['wsm_code']) : "";
+        if ($wsm_code !== "") {
             // $where['wsm_code'] = $wsm_code;
-            $where[]=['po.wsm_code',"=", $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,"未找到有关入库单信息");
+        $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];
+            $where[] = ['po.cgdNo', "in", $incode];
         }
-        $good_name = isset($this->post['good_name']) && $this->post['good_name']!="" ? trim($this->post['good_name']):"";
-        if($good_name!==""){
+        $good_name = isset($this->post['good_name']) && $this->post['good_name'] != "" ? trim($this->post['good_name']) : "";
+        if ($good_name !== "") {
             //$where['good_name'] = Db::raw(" like %{$good_name}%");
-            $where[]=['po.good_name',"like", "%{$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!==""){
+        $good_code = isset($this->post['good_code']) && $this->post['good_code'] != "" ? trim($this->post['good_code']) : "";
+        if ($good_code !== "") {
             // $where['good_code'] = Db::raw(" like %{$good_code}%");
-            $where[]=['po.spuCode',"like", "%{$good_code}%"];
+            $where[] = ['po.spuCode', "like", "%{$good_code}%"];
         }
-        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo']!="" ? trim($this->post['supplierNo']) :"";
-        if($supplierNo!==""){
+        $supplierNo = isset($this->post['supplierNo']) && $this->post['supplierNo'] != "" ? trim($this->post['supplierNo']) : "";
+        if ($supplierNo !== "") {
             // $where['good_code'] = Db::raw(" like %{$good_code}%");
-            $where[]=['po.supplierNo',"=", $supplierNo];
+            $where[] = ['po.supplierNo', "=", $supplierNo];
         }
-        $wsm_supplierNo = isset($this->post['wsm_supplierNo']) && $this->post['wsm_supplierNo']!="" ? trim($this->post['wsm_supplierNo']) :"";
-        if($wsm_supplierNo!==""){
+        $wsm_supplierNo = isset($this->post['wsm_supplierNo']) && $this->post['wsm_supplierNo'] != "" ? trim($this->post['wsm_supplierNo']) : "";
+        if ($wsm_supplierNo !== "") {
 //            $supplier = Db::name("supplier")->where(["code"=>$wsm_supplierNo])->find();
 //            if(empty($supplier)){
 //                return error_show(1004,"未找到供应商信息");
 //            }
-            $wsmcode = Db::name("warehouse_info")->where(["is_del"=>0,"supplierNo"=>$wsm_supplierNo])->column("wsm_code");
-            $where[]=['po.wsm_code',"in", $wsmcode];
+            $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!==""){
+        $start = isset($this->post['start']) && $this->post['start'] != "" ? $this->post['start'] : "";
+        if ($start !== "") {
             // $where['addtime'] = Db::raw(" >= '{$start}'");
-            $where[]=['po.addtime',">=", $start." 00:00:00"];
+            $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"];
+        $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!==""){
+        $last_start = isset($this->post['last_start']) && $this->post['last_start'] != "" ? $this->post['last_start'] : "";
+        if ($last_start !== "") {
             //$where['lasttime'] = Db::raw(" >= '{$last_start}'");
-            $where[]=['po.lasttime',">=", $last_start." 00:00:00"];
+            $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!==""){
+        $last_end = isset($this->post['last_end']) && $this->post['last_end'] != "" ? $this->post['last_end'] : "";
+        if ($last_end !== "") {
             //$where['lasttime'] = Db::raw(" <= '{$last_end}'");
-            $where[]=['po.lasttime',"<=", $last_end." 23:59:59"];
+            $where[] = ['po.lasttime', "<=", $last_end . " 23:59:59"];
         }
-        $orderCode = isset($this->post['orderCode']) && $this->post['orderCode']!="" ?$this->post['orderCode']:"";
-        if($orderCode!==""){
+        $orderCode = isset($this->post['orderCode']) && $this->post['orderCode'] != "" ? $this->post['orderCode'] : "";
+        if ($orderCode !== "") {
             //$where['lasttime'] = Db::raw(" <= '{$last_end}'");
-            $where[]=['on.orderCode',"like", '%'.$orderCode.'%'];
+            $where[] = ['on.orderCode', "like", '%' . $orderCode . '%'];
         }
 
         //筛选供应商名称
@@ -118,9 +119,6 @@ class Purch extends Base
         $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']) : "";
-        if ($relaComNo !== "") $where[] = ['po.companyNo', '=', $relaComNo];
-
 //		$whereor=[];
 //        if(!empty($role['write'])){
 ////            $whereor[]=["po.cgder_id","in",$role['write']];
@@ -172,24 +170,26 @@ class Purch extends Base
             ->where(function ($query) use ($where) {
                 $query->whereOr([['po.order_type', '<>', 1], ['po.order_source', '=', 0]]);
             })->count();
-        $total = ceil($count/$size);
+        $total = ceil($count / $size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name("purchease_order")
             ->alias('po')
-            ->leftJoin('order_num on','on.cgdNo=po.cgdNo')
+            ->leftJoin('order_num on', 'on.cgdNo=po.cgdNo')
 //            ->leftJoin('supplier sip', 'sip.code=po.supplierNo')
             ->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)
+            ->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');
+        $account = checkHasAccountBySupplierNos(array_column($list, 'supplierNo'));
+        $all_createrid = array_column($list, 'cgder_id');
         $item = get_company_name_by_uid($all_createrid);
-        $data=[];
+        $data = [];
         $wsmCodes = array_column($list, 'wsm_code');
         $wsmcode = Db::name("warehouse_info")
             ->alias("a")
@@ -203,27 +203,36 @@ class Purch extends Base
 //            $wsmsupplier = $names['data']??[];
 //         }
 
-        $names = $userCommon->handle('getCodeAndName', ['code' => array_unique(array_merge(array_column($wsmcode,"code"),array_column($list,"companyNo")))]);
+        $names = $userCommon->handle('getCodeAndName', ['code' => array_unique(array_column($wsmcode, "code"))]);
 
         //补充供应商负责人(sip.personid as supplier_cgderid,sip.person as supplier_cgder)
         $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){
+
+        $goon_3_4 = Db::name('good_zixun')
+            ->where(['spuCode' => array_column($list, 'spuCode'), 'is_del' => 0])
+            ->column('specinfo,cat_id,createrid,creater', 'spuCode');
+        $goon_1_2 = Db::name('good_basic')
+            ->where(['is_del' => 0, 'spuCode' => array_column($list, 'spuCode')])
+            ->column('cat_id,createrid,creater', 'spuCode');
+
+        $cat_temp = [];
+        foreach ($list as $value) {
 
 //            $value['wsm_name'] = isset($wsmcode[$value['wsm_code']]['wsm_name']) ? $wsmcode[$value['wsm_code']]['wsm_name'] : "";
 //            $value['wsm_supplier'] =isset($wsmcode[$value['wsm_code']]['code'])? $person_list[$wsmcode[$value['wsm_code']]['code']]['name'] ?? "":"";
 //            $value['wsm_supplierNo'] = $wsmcode[$value['wsm_code']]['code'] ?? "";
 
             $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_supplier'] = $value['wsm_code'] != '' ? $names[$wsmcode[$value['wsm_code']]['code']] ?? '' : '';
             $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']] ?? '';
+//            $value['companyName'] = $names['data'][$value['companyNo']] ?? '';
 //            $value['wsm_name']="";
 //            if($value['wsm_code']!=""){
 ////                $wsmcode = Db::name("warehouse_info")->alias("a")->leftJoin("supplier b","a.supplierNo=b.code")
@@ -235,51 +244,58 @@ class Purch extends Base
 //			$supplierCgder =Db::name("supplier")->where(["code"=>$value['supplierNo']])->findOrEmpty();
 //            $value['supplier_cgderid'] = $supplierCgder['personid'] ??'';
 //            $value['supplier_cgder'] = $supplierCgder['person'] ??'';
-            if($value['order_type']==3 || $value['order_type']==4){
-                $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):"";
+            $cat_id = 0;
+            if ($value['order_type'] == 3 || $value['order_type'] == 4) {
+//                $goon = Db::name("good_zixun")->where(["spuCode"=>$value['spuCode'],"is_del"=>0])->find();
+                $value["speclist"] = $goon_3_4[$value['spuCode']]['specinfo'];//isset($goon['specinfo'])&&$goon['specinfo']!=""? json_decode($goon['specinfo'],true):"";
                 //为了格式统一,缺了一个spec_value
                 if ($value['speclist'] != '') {
-                    foreach ($value['speclist'] as &$v) {
+                    foreach (json_decode($value['speclist'],true) 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;
+                $cat_id = $goon_3_4[$value['spuCode']]['cat_id'];
+
+            } else {
+//                $goon =Db::name('good_basic')->field('cat_id')->where(['spuCode'=>$value['spuCode']])->find();
+                $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["speclist"] = empty($speclist) ? [] : $speclist;
+                $cat_id = $goon_1_2[$value['spuCode']]['cat_id'];
             }
 
+            if (!isset($cat_temp[$cat_id])) $cat_temp[$cat_id] = made($cat_id);
+            $value['can'] = $cat_temp[$cat_id];
+
             //采购单详情字段order_type 为1或者2时,取线上商品库 商品创建人   order_type 为3或者4时 取采购反馈的商品库 商品反馈人
 //            $value['cgder_id'] = $goon['createrid'];
 //            $value['cgder'] = $goon['creater'];
 
-            $inorder= Db::name("purchease_in")
-                ->where(['cgdNo'=>$value['cgdNo'],"is_del"=>0])
+            $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['child'] = empty($inorder) ? [] : $inorder;
+            $value['send_num'] -= $value['th_num'];
+            $value['total_fee'] = round($value['total_fee'] - $value['th_fee'], 2);
             //补充orderCode
 //            $value['orderCode']=isset($all_orderCodes[$value['cgdNo']])?$all_orderCodes[$value['cgdNo']]:'';
-            $value['company_name'] = $item[$value['cgder_id']]??'';
+            $value['company_name'] = $item[$value['cgder_id']] ?? '';
 
             $value['has_account'] = (int)isset($account[$value['supplierNo']]);
 
@@ -287,9 +303,9 @@ class Purch extends Base
 //            $value['is_allow_update'] = 0;
 //            if (in_array($this->roleid, [1, 33]) || in_array($value['cgder_id'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
 
-            $data[]=$value;
+            $data[] = $value;
         }
-        return app_show(0,"获取成功",["list"=>$data ,"count"=>$count]);
+        return app_show(0, "获取成功", ["list" => $data, "count" => $count]);
     }
 
     public function info()

+ 71 - 16
app/admin/controller/Sale.php

@@ -2093,14 +2093,18 @@ class Sale extends Base
         $count = Db::name('sale')
             ->alias('s')
             ->leftJoin('order_num b','b.orderCode=s.orderCode')
+            ->leftJoin('order_use c','c.id=s.use_order')
+            ->leftJoin('purchease_order d','d.cgdNo=b.cgdNo')
             ->where($where)
             ->count();
         $total = ceil($count / $size);
         $page = $page >= $total ? $total : $page;
         $list = Db::name('sale')
             ->alias('s')
-            ->field('s.*,b.cgdNo')
+            ->field('s.*,b.cgdNo,c.order_use useage,d.status cgd_status')
             ->leftJoin('order_num b','b.orderCode=s.orderCode')
+            ->leftJoin('order_use c','c.id=s.use_order')
+            ->leftJoin('purchease_order d','d.cgdNo=b.cgdNo')
             ->order("s.addtime desc")
             ->page($page, $size)
             ->where($where)
@@ -2140,23 +2144,23 @@ class Sale extends Base
             }
 
             $value['can'] = isset($var['cat_id']) && $var['cat_id'] != 0 ? made($var['cat_id']) : [];
-            $value['supplierName'] = '';
-            if ($value['supplierNo'] != "") {
+//            $value['supplierName'] = '';
+//            if ($value['supplierNo'] != "") {
 //                $supplier = Db::name("business")->where(["companyNo" => $value['supplierNo']])->find();
-                $value['supplierName'] = $names['data'][$value['supplierNo']]??'';//isset($supplier['company']) ? $supplier['company'] : "";
-            }
-            $value['customerName'] = '';
-            if ($value['customer_code'] != "") {
+//                $value['supplierName'] = $names['data'][$value['supplierNo']]??'';//isset($supplier['company']) ? $supplier['company'] : "";
+//            }
+//            $value['customerName'] = '';
+//            if ($value['customer_code'] != "") {
 //                $supplier = Db::name("customer_info")->where(["companyNo" => $value['customer_code']])->find();
-                $value['customerName'] = $names['data'][$value['customer_code']]??'';//isset($supplier['companyName']) ? $supplier['companyName'] : "";
-            }
-            $value['useage'] = "";
-            if ($value['use_order'] != 0) {
-                $use = Db::name("order_use")->where(["id" => $value['use_order']])->find();
-                $value['useage'] = isset($use['order_use']) ? $use['order_use'] : "";
-            } else {
-                $value['use_order'] = '';
-            }
+//                $value['customerName'] = $names['data'][$value['customer_code']]??'';//isset($supplier['companyName']) ? $supplier['companyName'] : "";
+//            }
+//            $value['useage'] = "";
+//            if ($value['use_order'] != 0) {
+//                $use = Db::name("order_use")->where(["id" => $value['use_order']])->find();
+//                $value['useage'] = isset($use['order_use']) ? $use['order_use'] : "";
+//            } else {
+//                $value['use_order'] = '';
+//            }
             $value['good_num'] -= $value['th_num'];
             $value['send_num'] -= $value['th_num'];
             $value['total_price'] = round($value['total_price'] - $value['th_fee'], 2);
@@ -5068,5 +5072,56 @@ class Sale extends Base
 
     }
 
+    //订单取消
+    //未发货状态添加撤销功能  要求1.库存品 未发货 直接撤销 2.除了库存品以外的商品类型,采购单未入库的 可撤销。@刘雪寒 @武锋 @ 
+    public function orderCancel()
+    {
+        $orderCode = $this->request->post('orderCode', '', 'trim');
+
+        $val = Validate::rule(['orderCode' => 'require|array|max:100']);
+
+        if ($val->check(['orderCode' => $orderCode]) == false) return json_show(1004, $val->getError());
+
+        $list = Db::name('sale')
+            ->alias('a')
+            ->field('a.id sale_id,a.order_type,a.status sale_status,a.orderCode,c.id cgd_id,c.status cgd_status')
+            ->leftJoin('order_num b', 'b.orderCode=a.orderCode')
+            ->leftJoin('purchease_order c', 'c.cgdNo=b.cgdNo')
+            ->where(['a.is_del' => 0, 'a.orderCode' => $orderCode])
+            ->select()
+            ->toArray();
+
+        Db::startTrans();
+        try {
+
+            $date = date('Y-m-d H:i:s');
+
+            foreach ($list as $sale) {
+
+                if ($sale['sale_status'] == 3) throw new \think\Exception($sale['orderCode'] . '已取消,无法重复操作');
+
+                if ($sale['order_type'] == 1) {
+                    if (in_array($sale['sale_status'], [0, 1]) == false) throw new \think\Exception($sale['orderCode'] . '未处于待发货状态,无法取消');
+                } else {
+                    if (in_array($sale['cgd_status'], [0, 1]) == false) throw new \think\Exception($sale['orderCode'] . '采购单已入库,无法取消');
+                }
+            }
+            Db::name('sale')
+                ->where(['is_del' => 0, 'id' => array_column($list, 'sale_id')])
+                ->update(['status' => 3, 'updatetime' => $date]);
+
+            Db::name('purchease_order')
+                ->where(['is_del' => 0, 'id' => array_column($list, 'cgd_id')])
+                ->update(['status' => 4, 'updatetime' => $date]);
+
+            Db::commit();
+            return json_show(0, '操作成功');
+        } catch (\think\Exception $exception) {
+            Db::rollback();
+            return json_show(1004, $exception->getMessage());
+        }
+
+    }
+
 
 }

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

@@ -722,4 +722,8 @@ route::rule('child_list', 'admin/OrderOutChild/list');//发货工单列表
 route::rule('child_export', 'admin/OrderOutChild/export');//导出
 route::rule('child_add', 'admin/OrderOutChild/add');//拆单
 route::rule('child_info', 'admin/OrderOutChild/info');//详情
-route::rule('child_send', 'admin/OrderOutChild/send');//发货
+route::rule('child_send', 'admin/OrderOutChild/send');//发货
+
+
+route::rule('order_cancel', 'admin/Sale/orderCancel');//订单取消
+

+ 2 - 2
app/common.php

@@ -658,8 +658,8 @@ function excelSave($fileName = '', $headArr = [], $data = [])
     if(!is_dir( $saveDir)){
         mkdir($saveDir,0777,true);
     }
-    $datetime = date("Y-m-d H:i:s");
-    $file_dir = $saveDir.$datetime.".zip";
+//    $datetime = date("YmdHis");
+    $file_dir = $saveDir . $fileName . ".zip";
     # 5.1 文件打包,提示:使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
     $zip = new \ZipArchive ();
     # 5.2 文件不存在则生成一个新的文件 用CREATE打开文件会追加内容至zip