package com.cloudroam.service.impl;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cloudroam.common.LocalUser;
import com.cloudroam.dto.projectDaily.CreateWithTaskDTO;
import com.cloudroam.dto.projectDaily.QueryProjectDailyDTO;
import com.cloudroam.dto.projectDailyMain.QueryProjectDailyMainCalenDarDTO;
import com.cloudroam.dto.projectDailyMain.QueryProjectDailyMainDTO;
import com.cloudroam.common.enumeration.DailyCommitEnum;
import com.cloudroam.common.enumeration.DailyConfirmEnum;
import com.cloudroam.common.enumeration.DeletedEnum;
import com.cloudroam.model.ProjectDailyMainDO;
import com.cloudroam.mapper.ProjectDailyMainMapper;
import com.cloudroam.model.UserDO;
import com.cloudroam.service.ProjectDailyMainService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cloudroam.util.DateUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
*
* 服务实现类
*
*
* @author generator@TaoJie
* @since 2023-08-17
*/
@Service
public class ProjectDailyMainServiceImpl extends ServiceImpl implements ProjectDailyMainService {
@Override
public List getDailyMainList(QueryProjectDailyMainDTO mainDTO) {
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("is_deleted", DeletedEnum.DELETED_NO.getCode());
wrapper.eq("daily_date",mainDTO.getDailyDate());
wrapper.eq("use_id", mainDTO.getUseId());
return this.baseMapper.selectList(wrapper);
}
@Override
@Transactional
public boolean createDailyMainDefault(QueryProjectDailyMainDTO dto) {
UserDO userDO= LocalUser.getLocalUser();
ProjectDailyMainDO projectDailyMainDO=new ProjectDailyMainDO();
//创建
projectDailyMainDO.setId(IdUtil.simpleUUID());
projectDailyMainDO.setDailyDate(DateUtils.stringToLocalDateTime(dto.getDailyDate()));
projectDailyMainDO.setUseId(String.valueOf(userDO.getId()));
projectDailyMainDO.setUserName(userDO.getNickname());
projectDailyMainDO.setIsCommit(DailyCommitEnum.UNCOMMITED.getCode());
projectDailyMainDO.setIsConfirm(DailyConfirmEnum.UNCONFIRM.getCode());
projectDailyMainDO.setUpdateTime(new Date());
projectDailyMainDO.setUpdateUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setUpdateUserName(userDO.getNickname());
//
projectDailyMainDO.setCreateTime(new Date());
projectDailyMainDO.setCreateUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setCreateUserName(userDO.getNickname());
projectDailyMainDO.setIsDeleted(DeletedEnum.DELETED_NO.getCode());
return this.baseMapper.insert(projectDailyMainDO) > 0;
}
@Override
@Transactional
public boolean confirmProjectDailyMain(String dailyDate, String createUserId,Integer confirmCode, String confirmContent) {
UserDO userDO = LocalUser.getLocalUser();
// 将queryMain 的记录设置成已经提交
ProjectDailyMainDO projectDailyMainDO=new ProjectDailyMainDO();
QueryWrapper dailyMainWrapper = new QueryWrapper();
dailyMainWrapper.eq("is_deleted",DeletedEnum.DELETED_NO.getCode());
dailyMainWrapper.eq("daily_date",dailyDate);
if(!"-1".equals(createUserId)) {
dailyMainWrapper.eq("create_user_id", createUserId);
}
projectDailyMainDO.setIsConfirm(confirmCode);
projectDailyMainDO.setConfirmTime(LocalDateTime.now());
projectDailyMainDO.setConfirmUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setConfirmUserName(userDO.getNickname());
projectDailyMainDO.setConfirmContent(confirmContent);
// 如果是确认不通过的情况下,则将提交改为未提交
if(Objects.equals(confirmCode, DailyConfirmEnum.UNPASS.getCode())){
projectDailyMainDO.setIsCommit(DailyCommitEnum.UNCOMMITED.getCode());
projectDailyMainDO.setCommitTime(LocalDateTime.now());
projectDailyMainDO.setCommitUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setCommitUserName(userDO.getNickname());
}
return baseMapper.update(projectDailyMainDO,dailyMainWrapper)>0;
}
@Override
@Transactional
public boolean unConfirmProjectDailyMain(String dailyDate, String createUserId) {
UserDO userDO = LocalUser.getLocalUser();
// 将queryMain 的记录设置成已经提交
ProjectDailyMainDO projectDailyMainDO=new ProjectDailyMainDO();
QueryWrapper dailyMainWrapper = new QueryWrapper();
dailyMainWrapper.eq("is_deleted",DeletedEnum.DELETED_NO.getCode());
dailyMainWrapper.eq("daily_date",dailyDate);
if(!"-1".equals(createUserId)){
dailyMainWrapper.eq("create_user_id",createUserId);
}
// 设置未确认的时候,需要将记录设置为未提交
projectDailyMainDO.setIsCommit(DailyCommitEnum.UNCOMMITED.getCode());
projectDailyMainDO.setCommitTime(LocalDateTime.now());
projectDailyMainDO.setCommitUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setCommitUserName(userDO.getNickname());
projectDailyMainDO.setIsConfirm(DailyConfirmEnum.UNCONFIRM.getCode());
projectDailyMainDO.setConfirmTime(LocalDateTime.now());
projectDailyMainDO.setConfirmUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setConfirmUserName(userDO.getNickname());
return baseMapper.update(projectDailyMainDO,dailyMainWrapper)>0;
}
@Override
@Transactional
public boolean unCommitProjectDailyMain(Date dailyDate, String createUserId) {
UserDO userDO = LocalUser.getLocalUser();
// 将queryMain 的记录设置成已经提交
ProjectDailyMainDO projectDailyMainDO=new ProjectDailyMainDO();
QueryWrapper dailyMainWrapper = new QueryWrapper();
dailyMainWrapper.eq("is_deleted",DeletedEnum.DELETED_NO.getCode());
dailyMainWrapper.eq("daily_date",dailyDate);
dailyMainWrapper.eq("create_user_id",createUserId);
projectDailyMainDO.setIsCommit(DailyCommitEnum.UNCOMMITED.getCode());
projectDailyMainDO.setCommitTime(LocalDateTime.now());
projectDailyMainDO.setCommitUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setCommitUserName(userDO.getNickname());
projectDailyMainDO.setIsConfirm(DailyConfirmEnum.UNCONFIRM.getCode());
projectDailyMainDO.setConfirmTime(LocalDateTime.now());
projectDailyMainDO.setConfirmUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setConfirmUserName(userDO.getNickname());
return baseMapper.update(projectDailyMainDO,dailyMainWrapper)>0;
}
@Override
public boolean commit(QueryProjectDailyDTO queryProjectDailyDTO) {
UserDO userDO = LocalUser.getLocalUser();
// 将queryMain 的记录设置成已经提交
ProjectDailyMainDO projectDailyMainDO=new ProjectDailyMainDO();
QueryWrapper dailyMainWrapper = new QueryWrapper();
dailyMainWrapper.eq("is_deleted",DeletedEnum.DELETED_NO.getCode());
dailyMainWrapper.eq("daily_date",queryProjectDailyDTO.getDailyDate());
dailyMainWrapper.eq("create_user_id",queryProjectDailyDTO.getCreateUserId());
projectDailyMainDO.setIsCommit(DailyCommitEnum.COMMITED.getCode());
projectDailyMainDO.setCommitTime(LocalDateTime.now());
projectDailyMainDO.setCommitUserId(String.valueOf(userDO.getId()));
projectDailyMainDO.setCommitUserName(userDO.getNickname());
return baseMapper.update(projectDailyMainDO,dailyMainWrapper)>0;
}
@Override
public List getDailyMainListPersonal(QueryProjectDailyMainCalenDarDTO dto) {
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("is_deleted", DeletedEnum.DELETED_NO.getCode());
// wrapper.eq("daily_date",dto.getDailyDate());
wrapper.eq("use_id", dto.getUserId());
String calendarMonth = dto.getCalendarDate().substring(0,dto.getCalendarDate().lastIndexOf("-"));
wrapper.like("daily_date",calendarMonth);
return this.baseMapper.selectList(wrapper);
}
@Override
public int getDailyMainUncommitCount() {
final UserDO userDO = LocalUser.getLocalUser();
QueryWrapper wrapper = new QueryWrapper<>();
wrapper.eq("is_deleted", DeletedEnum.DELETED_NO.getCode());
wrapper.eq("use_id", String.valueOf(userDO.getId()));
wrapper.eq("is_commit",DailyCommitEnum.UNCOMMITED.getCode());
wrapper.lt("daily_date", DateUtil.format(new Date(), "yyyy-MM-dd"));
return this.baseMapper.selectCount(wrapper);
}
@Override
public boolean existsProjectDailyMainByDate(CreateWithTaskDTO createBatchTaskDTO) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectDailyMainDO::getIsDeleted, DeletedEnum.DELETED_NO.getCode())
.eq(ProjectDailyMainDO::getCreateUserId,createBatchTaskDTO.getUserId())
.eq(ProjectDailyMainDO::getDailyDate,createBatchTaskDTO.getDailyDate());
return baseMapper.selectCount(wrapper)>0;
}
@Override
public ProjectDailyMainDO getProjectDailyMainByDate(CreateWithTaskDTO createBatchTaskDTO) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProjectDailyMainDO::getIsDeleted, DeletedEnum.DELETED_NO.getCode())
.eq(ProjectDailyMainDO::getCreateUserId,createBatchTaskDTO.getUserId())
.eq(ProjectDailyMainDO::getDailyDate,createBatchTaskDTO.getDailyDate());
List mainDOList = baseMapper.selectList(wrapper);
if(!CollectionUtils.isEmpty(mainDOList)){
return mainDOList.get(0);
}
return null;
}
}