From 1e27484e5469b064b9b90c8d41a7f556428a4d34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=AE=9D=E9=BE=99?= Date: Thu, 2 Jul 2026 12:28:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...odelUnemploymentRateMonitorController.java | 96 +++++++++++++ .../domain/ModelUnemploymentRateMonitor.java | 45 ++++++ .../ModelUnemploymentRateMonitorMapper.java | 59 ++++++++ .../mapper/ModelWarningIndicatorMapper.java | 4 +- .../ModelUnemploymentRateMonitorService.java | 51 +++++++ ...delUnemploymentRateMonitorServiceImpl.java | 129 ++++++++++++++++++ .../ModelWarningIndicatorDataServiceImpl.java | 11 ++ .../ModelWarningIndicatorServiceImpl.java | 2 +- .../ModelUnemploymentRateMonitorMapper.xml | 56 ++++++++ .../mapper/ModelWarningIndicatorMapper.xml | 2 +- sql/datadashboard/table.sql | 58 +++++++- 11 files changed, 508 insertions(+), 5 deletions(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelUnemploymentRateMonitorController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelUnemploymentRateMonitor.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelUnemploymentRateMonitorMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelUnemploymentRateMonitorService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelUnemploymentRateMonitorServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/resources/mapper/ModelUnemploymentRateMonitorMapper.xml diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelUnemploymentRateMonitorController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelUnemploymentRateMonitorController.java new file mode 100644 index 0000000..3010693 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelUnemploymentRateMonitorController.java @@ -0,0 +1,96 @@ +package com.ruoyi.cms.controller; + +import com.ruoyi.cms.domain.ModelUnemploymentRateMonitor; +import com.ruoyi.cms.service.ModelUnemploymentRateMonitorService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; +import java.util.List; + +/** + * 失业率监测管理 + * + * @author 马宝龙 + * @date 2026/7/2 + */ +@RestController +@RequestMapping("/model/unemploymentRateMonitor") +@RequiredArgsConstructor +public class ModelUnemploymentRateMonitorController extends BaseController { + + private final ModelUnemploymentRateMonitorService modelUnemploymentRateMonitorService; + + /** + * 创建 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 创建结果 + */ + @PostMapping("/create") + public AjaxResult create(@Valid @RequestBody ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + modelUnemploymentRateMonitorService.create(modelUnemploymentRateMonitor); + return AjaxResult.success(); + } + + /** + * 更新 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 更新结果 + */ + @PutMapping("/update") + public AjaxResult update(@Valid @RequestBody ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + modelUnemploymentRateMonitorService.update(modelUnemploymentRateMonitor); + return AjaxResult.success(); + } + + /** + * 删除 + * + * @param id ID + * @return 删除结果 + */ + @DeleteMapping("/delete") + public AjaxResult delete(@RequestParam Long id) { + modelUnemploymentRateMonitorService.delete(id); + return AjaxResult.success(); + } + + /** + * 查询详情 + * + * @param id ID + * @return 失业率监测 + */ + @GetMapping("/detail") + public AjaxResult detail(@RequestParam Long id) { + ModelUnemploymentRateMonitor monitor = modelUnemploymentRateMonitorService.detail(id); + return AjaxResult.success(monitor); + } + + /** + * 查询分页列表 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 分页列表 + */ + @PostMapping("/page") + @ResponseBody + public TableDataInfo page(@RequestBody ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + startPage(); + List list = modelUnemploymentRateMonitorService.list(modelUnemploymentRateMonitor); + return getDataTable(list); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelUnemploymentRateMonitor.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelUnemploymentRateMonitor.java new file mode 100644 index 0000000..0e4030c --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelUnemploymentRateMonitor.java @@ -0,0 +1,45 @@ +package com.ruoyi.cms.domain; + +import com.ruoyi.common.annotation.Excel; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 失业率监测管理 + * + * @author 马宝龙 + * @date 2026/7/2 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ModelUnemploymentRateMonitor implements Serializable { + private static final long serialVersionUID = -3444223057995852027L; + + /** + * 主键 + */ + private Long id; + + /** + * 指标编码 + */ + @Excel(name = "指标编码") + private String indicatorCode; + + /** + * 指标名称 + */ + private String indicatorName; + + /** + * 排序 + */ + @Excel(name = "排序") + private Integer sortOrder; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelUnemploymentRateMonitorMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelUnemploymentRateMonitorMapper.java new file mode 100644 index 0000000..3a10222 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelUnemploymentRateMonitorMapper.java @@ -0,0 +1,59 @@ +package com.ruoyi.cms.mapper; + +import com.ruoyi.cms.domain.ModelUnemploymentRateMonitor; + +import java.util.List; + +/** + * 失业率监测管理 + * + * @author 马宝龙 + * @date 2026/7/2 + */ +public interface ModelUnemploymentRateMonitorMapper { + + /** + * 新增 + * + * @param modelUnemploymentRateMonitor 失业率监测 + */ + void insert(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); + + /** + * 修改 + * + * @param modelUnemploymentRateMonitor 失业率监测 + */ + void update(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); + + /** + * 通过ID删除 + * + * @param id ID + */ + void deleteById(Long id); + + /** + * 通过ID查询 + * + * @param id ID + * @return 失业率监测 + */ + ModelUnemploymentRateMonitor selectById(Long id); + + /** + * 查询唯一 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 失业率监测 + */ + ModelUnemploymentRateMonitor findUnique(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); + + /** + * 查询列表 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 列表 + */ + List list(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorMapper.java index 61d4c01..ade9e0e 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorMapper.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorMapper.java @@ -45,10 +45,10 @@ public interface ModelWarningIndicatorMapper { /** * 查询唯一 * - * @param modelWarningIndicator 指标 + * @param indicatorCode 指标编码 * @return 指标 */ - ModelWarningIndicator findUnique(ModelWarningIndicator modelWarningIndicator); + ModelWarningIndicator findUnique(String indicatorCode); /** * 查询列表 diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelUnemploymentRateMonitorService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelUnemploymentRateMonitorService.java new file mode 100644 index 0000000..127dbaa --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelUnemploymentRateMonitorService.java @@ -0,0 +1,51 @@ +package com.ruoyi.cms.service; + +import com.ruoyi.cms.domain.ModelUnemploymentRateMonitor; + +import java.util.List; + +/** + * 失业率监测管理 + * + * @author 马宝龙 + * @date 2026/7/2 + */ +public interface ModelUnemploymentRateMonitorService { + + /** + * 创建 + * + * @param modelUnemploymentRateMonitor 失业率监测 + */ + void create(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); + + /** + * 更新 + * + * @param modelUnemploymentRateMonitor 失业率监测 + */ + void update(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); + + /** + * 删除 + * + * @param id ID + */ + void delete(Long id); + + /** + * 查询详情 + * + * @param id ID + * @return 失业率监测 + */ + ModelUnemploymentRateMonitor detail(Long id); + + /** + * 查询列表 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 列表 + */ + List list(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelUnemploymentRateMonitorServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelUnemploymentRateMonitorServiceImpl.java new file mode 100644 index 0000000..f09184d --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelUnemploymentRateMonitorServiceImpl.java @@ -0,0 +1,129 @@ +package com.ruoyi.cms.service.impl; + +import com.ruoyi.cms.domain.ModelUnemploymentRateMonitor; +import com.ruoyi.cms.domain.ModelWarningIndicator; +import com.ruoyi.cms.mapper.ModelUnemploymentRateMonitorMapper; +import com.ruoyi.cms.mapper.ModelWarningIndicatorMapper; +import com.ruoyi.cms.service.ModelUnemploymentRateMonitorService; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.StringUtils; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +/** + * 失业率监测管理 + * + * @author 马宝龙 + * @date 2026/7/2 + */ +@Slf4j +@Service +@Validated +@RequiredArgsConstructor +public class ModelUnemploymentRateMonitorServiceImpl implements ModelUnemploymentRateMonitorService { + + + private final ModelUnemploymentRateMonitorMapper modelUnemploymentRateMonitorMapper; + private final ModelWarningIndicatorMapper modelWarningIndicatorMapper; + + @Override + public void create(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + + check(modelUnemploymentRateMonitor); + + // 查询唯一 + Optional optional = findUnique(modelUnemploymentRateMonitor); + if (optional.isPresent()) { + // 更新 + ModelUnemploymentRateMonitor exists = optional.get(); + modelUnemploymentRateMonitor.setId(exists.getId()); + modelUnemploymentRateMonitorMapper.update(modelUnemploymentRateMonitor); + } else { + // 新增 + modelUnemploymentRateMonitorMapper.insert(modelUnemploymentRateMonitor); + } + } + + /** + * 检查 + * + * @param modelUnemploymentRateMonitor 失业率监测 + */ + void check(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + if (StringUtils.isBlank(modelUnemploymentRateMonitor.getIndicatorCode())) { + throw new ServiceException("指标编码不能为空"); + } + if (Objects.isNull(modelUnemploymentRateMonitor.getSortOrder())) { + throw new ServiceException("排序不能为空"); + } + + // 校验指标是否存在 + ModelWarningIndicator unique = + modelWarningIndicatorMapper.findUnique(modelUnemploymentRateMonitor.getIndicatorCode()); + if (Objects.isNull(unique)) { + throw new ServiceException("指标[" + modelUnemploymentRateMonitor.getIndicatorCode() + "]不存在"); + } + + } + + @Override + public void update(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + + check(modelUnemploymentRateMonitor); + + if (Objects.isNull(modelUnemploymentRateMonitor.getId())) { + throw new ServiceException("id不能为空"); + } + Optional unique = findUnique(modelUnemploymentRateMonitor); + if (!unique.isPresent()) { + modelUnemploymentRateMonitorMapper.update(modelUnemploymentRateMonitor); + return; + } + ModelUnemploymentRateMonitor exists = unique.get(); + if (!exists.getId().equals(modelUnemploymentRateMonitor.getId())) { + throw new ServiceException("指标已存在"); + } + modelUnemploymentRateMonitorMapper.update(modelUnemploymentRateMonitor); + } + + @Override + public void delete(Long id) { + if (Objects.isNull(id)) { + throw new ServiceException("id不能为空"); + } + modelUnemploymentRateMonitorMapper.deleteById(id); + } + + @Override + public ModelUnemploymentRateMonitor detail(Long id) { + + if (Objects.isNull(id)) { + throw new ServiceException("id不能为空"); + } + + return modelUnemploymentRateMonitorMapper.selectById(id); + } + + /** + * 查询唯一 + * + * @param modelUnemploymentRateMonitor 失业率监测 + * @return 失业率监测 + */ + private Optional findUnique(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + ModelUnemploymentRateMonitor unique = + modelUnemploymentRateMonitorMapper.findUnique(modelUnemploymentRateMonitor); + return Optional.ofNullable(unique); + } + + @Override + public List list(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) { + return modelUnemploymentRateMonitorMapper.list(modelUnemploymentRateMonitor); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorDataServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorDataServiceImpl.java index 8f8c55e..e5a8b6f 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorDataServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorDataServiceImpl.java @@ -1,9 +1,11 @@ package com.ruoyi.cms.service.impl; import com.ruoyi.cms.constant.enums.ModelTemplateTypeEnum; +import com.ruoyi.cms.domain.ModelWarningIndicator; import com.ruoyi.cms.domain.ModelWarningIndicatorData; import com.ruoyi.cms.domain.dto.ModelExportParamDto; import com.ruoyi.cms.mapper.ModelWarningIndicatorDataMapper; +import com.ruoyi.cms.mapper.ModelWarningIndicatorMapper; import com.ruoyi.cms.service.ModelWarningIndicatorDataService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; @@ -34,6 +36,8 @@ import java.util.Optional; public class ModelWarningIndicatorDataServiceImpl implements ModelWarningIndicatorDataService { private final ModelWarningIndicatorDataMapper modelWarningIndicatorDataMapper; + private final ModelWarningIndicatorMapper modelWarningIndicatorMapper; + private final Validator validator; @Override @@ -79,6 +83,13 @@ public class ModelWarningIndicatorDataServiceImpl implements ModelWarningIndicat if (StringUtils.isBlank(modelWarningIndicatorData.getRegionName())) { throw new ServiceException("区域名称不能为空"); } + + // 校验指标是否存在 + ModelWarningIndicator unique = + modelWarningIndicatorMapper.findUnique(modelWarningIndicatorData.getIndicatorCode()); + if (Objects.isNull(unique)) { + throw new ServiceException("指标[" + modelWarningIndicatorData.getIndicatorCode() + "]不存在"); + } } @Override diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorServiceImpl.java index 9e459e0..04b877f 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorServiceImpl.java @@ -120,7 +120,7 @@ public class ModelWarningIndicatorServiceImpl implements ModelWarningIndicatorSe * @return 指标 */ private Optional findUnique(ModelWarningIndicator modelWarningIndicator) { - ModelWarningIndicator unique = modelWarningIndicatorMapper.findUnique(modelWarningIndicator); + ModelWarningIndicator unique = modelWarningIndicatorMapper.findUnique(modelWarningIndicator.getIndicatorCode()); return Optional.ofNullable(unique); } diff --git a/ruoyi-bussiness/src/main/resources/mapper/ModelUnemploymentRateMonitorMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/ModelUnemploymentRateMonitorMapper.xml new file mode 100644 index 0000000..508c3a3 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/ModelUnemploymentRateMonitorMapper.xml @@ -0,0 +1,56 @@ + + + + + + INSERT INTO model_unemployment_rate_monitor (indicator_code, sort_order) + VALUES (#{indicatorCode}, #{sortOrder}) + + + + UPDATE model_unemployment_rate_monitor + SET indicator_code = #{indicatorCode}, + sort_order = #{sortOrder} + WHERE id = #{id} + + + + DELETE + FROM model_unemployment_rate_monitor + WHERE id = #{id} + + + + + + + + + \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorMapper.xml index b317895..62d049b 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorMapper.xml @@ -31,7 +31,7 @@ WHERE id = #{id} -