日志: 我收的到页面分页接口, 规则创建、更新接口
This commit is contained in:
parent
a7776f5f8e
commit
9096be7cf3
@ -5,7 +5,9 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.*;
|
||||
import cn.iocoder.yudao.module.system.convert.worklog.LogFormConvert;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.LogFormService;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.LogRuleService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -28,6 +30,9 @@ public class LogFormController {
|
||||
@Resource
|
||||
private LogFormService formService;
|
||||
|
||||
@Resource
|
||||
private LogRuleService logRuleService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建动态模板")
|
||||
@PreAuthorize("@ss.hasPermission('worklog:form:create')")
|
||||
@ -57,8 +62,20 @@ public class LogFormController {
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('worklog:form:query')")
|
||||
public CommonResult<LogFormRespVO> getForm(@RequestParam("id") Long id) {
|
||||
|
||||
LogFormDO form = formService.getForm(id);
|
||||
return success(LogFormConvert.INSTANCE.convert(form));
|
||||
LogFormRespVO logFormRespVO = LogFormConvert.INSTANCE.convert(form);
|
||||
|
||||
if (form != null) {
|
||||
|
||||
//获取规则信息
|
||||
LogRuleDO logRuleDO = logRuleService.getLogRule(form.getRuleId());
|
||||
|
||||
//设置日志类型
|
||||
logFormRespVO.setType(logRuleDO.getType());
|
||||
}
|
||||
|
||||
return success(logFormRespVO);
|
||||
}
|
||||
|
||||
@GetMapping("/list-all-simple")
|
||||
@ -77,7 +94,7 @@ public class LogFormController {
|
||||
}
|
||||
|
||||
@GetMapping("/page-by-rule")
|
||||
@Operation(summary = "获得配置规则后的模板分页")
|
||||
@Operation(summary = "获得我可以使用的模板分页")
|
||||
@PreAuthorize("@ss.hasPermission('worklog:form:query')")
|
||||
public CommonResult<PageResult<LogFormRespVO>> getFormPageByRule(@Valid LogFormPageReqVO pageVO) {
|
||||
|
||||
|
@ -6,11 +6,14 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.user.vo.user.UserRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO;
|
||||
import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert;
|
||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.LogReadService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@ -23,10 +26,14 @@ import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
|
||||
@Tag(name = "管理后台 - 日志实例")
|
||||
@RestController
|
||||
@ -37,6 +44,12 @@ public class LogInstanceController {
|
||||
@Resource
|
||||
private LogInstanceService logInstanceService;
|
||||
|
||||
@Resource
|
||||
private LogReadService logReadService;
|
||||
|
||||
@Resource
|
||||
private AdminUserService userService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建日志实例")
|
||||
@PreAuthorize("@ss.hasPermission('system:log-instance:create')")
|
||||
@ -63,11 +76,15 @@ public class LogInstanceController {
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得日志实例")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('system:log-instance:query')")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1")
|
||||
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
|
||||
public CommonResult<LogInstanceRespVO> getLogInstance(@RequestParam("id") Long id) {
|
||||
LogInstanceDO logInstance = logInstanceService.getLogInstance(id);
|
||||
return success(BeanUtils.toBean(logInstance, LogInstanceRespVO.class));
|
||||
|
||||
//查看日志详情时,变更当前用户日志的阅读状态
|
||||
logReadService.updateReadStatus(id, getLoginUserId());
|
||||
|
||||
LogInstanceRespVO logInstance = logInstanceService.getLogInstance(id);
|
||||
return success(logInstance);
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@ -75,7 +92,16 @@ public class LogInstanceController {
|
||||
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
|
||||
public CommonResult<IPage<LogInstanceRespVO>> getLogInstancePage(@ModelAttribute LogInstancePageReqVO pageReqVO) {
|
||||
|
||||
IPage<LogInstanceRespVO> pageResult = logInstanceService.getLogInstancePage(pageReqVO);
|
||||
IPage<LogInstanceRespVO> pageResult = logInstanceService.getLogInstancePage(pageReqVO, 0);
|
||||
return success(pageResult);
|
||||
}
|
||||
|
||||
@GetMapping("/my-page")
|
||||
@Operation(summary = "获得我的日志分页列表")
|
||||
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
|
||||
public CommonResult<IPage<LogInstanceRespVO>> getMyLogInstancePage(@ModelAttribute LogInstancePageReqVO pageReqVO) {
|
||||
|
||||
IPage<LogInstanceRespVO> pageResult = logInstanceService.getLogInstancePage(pageReqVO, 1);
|
||||
return success(pageResult);
|
||||
}
|
||||
|
||||
@ -90,11 +116,42 @@ public class LogInstanceController {
|
||||
|
||||
@GetMapping("/get-upLog")
|
||||
@Operation(summary = "获取上一篇日志,用于导入上一篇日志")
|
||||
@Parameter(name = "type", description = "日志类型", required = true, example = "1")
|
||||
@Parameter(name = "formId", description = "日志模板编号", required = true, example = "1")
|
||||
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
|
||||
public CommonResult<LogInstanceRespVO> getUpLog(@RequestParam("type") Integer type) {
|
||||
public CommonResult<LogInstanceRespVO> getUpLog(@RequestParam("formId") Long formId) {
|
||||
|
||||
return success(BeanUtils.toBean(logInstanceService.getUpLog(type), LogInstanceRespVO.class));
|
||||
LogInstanceRespVO logInstanceRespVO = LogInstanceConvert.INSTANCE.convert(logInstanceService.getUpLog(formId, null));
|
||||
logInstanceRespVO = logInstanceService.setContentFun(logInstanceRespVO);
|
||||
|
||||
return success(logInstanceRespVO);
|
||||
}
|
||||
|
||||
@PostMapping("/getByLogId")
|
||||
@Operation(summary = "获得可查看日志的用户详情")
|
||||
@Parameter(name = "logId", description = "日志编号", required = true, example = "10")
|
||||
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
|
||||
public CommonResult<List<Map<String, Object>>> getUserByLogId(@RequestParam("logId") Long logId) {
|
||||
|
||||
List<Map<String, Object>> readUserVO = new ArrayList<>();
|
||||
|
||||
Map<Integer, List<Long>> usrMap = logReadService.getUserId(logId);
|
||||
|
||||
List<UserRespVO> unReadUserInfo = BeanUtils.toBean(userService.getUserList(usrMap.get(0)), UserRespVO.class);
|
||||
List<UserRespVO> readUserInfo = BeanUtils.toBean(userService.getUserList(usrMap.get(1)), UserRespVO.class);
|
||||
|
||||
Map<String, Object> unReadMap = new HashMap<>();
|
||||
Map<String, Object> readMap = new HashMap<>();
|
||||
|
||||
unReadMap.put("readStatus", 0);
|
||||
unReadMap.put("value", unReadUserInfo);
|
||||
|
||||
readMap.put("readStatus", 1);
|
||||
readMap.put("value", readUserInfo);
|
||||
|
||||
readUserVO.add(unReadMap);
|
||||
readUserVO.add(readMap);
|
||||
|
||||
return success(readUserVO);
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@ -104,7 +161,7 @@ public class LogInstanceController {
|
||||
public void exportLogInstanceExcel(@Valid LogInstancePageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
|
||||
List<LogInstanceRespVO> list = logInstanceService.getLogInstancePage(pageReqVO).getRecords();
|
||||
List<LogInstanceRespVO> list = logInstanceService.getLogInstancePage(pageReqVO,null).getRecords();
|
||||
// 导出 Excel
|
||||
ExcelUtils.write(response, "日志实例的拓展.xls", "数据", LogInstanceRespVO.class,
|
||||
BeanUtils.toBean(list, LogInstanceRespVO.class));
|
||||
|
@ -17,6 +17,9 @@ public class LogFormRespVO extends LogFormBaseVO {
|
||||
@Schema(description = "表单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "日志类型", example = "1")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "表单的配置-JSON 字符串", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "表单的配置不能为空")
|
||||
private String conf;
|
||||
|
@ -1,7 +1,6 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -9,7 +8,6 @@ import lombok.ToString;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Map;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@ -41,16 +39,12 @@ public class LogInstancePageReqVO extends PageParam {
|
||||
private Long formId;
|
||||
|
||||
@Schema(description = "模板值")
|
||||
private Map<String, Object> formVariables;
|
||||
private String formVariables;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
@Schema(description = "未读", example = "0")
|
||||
private Integer unRead;
|
||||
|
||||
@Schema(description = "分页类型 0是我收到,1是我的", example = "0")
|
||||
private Integer pagingType;
|
||||
}
|
@ -1,8 +1,15 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Schema(description = "管理后台 - 日志实例的拓展 Response VO")
|
||||
@Data
|
||||
@ -10,6 +17,7 @@ import lombok.Data;
|
||||
public class LogInstanceRespVO {
|
||||
|
||||
@Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "20649")
|
||||
@JsonSerialize(using = ToStringSerializer.class)
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "日志发起人的用户编号", example = "146")
|
||||
@ -36,13 +44,21 @@ public class LogInstanceRespVO {
|
||||
@Schema(description = "模板值")
|
||||
private String formVariables;
|
||||
|
||||
@Schema(description = "工作日志内容(部分)")
|
||||
@Schema(description = "工作日志内容(部分) | 分页列表使用")
|
||||
private String workLogContent;
|
||||
|
||||
@Schema(description = "工作日志内容详情")
|
||||
private List<Map<String, String>> logDetail;
|
||||
|
||||
@Schema(description = "附件信息")
|
||||
private String fileItems ;
|
||||
|
||||
@Schema(description = "日志日期")
|
||||
private String time;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private String createTime;
|
||||
|
||||
@Schema(description = "阅读状态, 0:未读、1:已读", example = "0")
|
||||
|
@ -35,4 +35,6 @@ public class LogInstanceSaveReqVO {
|
||||
@Schema(description = "附件信息")
|
||||
private List<UploadUserFile> fileItems ;
|
||||
|
||||
@Schema(description = "日志详情,日期的值 | yyyy-MM-dd", example = "2024-04-14")
|
||||
private String time;
|
||||
}
|
@ -1,12 +1,15 @@
|
||||
package cn.iocoder.yudao.module.system.convert.worklog;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
/**
|
||||
* 日志详情 Convert
|
||||
*
|
||||
@ -19,8 +22,14 @@ public interface LogInstanceConvert {
|
||||
|
||||
LogInstanceDO convert(LogInstanceSaveReqVO bean);
|
||||
|
||||
default LogInstanceRespVO convert(LogInstanceDO logInstanceDO) {
|
||||
|
||||
LogInstanceRespVO convert(LogInstanceDO bean);
|
||||
LogInstanceRespVO logInstanceRespVO = BeanUtils.toBean(logInstanceDO, LogInstanceRespVO.class);
|
||||
|
||||
PageResult<LogInstanceRespVO> convertPage(PageResult<LogInstanceDO> page);
|
||||
logInstanceRespVO.setFormVariables(JSONObject.toJSONString(logInstanceDO.getFormVariables()));
|
||||
logInstanceRespVO.setFileItems(JSONObject.toJSONString(logInstanceDO.getFileItems()));
|
||||
logInstanceRespVO.setCreateTime(logInstanceDO.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
|
||||
return logInstanceRespVO;
|
||||
}
|
||||
}
|
||||
|
@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.system.dal.mysql.worklog;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.WorkLogStatisticsModelVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@ -19,10 +19,9 @@ public interface LogFormMapper extends BaseMapperX<LogFormDO> {
|
||||
.orderByDesc("id"));
|
||||
}
|
||||
|
||||
default PageResult<LogFormDO> selectPageByRule(LogFormPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new QueryWrapperX<LogFormDO>()
|
||||
.likeIfPresent("name", reqVO.getName())
|
||||
.isNotNull("rule_id")
|
||||
.orderByDesc("id"));
|
||||
default PageResult<LogFormDO> selectPageByRule(LogFormPageReqVO reqVO, List<Long> formIds) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<LogFormDO>()
|
||||
.in(LogFormDO::getId, formIds)
|
||||
.orderByDesc(LogFormDO::getId));
|
||||
}
|
||||
}
|
||||
|
@ -22,15 +22,20 @@ import java.util.List;
|
||||
public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
|
||||
|
||||
|
||||
default List<LogInstanceDO> getUpLog(Long userId, Integer type){
|
||||
default List<LogInstanceDO> getUpLog(Long userId, Long formId, Integer type){
|
||||
|
||||
return selectList(new LambdaQueryWrapperX<LogInstanceDO>()
|
||||
.eq(LogInstanceDO::getStartUserId, userId)
|
||||
.eq(LogInstanceDO::getType, type)
|
||||
.eqIfPresent(LogInstanceDO::getFormId, formId)
|
||||
.eqIfPresent(LogInstanceDO::getType, type)
|
||||
.orderByDesc(LogInstanceDO::getCreateTime));
|
||||
}
|
||||
|
||||
IPage<LogInstanceRespVO> selectPageResult(@Param("page")Page<LogInstanceRespVO> page, @Param("reqVO")LogInstancePageReqVO reqVO, @Param("userId")Long userId);
|
||||
IPage<LogInstanceRespVO> selectPageResult(@Param("page")Page<LogInstanceRespVO> page, @Param("reqVO")LogInstancePageReqVO reqVO,
|
||||
@Param("userId")Long userId, @Param("pagingType") Integer pagingType, @Param("logId")Long logId);
|
||||
|
||||
LogInstanceRespVO selectPageResult(@Param("reqVO")LogInstancePageReqVO reqVO, @Param("userId")Long userId,
|
||||
@Param("pagingType") Integer pagingType, @Param("logId")Long logId);
|
||||
|
||||
List<LogReadUserRespDTO> selectRaedUser(Long deptId);
|
||||
}
|
@ -1,9 +1,12 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.worklog;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogReadDo;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 日志查看 Mapper
|
||||
*
|
||||
@ -11,4 +14,19 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
*/
|
||||
@Mapper
|
||||
public interface LogReadMapper extends BaseMapperX<LogReadDo> {
|
||||
|
||||
default List<LogReadDo> selectUserByLogId(Long logId, Integer readStatus) {
|
||||
|
||||
return selectList(new LambdaQueryWrapperX<LogReadDo>()
|
||||
.eq(LogReadDo::getLogInstanceId, logId)
|
||||
.eq(LogReadDo::getReadStatus, readStatus));
|
||||
}
|
||||
|
||||
default void updateReadStatus(Long logId, Long userId){
|
||||
|
||||
update(new LogReadDo().setReadStatus(1),
|
||||
new LambdaQueryWrapperX<LogReadDo>()
|
||||
.eq(LogReadDo::getLogInstanceId, logId)
|
||||
.eq(LogReadDo::getReadUserId, userId));
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.worklog;
|
||||
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogUseDO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@ -29,5 +30,12 @@ public interface LogUseMapper extends BaseMapperX<LogUseDO> {
|
||||
.in(LogUseDO::getUseUserId, userIds));
|
||||
}
|
||||
|
||||
default Long getCountByUser(Long formId, Long userId){
|
||||
|
||||
return selectCount(new LambdaQueryWrapperX<LogUseDO>()
|
||||
.eq(LogUseDO::getUseUserId, userId)
|
||||
.eq(LogUseDO::getFormId, formId));
|
||||
}
|
||||
|
||||
List<Long> getDeptByFormId(Long formId);
|
||||
}
|
@ -25,6 +25,7 @@ import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
||||
import cn.iocoder.yudao.module.system.service.dept.PostService;
|
||||
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
|
||||
import cn.iocoder.yudao.module.system.service.tenant.TenantService;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -74,6 +75,9 @@ public class AdminUserServiceImpl implements AdminUserService {
|
||||
@Resource
|
||||
private UserPostMapper userPostMapper;
|
||||
|
||||
@Resource
|
||||
private LogInstanceService logInstanceService;
|
||||
|
||||
@Resource
|
||||
private FileApi fileApi;
|
||||
|
||||
|
@ -18,6 +18,7 @@ import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
|
||||
/**
|
||||
* 动态表单 Service 实现类
|
||||
@ -31,6 +32,9 @@ public class LogFormServiceImpl implements LogFormService{
|
||||
@Resource
|
||||
private LogFormMapper formMapper;
|
||||
|
||||
@Resource
|
||||
private LogUseService logUseService;
|
||||
|
||||
@Override
|
||||
public Long createForm(LogFormCreateReqVO createReqVO) {
|
||||
this.checkFields(createReqVO.getFields());
|
||||
@ -87,7 +91,13 @@ public class LogFormServiceImpl implements LogFormService{
|
||||
|
||||
@Override
|
||||
public PageResult<LogFormDO> getFormPageByRule(LogFormPageReqVO pageReqVO) {
|
||||
return formMapper.selectPageByRule(pageReqVO);
|
||||
|
||||
List<Long> formIds = logUseService.getFormIdByUserId(getLoginUserId());
|
||||
if (formIds.isEmpty()) {
|
||||
|
||||
return null;
|
||||
}
|
||||
return formMapper.selectPageByRule(pageReqVO, formIds);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -45,7 +45,7 @@ public interface LogInstanceService {
|
||||
* @param id 编号
|
||||
* @return 日志实例的拓展
|
||||
*/
|
||||
LogInstanceDO getLogInstance(Long id);
|
||||
LogInstanceRespVO getLogInstance(Long id);
|
||||
|
||||
/**
|
||||
* 获得日志实例分页
|
||||
@ -53,7 +53,7 @@ public interface LogInstanceService {
|
||||
* @param pageReqVO 分页查询
|
||||
* @return 日志实例的拓展分页
|
||||
*/
|
||||
IPage<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO);
|
||||
IPage<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType);
|
||||
|
||||
/**
|
||||
* 获得我收到的日志页面中的部门列表
|
||||
@ -63,5 +63,7 @@ public interface LogInstanceService {
|
||||
/**
|
||||
* 获取上一篇日志
|
||||
*/
|
||||
LogInstanceDO getUpLog(Integer type);
|
||||
LogInstanceDO getUpLog(Long formId, Integer type);
|
||||
|
||||
LogInstanceRespVO setContentFun(LogInstanceRespVO logInstanceRespVO);
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package cn.iocoder.yudao.module.system.service.worklog;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.json.JSONObject;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO;
|
||||
@ -25,18 +24,15 @@ import org.springframework.validation.annotation.Validated;
|
||||
import javax.annotation.Resource;
|
||||
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.Date;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LOG_INSTANCE_NOT_EXISTS;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LOG_RULE_NOT_FIND;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||
|
||||
/**
|
||||
* 日志实例的拓展 Service 实现类
|
||||
@ -54,11 +50,14 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
private DeptService deptService;
|
||||
|
||||
@Resource
|
||||
private LogRuleService logRuleService;
|
||||
private LogUseService logUseService;
|
||||
|
||||
@Resource
|
||||
private LogFormService logFormService;
|
||||
|
||||
@Resource
|
||||
private LogRuleService logRuleService;
|
||||
|
||||
@Resource
|
||||
private AdminUserService adminUserService;
|
||||
|
||||
@ -75,13 +74,16 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
|
||||
//获取日志类型
|
||||
LogFormDO logFormDo = logFormService.getForm(createReqVO.getFormId());
|
||||
LogRuleDO logRuleDO = logRuleService.getLogRule(logFormDo.getRuleId());
|
||||
if (logRuleDO == null) {
|
||||
throw exception(LOG_RULE_NOT_FIND);
|
||||
|
||||
Long count = logUseService.getCountByUser(logFormDo.getId(), getLoginUserId());
|
||||
if (count == 0L) {
|
||||
throw exception(LOG_FORM_NOT_USE);
|
||||
}
|
||||
|
||||
//获取部门信息
|
||||
AdminUserDO adminUserDO = adminUserService.getUser(getLoginUserId());
|
||||
//获取规则信息
|
||||
LogRuleDO logRuleDO = logRuleService.getLogRule(logFormDo.getRuleId());
|
||||
|
||||
//设置发起人用户编号
|
||||
logInstance.setStartUserId(getLoginUserId());
|
||||
@ -95,8 +97,8 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
logInstance.setType(logRuleDO.getType());
|
||||
//设置日志名称
|
||||
logInstance.setName(adminUserDO.getNickname() + "的" + logFormDo.getName());
|
||||
//设置时间
|
||||
logInstance.setTime(DateUtil.format(new Date(),"yyyy-MM-dd"));
|
||||
//设置日志日期
|
||||
logInstance.setTime(createReqVO.getTime());
|
||||
|
||||
// 插入
|
||||
logInstanceMapper.insert(logInstance);
|
||||
@ -112,51 +114,55 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
return logInstance.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验当前日志类型的日志 是否已提交过
|
||||
*/
|
||||
private void validateLogInstanceByType(LogInstanceSaveReqVO createReqVO) {
|
||||
|
||||
LogInstanceDO logInstanceDO = getUpLog(createReqVO.getType());
|
||||
if (logInstanceDO != null) {
|
||||
LogInstanceDO logInstanceDO = getUpLog(null, createReqVO.getType());
|
||||
if (logInstanceDO == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
LocalDate oldTime = logInstanceDO.getCreateTime().toLocalDate();
|
||||
LocalDate nowTime = LocalDate.now();
|
||||
LocalDate oldTime = LocalDate.parse(logInstanceDO.getTime());
|
||||
LocalDate nowTime = LocalDate.now();
|
||||
|
||||
//根据日志类型判断
|
||||
switch (createReqVO.getType()){
|
||||
//根据日志类型判断
|
||||
switch (createReqVO.getType()){
|
||||
|
||||
//日志类型为日报
|
||||
case 1:
|
||||
if (oldTime.equals(nowTime)) {
|
||||
//日志类型为日报
|
||||
case 1:
|
||||
if (oldTime.equals(nowTime)) {
|
||||
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, createReqVO.getType());
|
||||
}
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "日报");
|
||||
}
|
||||
//日志类型为周报
|
||||
case 2:
|
||||
WeekFields weekFields = WeekFields.of(Locale.getDefault());
|
||||
case 2:
|
||||
WeekFields weekFields = WeekFields.of(Locale.getDefault());
|
||||
|
||||
// 获取两个日期所属的周数和年份
|
||||
int oldWeek = oldTime.get(weekFields.weekOfWeekBasedYear());
|
||||
int oldYear = oldTime.get(weekFields.weekBasedYear());
|
||||
// 获取两个日期所属的周数和年份
|
||||
int oldWeek = oldTime.get(weekFields.weekOfWeekBasedYear());
|
||||
int oldYear = oldTime.get(weekFields.weekBasedYear());
|
||||
|
||||
int nowWeek = nowTime.get(weekFields.weekOfWeekBasedYear());
|
||||
int nowYear = nowTime.get(weekFields.weekBasedYear());
|
||||
int nowWeek = nowTime.get(weekFields.weekOfWeekBasedYear());
|
||||
int nowYear = nowTime.get(weekFields.weekBasedYear());
|
||||
|
||||
if (oldWeek == nowWeek && oldYear == nowYear) {
|
||||
if (oldWeek == nowWeek && oldYear == nowYear) {
|
||||
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, createReqVO.getType());
|
||||
}
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "周报");
|
||||
}
|
||||
//日志类型为月报
|
||||
case 3:
|
||||
if (oldTime.getYear() == nowTime.getYear() && oldTime.getMonth() == nowTime.getMonth()) {
|
||||
case 3:
|
||||
if (oldTime.getYear() == nowTime.getYear() && oldTime.getMonth() == nowTime.getMonth()) {
|
||||
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, createReqVO.getType());
|
||||
}
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "月报");
|
||||
}
|
||||
//日志类型为年报
|
||||
case 4:
|
||||
if (oldTime.getYear() == nowTime.getYear()) {
|
||||
case 4:
|
||||
if (oldTime.getYear() == nowTime.getYear()) {
|
||||
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, createReqVO.getType());
|
||||
}
|
||||
}
|
||||
throw exception(ErrorCodeConstants.LOG_TYPE_EXISTS, "年报");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,6 +170,25 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
public void updateLogInstance(LogInstanceSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validateLogInstanceExists(updateReqVO.getId());
|
||||
|
||||
//校验要修改的日志是否是当天发送的
|
||||
LogInstanceDO logInstanceDO = logInstanceMapper.selectById(updateReqVO.getId());
|
||||
if (!logInstanceDO.getCreateTime().toLocalDate().equals(LocalDate.now())) {
|
||||
|
||||
throw exception(LOG_NOT_DATE);
|
||||
}
|
||||
|
||||
LogRuleDO logRuleDO = logRuleService.getLogRuleByFormId(updateReqVO.getFormId());
|
||||
String endTime = logRuleDO.getEndTime();
|
||||
if (logRuleDO.getType() != 1) {
|
||||
|
||||
endTime = endTime.split(",")[1];
|
||||
}
|
||||
|
||||
if (LocalTime.now().isBefore(LocalTime.parse(endTime))) {
|
||||
throw exception(LOG_NOT_UPDATE);
|
||||
}
|
||||
|
||||
// 更新
|
||||
LogInstanceDO updateObj = BeanUtils.toBean(updateReqVO, LogInstanceDO.class);
|
||||
logInstanceMapper.updateById(updateObj);
|
||||
@ -184,15 +209,20 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogInstanceDO getLogInstance(Long id) {
|
||||
return logInstanceMapper.selectById(id);
|
||||
public LogInstanceRespVO getLogInstance(Long id) {
|
||||
|
||||
//获取日志详情
|
||||
LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id);
|
||||
|
||||
//设置日志详情 模板内容和时间
|
||||
return setContentFun(logInstanceRespVO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO) {
|
||||
public IPage<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType) {
|
||||
|
||||
Page<LogInstanceRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
||||
IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId());
|
||||
IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, null);
|
||||
|
||||
List<LogInstanceRespVO> records = pageList.getRecords();
|
||||
if (!records.isEmpty()) {
|
||||
@ -228,11 +258,11 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
LocalDateTime createTime = LocalDateTime.parse(item.getCreateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
//日志创建时间是当前日期时
|
||||
if (createTime.toLocalDate().equals(nowDate)) {
|
||||
item.setCreateTime("今日 " + createTime.getHour() + ":" + createTime.getMinute());
|
||||
item.setCreateTime("今日 " + createTime.toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")));
|
||||
}
|
||||
//日志创建时间是当前日期前一天时
|
||||
if (createTime.toLocalDate().equals(nowDate.minusDays(1))) {
|
||||
item.setCreateTime("昨日 " + createTime.getHour() + ":" + createTime.getMinute());
|
||||
item.setCreateTime("昨日 " + createTime.toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -253,14 +283,56 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogInstanceDO getUpLog(Integer type) {
|
||||
public LogInstanceDO getUpLog(Long formId, Integer type) {
|
||||
|
||||
LogInstanceDO logInstanceDO = new LogInstanceDO();
|
||||
|
||||
List<LogInstanceDO> logInstanceDOS = logInstanceMapper.getUpLog(getLoginUserId(), type);
|
||||
List<LogInstanceDO> logInstanceDOS = logInstanceMapper.getUpLog(getLoginUserId(), formId, type);
|
||||
if (!logInstanceDOS.isEmpty()) {
|
||||
logInstanceDO = logInstanceDOS.get(0);
|
||||
|
||||
return logInstanceDOS.get(0);
|
||||
}
|
||||
return logInstanceDO;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogInstanceRespVO setContentFun(LogInstanceRespVO logInstanceRespVO) {
|
||||
|
||||
if (logInstanceRespVO.getFormId() == null) {
|
||||
return logInstanceRespVO;
|
||||
}
|
||||
//获取模板信息
|
||||
LogFormDO logFormDO = logFormService.getForm(logInstanceRespVO.getFormId());
|
||||
List<String> fields = logFormDO.getFields();
|
||||
List<Map<String, String>> logDetail = new ArrayList<>();
|
||||
|
||||
if (!logInstanceRespVO.getFormVariables().isEmpty()) {
|
||||
JSONObject workLogContentJson = new JSONObject(logInstanceRespVO.getFormVariables());
|
||||
for (String fieldItem : fields) {
|
||||
Map<String, String> detail = new HashMap<>();
|
||||
|
||||
JSONObject fieldJson = new JSONObject(fieldItem);
|
||||
String fieldStr = fieldJson.getStr("field");
|
||||
String title = fieldJson.getStr("title");
|
||||
String field = workLogContentJson.getStr(fieldStr);
|
||||
|
||||
detail.put("title", title);
|
||||
detail.put("value", field);
|
||||
logDetail.add(detail);
|
||||
}
|
||||
logInstanceRespVO.setLogDetail(logDetail);
|
||||
}
|
||||
//设置时间
|
||||
LocalDate nowDate = LocalDate.now();
|
||||
LocalDateTime createTime = LocalDateTime.parse(logInstanceRespVO.getCreateTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
//日志创建时间是当前日期时
|
||||
if (createTime.toLocalDate().equals(nowDate)) {
|
||||
logInstanceRespVO.setCreateTime("今日 " + createTime.toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")));
|
||||
}
|
||||
//日志创建时间是当前日期前一天时
|
||||
if (createTime.toLocalDate().equals(nowDate.minusDays(1))) {
|
||||
logInstanceRespVO.setCreateTime("昨日 " + createTime.toLocalTime().format(DateTimeFormatter.ofPattern("HH:mm")));
|
||||
}
|
||||
|
||||
return logInstanceRespVO;
|
||||
}
|
||||
}
|
@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.system.service.worklog.dto.LogReadUserRespDTO;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 日志查看 Service 接口
|
||||
@ -19,4 +20,18 @@ public interface LogReadService {
|
||||
* @param createReqVO 创建信息
|
||||
*/
|
||||
void createLogRule(@Valid List<LogReadUserRespDTO> createReqVO, Long logInstanceId, Long startUserId);
|
||||
|
||||
/**
|
||||
* 获取日志可查看的用户编号组
|
||||
* @param logId 日志编号
|
||||
* @return 阅读状态,用户编号组
|
||||
*/
|
||||
Map<Integer, List<Long>> getUserId(Long logId);
|
||||
|
||||
/**
|
||||
* 更新日志阅读状态
|
||||
* @param logId 日志编号
|
||||
* @param userId 查看者用户编号
|
||||
*/
|
||||
void updateReadStatus(Long logId, Long userId);
|
||||
}
|
||||
|
@ -7,9 +7,13 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||
|
||||
/**
|
||||
* 日志查看 Service 实现类
|
||||
*
|
||||
@ -39,4 +43,24 @@ public class LogReadServiceImpl implements LogReadService{
|
||||
|
||||
logReadMapper.insertBatch(userInfoList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Integer, List<Long>> getUserId(Long logId) {
|
||||
|
||||
Map<Integer, List<Long>> readDoMap = new HashMap<>();
|
||||
|
||||
List<LogReadDo> UnReadDos = logReadMapper.selectUserByLogId(logId, 0);
|
||||
List<LogReadDo> readDos = logReadMapper.selectUserByLogId(logId, 1);
|
||||
|
||||
readDoMap.put(0, convertList(UnReadDos, LogReadDo::getReadUserId));
|
||||
readDoMap.put(1, convertList(readDos, LogReadDo::getReadUserId));
|
||||
|
||||
return readDoMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateReadStatus(Long logId, Long userId) {
|
||||
|
||||
logReadMapper.updateReadStatus(logId, userId);
|
||||
}
|
||||
}
|
||||
|
@ -45,6 +45,14 @@ public interface LogRuleService {
|
||||
*/
|
||||
LogRuleDO getLogRule(Long id);
|
||||
|
||||
/**
|
||||
* 获得日志规则
|
||||
*
|
||||
* @param formId 模板编号
|
||||
* @return 日志规则
|
||||
*/
|
||||
LogRuleDO getLogRuleByFormId(Long formId);
|
||||
|
||||
/**
|
||||
* 获得日志规则分页
|
||||
*
|
||||
|
@ -106,6 +106,11 @@ public class LogRuleServiceImpl implements LogRuleService {
|
||||
return logRuleMapper.selectById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LogRuleDO getLogRuleByFormId(Long formId) {
|
||||
return logRuleMapper.selectOne(LogRuleDO::getFormId, formId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<LogRuleDO> getLogRulePage(LogRulePageReqVO pageReqVO) {
|
||||
return logRuleMapper.selectPage(pageReqVO);
|
||||
|
@ -41,4 +41,19 @@ public interface LogUseService {
|
||||
* @return 日志模板使用者的部门编号组
|
||||
*/
|
||||
List<Long> getUserByFormId(Long formId);
|
||||
|
||||
/**
|
||||
* 根据使用者编号和模板编号,查询模板数量
|
||||
* @param formId 模板编号
|
||||
* @param userId 用户编号
|
||||
* @return 数量
|
||||
*/
|
||||
Long getCountByUser(Long formId, Long userId);
|
||||
|
||||
/**
|
||||
* 获取我可以使用的模板编号组
|
||||
* @param userId 用户编号
|
||||
* @return 日志模板编号组
|
||||
*/
|
||||
List<Long> getFormIdByUserId(Long userId);
|
||||
}
|
@ -74,4 +74,17 @@ public class LogUseServiceImpl implements LogUseService {
|
||||
List<LogUseDO> logUseDOS = logUseMapper.selectList(LogUseDO::getFormId, formId);
|
||||
return convertList(logUseDOS, LogUseDO::getUseUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long getCountByUser(Long formId, Long userId) {
|
||||
|
||||
return logUseMapper.getCountByUser(formId, userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Long> getFormIdByUserId(Long userId) {
|
||||
|
||||
List<LogUseDO> logUseDOS = logUseMapper.selectList(LogUseDO::getUseUserId, userId);
|
||||
return convertList(logUseDOS, LogUseDO::getFormId);
|
||||
}
|
||||
}
|
@ -92,12 +92,15 @@
|
||||
COUNT(d.log_instance_id) AS unreadCount
|
||||
FROM
|
||||
work_log_instance_ext as a
|
||||
LEFT JOIN work_log_comment as b ON a.start_user_id = b.user_id
|
||||
LEFT JOIN work_log_comment as b ON a.id = b.work_log_id
|
||||
LEFT JOIN work_log_read as e ON a.id = e.log_instance_id and e.read_user_id = #{userId}
|
||||
LEFT JOIN work_log_read as c ON a.id = c.log_instance_id and c.read_status = 1
|
||||
LEFT JOIN work_log_read as d ON a.id = d.log_instance_id and d.read_status = 0
|
||||
where
|
||||
1=1
|
||||
<if test="logId != null">
|
||||
and a.id = #{logId}
|
||||
</if>
|
||||
<if test="reqVO.type != null">
|
||||
and a.type = #{reqVO.type}
|
||||
</if>
|
||||
@ -116,10 +119,10 @@
|
||||
<if test="reqVO.unRead != null">
|
||||
and e.read_status = 0
|
||||
</if>
|
||||
<if test="reqVO.pagingType == 0">
|
||||
<if test="pagingType == 0">
|
||||
and a.start_user_id != #{userId}
|
||||
</if>
|
||||
<if test="reqVO.pagingType == 1">
|
||||
<if test="pagingType == 1">
|
||||
and a.start_user_id = #{userId}
|
||||
</if>
|
||||
GROUP BY a.id,e.read_status
|
||||
|
Loading…
Reference in New Issue
Block a user