Browse Source

Merge branch 'usky-zyj' of uskycloud/usky-modules into server-165

James 1 year ago
parent
commit
1d8c9f12aa

+ 26 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/controller/web/MeetingInfoController.java

@@ -7,13 +7,18 @@ import com.usky.common.security.annotation.InnerAuth;
 import com.usky.meeting.domain.MeetingInfo;
 import com.usky.meeting.service.MeetingInfoService;
 import com.usky.meeting.service.dto.DmMeetingDto;
+import com.usky.meeting.service.dto.DmMeetingDtoV2;
 import com.usky.meeting.service.vo.MeetingInfoRequestVO;
+import com.usky.meeting.service.vo.MyMeetingInfoRequestVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import org.springframework.stereotype.Controller;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  * 会议表(预约成功) 前端控制器
@@ -58,5 +63,26 @@ public class MeetingInfoController {
         meetingInfoService.cancel(meetingId);
         return ApiResult.success();
     }
+
+    /**
+     * 我的会议列表
+     * @param requestVO
+     * @return
+     */
+    @PostMapping("myMeetingList")
+    public ApiResult<CommonPage<MeetingInfo>> myMeetingList(@RequestBody MyMeetingInfoRequestVO requestVO){
+        return ApiResult.success(meetingInfoService.myMeetingList(requestVO));
+    }
+
+    /**
+     * 查询会议签到信息
+     * @param meetingId
+     * @return
+     */
+    @GetMapping("meetingSignList")
+    public ApiResult<List<Map<String,Object>>> meetingSignList(@RequestParam(value = "meetingId") Long meetingId){
+        return ApiResult.success(meetingInfoService.meetingSignList(meetingId));
+    }
+
 }
 

+ 18 - 18
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/repository/MeetingInfoRepository.java

@@ -339,15 +339,15 @@ public interface MeetingInfoRepository extends JpaRepository<MeetingInfo, Long>,
 //                    " and r.room_status = 1"+
 //                    " and DATE_FORMAT(m.end_date,'%Y-%m-%d %H:%i') <= DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i')",nativeQuery = true)
 //    void autoCloseMeetingAndRoom(@Param("updateDate") String updateDate);
-//
-//    @Query(value = "select u.`id` as userId,u.`name` as userName,u.sex AS sex,u.contacts AS phone,u.dept_id as dept,a.is_sign as isSign," +
-//            " CASE a.is_sign WHEN 0 THEN '否' WHEN 1 THEN '是' END as type,CASE a.sign_type WHEN 0 THEN '人工签到' WHEN 1 THEN '人脸签到' END as signType," +
-//            " a.sign_date as `date`,a.meeting_id as meetingId,m.approve_status as approveStatus,m.meeting_status as meetingStatus" +
-//            " from dm_meeting_attendee as a " +
-//            " left join dm_user as u on a.user_id = u.`id` " +
-//            " left join dm_meeting as m on m.meeting_id = a.meeting_id "+
-//            " where a.meeting_id = :meetingId",nativeQuery = true,countQuery = "select COUNT(DISTINCT a.id ) as subcount from dm_meeting_attendee as a left join dm_user as u on a.user_id = u.`id` left join dm_meeting as m on m.meeting_id = a.meeting_id where a.meeting_id = :meetingId")
-//    List<Map<String,Object>> meetingSignList(@Param("meetingId") Long meetingId,Pageable pageable);
+
+    @Query(value = "select u.`user_id` as userId,u.`nick_name` as userName,u.sex AS sex,u.phonenumber AS phone,u.dept_id as dept," +
+            " (CASE a.is_sign WHEN 0 THEN '否' WHEN 1 THEN '是' END) as isSign,(CASE a.sign_type WHEN 0 THEN '人工签到' WHEN 1 THEN '人脸签到' END) as signType," +
+            " a.sign_date as `date`,a.meeting_id as meetingId,m.approve_status as approveStatus,m.meeting_status as meetingStatus" +
+            " from meeting_attendee as a " +
+            " left join sys_user as u on a.user_id = u.user_id " +
+            " left join meeting_info as m on m.meeting_id = a.meeting_id "+
+            " where a.meeting_id = :meetingId and a.tenant_id = :tenantId",nativeQuery = true,countQuery = "select COUNT(DISTINCT a.id ) as subcount from meeting_attendee as a left join sys_user as u on a.user_id = u.user_id left join meeting_info as m on m.meeting_id = a.meeting_id where a.meeting_id = :meetingId")
+    List<Map<String,Object>> meetingSignList(@Param("meetingId") Long meetingId,@Param("tenantId") Integer tenantId);
 //
 //    /**
 //     * 查询已完成的会议(根据会议室id)
