From 10c28ce3d0b384584c77ce9111a66a0641250752 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期四, 27 二月 2025 18:30:32 +0800 Subject: [PATCH] 最新版本541200007 --- server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java | 191 +++++++++++++++++++++++++++++++++++------------ 1 files changed, 143 insertions(+), 48 deletions(-) diff --git a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java index abe4c42..a97b557 100644 --- a/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java +++ b/server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java @@ -1,5 +1,6 @@ package com.doumee.service.business.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -7,6 +8,8 @@ import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; +import com.doumee.dao.business.dao.MemberMapper; +import com.doumee.dao.business.dao.UserActionMapper; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; @@ -39,6 +42,7 @@ import com.doumee.service.business.ProjectsService; import com.doumee.service.system.SystemUserService; import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.springframework.beans.BeanUtils; @@ -66,6 +70,7 @@ * @date 2023/05/04 18:18 */ @Service +@Slf4j public class BookingsServiceImpl implements BookingsService { @Value("${des_pwd}") @@ -85,6 +90,8 @@ @Autowired private RoomsMapper roomsMapper; + @Autowired + private UserActionMapper userActionMapper; @Autowired private ProjectRelJoinMapper projectRelJoinMapper; @Autowired @@ -334,12 +341,39 @@ @Override public void deleteById(Integer id,LoginUserInfo user) { + Bookings model = bookingsMapper.selectById(id); + if(model==null ||Constants.equalsInteger(Constants.ONE,model.getIsdeleted())) { + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + + Date date = new Date(); Bookings bookings = new Bookings(); bookings.setId(id); bookings.setIsdeleted(MeetConstants.ONE); - bookings.setEditDate(new Date()); + bookings.setEditDate(date); bookings.setEditor(user.getId()); bookingsMapper.updateById(bookings); + + String[] params = new String[3]; + params[0] = user.getRealname(); + params[1]=DateUtil.getPlusTime2(date); + params[2]=model.getName()+"-銆愪細璁锛�"+model.getRoomName()+" 銆�-銆愭椂闂达細"+DateUtil.getPlusTime2(model.getStartTime())+"-"+DateUtil.getPlusTime2(model.getEndTime())+"銆�"; + String info = Constants.UserActionType.MEET_BOOK_DEL.getInfo(); + if(params!=null){ + for (int i = 0; i < params.length; i++) { + info = info.replace("${param"+(i+1)+"}",params[i]); + } + } + UserAction userAction=new UserAction(); + userAction.setIsdeleted(Constants.ZERO); + userAction.setCreateDate(date); + userAction.setCreator(user.getId()); + userAction.setBeforeStatus(Constants.ZERO); + userAction.setType( Constants.UserActionType.MEET_BOOK_DEL.getKey()); + userAction.setContent(JSONObject.toJSONString(model)); + userAction.setRemark(info); + userAction.setMemberId(id+""); + userActionMapper.insert(userAction); } @Override @@ -506,7 +540,7 @@ queryWrapper.selectAs(Rooms::getName, Bookings::getRoomName); queryWrapper.selectAs(SystemUser::getRealname, Bookings::getRealName); queryWrapper.selectAs(Company::getName, Bookings::getDepartmentName); - queryWrapper.select(" CASE WHEN t.START_TIME_REAL IS NULL AND t.`STATUS` = 0 THEN 1 WHEN ( ( t.END_TIME < now() AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus "); +// queryWrapper.select(" CASE WHEN t.START_TIME_REAL IS NULL AND t.`STATUS` = 0 THEN 1 WHEN ( ( t.END_TIME < now() AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus "); queryWrapper.leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId); queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator); queryWrapper.leftJoin(Company.class,Company::getId,SystemUser::getCompanyId); @@ -574,29 +608,9 @@ SimpleDateFormat format = new SimpleDateFormat("MM-dd HH:mm"); SimpleDateFormat format1 = new SimpleDateFormat("HH:mm"); IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper); - - String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode(); - Integer minute = StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120; + Integer minute =getNearStartMinut(); result.getRecords().stream().forEach(s -> { - - if(Constants.equalsInteger(s.getStatus(),Constants.ZERO)&&Constants.equalsInteger(s.getMeetingStatus(),Constants.ONE)){ - //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� - if( - DateUtil.afterMinutesDate(s.getStartTime(),-minute).getTime()<=System.currentTimeMillis() - ){ - s.setMeetingStatus(4); - } - } - - - if(s.getMeetingStatus().equals(Constants.ZERO)){ - if(s.getMeetingStatus()==Constants.ONE){ - //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� - if(DateUtil.afterMinutesDate(s.getStartTime(),-120).getTime()>System.currentTimeMillis()){ - s.setMeetingStatus(4); - } - } - } + dealMeetingStatusByModel(s,minute); MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>(); bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO); bookquery.eq(Multifile::getObjId, s.getId()); @@ -615,20 +629,31 @@ //鍙備細浜哄憳鍒楄〃 MPJLambdaWrapper<UserRel> urquery = new MPJLambdaWrapper<>(); urquery.selectAll(UserRel.class); + urquery.eq(UserRel::getObjType, MeetConstants.ONE); urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO); urquery.eq(UserRel::getObjId, s.getId()); urquery.select("(select REALNAME from system_user s where t.USER_ID = s.id and s.DELETED = 0 ) as realName"); List<UserRel> userrelList = userRelJoinMapper.selectJoinList(UserRel.class, urquery); s.setSysList(userrelList); + //浼氳瀹ょ鐞嗗憳 + MPJLambdaWrapper<UserRel> param = new MPJLambdaWrapper<>(); + urquery.selectAll(UserRel.class); + urquery.eq(UserRel::getObjType, MeetConstants.ZERO); + urquery.eq(UserRel::getIsdeleted, MeetConstants.ZERO); + urquery.eq(UserRel::getObjId, s.getRoomId()); + List<UserRel> adminList = userRelJoinMapper.selectJoinList(UserRel.class, urquery); + s.setAdminList(adminList); - //鏈嶅姟椤� + //鏌ヨ鏄惁鏈夋潈闄� + s.setHasRole(getHasRoleByParam(s,userInfo,adminList)); + /* //鏈嶅姟椤� MPJLambdaWrapper<ProjectRel> prquery = new MPJLambdaWrapper<>(); prquery.selectAll(ProjectRel.class); prquery.eq(ProjectRel::getIsdeleted, MeetConstants.ZERO); prquery.eq(ProjectRel::getObjId, s.getId()); prquery.select("(select p.name from meeting_projects p where t.PROJECT_ID = p.id and p.ISDELETED = 0 ) as projectName"); List<ProjectRel> prList = projectRelJoinMapper.selectJoinList(ProjectRel.class, prquery); - s.setProjectList(prList); + s.setProjectList(prList);*/ s.setFlag(MeetConstants.ZERO); if (System.currentTimeMillis() > s.getStartTime().getTime()) { @@ -637,6 +662,44 @@ }); return PageData.from(result); + } + public int getHasRoleByParam(Bookings s,LoginUserInfo userInfo,List<UserRel> adminList){ + if(Constants.equalsInteger(userInfo.getId(),s.getCreator()) ){ + return 1; + } + if(adminList!=null){ + for(UserRel u : adminList){ + if(Constants.equalsInteger(userInfo.getId(),u.getUserId()) ){ + return 1; + } + } + } + return 0; + } + private void dealMeetingStatusByModel(Bookings s,Integer minute) { + //浼氳鐘舵��: 1=鏈紑濮嬶紱2=杩涜涓紱3=宸茬粨鏉� ; 4=鍗冲皢寮�濮�; 5=宸叉挙閿� + //status鐘舵�� 0宸查绾� 1宸叉挙閿� 2宸茬粨鏉� + if(Constants.equalsInteger(s.getStatus(),Constants.ONE)){ + //宸叉挙閿� + s.setMeetingStatus(Constants.FIVE); + }else if(Constants.equalsInteger(s.getStatus(),Constants.TWO)){ + //宸茬粨鏉� + s.setMeetingStatus(Constants.THREE); + }else if(Constants.equalsInteger(s.getStatus(),Constants.ZERO)){ + //0宸查绾� + if(s.getStartTimeReal() ==null){ + //濡傛灉鏈紑濮� + s.setMeetingStatus(Constants.ONE); + //寮�濮嬪墠120鍒嗛挓 澶т簬褰撳墠鏃堕棿 鍒欐樉绀哄嵆灏嗗紑濮� + if(DateUtil.afterMinutesDate(s.getStartTime(),-minute).getTime()<=System.currentTimeMillis() ){ + s.setMeetingStatus(Constants.FOUR);//鍒欐樉绀哄嵆灏嗗紑濮� + } + }else{ + //浼氳涓� + s.setMeetingStatus(Constants.TWO); + } + } + } @Override @@ -1192,9 +1255,9 @@ if (System.currentTimeMillis() < bookings.getStartTimeReal().getTime()) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳鏈紑濮�,鏃犳硶杩涜缁撴潫锛屽闇�璇ユ搷浣滆浣跨敤鍙栨秷鍔熻兘"); } - if (System.currentTimeMillis() > bookings.getEndTime().getTime()) { + /*if (System.currentTimeMillis() > bookings.getEndTime().getTime()) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "浼氳宸茬粨鏉燂紝鏃犳硶杩涜璇ユ搷浣�"); - } + }*/ if(!bookings.getStatus().equals(MeetConstants.ZERO)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鏈鎿嶄綔澶辫触,浼氳鐘舵�佸凡娴佽浆"); } @@ -1257,7 +1320,7 @@ .eq(UserRel::getObjType,Constants.ZERO) .eq(UserRel::getUserId,businessOverDTO.getUserId())); - if (!bookings.getCreator().equals(businessOverDTO.getUserId()) && userRelList <= 0) { + if (!Constants.equalsInteger(bookings.getCreator(),businessOverDTO.getUserId()) && userRelList <= 0) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "闈炰綘鐨勯绾﹁褰�,鏃犳硶杩涜璇ユ搷浣�"); } if(!Constants.equalsInteger(bookings.getStatus(),Constants.ZERO)){ @@ -1308,7 +1371,7 @@ bookings.setEditDate(new Date()); bookings.setEditor(businessOverDTO.getUserId()); bookingsMapper.updateById(bookings); - //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫 + //鏇存柊宸茬粨鏉熶絾鏈粨鏉熺殑浼氳淇℃伅涓哄凡缁撴潫 bookingsMapper.update(null,new UpdateWrapper<Bookings>() .lambda() .set(Bookings::getStatus,Constants.TWO) @@ -1320,7 +1383,6 @@ ); } - @Override public RoomDetailResponse getRoomDetail(Integer roomId){ @@ -1341,9 +1403,9 @@ String prefix = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.MEET_CODE_PREFIX).getCode() ; response.setPrefix(prefix); + String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH) + .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ - String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH) - .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); String localPath = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_LOCAL_RESOURCE_PATH) .getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode(); for (Multifile multifile:multifileList) { @@ -1353,24 +1415,57 @@ response.setMultifileList(multifileList); } - //鏌ヨ浼氳鍒楄〃 - List<MeetingListResponse> meetingList = bookingsMapper.meetingList( - new QueryWrapper<Bookings>() - .eq( "b.id", rooms.getId()) - .eq("b.ISDELETED",MeetConstants.ZERO) - .eq("b.STATUS",MeetConstants.ZERO) - .eq("a.ISDELETED",MeetConstants.ZERO) - .eq("a.status",Constants.ZERO) - .ne("a.status",Constants.TWO) - .like("a.start_time",DateUtil.getCurrDate()) - .apply(" not exists ( select 1 from meeting_book mb where mb.END_TIME < now() and mb.id = a.id and START_TIME_REAL is null ) ") - .orderByAsc("a.start_time") - ); - this.dealMeetingStatus(meetingList); - response.setMeetingListResponseList(meetingList); + MPJLambdaWrapper<Bookings> queryWrapper = new MPJLambdaWrapper<Bookings>() + .selectAll(Bookings.class) + .selectAs(Rooms::getName, Bookings::getRoomName) + .selectAs(Rooms::getImgurl, Bookings::getImgurl) + .selectAs(Rooms::getFileType, Bookings::getFileType) + .selectAs(SystemUser::getRealname, Bookings::getRealName) + .leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId) + .leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator) + .eq(Bookings::getIsdeleted, MeetConstants.ZERO) + .eq(Bookings::getStatus, MeetConstants.ZERO) + .eq(Rooms::getId, rooms.getId()) + .apply("to_days(t.start_time) = to_days(now()) and t.end_time > now()")//瀛愭煡璇㈠綋澶╃殑 + .orderByAsc(Bookings::getStartTime); + Integer minute =getNearStartMinut(); + List<Bookings> meetingList =bookingsMapper.selectJoinList(Bookings.class,queryWrapper); + List<MeetingListResponse> rList= new ArrayList<>(); + if(meetingList!=null){ + log.error(JSONObject.toJSONString(meetingList)); + for(Bookings s : meetingList){ + dealMeetingStatusByModel(s,minute); + MeetingListResponse d = new MeetingListResponse(); + d.setId(s.getId()); + d.setRoomName(s.getRoomName()); + d.setBookingUser(s.getRealName()); + d.setMeetingStatus(s.getMeetingStatus()); + d.setPrefixUrl(path); + d.setImgUrl(s.getImgurl()); + d.setFileType(s.getFileType()); + d.setMeetingDate(DateUtil.getShortTime(s.getStartTime()));// + //CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime + d.setMeetingTime(DateUtil.formatDate(s.getStartTime(),"HH:mm")+"~"+DateUtil.formatDate(s.getEndTime(),"HH:mm")); + d.setMeetingName(s.getName()); + d.setRemark(s.getRemark()); + d.setStartTime(s.getStartTime()); + rList.add(d); + } + } + response.setMeetingListResponseList(rList); return response; } + private Integer getNearStartMinut() { + String configMinute = systemDictDataBiz.queryByCode(MeetConstants.SYSTEM, MeetConstants.EARLY_START).getCode(); + try { + return StringUtils.isNotBlank(configMinute) ? Integer.valueOf(configMinute) : 120; + }catch (Exception e){ + e.printStackTrace(); + } + return 120; + } + public void dealMeetingStatus(List<MeetingListResponse> meetingResponseList){ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(meetingResponseList)){ -- Gitblit v1.9.3