Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
77a5ce35c8
@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo
|
||||
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.convert.worklog.LogInstanceConvert;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
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;
|
||||
@ -84,7 +85,16 @@ public class LogInstanceController {
|
||||
//查看日志详情时,变更当前用户日志的阅读状态
|
||||
logReadService.updateReadStatus(id, getLoginUserId());
|
||||
|
||||
//获取日志详情
|
||||
LogInstanceRespVO logInstance = logInstanceService.getLogInstance(id);
|
||||
|
||||
//用户日志发起人详情
|
||||
AdminUserDO userDO = adminUserService.getUser(logInstance.getStartUserId());
|
||||
//设置日志发起人名称
|
||||
logInstance.setStartUserName(userDO.getNickname());
|
||||
//设置日志发起人头像
|
||||
logInstance.setAvatar(userDO.getAvatar());
|
||||
|
||||
return success(logInstance);
|
||||
}
|
||||
|
||||
@ -145,9 +155,12 @@ public class LogInstanceController {
|
||||
|
||||
List<Map<String, Object>> readUserVO = new ArrayList<>();
|
||||
|
||||
//获取可查看者用户列表
|
||||
Map<Integer, List<Long>> usrMap = logReadService.getUserId(logId);
|
||||
|
||||
//获取未读用户详情
|
||||
List<UserRespVO> unReadUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(0)), UserRespVO.class);
|
||||
//获取已读用户详情
|
||||
List<UserRespVO> readUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(1)), UserRespVO.class);
|
||||
|
||||
Map<String, Object> unReadMap = new HashMap<>();
|
||||
|
@ -5,6 +5,7 @@ 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.worklog.dto.statistics.LogStatisticsDetailsListDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsListVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsExcelVO;
|
||||
@ -54,6 +55,13 @@ public class LogStatisticsController {
|
||||
return success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/getNeedWriteHistory")
|
||||
@Operation(summary = "获取需要填写的历史记录")
|
||||
public CommonResult<List<LogStatisticsModelVO>> getNeedWriteHistory(@ModelAttribute NeedWriteHistoryDTO dto) {
|
||||
List<LogStatisticsModelVO> list = logStatisticsService.getNeedWriteHistory(dto);
|
||||
return success(list);
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出日志规则 Excel")
|
||||
@OperateLog(type = EXPORT)
|
||||
|
@ -19,12 +19,15 @@ public class NeedWriteHistoryDTO {
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "开始时间 格式yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT)
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
|
||||
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
|
||||
private Date beginTime;
|
||||
|
||||
@Schema(description = "结束时间 格式yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY)
|
||||
@JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT)
|
||||
private Date endTime;
|
||||
|
||||
@Schema(description = "当前用户id", hidden = true)
|
||||
private Long userId;
|
||||
}
|
||||
|
@ -23,12 +23,6 @@ public class LogInstancePageReqVO extends PageParam {
|
||||
@Schema(description = "日志发起人的部门编号", example = "24292")
|
||||
private Long deptId;
|
||||
|
||||
@Schema(description = "日志发起人的用户名称", example = "张三")
|
||||
private String startUserName;
|
||||
|
||||
@Schema(description = "日志发起人的用户头像", example = "https://www.iocoder.cn/xxx.png")
|
||||
private String avatar;
|
||||
|
||||
@Schema(description = "日志实例的名字", example = "张三的XX日报")
|
||||
private String name;
|
||||
|
||||
@ -45,6 +39,6 @@ public class LogInstancePageReqVO extends PageParam {
|
||||
@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 readStatus;
|
||||
}
|
@ -24,5 +24,8 @@ public class LogStatisticsModelVO extends LogFormDO {
|
||||
|
||||
@Schema(description = "模版类型 1日报 2周报 3月报")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "时间 格式yyyy-MM-dd")
|
||||
private String time;
|
||||
}
|
||||
|
||||
|
@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
@ -41,15 +40,6 @@ public class LogInstanceDO extends BaseDO {
|
||||
*/
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 日志发起人的用户名称
|
||||
*/
|
||||
private String startUserName;
|
||||
|
||||
/**
|
||||
* 用户头像
|
||||
*/
|
||||
private String avatar;
|
||||
/**
|
||||
* 日志名称
|
||||
*/
|
||||
|
@ -60,4 +60,9 @@ public class LogStatisticsDO extends BaseDO {
|
||||
*/
|
||||
private String time;
|
||||
|
||||
/**
|
||||
* 提交时间区间(避免后面修改了规则后历史数据造成歧义)
|
||||
*/
|
||||
private String commitTimeRange;
|
||||
|
||||
}
|
@ -40,13 +40,10 @@ public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
|
||||
}
|
||||
|
||||
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);
|
||||
@Param("userId") Long userId, @Param("pagingType") Integer pagingType);
|
||||
|
||||
@DataPermission(enable = false)
|
||||
List<LogReadUserRespDTO> selectRaedUser(Long deptId);
|
||||
List<LogReadUserRespDTO> selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId);
|
||||
|
||||
/**
|
||||
* 获取上一篇下一篇
|
||||
|
@ -3,7 +3,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.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsModelVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO;
|
||||
@ -71,4 +73,13 @@ public interface LogStatisticsMapper extends BaseMapperX<LogStatisticsDO> {
|
||||
* @return
|
||||
*/
|
||||
List<LogUseVO> getMyCurrentStatistics(@Param("userId") Long userId, @Param("formId") Long formId, @Param("dateList") List<String> dateList);
|
||||
|
||||
/**
|
||||
* 获取我的日志历史记录
|
||||
*
|
||||
* @param dto
|
||||
* @param dateList
|
||||
* @return
|
||||
*/
|
||||
List<LogStatisticsModelVO> getNeedWriteHistory(@Param("dto") NeedWriteHistoryDTO dto, @Param("dateList") List<String> dateList);
|
||||
}
|
@ -98,6 +98,7 @@ public class LogStatisticsJob {
|
||||
LogRuleDO logRuleDO) {
|
||||
// -- 统计时间到了 - 判断是否已经统计过了 - 只需要统计谁没有提交就行 - 把没提交的记录插入到统计表中 - 其他的在新增日志里面就插入到统计表即可
|
||||
LogStatisticsRecordDO logStatisticsRecordDO = map.get(logFormDO.getId());
|
||||
String commitTimeRange = logStatisticsService.getCommitTimeRange(logRuleDO);
|
||||
if (logStatisticsRecordDO == null || logStatisticsRecordDO.getStatisticsFlag() == 0) {
|
||||
List<AdminUserDO> users = logStatisticsService.getUnSubmittedUser(logFormDO.getId(), thisTime);
|
||||
for (AdminUserDO user : users) {
|
||||
@ -109,6 +110,7 @@ public class LogStatisticsJob {
|
||||
logStatisticsDO.setType(logRuleDO.getType());
|
||||
logStatisticsDO.setStatus(3);
|
||||
logStatisticsDO.setTime(thisTime);
|
||||
logStatisticsDO.setCommitTimeRange(commitTimeRange);
|
||||
statisticsDOS.add(logStatisticsDO);
|
||||
}
|
||||
// -- 记录当前以统计
|
||||
|
@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo
|
||||
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.convert.worklog.LogInstanceConvert;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO;
|
||||
@ -100,10 +101,6 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
logInstance.setStartUserId(userId);
|
||||
//设置发起人部门编号
|
||||
logInstance.setDeptId(adminUserDO.getDeptId());
|
||||
//设置发起人用户名称
|
||||
logInstance.setStartUserName(adminUserDO.getNickname());
|
||||
//设置发起人用户头像
|
||||
logInstance.setAvatar(adminUserDO.getAvatar());
|
||||
//设置日志类型
|
||||
logInstance.setType(logRuleDO.getType());
|
||||
//设置日志名称
|
||||
@ -131,11 +128,22 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
.setType(logRuleDO.getType())
|
||||
.setTime(createReqVO.getTime())
|
||||
.setStatus(logInstance.getStatus())
|
||||
.setCommitTimeRange(logStatisticsService.getCommitTimeRange(logRuleDO))
|
||||
);
|
||||
//创建日志时,查询可以查看发起人日志的用户组 用线程控制
|
||||
new Thread(() -> {
|
||||
|
||||
List<LogReadUserRespDTO> respDTOS = logInstanceMapper.selectRaedUser(adminUserDO.getDeptId());
|
||||
List<LogReadUserRespDTO> respDTOS = logInstanceMapper.selectRaedUser(userId, adminUserDO.getDeptId());
|
||||
|
||||
//特殊情况, 日志发起人为研发部时 手动添加查看者
|
||||
if (adminUserDO.getDeptId() == 128L && adminUserDO.getId() != 126L) {
|
||||
|
||||
LogReadUserRespDTO dto = new LogReadUserRespDTO();
|
||||
dto.setUserId(126L);
|
||||
dto.setDeptId(128L);
|
||||
respDTOS.add(dto);
|
||||
}
|
||||
|
||||
logReadService.createLogRule(respDTOS, logInstance.getId(), logInstance.getStartUserId());
|
||||
}).start();
|
||||
|
||||
@ -213,17 +221,18 @@ public class LogInstanceServiceImpl implements LogInstanceService {
|
||||
public LogInstanceRespVO getLogInstance(Long id) {
|
||||
|
||||
//获取日志详情
|
||||
LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id);
|
||||
LogInstanceDO logInstanceDO = logInstanceMapper.selectById(id);
|
||||
// LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id);
|
||||
|
||||
//设置日志详情 模板内容和时间
|
||||
return setContentFun(logInstanceRespVO);
|
||||
return setContentFun(LogInstanceConvert.INSTANCE.convert(logInstanceDO));
|
||||
}
|
||||
|
||||
@Override
|
||||
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(), pagingType, null);
|
||||
IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType);
|
||||
|
||||
List<LogInstanceRespVO> records = pageList.getRecords();
|
||||
if (!records.isEmpty()) {
|
||||
|
@ -35,10 +35,9 @@ public class LogReadServiceImpl implements LogReadService{
|
||||
logReadDo.setLogInstanceId(logInstanceId);
|
||||
logReadDo.setStartUserId(startUserId);
|
||||
logReadDo.setReadUserDept(user.getDeptId());
|
||||
if (!user.getUserId().toString().equals(startUserId.toString())) {
|
||||
logReadDo.setReadUserId(user.getUserId());
|
||||
}
|
||||
logReadDo.setReadStatus(0);
|
||||
logReadDo.setCreator(String.valueOf(startUserId));
|
||||
return logReadDo;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
@ -2,8 +2,10 @@ package cn.iocoder.yudao.module.system.service.worklog;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.LogStatisticsDetailsListDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO;
|
||||
|
||||
import javax.validation.Valid;
|
||||
@ -93,4 +95,14 @@ public interface LogStatisticsService {
|
||||
* @param logStatisticsDO
|
||||
*/
|
||||
void saveOrUpdate(LogStatisticsDO logStatisticsDO);
|
||||
|
||||
String getCommitTimeRange(LogRuleDO logRuleDO);
|
||||
|
||||
/**
|
||||
* 获取我填写的历史
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
List<LogStatisticsModelVO> getNeedWriteHistory(NeedWriteHistoryDTO dto);
|
||||
}
|
||||
|
@ -8,8 +8,10 @@ import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.date.DateUtils;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.LogStatisticsDetailsListDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.NeedWriteHistoryDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.*;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.*;
|
||||
@ -310,4 +312,35 @@ public class LogStatisticsServiceImpl implements LogStatisticsService {
|
||||
.eq(LogStatisticsDO::getTime, logStatisticsDO.getTime()));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCommitTimeRange(LogRuleDO logRuleDO) {
|
||||
Date thisDate = new Date();
|
||||
if (logRuleDO.getType() == 1 && StrUtil.isNotEmpty(logRuleDO.getWeekDays())) {
|
||||
// -- 判断今天是周几 和 需要提交的周做对比
|
||||
int weekNum = ((DateUtil.dayOfWeekEnum(thisDate).getValue() - 1) == 0 ? 7 : (DateUtil.dayOfWeekEnum(thisDate).getValue() - 1));
|
||||
List<String> weekDays = Arrays.asList(logRuleDO.getWeekDays().split(","));
|
||||
if (weekDays.contains(Integer.toString(weekNum))) {
|
||||
return "当天" + logRuleDO.getEndTime() + "截止提交";
|
||||
} else {
|
||||
return "当天不需要提交";
|
||||
}
|
||||
} else if (logRuleDO.getType() == 2) {
|
||||
// -- 拼接获取到结束时间
|
||||
Date endTime = DateUtils.buildWeekHHmmTime(logRuleDO.getEndTime());
|
||||
return "每周" + DateUtil.dayOfWeekEnum(endTime).toChinese() + (logRuleDO.getEndTime().split(",")[1]) + "截止提交";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LogStatisticsModelVO> getNeedWriteHistory(NeedWriteHistoryDTO dto) {
|
||||
List<String> dateList = new ArrayList<>();
|
||||
if (dto.getBeginTime() != null && dto.getEndTime() != null) {
|
||||
dateList = DateUtils.betweenDayList(dto.getBeginTime(), dto.getEndTime());
|
||||
}
|
||||
dto.setUserId(SecurityFrameworkUtils.getLoginUserId());
|
||||
// 这里将区间转换为具体的日期 因为mysql BETWEEN 会导致索引失效
|
||||
return logStatisticsMapper.getNeedWriteHistory(dto, dateList);
|
||||
}
|
||||
}
|
@ -76,11 +76,12 @@
|
||||
AND read_user.data_scope != 5
|
||||
) result
|
||||
WHERE
|
||||
1= 1
|
||||
and ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 )
|
||||
result.user_id != #{userId}
|
||||
and
|
||||
( ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 )
|
||||
or ( LOCATE(#{deptId},result.ids) and result.data_scope = 2 )
|
||||
or ( result.dept_id = #{deptId} and result.data_scope = 3 )
|
||||
or result.data_scope = 1
|
||||
or result.data_scope = 1 )
|
||||
</select>
|
||||
|
||||
<select id="selectPageResult" resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO">
|
||||
@ -97,9 +98,6 @@
|
||||
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 GROUP BY log_instance_id ) AS d ON a.id = d.log_instance_id
|
||||
LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON a.id = b.work_log_id
|
||||
<where>
|
||||
<if test="logId != null">
|
||||
and a.id = #{logId}
|
||||
</if>
|
||||
<if test="reqVO.type != null">
|
||||
and a.type = #{reqVO.type}
|
||||
</if>
|
||||
@ -117,8 +115,8 @@
|
||||
and a.create_time <= #{reqVO.createTime[1]}
|
||||
</if>
|
||||
</if>
|
||||
<if test="reqVO.unRead != null">
|
||||
and e.read_status = 0
|
||||
<if test="reqVO.readStatus != null">
|
||||
and e.read_status = #{reqVO.readStatus}
|
||||
</if>
|
||||
<if test="pagingType == 0">
|
||||
and a.start_user_id != #{userId}
|
||||
|
@ -109,4 +109,36 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<select id="getNeedWriteHistory"
|
||||
resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsModelVO">
|
||||
SELECT
|
||||
b.*,
|
||||
IF( a.STATUS = 1, 1, 0 ) AS onTimeNum,
|
||||
IF( a.STATUS = 2, 1, 0 ) AS lateNum,
|
||||
IF( a.STATUS = 3, 1, 0 ) AS unSubmittedNum,
|
||||
a.time,
|
||||
c.type,
|
||||
a.commit_time_range
|
||||
FROM
|
||||
work_log_statistics AS a
|
||||
LEFT JOIN work_log_form AS b ON a.form_id = b.id
|
||||
LEFT JOIN work_log_rule AS c ON a.rule_id = c.id
|
||||
<where>
|
||||
<if test="dto.formId != null">
|
||||
AND a.form_id = #{dto.formId}
|
||||
</if>
|
||||
<if test="dto.userId != null">
|
||||
AND a.user_id = #{dto.userId}
|
||||
</if>
|
||||
<if test="dateList != null and dateList.size() > 0">
|
||||
AND a.time IN
|
||||
<foreach collection="dateList" item="date" open="(" separator="," close=")">
|
||||
#{date}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="dto.type != null">
|
||||
AND a.type = #{dto.type}
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user