Jelajahi Sumber

Merge branch 'master-new-wgg' of wugg/phpstock into master-new

wugg 1 tahun lalu
induk
melakukan
36d76b5303

+ 0 - 1
.env

@@ -1 +0,0 @@
-APP_DEBUG = true

default_admin_addcount_role_id = 1
default_supplier_addcount_role_id = 50


[APP]
DEFAULT_TIMEZONE = Asia/Shanghai


[LANG]
default_lang = zh-cn

[USER]
hosturl=http://user.test241.wanyuhengtong.com/


#主数据库
[database]
type=mysql
hostname=120.46.155.214
database=wsm3_pre_release
username=root
password=test!@#wyht123
charset=utf8
prefix=wsm_


[mysql3]
type=mysql
hostname=120.46.155.214
database=inv
username=root
password=test!@#wyht123
charset=utf8
prefix=cfp_

#有赞数据库
[mysql_yz]
type=mysql
hostname=120.46.155.214
database=youzan
username=root
password=test!@#wyht123
hostport=3306
charset=utf8
prefix=yz_


#账号数据库
[mysql_sys]
type=mysql
hostname=120.46.155.214
database=sys_user_pre_release
username=root
password=test!@#wyht123
hostport=3306
charset=utf8
prefix=sys_



#结算平台数据库
[mysql_cxinv]
type=mysql
hostname=120.46.155.214
database=cxinv_v2_pre_release
username=root
password=test!@#wyht123
hostport=3306
charset=utf8
prefix=cfp_

+ 9 - 8
app/admin/controller/After.php

@@ -283,12 +283,12 @@ class After extends Base
                 $condition[] = ["a.person_id", "in", $hand];
                 $condition[] = ["a.apply_id", "in", $arr];
                 $condition[] = ["a.cgderid", "in", $hand];
-                //查询所负责的供应商
-                $supplierNos = Db::connect('mysql_sys')
-                    ->name('supplier')
-                    ->where(['is_del' => 0, 'personid' => $arr])
-                    ->column('code');
-                $condition[] = ["a.supplierNo", "in", $supplierNos];//这个地方不应该使用condition,应该使用where与其他条件并列
+//                //查询所负责的供应商
+//                $supplierNos = Db::connect('mysql_sys')
+//                    ->name('supplier')
+//                    ->where(['is_del' => 0, 'personid' => $arr])
+//                    ->column('code');
+//                $condition[] = ["a.supplierNo", "in", $supplierNos];//这个地方不应该使用condition,应该使用where与其他条件并列
             }
         }
 
