package com.cloudroam.controller.v1;
|
|
|
import cn.hutool.core.util.StrUtil;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.cloudroam.bo.meeting.MeetingBO;
|
import com.cloudroam.bo.meeting.MeetingDateUserDaily;
|
import com.cloudroam.bo.meeting.MeetingUserDaily;
|
import com.cloudroam.bo.businessDaily.BusinessDailyBO;
|
import com.cloudroam.common.LocalUser;
|
import com.cloudroam.common.annotation.LogParams;
|
import com.cloudroam.common.util.BeanCopyUtil;
|
import com.cloudroam.common.util.PageUtil;
|
import com.cloudroam.dto.meeting.CreateMeetingDTO;
|
import com.cloudroam.dto.meeting.MeetingPageDTO;
|
|
import com.cloudroam.dto.meeting.UpdateMeetingDTO;
|
import com.cloudroam.dto.projectDaily.UpdateProjectDailyProcessDTO;
|
import com.cloudroam.model.ProjectDailyDO;
|
import com.cloudroam.model.UserDO;
|
import com.cloudroam.service.MailService;
|
import com.cloudroam.service.MeetingService;
|
import com.cloudroam.service.ProjectDailyService;
|
import io.github.talelin.autoconfigure.exception.NotFoundException;
|
import io.github.talelin.core.annotation.Logger;
|
import io.github.talelin.core.annotation.LoginRequired;
|
import io.github.talelin.core.annotation.PermissionMeta;
|
import io.github.talelin.core.annotation.PermissionModule;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.validation.annotation.Validated;
|
import org.springframework.web.bind.annotation.*;
|
import com.cloudroam.model.MeetingDO;
|
import com.cloudroam.vo.DeletedVO;
|
import com.cloudroam.vo.PageResponseVO;
|
import com.cloudroam.vo.UpdatedVO;
|
|
import java.time.LocalDateTime;
|
import java.util.List;
|
|
/**
|
* @author generator@TaoJie
|
* @since 2024-07-05
|
*/
|
@RestController
|
@RequestMapping("/v1/meeting")
|
@PermissionModule("会议纪要")
|
public class MeetingController {
|
|
@Autowired
|
private MeetingService meetingService;
|
@Autowired
|
private ProjectDailyService projectDailyService;
|
|
@Autowired
|
private MailService mailService;
|
|
@PostMapping("")
|
@PermissionMeta(value = "会议纪要创建", mount =true)
|
@Logger(template = "{user.nickname} 创建了会议纪要 ")
|
@LoginRequired
|
@LogParams
|
public MeetingDO create(@RequestBody @Validated CreateMeetingDTO validator) {
|
|
final MeetingDO meetingDO = meetingService.insertMeeting(validator);
|
return meetingDO;
|
}
|
|
@PutMapping("/{id}")
|
@LoginRequired
|
@PermissionMeta(value = "会议纪要更新",mount = true)
|
@Logger(template = "{user.nickname} 更新了会议纪要 ")
|
public UpdatedVO update(@PathVariable String id,@RequestBody @Validated UpdateMeetingDTO updateMeetingDTO) {
|
if(StrUtil.isBlank(id)){
|
throw new NotFoundException("传入的Id不能为空");
|
}
|
MeetingDO meetingDO=meetingService.getById(id);
|
if(meetingDO == null){
|
throw new NotFoundException("日志不存在");
|
}
|
|
meetingService.updateMeeting(updateMeetingDTO);
|
|
return new UpdatedVO();
|
}
|
|
@LoginRequired
|
@PermissionMeta(value = "日志进度更新",mount = false)
|
@Logger(template = "{user.nickname} 更新了日志进度 ")
|
@PutMapping("/daily/process/{id}")
|
public UpdatedVO updateDailyProcess(@PathVariable String id,@RequestBody @Validated UpdateProjectDailyProcessDTO validator) {
|
if(StrUtil.isBlank(validator.getId())){
|
throw new NotFoundException("传入的Id不能为空");
|
}
|
ProjectDailyDO projectDailyDO=projectDailyService.getById(validator.getId());
|
if(projectDailyDO == null){
|
throw new NotFoundException("日志不存在");
|
}
|
ProjectDailyDO updateProjectDaily=new ProjectDailyDO();
|
BeanCopyUtil.copyProperties(validator,updateProjectDaily);
|
final UserDO userDO = LocalUser.getLocalUser();
|
updateProjectDaily.setDailyProcessUserId(String.valueOf(userDO.getId()));
|
updateProjectDaily.setDailyProcessUserName(userDO.getNickname());
|
updateProjectDaily.setDailyProcessTime(LocalDateTime.now());
|
|
projectDailyService.saveOrUpdate(updateProjectDaily);
|
return new UpdatedVO();
|
}
|
|
|
@DeleteMapping("/{id}")
|
@LoginRequired
|
@PermissionMeta(value = "会议纪要删除",mount = false)
|
@Logger(template = "{user.nickname} 会议纪要删除 ")
|
public DeletedVO delete(@PathVariable String id) {
|
if(StrUtil.isBlank(id)){
|
throw new NotFoundException("传入的Id不能为空");
|
}
|
MeetingDO meetingDO=meetingService.getById(id);
|
if(meetingDO == null){
|
throw new NotFoundException("日志不存在");
|
}
|
|
meetingService.deleteMeetingById(id);
|
|
return new DeletedVO();
|
}
|
|
@GetMapping("/{id}")
|
public MeetingBO get(@PathVariable(value = "id") String id) {
|
return meetingService.getMeetingById(id);
|
}
|
|
|
@PostMapping("/page")
|
@PermissionMeta(value = "会议纪要", module = "工作日志",mount = true)
|
@Logger(template = "{user.nickname} 查看了会议纪要")
|
@LoginRequired
|
public PageResponseVO<MeetingBO> page(
|
@RequestBody @Validated MeetingPageDTO dto
|
) {
|
IPage<MeetingBO> iPage=meetingService.getMeetingPage(dto);
|
return PageUtil.build(iPage);
|
}
|
|
|
@PostMapping("/daily/list")
|
@PermissionMeta(value = "提取人员日志信息" ,mount = false)
|
@Logger(template = "{user.nickname} 提取人员日志信息")
|
@LoginRequired
|
public List<MeetingUserDaily> dailyList(
|
@RequestBody @Validated MeetingPageDTO dto
|
) {
|
return projectDailyService.getProjectDailybyUserList(dto);
|
}
|
|
@PostMapping("/daily/date/list")
|
@PermissionMeta(value = "根据日期提取人员日志信息" ,mount = false)
|
@Logger(template = "{user.nickname} 根据日期提取人员日志信息")
|
@LoginRequired
|
public List<MeetingDateUserDaily> dateDailyList(
|
@RequestBody @Validated MeetingPageDTO dto
|
) {
|
return projectDailyService.getDateDailyList(dto);
|
}
|
|
@PostMapping("/meetingid/date/list")
|
@PermissionMeta(value = "根据日期提取人员日志信息" ,mount = false)
|
@Logger(template = "{user.nickname} 根据日期提取人员日志信息")
|
@LoginRequired
|
public List<String> getDailyDateByMeetingId(
|
@RequestBody @Validated MeetingPageDTO dto
|
) {
|
return projectDailyService.getDailyDateByMeetingId(dto);
|
}
|
|
|
@PostMapping("/daily/withMeetingId/list")
|
@PermissionMeta(value = "提取会议人员日志信息" ,mount = false)
|
@Logger(template = "{user.nickname} 提取会议人员日志信息")
|
@LoginRequired
|
public List<MeetingUserDaily> dailyMeetingListWithMeetingId(
|
@RequestBody @Validated MeetingPageDTO dto
|
) {
|
return projectDailyService.getProjectDailyMeetingbyUserList(dto);
|
}
|
|
|
@PostMapping("/business/daily/list")
|
@PermissionMeta(value = "提取商务日志信息" ,mount = false)
|
@Logger(template = "{user.nickname} 提取商务日志信息")
|
@LoginRequired
|
public List<BusinessDailyBO> businessList(
|
@RequestBody @Validated MeetingPageDTO dto
|
) {
|
return projectDailyService.getProjectBusinessDailybyMeetingId(dto);
|
}
|
|
|
|
@PutMapping("/commit/{id}")
|
@LoginRequired
|
@PermissionMeta(value = "会议纪要提交")
|
@Logger(template = "{user.nickname} 提交了会议纪要")
|
public UpdatedVO commit(@PathVariable String id) {
|
UserDO commitUser=LocalUser.getLocalUser();
|
if(StrUtil.isBlank(id)){
|
throw new NotFoundException("传入的Id不能为空");
|
}
|
MeetingDO meetingDO=meetingService.getById(id);
|
if(meetingDO == null){
|
throw new NotFoundException("会议纪要不存在");
|
}
|
|
meetingService.commit(id);
|
// 异步邮件发送
|
mailService.sendMeetingCommitMail(meetingService.getMeetingById(id),commitUser);
|
return new UpdatedVO();
|
}
|
|
|
|
|
}
|