diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml index 5ceab8d8..51b49331 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/application-dev.yaml @@ -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 diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml index 21edd24c..444790ca 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/application-dev.yaml @@ -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 diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java index 376cdaf8..140b5137 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/enums/ErrorCodeConstants.java @@ -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, "用户打卡记录不存在"); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java index 71abe353..cf24fa43 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/attendance/AttendanceController.java @@ -46,6 +46,12 @@ public class AttendanceController { return success(vo); } + @GetMapping("/getRulesByUserId") + @Operation(summary = "获取考勤规则根据用户id") + public CommonResult getRulesByUserId() { + AttendanceRulesVO vo = attendanceService.getRulesByUserId(); + return success(vo); + } @GetMapping("/statisticsByDay") @Operation(summary = "统计按天") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java index 7f11e1ac..46afbbc2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogStatisticsController.java @@ -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> getStatisticsGroupByUser(@ModelAttribute LogStatisticsDetailsListGroupByUserDTO dto) { + return success(logStatisticsService.getStatisticsGroupByUser(dto)); + } + @GetMapping("/getNeedWrite") @Operation(summary = "获取需要填写的") public CommonResult> getNeedWrite() { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/LogStatisticsDetailsListGroupByUserDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/LogStatisticsDetailsListGroupByUserDTO.java new file mode 100644 index 00000000..ce86348d --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/LogStatisticsDetailsListGroupByUserDTO.java @@ -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 dateList; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsDetailsVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsDetailsVO.java index 6ee0bf26..63e9b9fd 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsDetailsVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statistics/LogStatisticsDetailsVO.java @@ -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; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java new file mode 100644 index 00000000..c24abef9 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsDetailsListGroupByUserVO.java @@ -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; +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsGroupByUserVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsGroupByUserVO.java new file mode 100644 index 00000000..c209e320 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/statisticsrecord/LogStatisticsGroupByUserVO.java @@ -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; + +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java index badd3b92..a932c4e5 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogStatisticsMapper.java @@ -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 { * @return */ List getNeedWriteHistory(@Param("dto") NeedWriteHistoryDTO dto, @Param("dateList") List dateList); -} \ No newline at end of file + + /** + * 根据用户分组日志统计 + * + * @param dto + * @return + */ + List getStatisticsGroupByUser(@Param("dto") LogStatisticsDetailsListGroupByUserDTO dto); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java index 36fbb600..3563369f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceService.java @@ -106,4 +106,11 @@ public interface AttendanceService { * @param dto */ void exportAttendanceExcel(HttpServletResponse response, ExportAttendanceExcelDTO dto); -} \ No newline at end of file + + /** + * 根据用户获取考勤组规则 + * + * @return + */ + AttendanceRulesVO getRulesByUserId(); +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java index 0d0ce89e..82529c59 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java @@ -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()); + } + /** * 按日导出 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java index 7942eda4..8457f836 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsService.java @@ -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 getMyManageModelStatistics(MyManageModelDTO dto); + + /** + * 根据用户分组日志统计 + * + * @param dto + * @return + */ + List getStatisticsGroupByUser(LogStatisticsDetailsListGroupByUserDTO dto); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java index ae38b19a..9e3df9d4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java @@ -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; } -} \ No newline at end of file + + @Override + public List getStatisticsGroupByUser(LogStatisticsDetailsListGroupByUserDTO dto) { + List list = new ArrayList<>(); + List 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 vos = logStatisticsMapper.getStatisticsGroupByUser(dto); + // 根据用户id/部门id分组 + Map> map = vos.stream().collect(Collectors.groupingBy(a -> a.getUserId() + "_" + a.getDeptId() + "_" + a.getType())); + for (Map.Entry> 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; + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml b/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml index aa997a1d..d8cc9a70 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/application-dev.yaml @@ -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仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务"; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml index a04fa97a..812e2ef4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml @@ -151,4 +151,31 @@ - \ No newline at end of file + + diff --git a/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml b/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml index 21edd24c..444790ca 100644 --- a/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml +++ b/yudao-module-wms/yudao-module-wms-biz/src/main/resources/application-dev.yaml @@ -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 diff --git a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml index d7a16484..f8193e20 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml +++ b/zn-module-smartfactory/zn-module-smartfactory-biz/src/main/resources/application-dev.yaml @@ -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