Merge branch 'dev' into frx
This commit is contained in:
commit
40a568cd4e
@ -171,6 +171,11 @@ public interface ErrorCodeConstants {
|
|||||||
// ========== 站内信发送 1-002-028-000 ==========
|
// ========== 站内信发送 1-002-028-000 ==========
|
||||||
ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
|
ErrorCode NOTIFY_SEND_TEMPLATE_PARAM_MISS = new ErrorCode(1_002_028_000, "模板参数({})缺失");
|
||||||
|
|
||||||
|
ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在");
|
||||||
|
ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1_009_010_001, "表单项({}) 和 ({}) 使用了相同的字段名({})");
|
||||||
|
ErrorCode LOG_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_010_002, "日志实例的拓展不存在");
|
||||||
|
|
||||||
|
ErrorCode LOG_RULE_NOT_EXISTS = new ErrorCode(1_009_010_003, "日志规则不存在");
|
||||||
// ========== 站内信发送 1-003-001-000 ==========
|
// ========== 站内信发送 1-003-001-000 ==========
|
||||||
ErrorCode SCHEDULING_NOT_EXISTS = new ErrorCode(1_003_001_000, "排班制考勤设置不存在");
|
ErrorCode SCHEDULING_NOT_EXISTS = new ErrorCode(1_003_001_000, "排班制考勤设置不存在");
|
||||||
ErrorCode PUNCH_RECORD_NOT_EXISTS = new ErrorCode(1_003_002_000, "用户打卡记录不存在");
|
ErrorCode PUNCH_RECORD_NOT_EXISTS = new ErrorCode(1_003_002_000, "用户打卡记录不存在");
|
||||||
@ -178,11 +183,6 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode GROUP_SHIFT_NOT_EXISTS = new ErrorCode(1_003_004_000, "考勤组班次不存在");
|
ErrorCode GROUP_SHIFT_NOT_EXISTS = new ErrorCode(1_003_004_000, "考勤组班次不存在");
|
||||||
ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_003_005_000, "考勤组不存在");
|
ErrorCode GROUP_NOT_EXISTS = new ErrorCode(1_003_005_000, "考勤组不存在");
|
||||||
ErrorCode FIXED_NOT_EXISTS = new ErrorCode(1_003_006_000, "固定班制考勤设置");
|
ErrorCode FIXED_NOT_EXISTS = new ErrorCode(1_003_006_000, "固定班制考勤设置");
|
||||||
ErrorCode FORM_NOT_EXISTS = new ErrorCode(1_009_010_000, "动态表单不存在");
|
|
||||||
ErrorCode FORM_FIELD_REPEAT = new ErrorCode(1_009_010_001, "表单项({}) 和 ({}) 使用了相同的字段名({})");
|
|
||||||
ErrorCode LOG_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_010_002, "日志实例的拓展不存在");
|
|
||||||
|
|
||||||
ErrorCode LOG_RULE_NOT_EXISTS = new ErrorCode(1_009_010_003, "日志规则不存在");
|
|
||||||
|
|
||||||
ErrorCode LOG_RULE_NOT_FIND = new ErrorCode(1_009_010_004, "该模板没配置规则");
|
ErrorCode LOG_RULE_NOT_FIND = new ErrorCode(1_009_010_004, "该模板没配置规则");
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package cn.iocoder.yudao.module.system.controller.admin.auth;
|
package cn.iocoder.yudao.module.system.controller.admin.auth;
|
||||||
|
|
||||||
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
|
||||||
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
||||||
@ -27,7 +26,6 @@ import io.swagger.v3.oas.annotations.Parameter;
|
|||||||
import io.swagger.v3.oas.annotations.Parameters;
|
import io.swagger.v3.oas.annotations.Parameters;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.ibatis.annotations.Param;
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.admin.worklog;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.WorkLogStatisticsModelDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.form.LogFormUpdateReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.WorkLogStatisticsModelVO;
|
||||||
|
import cn.iocoder.yudao.module.system.service.worklog.WorkLogStatisticsService;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 工作日志统计")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/system/worklog/statistics")
|
||||||
|
@Validated
|
||||||
|
public class WorkLogStatisticsController {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WorkLogStatisticsService workLogStatisticsService;
|
||||||
|
|
||||||
|
@GetMapping("/myManageModel")
|
||||||
|
@Operation(summary = "获取我管理的模版")
|
||||||
|
public CommonResult<List<WorkLogStatisticsModelVO>> myManageModel(@ModelAttribute WorkLogStatisticsModelDTO dto) {
|
||||||
|
return success(workLogStatisticsService.myManageModel(dto));
|
||||||
|
}
|
||||||
|
|
||||||
|
// @PutMapping("/update")
|
||||||
|
// @Operation(summary = "更新动态表单")
|
||||||
|
// @PreAuthorize("@ss.hasPermission('worklog:form:update')")
|
||||||
|
// public CommonResult<Boolean> updateForm(@Valid @RequestBody LogFormUpdateReqVO updateReqVO) {
|
||||||
|
// formService.updateForm(updateReqVO);
|
||||||
|
// return success(true);
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.validation.constraints.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态表单 Base VO,提供给添加、修改、详细的子 VO 使用
|
||||||
|
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class WorkLogStatisticsModelDTO {
|
||||||
|
|
||||||
|
@Schema(description = "表单名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋道")
|
||||||
|
@NotNull(message = "表单名称不能为空")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "日志绑定规则编号", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "1")
|
||||||
|
private String ruleId;
|
||||||
|
|
||||||
|
@Schema(description = "表单状态-参见 CommonStatusEnum 枚举", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
@NotNull(message = "表单状态不能为空")
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
@Schema(description = "备注", example = "我是备注")
|
||||||
|
private String remark;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 动态表单 Base VO,提供给添加、修改、详细的子 VO 使用
|
||||||
|
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class WorkLogStatisticsModelVO extends LogFormDO {
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,50 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.service.comment.WorkLogCommentService;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||||
|
|
||||||
|
@Tag(name = "管理后台 - 工作日志评论")
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/system/work-log-comment")
|
||||||
|
@Validated
|
||||||
|
public class WorkLogCommentController {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private WorkLogCommentService workLogCommentService;
|
||||||
|
|
||||||
|
@Operation(summary = "用户工作日志评论-分页查询评论列表")
|
||||||
|
@GetMapping(value = "/queryCommentPageList")
|
||||||
|
public CommonResult<IPage<CommentPageListVO>> queryCommentPageList(CommentDTO dto,
|
||||||
|
@RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
|
||||||
|
@RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
|
||||||
|
Page<CommentPageListVO> page = new Page<>(pageNo, pageSize);
|
||||||
|
IPage<CommentPageListVO> pageList = workLogCommentService.queryCommentPageList(page, dto);
|
||||||
|
return success(pageList);
|
||||||
|
}
|
||||||
|
|
||||||
|
@PostMapping("/create")
|
||||||
|
@Operation(summary = "创建工作日志评论")
|
||||||
|
public CommonResult<Long> createWorkLogComment(@RequestBody WorkLogCommentSaveReqVO createReqVO) {
|
||||||
|
return success(workLogCommentService.createWorkLogComment(createReqVO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/queryCommentTypeCount")
|
||||||
|
@Operation(summary = "获取评论类型数量")
|
||||||
|
public CommonResult<CommentTypeCountVO> queryCommentTypeCount() {
|
||||||
|
return success(workLogCommentService.queryCommentTypeCount());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.dto;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CommentDTO {
|
||||||
|
@Schema(description = "工作日志id")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long workLogId;
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评")
|
||||||
|
private Integer type;
|
||||||
|
@Schema(description = "是否需要显示日志内容 0否 1是 默认否")
|
||||||
|
private Integer isShowWorkLogContent;
|
||||||
|
|
||||||
|
@Schema(description = "是否查看自己的评论记录 0否 1是")
|
||||||
|
private Integer checkMyselfFlag;
|
||||||
|
|
||||||
|
@Schema(description = "用户id")
|
||||||
|
private Long userId;
|
||||||
|
}
|
@ -0,0 +1,53 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CommentPageListVO {
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
@Schema(description = "id")
|
||||||
|
private Long id;
|
||||||
|
@Schema(description = "工作日志ID")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long workLogId;
|
||||||
|
@Schema(description = "评论用户ID")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long userId;
|
||||||
|
@Schema(description = "评论用户头像")
|
||||||
|
private String avatar;
|
||||||
|
@Schema(description = "评论用户名称")
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID")
|
||||||
|
@JsonSerialize(using = ToStringSerializer.class)
|
||||||
|
private Long commentUserId;
|
||||||
|
@Schema(description = "被评论用户头像")
|
||||||
|
private String commentAvatar;
|
||||||
|
@Schema(description = "被评论用户名称")
|
||||||
|
private String commentUserName;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
private String comment;
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)")
|
||||||
|
private Integer type;
|
||||||
|
|
||||||
|
@Schema(description = "被回评内容")
|
||||||
|
private String replyComment;
|
||||||
|
|
||||||
|
@Schema(description = "工作日志内容(部分)")
|
||||||
|
private String workLogContent;
|
||||||
|
@Schema(description = "工作日志名称")
|
||||||
|
private String workLogName;
|
||||||
|
@Schema(description = "工作日志模版id")
|
||||||
|
private Long workFormId;
|
||||||
|
|
||||||
|
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
@Schema(description = "创建日期")
|
||||||
|
private String createTime;
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class CommentTypeCountVO {
|
||||||
|
|
||||||
|
@Schema(description = "全部数量")
|
||||||
|
private Integer allNum;
|
||||||
|
@Schema(description = "评论数量")
|
||||||
|
private Integer commentNum;
|
||||||
|
@Schema(description = "回复数量")
|
||||||
|
private Integer replyNum;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 工作日志评论分页 Request VO")
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
public class WorkLogCommentPageReqVO extends PageParam {
|
||||||
|
|
||||||
|
@Schema(description = "动态ID", example = "26393")
|
||||||
|
private Long workLogId;
|
||||||
|
|
||||||
|
@Schema(description = "评论ID(回复评论的ID)", example = "25541")
|
||||||
|
private Long commentId;
|
||||||
|
|
||||||
|
@Schema(description = "评论用户ID", example = "17082")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID", example = "22388")
|
||||||
|
private Long commentUserId;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)", example = "1")
|
||||||
|
private Boolean type;
|
||||||
|
|
||||||
|
@Schema(description = "楼栋标识")
|
||||||
|
private String buildingCode;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间")
|
||||||
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
private LocalDateTime[] createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.*;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.alibaba.excel.annotation.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 工作日志评论 Response VO")
|
||||||
|
@Data
|
||||||
|
@ExcelIgnoreUnannotated
|
||||||
|
public class WorkLogCommentRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21304")
|
||||||
|
@ExcelProperty("id")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "动态ID", example = "26393")
|
||||||
|
@ExcelProperty("动态ID")
|
||||||
|
private Long workLogId;
|
||||||
|
|
||||||
|
@Schema(description = "评论ID(回复评论的ID)", example = "25541")
|
||||||
|
@ExcelProperty("评论ID(回复评论的ID)")
|
||||||
|
private Long commentId;
|
||||||
|
|
||||||
|
@Schema(description = "评论用户ID", example = "17082")
|
||||||
|
@ExcelProperty("评论用户ID")
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID", example = "22388")
|
||||||
|
@ExcelProperty("被评论用户ID")
|
||||||
|
private Long commentUserId;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
@ExcelProperty("评论内容")
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)", example = "1")
|
||||||
|
@ExcelProperty("评论类型(0|评论;1|回评)")
|
||||||
|
private Boolean type;
|
||||||
|
|
||||||
|
@Schema(description = "楼栋标识")
|
||||||
|
@ExcelProperty("楼栋标识")
|
||||||
|
private String buildingCode;
|
||||||
|
|
||||||
|
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
|
@ExcelProperty("创建时间")
|
||||||
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.controller.app.comment.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import javax.validation.constraints.*;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - 工作日志评论新增/修改 Request VO")
|
||||||
|
@Data
|
||||||
|
public class WorkLogCommentSaveReqVO {
|
||||||
|
|
||||||
|
@Schema(description = "工作日志ID", example = "26393")
|
||||||
|
private Long workLogId;
|
||||||
|
|
||||||
|
@Schema(description = "评论ID(回复评论的ID)", example = "25541")
|
||||||
|
private Long commentId;
|
||||||
|
|
||||||
|
@Schema(description = "被评论用户ID", example = "22388")
|
||||||
|
private Long commentUserId;
|
||||||
|
|
||||||
|
@Schema(description = "评论内容")
|
||||||
|
private String comment;
|
||||||
|
|
||||||
|
@Schema(description = "评论类型(0|评论;1|回评)", example = "1")
|
||||||
|
private Boolean type;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.dal.dataobject.comment;
|
||||||
|
|
||||||
|
import lombok.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 DO
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@TableName("work_log_comment")
|
||||||
|
@KeySequence("work_log_comment_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@ToString(callSuper = true)
|
||||||
|
@Builder
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class WorkLogCommentDO extends BaseDO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* id
|
||||||
|
*/
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 工作日志ID
|
||||||
|
*/
|
||||||
|
private Long workLogId;
|
||||||
|
/**
|
||||||
|
* 评论ID(回复评论的ID)
|
||||||
|
*/
|
||||||
|
private Long commentId;
|
||||||
|
/**
|
||||||
|
* 评论用户ID
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 被评论用户ID
|
||||||
|
*/
|
||||||
|
private Long commentUserId;
|
||||||
|
/**
|
||||||
|
* 评论内容
|
||||||
|
*/
|
||||||
|
private String comment;
|
||||||
|
/**
|
||||||
|
* 评论类型(0|评论;1|回评)
|
||||||
|
*/
|
||||||
|
private Boolean type;
|
||||||
|
/**
|
||||||
|
* 楼栋标识
|
||||||
|
*/
|
||||||
|
private String buildingCode;
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.dal.mysql.comment;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.*;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 Mapper
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface WorkLogCommentMapper extends BaseMapperX<WorkLogCommentDO> {
|
||||||
|
|
||||||
|
default PageResult<WorkLogCommentDO> selectPage(WorkLogCommentPageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<WorkLogCommentDO>()
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getWorkLogId, reqVO.getWorkLogId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getCommentId, reqVO.getCommentId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getUserId, reqVO.getUserId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getCommentUserId, reqVO.getCommentUserId())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getComment, reqVO.getComment())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getType, reqVO.getType())
|
||||||
|
.eqIfPresent(WorkLogCommentDO::getBuildingCode, reqVO.getBuildingCode())
|
||||||
|
.betweenIfPresent(WorkLogCommentDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(WorkLogCommentDO::getId));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param page
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
IPage<CommentPageListVO> queryCommentPageList(@Param("page") Page<CommentPageListVO> page, @Param("dto") CommentDTO dto);
|
||||||
|
}
|
@ -4,9 +4,12 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
|
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.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 cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface LogFormMapper extends BaseMapperX<LogFormDO> {
|
public interface LogFormMapper extends BaseMapperX<LogFormDO> {
|
||||||
|
|
||||||
|
@ -1,16 +1,22 @@
|
|||||||
package cn.iocoder.yudao.module.system.dal.mysql.worklog;
|
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.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogUseDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogUseDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志模板使用者 Mapper
|
* 日志模板使用者 Mapper
|
||||||
*
|
*
|
||||||
* @author 符溶馨
|
* @author 艾楷
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface LogUseMapper extends BaseMapperX<LogUseDO> {
|
public interface LogUseMapper extends BaseMapperX<LogUseDO> {
|
||||||
|
/**
|
||||||
|
* 通过数据权限获取日志模版ids
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Long> getFormIdsByDataPermission();
|
||||||
}
|
}
|
@ -1,16 +1,31 @@
|
|||||||
package cn.iocoder.yudao.module.system.job.demo;
|
package cn.iocoder.yudao.module.system.job.demo;
|
||||||
|
|
||||||
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
|
import cn.iocoder.yudao.framework.tenant.core.job.TenantJob;
|
||||||
|
import com.xxl.job.core.biz.model.ReturnT;
|
||||||
|
import com.xxl.job.core.context.XxlJobContext;
|
||||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
|
@Slf4j
|
||||||
public class DemoJob {
|
public class DemoJob {
|
||||||
|
|
||||||
@XxlJob("demoJob")
|
private final AtomicInteger counts = new AtomicInteger();
|
||||||
@TenantJob
|
|
||||||
public void execute() {
|
@XxlJob("testJob")
|
||||||
System.out.println("美滋滋");
|
//@TenantJob --- ⚠️ 这个注解 会将租户列表拉出来 完了后逐个租户执行 定时任务需要注意
|
||||||
|
public ReturnT<String> execute() throws Exception {
|
||||||
|
//获取参数
|
||||||
|
XxlJobContext xxlJobContext = XxlJobContext.getXxlJobContext();
|
||||||
|
String jobParam = xxlJobContext.getJobParam();
|
||||||
|
System.out.println(jobParam);
|
||||||
|
// 打印日志
|
||||||
|
log.info("[execute][定时第 ({}) 次执行]", counts.incrementAndGet());
|
||||||
|
// 返回执行成功
|
||||||
|
return ReturnT.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,73 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.service.comment;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 Service 接口
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
public interface WorkLogCommentService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建工作日志评论
|
||||||
|
*
|
||||||
|
* @param createReqVO 创建信息
|
||||||
|
* @return 编号
|
||||||
|
*/
|
||||||
|
Long createWorkLogComment(@Valid WorkLogCommentSaveReqVO createReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新工作日志评论
|
||||||
|
*
|
||||||
|
* @param updateReqVO 更新信息
|
||||||
|
*/
|
||||||
|
void updateWorkLogComment(@Valid WorkLogCommentSaveReqVO updateReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除工作日志评论
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
*/
|
||||||
|
void deleteWorkLogComment(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得工作日志评论
|
||||||
|
*
|
||||||
|
* @param id 编号
|
||||||
|
* @return 工作日志评论
|
||||||
|
*/
|
||||||
|
WorkLogCommentDO getWorkLogComment(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获得工作日志评论分页
|
||||||
|
*
|
||||||
|
* @param pageReqVO 分页查询
|
||||||
|
* @return 工作日志评论分页
|
||||||
|
*/
|
||||||
|
PageResult<WorkLogCommentDO> getWorkLogCommentPage(WorkLogCommentPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param page
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
IPage<CommentPageListVO> queryCommentPageList(Page<CommentPageListVO> page, CommentDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取评论类型数量
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
CommentTypeCountVO queryCommentTypeCount();
|
||||||
|
}
|
@ -0,0 +1,134 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.service.comment;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import cn.hutool.json.JSONObject;
|
||||||
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.dto.CommentDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentTypeCountVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentPageReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.app.comment.vo.WorkLogCommentSaveReqVO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.comment.WorkLogCommentDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.mysql.comment.WorkLogCommentMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.service.worklog.LogFormService;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志评论 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class WorkLogCommentServiceImpl implements WorkLogCommentService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private WorkLogCommentMapper workLogCommentMapper;
|
||||||
|
@Resource
|
||||||
|
private LogFormService logFormService;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Long createWorkLogComment(WorkLogCommentSaveReqVO createReqVO) {
|
||||||
|
// 插入
|
||||||
|
WorkLogCommentDO workLogComment = BeanUtils.toBean(createReqVO, WorkLogCommentDO.class);
|
||||||
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
workLogComment.setUserId(userId);
|
||||||
|
workLogCommentMapper.insert(workLogComment);
|
||||||
|
// 返回
|
||||||
|
return workLogComment.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateWorkLogComment(WorkLogCommentSaveReqVO updateReqVO) {
|
||||||
|
// 校验存在
|
||||||
|
// validateWorkLogCommentExists(updateReqVO.getId());
|
||||||
|
// 更新
|
||||||
|
WorkLogCommentDO updateObj = BeanUtils.toBean(updateReqVO, WorkLogCommentDO.class);
|
||||||
|
workLogCommentMapper.updateById(updateObj);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteWorkLogComment(Long id) {
|
||||||
|
// 校验存在
|
||||||
|
// validateWorkLogCommentExists(id);
|
||||||
|
// 删除
|
||||||
|
workLogCommentMapper.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// private void validateWorkLogCommentExists(Long id) {
|
||||||
|
// if (workLogCommentMapper.selectById(id) == null) {
|
||||||
|
// throw exception(WORK_LOG_COMMENT_NOT_EXISTS);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public WorkLogCommentDO getWorkLogComment(Long id) {
|
||||||
|
return workLogCommentMapper.selectById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PageResult<WorkLogCommentDO> getWorkLogCommentPage(WorkLogCommentPageReqVO pageReqVO) {
|
||||||
|
return workLogCommentMapper.selectPage(pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IPage<CommentPageListVO> queryCommentPageList(Page<CommentPageListVO> page, CommentDTO dto) {
|
||||||
|
if (dto.getCheckMyselfFlag() == 1) {
|
||||||
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
dto.setUserId(userId);
|
||||||
|
}
|
||||||
|
IPage<CommentPageListVO> pageList = workLogCommentMapper.queryCommentPageList(page, dto);
|
||||||
|
List<CommentPageListVO> records = pageList.getRecords();
|
||||||
|
if (dto.getIsShowWorkLogContent() != null && dto.getIsShowWorkLogContent() == 1 && !records.isEmpty()) {
|
||||||
|
//模版ids过滤
|
||||||
|
List<Long> workFormIds = records.stream().map(CommentPageListVO::getWorkFormId).collect(Collectors.toList());
|
||||||
|
// 查询模版列表
|
||||||
|
List<LogFormDO> formList = logFormService.getFormList(workFormIds);
|
||||||
|
Map<Long, LogFormDO> formMap = formList.stream().collect(Collectors.toMap(LogFormDO::getId, item -> item));
|
||||||
|
pageList.getRecords().forEach(item -> {
|
||||||
|
LogFormDO logFormDO = formMap.get(item.getWorkFormId());
|
||||||
|
List<String> fields = logFormDO.getFields();
|
||||||
|
StringBuilder workLogContent = new StringBuilder();
|
||||||
|
if (StrUtil.isNotEmpty(item.getWorkLogContent())) {
|
||||||
|
JSONObject workLogContentJson = new JSONObject(item.getWorkLogContent());
|
||||||
|
for (String fieldItem : fields) {
|
||||||
|
JSONObject fieldJson = new JSONObject(fieldItem);
|
||||||
|
String fieldStr = fieldJson.getStr("field");
|
||||||
|
String title = fieldJson.getStr("title");
|
||||||
|
String field = workLogContentJson.getStr(fieldStr);
|
||||||
|
workLogContent.append(title).append(":").append(field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
item.setWorkLogContent(workLogContent.toString());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return pageList;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommentTypeCountVO queryCommentTypeCount() {
|
||||||
|
Long userId = WebFrameworkUtils.getLoginUserId();
|
||||||
|
CommentTypeCountVO vo = new CommentTypeCountVO();
|
||||||
|
Integer commentNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper<WorkLogCommentDO>()
|
||||||
|
.eq(WorkLogCommentDO::getUserId, userId)));
|
||||||
|
Integer replyNum = Math.toIntExact(workLogCommentMapper.selectCount(new LambdaQueryWrapper<WorkLogCommentDO>()
|
||||||
|
.eq(WorkLogCommentDO::getCommentUserId, userId)));
|
||||||
|
vo.setCommentNum(commentNum);
|
||||||
|
vo.setReplyNum(replyNum);
|
||||||
|
vo.setAllNum(commentNum + replyNum);
|
||||||
|
return vo;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.rule.LogRuleSa
|
|||||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志规则 Service 接口
|
* 日志规则 Service 接口
|
||||||
@ -52,4 +53,11 @@ public interface LogRuleService {
|
|||||||
*/
|
*/
|
||||||
PageResult<LogRuleDO> getLogRulePage(LogRulePageReqVO pageReqVO);
|
PageResult<LogRuleDO> getLogRulePage(LogRulePageReqVO pageReqVO);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过规则ids获取规则
|
||||||
|
*
|
||||||
|
* @param ruleIds
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<LogRuleDO> getLogRuleByIds(List<Long> ruleIds);
|
||||||
}
|
}
|
@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LOG_RULE_NOT_EXISTS;
|
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.LOG_RULE_NOT_EXISTS;
|
||||||
@ -67,4 +68,10 @@ public class LogRuleServiceImpl implements LogRuleService {
|
|||||||
public PageResult<LogRuleDO> getLogRulePage(LogRulePageReqVO pageReqVO) {
|
public PageResult<LogRuleDO> getLogRulePage(LogRulePageReqVO pageReqVO) {
|
||||||
return logRuleMapper.selectPage(pageReqVO);
|
return logRuleMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<LogRuleDO> getLogRuleByIds(List<Long> ruleIds) {
|
||||||
|
return logRuleMapper.selectBatchIds(ruleIds);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.service.worklog;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.WorkLogStatisticsModelDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.WorkLogStatisticsModelVO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface WorkLogStatisticsService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 我管理的工作日志统计模版
|
||||||
|
*
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<WorkLogStatisticsModelVO> myManageModel(WorkLogStatisticsModelDTO dto);
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package cn.iocoder.yudao.module.system.service.worklog;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.WorkLogStatisticsModelDTO;
|
||||||
|
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.WorkLogStatisticsModelVO;
|
||||||
|
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.dal.mysql.worklog.LogFormMapper;
|
||||||
|
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogUseMapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工作日志统计 Service 实现类
|
||||||
|
*
|
||||||
|
* @author 艾楷
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
@Validated
|
||||||
|
public class WorkLogStatisticsServiceImpl implements WorkLogStatisticsService {
|
||||||
|
@Resource
|
||||||
|
private LogFormMapper logFormMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LogRuleService logRuleService;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private LogUseMapper logUseMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<WorkLogStatisticsModelVO> myManageModel(WorkLogStatisticsModelDTO dto) {
|
||||||
|
//获取模版ids - 当前登录用户的数据权限 查看日志模板使用者表
|
||||||
|
// TODO: 2024/4/12 这里要测试下 数据权限问题
|
||||||
|
List<Long> formIds = logUseMapper.getFormIdsByDataPermission();
|
||||||
|
if (!formIds.isEmpty()) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
List<LogFormDO> formList = logFormMapper.selectList(new LambdaQueryWrapper<LogFormDO>()
|
||||||
|
.in(LogFormDO::getId, formIds)
|
||||||
|
.eq(LogFormDO::getStatus, 1)
|
||||||
|
.isNotNull(LogFormDO::getRuleId)
|
||||||
|
);
|
||||||
|
List<Long> ruleIds = formList.stream().map(LogFormDO::getRuleId).collect(Collectors.toList());
|
||||||
|
List<LogRuleDO> logRuleDOS = new ArrayList<>();
|
||||||
|
Map<Long, LogRuleDO> ruleMap = new HashMap<>();
|
||||||
|
if (CollectionUtil.isNotEmpty(ruleIds)) {
|
||||||
|
logRuleDOS = logRuleService.getLogRuleByIds(ruleIds);
|
||||||
|
ruleMap = logRuleDOS.stream().collect(Collectors.toMap(LogRuleDO::getId, v -> v));
|
||||||
|
}
|
||||||
|
for (LogFormDO logFormDO : formList) {
|
||||||
|
LogRuleDO logRuleDO = ruleMap.get(logFormDO.getRuleId());
|
||||||
|
//统计谁
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -81,7 +81,13 @@ xxl:
|
|||||||
enabled: false # 是否开启调度中心,默认为 true 开启
|
enabled: false # 是否开启调度中心,默认为 true 开启
|
||||||
admin:
|
admin:
|
||||||
addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
|
addresses: http://127.0.0.1:9090/xxl-job-admin # 调度中心部署跟地址
|
||||||
|
executor:
|
||||||
|
appname: ${spring.application.name} # 执行器 AppName
|
||||||
|
ip: # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
|
||||||
|
port: 6666 # ### 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
|
||||||
|
logpath: ${user.home}/logs/xxl-job/${spring.application.name} # 执行器运行日志文件存储磁盘路径 # 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
|
||||||
|
#accessToken: default_token
|
||||||
|
logretentiondays: 30 # 执行器日志文件保存天数 [选填] : 过期日志自动清理, 限制值大于等于3时生效; 否则, 如-1, 关闭自动清理功能;
|
||||||
--- #################### 服务保障相关配置 ####################
|
--- #################### 服务保障相关配置 ####################
|
||||||
|
|
||||||
# Lock4j 配置项
|
# Lock4j 配置项
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.comment.WorkLogCommentMapper">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||||
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||||
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
|
-->
|
||||||
|
|
||||||
|
<select id="queryCommentPageList"
|
||||||
|
resultType="cn.iocoder.yudao.module.system.controller.app.comment.vo.CommentPageListVO">
|
||||||
|
SELECT a.id,
|
||||||
|
a.work_log_id AS workLogId,
|
||||||
|
a.user_id AS userId,
|
||||||
|
c.avatar AS avatar,
|
||||||
|
c.nickname AS userName,
|
||||||
|
a.comment_user_id AS commentUserId,
|
||||||
|
d.avatar AS commentAvatar,
|
||||||
|
d.nickname AS commentUserName,
|
||||||
|
a.COMMENT AS COMMENT,
|
||||||
|
a.type AS type,
|
||||||
|
e.COMMENT AS replyComment,
|
||||||
|
<if test="dto.isShowWorkLogContent != null and dto.isShowWorkLogContent == 1">
|
||||||
|
b.name as workLogName,
|
||||||
|
b.form_variables AS workLogContent,
|
||||||
|
b.form_id as workFormId,
|
||||||
|
</if>
|
||||||
|
a.create_time AS createTime
|
||||||
|
FROM work_log_comment AS a
|
||||||
|
<if test="dto.isShowWorkLogContent != null and dto.isShowWorkLogContent == 1">
|
||||||
|
LEFT JOIN work_log_instance_ext AS b ON a.work_log_id = b.id
|
||||||
|
</if>
|
||||||
|
LEFT JOIN system_users AS c ON a.user_id = c.id
|
||||||
|
LEFT JOIN system_users AS d ON a.comment_user_id = d.id
|
||||||
|
LEFT JOIN work_log_comment AS e ON a.comment_id = e.id
|
||||||
|
|
||||||
|
<where>
|
||||||
|
<if test="dto.workLogId != null">
|
||||||
|
and a.work_log_id = #{dto.workLogId}
|
||||||
|
</if>
|
||||||
|
<if test="dto.type != null">
|
||||||
|
and a.type = #{dto.type}
|
||||||
|
</if>
|
||||||
|
<if test="dto.userId != null">
|
||||||
|
and (a.user_id = #{dto.userId} or a.comment_user_id = #{dto.userId})
|
||||||
|
</if>
|
||||||
|
</where>
|
||||||
|
ORDER BY a.create_time DESC
|
||||||
|
</select>
|
||||||
|
</mapper>
|
@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.worklog.LogFormMapper">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||||
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||||
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
@ -0,0 +1,18 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="cn.iocoder.yudao.module.system.dal.mysql.worklog.LogUseMapper">
|
||||||
|
|
||||||
|
<!--
|
||||||
|
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
|
||||||
|
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
|
||||||
|
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
|
||||||
|
文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
|
||||||
|
-->
|
||||||
|
|
||||||
|
|
||||||
|
<select id="getFormIdsByDataPermission" resultType="java.lang.Long">
|
||||||
|
select
|
||||||
|
DISTINCT form_id
|
||||||
|
from work_log_use
|
||||||
|
</select>
|
||||||
|
</mapper>
|
Loading…
Reference in New Issue
Block a user