From e69dec94fe9763d04425756370760698850f926f Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期五, 22 三月 2024 19:38:39 +0800 Subject: [PATCH] 部门端基础数据保存、基础数据导入模板下载、基础数据导入接口 --- ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataFieldVO.java | 8 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java | 3 ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java | 15 ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java | 180 +++++++ ruoyi-system/src/main/java/com/ruoyi/system/handler/DeptVerifyHandler.java | 8 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java | 53 + ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java | 67 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java | 50 + ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java | 84 +++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java | 36 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java | 89 ++ ruoyi-common/src/main/java/com/ruoyi/common/NumberDisplaceChineseUtil.java | 54 ++ ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/importExcel/FieldExcel.java | 32 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java | 38 + ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java | 20 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java | 11 ruoyi-admin-dept/src/main/java/com/ruoyi/RuoYiAdminDeptApplication.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataReportingVO.java | 41 + ruoyi-admin-dept/pom.xml | 18 ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java | 33 + ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java | 43 + ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java | 13 ruoyi-system/pom.xml | 14 ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java | 3 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java | 70 ++ ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java | 63 ++ ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java | 3 ruoyi-common/pom.xml | 5 ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java | 121 ++++ ruoyi-system/src/main/java/com/ruoyi/system/importExcel/BasicDataExcel.java | 39 + ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java | 77 ++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java | 92 ++- ruoyi-admin-dept/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java | 22 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java | 5 ruoyi-common/src/main/java/com/ruoyi/common/enums/ReportingStatusEnum.java | 26 + 40 files changed, 1,274 insertions(+), 188 deletions(-) diff --git a/ruoyi-admin-dept/pom.xml b/ruoyi-admin-dept/pom.xml index db0d5b1..c5e201b 100644 --- a/ruoyi-admin-dept/pom.xml +++ b/ruoyi-admin-dept/pom.xml @@ -100,7 +100,6 @@ <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> - <version>4.6.10</version> </dependency> <!-- zxing生成二维码 --> @@ -139,22 +138,6 @@ <version>1.2.78</version> </dependency> - <!-- easypoi --> - <dependency> - <groupId>cn.afterturn</groupId> - <artifactId>easypoi-base</artifactId> - <version>3.0.3</version> - </dependency> - <dependency> - <groupId>cn.afterturn</groupId> - <artifactId>easypoi-web</artifactId> - <version>3.0.3</version> - </dependency> - <dependency> - <groupId>cn.afterturn</groupId> - <artifactId>easypoi-annotation</artifactId> - <version>3.0.3</version> - </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot</artifactId> @@ -165,7 +148,6 @@ <version>2.0.10</version> <scope>compile</scope> </dependency> - </dependencies> <build> diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/RuoYiAdminDeptApplication.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/RuoYiAdminDeptApplication.java index bbbbdf1..040ff61 100644 --- a/ruoyi-admin-dept/src/main/java/com/ruoyi/RuoYiAdminDeptApplication.java +++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/RuoYiAdminDeptApplication.java @@ -12,7 +12,6 @@ import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.client.RestTemplate; -import java.net.InetAddress; import java.net.UnknownHostException; /** @@ -33,7 +32,8 @@ "Swagger文档: \t\thttp://{}:{}/doc.html\n" + "----------------------------------------------------------", env.getProperty("spring.application.name", "后台"), - InetAddress.getLocalHost().getHostAddress(), + //InetAddress.getLocalHost().getHostAddress(), + "localhost", env.getProperty("server.port", "8081")); } diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java new file mode 100644 index 0000000..05e86bc --- /dev/null +++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/controller/api/CurrentQuarterController.java @@ -0,0 +1,84 @@ +package com.ruoyi.web.controller.api; + +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.system.dto.BasicDataDTO; +import com.ruoyi.system.service.TbBasicDataService; +import com.ruoyi.system.vo.BasicDataReportingVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +/** + * @author mitao + * @date 2024/3/19 + */ +@Slf4j +@RestController +@RequestMapping("/current-quarter") +@RequiredArgsConstructor +@Api(tags = "当前季度数据相关接口") +public class CurrentQuarterController { + + private final TbBasicDataService tbBasicDataService; + + @ApiOperation("获取基础数据填报相关信息") + public R<BasicDataReportingVO> getBasicFields(@RequestParam("deptAreaCode") String deptAreaCode) { + //TODO 如果能够获取到当前登录用户,则不需要传区划代码 + try { + return tbBasicDataService.getBasicFields(deptAreaCode); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取基础数据填报相关信息异常", e); + return R.fail(); + } + } + + @PostMapping("/save-basic-data") + @ApiOperation("保存当前季度数据") + public R<Void> saveBasicData(@RequestBody BasicDataDTO dto) { + try { + tbBasicDataService.saveBasicData(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("保存当前季度数据异常", e); + return R.fail(); + } + return R.ok(); + } + /** + * 导入模板下载 + */ + @GetMapping("/download") + @ApiOperation("模板下载") + public void downloadImportTemplate() { + try { + tbBasicDataService.downloadImportTemplate(); + } catch (Exception e) { + log.error("模板下载异常",e); + throw new ServiceException("模板下载失败,请联系管理员!"); + } + } + + @PostMapping("import") + @ApiOperation("基础数据导入") + public R<Void> importBasicData(@RequestPart("file") MultipartFile file) { + try { + tbBasicDataService.importBasicData(file); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("基础数据导入异常",e); + throw new ServiceException("基础数据导入失败,请联系管理员!"); + } + return R.ok(); + } +} diff --git a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java index 4a00ca4..4f399fb 100644 --- a/ruoyi-admin-dept/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java +++ b/ruoyi-admin-dept/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java @@ -1,26 +1,22 @@ package com.ruoyi.web.core.config; -import java.util.ArrayList; -import java.util.List; +import com.ruoyi.common.config.RuoYiConfig; +import io.swagger.annotations.ApiOperation; +import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import com.ruoyi.common.config.RuoYiConfig; -import io.swagger.annotations.ApiOperation; -import io.swagger.models.auth.In; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.service.ApiKey; -import springfox.documentation.service.AuthorizationScope; -import springfox.documentation.service.Contact; -import springfox.documentation.service.SecurityReference; -import springfox.documentation.service.SecurityScheme; +import springfox.documentation.service.*; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.contexts.SecurityContext; import springfox.documentation.spring.web.plugins.Docket; + +import java.util.ArrayList; +import java.util.List; /** * Swagger2的接口配置 @@ -113,9 +109,9 @@ // 用ApiInfoBuilder进行定制 return new ApiInfoBuilder() // 设置标题 - .title("标题:好莱坞小程序_接口文档") + .title("财政运行分析评估系统部门端接口文档") // 描述 - .description("好莱坞小程序接口文档") + .description("财政运行分析评估系统部门端接口文档") // 作者信息 .contact(new Contact(ruoyiConfig.getName(), null, null)) // 版本 diff --git a/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml index 68a75af..1e19c83 100644 --- a/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin-dept/src/main/resources/mybatis/mybatis-config.xml @@ -15,6 +15,8 @@ <setting name="logImpl" value="SLF4J" /> <!-- 使用驼峰命名法转换字段 --> <!-- <setting name="mapUnderscoreToCamelCase" value="true"/>--> + <!--开启枚举类自动转换--> + <setting name="defaultEnumTypeHandler" value="org.apache.ibatis.type.EnumOrdinalTypeHandler"/> </settings> </configuration> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java index 75d5212..8fca721 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java @@ -3,6 +3,7 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.system.domain.TbBasicDataCategory; import com.ruoyi.system.dto.BasicDataCategoryDTO; @@ -17,8 +18,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; - -import java.util.Objects; /** * <p> @@ -45,7 +44,15 @@ @PostMapping("/add") @ApiOperation("添加") public R<Void> add(@RequestBody @Validated BasicDataCategoryDTO dto) { - tbBasicDataCategoryService.add(dto); + try { + tbBasicDataCategoryService.add(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("添加异常", e); + return R.fail(); + } return R.ok(); } @@ -57,7 +64,15 @@ @PostMapping("/edit") @ApiOperation("编辑") public R<Void> add(@RequestBody @Validated BasicDataCategoryUpdateDTO dto) { - tbBasicDataCategoryService.update(dto); + try { + tbBasicDataCategoryService.update(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("编辑异常", e); + return R.fail(); + } return R.ok(); } @@ -69,7 +84,15 @@ @DeleteMapping("/delete") @ApiOperation("删除") public R<Void> delete(@RequestParam(value = "id") Integer id){ - tbBasicDataCategoryService.removeById(id); + try { + tbBasicDataCategoryService.removeById(id); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("删除异常", e); + return R.fail(); + } return R.ok(); } @@ -81,9 +104,17 @@ @GetMapping("/get-details") @ApiOperation("根据id获取详情") public R<BasicDataCategoryVO> getDetails(@RequestParam(value = "id") Integer id){ - TbBasicDataCategory basicDataCategory = tbBasicDataCategoryService.getById(id); - BasicDataCategoryVO vo = BeanUtils.copyBean(basicDataCategory, BasicDataCategoryVO.class); - return R.ok(vo); + try { + TbBasicDataCategory basicDataCategory = tbBasicDataCategoryService.getById(id); + BasicDataCategoryVO vo = BeanUtils.copyBean(basicDataCategory, BasicDataCategoryVO.class); + return R.ok(vo); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("根据id获取详情异常", e); + return R.fail(); + } } /** @@ -94,11 +125,15 @@ @PostMapping("/show-hide") @ApiOperation("隐藏显示操作") public R<Void> showHide(@RequestBody ShowHideDTO dto) { - TbBasicDataCategory basicDataCategory = tbBasicDataCategoryService.getById(dto.getId()); - if (Objects.isNull(basicDataCategory)) { - throw new RuntimeException("非法参数"); + try { + tbBasicDataCategoryService.showHide(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("隐藏显示操作异常", e); + return R.fail(); } - tbBasicDataCategoryService.lambdaUpdate().set( TbBasicDataCategory::getStatus, dto.getStatus()).eq(TbBasicDataCategory::getId, dto.getId()).update(); return R.ok(); } @@ -110,8 +145,15 @@ @PostMapping("/page") @ApiOperation("分页条件查询") public R<PageDTO<BasicDataCategoryVO>> page(@RequestBody BasicDataCategoryQuery query) { - return R.ok(tbBasicDataCategoryService.queryPage(query)); + try { + return R.ok(tbBasicDataCategoryService.queryPage(query)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("分页条件查询异常", e); + return R.fail(); + } } - } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java index 3e0d496..8d79f06 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java @@ -4,6 +4,7 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.system.domain.TbBasicDataCategory; import com.ruoyi.system.dto.BasicDataConfigDTO; @@ -35,7 +36,7 @@ @Slf4j @RestController @RequiredArgsConstructor -@Api(tags = {"基础数据分类相关接口"}) +@Api(tags = {"基础数据配置相关接口"}) @RequestMapping("/basic-data-config") public class TbBasicDataConfigController { @@ -49,8 +50,16 @@ @GetMapping("/categories") @ApiOperation(value = "获取分类列表") public R<List<BasicDataCategoryVO>> queryBasicDataCategories() { - List<TbBasicDataCategory> list = tbBasicDataCategoryService.lambdaQuery().eq(TbBasicDataCategory::getStatus, ShowStatusEnum.SHOW).list(); - return R.ok(BeanUtils.copyList(list, BasicDataCategoryVO.class)); + try { + List<TbBasicDataCategory> list = tbBasicDataCategoryService.lambdaQuery().eq(TbBasicDataCategory::getStatus, ShowStatusEnum.SHOW).list(); + return R.ok(BeanUtils.copyList(list, BasicDataCategoryVO.class)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取分类列表异常", e); + return R.fail(); + } } /** @@ -61,7 +70,15 @@ @PostMapping("/add") @ApiOperation("添加") public R<Void> add(@RequestBody @Validated BasicDataConfigDTO dto) { - tbBasicDataConfigService.add(dto); + try { + tbBasicDataConfigService.add(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("添加异常", e); + return R.fail(); + } return R.ok(); } @@ -73,7 +90,15 @@ @PostMapping("/edit") @ApiOperation("编辑") public R<Void> edit(@RequestBody @Validated BasicDataConfigUpdateDTO dto) { - tbBasicDataConfigService.edit(dto); + try { + tbBasicDataConfigService.edit(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("编辑异常", e); + return R.fail(); + } return R.ok(); } @@ -85,7 +110,16 @@ @GetMapping("/get-details") @ApiOperation("获取详情") public R<BasicDataConfigDetailVO> getDetails(Integer id) { - return R.ok(tbBasicDataConfigService.getDetails(id)); + try { + BasicDataConfigDetailVO details = tbBasicDataConfigService.getDetails(id); + return R.ok(details); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取详情异常", e); + return R.fail(); + } } /** @@ -96,7 +130,15 @@ @DeleteMapping("/delete") @ApiOperation("删除") public R<Void> delete(Integer id) { - tbBasicDataConfigService.delete(id); + try { + tbBasicDataConfigService.delete(id); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("删除异常", e); + return R.fail(); + } return R.ok(); } @@ -108,7 +150,15 @@ @PostMapping("show-hide") @ApiOperation("隐藏显示操作") public R<Void> showHide(@RequestBody ShowHideDTO dto) { - tbBasicDataConfigService.showHide(dto); + try { + tbBasicDataConfigService.showHide(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("隐藏显示操作异常", e); + return R.fail(); + } return R.ok(); } @@ -120,7 +170,16 @@ @PostMapping("/page") @ApiOperation("分页条件查询") public R<PageDTO<BasicDataConfigVO>> page(@RequestBody BasicDataConfigQuery query) { - return R.ok(tbBasicDataConfigService.queryPage(query)); + try { + PageDTO<BasicDataConfigVO> basicDataConfigVOPageDTO = tbBasicDataConfigService.queryPage(query); + return R.ok(basicDataConfigVOPageDTO); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("分页条件查询异常", e); + return R.fail(); + } } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java index ef97d4f..deade72 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java @@ -3,7 +3,7 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.exception.GlobalException; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.system.domain.TbDept; @@ -21,7 +21,6 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; -import java.util.Objects; /** * <p> @@ -52,7 +51,7 @@ ExcelUtil.exportExcel(list, "部门导入模板", "部门导入模板", TbDept.class, "部门导入模板", response); } catch (Exception e) { log.error("模板下载异常",e); - throw new GlobalException("模板下载失败,请联系管理员!"); + throw new ServiceException("模板下载失败,请联系管理员!"); } } @@ -63,10 +62,13 @@ */ @PostMapping("/import") @ApiOperation("导入") - public R<Object> importExcel(@RequestPart("file")MultipartFile file) { + public R<Void> importExcel(@RequestPart("file")MultipartFile file) { try { tbDeptService.importExcel(file); } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } log.error("导入失败", e); throw new RuntimeException(e.getMessage()); } @@ -81,7 +83,15 @@ @PostMapping("/page") @ApiOperation("分页条件查询") public R<PageDTO<DeptVO>> page(@RequestBody DeptQuery query) { - return R.ok(tbDeptService.queryPage(query)); + try { + return R.ok(tbDeptService.queryPage(query)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("分页条件查询异常", e); + return R.fail(); + } } /** @@ -92,8 +102,16 @@ @GetMapping("/get-details") @ApiOperation("根据id查询部门详情") public R<DeptVO> getDetails(@RequestParam Integer id) { - TbDept dept = tbDeptService.getById(id); - return R.ok(BeanUtils.copyBean(dept,DeptVO.class)); + try { + TbDept dept = tbDeptService.getById(id); + return R.ok(BeanUtils.copyBean(dept,DeptVO.class)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("根据id查询部门详情异常", e); + return R.fail(); + } } /** @@ -104,8 +122,16 @@ @PostMapping("/edit") @ApiOperation("编辑") public R<Object> edit(@RequestBody DeptUpdateDTO dto){ - TbDept tbDept = BeanUtils.copyBean(dto, TbDept.class); - tbDeptService.updateById(tbDept); + try { + TbDept tbDept = BeanUtils.copyBean(dto, TbDept.class); + tbDeptService.updateById(tbDept); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("编辑异常", e); + return R.fail(); + } return R.ok(); } @@ -117,14 +143,7 @@ @PostMapping("/focus") @ApiOperation("重点关注") public R<Object> focus(@RequestBody DeptFocusDTO dto){ - TbDept dept = tbDeptService.getById(dto.getId()); - if (Objects.isNull(dept)) { - throw new RuntimeException("非法参数"); - } - tbDeptService.lambdaUpdate() - .eq(TbDept::getId, dto.getId()) - .set(TbDept::getFocussed, dto.getFocussed()) - .update(); + tbDeptService.focus(dto); return R.ok(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java index d4c16ad..4675827 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java @@ -3,8 +3,7 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.utils.BeanUtils; -import com.ruoyi.system.domain.TbFieldCategory; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.system.dto.FieldCategoryDTO; import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.FieldCategoryUpdateDTO; @@ -18,9 +17,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Objects; /** * <p> @@ -47,7 +43,15 @@ @PostMapping("/add") @ApiOperation("添加") public R<Object> add(@RequestBody @Validated FieldCategoryDTO dto) { - tbFieldCategoryService.add(dto); + try { + tbFieldCategoryService.add(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("添加异常", e); + return R.fail(); + } return R.ok(); } @@ -59,24 +63,16 @@ @GetMapping("/get-details") @ApiOperation("根据id获取字段分类详情") public R<FieldCategoryDetailVO> getById(@RequestParam(value = "id") Integer id) { - TbFieldCategory oneCategory = tbFieldCategoryService.getById(id); - if (Objects.isNull(oneCategory)) { - return R.ok(new FieldCategoryDetailVO()); + try { + FieldCategoryDetailVO vo = tbFieldCategoryService.getDetailsById(id); + return R.ok(vo); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("根据id获取字段分类详情异常", e); + return R.fail(); } - FieldCategoryDetailVO vo = BeanUtils.copyBean(oneCategory, FieldCategoryDetailVO.class); - //根据一级分类id,查询二级分类 - List<TbFieldCategory> twoCategoryList = tbFieldCategoryService.lambdaQuery().eq(TbFieldCategory::getParentId, oneCategory.getId()).list(); - twoCategoryList.forEach(item->{ - FieldCategoryDetailVO twoCategoryVO = BeanUtils.copyBean(item, FieldCategoryDetailVO.class); - vo.getChildren().add(twoCategoryVO); - //根据二级分类id,查询三级分类 - List<TbFieldCategory> threeCategoryList = tbFieldCategoryService.lambdaQuery().eq(TbFieldCategory::getParentId, item.getId()).list(); - threeCategoryList.forEach(threeCategory->{ - FieldCategoryDetailVO threeCategoryVO = BeanUtils.copyBean(threeCategory, FieldCategoryDetailVO.class); - twoCategoryVO.getChildren().add(threeCategoryVO); - }); - }); - return R.ok(vo); } /** @@ -87,7 +83,15 @@ @PostMapping("/page") @ApiOperation("分页条件查询") public R<PageDTO<FieldCategoryVO>> page(@RequestBody FieldCategoryQuery query) { - return R.ok(tbFieldCategoryService.queryPage(query)); + try { + return R.ok(tbFieldCategoryService.queryPage(query)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("分页条件查询异常", e); + return R.fail(); + } } /** @@ -98,7 +102,15 @@ @PostMapping("/show-hide") @ApiOperation("隐藏显示操作") public R<Void> showHide(@RequestBody ShowHideDTO dto) { - tbFieldCategoryService.showHide(dto); + try { + tbFieldCategoryService.showHide(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("隐藏显示操作异常", e); + return R.fail(); + } return R.ok(); } @@ -110,7 +122,15 @@ @DeleteMapping("/delete-children") @ApiOperation("编辑页面删除子字段分类") public R<Object> deleteChildren(@RequestParam(value = "id") Integer id){ - tbFieldCategoryService.deleteChildren(id); + try { + tbFieldCategoryService.deleteChildren(id); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("编辑页面删除子字段分类异常", e); + return R.fail(); + } return R.ok(); } @@ -122,7 +142,15 @@ @DeleteMapping("/delete") @ApiOperation("列表页面删除分类") public R<Void> delete(@RequestParam(value = "id") Integer id){ - tbFieldCategoryService.delete(id); + try { + tbFieldCategoryService.delete(id); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("列表页面删除分类异常", e); + return R.fail(); + } return R.ok(); } @@ -134,7 +162,15 @@ @PutMapping("/edit") @ApiOperation("编辑") public R<Object> edit(@RequestBody FieldCategoryUpdateDTO dto) { - tbFieldCategoryService.edit(dto); + try { + tbFieldCategoryService.edit(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("编辑异常", e); + return R.fail(); + } return R.ok(); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java index 405cbc6..6b0485b 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java @@ -3,6 +3,7 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.system.domain.TbField; import com.ruoyi.system.dto.FieldDTO; @@ -21,7 +22,6 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Objects; /** * <p> @@ -49,7 +49,15 @@ @GetMapping("/categories") @ApiOperation(value = "获取分类列表",notes = "一级分类id传0,二级分类传一级分类id,三级分类同理") public R<List<FieldCategoryVO>> queryFieldCategories(@RequestParam Integer id) { - return R.ok(tbFieldCategoryService.queryFieldCategories(id)); + try { + return R.ok(tbFieldCategoryService.queryFieldCategories(id)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取分类列表异常", e); + return R.fail(); + } } /** @@ -60,14 +68,30 @@ @PostMapping("/add") @ApiOperation("添加字段") public R<Void> add(@RequestBody @Validated FieldDTO dto){ - tbFieldService.add(dto); + try { + tbFieldService.add(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("添加字段异常", e); + return R.fail(); + } return R.ok(); } @GetMapping("/influenced-data") @ApiOperation("隐藏字段,获取同步隐藏的基础数据") - public R<List<String>> influencedData(@RequestParam Integer id) { - return R.ok(tbFieldService.influencedData(id)); + public R<String> influencedData(@RequestParam Integer id) { + try { + return R.ok(tbFieldService.influencedData(id)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取同步隐藏的基础数据异常", e); + return R.fail(); + } } /** * 隐藏显示操作 @@ -77,7 +101,15 @@ @PostMapping("/show-hide") @ApiOperation("隐藏显示操作") public R<Void> showHide(@RequestBody ShowHideDTO dto) { - tbFieldService.showHide(dto); + try { + tbFieldService.showHide(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("隐藏显示操作异常", e); + return R.fail(); + } return R.ok(); } @@ -89,12 +121,15 @@ @PostMapping("/edit") @ApiOperation("编辑字段") public R<Void> add(@RequestBody @Validated FieldUpdateDTO dto){ - TbField field = tbFieldService.getById(dto.getId()); - if (Objects.isNull(field)) { - throw new RuntimeException("参数异常"); + try { + tbFieldService.update(dto); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("编辑字段异常", e); + return R.fail(); } - TbField tbField = BeanUtils.copyBean(dto, TbField.class); - tbFieldService.updateById(tbField); return R.ok(); } @@ -106,7 +141,15 @@ @PostMapping("/page") @ApiOperation("分页条件查询") public R<PageDTO<FieldVO>> page(@RequestBody FieldQuery query) { - return R.ok(tbFieldService.queryPage(query)); + try { + return R.ok(tbFieldService.queryPage(query)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("分页条件查询异常", e); + return R.fail(); + } } /** @@ -117,8 +160,16 @@ @GetMapping("/get-details") @ApiOperation("获取详情") public R<FieldVO> getDetails(@RequestParam Integer id){ - TbField field = tbFieldService.getById(id); - return R.ok(BeanUtils.copyBean(field, FieldVO.class)); + try { + TbField field = tbFieldService.getById(id); + return R.ok(BeanUtils.copyBean(field, FieldVO.class)); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取详情", e); + return R.fail(); + } } /** @@ -129,7 +180,15 @@ @DeleteMapping("/delete") @ApiOperation("删除") public R<Void> delete(@RequestParam Integer id){ - tbFieldService.removeById(id); + try { + tbFieldService.removeById(id); + } catch (Exception e) { + if (e instanceof ServiceException) { + return R.fail(e.getMessage()); + } + log.error("获取详情", e); + return R.fail(); + } return R.ok(); } } diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 573c853..c2037f7 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -186,6 +186,11 @@ <artifactId>commons-jexl3</artifactId> <version>3.3</version> </dependency> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>easyexcel</artifactId> + <version>3.3.4</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/NumberDisplaceChineseUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/NumberDisplaceChineseUtil.java new file mode 100644 index 0000000..318b6e7 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/NumberDisplaceChineseUtil.java @@ -0,0 +1,54 @@ +package com.ruoyi.common; + +public class NumberDisplaceChineseUtil { + + final static String[] unitArray= {"","十","百","千","万","十","百","千","亿","十","百","千","万"}; + final static String[] numArray = {"零","一","二","三","四","五","六","七","八","九"}; + + public static String numberToChinese(Integer number) throws Exception{ + if (number == null) { + return ""; + } + if (number == 0) { + return "零"; + } + char[] charArray= String.valueOf(number).toCharArray(); + int arrayLength = charArray.length; + StringBuilder stringBuilder = new StringBuilder(); + + for(int i = 0; i<arrayLength; i++){ + int num = Integer.valueOf(charArray[i] + ""); + boolean isZero = num == 0; + String unit = unitArray[(arrayLength - 1) - i]; + if (isZero) { + continue; + }else { + if(i==0){ + stringBuilder.append(numArray[num]); + stringBuilder.append(unit); + }else{ + if(charArray[i-1]=='0'){ + stringBuilder.append("零"); + stringBuilder.append(numArray[num]); + stringBuilder.append(unit); + }else{ + stringBuilder.append(numArray[num]); + stringBuilder.append(unit); + } + } + } + } + String numString = stringBuilder.toString(); + if(numString.length() > 1){ + if(numString.toCharArray()[0]== '一' && numString.toCharArray()[1] == '十'){ + return numString.substring(1); + } + } + return numString; + } + + public static void main(String[] args) throws Exception { + String s = numberToChinese(1234567890); + System.out.println(s); + } +} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java index b904c30..9df4d44 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java @@ -44,4 +44,19 @@ } return null; } + + /** + * 通过desc获取美剧 + * @param desc + * @return + */ + public static DisabledEnum getByDesc(String desc) { + DisabledEnum[] resultTypes = DisabledEnum.values(); + for (DisabledEnum resultType : resultTypes) { + if (desc.equals(resultType.getDesc())) { + return resultType; + } + } + return null; + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ReportingStatusEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ReportingStatusEnum.java new file mode 100644 index 0000000..4b3d73f --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ReportingStatusEnum.java @@ -0,0 +1,26 @@ +package com.ruoyi.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; +import lombok.AllArgsConstructor; +@Getter +@AllArgsConstructor +public enum ReportingStatusEnum { + UNFILLED(1, "未填报"), + MISSING_DATA(2, "数据缺失"), + FILLED(3, "已填报"); + @EnumValue + private final Integer code; + @JsonValue + private final String desc; + + public static ReportingStatusEnum getEnumByCode(Integer code) { + for (ReportingStatusEnum e : ReportingStatusEnum.values()) { + if (e.code.equals(code)) { + return e; + } + } + return null; + } +} \ No newline at end of file diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 5711da5..09a6043 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -29,16 +29,11 @@ <!-- </exclusions>--> </dependency> + <!--easy-poi--> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> - <version>4.0.0</version> - <exclusions> - <exclusion> - <artifactId>guava</artifactId> - <groupId>com.google.guava</groupId> - </exclusion> - </exclusions> + <version>4.4.0</version> </dependency> <!--mybatis-plus--> @@ -76,6 +71,11 @@ <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>easyexcel</artifactId> + <version>3.3.4</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java index 1cee284..612dcc6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicData.java @@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.enums.ReportingStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -33,7 +34,7 @@ @TableField("quarter") private String quarter; - @ApiModelProperty(value = "所属部门id") + @ApiModelProperty(value = "区划代码") @TableField("dept_area_code") private String deptAreaCode; @@ -51,7 +52,7 @@ @ApiModelProperty(value = "填报状态(1=未填报 2=数据缺失 3=已填报)") @TableField("status") - private Integer status; + private ReportingStatusEnum status; @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableField("del_flag") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java index 633a7e8..10e6c39 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataField.java @@ -41,11 +41,6 @@ @TableField("field_value") private String fieldValue; - @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") - @TableField("del_flag") - @TableLogic - private String delFlag; - @ApiModelProperty(value = "创建人") @TableField("create_by") private String createBy; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java index 07aa6a0..9bab699 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java @@ -2,7 +2,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.*; -import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.enums.DisabledEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -53,8 +53,8 @@ @ApiModelProperty(value = "县级标志(不包含直辖市的区 0:否 1:是)") @TableField("county_flag") - @Excel(name = "县级标志 是/否",replace = {"是_1","否_2"}) - private ShowStatusEnum countyFlag; + @Excel(name = "县级标志 是/否",replace = {"是_1","否_0"}) + private DisabledEnum countyFlag; @ApiModelProperty(value = "负责人") @TableField("person_in_charge") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java new file mode 100644 index 0000000..842e0f9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataDTO.java @@ -0,0 +1,33 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author mitao + * @date 2024/3/21 + */ +@Data +@ApiModel(value = "当前季度基础数据数据传输对象") +public class BasicDataDTO { + + //TODO 登录功能好了之后删掉 + @ApiModelProperty(value = "区划代码") + private String deptAreaCode; + + @ApiModelProperty(value = "转移支付规模") + private String transferPaymentScale; + + @ApiModelProperty(value = "当期GDP") + private String currentGdp; + + @ApiModelProperty(value = "动态字段") + private List<BasicDataFieldDTO> fields = new ArrayList<>(); + + @ApiModelProperty(value = "备注") + private String remark; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java new file mode 100644 index 0000000..b74a7e6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataFieldDTO.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author mitao + * @date 2024/3/21 + */ +@Data +@ApiModel(value = "当前季度基础数据字段数据传输对象") +public class BasicDataFieldDTO { + + @ApiModelProperty(value = "字段id") + private Integer fieldId; + + @ApiModelProperty(value = "字段值") + private String fieldValue; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/handler/DeptVerifyHandler.java b/ruoyi-system/src/main/java/com/ruoyi/system/handler/DeptVerifyHandler.java index b622daa..61952e7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/handler/DeptVerifyHandler.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/handler/DeptVerifyHandler.java @@ -3,8 +3,7 @@ import cn.afterturn.easypoi.excel.entity.result.ExcelVerifyHandlerResult; import cn.afterturn.easypoi.handler.inter.IExcelVerifyHandler; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.domain.TbDept; -import lombok.RequiredArgsConstructor; +import com.ruoyi.system.importExcel.DeptExcel; import org.springframework.stereotype.Component; /** @@ -12,10 +11,9 @@ * @date 2024/3/13 */ @Component -@RequiredArgsConstructor -public class DeptVerifyHandler implements IExcelVerifyHandler<TbDept> { +public class DeptVerifyHandler implements IExcelVerifyHandler<DeptExcel> { @Override - public ExcelVerifyHandlerResult verifyHandler(TbDept obj) { + public ExcelVerifyHandlerResult verifyHandler(DeptExcel obj) { ExcelVerifyHandlerResult result = new ExcelVerifyHandlerResult(true); if (StringUtils.isEmpty(obj.getAreaName()) || StringUtils.isEmpty(obj.getAreaCode()) || StringUtils.isEmpty(obj.getAreaLevel()) || StringUtils.isNull(obj.getCountyFlag()) || diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/BasicDataExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/BasicDataExcel.java new file mode 100644 index 0000000..1ba30d4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/BasicDataExcel.java @@ -0,0 +1,39 @@ +package com.ruoyi.system.importExcel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.ruoyi.system.vo.FieldVO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.util.List; + +/** + * @author mitao + * @date 2024/3/21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="基础数据导入Excel对象") +public class BasicDataExcel implements Serializable { + + private static final long serialVersionUID = 8626000917362659046L; + + @ApiModelProperty(value = "季度") + @Excel(name = "填报季度") + private String quarter; + + @ApiModelProperty(value = "转移支付规模") + @Excel(name = "转移支付规模") + private String transferPaymentScale; + + @ApiModelProperty(value = "当期GDP") + @Excel(name = "当期GDP") + private String currentGdp; + private List<FieldVO> fieldVOS; + + @Excel(name = "备注") + private String remark; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java new file mode 100644 index 0000000..81bea78 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/DeptExcel.java @@ -0,0 +1,63 @@ +package com.ruoyi.system.importExcel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.ruoyi.common.enums.DisabledEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * <p> + * 部门管理表 + * </p> + * + * @author mitao + * @since 2024-03-13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="部门导入Excel对象") +public class DeptExcel implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "部门地区") + @Excel(name = "部门地区") + private String areaName; + + @ApiModelProperty(value = "别名") + @Excel(name = "别名") + private String areaAlias; + + @ApiModelProperty(value = "区划代码") + @Excel(name = "区划代码") + private String areaCode; + + @ApiModelProperty(value = "级次(省、市、县)") + @Excel(name = "级次(省、市、县)") + private String areaLevel; + + @ApiModelProperty(value = "县级标志(不包含直辖市的区 0:否 1:是)") + @Excel(name = "县级标志 是/否",enumImportMethod = "getByDesc") + private DisabledEnum countyFlag; + + @ApiModelProperty(value = "负责人") + @Excel(name = "负责人") + private String personInCharge; + + @ApiModelProperty(value = "登录账号") + @Excel(name = "登录账号") + private String account; + + @ApiModelProperty(value = "联系电话") + @Excel(name = "联系电话") + private String phone; + + @ApiModelProperty(value = "登录密码") + @Excel(name = "登录密码") + private String password; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/FieldExcel.java b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/FieldExcel.java new file mode 100644 index 0000000..7936661 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/importExcel/FieldExcel.java @@ -0,0 +1,32 @@ +package com.ruoyi.system.importExcel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.ruoyi.common.enums.FieldTypeEnum; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + * @author mitao + * @date 2024/3/21 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="动态字段导入Excel对象") +public class FieldExcel implements Serializable { + + private static final long serialVersionUID = -3195855772711996257L; + + @Excel(name = "字段名") + private String fieldName; + + private FieldTypeEnum fieldType; + + private String levelOneCategory; + + private String levelTwoCategory; + + private String levelThreeCategory; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java b/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java new file mode 100644 index 0000000..e3ae9c4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/listener/BasicDataListener.java @@ -0,0 +1,121 @@ +package com.ruoyi.system.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.excel.util.ListUtils; +import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.google.common.collect.Lists; +import com.ruoyi.common.NumberDisplaceChineseUtil; +import com.ruoyi.common.enums.ReportingStatusEnum; +import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.DateUtils; +import com.ruoyi.system.domain.TbBasicData; +import com.ruoyi.system.domain.TbBasicDataField; +import com.ruoyi.system.domain.TbDept; +import com.ruoyi.system.domain.TbField; +import com.ruoyi.system.service.TbBasicDataFieldService; +import com.ruoyi.system.service.TbBasicDataService; +import com.ruoyi.system.service.TbFieldService; +import lombok.extern.slf4j.Slf4j; + +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +public class BasicDataListener extends AnalysisEventListener<Map<Integer, String>> { + /** + * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 + */ + private static final int BATCH_COUNT = 10; + private List<Map<Integer, String>> cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); + public TbBasicDataService tbBasicDataService; + public List<TbField> fieldList; + public TbFieldService tbFieldService; + public TbDept dept; + public TbBasicDataFieldService tbBasicDataFieldService; + public BasicDataListener() { + } + + public BasicDataListener(TbBasicDataService tbBasicDataService, List<TbField> fieldList, TbFieldService tbFieldService, TbDept dept, TbBasicDataFieldService tbBasicDataFieldService) { + this.tbBasicDataService = tbBasicDataService; + this.fieldList = fieldList; + this.tbFieldService = tbFieldService; + this.dept = dept; + this.tbBasicDataFieldService = tbBasicDataFieldService; + } + + @Override + public void invoke(Map<Integer, String> data, AnalysisContext context) { + log.info("解析到一条数据:{}", JSON.toJSONString(data)); + cachedDataList.add(data); + if (cachedDataList.size() >= BATCH_COUNT) { + try { + saveData(); + } catch (Exception e) { + throw new RuntimeException(e); + } + cachedDataList = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + try { + saveData(); + } catch (Exception e) { + throw new RuntimeException(e); + } + log.info("所有数据解析完成!"); + } + + /** + * 加上存储数据库 + */ + private void saveData() throws Exception { + Map<Integer, String> headMap = cachedDataList.get(2); + Map<Integer, String> quarterMap = cachedDataList.get(4); + Map<Integer, String> dataMap = cachedDataList.get(5); + log.info("{}条数据,开始存储数据库!", cachedDataList.size()); + log.info("表头:{}", JSON.toJSONString(headMap)); + log.info("填写的数据:{}",JSON.toJSONString(dataMap)); + int remarkIndex = headMap.size()-1; + Map<Integer, String> dynamicFieldsMap = headMap.entrySet().stream().filter(entry -> { + return !(Lists.newArrayList(0, 1, 2, 3).contains(entry.getKey()) || entry.getKey() == remarkIndex); + }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + List<String> dynamicFields = new ArrayList<>(dynamicFieldsMap.values()); + List<String> collect = fieldList.stream().map(TbField::getFieldName).collect(Collectors.toList()); + boolean flag = new ArrayList<>(dynamicFields).containsAll(collect); + if (dynamicFields.size() != collect.size() || flag){ + throw new ServiceException("导入失败,请下载最新的导入模板"); + } + Date date = new Date(); + //当前所在季度 + int quarterOfYear = DateUtils.getQuarterOfYear(date); + String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); + LocalDate now = LocalDate.now(); + TbBasicData tbBasicData = new TbBasicData(); + tbBasicData.setQuarter(String.format("%s年%s",now.getYear(),quarterMap.get(1))); + tbBasicData.setTransferPaymentScale(dataMap.get(2)); + tbBasicData.setCurrentGdp(dataMap.get(3)); + tbBasicData.setDeptAreaCode(dept.getAreaCode()); + tbBasicData.setRemark(dataMap.get(remarkIndex)); + tbBasicData.setStatus(ReportingStatusEnum.MISSING_DATA); + tbBasicDataService.saveOrUpdate(tbBasicData); + tbBasicDataFieldService.remove(Wrappers.<TbBasicDataField>lambdaQuery().eq(TbBasicDataField::getBasicDataId, tbBasicData)); + for (Map.Entry<Integer, String> integerStringEntry : dynamicFieldsMap.entrySet()) { + Optional<TbField> tbField = tbFieldService.lambdaQuery().eq(TbField::getFieldName, integerStringEntry.getValue()) + .eq(TbField::getStatus, ShowStatusEnum.SHOW).oneOpt(); + if (tbField.isPresent()) { + TbBasicDataField tbBasicDataField = new TbBasicDataField(); + tbBasicDataField.setBasicDataId(tbBasicData.getId()); + tbBasicDataField.setFieldId(tbField.get().getId()); + tbBasicDataField.setFieldValue(dataMap.get(integerStringEntry.getKey())); + tbBasicDataFieldService.save(tbBasicDataField); + } + } + log.info("存储数据库成功!"); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java index 2c9e86a..4886641 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java @@ -5,6 +5,7 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbBasicDataCategory; import com.ruoyi.system.dto.BasicDataCategoryDTO; +import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.BasicDataCategoryUpdateDTO; import com.ruoyi.system.query.BasicDataCategoryQuery; import com.ruoyi.system.vo.BasicDataCategoryVO; @@ -24,4 +25,6 @@ void update(BasicDataCategoryUpdateDTO dto); PageDTO<BasicDataCategoryVO> queryPage(BasicDataCategoryQuery query); + + void showHide(ShowHideDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java index f755fe4..3c6535e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataService.java @@ -1,7 +1,13 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.core.domain.R; import com.ruoyi.system.domain.TbBasicData; +import com.ruoyi.system.dto.BasicDataDTO; +import com.ruoyi.system.vo.BasicDataReportingVO; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; /** * <p> @@ -13,4 +19,11 @@ */ public interface TbBasicDataService extends IService<TbBasicData> { + R<BasicDataReportingVO> getBasicFields(String deptAreaCode) throws Exception; + + void saveBasicData(BasicDataDTO dto); + + void downloadImportTemplate() throws Exception; + + void importBasicData(MultipartFile file) throws IOException; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java index dd0c089..b3f34f9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbDeptService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbDept; +import com.ruoyi.system.dto.update.DeptFocusDTO; import com.ruoyi.system.query.DeptQuery; import com.ruoyi.system.vo.DeptVO; import org.springframework.web.multipart.MultipartFile; @@ -20,4 +21,6 @@ PageDTO<DeptVO> queryPage(DeptQuery query); void importExcel(MultipartFile file) throws Exception; + + void focus(DeptFocusDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java index fc003f6..5392562 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldCategoryService.java @@ -7,6 +7,7 @@ import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.FieldCategoryUpdateDTO; import com.ruoyi.system.query.FieldCategoryQuery; +import com.ruoyi.system.vo.FieldCategoryDetailVO; import com.ruoyi.system.vo.FieldCategoryVO; import java.util.List; @@ -35,4 +36,5 @@ List<FieldCategoryVO> queryFieldCategories(Integer id); + FieldCategoryDetailVO getDetailsById(Integer id); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java index 3dc444b..760a109 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbFieldService.java @@ -5,10 +5,9 @@ import com.ruoyi.system.domain.TbField; import com.ruoyi.system.dto.FieldDTO; import com.ruoyi.system.dto.ShowHideDTO; +import com.ruoyi.system.dto.update.FieldUpdateDTO; import com.ruoyi.system.query.FieldQuery; import com.ruoyi.system.vo.FieldVO; - -import java.util.List; /** * <p> @@ -26,5 +25,7 @@ PageDTO<FieldVO> queryPage(FieldQuery query); - List<String> influencedData(Integer id); + String influencedData(Integer id); + + void update(FieldUpdateDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java index 651c0c7..30fe599 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java @@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageDTO; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbBasicDataCategory; import com.ruoyi.system.dto.BasicDataCategoryDTO; +import com.ruoyi.system.dto.ShowHideDTO; import com.ruoyi.system.dto.update.BasicDataCategoryUpdateDTO; import com.ruoyi.system.mapper.TbBasicDataCategoryMapper; import com.ruoyi.system.query.BasicDataCategoryQuery; @@ -47,4 +49,13 @@ .page(new Page<>(query.getPageNum(), query.getPageSize())); return PageDTO.of(page,BasicDataCategoryVO.class); } + + @Override + public void showHide(ShowHideDTO dto) { + TbBasicDataCategory basicDataCategory = this.getById(dto.getId()); + if (Objects.isNull(basicDataCategory)) { + throw new ServiceException("非法参数"); + } + this.lambdaUpdate().set( TbBasicDataCategory::getStatus, dto.getStatus()).eq(TbBasicDataCategory::getId, dto.getId()).update(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java index 6049eeb..5a7ece4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java @@ -6,7 +6,9 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.enums.CalculateTypeEnum; import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.common.utils.Checker; import com.ruoyi.common.utils.CollUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbBasicDataConfig; @@ -53,17 +55,29 @@ public void add(BasicDataConfigDTO dto) { TbBasicDataConfig tbBasicDataConfig = BeanUtils.copyBean(dto, TbBasicDataConfig.class); //参数校验 - Integer calculateType = tbBasicDataConfig.getCalculateType().getCode(); + CalculateTypeEnum calculateType = tbBasicDataConfig.getCalculateType(); List<CalculateDTO> dtoList = dto.getDtoList(); - if (CalculateTypeEnum.NUMBER.getCode().equals(calculateType) && StringUtils.isBlank(dto.getNumberCalculateFormula())) { - throw new RuntimeException("计算公式不能为空"); + if (CalculateTypeEnum.NUMBER.equals(calculateType) && StringUtils.isBlank(dto.getNumberCalculateFormula())) { + throw new ServiceException("计算公式不能为空"); } - if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType)) - && CollUtils.isEmpty(dtoList)) { - throw new RuntimeException("计算公式不能为空"); + boolean verify = (CalculateTypeEnum.TEXT.equals(calculateType) || CalculateTypeEnum.PERCENTAGE.equals(calculateType)) && CollUtils.isNotEmpty(dtoList); + if (verify) { + CollUtils.check(dto.getDtoList(), new Checker<CalculateDTO>() { + @Override + public void check(CalculateDTO data) { + if (StringUtils.isBlank(data.getKey())) { + throw new ServiceException("基础数据配置key不能为空"); + } + if (StringUtils.isBlank(data.getValue())) { + throw new ServiceException("基础数据配置value不能为空"); + } + } + }); + } else { + throw new ServiceException("计算公式不能为空"); } this.save(tbBasicDataConfig); - if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType))) { + if (verify) { List<TbBasicDataConfigDetail> details = BeanUtils.copyList(dtoList, TbBasicDataConfigDetail.class); List<TbBasicDataConfigDetail> collect = details.stream().peek(item -> item.setBasicDataConfigId(tbBasicDataConfig.getId())).collect(Collectors.toList()); tbBasicDataConfigDetailService.saveBatch(collect); @@ -75,17 +89,17 @@ public void edit(BasicDataConfigUpdateDTO dto) { TbBasicDataConfig tbBasicDataConfig = BeanUtils.copyBean(dto, TbBasicDataConfig.class); //参数校验 - Integer calculateType = tbBasicDataConfig.getCalculateType().getCode(); + CalculateTypeEnum calculateType = tbBasicDataConfig.getCalculateType(); List<CalculateDTO> dtoList = dto.getDtoList(); - if (CalculateTypeEnum.NUMBER.getCode().equals(calculateType) && StringUtils.isBlank(dto.getNumberCalculateFormula())) { - throw new RuntimeException("计算公式不能为空"); + if (CalculateTypeEnum.NUMBER.equals(calculateType) && StringUtils.isBlank(dto.getNumberCalculateFormula())) { + throw new ServiceException("计算公式不能为空"); } - if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType)) - && CollUtils.isEmpty(dtoList)) { - throw new RuntimeException("计算公式不能为空"); + boolean verify = CalculateTypeEnum.TEXT.equals(calculateType) || CalculateTypeEnum.PERCENTAGE.equals(calculateType); + if (verify && CollUtils.isEmpty(dtoList)) { + throw new ServiceException("计算公式不能为空"); } this.updateById(tbBasicDataConfig); - if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType))) { + if (verify) { //删除原来的配置信息,重新添加新的 tbBasicDataConfigDetailService.lambdaUpdate().eq(TbBasicDataConfigDetail::getBasicDataConfigId, tbBasicDataConfig.getId()).remove(); List<TbBasicDataConfigDetail> details = BeanUtils.copyList(dtoList, TbBasicDataConfigDetail.class); @@ -98,7 +112,7 @@ public BasicDataConfigDetailVO getDetails(Integer id) { TbBasicDataConfig config = this.getById(id); if (Objects.isNull(config)) { - throw new RuntimeException("非法参数"); + throw new ServiceException("非法参数"); } BasicDataConfigDetailVO vo = BeanUtils.copyBean(config, BasicDataConfigDetailVO.class); Integer code = vo.getCalculateType().getCode(); @@ -114,7 +128,7 @@ public void delete(Integer id) { TbBasicDataConfig config = this.getById(id); if (Objects.isNull(config)) { - throw new RuntimeException("非法参数"); + throw new ServiceException("非法参数"); } this.removeById(id); } @@ -132,7 +146,7 @@ public void showHide(ShowHideDTO dto) { TbBasicDataConfig config = this.getById(dto.getId()); if (Objects.isNull(config)) { - throw new RuntimeException("非法参数"); + throw new ServiceException("非法参数"); } if (ShowStatusEnum.SHOW.equals(dto.getStatus())) { //查询改配置所使用字段状态 @@ -141,7 +155,7 @@ List<TbField> list = fieldMapper.selectList(Wrappers.<TbField>lambdaQuery().in(TbField::getId, Arrays.asList(split)).eq(TbField::getStatus, ShowStatusEnum.HIDE)); if (CollUtils.isNotEmpty(list)) { String fieldNames = list.stream().map(TbField::getFieldName).collect(Collectors.joining(",")); - throw new RuntimeException(String.format("字段“%s”已被隐藏,请重新配置后再次操作!", fieldNames)); + throw new ServiceException(String.format("字段“%s”已被隐藏,请重新配置后再次操作!", fieldNames)); } } this.lambdaUpdate().set( TbBasicDataConfig::getStatus, dto.getStatus()).eq(TbBasicDataConfig::getId, dto.getId()).update(); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java index b522be8..e6639e2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataServiceImpl.java @@ -1,10 +1,45 @@ package com.ruoyi.system.service.impl; +import com.alibaba.excel.EasyExcel; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.google.common.collect.Lists; +import com.ruoyi.common.NumberDisplaceChineseUtil; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.enums.ReportingStatusEnum; +import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.common.utils.CollUtils; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.system.domain.TbBasicData; +import com.ruoyi.system.domain.TbBasicDataField; +import com.ruoyi.system.domain.TbDept; +import com.ruoyi.system.domain.TbField; +import com.ruoyi.system.dto.BasicDataDTO; +import com.ruoyi.system.listener.BasicDataListener; import com.ruoyi.system.mapper.TbBasicDataMapper; +import com.ruoyi.system.service.TbBasicDataFieldService; import com.ruoyi.system.service.TbBasicDataService; +import com.ruoyi.system.service.TbDeptService; +import com.ruoyi.system.service.TbFieldService; +import com.ruoyi.system.vo.BasicDataReportingVO; +import com.ruoyi.system.vo.FieldReportingVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.net.URLEncoder; +import java.time.Instant; +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** * <p> @@ -14,7 +49,152 @@ * @author mitao * @since 2024-03-13 */ +@Slf4j @Service +@RequiredArgsConstructor public class TbBasicDataServiceImpl extends ServiceImpl<TbBasicDataMapper, TbBasicData> implements TbBasicDataService { + private final TbDeptService tbDeptService; + private final HttpServletResponse response; + private final TbFieldService tbFieldService; + private final TbBasicDataFieldService tbBasicDataFieldService; + + @Override + public R<BasicDataReportingVO> getBasicFields(String deptAreaCode) throws Exception { + BasicDataReportingVO vo = new BasicDataReportingVO(); + //校验区划代码 + TbDept dept = tbDeptService.getOne(Wrappers.<TbDept>lambdaQuery().eq(TbDept::getAreaCode, deptAreaCode)); + if (Objects.isNull(dept)) { + throw new ServiceException(String.format("区划代码%s不存在", deptAreaCode)); + } + Date date = new Date(); + //当前所在季度 + int quarterOfYear = DateUtils.getQuarterOfYear(date); + String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); + Map<String, Date> quarterDate = DateUtils.getQuarterDate(date); + //当前季度开始 + Date quarterStart = quarterDate.get("first"); + //当前季度结束 + Date quarterEnd = quarterDate.get("last"); + //判断当前时间是否在季度初1-15号 + Instant instant = quarterStart.toInstant(); + LocalDate quarterStartLocalDate = instant.atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate fifteenDaysLimit = quarterStartLocalDate.plusDays(15); + LocalDate now = LocalDate.now(); + vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr)); + vo.setStatus(ReportingStatusEnum.UNFILLED); + //如果当前时间不在规定范围内:季度初1-15号 + if (now.isBefore(quarterStartLocalDate) || now.isAfter(fifteenDaysLimit)) { + return R.ok(vo,"请于季度初1-15号上传季度数据。"); + } + //查询是否有当前季度的填报记录 + TbBasicData basicData = this.getOne(Wrappers.<TbBasicData>lambdaQuery() + .eq(TbBasicData::getDeptAreaCode, dept.getAreaCode()) + .between(TbBasicData::getCreateTime, quarterStart,quarterEnd)); + //查询需要填写的字段 + List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); + if (CollUtils.isNotEmpty(list)) { + List<FieldReportingVO> fieldReportingVOS = BeanUtils.copyList(list, FieldReportingVO.class); + vo.setFields(fieldReportingVOS); + } + if (Objects.isNull(basicData)) { + vo.setQuarter(String.format("%s年%s季度",now.getYear(),quarterOfYearStr)); + vo.setStatus(ReportingStatusEnum.UNFILLED); + return R.ok(vo); + }else { + vo.setStatus(basicData.getStatus()); + //查询已填报数据 包含数据缺失和已填报 + List<TbBasicDataField> basicDataFields = tbBasicDataFieldService.lambdaQuery() + .eq(TbBasicDataField::getBasicDataId, basicData.getId()).list(); + if (CollUtils.isNotEmpty(basicDataFields)) { + Map<Integer, TbBasicDataField> fieldMap = basicDataFields.stream() + .collect(Collectors.toMap(TbBasicDataField::getFieldId, Function.identity())); + vo.getFields().forEach(item -> { + TbBasicDataField tbBasicDataField = fieldMap.get(item.getId()); + if (Objects.nonNull(tbBasicDataField)) { + item.setValue(tbBasicDataField.getFieldValue()); + } + }); + return R.ok(vo); + } + } + return R.ok(vo); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveBasicData(BasicDataDTO dto) { + //TODO + //LoginUser loginUser = SecurityUtils.getLoginUser(); + //数据校验 + if (Objects.isNull(dto) || CollUtils.isEmpty(dto.getFields())) { + return; + } + + TbBasicData tbBasicData = BeanUtils.copyBean(dto, TbBasicData.class); + this.saveOrUpdate(tbBasicData); + //保存基础数据动态字段数据 + List<TbBasicDataField> tbBasicDataFields = BeanUtils.copyList(dto.getFields(), TbBasicDataField.class); + tbBasicDataFields.forEach(item -> item.setBasicDataId(tbBasicData.getId())); + //将该基础数据的动态字段数据全部删除 + tbBasicDataFieldService.remove(null); + tbBasicDataFieldService.saveBatch(tbBasicDataFields); + } + + @Override + public void downloadImportTemplate() throws Exception { + response.setContentType("application/vnd.ms-excel"); + response.setCharacterEncoding("utf-8"); + String fileName = "地方财政运行及“三保”情况统计表"; + // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 + response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx"); + //查询需要填写的动态字段 + List<TbField> list = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); + // 这里需要设置不关闭流 + EasyExcel.write(response.getOutputStream()).head(head(list)) + .autoCloseStream(Boolean.FALSE).sheet("模板") + .doWrite(dataList(list)); + } + + private List<List<Object>> dataList(List<TbField> list) throws Exception { + //TODO + //LoginUser loginUser = SecurityUtils.getLoginUser(); + TbDept dept = tbDeptService.getById(44); + //当前所在季度 + int quarterOfYear = DateUtils.getQuarterOfYear(new Date()); + String quarterOfYearStr = NumberDisplaceChineseUtil.numberToChinese(quarterOfYear); + List<List<Object>> excellist = new ArrayList<List<Object>>(); + List<List<String>> head = head(list); + List<Object> columnNo = Lists.newArrayList("栏号"); + for (int i = 1; i < head.size(); i++) { + columnNo.add(String.valueOf(i)); + } + excellist.add(columnNo); + excellist.add(Lists.newArrayList(dept.getAreaName(), String.format("%s季度",quarterOfYearStr))); + return excellist; + } + + private List<List<String>> head(List<TbField> list) { + List<List<String>> headTitles = Lists.newArrayList(); + //固定字段 + headTitles.add(Lists.newArrayList("地区")); + headTitles.add(Lists.newArrayList("填报季度")); + headTitles.add(Lists.newArrayList("转移支付规模")); + headTitles.add(Lists.newArrayList("当期GDP")); + list.forEach(item ->{ + headTitles.add(Lists.newArrayList(item.getLevelOneCategory(), item.getLevelTwoCategory(), item.getLevelThreeCategory(), item.getFieldName())); + }); + headTitles.add(Lists.newArrayList("备注")); + return headTitles; + } + + @Override + public void importBasicData(MultipartFile file) throws IOException { + //TODO + //LoginUser loginUser = SecurityUtils.getLoginUser(); + TbDept dept = tbDeptService.getById(44); + //查询需要填写的动态字段 + List<TbField> fieldList = tbFieldService.lambdaQuery().eq(TbField::getStatus, ShowStatusEnum.SHOW).list(); + EasyExcel.read(file.getInputStream(), new BasicDataListener(this,fieldList,tbFieldService,dept,tbBasicDataFieldService)).sheet().doRead(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java index d22ad84..2927eba 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbDeptServiceImpl.java @@ -6,10 +6,15 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageDTO; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbDept; +import com.ruoyi.system.dto.update.DeptFocusDTO; import com.ruoyi.system.handler.DeptVerifyHandler; +import com.ruoyi.system.importExcel.DeptExcel; import com.ruoyi.system.mapper.TbDeptMapper; import com.ruoyi.system.query.DeptQuery; import com.ruoyi.system.service.TbDeptService; @@ -62,18 +67,23 @@ //使用自定义校验规则 importParams.setVerifyHandler(deptVerifyHandler); InputStream inputStream = file.getInputStream(); - ExcelImportResult<TbDept> result = ExcelImportUtil.importExcelMore(inputStream, TbDept.class, importParams); + ExcelImportResult<DeptExcel> result = ExcelImportUtil.importExcelMore(inputStream, DeptExcel.class, importParams); inputStream.close(); - List<TbDept> list = result.getList(); - if (Objects.requireNonNull(result).isVerfiyFail() || CollectionUtils.isEmpty(list)) { - throw new RuntimeException("文件校验失败,请检查数据填写是否完整"); + List<DeptExcel> list = result.getList(); + + if (result.isVerifyFail() || CollectionUtils.isEmpty(list)) { + throw new ServiceException("文件校验失败,请检查数据填写是否完整"); } List<String> strings = hasDuplicateAreaCode(list); if (!CollectionUtils.isEmpty(strings)) { - throw new RuntimeException(String.format("区划代码%s重复,请修改后重新导入", String.join(",", strings))); + throw new ServiceException(String.format("区划代码%s重复,请修改后重新导入", String.join(",", strings))); }else { + List<TbDept> tbDeptList = BeanUtils.copyList(list, TbDept.class); this.remove(null); - this.saveBatch(list); + tbDeptList.forEach(dept->{ + dept.setPassword(SecurityUtils.encryptPassword(dept.getPassword())); + }); + this.saveBatch(tbDeptList); } } @@ -82,14 +92,26 @@ * @param deptList 部门列表 * @return 重复的区划代码 */ - public List<String> hasDuplicateAreaCode(List<TbDept> deptList) { + public List<String> hasDuplicateAreaCode(List<DeptExcel> deptList) { Set<String> areaCodes = new HashSet<>(); List<String> result = new ArrayList<>(); - for (TbDept dept : deptList) { + for (DeptExcel dept : deptList) { if (!areaCodes.add(dept.getAreaCode())) { result.add(dept.getAreaCode()); } } return result; } + + @Override + public void focus(DeptFocusDTO dto) { + TbDept dept = this.getById(dto.getId()); + if (Objects.isNull(dept)) { + throw new ServiceException("非法参数"); + } + this.lambdaUpdate() + .eq(TbDept::getId, dto.getId()) + .set(TbDept::getFocussed, dto.getFocussed()) + .update(); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java index 022e3b5..f4a26a8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; import com.ruoyi.common.utils.StringUtils; @@ -16,6 +17,7 @@ import com.ruoyi.system.mapper.TbFieldCategoryMapper; import com.ruoyi.system.query.FieldCategoryQuery; import com.ruoyi.system.service.TbFieldCategoryService; +import com.ruoyi.system.vo.FieldCategoryDetailVO; import com.ruoyi.system.vo.FieldCategoryVO; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -85,10 +87,7 @@ } private void updateCategoryAndChildren(Integer id, ShowStatusEnum status) { - TbFieldCategory category = this.getById(id); - if (Objects.isNull(category)) { - throw new RuntimeException("非法id"); - } + TbFieldCategory category = this.validateParam(id); this.lambdaUpdate() .eq(TbFieldCategory::getId, id) .set(TbFieldCategory::getStatus, status) @@ -122,10 +121,7 @@ @Transactional(rollbackFor = Exception.class) public void delete(Integer id) { //一级分类 - TbFieldCategory category = this.getById(id); - if (Objects.isNull(category)) { - throw new RuntimeException("非法参数"); - } + validateParam(id); //查询是否有二级分类 List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, id).list(); if (CollectionUtils.isNotEmpty(threeCategoryList)) { @@ -144,8 +140,17 @@ this.removeById(id); } + private TbFieldCategory validateParam(Integer id) { + TbFieldCategory category = this.getById(id); + if (Objects.isNull(category)) { + throw new ServiceException("非法参数"); + } + return category; + } + @Override public void edit(FieldCategoryUpdateDTO dto) { + validateParam(dto.getId()); //更新一级分类 updateCategory(dto); List<FieldCategoryUpdateDTO> children = dto.getChildren(); @@ -180,4 +185,26 @@ .list(); return BeanUtils.copyList(list, FieldCategoryVO.class); } + + @Override + public FieldCategoryDetailVO getDetailsById(Integer id) { + TbFieldCategory oneCategory = this.getById(id); + if (Objects.isNull(oneCategory)) { + return new FieldCategoryDetailVO(); + } + FieldCategoryDetailVO vo = BeanUtils.copyBean(oneCategory, FieldCategoryDetailVO.class); + //根据一级分类id,查询二级分类 + List<TbFieldCategory> twoCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, oneCategory.getId()).list(); + twoCategoryList.forEach(item->{ + FieldCategoryDetailVO twoCategoryVO = BeanUtils.copyBean(item, FieldCategoryDetailVO.class); + vo.getChildren().add(twoCategoryVO); + //根据二级分类id,查询三级分类 + List<TbFieldCategory> threeCategoryList = this.lambdaQuery().eq(TbFieldCategory::getParentId, item.getId()).list(); + threeCategoryList.forEach(threeCategory->{ + FieldCategoryDetailVO threeCategoryVO = BeanUtils.copyBean(threeCategory, FieldCategoryDetailVO.class); + twoCategoryVO.getChildren().add(threeCategoryVO); + }); + }); + return vo; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java index 8555a6f..9c64edf 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java @@ -6,6 +6,7 @@ import com.ruoyi.common.enums.FieldInputTypeEnum; import com.ruoyi.common.enums.FieldTypeEnum; import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; import com.ruoyi.common.utils.StringUtils; @@ -14,6 +15,7 @@ import com.ruoyi.system.domain.TbFieldCategory; import com.ruoyi.system.dto.FieldDTO; import com.ruoyi.system.dto.ShowHideDTO; +import com.ruoyi.system.dto.update.FieldUpdateDTO; import com.ruoyi.system.mapper.TbFieldMapper; import com.ruoyi.system.query.FieldQuery; import com.ruoyi.system.service.TbBasicDataConfigService; @@ -27,6 +29,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; @@ -52,9 +55,9 @@ //1:数字 2:文本 3:百分比 if (FieldTypeEnum.TEXT.getCode().equals(fieldType)) { if (StringUtils.isNull(dto.getTextInputType())) { - throw new RuntimeException("输入类型不能为空"); + throw new ServiceException("输入类型不能为空"); } else if (FieldInputTypeEnum.FIXED_CONTENT.getCode().equals(dto.getTextInputType()) && StringUtils.isBlank(dto.getTextContent())) { - throw new RuntimeException("内容设置不能为空"); + throw new ServiceException("内容设置不能为空"); } } TbField tbField = BeanUtils.copyBean(dto, TbField.class); @@ -76,7 +79,7 @@ log.info("======主线程执行showHide{}",Thread.currentThread().getName() ); TbField field = this.getById(dto.getId()); if (StringUtils.isNull(field)) { - throw new RuntimeException("非法参数"); + throw new ServiceException("非法参数"); } //隐藏字段 this.lambdaUpdate().set(TbField::getStatus, dto.getStatus()).eq(TbField::getId, dto.getId()).update(); @@ -119,25 +122,34 @@ } @Override - public List<String> influencedData(Integer id) { - //List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().like(TbBasicDataConfig::getFieldIdStr, id).list(); - List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list(); + public String influencedData(Integer id) { + List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW).list(); if (CollUtils.isEmpty(list)) { - return CollUtils.emptyList(); + return ""; } - List<String> collect = list.stream().map(config -> { + String collect = list.stream().map(config -> { String fieldIdStr = config.getFieldIdStr(); String[] split = fieldIdStr.split(","); //字符串数组转为List - List<String> idList = new ArrayList<>(Arrays.asList(split)); + List<String> idList = Arrays.asList(split); if (idList.contains(id.toString())) { return config.getTypeName(); } return null; - }).collect(Collectors.toList()); - if (CollUtils.isEmpty(collect)) { - return CollUtils.emptyList(); + }).filter(Objects::nonNull).collect(Collectors.joining(",")); + if (StringUtils.isBlank(collect)) { + return ""; } return collect; } + + @Override + public void update(FieldUpdateDTO dto) { + TbField field = this.getById(dto.getId()); + if (Objects.isNull(field)) { + throw new ServiceException("参数异常"); + } + TbField tbField = BeanUtils.copyBean(dto, TbField.class); + this.updateById(tbField); + } } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataFieldVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataFieldVO.java new file mode 100644 index 0000000..85acebb --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataFieldVO.java @@ -0,0 +1,8 @@ +package com.ruoyi.system.vo; + +/** + * @author mitao + * @date 2024/3/19 + */ +public class BasicDataFieldVO { +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataReportingVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataReportingVO.java new file mode 100644 index 0000000..21283ae --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataReportingVO.java @@ -0,0 +1,41 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.enums.ReportingStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value="基础数据填报视图对象") +public class BasicDataReportingVO implements Serializable { + + private static final long serialVersionUID = 8457240440217226595L; + + @ApiModelProperty(value = "季度") + private String quarter; + + @ApiModelProperty(value = "备注") + private String remark; + + @ApiModelProperty(value = "填报状态(1=未填报 2=数据缺失 3=已填报)") + private ReportingStatusEnum status; + + @ApiModelProperty(value = "首次填报时间") + private LocalDateTime createTime; + + @ApiModelProperty(value = "填报完成时间") + private LocalDateTime updateTime; + + //1:未填报 2:数据缺失 3:已填报 + @ApiModelProperty(value = "动态字段") + private List<FieldReportingVO> fields = new ArrayList<>(); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java new file mode 100644 index 0000000..608cf9b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldReportingVO.java @@ -0,0 +1,67 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.enums.FieldTypeEnum; +import com.ruoyi.common.enums.ShowStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value="数据上报字段视图对象") +public class FieldReportingVO implements Serializable { + + private static final long serialVersionUID = -7412686975187928384L; + + @ApiModelProperty(value = "字段id") + private Integer id; + + @ApiModelProperty(value = "字段名") + private String fieldName; + + @ApiModelProperty(value = "字段类型(1=数字 2=文本 3=百分比)") + private FieldTypeEnum fieldType; + + @ApiModelProperty(value = "一级分类id") + private Integer levelOneCategoryId; + + @ApiModelProperty(value = "二级分类id") + private Integer levelTwoCategoryId; + + @ApiModelProperty(value = "三级分类id") + private Integer levelThreeCategoryId; + + @ApiModelProperty(value = "一级分类") + private String levelOneCategory; + + @ApiModelProperty(value = "二级分类") + private String levelTwoCategory; + + @ApiModelProperty(value = "三级分类") + private String levelThreeCategory; + + @ApiModelProperty(value = "隐藏状态(0=展示中 1=已隐藏)") + private ShowStatusEnum status; + + @ApiModelProperty(value = "数字最小值") + private Integer numMin; + + @ApiModelProperty(value = "数字最大值") + private Integer numMax; + + @ApiModelProperty(value = "文本输入类型(1=手动输入 2=固定内容)") + private Integer textInputType; + + @ApiModelProperty(value = "文本最少字数") + private Integer textMinNum; + + @ApiModelProperty(value = "文本最多字数") + private Integer textMaxNum; + + @ApiModelProperty(value = "文本内容设置(不同内容以','隔开)") + private String textContent; + + @ApiModelProperty(value = "部门上报的值") + private String value; +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java index 04a1247..033a1a3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java @@ -1,5 +1,6 @@ package com.ruoyi.system.vo; +import com.ruoyi.common.enums.FieldTypeEnum; import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; @@ -20,7 +21,7 @@ private String fieldName; @ApiModelProperty(value = "字段类型(1=数字 2=文本 3=百分比)") - private Integer fieldType; + private FieldTypeEnum fieldType; @ApiModelProperty(value = "一级分类id") private Integer levelOneCategoryId; -- Gitblit v1.7.1