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); 
 | 
    } 
 | 
} 
 |