diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelWarningIndicatorDataController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelWarningIndicatorDataController.java new file mode 100644 index 0000000..0a43143 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelWarningIndicatorDataController.java @@ -0,0 +1,96 @@ +package com.ruoyi.cms.controller; + +import com.ruoyi.cms.domain.ModelWarningIndicatorData; +import com.ruoyi.cms.service.ModelWarningIndicatorDataService; +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/1 + */ +@RestController +@RequestMapping("/model/warningIndicatorData") +@RequiredArgsConstructor +public class ModelWarningIndicatorDataController extends BaseController { + + private final ModelWarningIndicatorDataService modelWarningIndicatorDataService; + + /** + * 创建指标数据 + * + * @param modelWarningIndicatorData 指标数据 + * @return 创建结果 + */ + @PostMapping("/create") + public AjaxResult createIndicatorData(@Valid @RequestBody ModelWarningIndicatorData modelWarningIndicatorData) { + modelWarningIndicatorDataService.create(modelWarningIndicatorData); + return AjaxResult.success(); + } + + /** + * 更新指标数据 + * + * @param modelWarningIndicatorData 指标数据 + * @return 更新结果 + */ + @PutMapping("/update") + public AjaxResult updateIndicatorData(@Valid @RequestBody ModelWarningIndicatorData modelWarningIndicatorData) { + modelWarningIndicatorDataService.update(modelWarningIndicatorData); + return AjaxResult.success(); + } + + /** + * 删除指标数据 + * + * @param id 指标数据id + * @return 删除结果 + */ + @DeleteMapping("/delete") + public AjaxResult deleteIndicatorData(@RequestParam Long id) { + modelWarningIndicatorDataService.delete(id); + return AjaxResult.success(); + } + + /** + * 查询指标数据详情 + * + * @param id ID + * @return 指标数据 + */ + @GetMapping("/detail") + public AjaxResult detail(@RequestParam Long id) { + ModelWarningIndicatorData indicatorData = modelWarningIndicatorDataService.detail(id); + return AjaxResult.success(indicatorData); + } + + /** + * 查询分页列表 + * + * @param modelWarningIndicatorData 指标数据 + * @return 分页列表 + */ + @PostMapping("/page") + @ResponseBody + public TableDataInfo page(@RequestBody ModelWarningIndicatorData modelWarningIndicatorData) { + startPage(); + List list = modelWarningIndicatorDataService.list(modelWarningIndicatorData); + return getDataTable(list); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelWarningIndicatorData.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelWarningIndicatorData.java new file mode 100644 index 0000000..785a8dd --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelWarningIndicatorData.java @@ -0,0 +1,64 @@ +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; +import java.math.BigDecimal; + +/** + * 就业失业预警指标数据 + * + * @author 马宝龙 + * @date 2026/7/1 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ModelWarningIndicatorData implements Serializable { + private static final long serialVersionUID = -4917368203958852026L; + + /** + * ID + */ + private Long id; + /** + * 指标编码 + */ + @Excel(name = "指标编码") + private String indicatorCode; + /** + * 指标值 + */ + @Excel(name = "指标值") + private BigDecimal dataValue; + /** + * 年份 + */ + @Excel(name = "年份") + private Integer year; + /** + * 月份 + */ + @Excel(name = "月份") + private Integer month; + /** + * 区域编码 + */ + @Excel(name = "区域编码") + private String regionCode; + /** + * 区域名称 + */ + @Excel(name = "区域名称") + private String regionName; + /** + * 备注 + */ + @Excel(name = "备注") + private String remark; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorDataMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorDataMapper.java new file mode 100644 index 0000000..c45bfcd --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelWarningIndicatorDataMapper.java @@ -0,0 +1,59 @@ +package com.ruoyi.cms.mapper; + +import com.ruoyi.cms.domain.ModelWarningIndicatorData; + +import java.util.List; + +/** + * 就业失业预警指标数据 + * + * @author 马宝龙 + * @date 2026/7/1 + */ +public interface ModelWarningIndicatorDataMapper { + + /** + * 新增指标数据 + * + * @param modelWarningIndicatorData 指标数据 + */ + void insert(ModelWarningIndicatorData modelWarningIndicatorData); + + /** + * 修改指标数据 + * + * @param modelWarningIndicatorData 指标数据 + */ + void update(ModelWarningIndicatorData modelWarningIndicatorData); + + /** + * 通过ID删除指标数据 + * + * @param id ID + */ + void deleteById(Long id); + + /** + * 通过ID查询指标数据 + * + * @param id ID + * @return 指标数据 + */ + ModelWarningIndicatorData selectById(Long id); + + /** + * 查询唯一 + * + * @param modelWarningIndicatorData 指标数据 + * @return 指标数据 + */ + ModelWarningIndicatorData findUnique(ModelWarningIndicatorData modelWarningIndicatorData); + + /** + * 查询列表 + * + * @param modelWarningIndicatorData 指标数据 + * @return 列表 + */ + List list(ModelWarningIndicatorData modelWarningIndicatorData); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelWarningIndicatorDataService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelWarningIndicatorDataService.java new file mode 100644 index 0000000..6af68cc --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelWarningIndicatorDataService.java @@ -0,0 +1,51 @@ +package com.ruoyi.cms.service; + +import com.ruoyi.cms.domain.ModelWarningIndicatorData; + +import java.util.List; + +/** + * 就业失业预警指标数据 + * + * @author 马宝龙 + * @date 2026/7/1 + */ +public interface ModelWarningIndicatorDataService { + + /** + * 创建指标数据 + * + * @param modelWarningIndicatorData 指标数据 + */ + void create(ModelWarningIndicatorData modelWarningIndicatorData); + + /** + * 更新指标数据 + * + * @param modelWarningIndicatorData 指标数据 + */ + void update(ModelWarningIndicatorData modelWarningIndicatorData); + + /** + * 删除指标数据 + * + * @param id 指标数据id + */ + void delete(Long id); + + /** + * 查询指标数据详情 + * + * @param id ID + * @return 指标数据 + */ + ModelWarningIndicatorData detail(Long id); + + /** + * 查询列表 + * + * @param modelWarningIndicatorData 指标数据 + * @return 列表 + */ + List list(ModelWarningIndicatorData modelWarningIndicatorData); +} \ 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 new file mode 100644 index 0000000..cb80dd9 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelWarningIndicatorDataServiceImpl.java @@ -0,0 +1,129 @@ +package com.ruoyi.cms.service.impl; + +import com.ruoyi.cms.domain.ModelWarningIndicatorData; +import com.ruoyi.cms.mapper.ModelWarningIndicatorDataMapper; +import com.ruoyi.cms.service.ModelWarningIndicatorDataService; +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/1 + */ +@Slf4j +@Service +@Validated +@RequiredArgsConstructor +public class ModelWarningIndicatorDataServiceImpl implements ModelWarningIndicatorDataService { + + private final ModelWarningIndicatorDataMapper modelWarningIndicatorDataMapper; + + @Override + public void create(ModelWarningIndicatorData modelWarningIndicatorData) { + + check(modelWarningIndicatorData); + + // 查询唯一 + Optional optional = findUnique(modelWarningIndicatorData); + if (optional.isPresent()) { + // 更新 + ModelWarningIndicatorData exists = optional.get(); + modelWarningIndicatorData.setId(exists.getId()); + modelWarningIndicatorDataMapper.update(modelWarningIndicatorData); + } else { + // 新增 + modelWarningIndicatorDataMapper.insert(modelWarningIndicatorData); + } + } + + /** + * 检查 + * + * @param modelWarningIndicatorData 指标数据 + */ + void check(ModelWarningIndicatorData modelWarningIndicatorData) { + if (StringUtils.isBlank(modelWarningIndicatorData.getIndicatorCode())) { + throw new ServiceException("指标编码不能为空"); + } + if (Objects.isNull(modelWarningIndicatorData.getDataValue())) { + throw new ServiceException("指标值不能为空"); + } + if (Objects.isNull(modelWarningIndicatorData.getYear())) { + throw new ServiceException("年份不能为空"); + } + if (Objects.isNull(modelWarningIndicatorData.getMonth()) || modelWarningIndicatorData.getMonth() < 1 + || modelWarningIndicatorData.getMonth() > 12) { + throw new ServiceException("月份必须在1-12之间"); + } + if (StringUtils.isBlank(modelWarningIndicatorData.getRegionCode())) { + throw new ServiceException("区域编码不能为空"); + } + if (StringUtils.isBlank(modelWarningIndicatorData.getRegionName())) { + throw new ServiceException("区域名称不能为空"); + } + } + + @Override + public void update(ModelWarningIndicatorData modelWarningIndicatorData) { + + check(modelWarningIndicatorData); + + if (Objects.isNull(modelWarningIndicatorData.getId())) { + throw new ServiceException("id不能为空"); + } + Optional unique = findUnique(modelWarningIndicatorData); + if (!unique.isPresent()) { + modelWarningIndicatorDataMapper.update(modelWarningIndicatorData); + return; + } + ModelWarningIndicatorData exists = unique.get(); + if (!exists.getId().equals(modelWarningIndicatorData.getId())) { + throw new ServiceException("指标数据已存在"); + } + modelWarningIndicatorDataMapper.update(modelWarningIndicatorData); + } + + @Override + public void delete(Long id) { + if (Objects.isNull(id)) { + throw new ServiceException("id不能为空"); + } + modelWarningIndicatorDataMapper.deleteById(id); + } + + @Override + public ModelWarningIndicatorData detail(Long id) { + + if (Objects.isNull(id)) { + throw new ServiceException("id不能为空"); + } + + return modelWarningIndicatorDataMapper.selectById(id); + } + + /** + * 查询唯一 + * + * @param modelWarningIndicatorData 指标数据 + * @return 指标数据 + */ + private Optional findUnique(ModelWarningIndicatorData modelWarningIndicatorData) { + ModelWarningIndicatorData unique = modelWarningIndicatorDataMapper.findUnique(modelWarningIndicatorData); + return Optional.ofNullable(unique); + } + + @Override + public List list(ModelWarningIndicatorData modelWarningIndicatorData) { + return modelWarningIndicatorDataMapper.list(modelWarningIndicatorData); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorDataMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorDataMapper.xml new file mode 100644 index 0000000..0ab712c --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorDataMapper.xml @@ -0,0 +1,74 @@ + + + + + + INSERT INTO model_warning_indicator_data (indicator_code, data_value, year, month, region_code, region_name, remark) + VALUES (#{indicatorCode}, #{dataValue}, #{year}, #{month}, #{regionCode}, #{regionName}, #{remark}) + + + + + UPDATE + model_warning_indicator_data + SET indicator_code = #{indicatorCode}, + data_value = #{dataValue}, + year = #{year}, + month = #{month}, + region_code = #{regionCode}, + region_name = #{regionName}, + remark = #{remark} + WHERE id = #{id} + + + + DELETE + FROM model_warning_indicator_data + 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 228fe01..b317895 100644 --- a/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorMapper.xml +++ b/ruoyi-bussiness/src/main/resources/mapper/ModelWarningIndicatorMapper.xml @@ -36,7 +36,6 @@ SELECT * FROM model_warning_indicator WHERE indicator_code = #{indicatorCode} - AND indicator_type = #{indicatorType}