调整日志统计 / 调整开发环境ip
This commit is contained in:
parent
6c6847f788
commit
d0ad4fc5eb
@ -40,13 +40,13 @@ spring:
|
||||
datasource:
|
||||
master:
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
|
@ -40,13 +40,13 @@ spring:
|
||||
datasource:
|
||||
master:
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
|
@ -180,6 +180,7 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode LOG_INSTANCE_NOT_EXISTS = new ErrorCode(1_009_010_002, "日志实例的拓展不存在");
|
||||
|
||||
ErrorCode LOG_RULE_NOT_EXISTS = new ErrorCode(1_009_010_003, "日志规则不存在");
|
||||
ErrorCode PLEASE_SELECT_A_TIME_RANGE = new ErrorCode(1_009_010_004, "请选择时间区间");
|
||||
// ========== 站内信发送 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, "用户打卡记录不存在");
|
||||
|
@ -46,6 +46,12 @@ public class AttendanceController {
|
||||
return success(vo);
|
||||
}
|
||||
|
||||
@GetMapping("/getRulesByUserId")
|
||||
@Operation(summary = "获取考勤规则根据用户id")
|
||||
public CommonResult<AttendanceRulesVO> getRulesByUserId() {
|
||||
AttendanceRulesVO vo = attendanceService.getRulesByUserId();
|
||||
return success(vo);
|
||||
}
|
||||
|
||||
@GetMapping("/statisticsByDay")
|
||||
@Operation(summary = "统计按天")
|
||||
|
@ -5,12 +5,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.worklog.dto.statistics.LogStatisticsDetailsListDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.LogStatisticsDetailsListGroupByUserDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.MyManageModelDTO;
|
||||
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;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsModelVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statisticsrecord.LogStatisticsDetailsListGroupByUserVO;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.LogStatisticsService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -57,6 +59,12 @@ public class LogStatisticsController {
|
||||
return success(logStatisticsService.getStatistics(dto));
|
||||
}
|
||||
|
||||
@GetMapping("/getStatisticsGroupByUser")
|
||||
@Operation(summary = "获取日志统计(通过用户)")
|
||||
public CommonResult<List<LogStatisticsDetailsListGroupByUserVO>> getStatisticsGroupByUser(@ModelAttribute LogStatisticsDetailsListGroupByUserDTO dto) {
|
||||
return success(logStatisticsService.getStatisticsGroupByUser(dto));
|
||||
}
|
||||
|
||||
@GetMapping("/getNeedWrite")
|
||||
@Operation(summary = "获取需要填写的")
|
||||
public CommonResult<List<LogStatisticsModelVO>> getNeedWrite() {
|
||||
|
@ -0,0 +1,28 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class LogStatisticsDetailsListGroupByUserDTO {
|
||||
|
||||
@Schema(description = "开始时间 格式yyyy-MM-dd 如果是日报的话 开始时间结束时间都传同一天即可")
|
||||
private String beginTime;
|
||||
|
||||
@Schema(description = "结束时间 格式yyyy-MM-dd 如果是日报的话 开始时间结束时间都传同一天即可")
|
||||
private String endTime;
|
||||
|
||||
@Schema(description = "日志类型")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "部门id")
|
||||
private Long deptId;
|
||||
|
||||
/**
|
||||
* 时间列表
|
||||
*/
|
||||
private List<String> dateList;
|
||||
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
@ -30,6 +31,10 @@ public class LogStatisticsDetailsVO {
|
||||
@Schema(description = "日志id", example = "30875")
|
||||
private Long logInstanceExtId;
|
||||
|
||||
@Schema(description = "日志类型 1日报 2周报", example = "1")
|
||||
@ExcelProperty("日志类型 1日报 2周报")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "提交状态 1按时提交 2迟交 3未提交", example = "2")
|
||||
private Integer status;
|
||||
|
||||
|
@ -0,0 +1,29 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statisticsrecord;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LogStatisticsDetailsListGroupByUserVO {
|
||||
|
||||
@Schema(description = "姓名")
|
||||
private String nickName;
|
||||
|
||||
@Schema(description = "部门名称")
|
||||
private String deptName;
|
||||
|
||||
@Schema(description = "日志类型")
|
||||
private Integer type;
|
||||
|
||||
@Schema(description = "应提交")
|
||||
private Integer should;
|
||||
|
||||
@Schema(description = "按时交")
|
||||
private Integer onTime;
|
||||
|
||||
@Schema(description = "迟交")
|
||||
private Integer late;
|
||||
|
||||
@Schema(description = "未提交")
|
||||
private Integer notYet;
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statisticsrecord;
|
||||
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statistics.LogStatisticsDetailsVO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class LogStatisticsGroupByUserVO extends LogStatisticsDetailsVO {
|
||||
|
||||
@Schema(description = "姓名")
|
||||
private String nickName;
|
||||
|
||||
@Schema(description = "部门名称")
|
||||
private String deptName;
|
||||
|
||||
}
|
@ -3,10 +3,12 @@ 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.LogStatisticsDetailsListGroupByUserDTO;
|
||||
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.controller.admin.worklog.vo.statisticsrecord.LogStatisticsGroupByUserVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.dto.LogUseVO;
|
||||
@ -82,4 +84,12 @@ public interface LogStatisticsMapper extends BaseMapperX<LogStatisticsDO> {
|
||||
* @return
|
||||
*/
|
||||
List<LogStatisticsModelVO> getNeedWriteHistory(@Param("dto") NeedWriteHistoryDTO dto, @Param("dateList") List<String> dateList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户分组日志统计
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
List<LogStatisticsGroupByUserVO> getStatisticsGroupByUser(@Param("dto") LogStatisticsDetailsListGroupByUserDTO dto);
|
||||
}
|
||||
|
@ -106,4 +106,11 @@ public interface AttendanceService {
|
||||
* @param dto
|
||||
*/
|
||||
void exportAttendanceExcel(HttpServletResponse response, ExportAttendanceExcelDTO dto);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据用户获取考勤组规则
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
AttendanceRulesVO getRulesByUserId();
|
||||
}
|
||||
|
@ -932,6 +932,15 @@ public class AttendanceServiceImpl implements AttendanceService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public AttendanceRulesVO getRulesByUserId() {
|
||||
AttendanceGroupDO activationGroup = attendanceGroupService.getByUserId(getLoginUserId());
|
||||
if (activationGroup == null) {
|
||||
return null;
|
||||
}
|
||||
return this.getRules(activationGroup.getId());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 按日导出
|
||||
|
@ -2,9 +2,11 @@ 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.LogStatisticsDetailsListGroupByUserDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.MyManageModelDTO;
|
||||
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.controller.admin.worklog.vo.statisticsrecord.LogStatisticsDetailsListGroupByUserVO;
|
||||
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;
|
||||
@ -114,4 +116,12 @@ public interface LogStatisticsService {
|
||||
* @return
|
||||
*/
|
||||
List<LogStatisticsModelVO> getMyManageModelStatistics(MyManageModelDTO dto);
|
||||
|
||||
/**
|
||||
* 根据用户分组日志统计
|
||||
*
|
||||
* @param dto
|
||||
* @return
|
||||
*/
|
||||
List<LogStatisticsDetailsListGroupByUserVO> getStatisticsGroupByUser(LogStatisticsDetailsListGroupByUserDTO dto);
|
||||
}
|
||||
|
@ -12,14 +12,18 @@ 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.LogStatisticsDetailsListGroupByUserDTO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.dto.statistics.MyManageModelDTO;
|
||||
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.controller.admin.worklog.vo.statisticsrecord.LogStatisticsDetailsListGroupByUserVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statisticsrecord.LogStatisticsGroupByUserVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.*;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogFormMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogStatisticsMapper;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogUseMapper;
|
||||
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
|
||||
import cn.iocoder.yudao.module.system.service.worklog.dto.LogUseVO;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@ -30,6 +34,8 @@ import javax.annotation.Resource;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
|
||||
/**
|
||||
* 工作日志统计 Service 实现类
|
||||
*
|
||||
@ -388,4 +394,33 @@ public class LogStatisticsServiceImpl implements LogStatisticsService {
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LogStatisticsDetailsListGroupByUserVO> getStatisticsGroupByUser(LogStatisticsDetailsListGroupByUserDTO dto) {
|
||||
List<LogStatisticsDetailsListGroupByUserVO> list = new ArrayList<>();
|
||||
List<String> dateList = new ArrayList<>();
|
||||
if (dto.getBeginTime() != null && dto.getEndTime() != null) {
|
||||
dateList = DateUtils.betweenDayStrList(dto.getBeginTime(), dto.getEndTime());
|
||||
}
|
||||
if (dateList.isEmpty()) {
|
||||
throw exception(ErrorCodeConstants.PLEASE_SELECT_A_TIME_RANGE);
|
||||
}
|
||||
dto.setDateList(dateList);
|
||||
// 获取到所有数据 然后在java代码中分组
|
||||
List<LogStatisticsGroupByUserVO> vos = logStatisticsMapper.getStatisticsGroupByUser(dto);
|
||||
// 根据用户id/部门id分组
|
||||
Map<String, List<LogStatisticsGroupByUserVO>> map = vos.stream().collect(Collectors.groupingBy(a -> a.getUserId() + "_" + a.getDeptId() + "_" + a.getType()));
|
||||
for (Map.Entry<String, List<LogStatisticsGroupByUserVO>> entry : map.entrySet()) {
|
||||
LogStatisticsDetailsListGroupByUserVO vo = new LogStatisticsDetailsListGroupByUserVO();
|
||||
vo.setNickName(entry.getValue().get(0).getNickName());
|
||||
vo.setDeptName(entry.getValue().get(0).getDeptName());
|
||||
vo.setType(entry.getValue().get(0).getType());
|
||||
vo.setShould(entry.getValue().size());
|
||||
vo.setOnTime((int) entry.getValue().stream().filter(a -> a.getStatus() == 1).count());
|
||||
vo.setLate((int) entry.getValue().stream().filter(a -> a.getStatus() == 2).count());
|
||||
vo.setNotYet((int) entry.getValue().stream().filter(a -> a.getStatus() == 3).count());
|
||||
list.add(vo);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@ -40,13 +40,13 @@ spring:
|
||||
datasource:
|
||||
master:
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
@ -80,7 +80,7 @@ xxl:
|
||||
job:
|
||||
enabled: true # 是否开启调度中心,默认为 true 开启
|
||||
admin:
|
||||
addresses: http://192.168.1.101:9090/xxl-job-admin # 调度中心部署跟地址
|
||||
addresses: http://192.168.1.107:9090/xxl-job-admin # 调度中心部署跟地址
|
||||
executor:
|
||||
appname: ${spring.application.name} # 执行器 AppName
|
||||
ip: # 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
|
||||
|
@ -151,4 +151,31 @@
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
</mapper>
|
||||
<select id="getStatisticsGroupByUser"
|
||||
resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.statisticsrecord.LogStatisticsGroupByUserVO">
|
||||
SELECT
|
||||
a.nickname as nickName,
|
||||
c.`name` as deptName,
|
||||
b.*
|
||||
FROM
|
||||
system_users AS a
|
||||
LEFT JOIN work_log_statistics AS b ON a.id = b.user_id
|
||||
LEFT JOIN system_dept AS c ON b.dept_id = c.id
|
||||
<where>
|
||||
b.deleted = 0
|
||||
<if test="dto.dateList != null and dto.dateList.size() > 0">
|
||||
and b.time IN
|
||||
<foreach collection="dto.dateList" item="date" separator="," open="(" close=")">
|
||||
#{date}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="dto.type != null">
|
||||
and b.type = #{dto.type}
|
||||
</if>
|
||||
<if test="dto.deptId != null">
|
||||
and b.dept_id = #{deptId}
|
||||
</if>
|
||||
</where>
|
||||
|
||||
</select>
|
||||
</mapper>
|
||||
|
@ -40,13 +40,13 @@ spring:
|
||||
datasource:
|
||||
master:
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
|
@ -40,13 +40,13 @@ spring:
|
||||
datasource:
|
||||
master:
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
|
||||
name: ruoyi-vue-pro
|
||||
url: jdbc:mysql://192.168.1.101:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
url: jdbc:mysql://192.168.1.107:3306/${spring.datasource.dynamic.datasource.slave.name}?allowMultiQueries=true&useUnicode=true&useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&nullCatalogMeansCurrent=true # MySQL Connector/J 8.X 连接的示例
|
||||
driver-class-name: com.mysql.jdbc.Driver
|
||||
username: root
|
||||
password: root
|
||||
|
Loading…
Reference in New Issue
Block a user