| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: my
 
-  * Date: 2021/4/12
 
-  * Time: 16:04
 
-  */
 
- namespace app\admin\controller;
 
- use app\common\util\ExcelUtil;
 
- 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;
 
-     }
 
-     public function wxOrderTj(){
 
-         $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','');
 
-         $cateId = input('cateId','');
 
-         $goodsId = input('goodsId','');
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->wxOrderTjData($start1,$end1,$title,$cateId);
 
-         $cateList = model('WxGoodsCate')->lists($this->orgId);
 
-         $this->assign('cateList', $cateList);
 
-         $this->assign('data', $data);
 
-         $this->assign('start', $start);
 
-         $this->assign('end', $end);
 
-         $this->assign('title', $title);
 
-         $this->assign('cateId', $cateId?explode(',',$cateId):"");
 
-         $this->assign('goodsId', $goodsId?explode(',',$goodsId):"");
 
-         $glist = Db::name('wx_goods')->where('org_id',$this->orgId)->where('enable',1)->where('del',0)->select();
 
-         $this->assign('glist', $glist);
 
-         return $this->fetch();
 
-     }
 
-     public function wxOrderTjData($start,$end,$title,$cateId){
 
-         $org_id = $this->orgId;
 
-         $map = [];
 
-         $goodsId = input('goodsId','');
 
-         if(!empty($title)){
 
-             $map[] = ['g.title','like','%'.$title.'%'];
 
-         }
 
-         if(!empty($cateId)){
 
-             $map[] = ['g.cate_id','in',explode(',',$cateId)];
 
-         }
 
-         if(!empty($goodsId)){
 
-             $map[] = ['g.id','in',explode(',',$goodsId)];
 
-         }
 
-         if(!empty($start)){
 
-             $map[] = ['a.create_time','>=',$start];
 
-         }
 
-         if(!empty($end)){
 
-             $map[] = ['a.create_time','<=',$end];
 
-         }
 
-         $map[] = ['a.status','in',[1,2,3,5]];
 
-         $map[] = ['a.del','=',0];
 
-         $map[] = ['a.org_id','=',$org_id];
 
-         $ret =Db::name('wx_orders')
 
-             ->alias('a')
 
-             ->join('wx_orders_goods b','a.id=b.order_id')
 
-             ->join('wx_goods g','b.goods_id=g.id')
 
-             ->join('wx_goods_cate ca','g.cate_id=ca.id')
 
-             ->where($map)
 
-             ->field('b.goods_id,a.id,sum(b.nums) as num,b.price,g.title,ca.title as cateName')
 
-             ->group('b.goods_id')
 
-             ->select();
 
-         $total = 0;
 
-         foreach ($ret as $k=>$v){
 
-             $refund = Db::name('wx_orders_refund')
 
-                 ->where('order_id',$v['id'])
 
-                 ->where('goods_id',$v['goods_id'])
 
-                 ->where('del',0)
 
-                 ->where('status','in',[0,1])
 
-                 ->find();
 
-             $num =  $v['num'];
 
-             if($refund){
 
-                 $num =  $v['num']-$refund['num'];
 
-             }
 
-             if($num==0){
 
-                 unset($ret[$k]);
 
-             }else{
 
-                 $t = $num*$v['price'];
 
-                 $total+=$t;
 
-                 $ret[$k]['total'] = $num*$v['price'];
 
-                 $ret[$k]['num'] = $num;
 
-             }
 
-         }
 
-         array_push($ret,[
 
-             'title'=>'合计:',
 
-             'cateName'=>'',
 
-             'num'=>'',
 
-             'price'=>'',
 
-             'total'=>$total,
 
-         ]);
 
-         return $ret;
 
-     }
 