@@ -540,7 +540,8 @@ class After extends Base
             switch ($info['status']) {
                 case 1:
                     if (in_array($param['status'], [6, 2, 9]) == false) throw new Exception('选项错误');
-                    if ($info['order_type'] == 1 && $param['status'] != 2) throw new Exception('选项错误');//库存品不允许供应商审核,只允许走2-11-4-12-5流程
+                    if ($info['order_type'] == 1 && $param['status'] == 9) throw new Exception('选项错误');
+                    //库存品不允许供应商审核,只允许走2-11-4-12-5流程
                     break;
                 case 9:
                     if ((($info['is_receive'] == 1) && (in_array($param['status'], [2, 4]) == false) || (($info['is_receive'] == 0) && (in_array($param['status'], [2, 5]) == false)))) throw new Exception('选项错误');
@@ -585,7 +586,7 @@ class After extends Base
             $info['person'] = $s_info['data']['person'];
 
             //当处于以下节点时,level2账号必须是供应商负责人操作,level3账号不做限制
-            if (in_array($info['status'], [9, 10]) && ($this->level == 2) && ($this->uid != $info['person_id'])) return json_show(1004, '您不是供应商负责人,此时无权操作');
+//            if (in_array($info['status'], [9, 10]) && ($this->level == 2) && ($this->uid != $info['person_id'])) return json_show(1004, '您不是供应商负责人,此时无权操作');
             if ($param['remark'] != '') $info['remark'] = $param['remark'];
 
             Db::startTrans();

+ 16 - 16
app/admin/controller/AfterChild.php

@@ -44,26 +44,26 @@ class AfterChild extends Base
         //数据权限相关
         if ($param['is_authority'] == 1) {
             //供应商账号,只查询该供应商下所有数据
-            if ($this->level == 3 && $param['supplierNo'] == '') return json_show(1004, '供应商账号时供应商编码不能为空');
+//            if ($this->level == 3 && $param['supplierNo'] == '') return json_show(1004, '供应商账号时供应商编码不能为空');
 
             //1.超管,查看全部;
             //2.业务公司账号-申请人,初始状态只查看自己创建的;
             //3.业务公司账号-退回仓库负责人,只查看自己负责仓库的数据;
-            //4.业务公司账号-数据共享接受人,共享给自己的数据;
-            if ($this->level == 2) {
-                //是否仓库负责人
-                $is_contactor = Db::name('warehouse_info')
-                    ->field('id')
-                    ->where(['is_del' => 0, 'contactor' => $this->uid])
-                    ->findOrEmpty();
-                if (empty($is_contactor)) {
-                    $role = $this->checkDataShare();
-                    $hand = resign_hand_user($this->uid, 0);
-                    $db->whereIn('d.apply_id', array_unique(array_merge($role[DataGroupModel::$type_全部], $hand)));
-                } else {
-                    $db->where('`a`.`return_wsm_code` in ' . Db::name('warehouse_info')->field('wsm_code')->where(['is_del' => 0, 'contactor' => $this->uid])->buildSql());
-                }
-            }
+//            //4.业务公司账号-数据共享接受人,共享给自己的数据;
+//            if ($this->level == 2) {
+//                //是否仓库负责人
+//                $is_contactor = Db::name('warehouse_info')
+//                    ->field('id')
+//                    ->where(['is_del' => 0, 'contactor' => $this->uid])
+//                    ->findOrEmpty();
+//                if (empty($is_contactor)) {
+//                    $role = $this->checkDataShare();
+//                    $hand = resign_hand_user($this->uid, 0);
+//                    $db->whereIn('d.apply_id', array_unique(array_merge($role[DataGroupModel::$type_全部], $hand)));
+//                } else {
+//                    $db->where('`a`.`return_wsm_code` in ' . Db::name('warehouse_info')->field('wsm_code')->where(['is_del' => 0, 'contactor' => $this->uid])->buildSql());
+//                }
+//            }
         }
 
         $count = $db

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

@@ -18,7 +18,7 @@ class Base extends \app\BaseController
     public $uname = '';//账户名称
     public $roleid = 0;//角色id
     public $level = 0;//角色等级,1.系统超级管理员,2.企业管理员,3.企业人员
-    private $white = ['login','child_out_list'];
+    private $white = ['login','child_out_list','salestock'];
 
     public function __construct(App $app)
     {

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

@@ -54,11 +54,11 @@ class Consult extends Base
         $start= isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
         if ($start !="") {
             //$where = ["zxtime"=>Db::raw(">= '{$start}'")];
-            $where[]= ["a.addtime",'>=',$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];
+            $where[]= ["a.addtime",'<=',$end." 23:59:59"];
         }
         $status = isset($this->post['status']) && $this->post['status'] !== "" ? trim($this->post['status']) : "";
         if ($status !== "") {

+ 15 - 11
app/admin/controller/Filing.php

@@ -62,8 +62,8 @@ class Filing extends Base
         	'customerCode',
         	'supplierNo',
         	'companyName',
-        	"manager",
-        	"managerid",
+        	"manager"=>'',
+        	"managerid"=>0,
         	'num',
         	'is_determine_price',
         	'price' => 0,
@@ -124,8 +124,8 @@ class Filing extends Base
         ]);
 
         if (!$val->check($param)) return json_show(1004, $val->getError());
-        $manager = $param['manager']??$this->uname;
-        $managerid = $param['managerid']??$this->uid;
+//        $manager = $param['manager']??$this->uname;
+//        $managerid = $param['managerid']??$this->uid;
         //如果是贵金属的话,额外判断
         $cat = made($param['cat_id']);
         if (isset($cat[0]['id']) && $cat[0]['id'] == 6) {
@@ -187,8 +187,6 @@ class Filing extends Base
                 'apply_name' => $this->uname,
                 'status' => 0,
                 'is_del' => 0,
-                "manager"=>$manager,
-                "managerid"=>$managerid,
                 'addtime' => date('Y-m-d H:i:s'),
                 'updaterid' => $this->uid,
                 'updater' => $this->uname,
@@ -226,8 +224,8 @@ class Filing extends Base
         	'supplierNo',
         	'companyName',
         	'num',
-        	'manager',
-        	'managerid',
+        	'manager'=>'',
+        	'managerid'=>0,
         	'is_determine_price',
         	'price' => 0,
         	'expect_service_proportion',
@@ -396,8 +394,9 @@ class Filing extends Base
         $rs["origin_place_cn"] = GetAddr(json_encode($origin));
         if(!empty($rs['delivery_place']))$deliev = ['provice_code'=>$rs['delivery_place'][0]??'','city_code'=>$rs['delivery_place'][1]??'','area_code'=>$rs['delivery_place'][2]??''];
         $rs['delivery_place_cn'] = GetAddr(json_encode($deliev));
+        $has_account = checkHasAccountBySupplierNos([$rs['supplierNo']]);
+        $rs['wsm_has_account'] = (int)isset($has_account[$rs['supplierNo']]);
         return json_show(0, '获取报备单详情成功', $rs);
-//        return FilingLogic::detail($param);
     }
 
     //0 待审核  1 待修改 不合规 2 合规可转单 3 部分 4 转单成功 5取消转单
@@ -405,13 +404,18 @@ class Filing extends Base
     {
         if ($this->level != 2) return json_show(1004, '业务公司账号不能审核');
 
-        $param = $this->request->only(['id', 'companyCode', 'plat_code' => '','platform_id',"remark"=>"",'is_check'=>''], 'post');
+        $param = $this->request->only(['id',
+        'companyCode',
+        'manager'=>'',
+        'managerid'=>0, 'plat_code' => '','platform_id',"remark"=>"",'is_check'=>''], 'post');
 
         $val = Validate::rule([
             'id' => 'require|number|gt:0',
             'companyCode|客户' => 'requireIf:is_check,2|length:18',
             'platform_id|平台id' => 'requireIf:is_check,2|number|gt:0',
             'plat_code|平台商品编号' => 'requireIf:is_check,2|max:255',
+            'managerid|项目经理ID' => 'requireIf:is_check,2|number|gt:0',
+            'manager|项目经理' => 'requireIf:is_check,2|max:255',
             "is_check|是否合规"=> 'require|number|in:1,2',
             "remark|备注"=> 'requireIf:is_check,1',
         ]);
@@ -570,7 +574,7 @@ class Filing extends Base
 		if (!isset($names['data'])) return json_show(1005, '该客户不存在');
         //level3账号都可以操作
         //level2账号的话,只有供应商负责人能操作
-        if (($this->level == 2) && ($this->uid != $supplier['data']['personid'])) return json_show(1004, '只有供应商负责人才能操作');
+//        if (($this->level == 2) && ($this->uid != $supplier['data']['personid'])) return json_show(1004, '只有供应商负责人才能操作');
 
         $date = date('Y-m-d H:i:s');
 

+ 18 - 18
app/admin/controller/Goodup.php

@@ -133,20 +133,20 @@ class Goodup extends Base
             else  $where[]=["gb.spuCode","not in",$sta];
         }
 
-        //只有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');
-				array_push($supplierNos,'');
-                $where[] = ['gb.supplierNo', 'in', $supplierNos];
-            }
-        }
+//        //只有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');
+//				array_push($supplierNos,'');
+//                $where[] = ['gb.supplierNo', 'in', $supplierNos];
+//            }
+//        }
 
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["gb.createrid", 'in', get_company_item_user_by_name($company_name)];
@@ -215,10 +215,10 @@ class Goodup extends Base
             $value['has_account'] = (int)isset($account[$value['supplierNo']]);
 
             //是否具有编辑权限
-            $value['is_allow_update'] = 0;
-            if ($this->level == 2) {
-                if (in_array($this->roleid, [1, 33]) || in_array($value['chargerid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
-            } elseif ($this->level == 3) $value['is_allow_update'] = 1;
+            $value['is_allow_update'] = 1;
+//            if ($this->level == 2) {
+//                if (in_array($this->roleid, [1, 33]) || in_array($value['chargerid'], $role[DataGroupModel::$type_可编辑])) $value['is_allow_update'] = 1;
+//            } elseif ($this->level == 3) $value['is_allow_update'] = 1;
 
             $data[] = $value;
         }

+ 13 - 13
app/admin/controller/OrderOutChild.php

@@ -111,18 +111,18 @@ class OrderOutChild extends Base
             	}
 
             }
