| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: my
 
-  * Date: 2021/4/12
 
-  * Time: 16:04
 
-  */
 
- namespace app\admin\controller;
 
- use think\App;
 
- use think\Db;
 
- class Statistics extends Auth{
 
-     public function __construct(App $app) {
 
-         parent::__construct($app);
 
-     }
 
-     /**
 
-      * 订单统计
 
-      *
 
-      * @author wst
 
-      * @date   2021/4/12 16:05
 
-      */
 
-     public function OrderTotal(){
 
-         $data  = (new Wyorders())->OrderTotal(cur_org_id());
 
-         $this->assign('data',$data);
 
-         $this->assign('meta_title','订单统计');
 
-         return $this->fetch();
 
-     }
 
-     /**
 
-      * 完成工时统计
 
-      *
 
-      * @author wst
 
-      * @date   2021/4/12 16:05
 
-      */
 
-     public function duration(){
 
-         $month = request()->get('month')?request()->get('month'):date('Y-m');
 
-         $data  = (new \app\model\Todo())->duration(cur_org_id(),$month);
 
-         $this->assign('data',$data);
 
-         $this->assign('month',$month);
 
-         $this->assign('meta_title','完成工时统计');
 
-         return $this->fetch();
 
-     }
 
-     /**
 
-      * 巡更工作量统计
 
-      *
 
-      * @author wst
 
-      * @date   2021/4/12 18:13
 
-      */
 
-     public function PatrolWork(){
 
-         $data  = (new \app\model\PatrolAddr())->PatrolWork(cur_org_id(),1);
 
-         $this->assign('data',$data);
 
-         $this->assign('meta_title','巡检巡查工作量统计');
 
-         return $this->fetch();
 
-     }
 
-     /**
 
-      * 设备台账工作量统计
 
-      *
 
-      * @author wst
 
-      * @date   2021/4/12 18:13
 
-      */
 
-     public function DeviceWork(){
 
-         $data  = (new \app\common\model\Device())->DeviceWork(cur_org_id());
 
-         $this->assign('data',$data);
 
-         $this->assign('meta_title','设备维保工作量统计');
 
-         return $this->fetch();
 
-     }
 
-     /**
 
-      * 日常工作工作量统计
 
-      *
 
-      * @author wst
 
-      * @date   2021/4/12 18:13
 
-      */
 
-     public function DailyWork(){
 
-         $data  = (new \app\common\model\Daily())->DailyWork(cur_org_id());
 
-         $this->assign('data',$data);
 
-         $this->assign('meta_title','日常工作量统计');
 
-         return $this->fetch();
 
-     }
 
-     /**
 
-      * 巡更人员工作量统计
 
-      *
 
-      * @author wst
 
-      * @date   2021/4/12 18:13
 
-      */
 
-     public function WorkerPatrol(){
 
-         $search['start'] = request()->get('start');
 
-         $search['end'] = request()->get('end');
 
-         if(empty($search['start'])){ // 未传时间默认近7天的
 
-             $search['start'] = date('Y-m-d',time()-(6*24*60*60));
 
-             $search['end'] = date('Y-m-d');
 
-         }
 
-         $data  = (new \app\model\PatrolTask())->WorkerPatrol(cur_org_id(),$search,1);
 
-         $this->assign('data',$data);
 
-         $this->assign('month',$search);
 
-         $this->assign('meta_title','巡检巡查人员工作量统计');
 
-         return $this->fetch();
 
-     }
 
-     //预约统计
 
-     public function ServiceCount(){
 
-         $type=input('type');
 
-         $start=input('start');
 
-         $end=input('end');
 
-         if($type == 1){
 
-             $meta_title = '餐饮预约统计';
 
-         }elseif ($type == 2){
 
-             $meta_title = '美发预约统计';
 
-         }elseif ($type == 3){
 
-             $meta_title = '洗衣预约统计';
 
-         }elseif ($type == 4){
 
-             $meta_title = '医疗预约统计';
 
-         }elseif ($type == 5){
 
-             $meta_title = '活动室预约统计';
 
-         }
 
-         //获取服务id
 
-         $serviceId = Db::name('service')->where('org_id',$this->org_id)->where('type',$type)->value('id');
 
-         if(!$serviceId){
 
-             $data = [];
 
-             $this->assign('data',$data);
 
-         }
 
-         if(!$start && !$end){
 
-             $end =  date('Y-m-d H:i:s');
 
-             $start =  date('Y-m-d H:i:s',strtotime("$start -1 month"));
 
-         }
 
-         if($start >= $end){
 
-             $this->error('开始时间不能大于结束时间');
 
-         }
 
-         if($type == 1 || $type == 2){
 
-             $map[] = ['service_id','=',$serviceId];
 
-             $cateList  = Db::name('service_cate')->where($map)->order('id asc')->select()->toArray();
 
-             $map[] = ['del','=',0];
 
-             $itemList  = Db::name('service_item')->where($map)->order('id asc')->select()->toArray();
 
-             $this->assign('itemList',$itemList);
 
-             $this->assign('cateList',$cateList);
 
-             if($start && $end){
 
-                 $where[] = ['sb.create_time','>=',$start];
 
-                 $where[] = ['sb.create_time','<=',$end];
 
-             }
 
-             $where[] = ['sb.service_id','=',$serviceId];
 
-             $where[] = ['sb.org_id','=',$this->org_id];
 
-             $data = [];
 
-             foreach ($itemList as $k=>$v){
 
-                 $data[$k]['title']= $v['title'];
 
-                 foreach ($cateList as $kk=>$vv){
 
-                     $bookList = Db::name('service_book')
 
-                         ->alias('sb')
 
-                         ->field('sb.*')
 
-                         ->join('service_book_cate sbc','sbc.service_book_id=sb.id')
 
-                         ->where('sb.service_item_id',$v['id'])
 
-                         ->where('sbc.service_cate_id',$vv['id'])
 
-                         ->where($where)
 
-                         ->select()
 
-                         ->toArray();
 
-                     $total = 0;
 
-                     foreach ($bookList as $kay=>$val){
 
-                         $total +=$val['nums'];
 
-                     }
 
-                     $data[$k]['list'][$kk] = $total;
 
-                 }
 
-             }
 
-             $count = [];
 
-             foreach ($cateList as $k=>$v){
 
-                 $bookList = Db::name('service_book')
 
-                     ->alias('sb')
 
-                     ->field('sb.*')
 
-                     ->join('service_book_cate sbc','sbc.service_book_id=sb.id')
 
-                     ->where('sbc.service_cate_id',$v['id'])
 
-                     ->where($where)
 
-                     ->select()
 
-                     ->toArray();
 
-                 $countNum = 0;
 
-                 foreach ($bookList as $kk=>$vv){
 
-                     $countNum +=$vv['nums'];
 
-                 }
 
-                 $count[$k]['count'] = $countNum;
 
-             }
 
-             $this->assign('count',$count);
 
-         }
 
-         if($type == 3){
 
-             $where[] = ['service_id','=',$serviceId];
 
-             $where[] = ['org_id','=',$this->org_id];
 
-             if($start && $end){
 
-                 $where[] = ['create_time','>=',$start];
 
-                 $where[] = ['create_time','<=',$end];
 
-             }
 
-             $data = [];
 
-             $bookList = Db::name('service_book')->where($where)->select()->toArray();
 
-             $total = 0;
 
-             foreach ($bookList as $k=>$v){
 
-                 $total +=$v['nums'];
 
-             }
 
-             $data['k'] = 1;
 
-             $data['count'] = $total;
 
-         }
 
-         if($type == 4 || $type == 5){
 
-             $map[] = ['service_id','=',$serviceId];
 
-             $map[] = ['del','=',0];
 
-             $itemList  = Db::name('service_item')->where($map)->order('id asc')->select()->toArray();
 
-             $this->assign('itemList',$itemList);
 
-             $where[] = ['create_time','>=',$start];
 
-             $where[] = ['create_time','<=',$end];
 
-             $where[] = ['service_id','=',$serviceId];
 
-             $where[] = ['org_id','=',$this->org_id];
 
-             $data = [];
 
-             foreach ($itemList as $k=>$v){
 
-                 $data[$k]['id']= $v['id'];
 
-                 $data[$k]['title']= $v['title'];
 
-                 $bookList = Db::name('service_book')
 
-                     ->where('service_item_id',$v['id'])
 
-                     ->where($where)
 
-                     ->select()
 
-                     ->toArray();
 
-                 $total = 0;
 
-                 foreach ($bookList as $kay=>$val){
 
-                     $total +=$val['nums'];
 
-                 }
 
-                 $data[$k]['count'] = $total;
 
-             }
 
-             $countNum = 0;
 
-             foreach ($data as $kay =>$val){
 
-                 $countNum += $val['count'];
 
-             }
 
-             $this->assign('countNum',$countNum);
 
-         }
 
-         $this->assign('start',$start);
 
-         $this->assign('end',$end);
 
-         $this->assign('data',$data);
 
-         $this->assign('type',$type);
 
-         $this->assign('meta_title',$meta_title);
 
-         return $this->fetch();
 
-     }
 
-     public function serviceCountDetails(){
 
-         $month = input('month');
 
-         $itemId = input('itemId',0);
 
-         $serviceId = input('serviceId',0);
 
-         if(!$month && !$itemId){
 
-             $this->error('参数错误');
 
-         }
 
-         $startMonth = $month.'-1 00:00:00';
 
-         $endMonth = $month.'-31 23:59:59';
 
-         $sWeek = date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600));
 
