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