-            $person_supplier = Db::connect('mysql_sys')
-                ->name('supplier')
-                ->where(['is_del' => 0, 'personid' => $this->uid])
-                ->column('code');
-            if ($person_supplier) {
-            	if($param['IsByMe']==1){
-            		$suppe = checkHasAccountBySupplierNos($person_supplier);
-            		$suppAcco =array_diff($person_supplier,array_keys($suppe));
-		            $person_supplier= $suppAcco;
-            	}
-                $condition .= " or (a.order_type<>1 and a.supplierNo in ('" . implode('\',\'', $person_supplier) . "'))";
-            }
+//            $person_supplier = Db::connect('mysql_sys')
+//                ->name('supplier')
+//                ->where(['is_del' => 0, 'personid' => $this->uid])
+//                ->column('code');
+//            if ($person_supplier) {
+//            	if($param['IsByMe']==1){
+//            		$suppe = checkHasAccountBySupplierNos($person_supplier);
+//            		$suppAcco =array_diff($person_supplier,array_keys($suppe));
+//		            $person_supplier= $suppAcco;
+//            	}
+//                $condition .= " or (a.order_type<>1 and a.supplierNo in ('" . implode('\',\'', $person_supplier) . "'))";
+//            }
         }
          if ($this->level == 3 && $param['IsByMe']==1) {
 
@@ -536,7 +536,7 @@ 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->level == 2) && ($this->uid != $person[$child[$value['outChildCode']]['supplierNo']])) throw new Exception('非库存品和采返商品只能由供应商负责人操作');
+//                    if (($this->level == 2) && ($this->uid != $person[$child[$value['outChildCode']]['supplierNo']])) throw new Exception('非库存品和采返商品只能由供应商负责人操作');
                 }
 
 //                if ($this->level == 2) {

+ 6 - 6
app/admin/controller/Orderback.php

@@ -102,12 +102,12 @@ class Orderback extends Base
                 $condition[] = ['a.apply_id', 'in', $arr];
                 $condition[] = ['a.cgderid', 'in', $hand];
 
-                $supplierNos = Db::connect('mysql_sys')
-                    ->name('supplier')
-                    ->where(['is_del' => 0, 'personid' => $arr])
-                    ->column('code');
-
-                $where[] = ['a.supplierNo', 'in', $supplierNos];
+//                $supplierNos = Db::connect('mysql_sys')
+//                    ->name('supplier')
+//                    ->where(['is_del' => 0, 'personid' => $arr])
+//                    ->column('code');
+//
+//                $where[] = ['a.supplierNo', 'in', $supplierNos];
             }
         }
 

+ 14 - 14
app/admin/controller/Purch.php

@@ -132,20 +132,20 @@ class Purch extends Base
         $userCommon = \app\admin\common\User::getIns();
 
         //只有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 ($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];
+//            }
+//        }
 
 
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";

+ 25 - 25
app/admin/controller/Purchin.php

@@ -94,26 +94,26 @@ class Purchin extends Base
         $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_全部]));
-
-                if($arr){
-                    $sys_supplier = Db::connect('mysql_sys')
-                        ->name('supplier')
-                        ->where(['is_del'=>0,'personid'=>$arr])
-                        ->column('code');
-                    $condition[] = ["b.supplierNo", "in", $sys_supplier];
-                }
-
-                $condition[] = ["a.apply_id", "in", $hand];
-                $condition[] = ["c.contactor", "in", $hand];
-//        	$condition.="sip.personid in (".implode(",",
-//        $role[DataGroupModel::$type_全部]).") or a.apply_id in {$hand} or c.contactor in {$hand}";
-            }
-        }
+//        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_全部]));
+//
+//                if($arr){
+//                    $sys_supplier = Db::connect('mysql_sys')
+//                        ->name('supplier')
+//                        ->where(['is_del'=>0,'personid'=>$arr])
+//                        ->column('code');
+//                    $condition[] = ["b.supplierNo", "in", $sys_supplier];
+//                }
+//
+//                $condition[] = ["a.apply_id", "in", $hand];
+//                $condition[] = ["c.contactor", "in", $hand];
+////        	$condition.="sip.personid in (".implode(",",
+////        $role[DataGroupModel::$type_全部]).") or a.apply_id in {$hand} or c.contactor in {$hand}";
+//            }
+//        }
 
         $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)];
