From fbf2b2da0efeb6b7ec4df7c0b005ef7f251e5f96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E5=AE=9D=E9=BE=99?= Date: Fri, 3 Jul 2026 13:00:37 +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 --- .../constant/enums/ModelTemplateTypeEnum.java | 2 + ...lSupplyMonitorLaborJoinRateController.java | 104 +++++++++ .../ModelSupplyMonitorLaborJoinRate.java | 49 +++++ ...ModelSupplyMonitorLaborJoinRateMapper.java | 64 ++++++ ...odelSupplyMonitorLaborJoinRateService.java | 75 +++++++ .../service/impl/ModelCommonServiceImpl.java | 7 + ...SupplyMonitorLaborJoinRateServiceImpl.java | 200 ++++++++++++++++++ .../ModelSupplyMonitorLaborJoinRateMapper.xml | 68 ++++++ ...³åŠ¨åŠ›åŠ¨æ€ç›‘测系统-劳动力供给劳动å‚与率.xlsx | Bin 0 -> 10284 bytes sql/datadashboard/table.sql | 35 ++- 10 files changed, 603 insertions(+), 1 deletion(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorLaborJoinRateController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorLaborJoinRate.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorLaborJoinRateMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorLaborJoinRateService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorLaborJoinRateServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorLaborJoinRateMapper.xml create mode 100644 ruoyi-bussiness/src/main/resources/template/劳动力动æ€ç›‘测系统-劳动力供给劳动å‚与率.xlsx diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/constant/enums/ModelTemplateTypeEnum.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/constant/enums/ModelTemplateTypeEnum.java index 2e70af0..714265a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/constant/enums/ModelTemplateTypeEnum.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/constant/enums/ModelTemplateTypeEnum.java @@ -18,6 +18,8 @@ public enum ModelTemplateTypeEnum { MODEL_SUPPLY_MONITOR_POPULATION("劳动力动æ€ç›‘测系统-劳动力供给预测人å£"), MODEL_SUPPLY_MONITOR_TOTAL_FERTILITY_RATE("劳动力动æ€ç›‘测系统-劳动力供给预测总和生育率"), + + MODEL_SUPPLY_MONITOR_LABOR_JOIN_RATE("劳动力动æ€ç›‘测系统-劳动力供给劳动å‚与率"), ; private final String desc; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorLaborJoinRateController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorLaborJoinRateController.java new file mode 100644 index 0000000..314ff7c --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorLaborJoinRateController.java @@ -0,0 +1,104 @@ +package com.ruoyi.cms.controller; + +import com.ruoyi.cms.domain.ModelSupplyMonitorLaborJoinRate; +import com.ruoyi.cms.service.ModelSupplyMonitorLaborJoinRateService; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +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.RestController; + +import javax.validation.Valid; +import java.util.List; + +/** + * 劳动力供给劳动å‚与率 + * + * @author 马å®é¾™ + * @date 2026/7/3 + */ +@RestController +@RequestMapping("/model/supplyMonitorLaborJoinRate") +@RequiredArgsConstructor +public class ModelSupplyMonitorLaborJoinRateController extends BaseController { + + private final ModelSupplyMonitorLaborJoinRateService modelSupplyMonitorLaborJoinRateService; + + /** + * 创建 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 创建结果 + */ + @PostMapping("/create") + public AjaxResult create(@Valid @RequestBody ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + modelSupplyMonitorLaborJoinRateService.create(modelSupplyMonitorLaborJoinRate); + return AjaxResult.success(); + } + + /** + * æ›´æ–° + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 更新结果 + */ + @PutMapping("/update") + public AjaxResult update(@Valid @RequestBody ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + modelSupplyMonitorLaborJoinRateService.update(modelSupplyMonitorLaborJoinRate); + return AjaxResult.success(); + } + + /** + * 删除 + * + * @param id ID + * @return 删除结果 + */ + @DeleteMapping("/delete") + public AjaxResult delete(@RequestParam Long id) { + modelSupplyMonitorLaborJoinRateService.delete(id); + return AjaxResult.success(); + } + + /** + * 清空 + * + * @return 清空结果 + */ + @DeleteMapping("/clear") + public AjaxResult clear() { + modelSupplyMonitorLaborJoinRateService.clear(); + return AjaxResult.success(); + } + + /** + * 查询详情 + * + * @param id ID + * @return 劳动力供给劳动å‚与率 + */ + @GetMapping("/detail") + public AjaxResult detail(@RequestParam Long id) { + ModelSupplyMonitorLaborJoinRate data = modelSupplyMonitorLaborJoinRateService.detail(id); + return AjaxResult.success(data); + } + + /** + * 查询列表 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 列表 + */ + @PostMapping("/list") + public AjaxResult list(@RequestBody ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + List list = + modelSupplyMonitorLaborJoinRateService.list(modelSupplyMonitorLaborJoinRate); + return AjaxResult.success(list); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorLaborJoinRate.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorLaborJoinRate.java new file mode 100644 index 0000000..bdcd4be --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorLaborJoinRate.java @@ -0,0 +1,49 @@ +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/3 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ModelSupplyMonitorLaborJoinRate implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + /** + * 年份 + */ + @Excel(name = "年份") + private Integer year; + /** + * 年龄 + */ + @Excel(name = "年龄") + private Integer age; + /** + * 男性劳动å‚与率(%) + */ + @Excel(name = "男性劳动å‚与率(%)") + private BigDecimal maleLaborJoinRate; + /** + * 女性劳动å‚与率(%) + */ + @Excel(name = "女性劳动å‚与率(%)") + private BigDecimal femaleLaborJoinRate; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorLaborJoinRateMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorLaborJoinRateMapper.java new file mode 100644 index 0000000..88391c1 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorLaborJoinRateMapper.java @@ -0,0 +1,64 @@ +package com.ruoyi.cms.mapper; + +import com.ruoyi.cms.domain.ModelSupplyMonitorLaborJoinRate; + +import java.util.List; + +/** + * 劳动力供给劳动å‚与率 + * + * @author 马å®é¾™ + * @date 2026/7/3 + */ +public interface ModelSupplyMonitorLaborJoinRateMapper { + + /** + * 新增 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + */ + void insert(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); + + /** + * 修改 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + */ + void update(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); + + /** + * 通过ID删除 + * + * @param id ID + */ + void deleteById(Long id); + + /** + * 清空 + */ + void clear(); + + /** + * 通过ID查询 + * + * @param id ID + * @return 劳动力供给劳动å‚与率 + */ + ModelSupplyMonitorLaborJoinRate selectById(Long id); + + /** + * 查询唯一(按年份) + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 劳动力供给劳动å‚与率 + */ + ModelSupplyMonitorLaborJoinRate findUnique(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); + + /** + * 查询列表 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 列表 + */ + List list(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorLaborJoinRateService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorLaborJoinRateService.java new file mode 100644 index 0000000..2a864bf --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorLaborJoinRateService.java @@ -0,0 +1,75 @@ +package com.ruoyi.cms.service; + +import com.ruoyi.cms.domain.ModelSupplyMonitorLaborJoinRate; +import com.ruoyi.cms.domain.dto.ModelExportParamDto; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 劳动力供给劳动å‚与率 + * + * @author 马å®é¾™ + * @date 2026/7/3 + */ +public interface ModelSupplyMonitorLaborJoinRateService { + + /** + * 创建 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + */ + void create(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); + + /** + * æ›´æ–° + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + */ + void update(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); + + /** + * 删除 + * + * @param id ID + */ + void delete(Long id); + + /** + * 清空 + */ + void clear(); + + /** + * 查询详情 + * + * @param id ID + * @return 劳动力供给劳动å‚与率 + */ + ModelSupplyMonitorLaborJoinRate detail(Long id); + + /** + * 查询列表 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 列表 + */ + List list(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate); + + /** + * å¯¼å…¥æ•°æ® + * + * @param file 文件 + * @return 导入结果 + */ + String importExcel(MultipartFile file); + + /** + * å¯¼å‡ºæ•°æ® + * + * @param response å“应体 + * @param dto å¯¼å‡ºå‚æ•° + */ + void exportExcel(HttpServletResponse response, ModelExportParamDto dto); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelCommonServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelCommonServiceImpl.java index 0ff5e0b..20635db 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelCommonServiceImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelCommonServiceImpl.java @@ -3,6 +3,7 @@ package com.ruoyi.cms.service.impl; import com.ruoyi.cms.constant.enums.ModelTemplateTypeEnum; import com.ruoyi.cms.domain.dto.ModelExportParamDto; import com.ruoyi.cms.service.ModelCommonService; +import com.ruoyi.cms.service.ModelSupplyMonitorLaborJoinRateService; import com.ruoyi.cms.service.ModelSupplyMonitorPopulationService; import com.ruoyi.cms.service.ModelSupplyMonitorTotalFertilityRateService; import com.ruoyi.cms.service.ModelWarningIndicatorDataService; @@ -38,6 +39,7 @@ public class ModelCommonServiceImpl implements ModelCommonService { private final ModelWarningIndicatorDataService modelWarningIndicatorDataService; private final ModelSupplyMonitorPopulationService modelSupplyMonitorPopulationService; private final ModelSupplyMonitorTotalFertilityRateService modelSupplyMonitorTotalFertilityRateService; + private final ModelSupplyMonitorLaborJoinRateService modelSupplyMonitorLaborJoinRateService; @Override public void template(HttpServletResponse response, @@ -87,6 +89,8 @@ public class ModelCommonServiceImpl implements ModelCommonService { return modelSupplyMonitorPopulationService.importExcel(file); case MODEL_SUPPLY_MONITOR_TOTAL_FERTILITY_RATE: return modelSupplyMonitorTotalFertilityRateService.importExcel(file); + case MODEL_SUPPLY_MONITOR_LABOR_JOIN_RATE: + return modelSupplyMonitorLaborJoinRateService.importExcel(file); default: throw new ServiceException("模æ¿ç±»åž‹é”™è¯¯"); } @@ -108,6 +112,9 @@ public class ModelCommonServiceImpl implements ModelCommonService { case MODEL_SUPPLY_MONITOR_TOTAL_FERTILITY_RATE: modelSupplyMonitorTotalFertilityRateService.exportExcel(response, dto); break; + case MODEL_SUPPLY_MONITOR_LABOR_JOIN_RATE: + modelSupplyMonitorLaborJoinRateService.exportExcel(response, dto); + break; default: throw new ServiceException("模æ¿ç±»åž‹é”™è¯¯"); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorLaborJoinRateServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorLaborJoinRateServiceImpl.java new file mode 100644 index 0000000..f2af744 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorLaborJoinRateServiceImpl.java @@ -0,0 +1,200 @@ +package com.ruoyi.cms.service.impl; + +import com.ruoyi.cms.constant.enums.ModelTemplateTypeEnum; +import com.ruoyi.cms.domain.ModelSupplyMonitorLaborJoinRate; +import com.ruoyi.cms.domain.dto.ModelExportParamDto; +import com.ruoyi.cms.mapper.ModelSupplyMonitorLaborJoinRateMapper; +import com.ruoyi.cms.service.ModelSupplyMonitorLaborJoinRateService; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.bean.BeanValidators; +import com.ruoyi.common.utils.poi.ExcelUtil; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Validator; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +/** + * 劳动力供给劳动å‚与率 + * + * @author 马å®é¾™ + * @date 2026/7/3 + */ +@Slf4j +@Service +@Validated +@RequiredArgsConstructor +public class ModelSupplyMonitorLaborJoinRateServiceImpl implements ModelSupplyMonitorLaborJoinRateService { + + private final ModelSupplyMonitorLaborJoinRateMapper modelSupplyMonitorLaborJoinRateMapper; + private final Validator validator; + + @Override + public void create(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + + check(modelSupplyMonitorLaborJoinRate); + + // 查询唯一(按年份) + Optional optional = findUnique(modelSupplyMonitorLaborJoinRate); + if (optional.isPresent()) { + // æ›´æ–° + ModelSupplyMonitorLaborJoinRate exists = optional.get(); + modelSupplyMonitorLaborJoinRate.setId(exists.getId()); + modelSupplyMonitorLaborJoinRateMapper.update(modelSupplyMonitorLaborJoinRate); + } else { + // 新增 + modelSupplyMonitorLaborJoinRateMapper.insert(modelSupplyMonitorLaborJoinRate); + } + } + + /** + * 检查 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + */ + void check(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + if (Objects.isNull(modelSupplyMonitorLaborJoinRate.getYear())) { + throw new ServiceException("年份ä¸èƒ½ä¸ºç©º"); + } + if (Objects.isNull(modelSupplyMonitorLaborJoinRate.getAge())) { + throw new ServiceException("年龄ä¸èƒ½ä¸ºç©º"); + } + if (Objects.isNull(modelSupplyMonitorLaborJoinRate.getMaleLaborJoinRate())) { + throw new ServiceException("男性劳动å‚与率ä¸èƒ½ä¸ºç©º"); + } + if (Objects.isNull(modelSupplyMonitorLaborJoinRate.getFemaleLaborJoinRate())) { + throw new ServiceException("女性劳动å‚与率ä¸èƒ½ä¸ºç©º"); + } + } + + @Override + public void update(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + + check(modelSupplyMonitorLaborJoinRate); + + if (Objects.isNull(modelSupplyMonitorLaborJoinRate.getId())) { + throw new ServiceException("idä¸èƒ½ä¸ºç©º"); + } + Optional unique = findUnique(modelSupplyMonitorLaborJoinRate); + if (!unique.isPresent()) { + modelSupplyMonitorLaborJoinRateMapper.update(modelSupplyMonitorLaborJoinRate); + return; + } + ModelSupplyMonitorLaborJoinRate exists = unique.get(); + if (!exists.getId().equals(modelSupplyMonitorLaborJoinRate.getId())) { + throw new ServiceException("æ•°æ®å·²å­˜åœ¨"); + } + modelSupplyMonitorLaborJoinRateMapper.update(modelSupplyMonitorLaborJoinRate); + } + + @Override + public void delete(Long id) { + if (Objects.isNull(id)) { + throw new ServiceException("idä¸èƒ½ä¸ºç©º"); + } + modelSupplyMonitorLaborJoinRateMapper.deleteById(id); + } + + @Override + public void clear() { + modelSupplyMonitorLaborJoinRateMapper.clear(); + } + + @Override + public ModelSupplyMonitorLaborJoinRate detail(Long id) { + if (Objects.isNull(id)) { + throw new ServiceException("idä¸èƒ½ä¸ºç©º"); + } + return modelSupplyMonitorLaborJoinRateMapper.selectById(id); + } + + /** + * 查询唯一 + * + * @param modelSupplyMonitorLaborJoinRate 劳动力供给劳动å‚与率 + * @return 劳动力供给劳动å‚与率 + */ + private Optional findUnique(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + ModelSupplyMonitorLaborJoinRate unique = + modelSupplyMonitorLaborJoinRateMapper.findUnique(modelSupplyMonitorLaborJoinRate); + return Optional.ofNullable(unique); + } + + @Override + public List list(ModelSupplyMonitorLaborJoinRate modelSupplyMonitorLaborJoinRate) { + return modelSupplyMonitorLaborJoinRateMapper.list(modelSupplyMonitorLaborJoinRate); + } + + @Override + public String importExcel(MultipartFile file) { + try { + ExcelUtil util = new ExcelUtil<>(ModelSupplyMonitorLaborJoinRate.class); + List list = util.importExcel(file.getInputStream()); + + ModelSupplyMonitorLaborJoinRate exists; + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (ModelSupplyMonitorLaborJoinRate item : list) { + try { + check(item); + exists = modelSupplyMonitorLaborJoinRateMapper.findUnique(item); + if (exists == null) { + BeanValidators.validateWithException(validator, item); + modelSupplyMonitorLaborJoinRateMapper.insert(item); + successNum++; + String msg = + "
" + successNum + "ã€" + "年份:" + item.getYear() + "æ•°æ®å¯¼å…¥æˆåŠŸã€‚"; + successMsg.append(msg); + } else { + item.setId(exists.getId()); + BeanValidators.validateWithException(validator, item); + modelSupplyMonitorLaborJoinRateMapper.update(item); + successNum++; + String msg = + "
" + successNum + "ã€" + "年份:" + item.getYear() + "æ•°æ®æ›´æ–°æˆåŠŸã€‚"; + successMsg.append(msg); + } + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "ã€" + "年份:" + item.getYear() + "æ•°æ®å¯¼å…¥å¤±è´¥ï¼š"; + failureMsg.append(msg).append(e.getMessage()); + log.error(msg, e); + } + } + if (failureNum > 0) { + failureMsg.insert(0, "导入失败ï¼å…± " + failureNum + " æ¡æ•°æ®å‡ºçŽ°é—®é¢˜ï¼Œé”™è¯¯å¦‚ä¸‹ï¼š"); + throw new ServiceException(failureMsg.toString()); + } else { + successMsg.insert(0, "æ•°æ®å·²å…¨éƒ¨å¯¼å…¥æˆåŠŸï¼å…± " + successNum + " æ¡ï¼š"); + } + return successMsg.toString(); + } catch (Exception e) { + log.error("æ•°æ®å¯¼å…¥å¤±è´¥", e); + throw new ServiceException("æ•°æ®å¯¼å…¥å¤±è´¥"); + } + } + + @Override + public void exportExcel(HttpServletResponse response, ModelExportParamDto dto) { + try { + + List list = list(ModelSupplyMonitorLaborJoinRate.builder() + .year(dto.getYear()) + .build()); + ExcelUtil util = new ExcelUtil<>(ModelSupplyMonitorLaborJoinRate.class); + util.exportExcel(response, list, ModelTemplateTypeEnum.MODEL_SUPPLY_MONITOR_LABOR_JOIN_RATE.getDesc()); + + } catch (Exception e) { + log.error("æ•°æ®å¯¼å‡ºå¤±è´¥", e); + throw new ServiceException("æ•°æ®å¯¼å‡ºå¤±è´¥"); + } + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorLaborJoinRateMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorLaborJoinRateMapper.xml new file mode 100644 index 0000000..9e4efca --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorLaborJoinRateMapper.xml @@ -0,0 +1,68 @@ + + + + + + INSERT INTO model_supply_monitor_labor_join_rate (year, age, male_labor_join_rate, female_labor_join_rate) + VALUES (#{year}, #{age}, #{maleLaborJoinRate}, #{femaleLaborJoinRate}) + + + + UPDATE model_supply_monitor_labor_join_rate + SET year = #{year}, + age = #{age}, + male_labor_join_rate = #{maleLaborJoinRate}, + female_labor_join_rate = #{femaleLaborJoinRate} + WHERE id = #{id} + + + + DELETE + FROM model_supply_monitor_labor_join_rate + WHERE id = #{id} + + + + DELETE + FROM model_supply_monitor_labor_join_rate + WHERE id IS NOT NULL; + + + + + + + + + \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/resources/template/劳动力动æ€ç›‘测系统-劳动力供给劳动å‚与率.xlsx b/ruoyi-bussiness/src/main/resources/template/劳动力动æ€ç›‘测系统-劳动力供给劳动å‚与率.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ca8ee6cc738fd0265e2ea6ced313a2c1dd59f9a3 GIT binary patch literal 10284 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 Hf&2df%aF9D literal 0 HcmV?d00001 diff --git a/sql/datadashboard/table.sql b/sql/datadashboard/table.sql index 6575447..51c11c9 100644 --- a/sql/datadashboard/table.sql +++ b/sql/datadashboard/table.sql @@ -926,4 +926,37 @@ COMMENT ON COLUMN shz_data_dashboard.model_supply_monitor_total_fertility_rate.total_fertility_rate IS '总和生育率'; COMMENT -ON TABLE shz_data_dashboard.model_supply_monitor_total_fertility_rate IS '劳动力供给总和生育率'; \ No newline at end of file +ON TABLE shz_data_dashboard.model_supply_monitor_total_fertility_rate IS '劳动力供给总和生育率'; + + +--劳动力供给劳动å‚与率 +CREATE TABLE shz_data_dashboard.model_supply_monitor_labor_join_rate +( + id serial PRIMARY KEY, + year integer NOT NULL, + age integer NOT NULL, + male_labor_join_rate numeric(10, 2) NOT NULL, + female_labor_join_rate numeric(10, 2) NOT NULL +) +; + +ALTER TABLE shz_data_dashboard.model_supply_monitor_labor_join_rate + OWNER TO sysdba; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_labor_join_rate.id IS '主键'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_labor_join_rate.year IS '年份'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_labor_join_rate.age IS '年龄'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_labor_join_rate.male_labor_join_rate IS '男性劳动å‚与率(%)'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_labor_join_rate.female_labor_join_rate IS '女性劳动å‚与率(%)'; + +COMMENT +ON TABLE shz_data_dashboard.model_supply_monitor_labor_join_rate IS '劳动力供给劳动å‚与率'; \ No newline at end of file