From 2e0699b8fd0c00ee65501426967d4b7e631a0897 Mon Sep 17 00:00:00 2001 From: lw <532810027@qq.com> Date: Sat, 27 Jul 2024 17:45:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E5=85=A5=E8=81=8C=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=BB=9F=E8=AE=A1=202.=E6=96=B0=E5=A2=9E=E5=85=A5?= =?UTF-8?q?=E8=81=8C=E7=AE=A1=E7=90=86=E5=B2=97=E4=BD=8D=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-druid.yml | 14 ++--- .../src/main/resources/application.yml | 12 ++-- zeroerr_oa-quartz/pom.xml | 5 ++ .../java/cn/zeroerr/quartz/task/RyTask.java | 55 +++++++++++++++++++ .../controller/EntryManageController.java | 49 ++++++++++++++++- .../cn/zeroerr/domain/entity/EntryManage.java | 7 +++ .../zeroerr/domain/vo/EntryStatisticsVO.java | 20 +++++++ .../cn/zeroerr/mapper/EntryManageMapper.java | 2 + .../zeroerr/service/EntryManageService.java | 2 + .../service/impl/EntryManageServiceImpl.java | 5 ++ .../resources/mapper/EntryManageMapper.xml | 14 ++++- 11 files changed, 169 insertions(+), 16 deletions(-) create mode 100644 zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/EntryStatisticsVO.java diff --git a/zeroerr_oa-admin/src/main/resources/application-druid.yml b/zeroerr_oa-admin/src/main/resources/application-druid.yml index ddd2703..73a9d63 100644 --- a/zeroerr_oa-admin/src/main/resources/application-druid.yml +++ b/zeroerr_oa-admin/src/main/resources/application-druid.yml @@ -5,14 +5,14 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 -# master: -# url: jdbc:mysql://192.168.1.165:3306/zeoa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: zeoa -# password: dHahLWNYB7tD2Mia master: - url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: zero + url: jdbc:mysql://192.168.1.165:3306/zeoa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: zeoa + password: dHahLWNYB7tD2Mia +# master: +# url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: root +# password: zero # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/zeroerr_oa-admin/src/main/resources/application.yml b/zeroerr_oa-admin/src/main/resources/application.yml index 8af84fa..4280875 100644 --- a/zeroerr_oa-admin/src/main/resources/application.yml +++ b/zeroerr_oa-admin/src/main/resources/application.yml @@ -7,8 +7,8 @@ ruoyi: # 版权年份 copyrightYear: 2024 # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - profile: D:/zeroerr/uploadPath - #profile: /home/zeroerr_oa/uploadPath + #profile: D:/zeroerr/uploadPath + profile: /home/zeroerr_oa/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数字计算 char 字符验证 @@ -69,15 +69,15 @@ spring: # redis 配置 redis: # 地址 - #host: 192.168.1.189 - host: localhost + host: 192.168.1.189 + #host: localhost # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码 - #password: 123456 - password: + password: 123456 + #password: # 连接超时时间 timeout: 10s lettuce: diff --git a/zeroerr_oa-quartz/pom.xml b/zeroerr_oa-quartz/pom.xml index 750124e..83c9c75 100644 --- a/zeroerr_oa-quartz/pom.xml +++ b/zeroerr_oa-quartz/pom.xml @@ -35,6 +35,11 @@ zeroerr_oa-common + + cn.zeroerr + zeroerr_oa-recruit + + \ No newline at end of file diff --git a/zeroerr_oa-quartz/src/main/java/cn/zeroerr/quartz/task/RyTask.java b/zeroerr_oa-quartz/src/main/java/cn/zeroerr/quartz/task/RyTask.java index 768c042..8feaeea 100644 --- a/zeroerr_oa-quartz/src/main/java/cn/zeroerr/quartz/task/RyTask.java +++ b/zeroerr_oa-quartz/src/main/java/cn/zeroerr/quartz/task/RyTask.java @@ -1,8 +1,20 @@ package cn.zeroerr.quartz.task; +import cn.zeroerr.domain.entity.PostGrade; +import cn.zeroerr.service.PostGradeService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import cn.zeroerr.common.utils.StringUtils; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** * 定时任务调度测试 * @@ -11,6 +23,8 @@ import cn.zeroerr.common.utils.StringUtils; @Component("ryTask") public class RyTask { + @Autowired + private PostGradeService postGradeService; public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); @@ -25,4 +39,45 @@ public class RyTask { System.out.println("执行无参方法"); } + + public void handleGrade(){ + LocalDate now = LocalDate.now(); + + // 获取上个月的日期 + LocalDate lastMonth = now.minusMonths(1); + + // 定义日期格式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM"); + + // 格式化日期 + String lastMonthData = lastMonth.format(formatter); + String currentMonthData = lastMonth.format(formatter); + + //获取上个月的所有岗位评级 + List lastList = postGradeService.list( + new LambdaQueryWrapper() + .eq(PostGrade::getMonth, lastMonthData) + ); + //获取这个月的所有岗位评级 + List currentList = postGradeService.list( + new LambdaQueryWrapper() + .eq(PostGrade::getMonth, currentMonthData) + ); + List postGradeList=new ArrayList<>(); + if (!CollectionUtils.isEmpty(lastList)) { + // 获取这个月所有的postId + List currentPostIds = currentList.stream() + .map(PostGrade::getPostId) + .collect(Collectors.toList()); + + for (PostGrade last : lastList) { + if (!currentPostIds.contains(last.getPostId())) { + last.setMonth(currentMonthData); + postGradeList.add(last); + } + } + } + //将收集到需要添加的当月评级数据导入 + postGradeService.saveBatch(postGradeList); + } } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/EntryManageController.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/EntryManageController.java index 2ed5c6d..db03b14 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/EntryManageController.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/EntryManageController.java @@ -11,6 +11,7 @@ import cn.zeroerr.common.utils.poi.ExcelUtil; import cn.zeroerr.domain.dto.EntryManagerDTO; import cn.zeroerr.domain.entity.EntryManage; import cn.zeroerr.domain.entity.ResumeFollowRecord; +import cn.zeroerr.domain.vo.EntryStatisticsVO; import cn.zeroerr.domain.vo.UserVO; import cn.zeroerr.service.EntryManageService; import cn.zeroerr.service.ResumeFollowRecordService; @@ -27,10 +28,15 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.YearMonth; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collector; +import java.util.stream.Collectors; @RestController @RequestMapping("/recruit/entryManage") @@ -117,7 +123,48 @@ public class EntryManageController extends BaseController { entry.setEntryId((long) i); } ExcelUtil util = new ExcelUtil(EntryManage.class); - util.exportExcel(response,entryManageList, "入职管理数据"); + util.exportExcel(response, entryManageList, "入职管理数据"); } + + + @GetMapping("/getStatistics/{year}") + @PreAuthorize("@ss.hasAnyPermi('recruit:entry:statistics')") + @ApiOperation(value = "查看入职管理统计") + public AjaxResult getStatistics(@PathVariable("year") String year) { + EntryStatisticsVO entryStatisticsVO = new EntryStatisticsVO(); + List expectEntryCounts=new ArrayList<>(); + List confirmEntryCounts=new ArrayList<>(); + List refuseEntryCounts=new ArrayList<>(); + //找出所有该年份的入职信息,预计入职不为空的 + List entryList = entryManageService.listByYear(year); + //根据月份进行分组 + if (!CollectionUtils.isEmpty(entryList)) { + Map> listByMonth = entryList.stream().collect(Collectors.groupingBy(x -> x.getJoinDate().getMonthValue())); + //从1月份开始,因为防止有月份没有数据导致错乱。 + for(int month =1 ;month<=12 ;month++){ + List entryManageList = listByMonth.get(month); + //如果该月份有数据 + if(!CollectionUtils.isEmpty(entryManageList)){ + //统计该月份的预计入职人数 + expectEntryCounts.add(entryManageList.size()); + //统计该月份实际入职人数 + confirmEntryCounts.add((int) entryManageList.stream().filter(x -> x.getIsEntry().equals("1")).count()); + //统计该月份拒绝入职人数 + refuseEntryCounts.add((int) entryManageList.stream().filter(x -> x.getIsEntry().equals("0")).count()); + } + //如果该月份没有数据 + else { + expectEntryCounts.add(null); + confirmEntryCounts.add(null); + refuseEntryCounts.add(null); + } + } + } + + entryStatisticsVO.setExpectEntryCounts(expectEntryCounts); + entryStatisticsVO.setConfirmEntryCounts(confirmEntryCounts); + entryStatisticsVO.setRefuseEntryCounts(refuseEntryCounts); + return AjaxResult.success(entryStatisticsVO); + } } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java index d3d8f7a..28c2c1f 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java @@ -139,6 +139,13 @@ public class EntryManage implements Serializable { @Excel(name = "档案", cellType = Excel.ColumnType.TEXT) private String dossier; + /** + * 岗位等级 + */ + @TableField(value = "rank") + @Excel(name = "岗位等级",dictType = "recruit_post_rank") + private String rank; + @TableField(exist = false) private static final long serialVersionUID = 1L; } \ No newline at end of file diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/EntryStatisticsVO.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/EntryStatisticsVO.java new file mode 100644 index 0000000..476ee53 --- /dev/null +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/EntryStatisticsVO.java @@ -0,0 +1,20 @@ +package cn.zeroerr.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class EntryStatisticsVO { + @ApiModelProperty(value = "预计入职人数") + List expectEntryCounts; + + @ApiModelProperty(value = "确认入职人数") + List confirmEntryCounts; + + @ApiModelProperty(value = "拒绝入职人数") + List refuseEntryCounts; +} diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/EntryManageMapper.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/EntryManageMapper.java index 8e120e6..8f65cde 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/EntryManageMapper.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/EntryManageMapper.java @@ -23,6 +23,8 @@ public interface EntryManageMapper extends BaseMapper { List getList(@Param("firstDay") LocalDate firstDay, @Param("lastDay") LocalDate lastDay); List getListByWeek(@Param("now") LocalDate now, @Param("plusDays") LocalDate plusDays); + + List listByYear(@Param("year") String year); } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/EntryManageService.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/EntryManageService.java index f034386..71af1bf 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/EntryManageService.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/EntryManageService.java @@ -20,4 +20,6 @@ public interface EntryManageService extends IService { List getList(LocalDate firstDay, LocalDate lastDay); List getListByWeek(LocalDate now, LocalDate plusDays); + + List listByYear(String year); } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/EntryManageServiceImpl.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/EntryManageServiceImpl.java index f7a4e57..c2fc993 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/EntryManageServiceImpl.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/EntryManageServiceImpl.java @@ -33,6 +33,11 @@ public class EntryManageServiceImpl extends ServiceImpl getListByWeek(LocalDate now, LocalDate plusDays) { return this.baseMapper.getListByWeek(now,plusDays); } + + @Override + public List listByYear(String year) { + return this.baseMapper.listByYear(year); + } } diff --git a/zeroerr_oa-recruit/src/main/resources/mapper/EntryManageMapper.xml b/zeroerr_oa-recruit/src/main/resources/mapper/EntryManageMapper.xml index f9336b6..9edf6f7 100644 --- a/zeroerr_oa-recruit/src/main/resources/mapper/EntryManageMapper.xml +++ b/zeroerr_oa-recruit/src/main/resources/mapper/EntryManageMapper.xml @@ -20,6 +20,7 @@ + @@ -27,7 +28,7 @@ post_id,post_name, user_name,hr_id,hr_name, final_pass_date,join_date,actual_join_date, - entry_fail_reason,is_entry,file,dossier + entry_fail_reason,is_entry,file,dossier,rank + +