mitao
2024-03-18 a4befde9e479ff159d08202b7e231377a975406b
统计管理相关接口
37个文件已修改
1个文件已删除
19个文件已添加
1274 ■■■■ 已修改文件
code-generator/src/test/java/CodeGeneratorTests.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/RuoYiManageApplication.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataCategoryController.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigController.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigDetailController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbDeptController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldCategoryController.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbFieldController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/CalculateTypeEnum.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/DisabledEnum.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/FieldTypeEnum.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatus.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatusEnum.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataCategory.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfig.java 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbDept.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbField.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbFieldCategory.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataCategoryDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/CalculateDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/DataScreeningDTO.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/FieldDTO.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/ShowHideDTO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptFocusDTO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/DeptUpdateDTO.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldCategoryUpdateDTO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/FieldUpdateDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigDetailMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigMapper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataCategoryQuery.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataConfigQuery.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/query/FieldQuery.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataCategoryService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigDetailService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataCategoryServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigDetailServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigServiceImpl.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldCategoryServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbFieldServiceImpl.java 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataCategoryVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigDetailVO.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigVO.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/CalculateVO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/DeptVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldCategoryVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/vo/FieldVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TbBasicDataCategoryMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigDetailMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigMapper.xml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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"));// 不生成表名
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
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));
    }
}
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));
    }
}
ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TbBasicDataConfigDetailController.java
New file
@@ -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 {
}
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())
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();
    }
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));
    }
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:
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>
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>
ruoyi-common/src/main/java/com/ruoyi/common/enums/CalculateTypeEnum.java
New file
@@ -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;
    }
}
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;
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) {
ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatus.java
File was deleted
ruoyi-common/src/main/java/com/ruoyi/common/enums/ShowStatusEnum.java
New file
@@ -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;
    }
}
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")
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")
ruoyi-system/src/main/java/com/ruoyi/system/domain/TbBasicDataConfigDetail.java
New file
@@ -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;
}
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")
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")
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")
ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataCategoryDTO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/BasicDataConfigDTO.java
New file
@@ -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);*/
    }
 }
ruoyi-system/src/main/java/com/ruoyi/system/dto/CalculateDTO.java
New file
@@ -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;
}
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;
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="字段名不能为空")
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;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataCategoryUpdateDTO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/dto/update/BasicDataConfigUpdateDTO.java
New file
@@ -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;
 }
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;
}
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;
}
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 = "一级分类名称")
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 = "字段名")
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TbBasicDataConfigDetailMapper.java
New file
@@ -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> {
}
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> {
ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataCategoryQuery.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/query/BasicDataConfigQuery.java
New file
@@ -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;
}
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;
}
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);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/TbBasicDataConfigDetailService.java
New file
@@ -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> {
}
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);
}
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);
    }
}
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TbBasicDataConfigDetailServiceImpl.java
New file
@@ -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 {
}
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();
    }
}
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);
    }
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;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataCategoryVO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigDetailVO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/BasicDataConfigVO.java
New file
@@ -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;
}
ruoyi-system/src/main/java/com/ruoyi/system/vo/CalculateVO.java
New file
@@ -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;
}
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;
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;
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;
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" />
ruoyi-system/src/main/resources/mapper/system/TbBasicDataConfigDetailMapper.xml
New file
@@ -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>
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>