| package com.doumee.api.common; | 
|   | 
|   | 
| import com.alibaba.fastjson.JSONObject; | 
| import com.doumee.core.model.ApiResponse; | 
| import com.doumee.core.model.PageData; | 
| import com.doumee.core.model.PageWrap; | 
| import com.doumee.core.utils.Constants; | 
| import com.doumee.dao.business.join.BookingsJoinMapper; | 
| import com.doumee.dao.business.join.RoomsJoinMapper; | 
| import com.doumee.dao.business.model.*; | 
| import com.doumee.dao.system.model.SystemUser; | 
| import com.doumee.service.business.BookingsService; | 
| import com.doumee.service.system.SystemUserService; | 
| import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiOperation; | 
| import org.apache.shiro.authz.annotation.RequiresPermissions; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.web.bind.annotation.PostMapping; | 
| import org.springframework.web.bind.annotation.RequestBody; | 
| import org.springframework.web.bind.annotation.RequestMapping; | 
| import org.springframework.web.bind.annotation.RestController; | 
|   | 
| import java.math.BigDecimal; | 
| import java.math.RoundingMode; | 
| import java.text.ParseException; | 
| import java.text.SimpleDateFormat; | 
| import java.util.Date; | 
| import java.util.List; | 
| import java.util.Objects; | 
|   | 
| @Api(tags = "工作台") | 
| @RestController | 
| @RequestMapping("/business/home") | 
| public class HomeController { | 
|   | 
|   | 
|     @Autowired | 
|     private BookingsService bookingsService; | 
|   | 
|     @Autowired | 
|     private BookingsJoinMapper bookingsJoinMapper; | 
|   | 
|     @Autowired | 
|     private RoomsJoinMapper roomsJoinMapper; | 
|   | 
|     @Autowired | 
|     private SystemUserService systemUserService; | 
|   | 
|   | 
|     @ApiOperation("数据展示") | 
|     @PostMapping("/home") | 
|     public ApiResponse findPage (@RequestBody PageWrap<RoomTime> pageWrap) throws ParseException { | 
|         JSONObject json=new JSONObject(); | 
|   | 
|         //roomTimeService.findPage(pageWrap) | 
|         //今日会议数量 | 
|         MPJLambdaWrapper<Bookings> bookquery = new MPJLambdaWrapper<>(); | 
|         bookquery.eq(Bookings::getIsdeleted, Constants.ZERO); | 
|         bookquery.eq(Bookings::getStatus, Constants.ZERO); | 
|         bookquery.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d') " ); | 
|         Integer   todayBookingsNum= bookingsJoinMapper.selectCount(bookquery); | 
|         json.put("todayBookingsNum",todayBookingsNum); | 
|   | 
|         //今日会议时长(小时) | 
|         MPJLambdaWrapper<Bookings> bq1 = new MPJLambdaWrapper<>(); | 
|         bq1.eq(Bookings::getIsdeleted, Constants.ZERO); | 
|         bq1.eq(Bookings::getStatus, Constants.ZERO); | 
|         bq1.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d') " ); | 
|         bq1.last("limit 1"); | 
|         bq1.select("sum(IFNULL(TIMESTAMPDIFF(MINUTE,t.START_TIME,t.END_TIME),0)) as bookingTime"); | 
|         Bookings   bk= bookingsJoinMapper.selectOne(bq1); | 
|         BigDecimal todayBookingsTime=new BigDecimal(0); | 
|         if(Objects.nonNull(bk)&&bk.getBookingTime()!=null){ | 
|             todayBookingsTime=bk.getBookingTime().divide(new BigDecimal(60),2,BigDecimal.ROUND_HALF_UP); | 
|         } | 
|         json.put("todayBookingsTime",todayBookingsTime); | 
|   | 
|         //今日参会人数 | 
|         MPJLambdaWrapper<Bookings> bq2 = new MPJLambdaWrapper<>(); | 
|         bq2.eq(Bookings::getIsdeleted, Constants.ZERO); | 
|         bq2.eq(Bookings::getStatus, Constants.ZERO); | 
|         bq2.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d') " ); | 
|        // bq2.last("limit 1"); | 
|         bq2.select("(select count(u.id) from meeting_user_rel u where u.ISDELETED=0 and u.OBJ_ID=t.id)as bookingUser"); | 
|         List<Bookings> bk2= bookingsJoinMapper.selectJoinList(Bookings.class,bq2); | 
|   | 
|         Integer bookingUser=0; | 
|         if(bk2!=null){ | 
|            for(int i=0;i<bk2.size();i++) { | 
|                Bookings s=bk2.get(i); | 
|                if(s.getBookingUser()!=null){ | 
|                    bookingUser+=s.getBookingUser(); | 
|                } | 
|            } | 
|   | 
|         } | 
|         json.put("bookingUser",bookingUser); | 
|   | 
|         SimpleDateFormat format1=new SimpleDateFormat("yyyy-MM-dd"); | 
|         //会议室总时长 | 
|         MPJLambdaWrapper<Rooms> rm = new MPJLambdaWrapper<>(); | 
|         rm.eq(Rooms::getIsdeleted, Constants.ZERO); | 
|         rm.eq(Rooms::getStatus, Constants.ZERO); | 
|        // rm.last("limit 1"); | 
|        // rm.select("sum(IFNULL(TIMESTAMPDIFF(MINUTE,t.START_TIME,t.END_TIME),0)) as roomTime"); | 
|        // bq2.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d') " ); | 
|         List<Rooms> roomsList=  roomsJoinMapper.selectJoinList(Rooms.class,rm); | 
|         BigDecimal roomtime=new BigDecimal(0); | 
|         for(int i=0;i<roomsList.size();i++){ | 
|             Rooms rooms=roomsList.get(i); | 
|             String starttime=format1.format(rooms.getEditDate())+" "+rooms.getStartTime()+":00"; | 
|             String endtime=format1.format(rooms.getEditDate())+" "+rooms.getEndTime()+":00"; | 
|   | 
|             SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | 
|             Date parse1 = dateFormat.parse(starttime); | 
|             Date parse2 = dateFormat.parse(endtime); | 
|             long mills=parse2.getTime()-parse1.getTime(); | 
|             BigDecimal fz=new BigDecimal(mills); | 
|             BigDecimal fm=new BigDecimal(60*60*1000); | 
|             BigDecimal bwtHours=fz.divide(fm,3,BigDecimal.ROUND_HALF_UP); | 
|             if(bwtHours!=null){ | 
|                 roomtime= roomtime.add(bwtHours); | 
|             } | 
|         } | 
|   | 
|         BigDecimal lyl=new BigDecimal(0); | 
|         if(todayBookingsTime!=null&&roomtime!=null&&roomtime.compareTo(new BigDecimal(0))>0){ | 
|             lyl=  todayBookingsTime.divide(roomtime,3,BigDecimal.ROUND_HALF_UP); | 
|         } | 
|       //  BigDecimal  todayLyl =lyl.setScale(2, RoundingMode.HALF_UP);//保留两位小数 | 
|         json.put("todayLyl",lyl); | 
|   | 
|         //会议室数量 | 
|         MPJLambdaWrapper<Rooms> rm1 = new MPJLambdaWrapper<>(); | 
|         rm1.eq(Rooms::getIsdeleted, Constants.ZERO); | 
|         rm1.eq(Rooms::getStatus, Constants.ZERO); | 
|         Integer roomNum=  roomsJoinMapper.selectCount(rm1); | 
|         json.put("roomNum",roomNum); | 
|   | 
|         //员工数量 | 
|         SystemUser systemUser=new SystemUser(); | 
|         systemUser.setDeleted(Boolean.FALSE); | 
|         systemUser.setType(Constants.ZERO); | 
|        Long memberNum= systemUserService.count(systemUser); | 
|         json.put("memberNum",memberNum); | 
|   | 
|         return ApiResponse.success(json); | 
|     } | 
| } |