package com.uiotsoft.daily.module.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.uiotsoft.daily.common.constant.CommonConstants;
import com.uiotsoft.daily.common.constant.NumberConstants;
import com.uiotsoft.daily.common.domain.vo.JsonResult;
import com.uiotsoft.daily.module.dao.*;
import com.uiotsoft.daily.module.dto.DailyAddDTO;
import com.uiotsoft.daily.module.dto.DailyDTO;
import com.uiotsoft.daily.module.dto.DailyJobPlanDTO;
import com.uiotsoft.daily.module.dto.QueryParamDTO;
import com.uiotsoft.daily.module.entity.*;
import com.uiotsoft.daily.module.service.DailyRoleConfigService;
import com.uiotsoft.daily.module.service.DailyService;
import com.uiotsoft.daily.module.service.TaskService;
import com.uiotsoft.daily.module.vo.DailyVO;
import com.uiotsoft.daily.module.vo.YesterdayJobVO;
import com.uiotsoft.daily.organization.entity.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalTime;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>DailyServiceImpl 此类用于:日报相关接口实现</p>
* <p>@author:hujm</p>
* <p>@date:2021年04月07日 9:00</p>
* <p>@remark:</p>
*/
@Slf4j
@Service
public class DailyServiceImpl extends ServiceImpl<DailyJobMapper, DailyJob> implements DailyService {
@Resource
private DailyJobMapper dailyJobMapper;
@Resource
private DailyJobPlanMapper dailyJobPlanMapper;
@Resource
private DailyRoleConfigMapper dailyRoleConfigMapper;
@Resource
private DailyCommentMapper dailyCommentMapper;
@Resource
private DailyCommentReplyMapper dailyCommentReplyMapper;
@Resource
private DailyReadRecordMapper dailyReadRecordMapper;
@Resource
private DailyHolidayConfigMapper dailyHolidayConfigMapper;
@Resource
private TaskService taskService;
@Resource
private DailyRoleConfigService dailyRoleConfigService;
@Resource
private DailyPositionMapper dailyPositionMapper;
@Resource
private DailyTeamMemberMapper dailyTeamMemberMapper;
@Transactional(rollbackFor = Exception.class)
@Override
public JsonResult addDaily(User user, DailyDTO dailyDTO) {
if (user == null) {
log.error("E|DailyServiceImpl|addDaily()|新增日报工作时,获取当前登录人失败!");
return JsonResult.fail("获取当前登录人失败!");
}
// 今日日程安排
DailyAddDTO dailyAddDTO = dailyDTO.getDailyAddDTO();
// 昨天工作完成情况
DailyJobPlanDTO dailyJobPlanDTO = dailyDTO.getDailyJobPlanDTO();
// 0 得到当前登录人和部门
String userName = user.getUserName();
String trueName = user.getTrueName();
log.info("E|DailyServiceImpl|addDaily()|插入日报工作表,获取当前登录人 userName = {}, trueName = {}", userName, trueName);
// 1 插入日报工作表
JsonResult jsonResult = this.addTodayDaily(user, dailyAddDTO);
if (jsonResult.isFail()) {
return jsonResult;
}
// 2 更新日报完成情况
this.updateYesterdayDaily(dailyJobPlanDTO);
return JsonResult.ok("新增日报成功!");
}
/**
* 新增今天工作日报日程
*
* @param user 当前登录用户
* @param dailyAddDTO 今天工作日报日程
*/
private JsonResult addTodayDaily(User user, DailyAddDTO dailyAddDTO) {
String userName = user.getUserName();
String trueName = user.getTrueName();
// 1 新增日报工作
DailyJob dailyJob = new DailyJob();
dailyJob.setCreateUser(userName);
dailyJob.setCreateName(trueName);
DailyRoleConfig dailyRoleConfig = dailyRoleConfigMapper.getDailRoleConfigByUser(userName);
// 如果当前用户为总监、总监助理或者部门经理角色,则直接使用当前部门id和部门名称
if (dailyRoleConfig != null) {
dailyJob.setDeptId(dailyRoleConfig.getDeptId());
dailyJob.setDeptName(dailyRoleConfig.getDeptName());
} else {
// 如果当前用户为普通员工,则判断出当前员工属于哪个部门,则将当前部门赋值给日报所属部门id和部门名称
List<DailyRoleConfig> roleConfigList = dailyRoleConfigMapper.selectList(Wrappers.<DailyRoleConfig>lambdaQuery()
.eq(DailyRoleConfig::getFlag, 1));
for (DailyRoleConfig roleConfig : roleConfigList) {
String roleConfigDeptId = roleConfig.getDeptId();
String agentSid = user.getAgentSid();
if (agentSid.contains(roleConfigDeptId) && roleConfig.getRoleRank() == NumberConstants.NUMBER_THREE) {
dailyJob.setDeptId(roleConfigDeptId);
dailyJob.setDeptName(roleConfig.getDeptName());
}
}
}
// 如果是非工作日,那么当天任何一个时间段内都可提交日报
if (isWorkDay()) {
// 如果是工作日,请在规定的时间段内提交日报
if (!isRightTime()) {
return JsonResult.fail("请在规定的时间段内(18:00:00--24:00:00)提交日报!");
}
}
// 日报创建时间
dailyJob.setCreateTime(new Date());
int insert = dailyJobMapper.insertDaily(dailyJob);
if (insert > 0) {
// 2 得到当前日报的id,插入日报工作日程表
Integer dailyJobId = dailyJob.getId();
log.info("E|DailyServiceImpl|addDaily()|新增日报成功,得到当前日报【主键id = {},操作人 = {}】", dailyJobId, trueName);
List<DailyJobPlan> dailyJobPlanList = dailyAddDTO.getDailyJobPlanList();
for (DailyJobPlan dailyJobPlan : dailyJobPlanList) {
dailyJobPlan.setJobId(dailyJobId);
dailyJobPlanMapper.insert(dailyJobPlan);
}
}
return JsonResult.ok("新增日报成功!");
}
/**
* 判断是否是工作日
*
* @return true 工作日,false 节假日
*/
private boolean isWorkDay() {
// 从节假日表中查询节假日详情
DailyHolidayConfig holidayConfigInfo = dailyHolidayConfigMapper.getHolidayConfigInfo();
if (holidayConfigInfo != null) {
return false;
}
// 判断今天是否是周六、周日
Date todayDate = new Date();
int dayOfWeek = DateUtil.dayOfWeek(todayDate);
String weekDay = taskService.getDayOfWeek(dayOfWeek);
if (CommonConstants.CN_SATURDAY.equals(weekDay) || CommonConstants.CN_SUNDAY.equals(weekDay)) {
return false;
}
return true;
}
/**
* 判断当前时间是否在18点和24点之间,如果是,则可以提交日报,否则不让提交
*
* @return 判断当前时间是否在18点和24点之间
*/
private boolean isRightTime() {
LocalTime now = LocalTime.now();
LocalTime startTime = LocalTime.of(18, 0, 0);
LocalTime endTime = LocalTime.of(23, 59, 59);
return now.isBefore(endTime) && now.isAfter(startTime);
}
/**
* 更新昨日完成情况
*
* @param dailyJobPlanDTO 昨日日报信息
*/
private void updateYesterdayDaily(DailyJobPlanDTO dailyJobPlanDTO) {
if (dailyJobPlanDTO != null) {
// 1 更新完成情况
List<DailyJobPlan> dailyJobPlanList = dailyJobPlanDTO.getDailyJobPlanList();
for (DailyJobPlan dailyJobPlan :
没有合适的资源?快使用搜索试试~ 我知道了~
资源详情
资源评论
资源推荐
收起资源包目录
钉钉对接Java demo (522个子文件)
.babelrc 402B
.babelrc 402B
app.ee7393430f685b9492635a2cc56636cc.css 248KB
app.7640a4b6ef2c3002407e1c4d53238432.css 247KB
app.74fc8903e229323acff34fead3bce818.css 247KB
app.e0d633ab8a66a43693631943a768c8bf.css 166KB
app.74f4a22c2023da4c53de669e051535d3.css 158KB
app.ba7a9379d691bb18a87e2dd045539866.css 157KB
app.0fe5aa931023deadb99ee9d9b10377b5.css 157KB
steps.css 2KB
steps.css 2KB
common.css 790B
common.css 682B
.editorconfig 147B
.eslintignore 51B
.eslintignore 51B
.eslintrc 58B
.eslintrc 58B
.gitignore 213B
.gitignore 213B
eslint.html 11KB
eslint.html 11KB
dinglogin.html 4KB
index.html 2KB
index.html 2KB
index.html 2KB
index.html 577B
index.html 326B
favicon.ico 1KB
dailyApplication.iml 760B
DailyServiceImpl.java 34KB
MicroServiceClient.java 30KB
MailNoSubmitTask.java 19KB
DailyReadRecordServiceImpl.java 16KB
ShowMail.java 14KB
ExcelUtil.java 14KB
AccountController.java 11KB
BaseController.java 11KB
DingAuthController.java 11KB
DailyRoleConfigServiceImpl.java 10KB
DailyStatisticsServiceImpl.java 10KB
DailyPositionServiceImpl.java 10KB
AccountServiceImpl.java 10KB
SecurityConfig.java 10KB
DailyJobMapper.java 9KB
DingTalkWorkNotice.java 8KB
DailyProjectServiceImpl.java 8KB
DailyTeamMemberServiceImpl.java 7KB
TaskServiceImpl.java 6KB
DailyCommentServiceImpl.java 6KB
OperationLogAspect.java 6KB
CustomUserDetailsServiceImpl.java 5KB
NoSubmitTask.java 5KB
DingRemindServiceImpl.java 5KB
TokenService.java 5KB
Cache.java 5KB
FileUtil.java 4KB
RoleServiceImpl.java 4KB
RoleController.java 4KB
JsonUtil.java 4KB
ErrorCode.java 4KB
NoSubmitInformTask.java 4KB
DailyService.java 4KB
CommonUtil.java 3KB
CommonConstants.java 3KB
DailyController.java 3KB
Page.java 3KB
RedisCache.java 3KB
RandomUtils.java 3KB
CompareObjUtils.java 3KB
Md5Util.java 3KB
AccountService.java 3KB
DailyPositionController.java 3KB
DailyRoleConfigController.java 3KB
User.java 3KB
DingtalkEncryptException.java 3KB
SystemOperationLogController.java 3KB
CurrUserDetails.java 3KB
GlobalExceptionHandlerAdvice.java 3KB
CookieUtil.java 3KB
DailyProjectController.java 3KB
MyMetaObjectHandler.java 3KB
DailyStatisticsController.java 3KB
DailyProjectInfo.java 2KB
DailyReadRecordMapper.java 2KB
JsonResult.java 2KB
DailyRoleConfig.java 2KB
DailyJob.java 2KB
DailyRoleConfigService.java 2KB
UserServiceImpl.java 2KB
MvcConfig.java 2KB
CommonInterceptor.java 2KB
DailyPositionService.java 2KB
DailyTeamMemberController.java 2KB
AccountDTO.java 2KB
DailyReadRecordController.java 2KB
MisException.java 2KB
DailyNoSubmitReport.java 2KB
UserController.java 2KB
DailyMailContent.java 2KB
共 522 条
- 1
- 2
- 3
- 4
- 5
- 6
写代码的小高
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0