-         $eWeek = date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600));
 
-         $startWeek = $sWeek.' 00:00:00';
 
-         $endWeek = $eWeek.' 23:59:59';
 
-         $day = date('Y-m-d');
 
-         $startDay= $day.' 00:00:00';
 
-         $endDay= $day.' 23:59:59';
 
-         $cateList = Db::name('service_cate')->where('service_id',$serviceId)->where('enable',1)->select()->toArray();
 
-         foreach ($cateList as $k=>$v){
 
-             $bookCate = Db::name('service_book_cate')
 
-                 ->where('service_book_cate_id',$v['id'])
 
-                 ->select()
 
-                 ->toArray();
 
-             $ids = [];
 
-             foreach ($bookCate as $kay=>$val){
 
-                 $ids[] = $val['service_book_id'];
 
-             }
 
-             $newIds = array_unique($ids);
 
-             $bookList = Db::name('service_book')
 
-                 ->whereIn('id',$newIds)
 
-                 ->where('service_item_id',$itemId)
 
-                 ->where('service_id',$serviceId)
 
-                 ->where('org_id',$this->org_id)
 
-                 ->whereTime('create_time', 'between', [$startMonth, $endMonth])
 
-                 ->select()->toArray();
 
-             $nums = 0;
 
-             foreach ($bookList as $kk=>$vv){
 
-                 $nums +=$vv['nums'];
 
-             }
 
-             $bookList1 = Db::name('service_book')
 
-                 ->whereIn('id',$newIds)
 
-                 ->where('service_item_id',$itemId)
 
-                 ->where('service_id',$serviceId)
 
-                 ->where('org_id',$this->org_id)
 
-                 ->whereTime('create_time', 'between', [$startWeek, $endWeek])
 
-                 ->select()->toArray();
 
-             $nums1 = 0;
 
-             foreach ($bookList1 as $kk=>$vv){
 
-                 $nums1 +=$vv['nums'];
 
-             }
 
-             $bookList2 = Db::name('service_book')
 
-                 ->whereIn('id',$newIds)
 
-                 ->where('service_item_id',$itemId)
 
-                 ->where('service_id',$serviceId)
 
-                 ->where('org_id',$this->org_id)
 
-                 ->whereTime('create_time', 'between', [$startDay, $endDay])
 
-                 ->select()->toArray();
 
-             $nums2 = 0;
 
-             foreach ($bookList2 as $kk=>$vv){
 
-                 $nums2 +=$vv['nums'];
 
-             }
 
-             $cateList[$k]['count'] = $nums;
 
-             $cateList[$k]['week'] = $nums1;
 
-             $cateList[$k]['day'] = $nums2;
 
-         }
 
-         $this->assign('meta_title','餐厅统计');
 
-         $this->assign('data',$cateList);
 
-         return $this->fetch();
 
-     }
 
-     public function userWork()
 
-     {
 
-         if(request()->isAjax()){
 
-             //分页参数
 
-             $length = input('rows',10,'intval');   //每页条数
 
-             $page = input('page',1,'intval');      //第几页
 
-             $start = ($page - 1) * $length;     //分页开始位置
 
-             //排序
 
-             $sortRow = input('sidx','id','trim');      //排序列
 
-             $sort = input('sord','desc','trim');        //排序方式
 
-             $order = $sortRow.' '.$sort;
 
-             $title = input('title','','trim');
 
-             if($title){
 
-                 $map[] = ['u.nickname','like','%'.$title.'%'];
 
-             }
 
-             $map= empty($map) ? true: $map;
 
-             $ret = Db::name('user')
 
-                 ->alias('u')
 
-                 ->field('u.id,u.nickname')
 
-                 ->join('user_org uo', 'uo.user_id=u.id')
 
-                 ->where('uo.org_id', $this->org_id)
 
-                 ->where('u.enable', 1)
 
-                 ->where('u.del', 0)
 
-                 ->where($map)
 
-                 ->limit($start,$length)
 
-                 ->order($order)
 
-                 ->select()
 
-                 ->toArray();
 
-             foreach ($ret as $k => $v) {
 
-                 //获取本月开始时间结束时间
 
-                 $smonth = date('Y-m') . '-1 00:00:00';
 
-                 $emonth = date('Y-m') . '-31 23:59:59';
 
-                 $where[] = ['update_time','>=',$smonth];
 
-                 $where[] = ['update_time','<=',$emonth];
 
-                 $userWork = Db::name('user_work')
 
-                     ->where('user_id', $v['id'])
 
-                     ->where($where)
 
-                     ->whereNotNull('start_time')
 
-                     ->whereNotNull('end_time')
 
-                     ->select()
 
-                     ->toArray();
 
-                 $num = 0;
 
-                 foreach ($userWork as $kk => $vv) {
 
-                     $stime = strtotime($vv['start_time']);
 
-                     $etime = strtotime($vv['end_time']);
 
-                     $newTime = $etime - $stime;
 
-                     $num += $newTime;
 
-                 }
 
-                 $ret[$k]['month'] = $num;
 
-                 //获取本周开始时间 结束时间
 
-                 $sweek = date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)) . ' 00:00:00';
 
-                 $eweek = date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600)) . ' 23:59:59';
 