@@ -450,14 +450,14 @@ public interface MeetingInfoRepository extends JpaRepository<MeetingInfo, Long>,
     /**
      * 根据会议开始时间的年和月,查询出所有数据
      */
-    @Query(value = "select * from meeting_info where (month(start_date) <= :month and month(end_date)>=:month) and (YEAR(start_date) <= :year and YEAR(end_date)>=:year) and (day(start_date) <= :day and day(end_date)>=:day) and room_id = :roomId and is_cancel = 0 and approve_status!=2",nativeQuery = true)
-    List<MeetingInfo> getDmMeetingByStartDatDay(@Param("roomId") Long roomId, @Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day);
+    @Query(value = "select * from meeting_info where (month(start_date) <= :month and month(end_date)>=:month) and (YEAR(start_date) <= :year and YEAR(end_date)>=:year) and (day(start_date) <= :day and day(end_date)>=:day) and room_id = :roomId and is_cancel = 0 and approve_status!=2 and tenant_id = :tenantId",nativeQuery = true)
+    List<MeetingInfo> getDmMeetingByStartDatDay(@Param("roomId") Long roomId, @Param("year") Integer year, @Param("month") Integer month, @Param("day") Integer day, @Param("tenantId") Integer tenantId);
 
     /**
      * 根据会议开始时间的年和月,查询出所有数据
      */
-    @Query(value = "select * from meeting_info where month(start_date) = :month and YEAR(start_date) = :year and room_id = :roomId and is_cancel = 0 and approve_status!=2 ",nativeQuery = true)
-    List<Map<String,Object>> getDmMeetingByStartDateYearAndMonth(@Param("roomId") Long roomId,@Param("year") Integer year, @Param("month") Integer month);
+    @Query(value = "select * from meeting_info where month(start_date) = :month and YEAR(start_date) = :year and room_id = :roomId and is_cancel = 0 and approve_status!=2 and tenant_id = :tenantId",nativeQuery = true)
+    List<Map<String,Object>> getDmMeetingByStartDateYearAndMonth(@Param("roomId") Long roomId,@Param("year") Integer year, @Param("month") Integer month, @Param("tenantId") Integer tenantId);
 //
 //    /**
 //     * 提供根据会议室和会议时间查询会议发起人信息
@@ -493,9 +493,9 @@ public interface MeetingInfoRepository extends JpaRepository<MeetingInfo, Long>,
     @Query(value = "select sum(MONTH(start_date)=1) as one,sum(MONTH(start_date)=2) as two,sum(MONTH(start_date)=3) as three,sum(MONTH(start_date)=4) as four,sum(MONTH(start_date)=5) as five,sum(MONTH(start_date)=6) as six,sum(MONTH(start_date)=7) as seven,sum(MONTH(start_date)=8) as eight,sum(MONTH(start_date)=9) as nine,sum(MONTH(start_date)=10) as ten,sum(MONTH(start_date)=11) as eleven,sum(MONTH(start_date)=12) as twelve from meeting_info where tenant_id=:tenantId and YEAR(start_date)=:year and approve_status=1 and is_cancel != 1" ,nativeQuery = true)
     Map<String,Object> meetingSummaryByYear(@Param("year") String year,@Param("tenantId") Integer tenantId);
 
