From a4befde9e479ff159d08202b7e231377a975406b Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期一, 18 三月 2024 19:12:16 +0800 Subject: [PATCH] 统计管理相关接口 --- ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataCategoryDTO.java | 24 + ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java | 3 ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldTypeEnum.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java | 131 +++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java | 71 +- ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java | 4 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java | 51 ++ ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java | 47 ++ ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml | 6 ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataConfigQuery.java | 30 + ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataCategoryVO.java | 24 + ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigDetailVO.java | 54 ++ ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java | 24 ruoyi-system/src/main/java/com/ruoyi/system/dto/DataScreeningDTO.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java | 5 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java | 103 ++++ ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java | 20 ruoyi-admin/src/main/resources/application.yml | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java | 20 ruoyi-common/src/main/java/com/ruoyi/common/enums/CalculateTypeEnum.java | 27 + ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigDetailService.java | 16 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java | 3 ruoyi-system/src/main/resources/mapper/system/TbBasicDataCategoryMapper.xml | 2 ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigVO.java | 31 + ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java | 4 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java | 20 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java | 29 + ruoyi-system/src/main/java/com/ruoyi/system/dto/CalculateDTO.java | 20 ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java | 10 ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigDetailController.java | 21 ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java | 89 ++++ ruoyi-system/src/main/java/com/ruoyi/system/query/FieldQuery.java | 10 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java | 30 + ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java | 3 code-generator/src/test/java/CodeGeneratorTests.java | 6 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigDetailServiceImpl.java | 20 ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java | 6 ruoyi-admin/src/main/java/com/ruoyi/RuoYiManageApplication.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/vo/CalculateVO.java | 26 + ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatusEnum.java | 26 + ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigDetailMapper.java | 16 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java | 8 ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java | 10 ruoyi-common/pom.xml | 7 ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataCategoryQuery.java | 26 + ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java | 114 +++++ /dev/null | 22 - ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigDetailMapper.xml | 18 ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java | 3 ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java | 2 57 files changed, 1,142 insertions(+), 132 deletions(-) diff --git a/code-generator/src/test/java/CodeGeneratorTests.java b/code-generator/src/test/java/CodeGeneratorTests.java index f936b9f..b7d0e92 100644 --- a/code-generator/src/test/java/CodeGeneratorTests.java +++ b/code-generator/src/test/java/CodeGeneratorTests.java @@ -26,7 +26,7 @@ // 防止误生成 - private static final String BASE_PACKAGE = "com.financial"; + private static final String BASE_PACKAGE = "com.ruoyi"; @Test public void contextLoads() { @@ -43,7 +43,7 @@ .setServiceName("%sService") .setServiceImplName("%sServiceImpl") .setControllerName("%sController") - .setOpen(false)//当代码生成完成之后是否打开代码所在的文件夹 + .setOpen(true)//当代码生成完成之后是否打开代码所在的文件夹 .setSwagger2(true) //实体属性 Swagger2 注解 .setFileOverride(true)//是否覆盖 //.setActiveRecord(true) @@ -144,7 +144,7 @@ // strategy.setTablePrefix(pc.getModuleName() + ""); // strategy.setLikeTable(new LikeTable("room")); //strategy.setLikeTable(new LikeTable("member")); - strategy.setLikeTable(new LikeTable("tb_"));// 生成表名 + strategy.setLikeTable(new LikeTable("tb_basic_data_config"));// 生成表名 // strategy.setLikeTable(new LikeTable("t_hotel"));// 生成表名 // strategy.setLikeTable(new LikeTable("t_scan_message"));// 生成表名 // strategy.setNotLikeTable(new LikeTable("tb_dept"));// 不生成表名 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiManageApplication.java b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiManageApplication.java index 68adb8d..22bcc57 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/RuoYiManageApplication.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/RuoYiManageApplication.java @@ -9,6 +9,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.core.env.Environment; import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.web.client.RestTemplate; @@ -20,6 +21,7 @@ * @author ruoyi */ @Slf4j +@EnableAsync @EnableScheduling//开启定时任务 @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) public class RuoYiManageApplication 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 b102be4..75d5212 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 @@ -1,8 +1,24 @@ package com.ruoyi.web.controller.api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.basic.PageDTO; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.utils.BeanUtils; +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.service.TbBasicDataCategoryService; +import com.ruoyi.system.vo.BasicDataCategoryVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Objects; /** * <p> @@ -12,9 +28,90 @@ * @author mitao * @since 2024-03-13 */ +@Slf4j @RestController -@RequestMapping("/tb-basic-data-category") +@RequiredArgsConstructor +@Api(tags = {"基础数据分类相关接口"}) +@RequestMapping("/basic-data-category") public class TbBasicDataCategoryController { + private final TbBasicDataCategoryService tbBasicDataCategoryService; + + /** + * 添加 + * @param dto 基础数据分类传输对象 + * @return R<Void> + */ + @PostMapping("/add") + @ApiOperation("添加") + public R<Void> add(@RequestBody @Validated BasicDataCategoryDTO dto) { + tbBasicDataCategoryService.add(dto); + return R.ok(); + } + + /** + * 编辑 + * @param dto 基础数据分类更新传输对象 + * @return R<Void> + */ + @PostMapping("/edit") + @ApiOperation("编辑") + public R<Void> add(@RequestBody @Validated BasicDataCategoryUpdateDTO dto) { + tbBasicDataCategoryService.update(dto); + return R.ok(); + } + + /** + * 删除 + * @param id id + * @return R<Void> + */ + @DeleteMapping("/delete") + @ApiOperation("删除") + public R<Void> delete(@RequestParam(value = "id") Integer id){ + tbBasicDataCategoryService.removeById(id); + return R.ok(); + } + + /** + * 根据id获取详情 + * @param id id + * @return R<BasicDataCategoryVO> + */ + @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); + } + + /** + * 隐藏显示操作 + * @param dto 显示隐藏操作数据传输对象 + * @return R<Void> + */ + @PostMapping("/show-hide") + @ApiOperation("隐藏显示操作") + public R<Void> showHide(@RequestBody ShowHideDTO dto) { + TbBasicDataCategory basicDataCategory = tbBasicDataCategoryService.getById(dto.getId()); + if (Objects.isNull(basicDataCategory)) { + throw new RuntimeException("非法参数"); + } + tbBasicDataCategoryService.lambdaUpdate().set( TbBasicDataCategory::getStatus, dto.getStatus()).eq(TbBasicDataCategory::getId, dto.getId()).update(); + return R.ok(); + } + + /** + * 分页条件查询 + * @param query 基础数据分类条件查询对象 + * @return R<PageDTO<BasicDataCategoryVO>> + */ + @PostMapping("/page") + @ApiOperation("分页条件查询") + public R<PageDTO<BasicDataCategoryVO>> page(@RequestBody BasicDataCategoryQuery query) { + return R.ok(tbBasicDataCategoryService.queryPage(query)); + } + } 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 1fdb334..3e0d496 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 @@ -1,8 +1,28 @@ package com.ruoyi.web.controller.api; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.basic.PageDTO; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.system.domain.TbBasicDataCategory; +import com.ruoyi.system.dto.BasicDataConfigDTO; +import com.ruoyi.system.dto.ShowHideDTO; +import com.ruoyi.system.dto.update.BasicDataConfigUpdateDTO; +import com.ruoyi.system.query.BasicDataConfigQuery; +import com.ruoyi.system.service.TbBasicDataCategoryService; +import com.ruoyi.system.service.TbBasicDataConfigService; +import com.ruoyi.system.vo.BasicDataCategoryVO; +import com.ruoyi.system.vo.BasicDataConfigDetailVO; +import com.ruoyi.system.vo.BasicDataConfigVO; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * <p> @@ -10,11 +30,97 @@ * </p> * * @author mitao - * @since 2024-03-13 + * @since 2024-03-18 */ +@Slf4j @RestController -@RequestMapping("/tb-basic-data-config") +@RequiredArgsConstructor +@Api(tags = {"基础数据分类相关接口"}) +@RequestMapping("/basic-data-config") public class TbBasicDataConfigController { + private final TbBasicDataConfigService tbBasicDataConfigService; + private final TbBasicDataCategoryService tbBasicDataCategoryService; + + /** + * 获取分类列表 + * @return R<List<BasicDataCategoryVO>> + */ + @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)); + } + + /** + * 添加 + * @param dto 基础数据配置数据传输对象 + * @return R<Void> + */ + @PostMapping("/add") + @ApiOperation("添加") + public R<Void> add(@RequestBody @Validated BasicDataConfigDTO dto) { + tbBasicDataConfigService.add(dto); + return R.ok(); + } + + /** + * 编辑 + * @param dto 基础数据配置数据传输对象 + * @return R<Void> + */ + @PostMapping("/edit") + @ApiOperation("编辑") + public R<Void> edit(@RequestBody @Validated BasicDataConfigUpdateDTO dto) { + tbBasicDataConfigService.edit(dto); + return R.ok(); + } + + /** + * 获取详情 + * @param id id + * @return R<BasicDataConfigDetailVO> + */ + @GetMapping("/get-details") + @ApiOperation("获取详情") + public R<BasicDataConfigDetailVO> getDetails(Integer id) { + return R.ok(tbBasicDataConfigService.getDetails(id)); + } + + /** + * 删除 + * @param id id + * @return R<Void> + */ + @DeleteMapping("/delete") + @ApiOperation("删除") + public R<Void> delete(Integer id) { + tbBasicDataConfigService.delete(id); + return R.ok(); + } + + /** + * 隐藏显示操作 + * @param dto 显示隐藏操作数据传输对象 + * @return R<Void> + */ + @PostMapping("show-hide") + @ApiOperation("隐藏显示操作") + public R<Void> showHide(@RequestBody ShowHideDTO dto) { + tbBasicDataConfigService.showHide(dto); + return R.ok(); + } + + /** + * 分页条件查询 + * @param query 基础数据条件查询对象 + * @return R<PageDTO<BasicDataConfigVO>> + */ + @PostMapping("/page") + @ApiOperation("分页条件查询") + public R<PageDTO<BasicDataConfigVO>> page(@RequestBody BasicDataConfigQuery query) { + return R.ok(tbBasicDataConfigService.queryPage(query)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigDetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigDetailController.java new file mode 100644 index 0000000..82f140f --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigDetailController.java @@ -0,0 +1,21 @@ +package com.ruoyi.web.controller.api; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + * <p> + * 基础数据配置详情表(存储文本和百分比的配置) 前端控制器 + * </p> + * + * @author mitao + * @since 2024-03-18 + */ +@RestController +@RequestMapping("/tb-basic-data-config-detail") +public class TbBasicDataConfigDetailController { + +} + 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 af3f223..ef97d4f 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 @@ -4,8 +4,8 @@ import com.ruoyi.common.basic.PageDTO; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.exception.GlobalException; +import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.ExcelUtil; -import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.system.domain.TbDept; import com.ruoyi.system.dto.update.DeptFocusDTO; import com.ruoyi.system.dto.update.DeptUpdateDTO; @@ -21,6 +21,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; +import java.util.Objects; /** * <p> @@ -88,13 +89,11 @@ * @param id 部门id * @return DeptVO */ - @GetMapping("/getById") + @GetMapping("/get-details") @ApiOperation("根据id查询部门详情") - public R<DeptVO> getById(@RequestParam Integer id) { + public R<DeptVO> getDetails(@RequestParam Integer id) { TbDept dept = tbDeptService.getById(id); - DeptVO deptVO = new DeptVO(); - BeanUtils.copyBeanProp(deptVO, dept); - return R.ok(deptVO); + return R.ok(BeanUtils.copyBean(dept,DeptVO.class)); } /** @@ -105,8 +104,7 @@ @PostMapping("/edit") @ApiOperation("编辑") public R<Object> edit(@RequestBody DeptUpdateDTO dto){ - TbDept tbDept = new TbDept(); - BeanUtils.copyBeanProp(tbDept,dto); + TbDept tbDept = BeanUtils.copyBean(dto, TbDept.class); tbDeptService.updateById(tbDept); return R.ok(); } @@ -119,8 +117,10 @@ @PostMapping("/focus") @ApiOperation("重点关注") public R<Object> focus(@RequestBody DeptFocusDTO dto){ - TbDept tbDept = new TbDept(); - BeanUtils.copyBeanProp(tbDept,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()) 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 6a4ea9d..d4c16ad 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 @@ -47,12 +47,7 @@ @PostMapping("/add") @ApiOperation("添加") public R<Object> add(@RequestBody @Validated FieldCategoryDTO dto) { - try { - tbFieldCategoryService.add(dto); - } catch (Exception e) { - log.error("添加分类异常", e); - throw new RuntimeException("操作失败"); - } + tbFieldCategoryService.add(dto); return R.ok(); } @@ -61,7 +56,7 @@ * @param id 字段分类id * @return R */ - @GetMapping("/getById") + @GetMapping("/get-details") @ApiOperation("根据id获取字段分类详情") public R<FieldCategoryDetailVO> getById(@RequestParam(value = "id") Integer id) { TbFieldCategory oneCategory = tbFieldCategoryService.getById(id); @@ -100,9 +95,9 @@ * @param dto 显示隐藏操作数据传输对象 * @return R */ - @PutMapping("/show-hide") + @PostMapping("/show-hide") @ApiOperation("隐藏显示操作") - public R<Object> showHide(@RequestBody ShowHideDTO dto) { + public R<Void> showHide(@RequestBody ShowHideDTO dto) { tbFieldCategoryService.showHide(dto); return R.ok(); } @@ -115,12 +110,7 @@ @DeleteMapping("/delete-children") @ApiOperation("编辑页面删除子字段分类") public R<Object> deleteChildren(@RequestParam(value = "id") Integer id){ - try { - tbFieldCategoryService.deleteChildren(id); - } catch (Exception e) { - log.error("编辑页面删除子字段分类失败",e); - throw new RuntimeException("操作失败"); - } + tbFieldCategoryService.deleteChildren(id); 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 0db336e..405cbc6 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 @@ -114,9 +114,9 @@ * @param id id * @return FieldVO */ - @GetMapping("/getById") + @GetMapping("/get-details") @ApiOperation("获取详情") - public R<FieldVO> getById(@RequestParam Integer id){ + public R<FieldVO> getDetails(@RequestParam Integer id){ TbField field = tbFieldService.getById(id); return R.ok(BeanUtils.copyBean(field, FieldVO.class)); } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 157740c..1fc858d 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -93,6 +93,8 @@ max-wait: -1ms jackson: default-property-inclusion: non_null + deserialization: + read-unknown-enum-values-as-null: true # token配置 token: diff --git a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml b/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml index 10cf6b0..9a8c670 100644 --- a/ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml +++ b/ruoyi-admin/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-common/pom.xml b/ruoyi-common/pom.xml index c52a894..573c853 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -179,6 +179,13 @@ <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> </dependency> + + <!--jexl3--> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-jexl3</artifactId> + <version>3.3</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/CalculateTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/CalculateTypeEnum.java new file mode 100644 index 0000000..dabc89d --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/CalculateTypeEnum.java @@ -0,0 +1,27 @@ +package com.ruoyi.common.enums; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum CalculateTypeEnum { + NUMBER(1, "数字计算"), + TEXT(2, "文本统计"), + PERCENTAGE(3, "百分比统计"); + @EnumValue + private final Integer code; + @JsonValue + private final String desc; + + public static CalculateTypeEnum getEnumByCode(Integer code) { + for (CalculateTypeEnum e : CalculateTypeEnum.values()) { + if (e.code.equals(code)) { + return e; + } + } + return null; + } +} \ 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 46e7bca..b904c30 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 @@ -1,5 +1,7 @@ package com.ruoyi.common.enums; +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; /** @@ -13,10 +15,12 @@ YES(1, "是"); @Getter + @JsonValue private String desc; @Getter + @EnumValue private int code; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldTypeEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldTypeEnum.java index 7d5ace4..2ecbdc2 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldTypeEnum.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldTypeEnum.java @@ -1,5 +1,7 @@ package com.ruoyi.common.enums; +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; import lombok.Getter; import lombok.AllArgsConstructor; @Getter @@ -8,8 +10,9 @@ NUMBER(1, "数字"), TEXT(2, "文本"), PERCENTAGE(3, "百分比"); - + @EnumValue private final Integer code; + @JsonValue private final String desc; public static FieldTypeEnum getEnumByCode(Integer code) { diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatus.java deleted file mode 100644 index 28a650c..0000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatus.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.ruoyi.common.enums; - -import lombok.Getter; -import lombok.AllArgsConstructor; -@Getter -@AllArgsConstructor -public enum ShowStatus { - SHOW(0, "展示"), - HIDE(1, "隐藏"); - - private final Integer code; - private final String desc; - - public static ShowStatus getEnumByCode(Integer code) { - for (ShowStatus e : ShowStatus.values()) { - if (e.code.equals(code)) { - return e; - } - } - return null; - } -} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatusEnum.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatusEnum.java new file mode 100644 index 0000000..324b701 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatusEnum.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 ShowStatusEnum { + SHOW(0, "展示中"), + HIDE(1, "已隐藏"); + + @EnumValue + private final Integer code; + @JsonValue + private final String desc; + + public static ShowStatusEnum getEnumByCode(Integer code) { + for (ShowStatusEnum e : ShowStatusEnum.values()) { + if (e.code.equals(code)) { + return e; + } + } + return null; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java index 088bfe5..83d941d 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java @@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -34,8 +35,8 @@ private String basicDataCategoryName; @ApiModelProperty(value = "隐藏状态(0=展示中 1=已隐藏)") - @TableField("hidden") - private Integer hidden; + @TableField("status") + private ShowStatusEnum status; @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableField("del_flag") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java index 9a7e1d3..953d132 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java @@ -1,6 +1,8 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.enums.CalculateTypeEnum; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,7 +17,7 @@ * </p> * * @author mitao - * @since 2024-03-13 + * @since 2024-03-18 */ @Data @EqualsAndHashCode(callSuper = false) @@ -26,7 +28,7 @@ private static final long serialVersionUID = 1L; @ApiModelProperty(value = "基础数据配置id") - @TableId("id") + @TableId(value = "id", type = IdType.AUTO) private Integer id; @ApiModelProperty(value = "基础数据分类id") @@ -43,19 +45,19 @@ @ApiModelProperty(value = "计算类型(1=数字计算 2=文本统计 3=百分比统计)") @TableField("calculate_type") - private Integer calculateType; + private CalculateTypeEnum calculateType; - @ApiModelProperty(value = "字段id") - @TableField("field_id") - private Integer fieldId; + @ApiModelProperty(value = "数字计算公式") + @TableField("number_calculate_formula") + private String numberCalculateFormula; - @ApiModelProperty(value = "计算公式") - @TableField("calculate_formula") - private String calculateFormula; + @ApiModelProperty(value = "字段id (多个id使用 ',' 拼接)") + @TableField("field_id_str") + private String fieldIdStr; - @ApiModelProperty(value = "隐藏状态(0=展示中 1=已隐藏)") + @ApiModelProperty(value = "状态(0=展示 1=隐藏)") @TableField("status") - private Integer status; + private ShowStatusEnum status; @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableField("del_flag") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java new file mode 100644 index 0000000..b67b763 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java @@ -0,0 +1,47 @@ +package com.ruoyi.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +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-18 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("tb_basic_data_config_detail") +@ApiModel(value="TbBasicDataConfigDetail对象", description="基础数据配置详情表(存储文本和百分比的配置)") +public class TbBasicDataConfigDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "基础数据配置id") + @TableField("basic_data_config_id") + private Integer basicDataConfigId; + + @ApiModelProperty(value = "键") + @TableField("key") + private String key; + + @ApiModelProperty(value = "值") + @TableField("value") + private String value; + + +} 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 f1cb912..07aa6a0 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,6 +2,7 @@ import cn.afterturn.easypoi.excel.annotation.Excel; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -53,7 +54,7 @@ @ApiModelProperty(value = "县级标志(不包含直辖市的区 0:否 1:是)") @TableField("county_flag") @Excel(name = "县级标志 是/否",replace = {"是_1","否_2"}) - private Integer countyFlag; + private ShowStatusEnum countyFlag; @ApiModelProperty(value = "负责人") @TableField("person_in_charge") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java index ae27823..9e6d061 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java @@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -63,7 +64,7 @@ @ApiModelProperty(value = "隐藏状态(0=展示中 1=已隐藏)") @TableField("status") - private Integer status; + private ShowStatusEnum status; @ApiModelProperty(value = "数字最小值") @TableField("num_min") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java index 24593d3..b924e7a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java @@ -1,6 +1,7 @@ package com.ruoyi.system.domain; import com.baomidou.mybatisplus.annotation.*; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -43,7 +44,7 @@ @ApiModelProperty(value = "状态(0=展示 1=隐藏)") @TableField("status") - private Integer status; + private ShowStatusEnum status; @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableField("del_flag") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataCategoryDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataCategoryDTO.java new file mode 100644 index 0000000..b9cedc7 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataCategoryDTO.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import java.io.Serializable; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value = "基础数据分类数据传输对象") +public class BasicDataCategoryDTO implements Serializable { + + private static final long serialVersionUID = -5360339554664959680L; + + @ApiModelProperty(value = "分类名称") + @NotBlank(message = "分类名称不能为空") + private String basicDataCategoryName; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java new file mode 100644 index 0000000..2a4b5e4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java @@ -0,0 +1,89 @@ +package com.ruoyi.system.dto; + +import com.ruoyi.common.enums.CalculateTypeEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value = "基础数据配置数据传输对象") +public class BasicDataConfigDTO { + + @ApiModelProperty(value = "类型名称") + @NotBlank(message = "类型名称不能为空") + private String typeName; + + @ApiModelProperty(value = "基础数据分类id") + @NotNull(message = "基础数据分类id不能为空") + private Integer basicDataCategoryId; + + @ApiModelProperty(value = "字段说明") + @NotBlank(message = "字段说明不能为空") + private String fieldDescription; + + @ApiModelProperty(value = "计算类型(数字计算 文本统计 百分比统计)") + @NotNull(message = "计算类型不能为空") + private CalculateTypeEnum calculateType; + + @ApiModelProperty(value = "字段id (多个id使用 ',' 拼接)") + @NotBlank(message = "字段id不能为空") + private String fieldIdStr; + + @ApiModelProperty(value = "计算公式",notes = "计算类型为数字计算,配置内容使用该字段接收;公式中字段的格式为:field_字段id,e.g:field_1,field_2等。") + private String numberCalculateFormula; + + @ApiModelProperty(value = "文本和百分比配置信息",notes = "当计算方式为 文本统计/百分比统计 " + + "配置内容使用这个字段接收;key为键,value为得分;百分比统计 将百分比区间使用'_'拼接作为key,e.g: 10_20,20_30") + private List<CalculateDTO> dtoList; + + public static void main(String[] args) { + String rule = "(field1_13+field2_50) × 5 ÷field3_63×10"; + + // 正则表达式模式,匹配形如 "fieldName:value" 的字符串 + Pattern pattern = Pattern.compile("\\b(\\w+)_(\\d+)\\b"); + Matcher matcher = pattern.matcher(rule); + + // 循环匹配并输出字段名和值 + while (matcher.find()) { + String fieldName = matcher.group(1); + int value = Integer.parseInt(matcher.group(2)); + System.out.println("Field: " + fieldName + ", Value: " + value); + } + + /* // 假设用户上传的字段值 + int field1 = 500; + int field2 = 30; + int field3 = 1000; + + // 计算表达式 + String expression = "(field1_13 + field2_50) * 5 / field3_63 * 10"; + + // 创建 JEXL 引擎 + JexlEngine jexl = new JexlBuilder().create(); + + // 创建表达式对象 + JexlExpression exp = jexl.createExpression(expression); + + // 创建上下文 + JexlContext context = new MapContext(); + context.set("field1_13", field1); + context.set("field2_50", field2); + context.set("field3_63", field3); + + // 执行计算 + Object result = exp.evaluate(context); + + // 输出结果 + System.out.println("Result: " + result);*/ + } + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/CalculateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/CalculateDTO.java new file mode 100644 index 0000000..c5d0807 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/CalculateDTO.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value = "基础数据配置配置数据传输对象") +public class CalculateDTO implements Serializable { + + private static final long serialVersionUID = 4241732957573127850L; + + @ApiModelProperty(value = "键") + private String key; + + @ApiModelProperty(value = "值") + private String value; +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/DataScreeningDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/DataScreeningDTO.java index 981f055..8ef0401 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/DataScreeningDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/DataScreeningDTO.java @@ -10,6 +10,8 @@ @ApiModel(value = "首页统计DTO") public class DataScreeningDTO implements Serializable { + private static final long serialVersionUID = 2753409356329000955L; + @ApiModelProperty(value = "区县id") private Integer districtId; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java index 964493f..caa97ee 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java @@ -6,6 +6,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import java.io.Serializable; /** * @author mitao @@ -13,7 +14,9 @@ */ @Data @ApiModel(value = "字段数据传输对象") -public class FieldDTO { +public class FieldDTO implements Serializable { + + private static final long serialVersionUID = 3437479376027913296L; @ApiModelProperty(value = "字段名") @NotBlank(message="字段名不能为空") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java index 096cb23..6a93277 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java @@ -1,10 +1,12 @@ package com.ruoyi.system.dto; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; +import java.io.Serializable; /** * @author mitao @@ -12,13 +14,15 @@ */ @Data @ApiModel(value = "显示隐藏操作数据传输对象") -public class ShowHideDTO { +public class ShowHideDTO implements Serializable { + + private static final long serialVersionUID = -309339051829606307L; @ApiModelProperty(value = "分类id") @NotNull(message = "id不能为空") private Integer id; - @ApiModelProperty(value = "状态(0=展示 1=隐藏)") + @ApiModelProperty(value = "状态 (直接传 展示中 或 已隐藏)") @NotNull(message = "status不能为空") - private Integer status; + private ShowStatusEnum status; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java new file mode 100644 index 0000000..2494bdf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java @@ -0,0 +1,29 @@ +package com.ruoyi.system.dto.update; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value = "基础数据分类更新传输对象") +public class BasicDataCategoryUpdateDTO implements Serializable { + + private static final long serialVersionUID = -5360339554664959680L; + + @ApiModelProperty(value = "id") + @NotNull(message = "id不能为空") + private Integer id; + + @ApiModelProperty(value = "分类名称") + @NotBlank(message = "分类名称不能为空") + private String basicDataCategoryName; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java new file mode 100644 index 0000000..0cb7d84 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java @@ -0,0 +1,51 @@ +package com.ruoyi.system.dto.update; + +import com.ruoyi.common.enums.CalculateTypeEnum; +import com.ruoyi.system.dto.CalculateDTO; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +@Data +@ApiModel(value = "基础数据配置数据传输对象") +public class BasicDataConfigUpdateDTO implements Serializable { + + private static final long serialVersionUID = 5918207914709497977L; + + @ApiModelProperty(value = "id") + @NotNull(message = "id不能为空") + private Integer id; + + @ApiModelProperty(value = "类型名称") + @NotBlank(message = "类型名称不能为空") + private String typeName; + + @ApiModelProperty(value = "基础数据分类id") + @NotNull(message = "基础数据分类id不能为空") + private Integer basicDataCategoryId; + + @ApiModelProperty(value = "字段说明") + @NotBlank(message = "字段说明不能为空") + private String fieldDescription; + + @ApiModelProperty(value = "计算类型(数字计算 文本统计 百分比统计)") + @NotNull(message = "计算类型不能为空") + private CalculateTypeEnum calculateType; + + @ApiModelProperty(value = "字段id (多个id使用 ',' 拼接)") + @NotBlank(message = "字段id不能为空") + private String fieldIdStr; + + @ApiModelProperty(value = "计算公式",notes = "计算类型为数字计算,配置内容使用该字段接收;公式中字段的格式为:field_字段id,e.g:field_1,field_2等。") + private String numberCalculateFormula; + + @ApiModelProperty(value = "文本和百分比配置信息",notes = "当计算方式为 文本统计/百分比统计 " + + "配置内容使用这个字段接收;key为键,value为得分;百分比统计 将百分比区间使用'_'拼接作为key,e.g: 10_20,20_30") + private List<CalculateDTO> dtoList; + + } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java index f6f6846..8e74c4f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java @@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -17,8 +18,10 @@ private static final long serialVersionUID = -7322348219193526224L; @ApiModelProperty(value = "部门id") + @NotNull(message = "id不能为空") private Integer id; @ApiModelProperty(value = "是否重点关注(0:否 1:是)") + @NotNull(message = "是否重点关注不能为空") private Integer focussed; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java index 7049664..faa33c9 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java @@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -17,20 +19,26 @@ private static final long serialVersionUID = -4377907033147587467L; @ApiModelProperty(value = "部门id") + @NotNull(message = "id不能为空") private Integer id; @ApiModelProperty(value = "别名") + @NotBlank(message = "别名不能为空") private String areaAlias; @ApiModelProperty(value = "负责人") + @NotBlank(message = "负责人不能为空") private String personInCharge; @ApiModelProperty(value = "联系电话") + @NotBlank(message = "联系电话不能为空") private String phone; @ApiModelProperty(value = "登录账号") + @NotBlank(message = "登录账号不能为空") private String account; @ApiModelProperty(value = "登录密码") + @NotBlank(message = "登录密码不能为空") private String password; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java index 2b4aee7..e465235 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java @@ -5,6 +5,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -16,7 +17,7 @@ private static final long serialVersionUID = -1625725857401976832L; @ApiModelProperty(value = "id") - @NotBlank(message = "id不能为空") + @NotNull(message = "id不能为空") private Integer id; @ApiModelProperty(value = "一级分类名称") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java index b10d0b6..1562c03 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java @@ -16,7 +16,7 @@ public class FieldUpdateDTO { @ApiModelProperty(value = "id") - @NotBlank(message = "id不能为空") + @NotNull(message = "id不能为空") private Integer id; @ApiModelProperty(value = "字段名") diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigDetailMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigDetailMapper.java new file mode 100644 index 0000000..13fbd5a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigDetailMapper.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.system.domain.TbBasicDataConfigDetail; + +/** + * <p> + * 基础数据配置详情表(存储文本和百分比的配置) Mapper 接口 + * </p> + * + * @author mitao + * @since 2024-03-18 + */ +public interface TbBasicDataConfigDetailMapper extends BaseMapper<TbBasicDataConfigDetail> { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java index 3dca6b0..ce20c7a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java @@ -9,7 +9,7 @@ * </p> * * @author mitao - * @since 2024-03-13 + * @since 2024-03-18 */ public interface TbBasicDataConfigMapper extends BaseMapper<TbBasicDataConfig> { diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataCategoryQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataCategoryQuery.java new file mode 100644 index 0000000..5726018 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataCategoryQuery.java @@ -0,0 +1,26 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +import com.ruoyi.common.enums.ShowStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("基础数据分类条件查询对象") +public class BasicDataCategoryQuery extends BasePage { + + private static final long serialVersionUID = -836451250541139775L; + + @ApiModelProperty(value = "分类名称") + private String basicDataCategoryName; + + @ApiModelProperty(value = "状态") + private ShowStatusEnum status; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataConfigQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataConfigQuery.java new file mode 100644 index 0000000..1984258 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataConfigQuery.java @@ -0,0 +1,30 @@ +package com.ruoyi.system.query; + +import com.ruoyi.common.core.domain.BasePage; +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 lombok.EqualsAndHashCode; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("基础数据条件查询对象") +public class BasicDataConfigQuery extends BasePage { + + private static final long serialVersionUID = -6505569126273148383L; + + @ApiModelProperty(value = "类型名称") + private String basicDataConfigName; + + @ApiModelProperty(value = "状态") + private ShowStatusEnum status; + + @ApiModelProperty(value = "计算类型(数字计算 文本统计 百分比统计)") + private FieldTypeEnum calculateType; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/query/FieldQuery.java b/ruoyi-system/src/main/java/com/ruoyi/system/query/FieldQuery.java index 898eb75..a400482 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/query/FieldQuery.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/query/FieldQuery.java @@ -1,6 +1,8 @@ package com.ruoyi.system.query; import com.ruoyi.common.core.domain.BasePage; +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; @@ -20,8 +22,8 @@ @ApiModelProperty(value = "字段名") private String fieldName; - @ApiModelProperty(value = "字段类型(1=数字 2=文本 3=百分比)") - private Integer fieldType; + @ApiModelProperty(value = "字段类型(数字 文本 百分比)") + private FieldTypeEnum fieldType; @ApiModelProperty(value = "所属分类") private String levelOneCategory; @@ -32,6 +34,6 @@ @ApiModelProperty(value = "三级分类") private String levelThreeCategory; - @ApiModelProperty(value = "状态 0=展示 1=隐藏") - private Integer status; + @ApiModelProperty(value = "状态 展示 隐藏") + private ShowStatusEnum status; } 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 8c11ae4..2c9e86a 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 @@ -2,7 +2,12 @@ import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbBasicDataCategory; +import com.ruoyi.system.dto.BasicDataCategoryDTO; +import com.ruoyi.system.dto.update.BasicDataCategoryUpdateDTO; +import com.ruoyi.system.query.BasicDataCategoryQuery; +import com.ruoyi.system.vo.BasicDataCategoryVO; /** * <p> @@ -14,4 +19,9 @@ */ public interface TbBasicDataCategoryService extends IService<TbBasicDataCategory> { + void add(BasicDataCategoryDTO dto); + + void update(BasicDataCategoryUpdateDTO dto); + + PageDTO<BasicDataCategoryVO> queryPage(BasicDataCategoryQuery query); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigDetailService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigDetailService.java new file mode 100644 index 0000000..09e1d1b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigDetailService.java @@ -0,0 +1,16 @@ +package com.ruoyi.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.system.domain.TbBasicDataConfigDetail; + +/** + * <p> + * 基础数据配置详情表(存储文本和百分比的配置) 服务类 + * </p> + * + * @author mitao + * @since 2024-03-18 + */ +public interface TbBasicDataConfigDetailService extends IService<TbBasicDataConfigDetail> { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java index b445eab..6078ba6 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java @@ -1,7 +1,14 @@ package com.ruoyi.system.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.common.basic.PageDTO; import com.ruoyi.system.domain.TbBasicDataConfig; +import com.ruoyi.system.dto.BasicDataConfigDTO; +import com.ruoyi.system.dto.ShowHideDTO; +import com.ruoyi.system.dto.update.BasicDataConfigUpdateDTO; +import com.ruoyi.system.query.BasicDataConfigQuery; +import com.ruoyi.system.vo.BasicDataConfigDetailVO; +import com.ruoyi.system.vo.BasicDataConfigVO; /** * <p> @@ -9,8 +16,19 @@ * </p> * * @author mitao - * @since 2024-03-13 + * @since 2024-03-18 */ public interface TbBasicDataConfigService extends IService<TbBasicDataConfig> { + void add(BasicDataConfigDTO dto); + + void edit(BasicDataConfigUpdateDTO dto); + + BasicDataConfigDetailVO getDetails(Integer id); + + void delete(Integer id); + + PageDTO<BasicDataConfigVO> queryPage(BasicDataConfigQuery query); + + void showHide(ShowHideDTO 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 57a9276..651c0c7 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 @@ -1,10 +1,20 @@ package com.ruoyi.system.service.impl; +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.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.update.BasicDataCategoryUpdateDTO; import com.ruoyi.system.mapper.TbBasicDataCategoryMapper; +import com.ruoyi.system.query.BasicDataCategoryQuery; import com.ruoyi.system.service.TbBasicDataCategoryService; +import com.ruoyi.system.vo.BasicDataCategoryVO; import org.springframework.stereotype.Service; + +import java.util.Objects; /** * <p> @@ -17,4 +27,24 @@ @Service public class TbBasicDataCategoryServiceImpl extends ServiceImpl<TbBasicDataCategoryMapper, TbBasicDataCategory> implements TbBasicDataCategoryService { + @Override + public void add(BasicDataCategoryDTO dto) { + TbBasicDataCategory tbBasicDataCategory = BeanUtils.copyBean(dto, TbBasicDataCategory.class); + this.save(tbBasicDataCategory); + } + + @Override + public void update(BasicDataCategoryUpdateDTO dto) { + TbBasicDataCategory tbBasicDataCategory = BeanUtils.copyBean(dto, TbBasicDataCategory.class); + this.updateById(tbBasicDataCategory); + } + + @Override + public PageDTO<BasicDataCategoryVO> queryPage(BasicDataCategoryQuery query) { + Page<TbBasicDataCategory> page = this.lambdaQuery() + .like(StringUtils.isNotEmpty(query.getBasicDataCategoryName()), TbBasicDataCategory::getBasicDataCategoryName, query.getBasicDataCategoryName()) + .eq(Objects.nonNull(query.getStatus()), TbBasicDataCategory::getStatus, query.getStatus()) + .page(new Page<>(query.getPageNum(), query.getPageSize())); + return PageDTO.of(page,BasicDataCategoryVO.class); + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigDetailServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigDetailServiceImpl.java new file mode 100644 index 0000000..84cbccf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigDetailServiceImpl.java @@ -0,0 +1,20 @@ +package com.ruoyi.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.system.domain.TbBasicDataConfigDetail; +import com.ruoyi.system.mapper.TbBasicDataConfigDetailMapper; +import com.ruoyi.system.service.TbBasicDataConfigDetailService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 基础数据配置详情表(存储文本和百分比的配置) 服务实现类 + * </p> + * + * @author mitao + * @since 2024-03-18 + */ +@Service +public class TbBasicDataConfigDetailServiceImpl extends ServiceImpl<TbBasicDataConfigDetailMapper, TbBasicDataConfigDetail> implements TbBasicDataConfigDetailService { + +} 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 273a224..6049eeb 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 @@ -1,10 +1,37 @@ package com.ruoyi.system.service.impl; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.enums.CalculateTypeEnum; +import com.ruoyi.common.enums.ShowStatusEnum; +import com.ruoyi.common.utils.BeanUtils; +import com.ruoyi.common.utils.CollUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.domain.TbBasicDataConfig; +import com.ruoyi.system.domain.TbBasicDataConfigDetail; +import com.ruoyi.system.domain.TbField; +import com.ruoyi.system.dto.BasicDataConfigDTO; +import com.ruoyi.system.dto.CalculateDTO; +import com.ruoyi.system.dto.ShowHideDTO; +import com.ruoyi.system.dto.update.BasicDataConfigUpdateDTO; import com.ruoyi.system.mapper.TbBasicDataConfigMapper; +import com.ruoyi.system.mapper.TbFieldMapper; +import com.ruoyi.system.query.BasicDataConfigQuery; +import com.ruoyi.system.service.TbBasicDataConfigDetailService; import com.ruoyi.system.service.TbBasicDataConfigService; +import com.ruoyi.system.vo.BasicDataConfigDetailVO; +import com.ruoyi.system.vo.BasicDataConfigVO; +import com.ruoyi.system.vo.CalculateVO; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; /** * <p> @@ -12,9 +39,111 @@ * </p> * * @author mitao - * @since 2024-03-13 + * @since 2024-03-18 */ @Service +@RequiredArgsConstructor public class TbBasicDataConfigServiceImpl extends ServiceImpl<TbBasicDataConfigMapper, TbBasicDataConfig> implements TbBasicDataConfigService { + private final TbBasicDataConfigDetailService tbBasicDataConfigDetailService; + private final TbFieldMapper fieldMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public void add(BasicDataConfigDTO dto) { + TbBasicDataConfig tbBasicDataConfig = BeanUtils.copyBean(dto, TbBasicDataConfig.class); + //参数校验 + Integer calculateType = tbBasicDataConfig.getCalculateType().getCode(); + List<CalculateDTO> dtoList = dto.getDtoList(); + if (CalculateTypeEnum.NUMBER.getCode().equals(calculateType) && StringUtils.isBlank(dto.getNumberCalculateFormula())) { + throw new RuntimeException("计算公式不能为空"); + } + if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType)) + && CollUtils.isEmpty(dtoList)) { + throw new RuntimeException("计算公式不能为空"); + } + this.save(tbBasicDataConfig); + if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType))) { + 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); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void edit(BasicDataConfigUpdateDTO dto) { + TbBasicDataConfig tbBasicDataConfig = BeanUtils.copyBean(dto, TbBasicDataConfig.class); + //参数校验 + Integer calculateType = tbBasicDataConfig.getCalculateType().getCode(); + List<CalculateDTO> dtoList = dto.getDtoList(); + if (CalculateTypeEnum.NUMBER.getCode().equals(calculateType) && StringUtils.isBlank(dto.getNumberCalculateFormula())) { + throw new RuntimeException("计算公式不能为空"); + } + if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType)) + && CollUtils.isEmpty(dtoList)) { + throw new RuntimeException("计算公式不能为空"); + } + this.updateById(tbBasicDataConfig); + if ((CalculateTypeEnum.TEXT.getCode().equals(calculateType) || CalculateTypeEnum.PERCENTAGE.getCode().equals(calculateType))) { + //删除原来的配置信息,重新添加新的 + tbBasicDataConfigDetailService.lambdaUpdate().eq(TbBasicDataConfigDetail::getBasicDataConfigId, tbBasicDataConfig.getId()).remove(); + 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); + } + } + + @Override + public BasicDataConfigDetailVO getDetails(Integer id) { + TbBasicDataConfig config = this.getById(id); + if (Objects.isNull(config)) { + throw new RuntimeException("非法参数"); + } + BasicDataConfigDetailVO vo = BeanUtils.copyBean(config, BasicDataConfigDetailVO.class); + Integer code = vo.getCalculateType().getCode(); + if ((CalculateTypeEnum.TEXT.getCode().equals(code) || CalculateTypeEnum.PERCENTAGE.getCode().equals(code))) { + List<TbBasicDataConfigDetail> list = tbBasicDataConfigDetailService.lambdaQuery().eq(TbBasicDataConfigDetail::getBasicDataConfigId, config.getId()).list(); + List<CalculateVO> calculateVOS = BeanUtils.copyList(list, CalculateVO.class); + vo.setDtoList(calculateVOS); + } + return vo; + } + + @Override + public void delete(Integer id) { + TbBasicDataConfig config = this.getById(id); + if (Objects.isNull(config)) { + throw new RuntimeException("非法参数"); + } + this.removeById(id); + } + + @Override + public PageDTO<BasicDataConfigVO> queryPage(BasicDataConfigQuery query) { + Page<TbBasicDataConfig> page = this.lambdaQuery() + .like(StringUtils.isNotBlank(query.getBasicDataConfigName()), TbBasicDataConfig::getTypeName, query.getBasicDataConfigName()) + .eq(Objects.nonNull(query.getCalculateType()), TbBasicDataConfig::getCalculateType, query.getCalculateType()) + .eq(Objects.nonNull(query.getStatus()), TbBasicDataConfig::getStatus, query.getStatus()).page(new Page<>(query.getPageNum(), query.getPageSize())); + return PageDTO.of(page, BasicDataConfigVO.class); + } + + @Override + public void showHide(ShowHideDTO dto) { + TbBasicDataConfig config = this.getById(dto.getId()); + if (Objects.isNull(config)) { + throw new RuntimeException("非法参数"); + } + if (ShowStatusEnum.SHOW.equals(dto.getStatus())) { + //查询改配置所使用字段状态 + String fieldIdStr = config.getFieldIdStr(); + String[] split = fieldIdStr.split(","); + 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)); + } + } + 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/TbFieldCategoryServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java index bb46ead..022e3b5 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 @@ -5,7 +5,7 @@ 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.enums.ShowStatus; +import com.ruoyi.common.enums.ShowStatusEnum; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; import com.ruoyi.common.utils.StringUtils; @@ -84,7 +84,7 @@ updateCategoryAndChildren(dto.getId(), dto.getStatus()); } - private void updateCategoryAndChildren(Integer id, Integer status) { + private void updateCategoryAndChildren(Integer id, ShowStatusEnum status) { TbFieldCategory category = this.getById(id); if (Objects.isNull(category)) { throw new RuntimeException("非法id"); @@ -176,7 +176,7 @@ List<TbFieldCategory> list = this.lambdaQuery() .select(TbFieldCategory::getId,TbFieldCategory::getFieldCategoryName) .eq(TbFieldCategory::getParentId, id) - .eq(TbFieldCategory::getStatus, ShowStatus.SHOW) + .eq(TbFieldCategory::getStatus, ShowStatusEnum.SHOW) .list(); return BeanUtils.copyList(list, FieldCategoryVO.class); } 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 521952d..8555a6f 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 @@ -1,11 +1,11 @@ package com.ruoyi.system.service.impl; -import cn.hutool.json.JSONArray; 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.enums.FieldInputTypeEnum; import com.ruoyi.common.enums.FieldTypeEnum; +import com.ruoyi.common.enums.ShowStatusEnum; import com.ruoyi.common.utils.BeanUtils; import com.ruoyi.common.utils.CollUtils; import com.ruoyi.common.utils.StringUtils; @@ -20,13 +20,14 @@ import com.ruoyi.system.service.TbFieldCategoryService; import com.ruoyi.system.service.TbFieldService; import com.ruoyi.system.vo.FieldVO; -import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; /** @@ -72,14 +73,32 @@ @Override public void showHide(ShowHideDTO dto) { + log.info("======主线程执行showHide{}",Thread.currentThread().getName() ); TbField field = this.getById(dto.getId()); if (StringUtils.isNull(field)) { throw new RuntimeException("非法参数"); } //隐藏字段 this.lambdaUpdate().set(TbField::getStatus, dto.getStatus()).eq(TbField::getId, dto.getId()).update(); - //隐藏基础数据 TODO - tbBasicDataConfigService.lambdaUpdate().eq(TbBasicDataConfig::getFieldId, dto.getId()).set(TbBasicDataConfig::getStatus, dto.getStatus()).update(); + //异步隐藏基础数据配置 + CompletableFuture.runAsync(() -> handleDataConfig(dto, field)); + } + private void handleDataConfig(ShowHideDTO dto, TbField field) { + log.info("======子线程执行handleDataConfig{}",Thread.currentThread().getName() ); + List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list(); + if (CollUtils.isNotEmpty(list)) { + List<Integer> ids = list.stream().map(config -> { + String fieldIdStr = config.getFieldIdStr(); + String[] split = fieldIdStr.split(","); + //字符串数组转为List + List<String> idList = new ArrayList<>(Arrays.asList(split)); + if (idList.contains(field.getId().toString())) { + return config.getId(); + } + return null; + }).collect(Collectors.toList()); + tbBasicDataConfigService.lambdaUpdate().set(TbBasicDataConfig::getStatus, dto.getStatus()).in(TbBasicDataConfig::getId, ids).update(); + } } @Override @@ -101,38 +120,24 @@ @Override public List<String> influencedData(Integer id) { - List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getFieldId, id).list(); + //List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().like(TbBasicDataConfig::getFieldIdStr, id).list(); + List<TbBasicDataConfig> list = tbBasicDataConfigService.lambdaQuery().eq(TbBasicDataConfig::getStatus, ShowStatusEnum.SHOW.getCode()).list(); if (CollUtils.isEmpty(list)) { return CollUtils.emptyList(); } - return list.stream().map(TbBasicDataConfig::getTypeName).collect(Collectors.toList()); - } - - public static void main(String[] args) { - String string = "蓝色_10,红色_20,绿色_30"; - String[] split = string.split(","); - for (String s : split) { - String[] split1 = s.split("_"); - System.out.println(split1[1]); + List<String> collect = list.stream().map(config -> { + String fieldIdStr = config.getFieldIdStr(); + String[] split = fieldIdStr.split(","); + //字符串数组转为List + List<String> idList = new ArrayList<>(Arrays.asList(split)); + if (idList.contains(id.toString())) { + return config.getTypeName(); + } + return null; + }).collect(Collectors.toList()); + if (CollUtils.isEmpty(collect)) { + return CollUtils.emptyList(); } - //百分比1_百分比2:得分 - String string1 = "10_20:50,20_30:50,30_40:60"; - CalculateDTO calculateDTO = new CalculateDTO(); - calculateDTO.setKey("10_20"); - calculateDTO.setValue("20"); - CalculateDTO calculateDTO1 = new CalculateDTO(); - calculateDTO1.setKey("20_30"); - calculateDTO1.setValue("30"); - List<CalculateDTO> list = new ArrayList<>(); - list.add(calculateDTO); - list.add(calculateDTO1); - JSONArray objects = new JSONArray(list); - String jsonString = objects.toJSONString(2); - System.err.println(jsonString); + return collect; } -} -@Data -class CalculateDTO{ - private String key; - private String value; } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataCategoryVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataCategoryVO.java new file mode 100644 index 0000000..eeb2db4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataCategoryVO.java @@ -0,0 +1,24 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.enums.ShowStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value="基础数据分类视图对象") +public class BasicDataCategoryVO { + + @ApiModelProperty(value = "基础数据分类id") + private Integer id; + + @ApiModelProperty(value = "基础数据分类名称") + private String basicDataCategoryName; + + @ApiModelProperty(value = "隐藏状态") + private ShowStatusEnum status; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigDetailVO.java new file mode 100644 index 0000000..6b4f245 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigDetailVO.java @@ -0,0 +1,54 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.enums.CalculateTypeEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.util.List; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value="基础数据配置详情视图对象") +public class BasicDataConfigDetailVO implements Serializable { + + private static final long serialVersionUID = 8789005070048058207L; + + @ApiModelProperty(value = "id") + @NotNull(message = "id不能为空") + private Integer id; + + @ApiModelProperty(value = "类型名称") + @NotBlank(message = "类型名称不能为空") + private String typeName; + + @ApiModelProperty(value = "基础数据分类id") + @NotNull(message = "基础数据分类id不能为空") + private Integer basicDataCategoryId; + + @ApiModelProperty(value = "字段说明") + @NotBlank(message = "字段说明不能为空") + private String fieldDescription; + + @ApiModelProperty(value = "计算类型(数字计算 文本统计 百分比统计)") + @NotNull(message = "计算类型不能为空") + private CalculateTypeEnum calculateType; + + @ApiModelProperty(value = "字段id (多个id使用 ',' 拼接)") + @NotBlank(message = "字段id不能为空") + private String fieldIdStr; + + @ApiModelProperty(value = "计算公式",notes = "计算类型为数字计算,配置内容使用该字段接收;公式中字段的格式为:field_字段id,e.g:field_1,field_2等。") + private String numberCalculateFormula; + + @ApiModelProperty(value = "文本和百分比配置信息", notes = "当计算方式为 文本统计/百分比统计 " + + "配置内容使用这个字段接收;key为键,value为得分;百分比统计 将百分比区间使用'_'拼接作为key,e.g: 10_20,20_30") + private List<CalculateVO> dtoList; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigVO.java new file mode 100644 index 0000000..d2b32f4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigVO.java @@ -0,0 +1,31 @@ +package com.ruoyi.system.vo; + +import com.ruoyi.common.enums.CalculateTypeEnum; +import com.ruoyi.common.enums.ShowStatusEnum; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author mitao + * @date 2024/3/18 + */ +@Data +@ApiModel(value="基础数据视图对象") +public class BasicDataConfigVO { + + @ApiModelProperty(value = "基础数据配置id") + private Integer id; + + @ApiModelProperty(value = "类型名称") + private String typeName; + + @ApiModelProperty(value = "基础数据所属分类") + private String basicDataCategory; + + @ApiModelProperty(value = "计算类型(数字计算 文本统计 百分比统计)") + private CalculateTypeEnum calculateType; + + @ApiModelProperty(value = "隐藏状态") + private ShowStatusEnum status; +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/CalculateVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/CalculateVO.java new file mode 100644 index 0000000..ca2e23d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/CalculateVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.system.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@ApiModel(value = "基础数据配置配置视图对象") +public class CalculateVO implements Serializable { + + private static final long serialVersionUID = 4439552435460575151L; + + @ApiModelProperty(value = "id") + @TableId(value = "id", type = IdType.AUTO) + + private Integer id; + @ApiModelProperty(value = "键") + private String key; + + @ApiModelProperty(value = "值") + private String value; +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java index 2ef006f..36ceee7 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java @@ -1,5 +1,6 @@ package com.ruoyi.system.vo; +import com.ruoyi.common.enums.DisabledEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -29,7 +30,7 @@ private String areaLevel; @ApiModelProperty(value = "县级标志(不包含直辖市的区 0:否 1:是)") - private Boolean countyFlag; + private DisabledEnum countyFlag; @ApiModelProperty(value = "负责人") private String personInCharge; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java index de1b381..15a4abd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java @@ -1,5 +1,6 @@ package com.ruoyi.system.vo; +import com.ruoyi.common.enums.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -15,7 +16,7 @@ private Integer id; @ApiModelProperty(value = "状态(0=展示 1=隐藏)") - private Integer status; + private ShowStatusEnum status; @ApiModelProperty(value = "分类名称") private String fieldCategoryName; 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 3a59c0c..04a1247 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.ShowStatusEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -40,7 +41,7 @@ private String levelThreeCategory; @ApiModelProperty(value = "隐藏状态(0=展示中 1=已隐藏)") - private Integer status; + private ShowStatusEnum status; @ApiModelProperty(value = "数字最小值") private Integer numMin; diff --git a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataCategoryMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataCategoryMapper.xml index 7a69ac3..a09153c 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataCategoryMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataCategoryMapper.xml @@ -6,7 +6,7 @@ <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TbBasicDataCategory"> <id column="id" property="id" /> <result column="basic_data_category_name" property="basicDataCategoryName" /> - <result column="hidden" property="hidden" /> + <result column="status" property="status" /> <result column="del_flag" property="delFlag" /> <result column="create_by" property="createBy" /> <result column="create_time" property="createTime" /> diff --git a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigDetailMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigDetailMapper.xml new file mode 100644 index 0000000..029a4ec --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigDetailMapper.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.system.mapper.TbBasicDataConfigDetailMapper"> + + <!-- 通用查询映射结果 --> + <resultMap id="BaseResultMap" type="com.ruoyi.system.domain.TbBasicDataConfigDetail"> + <id column="id" property="id" /> + <result column="basic_data_config_id" property="basicDataConfigId" /> + <result column="key" property="key" /> + <result column="value" property="value" /> + </resultMap> + + <!-- 通用查询结果列 --> + <sql id="Base_Column_List"> + id, basic_data_config_id, key, value + </sql> + +</mapper> diff --git a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml index d314d95..a18d386 100644 --- a/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml @@ -9,9 +9,9 @@ <result column="type_name" property="typeName" /> <result column="field_description" property="fieldDescription" /> <result column="calculate_type" property="calculateType" /> - <result column="calculate_formula" property="calculateFormula" /> + <result column="number_calculate_formula" property="numberCalculateFormula" /> + <result column="field_id_str" property="fieldIdStr" /> <result column="status" property="status" /> - <result column="field_id" property="fieldId" /> <result column="del_flag" property="delFlag" /> <result column="create_by" property="createBy" /> <result column="create_time" property="createTime" /> @@ -21,7 +21,7 @@ <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, basic_data_category_id, type_name, field_description, caculate_type, caculate_formula, del_flag, create_by, create_time, update_by, update_time + id, basic_data_category_id, type_name, field_description, calculate_type, number_calculate_formula, field_id_str, status, del_flag, create_by, create_time, update_by, update_time </sql> </mapper> -- Gitblit v1.7.1