@@ -299,7 +299,7 @@ class Purchin extends Base
         ];
         Db::startTrans();
         try{
-
+//
             if ($this->level == 2) {
                 //如果开通了供应商账号,则只允许level3账号操作,level2账号不允许操作
                 $all_has_supplier_account = checkHasAccountBySupplierNos([$cgdinfo['supplierNo']]);
@@ -337,7 +337,7 @@ class Purchin extends Base
                 $supplier_temp = $userCommon->handle('sInfo',['code'=>$cgdinfo['supplierNo']]);
                 $person = $supplier_temp['data'];
 
-                if ($this->level == 2 && $this->uid != $person['personid']) throw new Exception('只能由供应商负责人操作');
+//                if ($this->level == 2 && $this->uid != $person['personid']) throw new Exception('只能由供应商负责人操作');
 
                 if($status==1){
                             Db::commit();
@@ -501,7 +501,7 @@ class Purchin extends Base
 //                            ->where('code',$cgdinfo['supplierNo'])
 //                            ->value('personid');
 
-                        if($cgdinfo['status']==1 || $cgdinfo['status']==2){
+//                        if($cgdinfo['status']==1 || $cgdinfo['status']==2){
 
 //                            $is_stock = Db::name('good_basic')
 //                                ->where(['is_del'=>0,'spuCode'=>$cgdinfo['spuCode']])
@@ -518,9 +518,9 @@ class Purchin extends Base
 ////                                $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid,'handle_user_list'=>implode(',', $uid)];
 //
 //                            }else{
-                            if (($this->level == 2) && ($this->uid != $person['personid'])) throw new Exception('只能由供应商负责人操作');
+//                            if (($this->level == 2) && ($this->uid != $person['personid'])) throw new Exception('只能由供应商负责人操作');
 //                            }
-                        }//else $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid];
+//                        }//else $process = ["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $personid];
                         
                         ProcessOrder::AddProcess(['id'=>$this->uid,'nickname'=>$this->uname],["order_code" => $cgdNo, "order_id" => $cgdinfo['id'], "order_status" => $cgdinfo['status'], "order_type" => 'CGD', "before_status" => $order['status'], 'holder_id' => $person['personid']??0]);
                         Db::commit();

+ 8 - 8
app/admin/controller/Reorder.php

@@ -472,17 +472,17 @@ class Reorder extends Base
         //3.业务公司账号-供应商负责人,只查看自己负责人的供应商的;
         //4,业务公司账号-数据共享接受人,共享给自己的数据;
         if ($this->level == 2) {
-            $code = Db::connect('mysql_sys')
-                ->name('supplier')
-                ->where(['is_del' => 0, 'personid' => $this->uid])
-                ->column('code');
-
-            if (empty($code)) {
+//            $code = Db::connect('mysql_sys')
+//                ->name('supplier')
+//                ->where(['is_del' => 0, 'personid' => $this->uid])
+//                ->column('code');
+//
+//            if (empty($code)) {
                 //考虑数据权限
                 $role = $this->checkDataShare();
                 $hand = resign_hand_user($this->uid, 0);
                 $where[] = ['sr.apply_id', 'in', array_unique(array_merge($role[DataGroupModel::$type_全部], $hand))];
-            } else $where[] = ['sr.supplierNo', 'in', $code];
+//            } else $where[] = ['sr.supplierNo', 'in', $code];
 
 //            $role = $this->checkDataShare();
 //            $hand = resign_hand_user($this->uid, 0);
@@ -838,7 +838,7 @@ class Reorder extends Base
         $info['person'] = $s_info['data']['person'];
 
         //当处于以下节点时,level2账号必须是供应商负责人操作,level3账号不做限制
-        if (in_array($info['status'], [9, 10]) && ($this->level == 2) && ($this->uid != $info['person_id'])) return json_show(1004, '您不是供应商负责人,此时无权操作');
+//        if (in_array($info['status'], [9, 10]) && ($this->level == 2) && ($this->uid != $info['person_id'])) return json_show(1004, '您不是供应商负责人,此时无权操作');
 
         if ($param['status'] == 10) $info['loop_total'] += 1;//只要走到节点10(业务公司修改,待供应商确认),就增加次数
         $var = $info['status'];

+ 16 - 16
app/admin/controller/ReorderChild.php

@@ -251,27 +251,27 @@ class ReorderChild extends Base
         //启用数据权限
         if ($param['is_authority'] == 1) {
             //供应商账号,只查询该供应商下所有数据
-            if ($this->level == 3 && $param['supplierNo'] == '') return json_show(1004, '供应商账号时供应商编码不能为空');
+//            if ($this->level == 3 && $param['supplierNo'] == '') return json_show(1004, '供应商账号时供应商编码不能为空');
 
             //1.超管,查看全部;
             //2.业务公司账号-申请人,初始状态只查看自己创建的;
             //3.业务公司账号-退回仓库负责人,只查看自己负责仓库的数据;
             //4.业务公司账号-数据共享接受人,共享给自己的数据;
-            if ($this->level == 2) {
-
-                //是否仓库负责人
-                $is_contactor = Db::name('warehouse_info')
-                    ->field('id')
-                    ->where(['is_del' => 0, 'contactor' => $this->uid])
-                    ->findOrEmpty();
-                if (empty($is_contactor)) {
-                    $role = $this->checkDataShare();
-                    $hand = resign_hand_user($this->uid, 0);
-                    $db->whereIn('b.apply_id', array_unique(array_merge($role[DataGroupModel::$type_全部], $hand)));
-                } else {
-                    $db->where('`a`.`return_wsm_code` in ' . Db::name('warehouse_info')->field('wsm_code')->where(['is_del' => 0, 'contactor' => $this->uid])->buildSql());
-                }
-            }
+//            if ($this->level == 2) {
+//
+//                //是否仓库负责人
+//                $is_contactor = Db::name('warehouse_info')
+//                    ->field('id')
+//                    ->where(['is_del' => 0, 'contactor' => $this->uid])
+//                    ->findOrEmpty();
+//                if (empty($is_contactor)) {
+//                    $role = $this->checkDataShare();
+//                    $hand = resign_hand_user($this->uid, 0);
+//                    $db->whereIn('b.apply_id', array_unique(array_merge($role[DataGroupModel::$type_全部], $hand)));
+//                } else {
+//                    $db->where('`a`.`return_wsm_code` in ' . Db::name('warehouse_info')->field('wsm_code')->where(['is_del' => 0, 'contactor' => $this->uid])->buildSql());
+//                }
+//            }
         }
 
         $count = $db->count('a.id');

+ 27 - 21
app/admin/controller/Report.php

@@ -216,10 +216,8 @@ class Report extends Base
     {
         $param = $this->request->only([
             'token',
-            'start_date' => '',
-            'end_date' => '',
-            'page' => 1,
-            'size' => 15,
+            'start_date' =>date('Y-m-01'),
+            'end_date' => date('Y-m-d'),
         ], 'post', 'trim');
 
         $val_params = Validate::rule([
@@ -232,31 +230,39 @@ class Report extends Base
         $where = [['a.is_del', '=', 0]];
         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('consult_info')
-            ->alias('a')
-            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,cii.name,count(a.id) total')
-            ->leftJoin('consult_order b', 'b.zxNo=a.zxNo')
-            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
-            ->leftJoin('company_item cii', 'cii.id=c.itemid')
-            ->where($where)
-            ->group('addtime,cii.id')
-            ->order('addtime')
-            ->count();
+//        $count = Db::name('consult_info')
+//            ->alias('a')
+//            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,cii.name,count(a.id) total')
+//            ->leftJoin('consult_order b', 'b.zxNo=a.zxNo')
+//            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
+//            ->leftJoin('company_item cii', 'cii.id=c.itemid')
+//            ->where($where)
+//            ->group('addtime,cii.id')
+//            ->order('addtime')
+//            ->count();
 
         $list = Db::name('consult_info')
             ->alias('a')
-            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,cii.name,count(a.id) total')
+            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,b.saleid,count(a.id) total')
             ->leftJoin('consult_order b', 'b.zxNo=a.zxNo')
-            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
-            ->leftJoin('company_item cii', 'cii.id=c.itemid')
+//            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
+//            ->leftJoin('company_item cii', 'cii.id=c.itemid')
             ->where($where)
-            ->group('addtime,cii.id')
+            ->group('addtime,b.saleid')
             ->order('addtime', 'desc')
-            ->page($param['page'], $param['size'])
+//            ->page($param['page'], $param['size'])
             ->select()
             ->toArray();
-
-        return json_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+        $saleArr=array_unique(array_column($list,"saleid"));
+        $departArr =get_company_name_by_uid($saleArr);
+        $data=[];
+	    foreach ($list as $value) {
+		    $depart=$departArr[$value['saleid']] ?? '0';
+		    if (!isset($data[$value['addtime'] . '-' . $depart])) $data[$value['addtime'] . '-' . $depart]=['addtime'=>$value['addtime'] , 'name'=>$depart , 'total'=>0];
+		    $data[$value['addtime'] . '-' . $depart]['total']+=$value['total'];
+	    }
+	
+	    return json_show(0 , '请求成功' , array_values($data));
 
     }
 

+ 16 - 24
app/admin/controller/ReportByRelaComNo.php

@@ -253,36 +253,28 @@ class ReportByRelaComNo extends Base
         $where = [['a.is_del', '=', 0], ['b.companyNo', '=', $this->relaComNo]];
         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('consult_info')
+              $list = Db::name('consult_info')
             ->alias('a')
-            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,cii.name,count(a.id) total')
+            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,b.saleid,count(a.id) total')
             ->leftJoin('consult_order b', 'b.zxNo=a.zxNo')
-            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
-            ->leftJoin('company_item cii', 'cii.id=c.itemid')
+//            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
+//            ->leftJoin('company_item cii', 'cii.id=c.itemid')
             ->where($where)
-            ->group('addtime,cii.id')
-            ->order('addtime')
-            ->count();
-
-        $list = Db::name('consult_info')
-            ->alias('a')
-            ->field('DATE_FORMAT(a.addtime,"%Y-%m-%d") addtime,cii.name,count(a.id) total')
-            ->leftJoin('consult_order b', 'b.zxNo=a.zxNo')
-            ->leftJoin('depart_user c', 'c.uid=b.saleid AND c.is_del=0')
-            ->leftJoin('company_item cii', 'cii.id=c.itemid')
-            ->where($where)
-            ->group('addtime,cii.id')
+            ->group('addtime,b.saleid')
             ->order('addtime', 'desc')
-            ->page($param['page'], $param['size'])
+//            ->page($param['page'], $param['size'])
             ->select()
             ->toArray();
-
-        foreach ($list as &$value) {
-            $value['relaComNo'] = $this->relaComNo;
-            $value['relaComName'] = $this->relaComName;
-        }
-
-        return json_show(0, '请求成功', ['list' => $list, 'count' => $count]);
+        $saleArr=array_unique(array_column($list,'saleid'));
+        $departArr =get_company_name_by_uid($saleArr);
+        $data=[];
+	    foreach ($list as $value) {
+		    $depart=$departArr[$value['saleid']] ?? '0';
+		    if (!isset($data[$value['addtime'] . '-' . $depart])) $data[$value['addtime'] . '-' . $depart]=['addtime'=>$value['addtime'] , 'name'=>$depart , 'total'=>0];
+		    $data[$value['addtime'] . '-' . $depart]['total']+=$value['total'];
+	    }
+	
+	    return json_show(0 , '请求成功' , array_values($data));
 
     }
 

+ 15 - 15
app/admin/controller/Resign.php

@@ -95,21 +95,21 @@ class Resign extends Base
 ////        .implode(',',$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_全部]));
-                $condition[]= ["p.apply_id","in",$arr];
-        	    $condition[]= ["p.cgderid","in",$hand];
-                $supplierNos = Db::connect('mysql_sys')
-                    ->name('supplier')
-                    ->where(['is_del' => 0, 'personid' => $arr])
-                    ->column('code');
-
-                $condition[] = ['p.supplierNo', 'in', $supplierNos];
-            }
-        }
+//        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[]= ["p.apply_id","in",$arr];
+//        	    $condition[]= ["p.cgderid","in",$hand];
+//                $supplierNos = Db::connect('mysql_sys')
+//                    ->name('supplier')
+//                    ->where(['is_del' => 0, 'personid' => $arr])
+//                    ->column('code');
+//
+//                $condition[] = ['p.supplierNo', 'in', $supplierNos];
+//            }
+//        }
         $company_name = isset($this->post['company_name']) && $this->post['company_name'] !== "" ? trim($this->post['company_name']) : "";
         if ($company_name !== "") $where[] = ["p.apply_id", 'in', get_company_item_user_by_name($company_name)];
 

+ 9 - 9
app/admin/controller/Sale.php

@@ -3537,18 +3537,18 @@ class Sale extends Base
         //只有level2的账号过滤数据权限
         if ($this->level == 2) {
 
-            //如果是供应商负责人,根据供应商筛选
-            $person_supplier = Db::connect('mysql_sys')
-                ->name('supplier')
-                ->where(['is_del' => 0, 'personid' =>$this->uid])
-                ->column('code');
-
-            if(!empty($person_supplier)) $condition = "b.supNo in ('" . implode('\',\'', $person_supplier) . "')";
-            else{
+//            //如果是供应商负责人,根据供应商筛选
+//            $person_supplier = Db::connect('mysql_sys')
+//                ->name('supplier')
+//                ->where(['is_del' => 0, 'personid' =>$this->uid])
+//                ->column('code');
+//
+//            if(!empty($person_supplier)) $condition = "b.supNo in ('" . implode('\',\'', $person_supplier) . "')";
+//            else{
                 //不是供应商负责人,根据数据权限筛选申请人
                 $role = $this->checkDataShare();
                 if (!empty($role[DataGroupModel::$type_全部])) $condition = " a.apply_id in (" . implode(',', $role[DataGroupModel::$type_全部]) . ")";
-            }
+//            }
 
 
 //            $hand = resign_hand_user($this->uid, 0);

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

@@ -3269,7 +3269,7 @@ class SaleReport extends Base
            ->where($where)
             ->order('a.addtime', 'desc')
 	        ->group("a.good_code")
-          ->field("a.good_code 商品编号,a.good_name 产品名称,a.good_num 当日库存销售,a.is_stock,a.send_num 当日库存发货,0 当日剩余可用库存,a.supplierName 业务公司,po.good_price 库存采购单价,po.total_fee 当日库存消耗金额")
+          ->field("a.good_code 商品编号,a.good_name 产品名称,sum(a.good_num) 当日库存销售,a.is_stock,sum(a.send_num) 当日库存发货,0 当日剩余可用库存,a.supplierName 业务公司,po.good_price 库存采购单价,sum(po.total_fee) 当日库存消耗金额")
           ->cursor();
 		$data=[];
 		foreach ($list as $value){

+ 18 - 0
app/model/AccountItem.php

@@ -0,0 +1,18 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class AccountItem extends Model
+{
+    protected $connection='mysql_sys';
+    
+    public function GetUidByDepartId($departId){
+        return $this->where(["itemid"=>$departId])->column("account_id");
+    }
+}

+ 60 - 0
app/report/controller/Base.php

@@ -0,0 +1,60 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\controller;
+
+use app\BaseController;
+use app\model\AccountItem;use think\App;
+use think\facade\Cache;use think\Response;
+use think\exception\HttpResponseException;
+class Base extends BaseController
+{
+	  protected $responseType = 'json';
+    public function __construct(App $app) {parent::__construct($app);}
+    
+      public function result(string $msg, $data = null, int $code = 0, string $type = null, array $header = [], array $options = [])
+    {
+        $result = [
+            'code' => $code,
+            'msg'  => $msg,
+            'data' => $data,
+        ];
+        // 如果未设置类型则自动判断
+        $type = $type ?:  $this->responseType;
+
+        $code = 200;
+        if (isset($header['statuscode'])) {
+            $code = $header['statuscode'];
+            unset($header['statuscode']);
+        }
+
+        $response = Response::create($result, $type, $code)->header($header)->options($options);
+         throw new HttpResponseException($response);
+    }
+    
+     /**
+	* @param string $message
+	* @param int $code
+	* @param null $data
+	 */
+    public function error($message='',$code=1004,$data=null){
+        $this->result($message,$data,$code);
+    }
+    /**
+	* @param string $message
+	* @param int $code
+	* @param null $data
+	 */
+     public function success($message='',$data=null,$code=0){
+        $this->result($message,$data,$code);
+    }
+    public function  GetDepartId($derpar_id){
+     	$uid=Cache::get("Report::depart_".$derpar_id);
+     	if($uid==false){
+     		$uid = (new AccountItem())->GetUidByDepartId($derpar_id);
+     		Cache::set('Report::depart_'.$derpar_id,$uid,new \DateTime(date("Y-m-d 23:59:59")));
+     	}
+     	
+     	return $uid;
+    }
+}

+ 323 - 0
app/report/controller/Stats.php

@@ -0,0 +1,323 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\controller;
+
+use app\model\AccountItem;use app\report\model\ConsultBids;use app\report\model\ConsultInfo;use app\report\model\ConsultOrder;
+use app\report\model\OrderOut;use app\report\model\OrderOutChild;use app\report\model\Purchease;
+use app\report\model\PurcheaseOrder;
+use app\report\model\Sale;
+use think\db\Query;use think\Request;
+use think\App;
+class Stats extends Base
+{
+	private $saleDerpart=[52=>'客服部@百辰荣达',53=>'项目部@普润心堂',56=>'网络部@泓源广诚',57=>'平台部@万宇恒通',59=>'财务部@万宇恒通']; //  客服部@百辰荣达,
+	//项目部@普润心堂,网络部@泓源广诚,平台部@万宇恒通,财务部@万宇恒通
+	private $cgdDerpart=[58=>"万宇供应链资源部"];//万宇供应链资源部
+	public function __construct(App $app) {parent::__construct($app);}
+	
+	//咨询单
+    public function zxorder()
+    {
+    	$param =$this->request->param(["start"=>date("Y-m-01 00:00:00"),"end"=>date("Y-m-t 23:59:59")]);
+    	$time = [$param["start"],$param['end']];
+    	$zxModel =new ConsultOrder();
+    	$temp=[];
+    	foreach ($this->saleDerpart as $departid=>$depart){
+    	    $uid =$this->GetDepartId($departid);
+    	    $temp[$departid]["name"] =$depart;
+    	    $temp[$departid]["num"] =$zxModel->alias("a")->leftJoin("consult_info b","wsm_consult_order.zxNo=b.zxNo")
+    	    ->whereBetween('b.addtime',$time)
+    	    ->whereIn('createrid',$uid)
+    	    ->where(["a.is_del"=>0,"b.is_del"=>0])
+    	    ->count();
+    	}
+    	
+         $this->success("获取成功",array_values($temp));
+    }
+
+    /**
+     * 销售单.
+     *
+     * @return \think\Response
+     */
+    public function saleOrder()
+    {
+    	$param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+    	$time = [$param['start'],$param['end']];
+    	$Model =new Sale();
+    	$temp=[];
+    	foreach ($this->saleDerpart as $departid=>$depart){
+    	    $uid =$this->GetDepartId($departid);
+    	    $temp[$departid]['name'] =$depart;
+    	    $temp[$departid]['result'] =$Model->group("order_type")
+    	    ->whereBetween('addtime',$time)
+    	    ->whereIn('apply_id',$uid)
+    	    ->where(['is_del'=>0])
+    	    ->column("count(1) num,order_type","order_type");
+    	}
+    	
+         $this->success('获取成功',array_values($temp));
+    }
+
+    /**
+     * 报备单
+     *
+     * @param  \think\Request  $request
+     * @return \think\Response
+     */
+    public function bkOrder()
+    {
+       $param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+    	$time = [$param['start'],$param['end']];
+    	$Model =new Purchease();
+    	$temp=[];
+    	foreach ($this->saleDerpart as $departid=>$depart){
+    	    $uid =$this->GetDepartId($departid);
+    	    $temp[$departid]['name'] =$depart;
+    	    $temp[$departid]['num'] =$Model
+    	    ->whereBetween('addtime',$time)
+    	    ->whereIn('apply_id',$uid)
+    	    ->where(['is_del'=>0,"status"=>[1,2]])
+    	    ->count();
+    	}
+    	
+         $this->success('获取成功',array_values($temp));
+    }
+
+    /**
+     * 采购部门采购情况
+     */
+    public function cgdOrder()
+    {
+     $param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+     $time = [$param['start'],$param['end']];
+    	$Model =new PurcheaseOrder();
+    	$temp=[];
+    	
+    	foreach ($this->cgdDerpart as $departid=>$depart){
+    	    $uid =$this->GetDepartId($departid);
+    	    $temp[$departid]['name'] =$depart;
+    	    
+    	    $data =$Model->alias("a")->leftJoin("order_num b","a.cgdNo=b.cgdNo")
+    	    ->leftJoin("sale c","c.orderCode=b.orderCode and c.is_del=0")
+    	    ->leftJoin("platform d","d.id=c.platform_id and d.is_del=0")
+    	    ->field("a.cgder,a.cgder_id,a.order_type,d.use_type,count(1) num")
+    	    ->group("a.cgder,a.cgder_id,order_type,use_type")
+    	     ->whereBetween('a.addtime',$time)
+    	    ->whereIn('a.cgder_id',$uid)
+    	    ->where('a.is_del',0)
+    	    ->select();
+    	    $result=[];
+    	    foreach ($data as $key=>$val){
+    	    	if(!isset($result[$val['cgder_id']])){
+    	    		 $result[$val['cgder_id']]= [  'cgder'=>$val['cgder'],
+	                    'total_cgd' => 0,//订单总量
+	                    'tag_1' => 0,//库存品
+	                    'tag_2' => 0,//非库存品
+	                    'tag_zx' => 0,//咨询采反总数
+	                    'tag_c' => 0,//to C
+	                    'tag_b' => 0,//to B
+                    ];
+    	    	}
+    	    	switch ($val['order_type']) {
+	                case 1:
+	                    //库存品
+	                    if ($val['order_source'] == 0) {
+	                        $result[$val['cgder_id']]['tag_1']+=$val['num'];
+	                    }
+	                    break;
+	
+	                case 2:
+	                    //非库存品
+	                 $result[$val['cgder_id']]['tag_2']+=$val['num'];
+					break;
+	                case 3:
+	                    //咨询采反
+						$result[$val['cgder_id']]['tag_zx']+=$val['num'];
+	                    break;
+                }
+                
+              switch ($val['use_type']) {
+	                case 1:
+	                    //to B
+	                    $result[$val['cgder_id']]['tag_b']+=$val['num'];
+	                    
+	                    break;
+	
+	                case 2:
+	                    //to C
+	                      $result[$val['cgder_id']]['tag_c']+=$val['num'];
+	                    break;
+                }
+    	    }
+    	    $temp[$departid]['result'] =$result;
+    	    
+    	}
+         $this->success('获取成功',array_values($temp));
+    }
+
+    /**
+     * 显示编辑资源表单页.
+     *
+     * @param  int  $id
+     * @return \think\Response
+     */
+    public function bidsOrder()
+    {
+     $param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+     $time = [$param['start'],$param['end']];
+     $model = new ConsultBids();
+     $temp=[];
+      foreach ($this->cgdDerpart as $departid=>$depart){
+            $uid =$this->GetDepartId($departid);
+    	    $temp[$departid]['name'] =$depart;
+    	    $list = $model->whereBetween("addtime",$time)->whereIn("createrid",$uid)->where('is_del',0)->group("createrid,creater")->field
+    	    ("creater,createrid,count(1) num")->select();
+    	    $temp[$departid]['result'] =$list;
+      }
+          $this->success('获取成功',array_values($temp));
+    }
+
+    /**
+     * 咨询单空返数据
+     *
+     * @param  \think\Request  $request
+     * @param  int  $id
+     * @return \think\Response
+     */
+    public function bidsFail()
+    {$param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+     $time = [$param['start'],$param['end']];
+     $model = new ConsultOrder();
+     $temp=[];
+     $uid =	 (new AccountItem())->GetUidByDepartId(array_keys($this->saleDerpart));
+     $list = $model->alias('a')
+    	    ->leftJoin('consult_info b','wsm_consult_order.zxNo=b.zxNo')
+    	    ->whereBetween('a.addtime',$time)
+    	    ->whereIn('createrid',$uid)
+    	    ->where(['a.is_del'=>0,'b.is_del'=>0])
+    	    ->where('b.status','<>',5)
+    	    ->group('b.status')
+    	    ->column('b.status,count(1) num','b.status');
+    	    $temp['result'] =$list;
+      $this->success('获取成功',$temp);
+    }
+
+    /**
+     * 发货工单
+     */
+    public function outChildOrder()
+    {
+      $param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+      $time = [$param['start'],$param['end']];
+      $model = new OrderOutChild();
+      foreach ($this->saleDerpart as $departid=>$sale){
+      	$uid = $this->GetDepartId($departid);
+      	 $temp[$departid]['name'] =$sale;
+      	   $build=  $model->alias('a')->LeftJoin('warehouse_info b','a.wsm_code=b.wsm_code')
+      	 ->whereBetween('a.addtime',$time)
+      	 ->whereIn('a.apply_id',$uid)
+      	 ->where('a.is_del',0)
+      	 ->field('a.id,ifnull(b.contactor,"0") contactor,ifnull(b.contactor_name,"") as contactor_name ,a.addtime,DATEDIFF(ifnull( a.sendtime, NOW()), a.addtime ) as expire,"" stage')
+      	 ->withAttr('stage',function ($v,$row){
+      	 	if($row['expire']==0) return 1;
+      	 	elseif($row['expire']<2) return 2;
+      	 	elseif($row['expire']< 7) return 3;
+      	 	elseif($row['expire']< 14) return 4;
+      	 	elseif($row['expire']< 30) return 5;
+      	 	else return 6;
+      	 })->select();
+      	  $tlist=[];
+      	foreach ($build as $item){
+      	    if(!isset($tlist[$item['contactor']])){
+      	    	$tlist[$item['contactor']]=[$item['contactor_name'],0,0,0,0,0,0];
+      	    }
+      	    $tlist[$item['contactor']][$item['stage']]+=1;
+      	}
+      	 $temp[$departid]['result'] =$tlist?:[];
+      }
+      $this->success('获取成功',array_values($temp));
+    }
+    
+    /** 发货单数据统计
+	* @throws \think\db\exception\DataNotFoundException
+	* @throws \think\db\exception\DbException
+	* @throws \think\db\exception\ModelNotFoundException
+    */
+    public function outOrder()
+    {
+      $param =$this->request->param(['start'=>date('Y-m-01 00:00:00'),'end'=>date('Y-m-t 23:59:59')]);
+      $time = [$param['start'],$param['end']];
+      $model = new OrderOut();
+      foreach ($this->saleDerpart as $departid=>$sale){
+      	$uid = $this->GetDepartId($departid);
+      	 $temp[$departid]['name'] =$sale;
+      	  $build=  $model->alias('a')->LeftJoin('warehouse_info b','a.wsm_code=b.wsm_code')
+      	 ->whereBetween('a.addtime',$time)
+      	 ->whereIn('a.apply_id',$uid)
+      	 ->where('a.is_del',0)
+      	 ->field('a.id,ifnull(b.contactor,"0") contactor,ifnull(b.contactor_name,"") as contactor_name ,a.addtime,DATEDIFF(ifnull( a.sendtime, NOW()), a.addtime ) as expire,"" stage')
+      	 ->withAttr('stage',function ($v,$row){
+      	 	if($row['expire']==0) return 1;
+      	 	elseif($row['expire']<2) return 2;
+      	 	elseif($row['expire']< 7) return 3;
+      	 	elseif($row['expire']< 14) return 4;
+      	 	elseif($row['expire']< 30) return 5;
+      	 	else return 6;
+      	 })->select();
+      	  $tlist=[];
+      	foreach ($build as $item){
+      	    if(!isset($tlist[$item['contactor']])){
+      	    	$tlist[$item['contactor']]=[$item['contactor_name'],0,0,0,0,0,0];
+      	    }
+      	    $tlist[$item['contactor']][$item["stage"]]+=1;
+      	}
+      	 $temp[$departid]['result'] =$tlist;
+      }
+      $this->success('获取成功',array_values($temp));
+    }
+    //未发货数据
+    public function wsendOrder(){
+    	
+    	$temp=[];
+    	$model =new Sale();
+		$userArr=[];
+    	foreach ($this->saleDerpart as $departid=>$depart){
+    		$uid = $this->GetDepartId($departid);
+    		$userArr=array_merge($userArr,$uid);
+    		$temp[$departid]["name"] = $depart;
+    	    $start = 1;
+    	    $end = date("m");
+    		while ($start<=$end){
+    			$list = $model->whereIn('status',[0,1])
+    			->whereIn("send_status",[1,2])
+	            ->whereIn('apply_id',$uid)
+	            ->whereMonth('addtime',date('Y').'-'.$start)
+	            ->group('send_status')->column('sum(wsend_num) num,send_status','send_status');
+    			$temp[$departid]['result'][$start]=$list;
+    			$start++;
+    		}
+    		
+    	}
+    	$noArr=[];
+    	$noArr['name'] = "无地址订单";
+    	 $start = 1;
+    	    $end = date('m');
+    		while ($start<=$end){
+//    			$month = $start;
+    			$list = $model->whereIn('status',[0,1])
+    			->whereIn('send_status',[1,2])
+	            ->whereIn('apply_id',$userArr)
+	            ->whereMonth('addtime',date('Y').'-'.$start)
+	            ->field("sale_price,orderCode")
+	            ->append(["no_addr_num"=>function(Query $query,$data){
+	            	$query->name('order_addr')->where(['orderCode'=>$data['orderCode'],'is_del'=>0])->sum('receipt_quantity');
+	            }])
+	            ->find();
+    			$noArr['result'][$start]['total_price']=bcmul($list['sale_price'],$list['no_addr_num'].'',2);
+    			$start++;
+    		}
+    	  $this->success('获取成功',["result"=>array_values($temp),"noAddr"=>$noArr]);
+    }
+}

+ 14 - 0
app/report/model/ConsultBids.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class ConsultBids extends Model
+{
+    //
+}

+ 17 - 0
app/report/model/ConsultInfo.php

@@ -0,0 +1,17 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class ConsultInfo extends Model
+{
+    
+	public function zxorder(){
+		return $this->belongsTo(ConsultOrder::class,"zxNo","zxNo")->bind(["creater","createrid"]);
+	}
+}

+ 16 - 0
app/report/model/ConsultOrder.php

@@ -0,0 +1,16 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class ConsultOrder extends Model
+{
+   public function zxinfo(){
+   	return $this->belongsToMany(ConsultInfo::class,"zxNo","zxNo");
+   }
+}

+ 14 - 0
app/report/model/OrderOut.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class OrderOut extends Model
+{
+    //
+}

+ 22 - 0
app/report/model/OrderOutChild.php

@@ -0,0 +1,22 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class OrderOutChild extends Model
+{
+//	protected $append=["expire"];
+//	public function GetExpireAttr($v,$row){
+//		return date_diff(new \DateTime($row['sendtime']??date("Y-m-d H:i:s")),new \DateTime($row['addtime']))->days+1;
+//	}
+    public function WsmInfo(){
+    	return $this->belongsTo(Ware::class,"wsm_code","wsm_code")->bind(["contactor","contactor_name"]);
+    }
+    
+    
+}

+ 14 - 0
app/report/model/Purchease.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class Purchease extends Model
+{
+    //
+}

+ 14 - 0
app/report/model/PurcheaseOrder.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class PurcheaseOrder extends Model
+{
+
+}

+ 14 - 0
app/report/model/Sale.php

@@ -0,0 +1,14 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class Sale extends Model
+{
+
+}

+ 16 - 0
app/report/model/Ware.php

@@ -0,0 +1,16 @@
+<?php
+declare (strict_types = 1);
+
+namespace app\report\model;
+
+use think\Model;
+
+/**
+ * @mixin \think\Model
+ */
+class Ware extends Model
+{
+  
+//   protected $prefix='wsm_';
+    protected $name='warehouse_info';
+}

+ 3 - 0
app/report/route/app.php

@@ -0,0 +1,3 @@
+<?php
+use think\facade\Route;
+