-//    @Query(value = "select meeting_id as meetingId from dm_meeting_attendee where user_id = :userId" , nativeQuery = true)
-//    List<BigInteger> queryMeetingIdsByUserId(@Param("userId") String userId);
-//
-//    @Query(value = "select meeting_id as meetingId from dm_meeting where initiator_id  = :initiatorId" , nativeQuery = true)
-//    List<BigInteger> queryMeetingIdsByInitiatorId(@Param("initiatorId") String initiatorId);
+    @Query(value = "select meeting_id as meetingId from meeting_attendee where user_id = :userId" , nativeQuery = true)
+    List<BigInteger> queryMeetingIdsByUserId(@Param("userId") Long userId);
+
+    @Query(value = "select meeting_id as meetingId from meeting_info where initiator_id  = :initiatorId" , nativeQuery = true)
+    List<BigInteger> queryMeetingIdsByInitiatorId(@Param("initiatorId") Long initiatorId);
 }

+ 6 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/MeetingInfoService.java

@@ -5,7 +5,9 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.meeting.domain.MeetingInfo;
 import com.usky.common.mybatis.core.CrudService;
 import com.usky.meeting.service.dto.DmMeetingDto;
+import com.usky.meeting.service.dto.DmMeetingDtoV2;
 import com.usky.meeting.service.vo.MeetingInfoRequestVO;
+import com.usky.meeting.service.vo.MyMeetingInfoRequestVO;
 import org.springframework.data.repository.query.Param;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -53,4 +55,8 @@ public interface MeetingInfoService extends CrudService<MeetingInfo> {
     CommonPage<MeetingInfo> meetingInfoList(MeetingInfoRequestVO requestVO);
 
     void cancel(Long meetingId);
+
+    CommonPage<MeetingInfo> myMeetingList(MyMeetingInfoRequestVO requestVO);
+
+    List<Map<String,Object>> meetingSignList(Long meetingId);
 }

+ 58 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DmMeetingDtoV2.java

@@ -0,0 +1,58 @@
+package com.usky.meeting.service.dto;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.serializer.ToStringSerializer;
+import lombok.Data;
+
+@Data
+public class DmMeetingDtoV2 {
+
+    @JSONField(serializeUsing = ToStringSerializer.class)
+    private Long meetingId;
+
+    private String meetingName;
+
+    private String meetingMode;
+
+    private String roomName;
+
+    private String meetingDescribe;
+
+    private String meetingType;
+
+    private String deptId;
+
+    private String deptName;
+
+    private String initiatorId;
+
+    private String initiatorName;
+
+    private String startDate;
+
+    private String endDate;
+
+    private Integer actualCount = 0;
+
+    private Integer planCount = 0;
+
+    private Boolean isDelay;
+
+    private String remark;
+
+    private Long meetingStatus;
+
+    private Long approveStatus = 0L;
+
+    private String meetingProp;
+
+    private String sendType;
+
+    private Boolean isApprove;
+
+    private String attendeeUserIds;
+
+    private String attendeeUserNames;
+
+
+}

+ 3 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/dto/DmMeetingRoomDto.java

@@ -18,6 +18,8 @@ package com.usky.meeting.service.dto;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.alibaba.fastjson.serializer.ToStringSerializer;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.squareup.moshi.Json;
 import com.usky.meeting.domain.MeetingFloor;
 import lombok.Data;
 
@@ -38,6 +40,7 @@ public class DmMeetingRoomDto implements Serializable {
     /** 主键 */
     /** 防止精度丢失 */
     @JSONField(serializeUsing = ToStringSerializer.class)
+    @JsonFormat(shape = JsonFormat.Shape.STRING)
     private Long roomId;
 
     /** 会议室名称 */

+ 72 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingInfoServiceImpl.java

@@ -34,8 +34,11 @@ import com.usky.meeting.service.MeetingInfoService;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.meeting.service.SysUserService;
 import com.usky.meeting.service.dto.DmMeetingDto;
+import com.usky.meeting.service.dto.DmMeetingDtoV2;
 import com.usky.meeting.service.dto.DmUserDto;
 import com.usky.meeting.service.vo.MeetingInfoRequestVO;
+import com.usky.meeting.service.vo.MyMeetingInfoRequestVO;
+import io.swagger.models.auth.In;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.bytebuddy.dynamic.scaffold.MethodRegistry;
@@ -44,6 +47,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
+import java.math.BigInteger;
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
@@ -112,7 +116,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         System.out.println("month:"+month);
         //获取日期中得日
         Integer day= Integer.valueOf(String.format("%td", date));
-        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId,year,month,day);
+        List<MeetingInfo> dmMeetings = dmMeetingRepository.getDmMeetingByStartDatDay(roomId,year,month,day,SecurityUtils.getTenantId());
         LambdaQueryWrapper<SysUser> sysUserQuery = Wrappers.lambdaQuery();
         sysUserQuery.eq(SysUser::getTenantId,SecurityUtils.getTenantId());
         List<SysUser> userList = sysUserService.list(sysUserQuery);