-     public function wxOrderTjExport(){
 
-         $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','');
 
-         $cateId = input('cateId','');
 
-         $start1 = $start . ' 00:00:00';
 
-         $end1 = $end . ' 23:59:59';
 
-         $data = $this->wxOrderTjData($start1,$end1,$title,$cateId);
 
-         $header = [
 
-             ['title' => '商品名称', 'name' => 'title','width'=>'30'],
 
-             ['title' => '分类', 'name' => 'cateName','width'=>'30'],
 
-             ['title' => '数量', 'name' => 'num','width'=>'30'],
 
-             ['title' => '单价', 'name' => 'price','width'=>'80'],
 
-             ['title' => '总金额', 'name' => 'total','width'=>'30'],
 
-         ];
 
-         $filename = '销售统计';
 
-         ExcelUtil::export($filename,$header,$data);
 
-     }
 
-     public function wxOrderView(){
 
-         $startY = beginYear();
 
-         $zjygy = date('Y-m-d 00:00:00',time()-(30*86400));
 
-         $type = input('type/d',0);
 
-         if(request()->isPost()){
 
-             $dataTitle = [];
 
-             $dataValue = [];
 
-             $dataValue1 = [];
 
-             $map[] = ['org_id','=',$this->orgId];
 
-             $map[] = ['del','=',0];
 
-             $map[] = ['status','in',[1,2,3,5]];
 
-             $ddzs = 0;
 
-             $ddbl=0;
 
-             $ddzt=0;//0持平1上升2下降
 
-             $yzfdd=0;
 
-             $yzfbl=0;
 
-             $yzfzt=0;//0持平1上升2下降
 
-             $ddze=0;
 
-             $ddzebl=0;
 
-             $ddzezt=0;//0持平1上升2下降
 
-             $map1[] = ['org_id','=',$this->orgId];
 
-             $map1[] = ['del','=',0];
 
-             $cateList = model('WxGoodsCate')->lists($this->orgId);
 
-             $refund = Db::name('wx_orders_refund')
 
-                 ->where('org_id','=',$this->orgId)
 
-                 ->where('del',0)
 
-                 ->where('status','in',[0,1])
 
-                 ->column('goods_id');
 
-             $rMap = [];
 
-             if($refund){
 
-                 $rMap[] = ['b.goods_id','not in',$refund];
 
-             }
 
-             if($type==0){
 
-                 $title = getMinFromRange(date('Y-m-d 00:00:00'),date('Y-m-d H:i:s'));
 
-                 foreach ($title as $k=>$v){
 
-                     $dataTitle[] = date('H点',strtotime($v));
 
-                     $dataValue[] = Db::name('wx_orders')
 
-                         ->where($map)
 
-                         ->where('create_yyyymmddhh','=',date('YmdH',strtotime($v)))
 
-                         ->count();
 
-                     $dataValue1[] = Db::name('wx_orders')
 
-                         ->where($map)
 
-                         ->where('create_yyyymmddhh','=',date('YmdH',strtotime($v)))
 
-                         ->sum('amount');
 
-                 }
 
-                 $zt = date("Ymd",strtotime("-1 day"));
 
-                 $ddzs =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('create_yyyymmdd','=',date('Ymd'))
 
-                     ->count();
 
-                 $ztzs = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('create_yyyymmdd','=',$zt)
 
-                     ->count();
 
-                 if($ztzs==$ddzs){
 
-                     $ddzt = 0;
 
-                 }elseif ($ztzs>$ddzs){
 
-                     $ddzt = 2;
 
-                     $ddbl = $ztzs>0?round((($ztzs-$ddzs)/$ztzs),2)*100:0;
 
-                 }elseif ($ztzs<$ddzs){
 
-                     $ddzt = 1;
 
-                     $ddbl = $ddzs>0?round((($ddzs-$ztzs))/$ddzs,2)*100:0;
 
-                 }
 
-                 $yzfdd =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymmdd','=',date('Ymd'))
 
-                     ->count();
 
-                 $ztyzfdd = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymmdd','=',$zt)
 
-                     ->count();
 
-                 if($ztyzfdd==$yzfdd){
 
-                     $yzfzt = 0;
 
-                 }elseif ($ztyzfdd>$yzfdd){
 
-                     $yzfzt = 2;
 
-                     $yzfbl = $ztyzfdd>0?round((($ztyzfdd-$yzfdd)/$ztyzfdd),2)*100:0;
 
-                 }elseif ($ztyzfdd<$yzfdd){
 
-                     $yzfzt = 1;
 
-                     $yzfbl = $yzfdd>0?round((($yzfdd-$ztyzfdd))/$yzfdd,2)*100:0;
 
-                 }
 
-                 $ddze =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymmdd','=',date('Ymd'))
 
-                     ->sum('amount');
 
-                 $ztddze = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymmdd','=',$zt)
 
-                     ->sum('amount');
 
-                 if($ztddze==$ddze){
 
-                     $ddzezt = 0;
 
-                 }elseif ($ztddze>$ddze){
 
-                     $ddzezt = 2;
 
-                     $ddzebl = $ztddze>0?round((($ztddze-$ddze)/$ztddze),2)*100:0;
 
-                 }elseif ($ztddze<$ddze){
 
-                     $ddzezt = 1;
 
-                     $ddzebl = $ddze>0?round((($ddze-$ztddze))/$ddze,2)*100:0;
 
-                 }
 
-                 foreach ($cateList as $k=>$v){
 
-                     $a = Db::name('wx_orders')
 
-                         ->alias('a')
 
-                         ->join('wx_orders_goods b','a.id=b.order_id')
 
-                         ->join('wx_goods c','b.goods_id=c.id')
 
-                         ->where('a.del','=',0)
 
-                         ->where('a.org_id','=',$this->orgId)
 
-                         ->where('c.cate_id','=',$v['id'])
 
-                         ->where('a.status','in',[1,2,3,5])
 
-                         ->where($rMap)
 
-                         ->where('a.create_yyyymmdd','=',date('Ymd'))
 
-                         ->sum('b.nums*b.price');
 
-                     $cateList[$k]['total'] = $a?$a:0;
 
-                 }
 
-             }elseif ($type==1){
 
-                 $title = getDateFromRange(date('Y-m-01'),date('Y-m-d'));
 
-                 foreach ($title as $k=>$v){
 
-                     $dataTitle[] = date('Y-m-d',strtotime($v));
 
-                     $dataValue[] = Db::name('wx_orders')
 
-                         ->where($map)
 
-                         ->where('create_yyyymmdd','=', date('Ymd',strtotime($v)))
 
-                         ->count();
 
-                     $dataValue1[] = Db::name('wx_orders')
 
-                         ->where($map)
 
-                         ->where('create_yyyymmdd','=', date('Ymd',strtotime($v)))
 
-                         ->sum('amount');
 
-                 }
 
-                 $zt = date("Ym",strtotime("-1 month"));
 
-                 $ddzs =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('create_yyyymm','=',date('Ym'))
 
-                     ->count();
 
-                 $ztzs = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('create_yyyymm','=',$zt)
 
-                     ->count();
 
-                 if($ztzs==$ddzs){
 
-                     $ddzt = 0;
 
-                 }elseif ($ztzs>$ddzs){
 
-                     $ddzt = 2;
 
-                     $ddbl = $ztzs>0?round((($ztzs-$ddzs)/$ztzs),2)*100:0;
 
-                 }elseif ($ztzs<$ddzs){
 
-                     $ddzt = 1;
 
-                     $ddbl = $ddzs>0?round((($ddzs-$ztzs))/$ddzs,2)*100:0;
 
-                 }
 
-                 $yzfdd =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymm','=',date('Ym'))
 
-                     ->count();
 
-                 $ztyzfdd = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymm','=',$zt)
 
-                     ->count();
 
-                 if($ztyzfdd==$yzfdd){
 
-                     $yzfzt = 0;
 
-                 }elseif ($ztyzfdd>$yzfdd){
 
-                     $yzfzt = 2;
 
-                     $yzfbl = $ztyzfdd>0?round((($ztyzfdd-$yzfdd)/$ztyzfdd),2)*100:0;
 
-                 }elseif ($ztyzfdd<$yzfdd){
 
-                     $yzfzt = 1;
 
-                     $yzfbl = $yzfdd>0?round((($yzfdd-$ztyzfdd))/$yzfdd,2)*100:0;
 
-                 }
 
-                 $ddze =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymm','=',date('Ym'))
 
-                     ->sum('amount');
 
-                 $ztddze = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyymm','=',$zt)
 
-                     ->sum('amount');
 
-                 if($ztddze==$ddze){
 
-                     $ddzezt = 0;
 
-                 }elseif ($ztddze>$ddze){
 
-                     $ddzezt = 2;
 
-                     $ddzebl = $ztddze>0?round((($ztddze-$ddze)/$ztddze),2)*100:0;
 
-                 }elseif ($ztddze<$ddze){
 
-                     $ddzezt = 1;
 
-                     $ddzebl = $ddze>0?round((($ddze-$ztddze))/$ddze,2)*100:0;
 
-                 }
 
-                 foreach ($cateList as $k=>$v){
 
-                     $a = Db::name('wx_orders')
 
-                         ->alias('a')
 
-                         ->join('wx_orders_goods b','a.id=b.order_id')
 
-                         ->join('wx_goods c','b.goods_id=c.id')
 
-                         ->where('a.del','=',0)
 
-                         ->where('a.org_id','=',$this->orgId)
 
-                         ->where('c.cate_id','=',$v['id'])
 
-                         ->where($rMap)
 
-                         ->where('a.status','in',[1,2,3,5])
 
-                         ->where('a.create_yyyymm','=',date('Ym'))
 
-                         ->sum('b.nums*b.price');
 
-                     $cateList[$k]['total'] = $a?$a:0;
 
-                 }
 
-             }elseif ($type==2){
 
-                 $title = getMonthFromRange($startY,date('Y-m-d H:i:s'));
 
-                 foreach ($title as $k=>$v){
 
-                     $dataTitle[] = date('Y-m',strtotime($v));
 
-                     $dataValue[] = Db::name('wx_orders')
 
-                         ->where($map)
 
-                         ->where('create_yyyymm','=', date('Ym',strtotime($v)))
 
-                         ->count();
 
-                     $dataValue1[] = Db::name('wx_orders')
 
-                         ->where($map)
 
-                         ->where('create_yyyymm','=', date('Ym',strtotime($v)))
 
-                         ->sum('amount');
 
-                 }
 
-                 $zt = date ( "Y" , strtotime ( "-1 year" ));
 
-                 $ddzs =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('create_yyyy','=',date('Y'))
 
-                     ->count();
 
-                 $ztzs = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('create_yyyy','=',$zt)
 
-                     ->count();
 
-                 if($ztzs==$ddzs){
 
-                     $ddzt = 0;
 
-                 }elseif ($ztzs>$ddzs){
 
-                     $ddzt = 2;
 
-                     $ddbl = $ztzs>0?round((($ztzs-$ddzs)/$ztzs),2)*100:0;
 
-                 }elseif ($ztzs<$ddzs){
 
-                     $ddzt = 1;
 
-                     $ddbl = $ddzs>0?round((($ddzs-$ztzs))/$ddzs,2)*100:0;
 
-                 }
 
-                 $yzfdd =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyy','=',date('Y'))
 
-                     ->count();
 
-                 $ztyzfdd = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyy','=',$zt)
 
-                     ->count();
 
-                 if($ztyzfdd==$yzfdd){
 
-                     $yzfzt = 0;
 
-                 }elseif ($ztyzfdd>$yzfdd){
 
-                     $yzfzt = 2;
 
-                     $yzfbl = $ztyzfdd>0?round((($ztyzfdd-$yzfdd)/$ztyzfdd),2)*100:0;
 
-                 }elseif ($ztyzfdd<$yzfdd){
 
-                     $yzfzt = 1;
 
-                     $yzfbl = $yzfdd>0?round((($yzfdd-$ztyzfdd))/$yzfdd,2)*100:0;
 
-                 }
 
-                 $ddze =Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyy','=',date('Y'))
 
-                     ->sum('amount');
 
-                 $ztddze = Db::name('wx_orders')
 
-                     ->where($map1)
 
-                     ->where('status','in',[1,2,3,5])
 
-                     ->where('create_yyyy','=',$zt)
 
-                     ->sum('amount');
 
-                 if($ztddze==$ddze){
 
-                     $ddzezt = 0;
 
-                 }elseif ($ztddze>$ddze){
 
-                     $ddzezt = 2;
 
-                     $ddzebl = $ztddze>0?round((($ztddze-$ddze)/$ztddze),2)*100:0;
 
-                 }elseif ($ztddze<$ddze){
 
-                     $ddzezt = 1;
 
-                     $ddzebl = $ddze>0?round((($ddze-$ztddze))/$ddze,2)*100:0;
 
-                 }
 
-                 foreach ($cateList as $k=>$v){
 
-                     $a = Db::name('wx_orders')
 
-                         ->alias('a')
 
-                         ->join('wx_orders_goods b','a.id=b.order_id')
 
-                         ->join('wx_goods c','b.goods_id=c.id')
 
-                         ->where('a.del','=',0)
 
-                         ->where('a.org_id','=',$this->orgId)
 
-                         ->where('c.cate_id','=',$v['id'])
 
-                         ->where($rMap)
 
-                         ->where('a.status','in',[1,2,3,5])
 
-                         ->where('a.create_yyyy','=',date('Y'))
 
-                         ->sum('b.nums*b.price');
 
-                     $cateList[$k]['total'] = $a?$a:0;
 
-                 }
 
-             }
 
-             if($cateList){
 
-                 $vol = array_column($cateList,'total');
 
-                 array_multisort($vol,SORT_DESC,$cateList);
 
-             }
 
-             $p = [
 
-                 'title'=>$dataTitle,
 
-                 'value'=>$dataValue,
 
-                 'value1'=>$dataValue1,
 
-                 'ddzs' => $ddzs,
 
-                 'ddbl' => $ddbl,
 
-                 'ddzt' => $ddzt,
 
-                 'yzfdd' => $yzfdd,
 
-                 'yzfbl' => $yzfbl,
 
-                 'yzfzt' => $yzfzt,
 
-                 'ddze' => $ddze,
 
-                 'ddzebl' => $ddzebl,
 
-                 'ddzezt' => $ddzezt,
 
-                 'cateList' => $cateList,
 
-             ];
 
-             $this->success('操作成功','',$p);
 
-         }else{
 
-             $map[] = ['org_id','=',$this->orgId];
 
-             $map[] = ['del','=',0];
 
-             $data['orderAmount'] = Db::name('wx_orders')
 
-                 ->where($map)
 
-                 ->where('status','in',[1,2,3,5])
 
-                 ->where('create_yyyymm','=',date('Ym'))
 
-                 ->sum('amount');
 
-             $data['orderCount'] = Db::name('wx_orders')
 
-                 ->where($map)
 
-                 ->where('status','in',[1,2,3,5])
 
-                 ->where('create_yyyy','=',date('Y'))
 
-                 ->count();
 
-             $data['orderUser'] = Db::name('wx_orders')
 
-                 ->where($map)
 
-                 ->where('status','in',[1,2,3,5])
 
-                 ->where('create_yyyymmdd','=',date('Ymd'))
 
-                 ->group('user_id')
 
-                 ->count();
 
-             $beginMonth = beginMonth();
 
-             $data['refundCount'] =  Db::name('wx_orders_refund')
 
-                 ->where('org_id',$this->orgId)
 
-                 ->where('status',1)
 
-                 ->where('del',0)
 
-                 ->where('create_time','>=',$beginMonth)
 
-                 ->where('create_time','<=',getTime())
 
-                 ->sum('money');
 
-             $this->assign('data',$data);
 
-             return $this->fetch();
 
-         }
 
-     }
 
- }
 
 
  |