-                 $where2[] = ['update_time','>=',$sweek];
 
-                 $where2[] = ['update_time','<=',$eweek];
 
-                 $userWork2 = Db::name('user_work')
 
-                     ->where('user_id', $v['id'])
 
-                     ->where($where2)
 
-                     ->whereNotNull('start_time')
 
-                     ->whereNotNull('end_time')
 
-                     ->select()->toArray();
 
-                 $num2 = 0;
 
-                 foreach ($userWork2 as $kk => $vv) {
 
-                     $stime = strtotime($vv['start_time']);
 
-                     $etime = strtotime($vv['end_time']);
 
-                     $newTime = $etime - $stime;
 
-                     $num2 += $newTime;
 
-                 }
 
-                 $ret[$k]['week'] = $num2;
 
-                 //获取今天开始时间 结束时间
 
-                 $sday = date('Y-m-d') . ' 00:00:00';
 
-                 $eday = date('Y-m-d') . ' 23:59:59';
 
-                 $where3[] = ['update_time','>=',$sday];
 
-                 $where3[] = ['update_time','<=',$eday];
 
-                 $userWork3 = Db::name('user_work')
 
-                     ->where('user_id', $v['id'])
 
-                     ->where($where3)
 
-                     ->whereNotNull('start_time')
 
-                     ->whereNotNull('end_time')
 
-                     ->select()->toArray();
 
-                 $num3 = 0;
 
-                 foreach ($userWork3 as $kk => $vv) {
 
-                     $stime = strtotime($vv['start_time']);
 
-                     $etime = strtotime($vv['end_time']);
 
-                     $newTime = $etime - $stime;
 
-                     $num3 += $newTime;
 
-                 }
 
-                 $ret[$k]['day'] = $num3;
 
-             }
 
-             //数据返回
 
-             $totalCount =  Db::name('user')
 
-                 ->alias('u')
 
-                 ->field('u.id,u.nickname')
 
-                 ->join('user_org uo', 'uo.user_id=u.id')
 
-                 ->where('uo.org_id', $this->org_id)
 
-                 ->where('u.enable', 1)
 
-                 ->where('u.del', 0)
 
-                 ->where($map)
 
-                 ->count();;
 
-             $totalPage = ceil($totalCount/$length);
 
-             $result['page'] = $page;
 
-             $result['total'] = $totalPage;
 
-             $result['records'] = $totalCount;
 
-             $result['rows'] = $ret;
 
-             return json($result);
 
-         }else{
 
-             $this->assign('meta_title','用户工作时长统计');
 
-             return $this->fetch();
 
-         }
 
-     }
 
-     //耗材统计
 
-     public function mateItems(){
 
-         $month = input('month','','trim');
 
-         if($month){
 
-             $smonth = $month.'-01 :00:00:00';
 
-             $emonth = $month.'-31 :23:59:59';
 
-             $where[] =  ['t.done_time','>=',$smonth];
 
-             $where[] =  ['t.done_time','<=',$emonth];
 
-         }else{
 
-             //本月
 
-             $month = date('Y-m');
 
-             $sdate = date('Y-m').'-01 :00:00:00';
 
-             $edate = date('Y-m').'-31 :23:59:59';
 
-             $where[] =  ['t.done_time','>=',$sdate];
 
-             $where[] =  ['t.done_time','<=',$edate];
 
-             //本周
 
-             $sweek = date('Y-m-d', (time() - ((date('w') == 0 ? 7 : date('w')) - 1) * 24 * 3600)) . ' 00:00:00';
 
-             $eweek = date('Y-m-d', (time() + (7 - (date('w') == 0 ? 7 : date('w'))) * 24 * 3600)) . ' 23:59:59';
 
-             $where2[] =  ['t.done_time','>=',$sweek];
 
-             $where2[] =  ['t.done_time','<=',$eweek];
 
-             //当天
 
-             $sday = date('Y-m-d') . ' 00:00:00';
 
-             $eday = date('Y-m-d') . ' 23:59:59';
 
-             $where3[] =  ['t.done_time','>=',$sday];
 
-             $where3[] =  ['t.done_time','<=',$eday];
 
-         }
 
-         $map[] = ['enable','=',1];
 
-         $map[] = ['org_id','=',$this->org_id];
 
-         $map= empty($map) ? true: $map;
 
-         $ret = Db::name('dep')->where($map)->select()->toArray();
 
-         foreach ($ret as $k=>$v){
 
-             //本月
 
-             $todo = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->field('t.id,t.to_user_id,t.mate_price')
 
-                 ->join('user_dep ud','ud.user_id=t.to_user_id')
 
-                 ->where('ud.dep_id',$v['id'])
 
-                 ->where('t.todo_mode',3)
 
-                 ->where('t.del',0)
 
-                 ->where('t.org_id',$this->org_id)
 
-                 ->where($where)
 
-                 ->select()
 
-                 ->toArray();
 
-             $total = 0;
 
-             foreach ($todo as $kk=>$vv){
 
-                 $total +=$vv['mate_price'];
 
-             }
 
-             $ret[$k]['month'] = $total;
 
-             //本周
 
-             $ret[$k]['week'] = 0;
 
-             if(!empty($where2)){
 
-                 $todo = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->field('t.id,t.to_user_id,t.mate_price')
 
-                     ->join('user_dep ud','ud.user_id=t.to_user_id')
 
-                     ->where('ud.dep_id',$v['id'])
 
-                     ->where('t.todo_mode',3)
 
-                     ->where('t.del',0)
 
-                     ->where('t.org_id',$this->org_id)
 
-                     ->where($where2)
 
-                     ->select()
 
-                     ->toArray();
 
-                 $total2 = 0;
 
-                 foreach ($todo as $kk=>$vv){
 
-                     $total2 +=$vv['mate_price'];
 
-                 }
 
-                 $ret[$k]['week'] = $total2;
 
-             }
 
-             $ret[$k]['day'] = 0;
 
-             if(!empty($where3)){
 
-                 //当天
 
-                 $todo = Db::name('todo')
 
-                     ->alias('t')
 
-                     ->field('t.id,t.to_user_id,t.mate_price')
 
-                     ->join('user_dep ud','ud.user_id=t.to_user_id')
 
-                     ->where('ud.dep_id',$v['id'])
 
-                     ->where('t.todo_mode',3)
 
-                     ->where('t.del',0)
 
-                     ->where('t.org_id',$this->org_id)
 
-                     ->where($where3)
 
-                     ->select()
 
-                     ->toArray();
 
-                 $total3 = 0;
 
-                 foreach ($todo as $kk=>$vv){
 
-                     $total3 +=$vv['mate_price'];
 
-                 }
 
-                 $ret[$k]['day'] = $total3;
 
-             }
 
-         }
 
-         $this->assign('data',$ret);
 
-         $this->assign('month',$month);
 
-         $this->assign('meta_title','耗材统计列表');
 
-         return $this->fetch();
 
-     }
 
