diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index da320851..20e503b2 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -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, "只能修改当天提交的日志"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java index d1445ec8..a66a88d4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java @@ -120,7 +120,7 @@ public class LogInstanceController { @PreAuthorize("@ss.hasPermission('system:view-log:query')") public CommonResult 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); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java index d46fa16f..9f304bc9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java @@ -23,15 +23,22 @@ import java.util.List; public interface LogInstanceMapper extends BaseMapperX { - default List getUpLog(Long userId, Long formId, Integer type){ + default List getUpLog(Long userId, Long formId) { return selectList(new LambdaQueryWrapperX() .eq(LogInstanceDO::getStartUserId, userId) .eqIfPresent(LogInstanceDO::getFormId, formId) - .eqIfPresent(LogInstanceDO::getType, type) .orderByDesc(LogInstanceDO::getCreateTime)); } + default Long getLogByType(Integer type, Long userId, List dateList) { + + return selectCount(new LambdaQueryWrapperX() + .eq(LogInstanceDO::getType, type) + .eq(LogInstanceDO::getStartUserId, userId) + .in(LogInstanceDO::getTime, dateList)); + } + IPage selectPageResult(@Param("page")Page page, @Param("reqVO")LogInstancePageReqVO reqVO, @Param("userId")Long userId, @Param("pagingType") Integer pagingType, @Param("logId")Long logId); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java index c767676d..5074e9f9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceService.java @@ -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 getNeedWriteLogInstanceByTimeRange(Long fromId, List time, Long userId); - LogInstanceDO getUpLog(Long formId, Integer type); + /** + * 获取用户发送的上一篇日志详情 + * @param formId 日志模板编号 + * @return 日志详情 + */ + LogInstanceDO getUpLog(Long formId); + + /** + * 设置日志详情 模板内容和时间 + */ LogInstanceRespVO setContentFun(LogInstanceRespVO logInstanceRespVO); } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java index 44bae74a..3b1656ae 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java @@ -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 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 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 logInstanceDOS = logInstanceMapper.getUpLog(getLoginUserId(), formId, type); + List logInstanceDOS = logInstanceMapper.getUpLog(getLoginUserId(), formId); if (!logInstanceDOS.isEmpty()) { return logInstanceDOS.get(0); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/LogInstanceMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml similarity index 100% rename from yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/user/LogInstanceMapper.xml rename to yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml