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 44c8b7d..f0399f1 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 @@ -1,17 +1,17 @@ package com.ruoyi.cms.controller.cms; -import com.ruoyi.cms.domain.BussinessDictType; import com.ruoyi.cms.domain.query.Staticsquery; import com.ruoyi.cms.service.StaticsqueryService; +import com.ruoyi.cms.util.DateValidateUtil; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; import java.util.Map; @RestController @@ -100,4 +100,24 @@ public class StaticsController extends BaseController { Map result = service.educationSalary(staticsquery); return success(result); } + + /** + * 企业岗位统计 + * @param staticsquery + * @return + */ + @GetMapping("/qygwtjCount") + public AjaxResult qygwtjCount(@RequestBody Staticsquery staticsquery) + { + if(staticsquery==null){ + return error("参数为空!"); + } + //判断时间 + String timeError = DateValidateUtil.validateStartAndEndTime(staticsquery.getStartTime(),staticsquery.getEndTime()); + if (StringUtils.isNotBlank(timeError)) { + return error(timeError); + } + Map result = service.qygwtjCount(staticsquery); + return success(result); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/StaticsJob.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/StaticsJob.java new file mode 100644 index 0000000..0690112 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/StaticsJob.java @@ -0,0 +1,25 @@ +package com.ruoyi.cms.domain; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class StaticsJob { + @ApiModelProperty("总数") + private String zs; + @ApiModelProperty("高效毕业生岗位") + private String gxbysgw; + @ApiModelProperty("实时在招岗位数") + private String sszzgw; + @ApiModelProperty("简历数量") + private String jlsl; + @ApiModelProperty("名称") + private String label; + + @ApiModelProperty("归集岗位合计") + private String gjgwhj; + @ApiModelProperty("注册企业数") + private String zcqys; + @ApiModelProperty("求职者实名数") + private String qzzsms; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/StaticsMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/StaticsMapper.java index fc97524..750b2f1 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/StaticsMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/StaticsMapper.java @@ -3,8 +3,15 @@ package com.ruoyi.cms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.cms.domain.Statics; +import com.ruoyi.cms.domain.StaticsJob; +import com.ruoyi.cms.domain.query.Staticsquery; + +import java.util.List; public interface StaticsMapper extends BaseMapper { + public StaticsJob qygwtjCount(Staticsquery staticsquery); + + public List getGroutCityJobs(Staticsquery staticsquery); } 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 545fb6b..d0dcb50 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 @@ -27,4 +27,6 @@ public interface StaticsqueryService { void educationSalaryGen(); Map educationSalary(Staticsquery staticsquery); + + Map qygwtjCount(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 50e93d6..9b0a638 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 @@ -2,14 +2,12 @@ package com.ruoyi.cms.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.cms.domain.CommercialArea; -import com.ruoyi.cms.domain.CompanyCardCollection; import com.ruoyi.cms.domain.Statics; +import com.ruoyi.cms.domain.StaticsJob; import com.ruoyi.cms.domain.query.Staticsquery; -import com.ruoyi.cms.mapper.CompanyCardCollectionMapper; import com.ruoyi.cms.mapper.StaticsMapper; -import com.ruoyi.cms.service.ISubwayLineService; import com.ruoyi.cms.service.StaticsqueryService; +import com.ruoyi.common.utils.DateUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -551,4 +549,16 @@ public class StaticsqueryServiceImpl extends ServiceImpl } return result; } + + @Override + public Map qygwtjCount(Staticsquery staticsquery) { + String eneTime= DateUtils.addOneDay(staticsquery.getEndTime(),DateUtils.YYYY_MM_DD,DateUtils.YYYY_MM_DD); + staticsquery.setEndTime(eneTime); + HashMap result = new HashMap<>(); + StaticsJob staticsJob=staticsMapper.qygwtjCount(staticsquery); + List list=staticsMapper.getGroutCityJobs(staticsquery); + result.put("hz",staticsJob); + result.put("group",list); + return result; + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java index d9ca446..6c651fd 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/util/DateValidateUtil.java @@ -1,5 +1,7 @@ package com.ruoyi.cms.util; +import com.ruoyi.common.utils.StringUtils; + import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -12,6 +14,8 @@ public class DateValidateUtil { private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd"); private static final String ERROR_MSG = "生日格式错误!不为空时必须填写 yyyy-MM-dd 完整格式(如 1991-09-01)"; + private static final String DEFAULT_DATE_FORMAT_TIP = "请使用 yyyy-MM-dd 格式"; + // 改为校验 String 类型 public static String validateBirthDate(String birthDateStr) { if (birthDateStr == null || birthDateStr.trim().isEmpty()) { @@ -26,4 +30,73 @@ public class DateValidateUtil { return ERROR_MSG; // 格式错误返回提示 } } + + /** + * 校验开始时间和结束时间的合法性 + * @param startTime 开始时间字符串 + * @param endTime 结束时间字符串 + * @return 校验不通过返回错误信息,校验通过返回null + */ + public static String validateStartAndEndTime(String startTime, String endTime) { + StringBuilder errorMsg = new StringBuilder(); + + if (StringUtils.isBlank(startTime)) { + errorMsg.append("开始时间不能为空!"); + } else { + if (!isValidDate(startTime)) { + errorMsg.append(StringUtils.isNotBlank(errorMsg.toString()) ? " " : "") + .append("开始时间格式错误,").append(DEFAULT_DATE_FORMAT_TIP); + } + } + + if (StringUtils.isBlank(endTime)) { + errorMsg.append(StringUtils.isNotBlank(errorMsg.toString()) ? " " : "") + .append("结束时间不能为空!"); + } else { + if (!isValidDate(endTime)) { + errorMsg.append(StringUtils.isNotBlank(errorMsg.toString()) ? " " : "") + .append("结束时间格式错误,").append(DEFAULT_DATE_FORMAT_TIP); + } else if (StringUtils.isNotBlank(startTime) && isValidDate(startTime)) { + if (!isEndTimeAfterStartTime(startTime, endTime)) { + errorMsg.append(StringUtils.isNotBlank(errorMsg.toString()) ? " " : "") + .append("结束时间不能早于开始时间!"); + } + } + } + + return errorMsg.length() > 0 ? errorMsg.toString() : null; + } + + /** + * 校验单个日期字符串是否符合 yyyy-MM-dd 格式 + * @param dateStr 日期字符串 + * @return 合法返回true,否则false + */ + public static boolean isValidDate(String dateStr) { + if (StringUtils.isBlank(dateStr)) { + return false; + } + try { + LocalDate.parse(dateStr); // 默认解析 yyyy-MM-dd 格式 + return true; + } catch (DateTimeParseException e) { + return false; + } + } + + /** + * 校验结束时间是否晚于开始时间(前提:两个时间格式都合法) + * @param startTime 开始时间 + * @param endTime 结束时间 + * @return 结束时间晚于开始时间返回true,否则false + */ + public static boolean isEndTimeAfterStartTime(String startTime, String endTime) { + try { + LocalDate startDate = LocalDate.parse(startTime); + LocalDate endDate = LocalDate.parse(endTime); + return !endDate.isBefore(startDate); // 结束时间 >= 开始时间 返回true + } catch (DateTimeParseException e) { + return false; + } + } } \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/StaticsMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/StaticsMapper.xml new file mode 100644 index 0000000..f64c6f3 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/app/StaticsMapper.xml @@ -0,0 +1,60 @@ + + + + + + + + + + diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java index 8385bc7..16a0a3a 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java @@ -8,6 +8,7 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils; @@ -219,4 +220,30 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils return null; } } + + /** + * 添加1天 + * @param dateStr + * @param inputFormat + * @param outputFormat + * @return + */ + public static String addOneDay(String dateStr, String inputFormat, String outputFormat) { + if (dateStr == null || dateStr.trim().isEmpty() + || inputFormat == null || inputFormat.trim().isEmpty() + || outputFormat == null || outputFormat.trim().isEmpty()) { + System.err.println("参数错误:dateStr/inputFormat/outputFormat 不能为空"); + return null; + } + try { + DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern(inputFormat.trim()); + DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern(outputFormat.trim()); + LocalDate date = LocalDate.parse(dateStr.trim(), inputFormatter); + LocalDate nextDay = date.plusDays(1); + return nextDay.format(outputFormatter); + } catch (Exception e) { + System.err.println("日期解析失败:输入字符串[" + dateStr + "] 与输入格式[" + inputFormat + "]不匹配"); + return null; + } + } }