-     public function mateItemsDetails($id,$month){
 
-         $sdate = $month.'-1 00:00:00';
 
-         $edate = $month.'-31 23:59:59';
 
-         $map[] = ['t.done_time','>=',$sdate];
 
-         $map[] = ['t.done_time','<=',$edate];
 
-         if(request()->isAjax()){
 
-             //分页参数
 
-             $length = input('rows',10,'intval');   //每页条数
 
-             $page = input('page',1,'intval');      //第几页
 
-             $start = ($page - 1) * $length;     //分页开始位置
 
-             //排序
 
-             $sortRow = input('sidx','id','trim');      //排序列
 
-             $sort = input('sord','desc','trim');        //排序方式
 
-             $order = $sortRow.' '.$sort;
 
-             $ret = Db::name('todo')
 
-                 ->alias('t')
 
-                 ->field('t.to_user_id,tmi.*')
 
-                 ->join('user_dep ud','ud.user_id=t.to_user_id')
 
-                 ->join('todo_mate_item tmi','tmi.todo_id=t.id')
 
-                 ->where('ud.dep_id',$id)
 
-                 ->where('t.todo_mode',3)
 
-                 ->where('t.del',0)
 
-                 ->where('t.org_id',$this->org_id)
 
-                 ->where($map)
 
-                 ->limit($start,$length)
 
-                 ->order($order)
 
-                 ->select()
 
-                 ->toArray();
 
-             foreach ($ret as $k=>$v){
 
-                 $ret[$k]['title']=Db::name('mate_items')
 
-                     ->where('id',$v['items_id'])
 
-                     ->value('title');
 
-                 $ret[$k]['nickname']=Db::name('user')
 
-                     ->where('id',$v['to_user_id'])
 
-                     ->value('nickname');
 
-             }
 
-             //数据返回
 
-             $totalCount =  Db::name('todo')
 
-                 ->alias('t')
 
-                 ->field('tmi.*')
 
-                 ->join('user_dep ud','ud.user_id=t.to_user_id')
 
-                 ->join('todo_mate_item tmi','tmi.todo_id=t.id')
 
-                 ->where('ud.dep_id',$id)
 
-                 ->where('t.todo_mode',3)
 
-                 ->where('t.del',0)
 
-                 ->where('t.org_id',$this->org_id)
 
-                 ->where($map)
 
-                 ->count();
 
-             $totalPage = ceil($totalCount/$length);
 
-             $result['page'] = $page;
 
-             $result['total'] = $totalPage;
 
-             $result['records'] = $totalCount;
 
-             $result['rows'] = $ret;
 
-             return json($result);
 
-         }else{
 
-             $this->assign('meta_title','部门使用耗材列表');
 
-             $this->assign('id',$id);
 
-             $this->assign('month',$month);
 
-             return $this->fetch();
 
-         }
 
-     }
 
-     //报修科室使用材料统计
 
-     public function cltj(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->cltjData($start1,$end1);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         return $this->fetch();
 
-     }
 
-     public function cltjData($start,$end){
 
-         $orgId = $this->orgId;
 
-         $ret = Db::name('order_repair')
 
-             ->alias('a')
 
-             ->join('orders b','a.order_id=b.id')
 
-             ->where('b.org_id',$orgId)
 
-             ->where('a.address_id','>',0)
 
-             ->field('a.address_id')
 
-             ->distinct(true)
 
-             ->select();
 
-         $map = [];
 
-         if(!empty($start)){
 
-             $map[] = ['t.done_time','>=',$start];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['t.done_time','<',$end];
 
-         }
 
-         $map[] = ['t.del','=',0];
 
-         $map[] = ['t.org_id','=',$orgId];
 
-         foreach ($ret as $k=>$v){
 
-             $map1 = [];
 
-             $todo = Db::name('todo_mate_item')
 
-                 ->alias('tmi')
 
-                 ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                 ->join('todo t','tm.todo_id = t.id')
 
-                 ->join('orders o','o.id = t.order_id')
 
-                 ->join('order_repair r','o.id = r.order_id')
 
-                 ->where('r.address_id',$v['address_id'])
 
-                 ->where($map)
 
-                 ->sum('tmi.total_money');
 
-             $num =$todo?round($todo,2):0;
 
-             if($num<=0){
 
-                 unset($ret[$k]);
 
-             }else{
 
-                 $ret[$k]['month'] = $num;
 
-                 if(!empty($start)){
 
-                     $map1[] = ['t.done_time','>=',$start];
 
-                 }
 
-                 if(!empty($end)){
 
-                     $map1[] = ['t.done_time','<',$end];
 
-                 }
 
-                 $map1[] = ['t.del','=',0];
 
-                 $map1[] = ['t.org_id','=',$orgId];
 
-                 $map1[] = ['r.address_id','=',$v['address_id']];
 
-                 $lists =Db::name('todo_mate_item')
 
-                     ->alias('tmi')
 
-                     ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                     ->join('todo t','tm.todo_id = t.id')
 
-                     ->join('orders o','o.id = t.order_id')
 
-                     ->join('user u','u.id = t.to_user_id')
 
-                     ->join('order_repair r','o.id = r.order_id')
 
-                     ->join('mate_goods ma','ma.id = tmi.items_id')
 
-                     ->field('tmi.*,u.real_name,ma.title')
 
-                     ->where($map1)
 
-                     ->select();
 
-                 if(empty($lists)){
 
-                     unset($ret[$k]);
 
-                     continue;
 
-                 }
 
-                 $ret[$k]['rows'] = count($lists);
 
-                 $ret[$k]['items'] = $lists;
 
-                 $ret[$k]['title'] =Db::name('address')
 
-                     ->where('id',$v['address_id'])
 
-                     ->value('title');
 
-             }
 
-         }
 
-         return $ret;
 
-     }
 
-     //耗材统计导出
 
-     public function cltjExport()
 
