From f648fd0719261d85879779390ea44eb5130c0401 Mon Sep 17 00:00:00 2001 From: lapuda <577732344@qq.com> Date: Fri, 24 Apr 2026 16:23:42 +0800 Subject: [PATCH] add --- .../JobDataStorageDetectionController.java | 56 +++++++ .../cms/JobDataTrendController.java | 41 +++++ .../controller/cms/JobIndexController.java | 65 ++++++++ .../cms/WebsiteManagementController.java | 83 ++++++++++ .../cms/domain/JobDataStorageDetail.java | 60 +++++++ .../cms/domain/JobDataStorageDetection.java | 53 +++++++ .../com/ruoyi/cms/domain/JobDataTrend.java | 43 +++++ .../java/com/ruoyi/cms/domain/JobIndex.java | 36 +++++ .../ruoyi/cms/domain/WebsiteManagement.java | 43 +++++ .../mapper/JobDataStorageDetailMapper.java | 9 ++ .../mapper/JobDataStorageDetectionMapper.java | 13 ++ .../ruoyi/cms/mapper/JobDataTrendMapper.java | 22 +++ .../com/ruoyi/cms/mapper/JobIndexMapper.java | 13 ++ .../cms/mapper/WebsiteManagementMapper.java | 13 ++ .../cms/service/IJobDataTrendService.java | 40 +++++ .../JobDataStorageDetectionService.java | 15 ++ .../ruoyi/cms/service/JobIndexService.java | 10 ++ .../cms/service/WebsiteManagementService.java | 15 ++ .../JobDataStorageDetectionServiceImpl.java | 93 +++++++++++ .../service/impl/JobDataTrendServiceImpl.java | 149 ++++++++++++++++++ .../cms/service/impl/JobIndexServiceImpl.java | 22 +++ .../impl/WebsiteManagementServiceImpl.java | 47 ++++++ .../mapper/app/JobDataTrendMapper.xml | 35 ++++ .../resources/mapper/app/JobIndexMapper.xml | 20 +++ .../mapper/app/WebsiteManagementMapper.xml | 44 ++++++ 25 files changed, 1040 insertions(+) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataStorageDetectionController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataTrendController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobIndexController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/WebsiteManagementController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetail.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetection.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataTrend.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobIndex.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/WebsiteManagement.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetailMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetectionMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataTrendMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobIndexMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/WebsiteManagementMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobDataTrendService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobDataStorageDetectionService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobIndexService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/WebsiteManagementService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataStorageDetectionServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataTrendServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobIndexServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/WebsiteManagementServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/resources/mapper/app/JobDataTrendMapper.xml create mode 100644 ruoyi-bussiness/src/main/resources/mapper/app/JobIndexMapper.xml create mode 100644 ruoyi-bussiness/src/main/resources/mapper/app/WebsiteManagementMapper.xml diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataStorageDetectionController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataStorageDetectionController.java new file mode 100644 index 0000000..4cd1c51 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataStorageDetectionController.java @@ -0,0 +1,56 @@ +package com.ruoyi.cms.controller.cms; + +import com.ruoyi.cms.domain.JobDataStorageDetection; +import com.ruoyi.cms.service.JobDataStorageDetectionService; +import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static com.ruoyi.common.enums.BusinessType.INSERT; +import static com.ruoyi.common.enums.BusinessType.QUERY; + +@RestController +@RequestMapping(value = "/cms/storageDetection") +@Api(tags = "后台:岗位数据入库检测") +@Anonymous +public class JobDataStorageDetectionController extends BaseController { + + @Autowired + JobDataStorageDetectionService jobDataStorageDetectionService; + + @Log(title = "查询岗位数据入库监测列表", businessType = QUERY) + @ApiOperation("查询岗位数据入库监测列表") + @GetMapping(value = "/getList") + public TableDataInfo getList(JobDataStorageDetection jobDataStorageDetection) { + startPage(); + List list = jobDataStorageDetectionService.getList(jobDataStorageDetection); + return getDataTable(list); + } + + @Log(title = "查询岗位数据入库监测详情", businessType = QUERY) + @ApiOperation("查询岗位数据入库监测详情") + @GetMapping(value = "/getSingle/{detectionId}") + public AjaxResult getSingle(@PathVariable String detectionId) { + return AjaxResult.success(jobDataStorageDetectionService.getSingle(detectionId)); + } + + @Log(title = "保存岗位数据入库监测记录", businessType = INSERT) + @ApiOperation("保存岗位数据入库监测记录") + @PostMapping(value = "/save") + public AjaxResult save(@RequestBody JobDataStorageDetection jobDataStorageDetection) { + try { + jobDataStorageDetectionService.saveData(jobDataStorageDetection); + return success(); + }catch (Exception e) { + return error(); + } + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataTrendController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataTrendController.java new file mode 100644 index 0000000..25bf13e --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobDataTrendController.java @@ -0,0 +1,41 @@ +package com.ruoyi.cms.controller.cms; + +import com.ruoyi.cms.domain.JobDataTrend; +import com.ruoyi.cms.service.IJobDataTrendService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.Map; + +/** + * 采集趋势 Controller + */ +@RestController +@RequestMapping("/cms/jobTrend") +@Api(value = "后台:采集趋势", tags = "后台:采集趋势") +public class JobDataTrendController extends BaseController { + + @Autowired + private IJobDataTrendService jobDataTrendService; + + /** + * 查询全网采集趋势列表 (website_name = "total") + */ + @GetMapping("/list") + @ApiOperation("获取全网采集趋势数据(Total)") + @Log(title = "获取全网采集趋势数据(Total)", businessType = BusinessType.QUERY) + public AjaxResult list(@RequestParam Map params) { + List list = jobDataTrendService.selectTrendTotalList(params); + return success(list); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobIndexController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobIndexController.java new file mode 100644 index 0000000..62b6ecd --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/JobIndexController.java @@ -0,0 +1,65 @@ +package com.ruoyi.cms.controller.cms; + +import com.ruoyi.cms.domain.JobIndex; +import com.ruoyi.cms.service.JobIndexService; +import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +import static com.ruoyi.common.enums.BusinessType.*; + +@RestController +@RequestMapping(value = "/cms/jobIndex") +@Api(tags = "后台:岗位指标管理") +@Anonymous +public class JobIndexController extends BaseController { + + @Autowired + JobIndexService jobIndexService; + + @Log(title = "查询岗位信息指标列表", businessType = QUERY) + @ApiOperation("查询岗位信息指标列表") + @GetMapping(value = "/getList") + public TableDataInfo getList(JobIndex jobIndex) { + startPage(); + List list = jobIndexService.getList(jobIndex); + return getDataTable(list); + } + + @Log(title = "查询岗位信息指标详情", businessType = QUERY) + @ApiOperation("查询岗位信息指标详情") + @GetMapping(value = "/getSingle/{indexId}") + public AjaxResult getSingle(@PathVariable Integer indexId) { + return AjaxResult.success(jobIndexService.getById(indexId)); + } + + @Log(title = "保存岗位信息指标", businessType = INSERT) + @ApiOperation("保存岗位信息指标") + @PostMapping(value = "/save") + public AjaxResult save(@RequestBody JobIndex jobIndex) { + return toAjax(jobIndexService.save(jobIndex)); + } + + @Log(title = "修改岗位信息指标", businessType = UPDATE) + @ApiOperation("修改岗位信息指标") + @PostMapping(value = "/update") + public AjaxResult update(@RequestBody JobIndex jobIndex) { + return toAjax(jobIndexService.updateById(jobIndex)); + } + + @Log(title = "删除岗位信息指标", businessType = DELETE) + @ApiOperation("删除岗位信息指标") + @PostMapping(value = "/delete") + public AjaxResult delete(@RequestBody JobIndex jobIndex) { + jobIndex.setDelFlag("2"); + return toAjax(jobIndexService.removeById(jobIndex)); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/WebsiteManagementController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/WebsiteManagementController.java new file mode 100644 index 0000000..dba953f --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/WebsiteManagementController.java @@ -0,0 +1,83 @@ +package com.ruoyi.cms.controller.cms; + +import com.ruoyi.cms.domain.WebsiteManagement; +import com.ruoyi.cms.service.WebsiteManagementService; +import com.ruoyi.common.annotation.Anonymous; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +import static com.ruoyi.common.enums.BusinessType.*; + +@RestController +@RequestMapping("/cms/website") +@Api(tags = "后台:岗位信息来源管理") +@Anonymous +public class WebsiteManagementController extends BaseController { + + @Autowired + WebsiteManagementService websiteManagementService; + + @Log(title = "查询岗位信息来源网站列表", businessType = QUERY) + @ApiOperation("查询岗位信息来源网站列表") + @GetMapping(value = "/getList") + public TableDataInfo getList(WebsiteManagement websiteManagement) { + startPage(); + List list = websiteManagementService.getList(websiteManagement); + return getDataTable(list); + } + + @Log(title = "查询岗位信息来源网站详情", businessType = QUERY) + @ApiOperation("查询岗位信息来源网站详情") + @GetMapping(value = "/getSingle/{websiteId}") + public AjaxResult getSingle(@PathVariable Long websiteId) { + return AjaxResult.success(websiteManagementService.getById(websiteId)); + } + + @Log(title = "岗位信息来源网站下拉选", businessType = QUERY) + @ApiOperation("岗位信息来源网站下拉选") + @GetMapping(value = "/getSelectOptions") + public AjaxResult getSelectOptions() { + WebsiteManagement websiteManagement = new WebsiteManagement(); + websiteManagement.setDelFlag("0"); + return AjaxResult.success(websiteManagementService.getList(websiteManagement)); + } + + @Log(title = "保存岗位信息来源网站信息", businessType = INSERT) + @ApiOperation("保存岗位信息来源网站信息") + @PostMapping(value = "/save") + public AjaxResult save(@RequestBody WebsiteManagement websiteManagement) { + return toAjax(websiteManagementService.save(websiteManagement)); + } + + @Log(title = "修改岗位信息来源网站信息", businessType = UPDATE) + @ApiOperation("修改岗位信息来源网站信息") + @PostMapping(value = "/update") + public AjaxResult update(@RequestBody WebsiteManagement websiteManagement) { + return toAjax(websiteManagementService.updateById(websiteManagement)); + } + + @Log(title = "删除岗位信息来源网站信息", businessType = DELETE) + @ApiOperation("删除岗位信息来源网站信息") + @PostMapping(value = "/delete") + public AjaxResult delete(@RequestBody WebsiteManagement websiteManagement) { + websiteManagement.setDelFlag("2"); + return toAjax(websiteManagementService.removeById(websiteManagement)); + } + + @Log(title = "导入岗位信息来源网站信息", businessType = IMPORT) + @ApiOperation("导入岗位信息来源网站信息") + @PostMapping(value = "/import") + public AjaxResult importData(@RequestParam(value = "file") MultipartFile file,@RequestParam(value = "dataType")String dataType) throws Exception { + return websiteManagementService.importData(file,dataType); + } + +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetail.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetail.java new file mode 100644 index 0000000..b7d565f --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetail.java @@ -0,0 +1,60 @@ +package com.ruoyi.cms.domain; + +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.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +@Data +@ApiModel("工作数据入库详情") +@TableName("JOB_DATA_STORAGE_DETAIL") +public class JobDataStorageDetail { + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @TableId(value = "detail_id",type = IdType.AUTO) + @ApiModelProperty("详情ID") + private Long detailId; + + @Excel(name = "入库来源网站ID") + @ApiModelProperty("入库来源网站ID") + private Long websiteId; + + @Excel(name = "监测ID") + @ApiModelProperty("监测ID") + private String detectionId; + + @Excel(name = "入库来源网站名称") + @ApiModelProperty("入库来源网站名称") + private String websiteName; + + @Excel(name = "入库具体时间") + @ApiModelProperty("入库具体时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date storageTime; + + @Excel(name = "入库成功数量") + @ApiModelProperty("入库成功数量") + private Integer successNumber; + + @Excel(name = "入库失败数量") + @ApiModelProperty("入库失败数量") + private Integer failedNumber; + + @Excel(name = "入库失败原因") + @ApiModelProperty("入库失败原因") + private String failedReason; + + @Excel(name = "入库数据详情") + @ApiModelProperty("入库数据详情") + private String storageDetail; + +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetection.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetection.java new file mode 100644 index 0000000..b738107 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataStorageDetection.java @@ -0,0 +1,53 @@ +package com.ruoyi.cms.domain; + +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.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; +import java.util.List; + +@Data +@ApiModel("岗位数据入库检测") +@TableName("JOB_DATA_STORAGE_DETECTION") +public class JobDataStorageDetection extends BaseEntity { + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @TableId(value = "detection_id",type = IdType.AUTO) + @ApiModelProperty("监测ID") + private String detectionId; + + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "采集入库日期", width = 30, dateFormat = "yyyy-MM-dd") + @ApiModelProperty("采集入库日期") + private Date storageDate; + + @Excel(name = "采集入库数量") + @ApiModelProperty("采集入库数量") + private Integer storageNumber; + + @Excel(name = "采集入库结果") + @ApiModelProperty("采集入库结果") + private String storageResult; + + @Excel(name = "入库数据详情") + @ApiModelProperty("入库数据详情") + private String storageDetail; + + @Excel(name = "失败原因") + @ApiModelProperty("失败原因") + private String failedReason; + + @TableField(exist = false) + private List details; + +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataTrend.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataTrend.java new file mode 100644 index 0000000..7f54d12 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobDataTrend.java @@ -0,0 +1,43 @@ +package com.ruoyi.cms.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.core.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +/** + * 岗位数据采集趋势统计对象 JOB_DATA_TREND + * * @author ruoyi + * @date 2025-12-01 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("JOB_DATA_TREND") +public class JobDataTrend extends BaseEntity { + + private static final long serialVersionUID = 1L; + + /** 主键ID */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 逻辑删除数量 */ + private Long deleteCount; + + /** 新增入库数量 */ + private Long insertCount; + + /** 处理失败/重复数量 */ + private Long failCount; + + /** 统计归集时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date storageTime; + /** 网站名称 **/ + private String websiteName; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobIndex.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobIndex.java new file mode 100644 index 0000000..2d9f30d --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/JobIndex.java @@ -0,0 +1,36 @@ +package com.ruoyi.cms.domain; + +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.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("岗位指标") +@TableName("JOB_INDEX") +public class JobIndex extends BaseEntity { + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @TableId(value = "index_id",type = IdType.AUTO) + @ApiModelProperty("指标ID") + private Long indexId; + + @Excel(name="指标名称") + @ApiModelProperty("指标名称") + private String indexName; + + @Excel(name="指标描述") + @ApiModelProperty("指标描述") + private String indexDesc; + + @Excel(name="是否启用",readConverterExp = "1=启用,0=未启用") + @ApiModelProperty("是否启用,1:启用,0:未启用") + private String isActive="1"; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/WebsiteManagement.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/WebsiteManagement.java new file mode 100644 index 0000000..9768606 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/WebsiteManagement.java @@ -0,0 +1,43 @@ +package com.ruoyi.cms.domain; + +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.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("岗位信息来源") +@TableName("WEBSITE_MANAGEMENT") +public class WebsiteManagement extends BaseEntity { + + @TableField(exist = false) + private static final long serialVersionUID = 1L; + + @TableId(value = "website_id",type = IdType.AUTO) + @ApiModelProperty("网站id") + private Long websiteId; + + @Excel(name="网站名称") + @ApiModelProperty("网站名称") + private String websiteName; + + @Excel(name="网站地址") + @ApiModelProperty("网站地址") + private String websiteUrl; + + @Excel(name="网站归属单位公司") + @ApiModelProperty("网站归属单位公司") + private String websiteOwnerCompany; + + @Excel(name="是否启用",readConverterExp = "1=启用,0=未启用") + @ApiModelProperty("是否启用,1:启用,0:未启用") + private String isActive="1"; + + @ApiModelProperty("数据类型,1:系统数据,2:外部数据") + private String dataType; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetailMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetailMapper.java new file mode 100644 index 0000000..050bebe --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetailMapper.java @@ -0,0 +1,9 @@ +package com.ruoyi.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.JobDataStorageDetail; +import org.springframework.stereotype.Repository; + +@Repository +public interface JobDataStorageDetailMapper extends BaseMapper { +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetectionMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetectionMapper.java new file mode 100644 index 0000000..f312d34 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataStorageDetectionMapper.java @@ -0,0 +1,13 @@ +package com.ruoyi.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.JobDataStorageDetection; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface JobDataStorageDetectionMapper extends BaseMapper { + + List getList(JobDataStorageDetection jobDataStorageDetection); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataTrendMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataTrendMapper.java new file mode 100644 index 0000000..b48abae --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobDataTrendMapper.java @@ -0,0 +1,22 @@ +package com.ruoyi.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.JobDataTrend; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * 岗位数据采集趋势统计Mapper接口 + * * @author ruoyi + * @date 2025-12-01 + */ +@Mapper +public interface JobDataTrendMapper extends BaseMapper { + /** + * 查询岗位数据采集趋势统计列表 + * * @param jobDataTrend 岗位数据采集趋势统计 + * @return 岗位数据采集趋势统计集合 + */ + List selectJobDataTrendList(JobDataTrend jobDataTrend); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobIndexMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobIndexMapper.java new file mode 100644 index 0000000..2a5c5c6 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/JobIndexMapper.java @@ -0,0 +1,13 @@ +package com.ruoyi.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.JobIndex; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface JobIndexMapper extends BaseMapper { + + List getList(JobIndex jobIndex); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/WebsiteManagementMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/WebsiteManagementMapper.java new file mode 100644 index 0000000..33c00ea --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/WebsiteManagementMapper.java @@ -0,0 +1,13 @@ +package com.ruoyi.cms.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.cms.domain.WebsiteManagement; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface WebsiteManagementMapper extends BaseMapper { + + List getList(WebsiteManagement websiteManagement); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobDataTrendService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobDataTrendService.java new file mode 100644 index 0000000..06547a7 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/IJobDataTrendService.java @@ -0,0 +1,40 @@ +package com.ruoyi.cms.service; + +import com.ruoyi.cms.domain.JobDataTrend; +import java.util.List; +import java.util.Map; + +/** + * 岗位数据采集趋势统计Service接口 + * * @author ruoyi + * @date 2025-12-01 + */ +public interface IJobDataTrendService { + /** + * 查询岗位数据采集趋势统计列表 + */ + List selectJobDataTrendList(JobDataTrend jobDataTrend); + + /** + * 查询岗位数据采集趋势统计 + */ + JobDataTrend selectById(Long id); + + /** + * 新增岗位数据采集趋势统计 + */ + int insert(JobDataTrend jobDataTrend); + + /** + * 修改岗位数据采集趋势统计 + */ + int update(JobDataTrend jobDataTrend); + + /** + * 查询 total 类型的趋势列表 (MyBatis-Plus 实现) + * @param jobDataTrend 查询参数 + * @return 结果集合 + */ + List selectTrendTotalList(Map params); + +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobDataStorageDetectionService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobDataStorageDetectionService.java new file mode 100644 index 0000000..bd0e92b --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobDataStorageDetectionService.java @@ -0,0 +1,15 @@ +package com.ruoyi.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cms.domain.JobDataStorageDetection; + +import java.util.List; + +public interface JobDataStorageDetectionService extends IService { + + List getList(JobDataStorageDetection jobDataStorageDetection); + + JobDataStorageDetection getSingle(String detectionId); + + void saveData(JobDataStorageDetection jobDataStorageDetection) throws Exception; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobIndexService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobIndexService.java new file mode 100644 index 0000000..b623d4e --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/JobIndexService.java @@ -0,0 +1,10 @@ +package com.ruoyi.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cms.domain.JobIndex; + +import java.util.List; + +public interface JobIndexService extends IService { + List getList(JobIndex jobIndex); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/WebsiteManagementService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/WebsiteManagementService.java new file mode 100644 index 0000000..bca6c47 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/WebsiteManagementService.java @@ -0,0 +1,15 @@ +package com.ruoyi.cms.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cms.domain.WebsiteManagement; +import com.ruoyi.common.core.domain.AjaxResult; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +public interface WebsiteManagementService extends IService { + + List getList(WebsiteManagement websiteManagement); + + AjaxResult importData(MultipartFile file,String dataType); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataStorageDetectionServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataStorageDetectionServiceImpl.java new file mode 100644 index 0000000..3e80864 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataStorageDetectionServiceImpl.java @@ -0,0 +1,93 @@ +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.JobDataStorageDetail; +import com.ruoyi.cms.domain.JobDataStorageDetection; +import com.ruoyi.cms.domain.WebsiteManagement; +import com.ruoyi.cms.mapper.JobDataStorageDetailMapper; +import com.ruoyi.cms.mapper.JobDataStorageDetectionMapper; +import com.ruoyi.cms.mapper.WebsiteManagementMapper; +import com.ruoyi.cms.service.JobDataStorageDetectionService; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.uuid.IdUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Objects; + +@Service +public class JobDataStorageDetectionServiceImpl extends ServiceImpl implements JobDataStorageDetectionService { + + @Autowired + JobDataStorageDetectionMapper jobDataStorageDetectionMapper; + @Autowired + WebsiteManagementMapper websiteManagementMapper; + @Autowired + JobDataStorageDetailMapper detailMapper; + + @Override + public List getList(JobDataStorageDetection jobDataStorageDetection) { + return jobDataStorageDetectionMapper.getList(jobDataStorageDetection); + } + + @Override + public JobDataStorageDetection getSingle(String detectionId) { + JobDataStorageDetection jobDataStorageDetection = jobDataStorageDetectionMapper.selectById(detectionId); + if(jobDataStorageDetection!=null){ + List details = detailMapper.selectList(Wrappers.lambdaQuery().eq(JobDataStorageDetail::getDetectionId, jobDataStorageDetection.getDetectionId()).orderByAsc(JobDataStorageDetail::getWebsiteId,JobDataStorageDetail::getStorageTime)); + jobDataStorageDetection.setDetails(details); + } + return jobDataStorageDetection; + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveData(JobDataStorageDetection jobDataStorageDetection) throws Exception { + try { + Date date = DateUtils.getNowDate(); + String detectionId = IdUtils.fastSimpleUUID(); + jobDataStorageDetection.setDetectionId(detectionId); + List websiteManagements = websiteManagementMapper.getList(null); + WebsiteManagement websiteManagement = new WebsiteManagement(); + List details = jobDataStorageDetection.getDetails(); + if(details!=null&&!details.isEmpty()){ + int success = 0; + int failed = 0; + for(JobDataStorageDetail detail:details){ + detail.setDetectionId(detectionId); + if(StringUtils.isEmpty(detail.getWebsiteName())&&StringUtils.isNotNull(detail.getWebsiteId())&&detail.getWebsiteId()!=0){ + websiteManagement = websiteManagements.stream().filter(f-> Objects.nonNull(f.getWebsiteId())&&f.getWebsiteId().equals(detail.getWebsiteId())).findFirst().orElse(null); + if(websiteManagement!=null){ + detail.setWebsiteName(websiteManagement.getWebsiteName()); + } + } + if(StringUtils.isNull(detail.getStorageTime())){ + detail.setStorageTime(date); + } + detailMapper.insert(detail); + + success = success+(detail.getSuccessNumber()==null?0:detail.getSuccessNumber()); + failed = failed+(detail.getFailedNumber()==null?0:detail.getFailedNumber()); + } + String result = "入库成功"+success+"个岗位数据,入库失败"+failed+"个岗位数据"; + if(StringUtils.isNotNull(jobDataStorageDetection.getStorageResult())){ + jobDataStorageDetection.setStorageResult(jobDataStorageDetection.getStorageResult()+"。"+result); + }else{ + jobDataStorageDetection.setStorageResult(result); + } + } + if(StringUtils.isNull(jobDataStorageDetection.getStorageDate())){ + jobDataStorageDetection.setStorageDate(date); + } + jobDataStorageDetectionMapper.insert(jobDataStorageDetection); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception(e.getMessage()); + } + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataTrendServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataTrendServiceImpl.java new file mode 100644 index 0000000..e7238c3 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobDataTrendServiceImpl.java @@ -0,0 +1,149 @@ +package com.ruoyi.cms.service.impl; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.time.temporal.ChronoUnit; +import java.util.*; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.common.utils.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.cms.mapper.JobDataTrendMapper; +import com.ruoyi.cms.domain.JobDataTrend; +import com.ruoyi.cms.service.IJobDataTrendService; + +import static com.ruoyi.common.utils.DateUtils.YYYY_MM_DD_HH_MM_SS; + +/** + * 岗位数据采集趋势统计Service业务层处理 + * * @author ruoyi + * @date 2025-12-01 + */ +@Service +public class JobDataTrendServiceImpl extends ServiceImpl implements IJobDataTrendService { + + private static final DateTimeFormatter DATE_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + @Autowired + private JobDataTrendMapper jobDataTrendMapper; + + + @Override + public List selectJobDataTrendList(JobDataTrend jobDataTrend) { + return jobDataTrendMapper.selectJobDataTrendList(jobDataTrend); + } + + @Override + public JobDataTrend selectById(Long id) { + return getById(id); + } + + @Override + public int insert(JobDataTrend jobDataTrend) { + jobDataTrend.setCreateTime(DateUtils.dateTimeNow(YYYY_MM_DD_HH_MM_SS)); + jobDataTrend.setCreateBy(SecurityUtils.getUsername()); + jobDataTrend.setDelFlag("0"); + return save(jobDataTrend) ? 1 : 0; + } + @Override + public int update(JobDataTrend jobDataTrend) { + jobDataTrend.setUpdateTime(DateUtils.dateTimeNow(YYYY_MM_DD_HH_MM_SS)); + jobDataTrend.setUpdateBy(SecurityUtils.getUsername()); + return updateById(jobDataTrend) ? 1 : 0; + } + + @Override + public List selectTrendTotalList(Map params) { + // ================= Step 1: 确定时间范围 (LocalDate) ================= + String beginTimeStr = (params != null && params.get("beginTime") != null) ? params.get("beginTime").toString() : ""; + String endTimeStr = (params != null && params.get("endTime") != null) ? params.get("endTime").toString() : ""; + + LocalDate start; + LocalDate end; + + // 如果没有传时间,默认查最近 15 天(包含今天) + if (StringUtils.isEmpty(beginTimeStr) && StringUtils.isEmpty(endTimeStr)) { + end = LocalDate.now(); + start = end.minusDays(14); // 最近15天 + } else { + // 解析前端传入的 yyyy-MM-dd + try { + start = StringUtils.isNotEmpty(beginTimeStr) ? LocalDate.parse(beginTimeStr, DATE_FMT) : LocalDate.now().minusDays(14); + end = StringUtils.isNotEmpty(endTimeStr) ? LocalDate.parse(endTimeStr, DATE_FMT) : LocalDate.now(); + } catch (Exception e) { + // 防止格式解析错误兜底 + end = LocalDate.now(); + start = end.minusDays(14); + } + } + + // ================= Step 2: 查询数据库原始数据 ================= + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(JobDataTrend::getWebsiteName, "total"); + // 查询范围: >= Start 00:00:00 且 <= End 23:59:59 + // 注意:数据库存的是 Date (带时分秒),这里转一下 + lqw.ge(JobDataTrend::getStorageTime, Date.from(start.atStartOfDay(ZoneId.systemDefault()).toInstant())); + lqw.le(JobDataTrend::getStorageTime, Date.from(end.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant())); + + List dbList = this.baseMapper.selectList(lqw); + + // ================= Step 3: 数据聚合 (处理同一天多次运行的情况) ================= + // Map Key: "2025-12-01", Value: 聚合后的对象 + Map dateMap = new HashMap<>(); + + for (JobDataTrend item : dbList) { + // 将 Date 转为 yyyy-MM-dd 字符串作为 Key + String dateKey = DateUtils.parseDateToStr("yyyy-MM-dd", item.getStorageTime()); + + if (dateMap.containsKey(dateKey)) { + // 如果该天已存在数据,进行累加 + JobDataTrend existing = dateMap.get(dateKey); + existing.setInsertCount(existing.getInsertCount() + item.getInsertCount()); + existing.setDeleteCount(existing.getDeleteCount() + item.getDeleteCount()); + existing.setFailCount(existing.getFailCount() + item.getFailCount()); + // 保留最后一次的时间作为展示时间 + if (item.getStorageTime().after(existing.getStorageTime())) { + existing.setStorageTime(item.getStorageTime()); + } + } else { + // 第一次遇到该天的数据 + dateMap.put(dateKey, item); + } + } + + // ================= Step 4: 日期补全 (Gap Filling) ================= + List resultList = new ArrayList<>(); + + // 计算总天数,从 start 遍历到 end + long daysDiff = ChronoUnit.DAYS.between(start, end); + + for (int i = 0; i <= daysDiff; i++) { + LocalDate currentLocalDate = start.plusDays(i); + String dateKey = currentLocalDate.format(DATE_FMT); + + if (dateMap.containsKey(dateKey)) { + // 1. 如果当天有数据,直接取聚合后的数据 + resultList.add(dateMap.get(dateKey)); + } else { + // 2. 如果当天没数据,创建一个全0对象 + JobDataTrend emptyData = new JobDataTrend(); + emptyData.setWebsiteName("total"); + emptyData.setInsertCount(0L); + emptyData.setDeleteCount(0L); + emptyData.setFailCount(0L); + // 设置时间为当天的 00:00:00 + emptyData.setStorageTime(Date.from(currentLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant())); + resultList.add(emptyData); + } + } + + // 返回结果(此时 resultList 已经是按时间正序排列的:从旧到新) + return resultList; + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobIndexServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobIndexServiceImpl.java new file mode 100644 index 0000000..58e9661 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/JobIndexServiceImpl.java @@ -0,0 +1,22 @@ +package com.ruoyi.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cms.domain.JobIndex; +import com.ruoyi.cms.mapper.JobIndexMapper; +import com.ruoyi.cms.service.JobIndexService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class JobIndexServiceImpl extends ServiceImpl implements JobIndexService { + + @Autowired + JobIndexMapper jobIndexMapper; + + @Override + public List getList(JobIndex jobIndex) { + return jobIndexMapper.getList(jobIndex); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/WebsiteManagementServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/WebsiteManagementServiceImpl.java new file mode 100644 index 0000000..5c01f6a --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/WebsiteManagementServiceImpl.java @@ -0,0 +1,47 @@ +package com.ruoyi.cms.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cms.domain.WebsiteManagement; +import com.ruoyi.cms.mapper.WebsiteManagementMapper; +import com.ruoyi.cms.service.WebsiteManagementService; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; + +@Service +public class WebsiteManagementServiceImpl extends ServiceImpl implements WebsiteManagementService { + + @Autowired + WebsiteManagementMapper websiteManagementMapper; + + @Override + public List getList(WebsiteManagement websiteManagement) { + return websiteManagementMapper.getList(websiteManagement); + } + + @Override + public AjaxResult importData(MultipartFile file,String dataType) { + try { + ExcelUtil excelUtil = new ExcelUtil<>(WebsiteManagement.class); + List list = excelUtil.importExcel(file.getInputStream()); + if(list!=null&&!list.isEmpty()){ + for (WebsiteManagement websiteManagement : list) { + websiteManagement.setDataType(dataType); + if(StringUtils.isEmpty(websiteManagement.getIsActive())){ + websiteManagement.setIsActive("0"); + } + websiteManagementMapper.insert(websiteManagement); + } + } + return AjaxResult.success(); + }catch (Exception e) { + e.printStackTrace(); + return AjaxResult.error(e.getMessage()); + } + } +} diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/JobDataTrendMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/JobDataTrendMapper.xml new file mode 100644 index 0000000..d5b64d1 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/app/JobDataTrendMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + select ID, DELETE_COUNT, INSERT_COUNT, FAIL_COUNT, STORAGE_TIME,WEBSITE_NAME, DEL_FLAG, CREATE_BY, CREATE_TIME, UPDATE_BY, UPDATE_TIME + from JOB_DATA_TREND + + + + + diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/JobIndexMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/JobIndexMapper.xml new file mode 100644 index 0000000..25aa516 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/app/JobIndexMapper.xml @@ -0,0 +1,20 @@ + + + + + + + diff --git a/ruoyi-bussiness/src/main/resources/mapper/app/WebsiteManagementMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/app/WebsiteManagementMapper.xml new file mode 100644 index 0000000..b0811e4 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/app/WebsiteManagementMapper.xml @@ -0,0 +1,44 @@ + + + + + + +