添加功能

This commit is contained in:
马宝龙
2026-07-02 12:28:51 +08:00
parent 2eadb83fc8
commit 1e27484e54
11 changed files with 508 additions and 5 deletions

View File

@@ -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<ModelUnemploymentRateMonitor> list = modelUnemploymentRateMonitorService.list(modelUnemploymentRateMonitor);
return getDataTable(list);
}
}

View File

@@ -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;
}

View File

@@ -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<ModelUnemploymentRateMonitor> list(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor);
}

View File

@@ -45,10 +45,10 @@ public interface ModelWarningIndicatorMapper {
/**
* 查询唯一
*
* @param modelWarningIndicator 指标
* @param indicatorCode 指标编码
* @return 指标
*/
ModelWarningIndicator findUnique(ModelWarningIndicator modelWarningIndicator);
ModelWarningIndicator findUnique(String indicatorCode);
/**
* 查询列表

View File

@@ -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<ModelUnemploymentRateMonitor> list(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor);
}

View File

@@ -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<ModelUnemploymentRateMonitor> 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<ModelUnemploymentRateMonitor> 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<ModelUnemploymentRateMonitor> findUnique(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) {
ModelUnemploymentRateMonitor unique =
modelUnemploymentRateMonitorMapper.findUnique(modelUnemploymentRateMonitor);
return Optional.ofNullable(unique);
}
@Override
public List<ModelUnemploymentRateMonitor> list(ModelUnemploymentRateMonitor modelUnemploymentRateMonitor) {
return modelUnemploymentRateMonitorMapper.list(modelUnemploymentRateMonitor);
}
}

View File

@@ -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

View File

@@ -120,7 +120,7 @@ public class ModelWarningIndicatorServiceImpl implements ModelWarningIndicatorSe
* @return 指标
*/
private Optional<ModelWarningIndicator> findUnique(ModelWarningIndicator modelWarningIndicator) {
ModelWarningIndicator unique = modelWarningIndicatorMapper.findUnique(modelWarningIndicator);
ModelWarningIndicator unique = modelWarningIndicatorMapper.findUnique(modelWarningIndicator.getIndicatorCode());
return Optional.ofNullable(unique);
}

View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cms.mapper.ModelUnemploymentRateMonitorMapper">
<insert id="insert" parameterType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor">
INSERT INTO model_unemployment_rate_monitor (indicator_code, sort_order)
VALUES (#{indicatorCode}, #{sortOrder})
</insert>
<insert id="update" parameterType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor">
UPDATE model_unemployment_rate_monitor
SET indicator_code = #{indicatorCode},
sort_order = #{sortOrder}
WHERE id = #{id}
</insert>
<insert id="deleteById" parameterType="java.lang.Long">
DELETE
FROM model_unemployment_rate_monitor
WHERE id = #{id}
</insert>
<select id="selectById" parameterType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor"
resultType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor">
SELECT a.id, a.indicator_code, a.sort_order, b.indicator_name
FROM model_unemployment_rate_monitor a
LEFT JOIN model_warning_indicator b ON a.indicator_code = b.indicator_code
WHERE a.id = #{id}
</select>
<select id="findUnique" parameterType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor"
resultType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor">
SELECT *
FROM model_unemployment_rate_monitor
WHERE indicator_code = #{indicatorCode}
</select>
<select id="list" parameterType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor"
resultType="com.ruoyi.cms.domain.ModelUnemploymentRateMonitor">
SELECT a.id,a.indicator_code,a.sort_order, b.indicator_name
FROM model_unemployment_rate_monitor a
LEFT JOIN model_warning_indicator b ON a.indicator_code = b.indicator_code
<where>
<if test="id != null ">
AND a.id = #{id}
</if>
<if test="indicatorCode != null and indicatorCode != ''">
AND a.indicator_code = #{indicatorCode}
</if>
</where>
ORDER BY a.sort_order
</select>
</mapper>

View File

@@ -31,7 +31,7 @@
WHERE id = #{id}
</select>
<select id="findUnique" parameterType="com.ruoyi.cms.domain.ModelWarningIndicator"
<select id="findUnique" parameterType="java.lang.String"
resultType="com.ruoyi.cms.domain.ModelWarningIndicator">
SELECT *
FROM model_warning_indicator

View File

@@ -771,4 +771,60 @@ COMMENT
ON COLUMN shz_data_dashboard.model_warning_indicator_data.remark IS '备注';
COMMENT
ON TABLE shz_data_dashboard.model_warning_indicator_data IS '就业失业预警指标数据';
ON TABLE shz_data_dashboard.model_warning_indicator_data IS '就业失业预警指标数据';
-- 失业率监测管理
CREATE TABLE shz_data_dashboard.model_unemployment_rate_monitor
(
id serial PRIMARY KEY,
indicator_code character varying(200) NOT NULL COLLATE pg_catalog."default",
sort_order integer NOT NULL
)
;
ALTER TABLE shz_data_dashboard.model_unemployment_rate_monitor
OWNER TO sysdba;
COMMENT
ON COLUMN shz_data_dashboard.model_unemployment_rate_monitor.id IS '主键';
COMMENT
ON COLUMN shz_data_dashboard.model_unemployment_rate_monitor.indicator_code IS '指标编码';
COMMENT
ON COLUMN shz_data_dashboard.model_unemployment_rate_monitor.sort_order IS '排序';
COMMENT
ON TABLE shz_data_dashboard.model_unemployment_rate_monitor IS '失业率监测管理';
-- 就业监测综合指数管理
CREATE TABLE shz_data_dashboard.model_employment_monitor_composite
(
id serial PRIMARY KEY,
indicator_code character varying(200) NOT NULL COLLATE pg_catalog."default",
indicator_weight double precision NOT NULL,
indicator_type integer NOT NULL,
sort_order integer NOT NULL
)
;
ALTER TABLE shz_data_dashboard.model_employment_monitor_composite
OWNER TO sysdba;
COMMENT
ON COLUMN shz_data_dashboard.model_employment_monitor_composite.id IS '主键';
COMMENT
ON COLUMN shz_data_dashboard.model_employment_monitor_composite.indicator_code IS '指标编码';
COMMENT
ON COLUMN shz_data_dashboard.model_employment_monitor_composite.indicator_weight IS '指标权重';
COMMENT
ON COLUMN shz_data_dashboard.model_employment_monitor_composite.indicator_type IS '指标类型';
COMMENT
ON COLUMN shz_data_dashboard.model_employment_monitor_composite.sort_order IS '排序';
COMMENT
ON TABLE shz_data_dashboard.model_employment_monitor_composite IS '就业监测综合指数管理';