diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/StaticsController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/StaticsController.java index 5f942b1..44c8b7d 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/StaticsController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/StaticsController.java @@ -85,4 +85,19 @@ public class StaticsController extends BaseController { Map result = service.education(staticsquery); return success(result); } + + //分学历-分薪资 + @GetMapping("/educationSalaryGen") + public AjaxResult educationSalaryGen() + { + service.educationSalaryGen(); + return success(); + } + + @GetMapping("/educationSalary") + public AjaxResult educationSalary(Staticsquery staticsquery) + { + Map result = service.educationSalary(staticsquery); + return success(result); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java index 23c895e..734144e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/Company.java @@ -1,13 +1,10 @@ package com.ruoyi.cms.domain; +import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import com.ruoyi.common.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.domain.BaseEntity; import java.util.List; @@ -101,4 +98,7 @@ public class Company extends BaseEntity @ApiModelProperty("注册地址") private String registeredAddress; + + @ApiModelProperty("是否异常") + private String isAbnormal; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/StaticsqueryService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/StaticsqueryService.java index 56b4dca..545fb6b 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/StaticsqueryService.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/StaticsqueryService.java @@ -23,4 +23,8 @@ public interface StaticsqueryService { void educationGen(); Map education(Staticsquery staticsquery); + + void educationSalaryGen(); + + Map educationSalary(Staticsquery staticsquery); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/StaticsqueryServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/StaticsqueryServiceImpl.java index a5caba7..50e93d6 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/StaticsqueryServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/StaticsqueryServiceImpl.java @@ -457,4 +457,98 @@ public class StaticsqueryServiceImpl extends ServiceImpl } + public void educationSalaryGen() { + // 定义岗位分类 + String[] jobCategories = { + "初中及以下", + "中专/中技", + "高中", + "大专", + "本科", + "硕士", + "博士", + "MBA/EMBA", + "留学-学士", + "留学-硕士", + "留学-博士", + "不限" + }; + //薪资类型 + String[] salarys = { + "3k-5k", + "5k-8k", + "10k-15K", + "15k-20k", + "20k+" + }; + + // 定义时间周期 + String[] timePeriods = { + "2025-01", "2025-02", "2025-03", "2025-04", "2025-05", + "2024-11", "2024-12" + }; + + // 所有支持的类型 + Map> typeMap = new HashMap<>(); + typeMap.put("month", Arrays.asList( + "分学历/分薪资/月/岗位发布数量" + )); + + + for (String time : timePeriods) { + String granularity; + + // 判断时间粒度:月、季度、年 + if (time.matches("\\d{4}-\\d{2}")) { + granularity = "month"; // 如 "2025-01" + } else if (time.matches("\\d{4}-第[一二三四]季度")) { + granularity = "quarter"; // 如 "2024-第一季度" + } else if (time.matches("\\d{4}")) { + granularity = "year"; // 如 "2025" + } else { + continue; // 非法格式跳过 + } + + List applicableTypes = typeMap.get(granularity); + + for (String type : applicableTypes) { + for (String category : jobCategories) { + for(String salary:salarys){ + Statics stat = new Statics(); + stat.setTime(time); + stat.setType(type); + stat.setName(category+"/"+salary); + + // 设置数据值 + if (type.contains("岗位发布数量")) { + int baseValue = 1000; + if (granularity.equals("quarter")) baseValue = 300; + if (granularity.equals("year")) baseValue = 1200; + + int variation = (int)(baseValue * 0.2 * (Math.random() - 0.5)); + stat.setData(String.valueOf(baseValue + variation)); + } else { + double baseRate = 0.05; + double variation = 0.01 * (Math.random() - 0.5); + stat.setData(String.format("%.2f", baseRate + variation)); + } + + stat.setDelFlag("0"); + staticsMapper.insert(stat); + } + } + } + } + } + + @Override + public Map educationSalary(Staticsquery staticsquery) { + HashMap result = new HashMap<>(); + List query = staticsquery.generateTimeRange(); + for (String time : query) { + List statics = staticsMapper.selectList(Wrappers.lambdaQuery().eq(Statics::getType, "分学历/分薪资/" + staticsquery.getTimeDimension()+"/"+staticsquery.getType()).eq(Statics::getTime, time)); + result.put(time, statics); + } + return result; + } } diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml index 15b6ea9..82cdd70 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/app/CompanyMapper.xml @@ -30,10 +30,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select company_id, name, location, industry, scale, del_flag, create_by, create_time, update_by, update_time, remark,code,description,nature,total_recruitment,registered_address,contact_person,contact_person_phone from company + select company_id, name, location, industry, scale, del_flag, create_by, create_time, update_by, update_time, remark,code,description,nature,total_recruitment,registered_address,contact_person,contact_person_phone,is_abnormal from company INSERT INTO company (