From 857aa4b8e4313fdedc1643bbeb66e348bfbbff48 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:30:03 +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 + ...MonitorOccupationPopulationController.java | 104 +++++++++ ...odelSupplyMonitorOccupationPopulation.java | 53 +++++ ...pplyMonitorOccupationPopulationMapper.java | 64 ++++++ ...plyMonitorOccupationPopulationService.java | 75 +++++++ .../service/impl/ModelCommonServiceImpl.java | 7 + ...onitorOccupationPopulationServiceImpl.java | 204 ++++++++++++++++++ ...upplyMonitorOccupationPopulationMapper.xml | 82 +++++++ ...›åЍæ€ç›‘测系统-劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£.xlsx | Bin 0 -> 10394 bytes sql/datadashboard/table.sql | 63 ++++-- 10 files changed, 641 insertions(+), 13 deletions(-) create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorOccupationPopulationController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorOccupationPopulation.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorOccupationPopulationMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorOccupationPopulationService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorOccupationPopulationServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorOccupationPopulationMapper.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 254d24f..4d2c5ad 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 @@ -22,6 +22,8 @@ public enum ModelTemplateTypeEnum { MODEL_SUPPLY_MONITOR_LABOR_JOIN_RATE("劳动力动æ€ç›‘测系统-劳动力供给劳动å‚与率"), MODEL_SUPPLY_MONITOR_INDUSTRY_POPULATION("劳动力动æ€ç›‘测系统-劳动力供给分行业劳动力人å£"), + + MODEL_SUPPLY_MONITOR_OCCUPATION_POPULATION("劳动力动æ€ç›‘测系统-劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£"), ; private final String desc; } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorOccupationPopulationController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorOccupationPopulationController.java new file mode 100644 index 0000000..2e855ea --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/ModelSupplyMonitorOccupationPopulationController.java @@ -0,0 +1,104 @@ +package com.ruoyi.cms.controller; + +import com.ruoyi.cms.domain.ModelSupplyMonitorOccupationPopulation; +import com.ruoyi.cms.service.ModelSupplyMonitorOccupationPopulationService; +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/supplyMonitorOccupationPopulation") +@RequiredArgsConstructor +public class ModelSupplyMonitorOccupationPopulationController extends BaseController { + + private final ModelSupplyMonitorOccupationPopulationService modelSupplyMonitorOccupationPopulationService; + + /** + * 创建 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 创建结果 + */ + @PostMapping("/create") + public AjaxResult create(@Valid @RequestBody ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + modelSupplyMonitorOccupationPopulationService.create(modelSupplyMonitorOccupationPopulation); + return AjaxResult.success(); + } + + /** + * æ›´æ–° + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 更新结果 + */ + @PutMapping("/update") + public AjaxResult update(@Valid @RequestBody ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + modelSupplyMonitorOccupationPopulationService.update(modelSupplyMonitorOccupationPopulation); + return AjaxResult.success(); + } + + /** + * 删除 + * + * @param id ID + * @return 删除结果 + */ + @DeleteMapping("/delete") + public AjaxResult delete(@RequestParam Long id) { + modelSupplyMonitorOccupationPopulationService.delete(id); + return AjaxResult.success(); + } + + /** + * 清空 + * + * @return 清空结果 + */ + @DeleteMapping("/clear") + public AjaxResult clear() { + modelSupplyMonitorOccupationPopulationService.clear(); + return AjaxResult.success(); + } + + /** + * 查询详情 + * + * @param id ID + * @return 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + @GetMapping("/detail") + public AjaxResult detail(@RequestParam Long id) { + ModelSupplyMonitorOccupationPopulation data = modelSupplyMonitorOccupationPopulationService.detail(id); + return AjaxResult.success(data); + } + + /** + * 查询列表 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 列表 + */ + @PostMapping("/list") + public AjaxResult list(@RequestBody ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + List list = + modelSupplyMonitorOccupationPopulationService.list(modelSupplyMonitorOccupationPopulation); + return AjaxResult.success(list); + } +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorOccupationPopulation.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorOccupationPopulation.java new file mode 100644 index 0000000..615f511 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/ModelSupplyMonitorOccupationPopulation.java @@ -0,0 +1,53 @@ +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/3 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class ModelSupplyMonitorOccupationPopulation implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + private Long id; + /** + * 年份 + */ + @Excel(name = "年份") + private Integer year; + /** + * èŒä¸šç¼–å· + */ + @Excel(name = "èŒä¸šç¼–å·") + private String occupationCode; + /** + * èŒä¸šåç§° + */ + @Excel(name = "èŒä¸šåç§°") + private String occupationName; + /** + * 男性人数 + */ + @Excel(name = "男性人数") + private Integer maleCount; + /** + * 女性人数 + */ + @Excel(name = "女性人数") + private Integer femaleCount; +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorOccupationPopulationMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorOccupationPopulationMapper.java new file mode 100644 index 0000000..726e2c3 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/ModelSupplyMonitorOccupationPopulationMapper.java @@ -0,0 +1,64 @@ +package com.ruoyi.cms.mapper; + +import com.ruoyi.cms.domain.ModelSupplyMonitorOccupationPopulation; + +import java.util.List; + +/** + * 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * + * @author 马å®é¾™ + * @date 2026/7/3 + */ +public interface ModelSupplyMonitorOccupationPopulationMapper { + + /** + * 新增 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + void insert(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); + + /** + * 修改 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + void update(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); + + /** + * 通过ID删除 + * + * @param id ID + */ + void deleteById(Long id); + + /** + * 清空 + */ + void clear(); + + /** + * 通过ID查询 + * + * @param id ID + * @return 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + ModelSupplyMonitorOccupationPopulation selectById(Long id); + + /** + * 查询唯一(按年份+èŒä¸šç¼–å·ï¼‰ + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + ModelSupplyMonitorOccupationPopulation findUnique(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); + + /** + * 查询列表 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 列表 + */ + List list(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); +} \ No newline at end of file diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorOccupationPopulationService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorOccupationPopulationService.java new file mode 100644 index 0000000..aca4b0f --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/ModelSupplyMonitorOccupationPopulationService.java @@ -0,0 +1,75 @@ +package com.ruoyi.cms.service; + +import com.ruoyi.cms.domain.ModelSupplyMonitorOccupationPopulation; +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 ModelSupplyMonitorOccupationPopulationService { + + /** + * 创建 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + void create(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); + + /** + * æ›´æ–° + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + void update(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); + + /** + * 删除 + * + * @param id ID + */ + void delete(Long id); + + /** + * 清空 + */ + void clear(); + + /** + * 查询详情 + * + * @param id ID + * @return 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + ModelSupplyMonitorOccupationPopulation detail(Long id); + + /** + * 查询列表 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 列表 + */ + List list(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation); + + /** + * å¯¼å…¥æ•°æ® + * + * @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 e9208f1..b7b8529 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 @@ -5,6 +5,7 @@ import com.ruoyi.cms.domain.dto.ModelExportParamDto; import com.ruoyi.cms.service.ModelCommonService; import com.ruoyi.cms.service.ModelSupplyMonitorIndustryPopulationService; import com.ruoyi.cms.service.ModelSupplyMonitorLaborJoinRateService; +import com.ruoyi.cms.service.ModelSupplyMonitorOccupationPopulationService; import com.ruoyi.cms.service.ModelSupplyMonitorPopulationService; import com.ruoyi.cms.service.ModelSupplyMonitorTotalFertilityRateService; import com.ruoyi.cms.service.ModelWarningIndicatorDataService; @@ -42,6 +43,7 @@ public class ModelCommonServiceImpl implements ModelCommonService { private final ModelSupplyMonitorTotalFertilityRateService modelSupplyMonitorTotalFertilityRateService; private final ModelSupplyMonitorLaborJoinRateService modelSupplyMonitorLaborJoinRateService; private final ModelSupplyMonitorIndustryPopulationService modelSupplyMonitorIndustryPopulationService; + private final ModelSupplyMonitorOccupationPopulationService modelSupplyMonitorOccupationPopulationService; @Override public void template(HttpServletResponse response, @@ -95,6 +97,8 @@ public class ModelCommonServiceImpl implements ModelCommonService { return modelSupplyMonitorLaborJoinRateService.importExcel(file); case MODEL_SUPPLY_MONITOR_INDUSTRY_POPULATION: return modelSupplyMonitorIndustryPopulationService.importExcel(file); + case MODEL_SUPPLY_MONITOR_OCCUPATION_POPULATION: + return modelSupplyMonitorOccupationPopulationService.importExcel(file); default: throw new ServiceException("模æ¿ç±»åž‹é”™è¯¯"); } @@ -122,6 +126,9 @@ public class ModelCommonServiceImpl implements ModelCommonService { case MODEL_SUPPLY_MONITOR_INDUSTRY_POPULATION: modelSupplyMonitorIndustryPopulationService.exportExcel(response, dto); break; + case MODEL_SUPPLY_MONITOR_OCCUPATION_POPULATION: + modelSupplyMonitorOccupationPopulationService.exportExcel(response, dto); + break; default: throw new ServiceException("模æ¿ç±»åž‹é”™è¯¯"); } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorOccupationPopulationServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorOccupationPopulationServiceImpl.java new file mode 100644 index 0000000..671f383 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ModelSupplyMonitorOccupationPopulationServiceImpl.java @@ -0,0 +1,204 @@ +package com.ruoyi.cms.service.impl; + +import com.ruoyi.cms.constant.enums.ModelTemplateTypeEnum; +import com.ruoyi.cms.domain.ModelSupplyMonitorOccupationPopulation; +import com.ruoyi.cms.domain.dto.ModelExportParamDto; +import com.ruoyi.cms.mapper.ModelSupplyMonitorOccupationPopulationMapper; +import com.ruoyi.cms.service.ModelSupplyMonitorOccupationPopulationService; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.StringUtils; +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 ModelSupplyMonitorOccupationPopulationServiceImpl implements ModelSupplyMonitorOccupationPopulationService { + + private final ModelSupplyMonitorOccupationPopulationMapper modelSupplyMonitorOccupationPopulationMapper; + private final Validator validator; + + @Override + public void create(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + + check(modelSupplyMonitorOccupationPopulation); + + // 查询唯一(按年份+èŒä¸šç¼–å·ï¼‰ + Optional optional = findUnique(modelSupplyMonitorOccupationPopulation); + if (optional.isPresent()) { + // æ›´æ–° + ModelSupplyMonitorOccupationPopulation exists = optional.get(); + modelSupplyMonitorOccupationPopulation.setId(exists.getId()); + modelSupplyMonitorOccupationPopulationMapper.update(modelSupplyMonitorOccupationPopulation); + } else { + // 新增 + modelSupplyMonitorOccupationPopulationMapper.insert(modelSupplyMonitorOccupationPopulation); + } + } + + /** + * 检查 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + void check(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + if (Objects.isNull(modelSupplyMonitorOccupationPopulation.getYear())) { + throw new ServiceException("年份ä¸èƒ½ä¸ºç©º"); + } + if (StringUtils.isBlank(modelSupplyMonitorOccupationPopulation.getOccupationCode())) { + throw new ServiceException("èŒä¸šç¼–å·ä¸èƒ½ä¸ºç©º"); + } + if (StringUtils.isBlank(modelSupplyMonitorOccupationPopulation.getOccupationName())) { + throw new ServiceException("èŒä¸šåç§°ä¸èƒ½ä¸ºç©º"); + } + if (Objects.isNull(modelSupplyMonitorOccupationPopulation.getMaleCount())) { + throw new ServiceException("男性人数ä¸èƒ½ä¸ºç©º"); + } + if (Objects.isNull(modelSupplyMonitorOccupationPopulation.getFemaleCount())) { + throw new ServiceException("女性人数ä¸èƒ½ä¸ºç©º"); + } + } + + @Override + public void update(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + + check(modelSupplyMonitorOccupationPopulation); + + if (Objects.isNull(modelSupplyMonitorOccupationPopulation.getId())) { + throw new ServiceException("idä¸èƒ½ä¸ºç©º"); + } + Optional unique = findUnique(modelSupplyMonitorOccupationPopulation); + if (!unique.isPresent()) { + modelSupplyMonitorOccupationPopulationMapper.update(modelSupplyMonitorOccupationPopulation); + return; + } + ModelSupplyMonitorOccupationPopulation exists = unique.get(); + if (!exists.getId().equals(modelSupplyMonitorOccupationPopulation.getId())) { + throw new ServiceException("æ•°æ®å·²å­˜åœ¨"); + } + modelSupplyMonitorOccupationPopulationMapper.update(modelSupplyMonitorOccupationPopulation); + } + + @Override + public void delete(Long id) { + if (Objects.isNull(id)) { + throw new ServiceException("idä¸èƒ½ä¸ºç©º"); + } + modelSupplyMonitorOccupationPopulationMapper.deleteById(id); + } + + @Override + public void clear() { + modelSupplyMonitorOccupationPopulationMapper.clear(); + } + + @Override + public ModelSupplyMonitorOccupationPopulation detail(Long id) { + if (Objects.isNull(id)) { + throw new ServiceException("idä¸èƒ½ä¸ºç©º"); + } + return modelSupplyMonitorOccupationPopulationMapper.selectById(id); + } + + /** + * 查询唯一 + * + * @param modelSupplyMonitorOccupationPopulation 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + * @return 劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ + */ + private Optional findUnique(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + ModelSupplyMonitorOccupationPopulation unique = + modelSupplyMonitorOccupationPopulationMapper.findUnique(modelSupplyMonitorOccupationPopulation); + return Optional.ofNullable(unique); + } + + @Override + public List list(ModelSupplyMonitorOccupationPopulation modelSupplyMonitorOccupationPopulation) { + return modelSupplyMonitorOccupationPopulationMapper.list(modelSupplyMonitorOccupationPopulation); + } + + @Override + public String importExcel(MultipartFile file) { + try { + ExcelUtil util = new ExcelUtil<>(ModelSupplyMonitorOccupationPopulation.class); + List list = util.importExcel(file.getInputStream()); + + ModelSupplyMonitorOccupationPopulation exists; + int successNum = 0; + int failureNum = 0; + StringBuilder successMsg = new StringBuilder(); + StringBuilder failureMsg = new StringBuilder(); + for (ModelSupplyMonitorOccupationPopulation item : list) { + try { + check(item); + exists = modelSupplyMonitorOccupationPopulationMapper.findUnique(item); + if (exists == null) { + BeanValidators.validateWithException(validator, item); + modelSupplyMonitorOccupationPopulationMapper.insert(item); + successNum++; + String msg = + "
" + successNum + "ã€" + "年份:" + item.getYear() + "èŒä¸šï¼š" + item.getOccupationName() + "æ•°æ®å¯¼å…¥æˆåŠŸã€‚"; + successMsg.append(msg); + } else { + item.setId(exists.getId()); + BeanValidators.validateWithException(validator, item); + modelSupplyMonitorOccupationPopulationMapper.update(item); + successNum++; + String msg = + "
" + successNum + "ã€" + "年份:" + item.getYear() + "èŒä¸šï¼š" + item.getOccupationName() + "æ•°æ®æ›´æ–°æˆåŠŸã€‚"; + successMsg.append(msg); + } + } catch (Exception e) { + failureNum++; + String msg = "
" + failureNum + "ã€" + "年份:" + item.getYear() + "èŒä¸šï¼š" + item.getOccupationName() + "æ•°æ®å¯¼å…¥å¤±è´¥ï¼š"; + 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(ModelSupplyMonitorOccupationPopulation.builder() + .year(dto.getYear()) + .build()); + ExcelUtil util = new ExcelUtil<>(ModelSupplyMonitorOccupationPopulation.class); + util.exportExcel(response, list, ModelTemplateTypeEnum.MODEL_SUPPLY_MONITOR_OCCUPATION_POPULATION.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/ModelSupplyMonitorOccupationPopulationMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorOccupationPopulationMapper.xml new file mode 100644 index 0000000..49ef34d --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/ModelSupplyMonitorOccupationPopulationMapper.xml @@ -0,0 +1,82 @@ + + + + + + INSERT INTO model_supply_monitor_occupation_population (year, occupation_code, occupation_name, male_count, female_count) + VALUES (#{year}, #{occupationCode}, #{occupationName}, #{maleCount}, #{femaleCount}) + + + + UPDATE model_supply_monitor_occupation_population + SET year = #{year}, + occupation_code = #{occupationCode}, + occupation_name = #{occupationName}, + male_count = #{maleCount}, + female_count = #{femaleCount} + WHERE id = #{id} + + + + DELETE + FROM model_supply_monitor_occupation_population + WHERE id = #{id} + + + + DELETE FROM model_supply_monitor_occupation_population + 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..18fcc5aaa30ecbc43f62187f85e322953c9ba334 GIT binary patch literal 10394 zcmeHtWmH|uvM%oKZozc{f#B{AK@!~E-Q6J}NC@ukB)Ge~YjA?Q1b>U z=Nseok2%+ztEA^w-PP6Ar63Is0SEHjLgdy3p6~x|u)rUNHUq+>YGsQ;&(;G)@<%| z+=E&mCpVbC+!i%NZ7Rk_)jKA_Xs@03kJ4KRR~?V2m26>Jxi^-mU>{J532;&>{=itX z5a)}=6~D)k108S}q#{LNk9n?42eXSqpcS$G&A(+DieAdLOPm^ef;4NFdAkdR%ZnBz8^*O*H($5)m?jzyu5>+lLL0M$R7R2z`)S0#6_^?haRO+?HnAyQ8dxOjU5 zb0G%7L)>^7hAMX|$vhscM1Sx|q}qEWlE?!$b5^3=yMH zPILiGE%<}JNuBU3u+V6)Z9OE@HSQtn79q-T%$Jb6BF<~S49=fBF}u-IPU_pUdbrV) z9VK_AAKVFp9NaTZ9}IIA54)`sM;`3!h#voLn`v|&FE*fUc!0J+{kv@pZ0wDmjpG%q zDBnqf5ws$EkBoTCFlIdYA)dngY7-6J;$;hJ-98>Xg|GA7_2-3Y+;>s7BM%(c3T0Of z(tK?R@bA?2tY11Br<%uTQ z!)iuX1>epR*}UY3#TS8u-feYU1#`NCXBp&)j<}lgfno+F5KVCP1)!Q0RaSz+B*)8T z8Abt37#dIJB*7TN#{-<>@QDEDBWu2OXM0a-UfnlKiq@|A=IcXCf?!hoaAvU~`P0Ge zM>|b6tKmvI*ihoT-9Y5zH(NE3P7bS;ZFya-$I=wNhB90zpvq_~`a1n`0}gf`YUQY- zlG-_j(GyL1apRCLHmkd+W?zn)WTX*2rPs;yt4M_>(ZA6KB&DOugYa!X-mKiC|Bf+p zyCkYG5aU1~#^}Fc?Bw8RWA%)3b&QsL001NS7>IJt^%$~lHhjeiGulRw*f(oL8lx9} z@l{3*I8TkK4&F=VO%~_uqi!R+VV_2Yj}Pi6QZZoLh`^ArW!O{aC|C8g>QQa03PoRE zE1f_P)IkkioRPJt*l!LvYI0+dI)XX(M8dbmb|STUng;=KMX+5agO*w` zmQD*0k?xM4Bn3XmQ}96#O?0wCH!BCRQ`09MQOeQjfAvF-*{B{7mZUWexq z^Jzw}701>)HmEzkU%oRq&ya-TT$FB9I*aN%V9aG*==UzTg%3R((FdSQO?{P8?0CiD zEAlbQmRdMGPAejS>Pzn! zD4Rt?aWBktd%sF_O1@6|4iQ70c=aZI>rjDEygW;TO})feCm`bW{VfKuXt{Y{wyPs? z_HBWUzKvLcnRs{2N$PGXHDdIK>{05v9FbS&YuBnO+Tp1y)Dg3S*VUaGxD{54zT?|c z^GDz&-KTv1%W66Lm^I7n2g+UApG&@8N? zDyd`#%X{sT4zsq#UT=50U5tEpvO70@=>bBFu@F=KIfb=?jeWqG;>oVH@q5=>5;Oe5 zaiRWnl9S}U!(@FC9~fScN{NchP2T86EV3zH99$MhU4wj48}jZc7cvgy&yxJO3}3fy z#PxDMds1rN%>pW{R1h^vpuyvfL!lXH_K=(H^)h+c%h%bo-`mZIj)rv|E^(fzelod@ zEaHW-q$wT`eY?-|JAyCcK_xY# zv~pNg4QK+%q$o+H zMaOR@dO*MA*v$$u1i5|`aksnWLB>?d?TQyM2X4?aYr$Xov|Qq=l?ZEV*6Z|wi4 zjs4H7-E*W4Tn-&gjjW9Rh|~jb?-0I2f`GIDXa94g@)y|;;vZ|=;oIRTd^U{M7pMG@ z+h32!hkKo;Evs+#gj^O?Vr%xsB~v2tM_moM8;23A#mUJ<1T{a@*$D{bs;(Ob6E=aGMc@6-_Pwa9)6>IsSq3le1_U%odN}VCi~-G;=2SxFKs|EC&j|S^Rzt4- zW65Kw_88O7Xd)8;2}LmTjh_G_V;ucKfy=l8Szr3BZN!R zeKgN?R@j*Zp`Eo$beVXCZ1 zrJzzE#0}A;*`OCX`);j+gY~T>WU)g@sS+&%iH%|4^a?Mh&yTfveejyxA2;vUzMO~f zr}4WxKAu2l52Esj>~>*!-VEpacwQ==+)bA2@I5X?VY5GeI_7`8$sfHJpw7w_WomIf z+y6qv)N;RBYeVd@3Qd4$>6%Xd2IAGpTiXbV)nued3r?bw+1Q=lP!2R|sAZyQLR{`P zd>4hLV zs*S|0;VOz5jiUrw-{6u7NzOvp@M&sBf5GTJJD*du0!pZRAnGzu7yR5G`#y+framq=~`yFHF8q;rzjS7NsKT=`ZLF(i9~kskJL zh^!&4&76cUN*WOyo$__4$d?zIh7pbzoL}&)c4_d0&<(qzANkB>EtT*phV{DTacJs|_pY!EO6@~nAlcKfXCr0E` z*T|3w<2<&kI$iB^)lOr9WNjWUcqqpn8`2DO8ro@$5OI;V(^fpt)G2sPH5EFyOQtXa zTgqcJ+-v=~_K%(M?}JRSUI=R?=nETRQ|`WeGvi;ZtyWcTk!Ht}hXPZ_8A#Uwz7?8; za)c~?Vo&44qiCh-QGHTdlA?L3HiW+x)a10S!sF{OS9F}W{&jA>xMWUg4m$juV zDG&>7u90FK*Me-e8{qV((!^xbrA>Tw7ER+t9~qs&oa5BMYEp)nW#2Zz41fzB!96wTFRG+UgHKyIqOg%{rFzLNhU`c$g>1lb04 zojF*wHsBV6 zD$DzZ6{)2eXh()dzo@WGu_`D@3`>v5_YXi%4Jld} zM$?U3SV&RNc`F75Wqey7mgpu0*MF1iMo}YWECrYAmKc;RpjOG{GVtU~A*f6{@{D`EKd2JQ} zD9i8{{4h&ad!2HYo%XujSa>8zV7*QYg&7pIWMt7`l4?ldNLt|?)ML$rjgH4ko7Y_e zK4OynN}4&;FQZ*NuaAzFB|BqflW=U9u>%#c-&mpJBtX%VU-UpSVS5)tBaosZDt1si zw-aKm8eZJb15ECnyXQ(XVG3*o>5bTZ6(E@9qD{XbyuL(ZP9rOn@dg*|VTKcptdv1F zP2NV8LCwrC#5tiPpbwYurJ{e6pD+*;xB(%l(h@33Nn2y9LSDq_&}9BC(G(g(pU_0Z z78x{KPXw)ro(-T7ua%+f)F9~_O+uPa8qMM8mn{>&Auf)M7tm@k~{Hs0)-4a{b<{zJD}38!5>D2FX*KszN{HyQm}4x; zu3TTz&qFQjA2(OC(h_=PK1l%*(@w|6u_EO39eZs&fN-S0>qeL#&>D@v8eO#SQf^%X3gE<5d5D>(F%{E6j zOQRptY*^F62LCPYflxAc!Gl`q|4ZkOORF&ewI0Q&9e}dml^T7Ji8ITor=bd z%#a`xl%={h4eOF`U`L5xDiPz#YUMps&MFnNE2vqmn2mn-J!EO5I7V2e@ zJE3_%+b0!YZ1FH*q7C1SlU`6#ReUHLXDF_B+h+*$igRE=3~<#i!8tMWBonVk0HHpj z?z5e1mg7tM!0fUkjoZAXfz|mD8{%2Aw9&{L`=jYW=cq|B;a)aGNa)zfV1L|KB9Imu zZBoNyk;VZKwFPK>_6&^nSqgMfRMhd3tRC6*I{M477!&c$eIFS6(kt1I%cjJ)=}#fw zx7R7ruv@{$RX2{k#8!ud|H!tt<$;x7JccB`sa#o=(HVq_Fm2f@DZZngitu%HzP*&E2|xGQ`iVsGv%|p9*kB=pj(Taj;IR2_K9+4w8l4 zs^^o+h9G_f9&q)gbyut zt;^ehkiDpxUKY^oJkJxU0Z=ceh*vEVgR}a4q_AjSvv?RkVOp(jrS*EIycOwoQN4Is zp*>Q4UODwz2mEr_y;((Vp{Oiw8KUcUcGFnvt7TI3w8_0 z#VDnw+`K8>B7)_`WxEnRnAn*%J|40s;im){y$8UBRvpgVcII&+lBOzp*d~8;pqKPq z)j>e|F{j6tpQKb2&Ls08b@%zR2dLIp0y?=BEpLH!l&i8&451 zPT<|m3j$gML4s^o9o*v}4_59Q94Z5hT71YUn@WzApIn}S`|EPH%Z7ze{j}NUE@V{M z`4Ne)7-V6dG(i5>q2%Ew(WQIeE>R^n&rxAFFHj{lr+fYQgEydQh`(JiifA)_OuTj| z3~igtWpVS;Qex8Q4F*lla~uUv+Mg|y*2}fMY*{inIu$kU(t^8C@EWwUjw#!0?5s+j z=r{WiOUji73T@Ii!^;UO#Hja?vn8@2XQ%t<{q9^ynuVJ!NgJF{qx^gHi?v+LR8S7w zk+!{yHc{BRiwx1zI)DH*1;T}b?CJL2^R+G%k$g zw!Z<2golbU;{z94UPMkmJyZ4o~G0S~L_DNl7AjHhnbYP?9 zf=_Ql-8>IczDmT4_EFK4@$Cg{B{W+<4p;n_+clnAET)_1_ z9841}7weX@mhzo}-&uhO6?1dWdi3D{w8c6^I(d>EHX{sJl4$G@9>Ef1BoV4a_ucNz zwWaLC2uzOqVogRF)0zS#Ch-@MEFVRyf-uK8{h+V4`FsF3-J?t^cUELj?_V&xv-_wX ztgpyZj(R7-pbW6^Ug*x2v=#HWfKW`f=1WNwBqH$UzNBLntnn(p3J}3JLrfs&{mw#% zn;2p!fjwxrLle%K__WmO`Cb2Zzc-9%!hHci|ruh16eZoho zRPxw-kLE92`A@g|Tl0-!LK8R4pb4_DXHKUVOtC9X+z$`)7Z0rz_Bl4f_T#V*xYGH= zDO%p&Lqz;XrapuM?y=?hz&7$+(oYt43?utzg6>17B+X#Q!?4hm0^ddi`N}FL=bsQL z2AV|#t&YD5%?}|P(x8Wk>Jj4M&-&u_rN6=T)YhKg2)fQU8|j6uVvWG&!K5<$C`ZNcXVk54hP#3OThf>_ z7Z>R!lZ{WZQ_*2aS$d8Op6tP~y`z)gZd8RamGsa0-EMhCp;Y>U2OIf4ZVt?Vq6IPS z_0Hz=v7hRo3DSAI9BR+Yn;WfoXNPDP@Sx5=q#^TX%T`=$`}pHeCf;vi%wI5Mib#b z$3Fk z8+feFw&5iiP&IvQnU9{oe6@Q@+UI>gReQ+oEkVk~(&!yQAQ%y>J|p>k21YKj-N%ez zj_{@z+GF_Y(Jxa~y}DUdbhgAjS8HXleCqP(>toA!Sz+~&JPGTj1xt-Q#=~Vxc-Bl= zO?LU9?@djXO%%cRj&KrZcJ@cg#@Xoch(1rHOcen4t#oR^`-$??xd;B|@bRCMf4~zg z5FL9X%Ri5}JUE=2o`C50H_QGKCC$^|ZpyYD z5RH3h`gef=+dOd#jO5W;o=RgZA>1^vX5+ic3IgfeY@+#`{01)q*qf~ttOw4-deVs$ zWO=&3(uR68LfLTyHQm_Q6zz|!@+M{rkFwHjDo3X}S$@Eb4DigJYel&fg@WQ7wRhqh zJa&-^DJeB(Kor#sN_ZWv^XDh(@Tk*kLS#hKJ~ri4O`Wh^wT@4 zRZ`Ncn8c_jvf5D|aY+ies6KGAn_?Sy`To^}JTFP(8AgbbAAcM^%FS5F=2Nql3L9ig z!+Nps;43on)3IRaP|Z8Mx9#cg!Cv$&o{mQJ;2&1r>k{X2=O)B|(@l#HT&sA|6saF) z&lAfTd>MnlKSJD3au&3qNyh0s;{e!A)tlf<*c<_TW9u(&O?UwNeUoG321(`sOeYWm zhv;+eSwq;y+R@0`QAgR$*2qEYc>`S?H)!1fKoPzEc#9lei^;4|SVRjJ!57bF_f|WL442$w)65ZLVwj zc9KZ6k8B?*F-h)xqbz}cqlO;?d%fQ_CS%=<N+`WYj?5?q`>N^62PwsHbcu(p=nHxyP?3r z`(_k7ihFn{BXw)v!4$(WT9bsQkw7;nw{6tUa`{p_fPFW5IG9{`Ycc1&5a(VbYBsXk z%OJGiRb;kuSr*;UO1(5D{?y@jKizxibGLeGN9+weAOr=&_>toIS$gUj-N^g|Kj;Enf{xy=h^zRJ=Y*Tx4)Gu z{jTrNf~9BTpZci&&i1eJr9UD1v!v!1cPDUo|E2Wb1vY=O|5+{ai=7JSOn$NdRXg(E zKKi-z;b(jP=wx7C3h0Uc8^iA?os;~{b^Y1VKYiS@o}Vb;k^YVCKRn)_a{kOE{*rSG ztVsH&%;KLC{>+d3l31p{_OIf zsls0ZP=L-4sQ2%%{kKj(*RK3*&lYa_Y2jz)zbaXN@A;p#EYG|@t+w+YyuT`2{_Osr zl>)z{j6wg^{eSh~$L&Ym!2e!KGjJUK3xvN*`EekvAPxB(#Q+xxbdXqJpHE*rKm8x$ CUG$^? literal 0 HcmV?d00001 diff --git a/sql/datadashboard/table.sql b/sql/datadashboard/table.sql index 100034d..45e2958 100644 --- a/sql/datadashboard/table.sql +++ b/sql/datadashboard/table.sql @@ -907,9 +907,9 @@ ON TABLE shz_data_dashboard.model_supply_monitor_population IS '劳动力供 --劳动力供给总和生育率 CREATE TABLE shz_data_dashboard.model_supply_monitor_total_fertility_rate ( - id serial PRIMARY KEY, - year integer NOT NULL, - total_fertility_rate numeric(10, 2) NOT NULL + id serial PRIMARY KEY, + year integer NOT NULL, + total_fertility_rate numeric(10, 2) NOT NULL ) ; @@ -932,9 +932,9 @@ 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, + 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 ) @@ -965,12 +965,12 @@ ON TABLE shz_data_dashboard.model_supply_monitor_labor_join_rate IS '劳动力 --åŠ³åŠ¨åŠ›ä¾›ç»™åˆ†è¡Œä¸šåŠ³åŠ¨åŠ›äººå£ CREATE TABLE shz_data_dashboard.model_supply_monitor_industry_population ( - id serial PRIMARY KEY, - year integer NOT NULL, - industry_code character varying(200) NOT NULL COLLATE pg_catalog."default", - industry_name character varying(200) NOT NULL COLLATE pg_catalog."default", - male_count integer NOT NULL, - female_count integer NOT NULL + id serial PRIMARY KEY, + year integer NOT NULL, + industry_code character varying(200) NOT NULL COLLATE pg_catalog."default", + industry_name character varying(200) NOT NULL COLLATE pg_catalog."default", + male_count integer NOT NULL, + female_count integer NOT NULL ) ; @@ -996,4 +996,41 @@ COMMENT ON COLUMN shz_data_dashboard.model_supply_monitor_industry_population.female_count IS '女性人数'; COMMENT -ON TABLE shz_data_dashboard.model_supply_monitor_industry_population IS '劳动力供给分行业劳动力人å£'; \ No newline at end of file +ON TABLE shz_data_dashboard.model_supply_monitor_industry_population IS '劳动力供给分行业劳动力人å£'; + + +--劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£ +CREATE TABLE shz_data_dashboard.model_supply_monitor_occupation_population +( + id serial PRIMARY KEY, + year integer NOT NULL, + occupation_code character varying(200) NOT NULL COLLATE pg_catalog."default", + occupation_name character varying(200) NOT NULL COLLATE pg_catalog."default", + male_count integer NOT NULL, + female_count integer NOT NULL +) +; + +ALTER TABLE shz_data_dashboard.model_supply_monitor_occupation_population + OWNER TO sysdba; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_occupation_population.id IS '主键'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_occupation_population.year IS '年份'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_occupation_population.occupation_code IS 'èŒä¸šç¼–å·'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_occupation_population.occupation_name IS 'èŒä¸šåç§°'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_occupation_population.male_count IS '男性人数'; + +COMMENT +ON COLUMN shz_data_dashboard.model_supply_monitor_occupation_population.female_count IS '女性人数'; + +COMMENT +ON TABLE shz_data_dashboard.model_supply_monitor_occupation_population IS '劳动力供给分èŒä¸šåŠ³åŠ¨åŠ›äººå£'; \ No newline at end of file