-     {
 
-         set_time_limit(0);
 
-         ini_set("memory_limit", "1024M");
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->cltjData($start1,$end1);
 
-         $title = '报修科室使用材料统计报表';
 
-         header("Content-type: application/vnd.ms-excel");
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Disposition: attachment; filename=".$title.".xls");
 
-         header('Expires:0');
 
-         header('Pragma:public');
 
-         $res = '';
 
-         $res.='<table style="border-top: 1px solid #ddd;border-left: 1px solid #ddd;border-spacing: 0;">';
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">科室名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">材料名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">数量</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">单价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">总价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">小计</th>';
 
-         $res.='</tr>';
 
-         foreach ($data as $k=>$v){
 
-             $res.='<tr style="background: #ffffff;">';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total_money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['month'].'</td>';
 
-             $res.='</tr>';
 
-             if(count($v['items']) >=2){
 
-                 foreach ($v['items'] as $k1=>$v1){
 
-                     if($k1>0){
 
-                         $res.='<tr style="background: #ffffff;">';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['title'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['money'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total_money'].'</td>';
 
-                         $res.='</tr>';
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         echo $res;
 
-     }
 
-     //员工维修工作量
 
-     public function finishTime(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->finishTimeData($start1,$end1);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         return $this->fetch();
 
-     }
 
-     public function finishTimeData($start,$end) {
 
-         $org_id = $this->orgId;
 
-         $list = (new \app\common\model\WorkTypeMode())->getRolesUser(1,$this->orgId);
 
-         $a = [];
 
-         foreach ($list as $k=>$v){
 
-             if($v['user']){
 
-                 foreach ($v['user'] as $k1=>$v1){
 
-                     $a[] = $v1;
 
-                 }
 
-             }
 
-         }
 
-         $accepted = $nFinish=0;
 
-         $list = $a;
 
-         $map = [];
 
-         if(!empty($start)){
 
-             $map[] = ['todo.create_yyyymmdd','>=',date('Ymd',strtotime($start))];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['todo.create_yyyymmdd','<=',date('Ymd',strtotime($end))];
 
-         }
 
-         foreach ($list as $k=>$v){
 
-             $hs = 0;
 
-             $orderList = Db::name('todo')
 
-                 ->alias('todo')
 
-                 ->where('todo.org_id',$org_id)
 
-                 ->where('todo.todo_mode',3)
 
-                 ->where('todo.to_user_id',$v['id'])
 
-                 ->where('todo.work_type_mode',1)
 
-                 ->where($map)
 
-                 ->select();
 
-             foreach ($orderList as $k1=>$v1){
 
-                 $hs += strtotime($v1['done_time'])-strtotime($v1['create_time']);
 
-             }
 
-             $hszj = $hs >0?round($hs/3600,2):0;
 
-             $list[$k]['hszj'] = $hszj;
 
-             $wc_time = Db::name('todo')
 
-                 ->alias('todo')
 
-                 ->where('todo.org_id',$org_id)
 
-                 ->where('todo.todo_mode',3)
 
-                 ->where('todo.to_user_id',$v['id'])
 
-                 ->where('todo.work_type_mode',1)
 
-                 ->where($map)
 
-                 ->sum('todo.wc_time');
 
-             $total = $wc_time?round($wc_time/3600,2):0;
 
-             $list[$k]['total'] = $total;
 
-             $nums = Db::name('todo')
 
-                 ->alias('todo')
 
-                 ->where('todo.org_id',$org_id)
 
-                 ->where('todo.todo_mode',3)
 
-                 ->where('todo.to_user_id',$v['id'])
 
-                 ->where('todo.work_type_mode',1)
 
-                 ->where($map)
 
-                 ->count();
 
-             $list[$k]['num'] =$nums;
 
-             if($nums>0){
 
-                 $avg = round($total/$nums,2);
 
-             }else{
 
-                 $avg = 0;
 
-             }
 
-             $list[$k]['avg'] = $avg;
 
-             $dep = Db::name('user_dep')
 
-                 ->alias('a')
 
-                 ->join('dep o','a.dep_id=o.id')
 
-                 ->where('a.user_id',$v['id'])
 
-                 ->field('o.title')
 
-                 ->find();
 
-             $list[$k]['dep'] = $dep?$dep['title']:'';
 
-             // 已接工
 
-             $list[$k]['accepted'] = Db::name('todo')
 
-                 ->alias('todo')
 
-                 ->where('todo.org_id',$org_id)
 
-                 ->where('todo.todo_mode','>',1)
 
-                 ->where('todo.to_user_id',$v['id'])
 
-                 ->where('todo.work_type_mode',1)
 
-                 ->where($map)
 
-                 ->count();
 
-             $accepted += $list[$k]['accepted'];
 
-             // 未完工
 
-             $list[$k]['nFinish'] = Db::name('todo')
 
-                 ->alias('todo')
 
-                 ->where('todo.org_id',$org_id)
 
-                 ->where('todo.todo_mode','in',[2,4,5,6,7,8])
 
-                 ->where('todo.to_user_id',$v['id'])
 
-                 ->where('todo.work_type_mode',1)
 
-                 ->where($map)
 
-                 ->count();
 
-             $nFinish += $list[$k]['nFinish'];
 
-         }
 
-         return $list;
 
-     }
 
-     //excel导出
 
-     public function finishTimeExport() {
 
-         $meta_title = '维修人员工作时长';
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $ret = $this->finishTimeData($start1,$end1);
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel = new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $objPHPExcel->setActiveSheetIndex(0)
 
-             ->setCellValue('A1', '姓名')
 
-             ->setCellValue('B1', '班组名称')
 
-             ->setCellValue('C1', '接工量')
 
-             ->setCellValue('D1', '完工量')
 
-             ->setCellValue('E1', '未完工量')
 
-             ->setCellValue('F1', '维修耗时')
 
-             ->setCellValue('G1', '工时总计');
 
-         // 设置表格头水平居中
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('G1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('H1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         //设置列水平居中
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         //设置单元格宽度
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(50);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
 
-         //循环刚取出来的数组,将数据逐一添加到excel表格。
 
-         for ($i = 0; $i < count($ret); $i++) {
 
-             $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $ret[$i]['real_name']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $ret[$i]['dep']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $ret[$i]['accepted']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $ret[$i]['num']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $ret[$i]['nFinish']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $ret[$i]['hszj']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $ret[$i]['total']);
 
-         }
 
-         //设置保存的Excel表格名称
 
-         $filename = '维修人员工作时长' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('维修人员工作时长');
 
-         //设置浏览器窗口下载表格
 
-         ob_end_clean();
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Type: application/octet-stream");
 
-         header("Content-Type: application/download");
 
-         header('Content-Disposition:inline;filename="' . $filename);
 
-         //生成excel文件
 
-         $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
 
-         //下载文件在浏览器窗口
 
-         return $objWriter->save('php://output');
 
-     }
 
-     //班组维修工作量
 
-     public function bzwx(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $title = input('title','');
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->bzwxData($start1,$end1,$title);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         $this->assign('title', $title);
 
-         return $this->fetch();
 
-     }
 
-     public function bzwxData($start,$end,$title){
 
-         $org_id = $this->orgId;
 
-         $m = [];
 
-         if(!empty($title)){
 
-             $m[] =['title','like','%'.$title.'%'];
 
-         }
 
-         $list = Db::name('dep')
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->where('org_id',$org_id)
 
-             ->select();
 
-         $map = [];
 
-         if(!empty($start)){
 
-             $map[] = ['create_yyyymmdd','>=',date('Ymd',strtotime($start))];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['create_yyyymmdd','<=',date('Ymd',strtotime($end))];
 
-         }
 
-         $accepted = $nFinish=0;
 
-         foreach ($list as $k=>$v){
 
-             $user = Db::name('user_dep')
 
-                 ->alias('b')
 
-                 ->join('user a','b.user_id=a.id')
 
-                 ->where('a.del',0)
 
-                 ->where('a.enable',1)
 
-                 ->where('b.dep_id',$v['id'])
 
-                 ->field('b.user_id')
 
-                 ->select();
 
-             $ids = $user?array_column($user,'user_id'):[];
 
-             $list[$k]['num'] =0;
 
-             $list[$k]['accepted'] =0;
 
-             $list[$k]['nFinish'] =0;
 
-             if(!empty($ids)){
 
-                 $nums =Db::name('todo')
 
-                     ->where('org_id',$org_id)
 
-                     ->where('to_user_id','in',$ids)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('todo_mode','in',[2,3,9])
 
-                     ->where($map)
 
-                     ->count();
 
-                 $list[$k]['num'] =$nums;
 
-                 // 已接工
 
-                 $list[$k]['accepted'] = Db::name('todo')
 
-                     ->where('org_id',$org_id)
 
-                     ->where('to_user_id','in',$ids)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('todo_mode','>',1)
 
-                     ->where($map)
 
-                     ->count();
 
-                 $accepted += $list[$k]['accepted'];
 
-                 // 未完工
 
-                 $list[$k]['nFinish'] = Db::name('todo')
 
-                     ->where('org_id',$org_id)
 
-                     ->where('to_user_id','in',$ids)
 
-                     ->where('work_type_mode',1)
 
-                     ->where('todo_mode','in',[2,4,5,6,7])
 
-                     ->where($map)
 
-                     ->count();
 
-                 $nFinish += $list[$k]['nFinish'];
 
-                 if($nums==0 && $list[$k]['accepted']==0 && $list[$k]['nFinish']==0){
 
-                     unset($list[$k]);
 
-                 }
 
-             }else{
 
-                 unset($list[$k]);
 
-             }
 
-         }
 
-         return $list;
 
-     }
 
-     //excel导出
 
-     public function bzwxExport() {
 
-         $meta_title = '班组维修工作量统计表';
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $title = input('title','');
 
-         $ret = $this->bzwxData($start1,$end1,$title);
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel = new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $objPHPExcel->setActiveSheetIndex(0)
 
-             ->setCellValue('A1', '班组名称')
 
-             ->setCellValue('B1', '接工量')
 
-             ->setCellValue('C1', '完工量')
 
-             ->setCellValue('D1', '未完工量');
 
-         // 设置表格头水平居中
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('G1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('H1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         //设置列水平居中
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         //设置单元格宽度
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(50);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
 
-         //循环刚取出来的数组,将数据逐一添加到excel表格。
 
-         for ($i = 0; $i < count($ret); $i++) {
 
-             $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $ret[$i]['title']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $ret[$i]['accepted']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $ret[$i]['num']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $ret[$i]['nFinish']);
 
-         }
 
-         //设置保存的Excel表格名称
 
-         $filename = '班组维修工作量统计表' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('班组维修工作量统计表');
 
-         //设置浏览器窗口下载表格
 
-         ob_end_clean();
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Type: application/octet-stream");
 
-         header("Content-Type: application/download");
 
-         header('Content-Disposition:inline;filename="' . $filename);
 
-         //生成excel文件
 
-         $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
 
-         //下载文件在浏览器窗口
 
-         return $objWriter->save('php://output');
 
-     }
 
-     public function bxks(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $title = input('title','');
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->bxksData($start1,$end1,$title);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         $this->assign('title', $title);
 
-         return $this->fetch();
 
-     }
 
-     public function bxksData($start,$end,$title){
 
-         $org_id = $this->orgId;
 
-         $map = [];
 
-         if(!empty($title)){
 
-             $ks = Db::name('address')
 
-                 ->where('org_id',$org_id)
 
-                 ->where('del',0)
 
-                 ->where('enable',1)
 
-                 ->where('title','like','%'.$title.'%')
 
-                 ->select();
 
-             if(empty($ks)){
 
-                 $map[] = ['a.address_id','=',-1];
 
-             }else{
 
-                 $map[] = ['a.address_id','in',array_column($ks,'id')];
 
-             }
 
-         }
 
-         $ret =Db::name('order_repair')
 
-             ->alias('a')
 
-             ->join('orders b','a.order_id=b.id')
 
-             ->where('b.org_id',$org_id)
 
-             ->where('a.address_id','>',0)
 
-             ->where($map)
 
-             ->field('a.address_id')
 
-             ->distinct(true)
 
-             ->select();
 
-         if(!empty($start)){
 
-             $map1[] = ['t.create_yyyymmdd','>=',date('Ymd',strtotime($start))];
 
-         }
 
-         if(!empty($end)){
 
-             $map1[] = ['t.create_yyyymmdd','<=',date('Ymd',strtotime($end))];
 
-         }
 
-         $map1[] = ['t.del','=',0];
 
-         $map1[] = ['t.org_id','=',$org_id];
 
-         foreach ($ret as $k=>$v){
 
-             $num = Db::name('order_repair')
 
-                 ->alias('a')
 
-                 ->join('orders t','a.order_id = t.id')
 
-                 ->where('a.address_id',$v['address_id'])
 
-                 ->where($map1)
 
-                 ->count();
 
-             $ret[$k]['num'] = $num;
 
-             $ret[$k]['title'] = Db::name('address')
 
-                 ->where('id',$v['address_id'])
 
-                 ->value('title');
 
-         }
 
-         return $ret;
 
-     }
 
-     //excel导出
 
-     public function bxksExport() {
 
-         $meta_title = '报修科室统计';
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $title = input('title','');
 
-         $ret = $this->bxksData($start1,$end1,$title);
 
-         include_once env('root_path').'/extend/phpexcel/Classes/PHPExcel.php';
 
-         //实例化PHPExcel类
 
-         $objPHPExcel = new \PHPExcel();
 
-         //激活当前的sheet表
 
-         $objPHPExcel->setActiveSheetIndex(0);
 
-         //设置表格头(即excel表格的第一行)
 
-         $objPHPExcel->setActiveSheetIndex(0)
 
-             ->setCellValue('A1', '科室名称')
 
-             ->setCellValue('B1', '报修订单数量');
 
-         // 设置表格头水平居中
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('G1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('H1')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         //设置列水平居中
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getStyle('H')->getAlignment()
 
-             ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 
-         //设置单元格宽度
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(50);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
 
-         $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
 
-         //循环刚取出来的数组,将数据逐一添加到excel表格。
 
-         for ($i = 0; $i < count($ret); $i++) {
 
-             $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $ret[$i]['title']);
 
-             $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $ret[$i]['num']);
 
-         }
 
-         //设置保存的Excel表格名称
 
-         $filename = '报修科室统计' . date('YmdHis', time()) . '.xls';
 
-         //设置当前激活的sheet表格名称
 
-         $objPHPExcel->getActiveSheet()->setTitle('报修科室统计');
 
-         //设置浏览器窗口下载表格
 
-         ob_end_clean();
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Type: application/octet-stream");
 
-         header("Content-Type: application/download");
 
-         header('Content-Disposition:inline;filename="' . $filename);
 
-         //生成excel文件
 
-         $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
 
-         //下载文件在浏览器窗口
 
-         return $objWriter->save('php://output');
 
-     }
 
-     public function grcltj(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->grcltjData($start1,$end1);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         return $this->fetch();
 
-     }
 
-     public function grcltjData($start,$end){
 
-         $orgId = $this->orgId;
 
-         $ret = Db::name('todo_mate')
 
-             ->alias('a')
 
-             ->join('todo b','a.todo_id=b.id')
 
-             ->field('a.*')
 
-             ->where('a.org_id',$orgId)
 
-             ->where('a.type',0)
 
-             ->where('b.del',0)
 
-             ->group('a.user_id')
 
-             ->select();
 
-         $map = [];
 
-         if(!empty($start)){
 
-             $map[] = ['tmi.create_time','>=',$start];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['tmi.create_time','<',$end];
 
-         }
 
-         $map[] = ['t.del','=',0];
 
-         $map[] = ['tm.org_id','=',$orgId];
 
-         foreach ($ret as $k=>$v){
 
-             $map1 = [];
 
-             $todo = Db::name('todo_mate_item')
 
-                 ->alias('tmi')
 
-                 ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                 ->join('todo t','tm.todo_id = t.id')
 
-                 ->join('orders o','o.id = t.order_id')
 
-                 ->where('tmi.user_id',$v['user_id'])
 
-                 ->where($map)
 
-                 ->sum('tmi.total_money');
 
-             $num =$todo?round($todo,2):0;
 
-             if($num<=0){
 
-                 unset($ret[$k]);
 
-             }else{
 
-                 $ret[$k]['month'] = $num;
 
-                 if(!empty($start)){
 
-                     $map1[] = ['t.create_time','>=',$start];
 
-                 }
 
-                 if(!empty($end)){
 
-                     $map1[] = ['t.create_time','<',$end];
 
-                 }
 
-                 $map1[] = ['t.del','=',0];
 
-                 $map1[] = ['t.org_id','=',$orgId];
 
-                 $map1[] = ['tm.user_id','=',$v['user_id']];
 
-                 $lists =Db::name('todo_mate_item')
 
-                     ->alias('tmi')
 
-                     ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                     ->join('todo t','tm.todo_id = t.id')
 
-                     ->join('orders o','o.id = t.order_id')
 
-                     ->join('user u','u.id = t.to_user_id')
 
-                     ->join('mate_goods ma','ma.id = tmi.items_id')
 
-                     ->field('tmi.*,u.real_name,ma.title')
 
-                     ->where($map1)
 
-                     ->select();
 
-                 if(empty($lists)){
 
-                     unset($ret[$k]);
 
-                     continue;
 
-                 }
 
-                 $ret[$k]['rows'] = count($lists);
 
-                 $ret[$k]['items'] = $lists;
 
-                 $ret[$k]['real_name'] = Db::name('user')
 
-                 ->where('id',$v['user_id'])
 
-                 ->value('real_name');
 
-             }
 
-         }
 
-         return $ret;
 
-     }
 
-     public function grcltjExport()
 
-     {
 
-         set_time_limit(0);
 
-         ini_set("memory_limit", "1024M");
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->grcltjData($start1,$end1);
 
-         $title = '工人耗材用量统计';
 
-         header("Content-type: application/vnd.ms-excel");
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Disposition: attachment; filename=".$title.".xls");
 
-         header('Expires:0');
 
-         header('Pragma:public');
 
-         $res = '';
 
-         $res.='<table style="border-top: 1px solid #ddd;border-left: 1px solid #ddd;border-spacing: 0;">';
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">工人名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">材料名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">数量</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">单价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">总价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">使用时间</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">小计</th>';
 
-         $res.='</tr>';
 
-         foreach ($data as $k=>$v){
 
-             $res.='<tr style="background: #ffffff;">';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['real_name'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total_money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['create_time'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['month'].'</td>';
 
-             $res.='</tr>';
 
-             if(count($v['items']) >=2){
 
-                 foreach ($v['items'] as $k1=>$v1){
 
-                     if($k1>0){
 
-                         $res.='<tr style="background: #ffffff;">';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['title'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['money'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total_money'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['create_time'].'</td>';
 
-                         $res.='</tr>';
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         echo $res;
 
-     }
 
-     public function bxrcltj(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->bxrcltjData($start1,$end1);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         return $this->fetch();
 
-     }
 
-     public function bxrcltjData($start,$end){
 
-         $orgId = $this->orgId;
 
-         $ret = Db::name('orders')
 
-             ->alias('a')
 
-             ->where('org_id',$orgId)
 
-             ->where('del',0)
 
-             ->where('finish_time','>=',$start)
 
-             ->where('finish_time','<',$end)
 
-             ->group('user_id')
 
-             ->select();
 
-         $map = [];
 
-         if(!empty($start)){
 
-             $map[] = ['t.done_time','>=',$start];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['t.done_time','<',$end];
 
-         }
 
-         $map[] = ['t.del','=',0];
 
-         $map[] = ['t.org_id','=',$orgId];
 
-         foreach ($ret as $k=>$v){
 
-             $map1 = [];
 
-             $todo = Db::name('todo_mate_item')
 
-                 ->alias('tmi')
 
-                 ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                 ->join('todo t','tm.todo_id = t.id')
 
-                 ->join('orders o','o.id = t.order_id')
 
-                 ->where('o.user_id',$v['user_id'])
 
-                 ->where($map)
 
-                 ->sum('tmi.total_money');
 
-             $num =$todo?round($todo,2):0;
 
-             if($num<=0){
 
-                 unset($ret[$k]);
 
-             }else{
 
-                 $ret[$k]['month'] = $num;
 
-                 if(!empty($start)){
 
-                     $map1[] = ['t.done_time','>=',$start];
 
-                 }
 
-                 if(!empty($end)){
 
-                     $map1[] = ['t.done_time','<',$end];
 
-                 }
 
-                 $map1[] = ['t.del','=',0];
 
-                 $map1[] = ['t.org_id','=',$orgId];
 
-                 $map1[] = ['o.user_id','=',$v['user_id']];
 
-                 $lists =Db::name('todo_mate_item')
 
-                     ->alias('tmi')
 
-                     ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                     ->join('todo t','tm.todo_id = t.id')
 
-                     ->join('orders o','o.id = t.order_id')
 
-                     ->join('user u','u.id = t.to_user_id')
 
-                     ->join('mate_goods ma','ma.id = tmi.items_id')
 
-                     ->field('tmi.*,u.real_name,ma.title')
 
-                     ->where($map1)
 
-                     ->select();
 
-                 if(empty($lists)){
 
-                     unset($ret[$k]);
 
-                     continue;
 
-                 }
 
-                 $ret[$k]['rows'] = count($lists);
 
-                 $ret[$k]['items'] = $lists;
 
-                 $ret[$k]['title'] =Db::name('user')
 
-                     ->where('id',$v['user_id'])
 
-                     ->value('real_name');
 
-             }
 
-         }
 
-         return $ret;
 
-     }
 
-     //耗材统计导出
 
-     public function bxrcltjExport()
 
-     {
 
-         set_time_limit(0);
 
-         ini_set("memory_limit", "1024M");
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->bxrcltjData($start1,$end1);
 
-         $title = '报修人耗材统计报表';
 
-         header("Content-type: application/vnd.ms-excel");
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Disposition: attachment; filename=".$title.".xls");
 
-         header('Expires:0');
 
-         header('Pragma:public');
 
-         $res = '';
 
-         $res.='<table style="border-top: 1px solid #ddd;border-left: 1px solid #ddd;border-spacing: 0;">';
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">报修人</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">材料名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">数量</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">单价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">使用人</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">使用时间</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">总价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">小计</th>';
 
-         $res.='</tr>';
 
-         foreach ($data as $k=>$v){
 
-             $res.='<tr style="background: #ffffff;">';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['real_name'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['create_time'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total_money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['month'].'</td>';
 
-             $res.='</tr>';
 
-             if(count($v['items']) >=2){
 
-                 foreach ($v['items'] as $k1=>$v1){
 
-                     if($k1>0){
 
-                         $res.='<tr style="background: #ffffff;">';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['title'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['money'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['real_name'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['create_time'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total_money'].'</td>';
 
-                         $res.='</tr>';
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         echo $res;
 
-     }
 
-     public function wlflcltj(){
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->wlflcltjData($start1,$end1);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         return $this->fetch();
 
-     }
 
-     public function wlflcltjData($start,$end){
 
-         $orgId = $this->orgId;
 
-         $ret = Db::name('mate_cate')
 
-             ->where('org_id',$orgId)
 
-             ->where('del',0)
 
-             ->where('enable',1)
 
-             ->select();
 
-         $map = [];
 
-         if(!empty($start)){
 
-             $map[] = ['t.done_time','>=',$start];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['t.done_time','<',$end];
 
-         }
 
-         $map[] = ['t.del','=',0];
 
-         $map[] = ['t.org_id','=',$orgId];
 
-         foreach ($ret as $k=>$v){
 
-             $map1 = [];
 
-             $todo = Db::name('todo_mate_item')
 
-                 ->alias('tmi')
 
-                 ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                 ->join('mate_goods mg','tmi.items_id=mg.id')
 
-                 ->join('mate_cate mc','mg.cate_id = mc.id')
 
-                 ->join('todo t','tm.todo_id = t.id')
 
-                 ->join('orders o','o.id = t.order_id')
 
-                 ->where('mc.id',$v['id'])
 
-                 ->where($map)
 
-                 ->sum('tmi.total_money');
 
-             $num =$todo?round($todo,2):0;
 
-             if($num<=0){
 
-                 unset($ret[$k]);
 
-             }else{
 
-                 $ret[$k]['month'] = $num;
 
-                 if(!empty($start)){
 
-                     $map1[] = ['t.done_time','>=',$start];
 
-                 }
 
-                 if(!empty($end)){
 
-                     $map1[] = ['t.done_time','<',$end];
 
-                 }
 
-                 $map1[] = ['t.del','=',0];
 
-                 $map1[] = ['t.org_id','=',$orgId];
 
-                 $map1[] = ['mc.id','=',$v['id']];
 
-                 $lists =Db::name('todo_mate_item')
 
-                     ->alias('tmi')
 
-                     ->join('todo_mate tm','tm.id = tmi.todo_mate_id')
 
-                     ->join('mate_goods mg','tmi.items_id=mg.id')
 
-                     ->join('mate_cate mc','mg.cate_id = mc.id')
 
-                     ->join('todo t','tm.todo_id = t.id')
 
-                     ->join('orders o','o.id = t.order_id')
 
-                     ->join('user u','u.id = t.to_user_id')
 
-                     ->join('mate_goods ma','ma.id = tmi.items_id')
 
-                     ->field('tmi.*,u.real_name,ma.title')
 
-                     ->where($map1)
 
-                     ->select();
 
-                 if(empty($lists)){
 
-                     unset($ret[$k]);
 
-                     continue;
 
-                 }
 
-                 $ret[$k]['rows'] = count($lists);
 
-                 $ret[$k]['items'] = $lists;
 
-             }
 
-         }
 
-         return $ret;
 
-     }
 
-     //耗材统计导出
 
-     public function wlflcltjExport()
 
-     {
 
-         set_time_limit(0);
 
-         ini_set("memory_limit", "1024M");
 
-         $cur = date('Y-m-d');
 
-         $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
 
-         $end = input('end', date('Y-m-d'));
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->wlflcltjData($start1,$end1);
 
-         $title = '物料分类统计报表';
 
-         header("Content-type: application/vnd.ms-excel");
 
-         header("Content-Type: application/force-download");
 
-         header("Content-Disposition: attachment; filename=".$title.".xls");
 
-         header('Expires:0');
 
-         header('Pragma:public');
 
-         $res = '';
 
-         $res.='<table style="border-top: 1px solid #ddd;border-left: 1px solid #ddd;border-spacing: 0;">';
 
-         $res.='<tr style="background: #ffffff;">';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">分类名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">材料名称</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">数量</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">单价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">使用人</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">使用时间</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">总价</th>';
 
-         $res.='<th style="text-align: center;background: #ffffff;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">小计</th>';
 
-         $res.='</tr>';
 
-         foreach ($data as $k=>$v){
 
-             $res.='<tr style="background: #ffffff;">';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['title'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['real_name'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['create_time'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v['items'][0]['total_money'].'</td>';
 
-             $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd" rowspan="'.$v['rows'].'">'.$v['month'].'</td>';
 
-             $res.='</tr>';
 
-             if(count($v['items']) >=2){
 
-                 foreach ($v['items'] as $k1=>$v1){
 
-                     if($k1>0){
 
-                         $res.='<tr style="background: #ffffff;">';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['title'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['money'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['real_name'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['create_time'].'</td>';
 
-                         $res.='<td style="text-align: center;border-bottom: 1px solid #ddd;border-right: 1px solid #ddd">'.$v1['total_money'].'</td>';
 
-                         $res.='</tr>';
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         echo $res;
 
-     }
 
- }
 
 
  |