Parcourir la source

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

wufeng il y a 2 ans
Parent
commit
950f24b132
3 fichiers modifiés avec 161 ajouts et 47 suppressions
  1. 155 46
      app/admin/controller/Report.php
  2. 4 1
      app/admin/controller/Sale.php
  3. 2 0
      app/admin/route/app.php

+ 155 - 46
app/admin/controller/Report.php

@@ -139,8 +139,8 @@ class Report extends Base
     {
         $param = $this->request->only([
             'token',
-            'start_date' => date('Y-m-d H:i:s'),
-            'end_date' => date('Y-m-d H:i:s'),
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
         ], 'post', 'trim');
 
         $val_params = Validate::rule([
@@ -156,7 +156,7 @@ class Report extends Base
             ->leftJoin('depart_user du', 'du.uid=gz.createrid AND du.is_del=0')
             ->leftJoin('company_item ci', 'ci.id=du.itemid AND ci.is_del=0')
             ->where('gz.is_del', 0)
-            ->whereBetween('gz.addtime', [$param['start_date'], $param['end_date']])
+            ->whereBetween('gz.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59'])
             ->cursor();
 
         $data = [];
@@ -192,8 +192,8 @@ class Report extends Base
     {
         $param = $this->request->only([
             'token',
-            'start_date' => date('Y-m-d H:i:s'),
-            'end_date' => date('Y-m-d H:i:s'),
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
         ], 'post', 'trim');
 
         $val_params = Validate::rule([
@@ -211,7 +211,7 @@ class Report extends Base
             ->where('po.is_del', 0)
             ->group('addtime,du.itemid,po.status')
             ->order('addtime,itemid')
-            ->whereBetween('po.addtime', [$param['start_date'], $param['end_date']])
+            ->whereBetween('po.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59'])
             ->cursor();
 
         $data = [];
@@ -255,8 +255,8 @@ class Report extends Base
     {
         $param = $this->request->only([
             'token',
-            'start_date' => date('Y-m-d H:i:s'),
-            'end_date' => date('Y-m-d H:i:s'),
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
         ], 'post', 'trim');
 
         $val_params = Validate::rule([
@@ -275,19 +275,11 @@ class Report extends Base
             ->where('cb.is_del', 0)
             ->group('addtime,du.itemid,ci.name ,cb.createrid,du.nickname')
             ->order('addtime,du.itemid,ci.name ,cb.createrid,du.nickname')
-            ->whereBetween('cb.addtime', [$param['start_date'], $param['end_date']])
+            ->whereBetween('cb.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59'])
             ->select()
             ->toArray();
 
-        $rs[] = [
-            'addtime' => '汇总',
-            'itemid' => 0,
-            'createrid' => 0,
-            'num' => array_sum(array_column($rs, 'num')),
-            'total' => array_sum(array_column($rs, 'total')),
-            'nickname' => '',
-            'name' => '',
-        ];
+        $rs[] = ['addtime' => '汇总', 'itemid' => 0, 'createrid' => 0, 'num' => array_sum(array_column($rs, 'num')), 'total' => array_sum(array_column($rs, 'total')), 'nickname' => '', 'name' => ''];
 
         return app_show(0, '请求成功', array_merge($rs));
 
@@ -298,8 +290,8 @@ class Report extends Base
     {
         $param = $this->request->only([
             'token',
-            'start_date' => date('Y-m-d H:i:s'),
-            'end_date' => date('Y-m-d H:i:s'),
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
         ], 'post', 'trim');
 
         $val_params = Validate::rule([
@@ -310,26 +302,20 @@ class Report extends Base
         if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
 
         $rs = Db::name('purchease_order')
-            ->alias('po')
-            ->field('po.id,DATE_FORMAT(po.addtime,"%Y-%m-%d") addtime,po.cgder_id,po.cgder,po.total_fee,po.good_num,po.status')
-            ->where('po.is_del', 0)
-            ->whereBetween('po.addtime', [$param['start_date'], $param['end_date']])
+            ->field('DATE_FORMAT(addtime, "%Y-%m-%d") addtime,cgder_id,cgder,SUM(total_fee) total_fee,SUM(good_num) good_num,status,0 wait_total_fee,0 wait_good_num')
+            ->where('is_del', 0)
+            ->group('addtime,cgder_id,cgder,status')
+            ->order('addtime,cgder_id')
+            ->whereBetween('addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59'])
             ->cursor();
 
         $data = [];
         foreach ($rs as $value) {
-            $addtime_stamp = strtotime($value['addtime']);
 
-            if (!isset($data[$addtime_stamp])) {
-                $data[$addtime_stamp] = [
-                    'date' => $value['addtime'],//date('Y年m月d日', $addtime_stamp),
-                    'list' => [],
-                ];
-            }
-
-            if (!isset($data[$addtime_stamp]['list'][$value['cgder_id']])) {
-                $data[$addtime_stamp]['list'][$value['cgder_id']] = [
-                    'name' => $value['cgder'],
+            if (!isset($data[$value['addtime']][$value['cgder_id']])) {
+                $data[$value['addtime']][$value['cgder_id']] = [
+                    'addtime' => $value['addtime'],
+                    'cgder' => $value['cgder'],
                     'total_fee' => 0.00,
                     'good_num' => 0,
                     'wait_total_fee' => 0.00,
@@ -337,20 +323,23 @@ class Report extends Base
                 ];
             }
             if ($value['status'] == 0) {
-                $data[$addtime_stamp]['list'][$value['cgder_id']]['wait_total_fee'] += $value['total_fee'];
-                $data[$addtime_stamp]['list'][$value['cgder_id']]['wait_good_num'] += $value['good_num'];
+                $data[$value['addtime']][$value['cgder_id']]['wait_total_fee'] += $value['total_fee'];
+                $data[$value['addtime']][$value['cgder_id']]['wait_good_num'] += $value['good_num'];
             } else {
-                $data[$addtime_stamp]['list'][$value['cgder_id']]['total_fee'] += $value['total_fee'];
-                $data[$addtime_stamp]['list'][$value['cgder_id']]['good_num'] += $value['good_num'];
+                $data[$value['addtime']][$value['cgder_id']]['total_fee'] += $value['total_fee'];
+                $data[$value['addtime']][$value['cgder_id']]['good_num'] += $value['good_num'];
             }
         }
 
+        $da = [];
         //去除下标
-        foreach ($data as &$v) {
-            $v['list'] = array_merge($v['list']);
+        foreach ($data as $v) {
+            foreach ($v as $vv) {
+                $da[] = $vv;
+            }
         }
 
-        return app_show(0, '请求成功', array_merge($data));
+        return app_show(0, '请求成功', $da);
 
     }
 
@@ -360,8 +349,8 @@ class Report extends Base
         $param = $this->request->only([
             'token',
             'zxNo' => [],
-            'start_date' => date('Y-m-d H:i:s'),
-            'end_date' => date('Y-m-d H:i:s'),
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
             'page' => 1,
             'size' => 15,
             'is_export' => 0,//是否导出,1导出,0不导出
@@ -379,12 +368,13 @@ class Report extends Base
             ->alias('cb')
             ->where('cb.is_del', 0);
 
-        if (!empty($param['start_date']) && !empty($param['end_date'])) $rs->whereBetween('cb.addtime', [$param['start_date'], $param['end_date']]);
+        if (!empty($param['start_date']) && !empty($param['end_date'])) $rs->whereBetween('cb.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']);
         if (!empty($param['zxNo'])) $rs->whereIn('cb.zxNo', $param['zxNo']);
 
         if ($param['is_export'] == 1) {
             $data = $rs
-                ->field('ci.addtime as 咨询时间,cb.bidNo as 采购单反馈单号,cb.zxNo as 咨询订单号,cb.addtime as 回复时间,cb.good_name as 产品名称,s.name as 供应商名称,cb.total_fee 成本合计,cb.delivery_day 物流时间,cb.work_day 产品工期,cb.expire_day 信息有效期,cb.creater 采购员,ci.num 需求数量,ci.arrival_time 要求到货日期,co.salesman 业务人员,csi.companyName 客户名称')->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
+                ->field('ci.addtime as 咨询时间,cb.bidNo as 采购单反馈单号,cb.zxNo as 咨询订单号,cb.addtime as 回复时间,cb.good_name as 产品名称,s.name as 供应商名称,cb.total_fee 成本合计,cb.delivery_day 物流时间,cb.work_day 产品工期,cb.expire_day 信息有效期,cb.creater 采购员,ci.num 需求数量,ci.arrival_time 要求到货日期,co.salesman 业务人员,csi.companyName 客户名称')
+                ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
                 ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo AND co.is_del=0')
                 ->leftJoin('supplier s', 's.code=cb.supplierNo AND s.is_del=0')
                 ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo AND csi.is_del=0')
@@ -417,5 +407,124 @@ class Report extends Base
 
     }
 
+    //【二、咨询单报表】2.未采反信息
+    public function consultInfoBidsSumNot()
+    {
+        $param = $this->request->only([
+            'token',
+            'companyName' => '',
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
+            'page' => 1,
+            'size' => 15,
+            'is_export' => 0,//是否导出,1导出,0不导出
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date',
+            'is_export' => 'in:0,1',
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $rs = Db::name('consult_bids')
+            ->alias('cb')
+            ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
+            ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo AND co.is_del=0')
+            ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo AND csi.is_del=0')
+            ->where('cb.is_del', 0)
+            ->order('co.endtime', 'desc');
+
+        if ($param['start_date'] != '' && $param['end_date'] != '') $rs->whereBetween('ci.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']);
+        if ($param['companyName'] != '') $rs->whereLike('csi.companyName', '%' . $param['companyName'] . '%');
+
+        if ($param['is_export'] == 1) {
+            $data = $rs
+                ->field('cb.zxNo 咨询订单号,cb.good_name 产品名称,ci.num 需求数量,csi.companyName 客户名称,ci.addtime 咨询时间,co.endtime 截止时间')
+                ->select()
+                ->toArray();
+
+            if (empty($data)) return error_show(1005, '没有可供导出的数据');
+            else {
+                $headerArr = array_keys($data[0]);
+                excelSave('咨询单报表-未采反信息' . date('YmdHis'), $headerArr, $data);
+            }
+
+        } else {
+
+            $total = $rs->count('cb.id');
+
+            $data = $rs
+                ->field('cb.zxNo,cb.good_name,ci.num,csi.companyName,ci.addtime,co.endtime')
+                ->page($param['page'], $param['size'])
+                ->select()
+                ->toArray();
+
+            return app_show(0, '请求成功', ['list' => $data, 'total' => $total]);
+
+        }
+
+    }
+
+    //【三、订单明细报表】
+    public function orderListDetailed()
+    {
+        $param = $this->request->only([
+            'token',
+            'start_date' => date('Y-m-d'),
+            'end_date' => date('Y-m-d'),
+            'page' => 1,
+            'size' => 15,
+            'is_export' => 0,//是否导出,1导出,0不导出
+        ], 'post', 'trim');
+
+        $val_params = Validate::rule([
+            'start_date' => 'date|elt:end_date',
+            'end_date' => 'date',
+            'is_export' => 'in:0,1',
+        ]);
+
+        if (!$val_params->check($param)) return error_show(1004, $val_params->getError());
+
+        $rs = Db::name('purchease_order')
+            ->alias('po');
+//            ->leftJoin('consult_info ci', 'ci.zxNo=cb.zxNo AND ci.is_del=0')
+//            ->leftJoin('consult_order co', 'co.zxNo=cb.zxNo AND co.is_del=0')
+//            ->leftJoin('customer_info csi', 'csi.companyNo=co.khNo AND csi.is_del=0')
+//            ->where('cb.is_del', 0)
+//            ->order('co.endtime', 'desc');
+
+        if ($param['start_date'] != '' && $param['end_date'] != '') $rs->whereBetween('ci.addtime', [$param['start_date'] . ' 00:00:00', $param['end_date'] . ' 23:59:59']);
+        if ($param['companyName'] != '') $rs->whereLike('csi.companyName', '%' . $param['companyName'] . '%');
+
+        if ($param['is_export'] == 1) {
+            $data = $rs
+                ->field('cb.zxNo 咨询订单号,cb.good_name 产品名称,ci.num 需求数量,csi.companyName 客户名称,ci.addtime 咨询时间,co.endtime 截止时间')
+                ->select()
+                ->toArray();
+
+            if (empty($data)) return error_show(1005, '没有可供导出的数据');
+            else {
+                $headerArr = array_keys($data[0]);
+                excelSave('咨询单报表-未采反信息' . date('YmdHis'), $headerArr, $data);
+            }
+
+        } else {
+
+            $total = $rs->count('po.id');
+
+            $data = $rs
+                ->field('po.,po.,po.,po.,po.,po.,po.,po.')
+                ->page($param['page'], $param['size'])
+                ->select()
+                ->toArray();
+
+            return app_show(0, '请求成功', ['list' => $data, 'total' => $total]);
+
+        }
+
+    }
+
 
 }

+ 4 - 1
app/admin/controller/Sale.php

@@ -3548,7 +3548,10 @@ class Sale extends Base
 
             if (!isset($origin['min_num'])) $origin['min_num'] = 0;
 
-            $lastnum = max($origin['min_num'] ?? 0, $good['min_num']);
+            //如果是库存品的话,只取销售的库存
+            if ($good['is_stock'] == 1) $lastnum = $good['min_num'];
+            else  $lastnum = max($origin['min_num'] ?? 0, $good['min_num']);
+
             if ($sale_num < $lastnum) {
                 return error_show(1003, "商品不满足起订量{$lastnum}");
             }

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

@@ -492,6 +492,8 @@ Route::rule('reportpurcheaseordersum','admin/Report/purcheaseOrderSum');//报表
 Route::rule('reportconsultbidssum','admin/Report/consultBidsSum');//报表-采购日报表-采购员回复咨询单数
 Route::rule('reportpurcheaseordersumbyuser','admin/Report/purcheaseOrderSumByUser');//报表-采购日报表-采购员订单金额
 Route::rule('reportconsultinfobidssum','admin/Report/consultInfoBidsSum');//报表-咨询单报表-已采反报价信息
+Route::rule('reportconsultinfobidssumnot','admin/Report/consultInfoBidsSumNot');//报表-咨询单报表-未采反信息
+Route::rule('reportorderlistdetailed','admin/Report/orderListDetailed');//报表-咨询单报表-未采反信息
 
 //数据看板
 Route::rule('datatodaysalesvolume','admin/Data/todaySalesVolume');//1.今日销量