Просмотр исходного кода

Merge branch 'dev_wf' of wugg/phpstock into version1.5

wufeng 2 лет назад
Родитель
Сommit
4e38bb21de
2 измененных файлов с 308 добавлено и 0 удалено
  1. 302 0
      app/admin/controller/SaleReport.php
  2. 6 0
      app/admin/route/app.php

+ 302 - 0
app/admin/controller/SaleReport.php

@@ -21,6 +21,8 @@ class SaleReport extends Base
     private $good_type = [1 => '正常商品', 2 => '赠品', 3 => '样品'];
     private $sale_diff_status = [1 => '修改销售额', 2 => '不修改销售额'];
     private $is_receive = [0 => '未收到', 1 => '收到'];
+    private $bargain_order_status = [1 => '待主管审批', 2 => '待财务专员审批', 3 => '待财务主管审批', 4 => '审批通过', 5 => '主管驳回', 6 => '财务主管驳回', 7 => '已取消议价'];
+    private $order_out_status = [0 => '待发货', 1 => '待库管发货', 2 => '已发货待收货', 3 => '已收货', 4 => '已全部退货'];
 
 
     //【一、管理报表】1.日报_列表
@@ -1285,5 +1287,305 @@ class SaleReport extends Base
 
     }
 
+    //【七、议价明细表】
+    public function bargainOrder()
+    {
+        $param = $this->request->only(['token', 'start_date' => '', 'end_date' => '', 'status' => '', 'page' => 1, 'size' => 15], 'post', 'trim');
+
+        $where = [['bo.is_del', '=', 0]];
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['bo.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+
+        $count = Db::name('bargain_order')
+            ->alias('bo')
+            ->leftJoin('consult_info ci', 'ci.infoNo=bo.infoNo')
+            ->leftJoin('consult_order co', 'co.zxNo=ci.zxNo')
+            ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo')
+            ->leftJoin('result_info ri', 'ri.result_code=bo.result_info_id')
+            ->where($where)
+            ->order('bo.addtime', 'desc')
+            ->count('bo.id');
+
+        $data = Db::name('bargain_order')
+            ->alias('bo')
+            ->field('bo.addtime,bo.bargainNo,bo.infoNo,bo.status,bo.bidsNo,csi.companyName,ci.good_name,bo.creater,bo.createrid,bo.sale_price,bo.after_price,ri.result_desc,bo.bargain_remark')
+            ->leftJoin('consult_info ci', 'ci.infoNo=bo.infoNo')
+            ->leftJoin('consult_order co', 'co.zxNo=ci.zxNo')
+            ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo')
+            ->leftJoin('result_info ri', 'ri.result_code=bo.result_info_id')
+            ->where($where)
+            ->page($param['page'], $param['size'])
+            ->order('bo.addtime', 'desc')
+            ->cursor();
+
+        $list = [];
+
+        foreach ($data as $value) {
+
+            $value['status'] = isset($this->bargain_order_status[$value['status']]) ? $this->bargain_order_status[$value['status']] : '';
+            $value['creater_company'] = get_company_name_by_uid($value['createrid']);
+
+            $list[] = $value;
+        }
+
+        return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+
+    }
+
+    //【七、议价明细表】
+    public function bargainOrderExport()
+    {
+        $param = $this->request->only(['token', 'start_date' => '', 'end_date' => '', 'status' => ''], 'post', 'trim');
+
+        $where = [['bo.is_del', '=', 0]];
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['bo.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+
+        $data = Db::name('bargain_order')
+            ->alias('bo')
+            ->field('bo.addtime 议价时间,bo.bargainNo 议价编号,bo.infoNo 咨询单编号,bo.status 议价单状态,bo.bidsNo 采返商品编号,csi.companyName 客户名称,ci.good_name 商品名称,bo.creater 申请人,"" 部门,bo.createrid,bo.sale_price 议价前售价,bo.after_price 期望售价,ri.result_desc 议价原因,bo.bargain_remark 议价备注')
+            ->leftJoin('consult_info ci', 'ci.infoNo=bo.infoNo')
+            ->leftJoin('consult_order co', 'co.zxNo=ci.zxNo')
+            ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo')
+            ->leftJoin('result_info ri', 'ri.result_code=bo.result_info_id')
+            ->where($where)
+            ->order('bo.addtime', 'desc')
+            ->cursor();
+
+        $list = [];
+
+        foreach ($data as $value) {
+
+            $value['议价单状态'] = isset($this->bargain_order_status[$value['议价单状态']]) ? $this->bargain_order_status[$value['议价单状态']] : '';
+            $value['部门'] = get_company_name_by_uid($value['createrid']);
+
+            unset($value['createrid']);
+
+            $list[] = $value;
+        }
+
+        if (empty($list)) $list[] = '没有相关可导出的数据';
+        excelSave('议价明细表' . date('YmdHis'), array_keys($list[0]), $list);
+
+    }
+
+    //【八、无地址待发货订单】
+    public function orderOutNotAddr()
+    {
+
+        $param = $this->request->only(['token', 'start_date' => '', 'end_date' => '', 'page' => 1, 'size' => 15], 'post', 'trim');
+
+        $where = [['b.send_type', '=', 2]];//send_type==2 延迟发货
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['a.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+
+        $count = Db::name('order_out')
+            ->alias('a')
+            ->leftJoin("sale b", "b.orderCode=a.orderCode")
+            ->leftJoin("customer_info v", "v.companyNo=b.customer_code")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("business bus", "bus.companyNo=b.supplierNo")
+            ->where($where)
+            ->order("a.addtime desc")
+            ->count('a.id');
+
+        $data = Db::name('order_out')
+            ->alias('a')
+            ->field('a.addtime,a.orderCode,os.cgdNo,bus.company,a.apply_name,a.apply_id,a.status,a.send_num,b.good_code,b.good_name,v.companyName,b.wsend_num,b.skuCode,a.order_type')
+            ->leftJoin("sale b", "b.orderCode=a.orderCode")
+            ->leftJoin("customer_info v", "v.companyNo=b.customer_code")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("business bus", "bus.companyNo=b.supplierNo")
+            ->where($where)
+            ->page($param['page'], $param['size'])
+            ->order("a.addtime desc")
+            ->cursor();
+
+        $list = [];
+        foreach ($data as $value) {
+
+            $value['apply_company'] = get_company_name_by_uid($value['apply_id']);
+
+            if ($value['order_type'] == 3 || $value['order_type'] == 4) {
+                $goon = Db::name("good_zixun")
+                    ->field('id,cat_id,customized')
+                    ->where(["spuCode" => $value['good_code'], "is_del" => 0])
+                    ->find();
+            } else {
+                $goon = Db::name('good_platform')
+                    ->alias('a')
+                    ->field('a.id,b.cat_id,b.customized')
+                    ->join('good b', 'b.spuCode=a.spuCode', 'left')
+                    ->where(['a.skuCode' => $value['skuCode']])
+                    ->find();
+            }
+
+            $value['cat'] = implode('/', array_column(made($goon['cat_id']), 'name'));
+            $value['send_date'] = date('Y-m-d H:i:s', strtotime($value['addtime']) + $goon['customized'] * 24 * 3600);
+
+            $value['status'] = isset($this->order_out_status[$value['status']]) ? $this->order_out_status[$value['status']] : '';
+
+            $list[] = $value;
+        }
+
+        return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+    }
+
+    //【八、无地址待发货订单】
+    public function orderOutNotAddrExport()
+    {
+
+        $param = $this->request->only(['token', 'start_date' => '', 'end_date' => ''], 'post', 'trim');
+
+        $where = [['b.send_type', '=', 2]];//send_type==2 延迟发货
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['a.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+
+        $data = Db::name('order_out')
+            ->alias('a')
+            ->field('a.addtime 下单时间,a.orderCode 订单编号,os.cgdNo 采购单编号,bus.company 公司名称,a.apply_name 申请人,"" 部门,a.apply_id,a.status 状态,a.send_num 出库总数,"" 商品分类,b.good_code 商品编码,b.good_name 商品名称,v.companyName 客户名称,b.wsend_num 未发货数量,"" 应发货日期,b.skuCode,a.order_type')
+            ->leftJoin("sale b", "b.orderCode=a.orderCode")
+            ->leftJoin("customer_info v", "v.companyNo=b.customer_code")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("business bus", "bus.companyNo=b.supplierNo")
+            ->where($where)
+            ->order("a.addtime desc")
+            ->cursor();
+
+        $list = [];
+        foreach ($data as $value) {
+
+            $value['部门'] = get_company_name_by_uid($value['apply_id']);
+
+            if ($value['order_type'] == 3 || $value['order_type'] == 4) {
+                $goon = Db::name("good_zixun")
+                    ->field('id,cat_id,customized')
+                    ->where(["spuCode" => $value['商品编码'], "is_del" => 0])
+                    ->find();
+            } else {
+                $goon = Db::name('good_platform')
+                    ->alias('a')
+                    ->field('a.id,b.cat_id,b.customized')
+                    ->join('good b', 'b.spuCode=a.spuCode', 'left')
+                    ->where(['a.skuCode' => $value['skuCode']])
+                    ->find();
+            }
+
+            $value['商品分类'] = implode('/', array_column(made($goon['cat_id']), 'name'));
+            $value['应发货日期'] = date('Y-m-d H:i:s', strtotime($value['下单时间']) + $goon['customized'] * 24 * 3600);
+
+            $value['状态'] = isset($this->order_out_status[$value['状态']]) ? $this->order_out_status[$value['状态']] : '';
+
+            unset($value['apply_id']);
+            unset($value['skuCode']);
+            unset($value['order_type']);
+
+            $list[] = $value;
+        }
+
+        if (empty($list)) $list[] = '没有相关可导出的数据';
+        excelSave('无地址待发货订单' . date('YmdHis'), array_keys($list[0]), $list);
+
+    }
+
+    //【九、有地址待发货订单】
+    public function orderOutAddr()
+    {
+        $param = $this->request->only(['token', 'start_date' => '', 'end_date' => '', 'start_sendtime' => '', 'end_sendtime' => '', 'status' => '', 'apply_company' => '', 'page' => 1, 'size' => 1], 'post', 'trim');
+
+        $where = [['b.send_type', '=', 1]];//send_type==1 直接发货
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['a.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+        if ($param['start_sendtime'] != '' && $param['end_sendtime'] != '') $where[] = ['a.sendtime', 'between', [$param['start_sendtime'] . ' 00:00:00', $param['end_sendtime'] . ' 23:59:59']];
+        if ($param['status'] != '') $where[] = ['a.status', '=', $param['status']];
+        if ($param['apply_company'] != '') $where[] = ['ci.name', 'like', '%' . $param['apply_company'] . '%'];
+
+        $count = Db::name('order_out')
+            ->alias('a')
+            ->leftJoin("sale b", "b.orderCode=a.orderCode")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("order_addr oa", "oa.id=a.addrid")
+            ->where($where)
+            ->order("a.addtime desc")
+            ->count('a.id');
+
+        $data = Db::name('order_out')
+            ->alias('a')
+            ->field('a.addtime,a.orderCode,a.sendtime,a.outCode,a.status,b.good_name,b.sale_price,a.send_num,a.apply_name,ci.name apply_company,os.cgdNo,a.post_name,a.post_code,oa.contactor,oa.mobile,oa.addr,oa.addr_code,a.remark')
+            ->leftJoin("sale b", "b.orderCode=a.orderCode")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("order_addr oa", "oa.id=a.addrid")
+            ->leftJoin("depart_user u", "u.uid=a.apply_id AND u.is_del=0")
+            ->leftJoin("company_item ci", "ci.id=u.itemid")
+            ->where($where)
+            ->page($param['page'], $param['size'])
+            ->order("a.addtime desc")
+            ->cursor();
+
+        $list = [];
+        foreach ($data as $value) {
+
+            $value['send_total_price'] = round($value['send_num'] * $value['sale_price'], 2);
+
+            $value['status'] = isset($this->order_out_status[$value['status']]) ? $this->order_out_status[$value['status']] : '';
+
+            //拼接省市区
+            if (!json_decode($value['addr_code'])) {
+                $temp = explode(',', $value['addr_code']);
+                $value['addr_code'] = json_encode(['provice_code' => $temp[0] ?? '', 'city_code' => $temp[1] ?? '', 'area_code' => $temp[2] ?? '']);
+            }
+
+            $value['addr'] = GetAddr($value['addr_code']) . $value['addr'];
+
+            $list[] = $value;
+        }
+
+        return app_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+
+    }
+
+    //【九、有地址待发货订单】
+    public function orderOutAddrExport()
+    {
+        $param = $this->request->only(['token', 'start_date' => '', 'end_date' => '', 'start_sendtime' => '', 'end_sendtime' => '', 'status' => '', 'apply_company' => ''], 'post', 'trim');
+
+        $where = [['b.send_type', '=', 1]];//send_type==1 直接发货
+        if ($param['start_date'] != '' && $param['end_date'] != '') $where[] = ['a.addtime', 'between', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']];
+        if ($param['start_sendtime'] != '' && $param['end_sendtime'] != '') $where[] = ['a.sendtime', 'between', [$param['start_sendtime'] . ' 00:00:00', $param['end_sendtime'] . ' 23:59:59']];
+        if ($param['status'] != '') $where[] = ['a.status', '=', $param['status']];
+        if ($param['apply_company'] != '') $where[] = ['ci.name', 'like', '%' . $param['apply_company'] . '%'];
+
+        $data = Db::name('order_out')
+            ->alias('a')
+            ->field('a.addtime 下单日期,a.orderCode 订单编号,a.sendtime 发货时间,a.outCode 发货申请单号,a.status 发货申请单状态,b.good_name 商品名称,b.sale_price 产品单价,a.send_num 发货数量,"" 发货申请单总价,a.apply_name 申请人,ci.name 部门,os.cgdNo 采购单编号,a.post_name 快递公司,a.post_code 快递单号,oa.contactor 收货人,oa.mobile 收货电话,oa.addr 收货地址,oa.addr_code,a.remark 备注')
+            ->leftJoin("sale b", "b.orderCode=a.orderCode")
+            ->leftJoin("order_send os", "os.outCode=a.outCode")
+            ->leftJoin("order_addr oa", "oa.id=a.addrid")
+            ->leftJoin("depart_user u", "u.uid=a.apply_id AND u.is_del=0")
+            ->leftJoin("company_item ci", "ci.id=u.itemid")
+            ->where($where)
+            ->order("a.addtime desc")
+            ->cursor();
+
+        $list = [];
+        foreach ($data as $value) {
+
+            $value['发货申请单总价'] = round($value['发货数量'] * $value['产品单价'], 2);
+
+            $value['发货申请单状态'] = isset($this->order_out_status[$value['发货申请单状态']]) ? $this->order_out_status[$value['发货申请单状态']] : '';
+
+            //拼接省市区
+            if (!json_decode($value['addr_code'])) {
+                $temp = explode(',', $value['addr_code']);
+                $value['addr_code'] = json_encode(['provice_code' => $temp[0] ?? '', 'city_code' => $temp[1] ?? '', 'area_code' => $temp[2] ?? '']);
+
+            }
+
+            $value['收货地址'] = GetAddr($value['addr_code']) . $value['收货地址'];
+
+            unset($value['addr_code']);
+
+            $list[] = $value;
+        }
+
+        if (empty($list)) $list[] = '没有相关可导出的数据';
+        excelSave('有地址待发货单列表' . date('YmdHis'), array_keys($list[0]), $list);
+
+    }
 
 }

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

@@ -556,6 +556,12 @@ Route::rule('saleexportthdata','admin/SaleReport/thData');//退货明细表
 Route::rule('saleexportthdataexport','admin/SaleReport/thDataExport');//退货明细表-导出
 Route::rule('seord','admin/SaleReport/orderReturnDetailed');//售后明细表
 Route::rule('seorde','admin/SaleReport/orderReturnDetailedExport');//售后明细表-导出
+Route::rule('sebo','admin/SaleReport/bargainOrder');//议价明细表
+Route::rule('seboe','admin/SaleReport/bargainOrderExport');//议价明细表
+Route::rule('seoona','admin/SaleReport/orderOutNotAddr');//无地址待发货订单
+Route::rule('seoonae','admin/SaleReport/orderOutNotAddrExport');//无地址待发货订单-导出
+Route::rule('seooa','admin/SaleReport/orderOutAddr');//有地址待发货单列表
+Route::rule('seooae','admin/SaleReport/orderOutAddrExport');//有地址待发货单列表-导出
 
 
 Route::rule('statlist','admin/Stat/list');//