This commit is contained in:
aikai 2024-04-15 15:25:49 +08:00
commit 5812c374e2
6 changed files with 39 additions and 53 deletions

View File

@ -188,7 +188,7 @@ public interface ErrorCodeConstants {
ErrorCode LOG_USE_NOT_EXISTS = new ErrorCode(1_009_010_005, "模板不存在");
ErrorCode LOG_TYPE_EXISTS = new ErrorCode(1_009_010_006, "已提交过({}),请勿重复提交");
ErrorCode LOG_TYPE_EXISTS = new ErrorCode(1_009_010_006, "当前日期的日志已提交过,请勿重复提交");
ErrorCode LOG_NOT_DATE = new ErrorCode(1_009_010_007, "只能修改当天提交的日志");

View File

@ -120,7 +120,7 @@ public class LogInstanceController {
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
public CommonResult<LogInstanceRespVO> getUpLog(@RequestParam("formId") Long formId) {
LogInstanceRespVO logInstanceRespVO = LogInstanceConvert.INSTANCE.convert(logInstanceService.getUpLog(formId, null));
LogInstanceRespVO logInstanceRespVO = LogInstanceConvert.INSTANCE.convert(logInstanceService.getUpLog(formId));
logInstanceRespVO = logInstanceService.setContentFun(logInstanceRespVO);
return success(logInstanceRespVO);

View File

@ -23,15 +23,22 @@ import java.util.List;
public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
default List<LogInstanceDO> getUpLog(Long userId, Long formId, Integer type){
default List<LogInstanceDO> getUpLog(Long userId, Long formId) {
return selectList(new LambdaQueryWrapperX<LogInstanceDO>()
.eq(LogInstanceDO::getStartUserId, userId)
.eqIfPresent(LogInstanceDO::getFormId, formId)
.eqIfPresent(LogInstanceDO::getType, type)
.orderByDesc(LogInstanceDO::getCreateTime));
}
default Long getLogByType(Integer type, Long userId, List<String> dateList) {
return selectCount(new LambdaQueryWrapperX<LogInstanceDO>()
.eq(LogInstanceDO::getType, type)
.eq(LogInstanceDO::getStartUserId, userId)
.in(LogInstanceDO::getTime, dateList));
}
IPage<LogInstanceRespVO> selectPageResult(@Param("page")Page<LogInstanceRespVO> page, @Param("reqVO")LogInstancePageReqVO reqVO,
@Param("userId")Long userId, @Param("pagingType") Integer pagingType, @Param("logId")Long logId);

View File

@ -1,6 +1,5 @@
package cn.iocoder.yudao.module.system.service.worklog;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
@ -9,8 +8,8 @@ import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import javax.validation.Valid;
import java.util.List;
import java.util.Date;
import java.util.List;
/**
* 日志实例的拓展 Service 接口
@ -89,7 +88,16 @@ public interface LogInstanceService {
// * @return
// */
// List<LogInstanceDO> getNeedWriteLogInstanceByTimeRange(Long fromId, List<String> time, Long userId);
LogInstanceDO getUpLog(Long formId, Integer type);
/**
* 获取用户发送的上一篇日志详情
* @param formId 日志模板编号
* @return 日志详情
*/
LogInstanceDO getUpLog(Long formId);
/**
* 设置日志详情 模板内容和时间
*/
LogInstanceRespVO setContentFun(LogInstanceRespVO logInstanceRespVO);
}

View File

@ -31,7 +31,6 @@ import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.WeekFields;
import java.util.*;
import java.util.stream.Collectors;
@ -95,6 +94,7 @@ public class LogInstanceServiceImpl implements LogInstanceService {
AdminUserDO adminUserDO = adminUserService.getUser(userId);
//获取规则信息
LogRuleDO logRuleDO = logRuleService.getLogRule(logFormDo.getRuleId());
//设置发起人用户编号
logInstance.setStartUserId(userId);
//设置发起人部门编号
@ -107,8 +107,6 @@ public class LogInstanceServiceImpl implements LogInstanceService {
logInstance.setType(logRuleDO.getType());
//设置日志名称
logInstance.setName(adminUserDO.getNickname() + "" + logFormDo.getName());
//设置日志日期
logInstance.setTime(createReqVO.getTime());
// 插入提交状态
Date endTime = null;
@ -134,6 +132,7 @@ public class LogInstanceServiceImpl implements LogInstanceService {
);
//创建日志时查询可以查看发起人日志的用户组 用线程控制
new Thread(() -> {
List<LogReadUserRespDTO> respDTOS = logInstanceMapper.selectRaedUser(adminUserDO.getDeptId());
logReadService.createLogRule(respDTOS, logInstance.getId(), logInstance.getStartUserId());
}).start();
@ -147,50 +146,22 @@ public class LogInstanceServiceImpl implements LogInstanceService {
*/
private void validateLogInstanceByType(LogInstanceSaveReqVO createReqVO) {
LogInstanceDO logInstanceDO = getUpLog(null, createReqVO.getType());
if (logInstanceDO == null) {
return;
List<String> dateList = new ArrayList<>();
if (createReqVO.getType() == 1) {
dateList.add(createReqVO.getTime());
}else {
String[] times = createReqVO.getTime().split(",");
dateList = DateUtils.betweenDayStrList(times[0], times[1]);
createReqVO.setTime(times[1]);
}
LocalDate oldTime = LocalDate.parse(logInstanceDO.getTime());
LocalDate nowTime = LocalDate.now();
Long count = logInstanceMapper.getLogByType(createReqVO.getType(), getLoginUserId(), dateList);
if (count > 0L) {
//根据日志类型判断
switch (createReqVO.getType()) {
//日志类型为日报
case 1:
if (oldTime.equals(nowTime)) {
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "日报");
}
//日志类型为周报
case 2:
WeekFields weekFields = WeekFields.of(Locale.getDefault());
// 获取两个日期所属的周数和年份
int oldWeek = oldTime.get(weekFields.weekOfWeekBasedYear());
int oldYear = oldTime.get(weekFields.weekBasedYear());
int nowWeek = nowTime.get(weekFields.weekOfWeekBasedYear());
int nowYear = nowTime.get(weekFields.weekBasedYear());
if (oldWeek == nowWeek && oldYear == nowYear) {
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "周报");
}
//日志类型为月报
case 3:
if (oldTime.getYear() == nowTime.getYear() && oldTime.getMonth() == nowTime.getMonth()) {
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "月报");
}
//日志类型为年报
case 4:
if (oldTime.getYear() == nowTime.getYear()) {
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "年报");
}
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS);
}
}
@ -311,9 +282,9 @@ public class LogInstanceServiceImpl implements LogInstanceService {
}
@Override
public LogInstanceDO getUpLog(Long formId, Integer type) {
public LogInstanceDO getUpLog(Long formId) {
List<LogInstanceDO> logInstanceDOS = logInstanceMapper.getUpLog(getLoginUserId(), formId, type);
List<LogInstanceDO> logInstanceDOS = logInstanceMapper.getUpLog(getLoginUserId(), formId);
if (!logInstanceDOS.isEmpty()) {
return logInstanceDOS.get(0);