@@ -206,7 +210,7 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         Integer month = (cal.get(Calendar.MONTH) + 1);
         System.out.println("month:" + month);
 
-        List<Map<String, Object>> dmMeetings = dmMeetingRepository.getDmMeetingByStartDateYearAndMonth(roomId, year, month);
+        List<Map<String, Object>> dmMeetings = dmMeetingRepository.getDmMeetingByStartDateYearAndMonth(roomId, year, month, SecurityUtils.getTenantId());
         if (!ObjectUtils.isEmpty(dmMeetings)) {
             List<Integer> list = new ArrayList<>();
             Set<Integer> set = new HashSet<>();
@@ -386,6 +390,72 @@ public class MeetingInfoServiceImpl extends AbstractCrudService<MeetingInfoMappe
         this.updateById(one);
     }
 
+    @Override
+    public CommonPage<MeetingInfo> myMeetingList(MyMeetingInfoRequestVO requestVO){
+        Integer current = requestVO.getCurrent();
+        Integer size = requestVO.getSize();
+        Page<MeetingInfo> page = new Page<>(current,size);
+
+        Long userId = SecurityUtils.getUserId();
+        List<BigInteger> meetingIdList = new ArrayList<>();
+        List<BigInteger> meetingIds1 = dmMeetingRepository.queryMeetingIdsByUserId(userId);
+        List<BigInteger> bigIntegers = dmMeetingRepository.queryMeetingIdsByInitiatorId(userId);
+        meetingIdList.addAll(meetingIds1);
+        meetingIdList.addAll(bigIntegers);
+        List<Long> meetingIds = new ArrayList<>();
+        for (BigInteger bigInteger : meetingIdList) {
+            meetingIds.add(bigInteger.longValue());
+        }
+        LambdaQueryWrapper<MeetingInfo> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.in(CollectionUtils.isNotEmpty(meetingIds),MeetingInfo::getMeetingId,meetingIds)
+                .eq(MeetingInfo::getIsCancel,0)
+                .like(StringUtils.isNotBlank(requestVO.getMeetingName()),MeetingInfo::getMeetingName,requestVO.getMeetingName())
+                .like(StringUtils.isNotBlank(requestVO.getMeetingDescribe()),MeetingInfo::getMeetingDescribe,requestVO.getMeetingDescribe())
+                .eq(null != requestVO.getMeetingMode(),MeetingInfo::getMeetingMode,requestVO.getMeetingMode())
+                .eq(null != requestVO.getMeetingStatus(),MeetingInfo::getMeetingStatus,requestVO.getMeetingStatus())
+                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()),MeetingInfo::getStartDate,requestVO.getStartDate(),requestVO.getEndDate())
+                .between(StringUtils.isNotBlank(requestVO.getStartDate()) && StringUtils.isNotBlank(requestVO.getEndDate()),MeetingInfo::getEndDate,requestVO.getStartDate(),requestVO.getEndDate())
+                .eq(MeetingInfo::getTenantId,SecurityUtils.getTenantId())
+                .orderByDesc(MeetingInfo::getMeetingId);
+        page = this.page(page,queryWrapper);
+        if(page.getRecords().size() > 0){
+            List<Long> initIdList = new ArrayList<>();
+            for (int i = 0; i < page.getRecords().size(); i++) {
+                if(!initIdList.contains(page.getRecords().get(i).getInitiatorId())){
+                    initIdList.add(Long.valueOf(page.getRecords().get(i).getInitiatorId()));
+                }
+            }
+            //发起人信息
+            if(initIdList.size() > 0){
+                LambdaQueryWrapper<SysUser> initIdQuery = Wrappers.lambdaQuery();
+                initIdQuery.in(SysUser::getUserId,initIdList)
+                        .eq(SysUser::getTenantId,SecurityUtils.getTenantId());
+                List<SysUser> userList = sysUserService.list(initIdQuery);
+                if(userList.size() > 0){
+                    for (int i = 0; i < page.getRecords().size(); i++) {
+                        for (int j = 0; j < userList.size(); j++) {
+                            if(page.getRecords().get(i).getInitiatorId().equals(userList.get(j).getUserId().toString())){
+                                page.getRecords().get(i).setInitiatorUser(userList.get(j));
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+
+
+        }
+
+        return new CommonPage<>(page.getRecords(),page.getTotal(),size,current);
+    }
+
+    @Override
+    public List<Map<String,Object>> meetingSignList(Long meetingId){
+        Integer tenantId = SecurityUtils.getTenantId();
+        List<Map<String, Object>> signList = dmMeetingRepository.meetingSignList(meetingId,tenantId);
+        return signList;
+    }
+
     public void send(DmMeetingDto resources) throws ClientException {
         if (StringUtils.isNotBlank(resources.getSendType())) {
             if (resources.getSendType().equals("短信")) {

+ 4 - 2
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/impl/MeetingRoomServiceImpl.java

@@ -82,7 +82,8 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
         String floorId = null ;
         if(StringUtils.isNotBlank(requestVO.getFloorName())){
             QueryWrapper<MeetingFloor> query = Wrappers.query();
-            query.select("floor_id").eq("floor_name",requestVO.getFloorName());
+            query.select("floor_id").eq("floor_name",requestVO.getFloorName())
+                    .eq("tenant_id",SecurityUtils.getTenantId());
             List<Map<String,Object>> map = dmFloorService.listMaps(query);
             if(CollectionUtils.isNotEmpty(map)){
                 floorId = map.get(0).get("floor_id").toString();
@@ -107,7 +108,8 @@ public class MeetingRoomServiceImpl extends AbstractCrudService<MeetingRoomMappe
                 }
             }
             LambdaQueryWrapper<MeetingFloor> floorQuery = Wrappers.lambdaQuery();
-            floorQuery.in(CollectionUtils.isNotEmpty(floorIdList), MeetingFloor::getFloorId,floorIdList);
+            floorQuery.in(CollectionUtils.isNotEmpty(floorIdList), MeetingFloor::getFloorId,floorIdList)
+                    .eq(MeetingFloor::getTenantId,SecurityUtils.getTenantId());
             List<MeetingFloor> floorList = dmFloorService.list(floorQuery);
 
             //会议室匹配对应楼层信息和本地存储信息

+ 45 - 0
service-meeting/service-meeting-biz/src/main/java/com/usky/meeting/service/vo/MyMeetingInfoRequestVO.java

@@ -0,0 +1,45 @@
+package com.usky.meeting.service.vo;
+
+import lombok.Data;
+
+@Data
+public class MyMeetingInfoRequestVO {
+    /**
+     * 页数
+     */
+    private Integer current;
+    /**
+     * 条数
+     */
+    private Integer size;
+
+    /**
+     * 会议议题
+     */
+    private String meetingName;
+
+    /**
+     * 会议介绍
+     */
+    private String meetingDescribe;
+
+    /**
+     * 会议模式(0-线下会议 1-线上会议 2-线下同步线上会议)
+     */
+    private Integer meetingMode;
+
+    /**
+     * 会议状态(0-未开始 1-进行中 2-已结束)
+     */
+    private Integer meetingStatus;
+
+    /**
+     * 会议开始时间
+     */
+    private String startDate;
+
+    /**
+     * 会议结束时间
+     */
+    private String endDate;
+}