From 540e840a8d153e63dec7dbab78aaa0d661cf1547 Mon Sep 17 00:00:00 2001 From: liuzhaotian Date: Wed, 24 Jul 2024 09:10:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=9C=BA=E5=8F=B0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E6=95=B0=E6=8D=AE=E6=BA=90=EF=BC=8C=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E6=95=B0=E6=8D=AE=E6=BA=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/OrderPackageStatusEnum.java | 4 +- .../dal/dataobject/process/OrderDO.java | 3 + .../datasource/DataSourceController.java | 25 +- .../datasource/vo/DataSourceFiledReqVO.java | 32 ++ .../datasource/vo/DataSourceSaveReqVO.java | 39 +- .../dataobject/datasource/DataSourceDO.java | 4 - .../datasource/DataSourceFiledDO.java | 23 +- .../datasource/DataSourceFiledMapper.java | 27 ++ .../mysql/datasource/DataSourceMapper.java | 10 +- .../service/datasource/DataSourceService.java | 5 +- .../datasource/DataSourceServiceImpl.java | 389 +++++++++++++++++- .../datasource/DataSourceFiledMapper.xml | 54 +++ .../mapper/process/DataSourceMapper.xml | 1 + 13 files changed, 589 insertions(+), 27 deletions(-) create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceFiledReqVO.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceFiledMapper.java create mode 100644 cf-module-system/cf-module-system-biz/src/main/resources/mapper/datasource/DataSourceFiledMapper.xml diff --git a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPackageStatusEnum.java b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPackageStatusEnum.java index c3d67f42c..6b7c727cb 100644 --- a/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPackageStatusEnum.java +++ b/cf-framework/cf-common/src/main/java/com/cf/imes/framework/common/enums/OrderPackageStatusEnum.java @@ -8,8 +8,8 @@ import lombok.Getter; @Getter public enum OrderPackageStatusEnum { - UNPACKED(0,"未封包"), - PACKAGED(1, "已封包"); + UNPACKED(0,"未封包/未打包"), + PACKAGED(1, "已封包/已打包"); private Integer status; private String description; diff --git a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/process/OrderDO.java b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/process/OrderDO.java index 86e9c5493..d83377468 100644 --- a/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/process/OrderDO.java +++ b/cf-module-prod-manage/cf-module-prod-manage-biz/src/main/java/com/cf/imes/module/manage/dal/dataobject/process/OrderDO.java @@ -26,6 +26,9 @@ public class OrderDO extends BaseDO { // 订单状态 private Integer status; + // 打包状态 + private Integer packaged; + // 自定义单号 private String customOrderNo; diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/DataSourceController.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/DataSourceController.java index 3c94124d7..338b3cd06 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/DataSourceController.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/DataSourceController.java @@ -1,6 +1,6 @@ package com.cf.imes.module.system.controller.admin.datasource; -import io.swagger.v3.oas.annotations.media.Schema; +import com.cf.imes.framework.es.core.valid.CreateGroup; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; @@ -12,7 +12,6 @@ import java.util.*; import java.io.IOException; import com.cf.imes.framework.common.pojo.PageParam; -import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.CommonResult; import com.cf.imes.framework.common.util.object.BeanUtils; import static com.cf.imes.framework.common.pojo.CommonResult.success; @@ -90,6 +89,28 @@ public class DataSourceController { return success(BeanUtils.toBean(list, DataSourceRespVO.class));*/ } + + @PostMapping("/create") + @Operation(summary = "新增数据源字段") + @PreAuthorize("@ss.hasPermission('system:data-source:create')") + public CommonResult createDataSource(@Validated @RequestBody List createReqVO) { + + dataSourceService.createDataSource(createReqVO); + + return success(true); + } + + + + @GetMapping("/getList") + @Operation(summary = "获取数据源参数") + @Parameter(name = "type", description = "标签类型", required = true, example = "9") + //@PreAuthorize("@ss.hasPermission('system:data-source:query')") + public CommonResult> getList(@RequestParam("type") Integer type ) { + return success(dataSourceService.getList( type)); + + } + @GetMapping("/export-excel") @Operation(summary = "导出系统数据源 Excel") @PreAuthorize("@ss.hasPermission('system:data-source:export')") diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceFiledReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceFiledReqVO.java new file mode 100644 index 000000000..f9a8f51be --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceFiledReqVO.java @@ -0,0 +1,32 @@ +package com.cf.imes.module.system.controller.admin.datasource.vo; + + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.List; + +@Schema(description = "") +@Data +@ToString(callSuper = true) +public class DataSourceFiledReqVO { + + + @Schema(description = "主键ID") + private Long id; + + @Schema(description = "数据源id") + private String sourceId; + + @Schema(description = "字段名称") + private String name; + + @Schema(description = "字段key") + private String key; + + @Schema(description = "下一层级结构") + private List children; + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceSaveReqVO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceSaveReqVO.java index 790c51e9f..9dd6294d9 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceSaveReqVO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/controller/admin/datasource/vo/DataSourceSaveReqVO.java @@ -4,26 +4,45 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; +import javax.validation.Valid; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -@Schema(description = "管理后台 - 系统数据源新增/修改 Request VO") +@Schema(description = "数据源字段新增/修改") @Data public class DataSourceSaveReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30829") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED) private Long id; - @Schema(description = "数据源名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") - @NotEmpty(message = "数据源名称不能为空") + +// @Schema(description = "字段数据", requiredMode = Schema.RequiredMode.REQUIRED) +// private List sourceFields; + + + @Schema(description = "字段名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") private String name; - @Schema(description = "sql", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "sql不能为空") - private String sql; + @Schema(description = "数据源的字段key", requiredMode = Schema.RequiredMode.REQUIRED) + private String key; + + @Schema(description = "数据源的父ID", requiredMode = Schema.RequiredMode.REQUIRED) + private Long parentId; + + +// @Valid +// @Data +// public static class SourceField { +// +// @Schema(description = "字段名称", requiredMode = Schema.RequiredMode.REQUIRED) +// private String name; +// +// @Schema(description = "数据源的字段key", requiredMode = Schema.RequiredMode.REQUIRED) +// private String key; +// +// @Schema(description = "数据源的父ID", requiredMode = Schema.RequiredMode.REQUIRED) +// private Long parentId; +// } - @Schema(description = "数据源类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotNull(message = "数据源类型不能为空") - private Integer type; } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceDO.java index e86fad02a..0b7e6afae 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceDO.java @@ -31,10 +31,6 @@ public class DataSourceDO extends BaseDO { * 数据源名称 */ private String name; - /** - * sql - */ - private String sqlStr; /** * 数据源类型 */ diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceFiledDO.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceFiledDO.java index 76d339d26..7407229ee 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceFiledDO.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/dataobject/datasource/DataSourceFiledDO.java @@ -1,21 +1,42 @@ package com.cf.imes.module.system.dal.dataobject.datasource; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Builder; import lombok.Data; /** * @author Beal */ @Data +@Builder @TableName("system_data_source_field") public class DataSourceFiledDO { + + + /** + * 主键 + */ @TableId private Long id; - private Long sourceId; + /** + * 数据源id + */ + private String sourceId; + + + /** + * 字段名称 + */ private String name; + + /** + * 字段key + */ + @TableField("`key`") private String key; } diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceFiledMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceFiledMapper.java new file mode 100644 index 000000000..6e0bbeede --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceFiledMapper.java @@ -0,0 +1,27 @@ +package com.cf.imes.module.system.dal.mysql.datasource; + + +import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; +import com.cf.imes.module.system.controller.admin.datasource.vo.DataSourceFiledReqVO; +import com.cf.imes.module.system.controller.admin.datasource.vo.DataSourceSaveReqVO; +import com.cf.imes.module.system.dal.dataobject.datasource.DataSourceDO; +import com.cf.imes.module.system.dal.dataobject.datasource.DataSourceFiledDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + + +@Mapper +public interface DataSourceFiledMapper extends BaseMapperX { + + + List selectFiledList(@Param("ids")List ids); + + + List selectFiled(@Param("sourceFields") List sourceFields); + + + List selectFiledListByKey(@Param("keyList") List keyList); + +} diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceMapper.java index f6f2abb80..0a0ada414 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/datasource/DataSourceMapper.java @@ -20,11 +20,19 @@ public interface DataSourceMapper extends BaseMapperX { default PageResult selectPage(DataSourcePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(DataSourceDO::getName, reqVO.getName()) - .eqIfPresent(DataSourceDO::getSqlStr, reqVO.getSqlStr()) .eqIfPresent(DataSourceDO::getType, reqVO.getType()) .betweenIfPresent(DataSourceDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(DataSourceDO::getId)); } List selectListVO(); + + + default List selectByType() { + return selectList( new LambdaQueryWrapperX() + .eqIfPresent(DataSourceDO::getType,9) +/* .eqIfPresent(DataSourceDO::getId,1004)*/); + + } + } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceService.java index ef479826c..4fb081507 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceService.java @@ -5,6 +5,7 @@ import com.cf.imes.module.system.controller.admin.datasource.vo.*; import com.cf.imes.module.system.dal.dataobject.datasource.DataSourceDO; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageParam; +import com.cf.imes.module.system.dal.dataobject.datasource.DataSourceFiledDO; import javax.validation.Valid; @@ -21,7 +22,7 @@ public interface DataSourceService { * @param createReqVO 创建信息 * @return 编号 */ - Long createDataSource(@Valid DataSourceSaveReqVO createReqVO); + void createDataSource(@Valid List createReqVO); /** * 更新系统数据源 @@ -56,4 +57,6 @@ public interface DataSourceService { List list(Integer type); List list(); + + List getList(Integer type); } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceServiceImpl.java index 1cb9c58cf..ed8c22fa4 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/datasource/DataSourceServiceImpl.java @@ -1,19 +1,27 @@ package com.cf.imes.module.system.service.datasource; +import com.alibaba.fastjson.JSON; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.cf.imes.module.system.dal.dataobject.datasource.DataSourceFiledDO; +import com.cf.imes.module.system.dal.mysql.datasource.DataSourceFiledMapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; + import com.cf.imes.module.system.controller.admin.datasource.vo.*; import com.cf.imes.module.system.dal.dataobject.datasource.DataSourceDO; import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageParam; import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.module.system.dal.mysql.datasource.DataSourceMapper; + import javax.annotation.Resource; + import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLAN_NOT_ALLOW_DELETE; import static com.cf.imes.module.system.enums.ErrorCodeConstants.*; /** @@ -28,15 +36,217 @@ public class DataSourceServiceImpl implements DataSourceService { @Resource private DataSourceMapper dataSourceMapper; + @Resource + private DataSourceFiledMapper dataSourceFiledMapper; + + @Override - public Long createDataSource(DataSourceSaveReqVO createReqVO) { - // 插入 - DataSourceDO dataSource = BeanUtils.toBean(createReqVO, DataSourceDO.class); - dataSourceMapper.insert(dataSource); - // 返回 - return dataSource.getId(); + public void createDataSource(List createReqVO) { + + + // 提取 SourceField 中的 key 列表 + List keyList = createReqVO.stream() + .map(DataSourceSaveReqVO::getKey) + .collect(Collectors.toList()); + + // 根据 key 列表查询对应的 DataSourceFiledDO 列表并转换为 Map + Map> dataSourceFiledDoMap = dataSourceFiledMapper + .selectFiledListByKey(keyList) + .stream() + .collect(Collectors.groupingBy(DataSourceFiledDO::getKey)); + + List insertFiledDoS = new ArrayList<>(); + + List updateFiledDoS = new ArrayList<>(); + + // 遍历 SourceFields 进行插入或更新操作 + for (DataSourceSaveReqVO sourceField : createReqVO) { + + List existingFiledDoS = dataSourceFiledDoMap.get(sourceField.getKey()); + + if (existingFiledDoS != null) { + DataSourceFiledDO dataSourceFiledDO = existingFiledDoS.get(0); + if (shouldUpdate(dataSourceFiledDO, sourceField)) { + dataSourceFiledDO.setSourceId(dataSourceFiledDO.getSourceId() + "," + sourceField.getParentId()); + updateFiledDoS.add(dataSourceFiledDO); + + } + + } else { + + insertFiledDoS.add(DataSourceFiledDO.builder() + .key(sourceField.getKey()) + .sourceId(String.valueOf(sourceField.getParentId())) + .name(sourceField.getName()) + .build()); + } + } + + // 批量插入和更新 DataSourceFiledDO 列表 + if (!insertFiledDoS.isEmpty()) { + dataSourceFiledMapper.insertBatch(insertFiledDoS); + } + if (!updateFiledDoS.isEmpty()) { + dataSourceFiledMapper.updateBatch(updateFiledDoS); + } + + } + + private boolean shouldUpdate(DataSourceFiledDO existingFiledDO, DataSourceSaveReqVO sourceField) { + return existingFiledDO.getId() > 1000 && + Objects.equals(existingFiledDO.getName(), sourceField.getName()) && + !conversion(existingFiledDO.getSourceId()).contains(sourceField.getParentId()); + } + + +// +// @Override +// public void createDataSource(List createReqVO) { +// // 获取请求中的 SourceFields 列表 +// List sourceFields = createReqVO.getSourceFields(); +// +// // 提取 SourceField 中的 key 列表 +// List keyList = sourceFields.stream() +// .map(DataSourceSaveReqVO.SourceField::getKey) +// .collect(Collectors.toList()); +// +// // 根据 key 列表查询对应的 DataSourceFiledDO 列表并转换为 Map +// Map> dataSourceFiledDOMap = dataSourceFiledMapper +// .selectFiledListByKey(keyList) +// .stream() +// .collect(Collectors.groupingBy(DataSourceFiledDO::getKey)); +// +// List insertFiledDOS = new ArrayList<>(); +// List updateFiledDOS = new ArrayList<>(); +// +// // 遍历 SourceFields 进行插入或更新操作 +// for (DataSourceSaveReqVO.SourceField sourceField : sourceFields) { +// List existingFiledDOS = dataSourceFiledDOMap.get(sourceField.getKey()); +// +// if (existingFiledDOS != null) { +// DataSourceFiledDO dataSourceFiledDO = existingFiledDOS.get(0); +// if (shouldUpdate(dataSourceFiledDO, sourceField)) { +// dataSourceFiledDO.setSourceId(dataSourceFiledDO.getSourceId() + "," + sourceField.getParentId()); +// updateFiledDOS.add(dataSourceFiledDO); +// } +// +// } else { +// insertFiledDOS.add(DataSourceFiledDO.builder() +// .key(sourceField.getKey()) +// .sourceId(String.valueOf(sourceField.getParentId())) +// .name(sourceField.getName()) +// .build()); +// } +// } +// +// // 批量插入和更新 DataSourceFiledDO 列表 +// if (!insertFiledDOS.isEmpty()) { +// dataSourceFiledMapper.insertBatch(insertFiledDOS); +// } +// if (!updateFiledDOS.isEmpty()) { +// dataSourceFiledMapper.updateBatch(updateFiledDOS); +// } +// } +// +// private boolean shouldUpdate(DataSourceFiledDO existingFiledDO, DataSourceSaveReqVO.SourceField sourceField) { +// return existingFiledDO.getId() > 1000 && +// Objects.equals(existingFiledDO.getName(), sourceField.getName()) && +// !conversion(existingFiledDO.getSourceId()).contains(sourceField.getParentId()); +// } + + +// +// @Override +// public void createDataSource(DataSourceSaveReqVO createReqVO) { +// // 获取请求中的 SourceFields 列表 +// List sourceFields = createReqVO.getSourceFields(); +// +// List insertFiledDOS = new ArrayList<>(); +// +// List updateFiledDOS = new ArrayList<>(); +// +// // 提取 SourceField 中的 key 列表 +// List keyList = sourceFields.stream().map(DataSourceSaveReqVO.SourceField::getKey).toList(); +// +// // 根据 key 列表查询对应的 DataSourceFiledDO 列表 +// List dataSourceFiledDOS = dataSourceFiledMapper.selectFiledListByKey(keyList); +// +// if (!dataSourceFiledDOS.isEmpty()) { +// +// // 提取已存在的 DataSourceFiledDO 的 key 列表 +// List keys = dataSourceFiledDOS.stream().map(DataSourceFiledDO::getKey).toList(); +// +// StringBuilder data = new StringBuilder(); +// +// for (DataSourceSaveReqVO.SourceField sourceField : sourceFields) { +// // 过滤出符合条件的 DataSourceFiledDO +// List sourceFiledDOS = dataSourceFiledDOS.stream() +// .filter(f -> Objects.equals(f.getKey(), sourceField.getKey())) +// .filter(f->Objects.equals(f.getName(),sourceField.getName())) +// .filter(f -> !conversion(f.getSourceId()).contains(sourceField.getParentId())) +// .filter(f -> f.getId() > 1000) +// .toList(); +// +// if (!sourceFiledDOS.isEmpty()) { +// +// data.append(",").append(sourceField.getParentId()); +// +// DataSourceFiledDO dataSourceFiledDO = BeanUtils.toBean(sourceFiledDOS.get(0), DataSourceFiledDO.class); +// dataSourceFiledDO.setSourceId(dataSourceFiledDO.getSourceId() + data); +// updateFiledDOS.add(dataSourceFiledDO); +// +// } +// +// // 如果 key 不存在于已查询的列表中,新增一个 DataSourceFiledDO +// if (!keys.contains(sourceField.getKey())) { +// insertFiledDOS.add(DataSourceFiledDO.builder() +// .key(sourceField.getKey()) +// .sourceId(String.valueOf(sourceField.getParentId())) +// .name(sourceField.getName()) +// .build()); +// } +// } +// +// dataSourceFiledMapper.updateBatch(updateFiledDOS); +// +// } else { +// // 如果查询结果为空,直接将所有 sourceFields 转换为 DataSourceFiledDO 并添加到列表中 +// insertFiledDOS.addAll(sourceFields.stream() +// .map(m -> DataSourceFiledDO.builder() +// .key(m.getKey()) +// .sourceId(String.valueOf(m.getParentId())) +// .name(m.getName()) +// .build()) +// .toList()); +// } +// +// // 批量插入 DataSourceFiledDO 列表 +// dataSourceFiledMapper.insertBatch(insertFiledDOS); +// +// +// } + + + // 目前不对重复添加的数据进行删选处理,后续有需求再处理 +// List dataSourceFiledDO = dataSourceFiledMapper.selectFiled(sourceFields); +// +// List fieldList = new ArrayList<>(); +// +// if(! dataSourceFiledDO.isEmpty()){ +// +// List sourceIds = dataSourceFiledDO.stream().map(m -> m.getSourceId()).toList(); +// +// for (String sourceId : sourceIds) { +// fieldList.addAll(sourceFields.stream() +// .filter(f -> !conversion(sourceId).contains(f.getParentId())) +// .toList()); +// } +// +// } + + @Override public void updateDataSource(DataSourceSaveReqVO updateReqVO) { // 校验存在 @@ -80,4 +290,171 @@ public class DataSourceServiceImpl implements DataSourceService { return dataSourceMapper.selectListVO(); } + +// +// @Override +// public List getList(Integer type) { +// +// +// List dataSourceDOS = dataSourceMapper.selectByType(); +// +// +// List bean = BeanUtils.toBean(dataSourceDOS, DataSourceFiledReqVO.class); +// +// +// List ids = dataSourceDOS.stream().map(DataSourceDO::getId).toList(); +// +// +// List dataSourceFiledDOS = dataSourceFiledMapper.selectFiledList(ids); +// +// +// List list = dataSourceFiledDOS.stream().filter(f -> f.getKey() == null).map(m -> m.getId()).toList(); +// +// +// List dataSourceFiledDOS1 = dataSourceFiledMapper.selectFiledList(list); +// +// +// List list1 = dataSourceFiledDOS1.stream().filter(f -> f.getKey() == null).map(m -> m.getId()).toList(); +// +// +// List dataSourceFiledDOS2 = dataSourceFiledMapper.selectFiledList(list1); +// +// +// List list2 = dataSourceFiledDOS2.stream().filter(f -> f.getKey() == null).map(m -> m.getId()).toList(); +// +// +// List dataSourceFiledDOS3 = dataSourceFiledMapper.selectFiledList(list2); +// +// +// List list3 = dataSourceFiledDOS3.stream().filter(f -> f.getKey() == null).map(m -> m.getId()).toList(); +// +// +// List dataSourceFiledDOS4 = dataSourceFiledMapper.selectFiledList(list3); +// +// +// List list4 = dataSourceFiledDOS4.stream().filter(f -> f.getKey() == null).map(m -> m.getId()).toList(); +// +// +// List dataSourceFiledDOS5 = dataSourceFiledMapper.selectFiledList(list4); +// +// +// +// +// for (DataSourceFiledReqVO dataSourceFiledDO : dataSourceFiledDOS4) { +// dataSourceFiledDO.setChildren(dataSourceFiledDOS5.stream().filter(f->conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())).toList()); +// +// } +// +// +// +// for (DataSourceFiledReqVO dataSourceFiledDO : dataSourceFiledDOS3) { +// dataSourceFiledDO.setChildren(dataSourceFiledDOS4.stream().filter(f->conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())).toList()); +// +// } +// +// +// +// for (DataSourceFiledReqVO dataSourceFiledDO : dataSourceFiledDOS2) { +// dataSourceFiledDO.setChildren(dataSourceFiledDOS3.stream().filter(f->conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())).toList()); +// +// } +// +// +// for (DataSourceFiledReqVO dataSourceFiledDO : dataSourceFiledDOS1) { +// dataSourceFiledDO.setChildren(dataSourceFiledDOS2.stream().filter(f->conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())).toList()); +// +// } +// +// +// for (DataSourceFiledReqVO dataSourceFiledDO : dataSourceFiledDOS) { +// dataSourceFiledDO.setChildren(dataSourceFiledDOS1.stream().filter(f->conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())).toList()); +// +// } +// +// +// +// for (DataSourceFiledReqVO dataSourceFiledDO : bean) { +// dataSourceFiledDO.setChildren(dataSourceFiledDOS.stream().filter(f->conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())).toList()); +// +// } +// +// return bean; +// +// } + + + @Override + public List getList(Integer type) { + + List dataSourceDOS = dataSourceMapper.selectByType(); + + List dataSourceFiledReqVOS = BeanUtils.toBean(dataSourceDOS, DataSourceFiledReqVO.class); + + List ids = dataSourceDOS.stream().map(DataSourceDO::getId).toList(); + + // 获取字段列表 + List dataSourceFiledDOS = dataSourceFiledMapper.selectFiledList(ids); + + // 递归填充子节点 + populateChildren(dataSourceFiledDOS); + + // 为根节点填充子节点 + for (DataSourceFiledReqVO dataSourceFiledDO : dataSourceFiledReqVOS) { + dataSourceFiledDO.setChildren(dataSourceFiledDOS.stream() + .filter(f -> conversion(f.getSourceId()).contains(dataSourceFiledDO.getId())) + .toList()); + } + + return dataSourceFiledReqVOS; + + } + + + /** + * 递归填充子节点 + * + * @param parentList 父节点列表 + */ + private void populateChildren(List parentList) { + if (parentList == null || parentList.isEmpty()) { + return; + } + + // 获取没有key的节点ID + List ids = parentList.stream() + .filter(f -> f.getKey() == null) + .map(DataSourceFiledReqVO::getId) + .distinct() + .toList(); + + if (ids.isEmpty()) { + return; + } + + // 获取子节点列表 + List childList = dataSourceFiledMapper.selectFiledList(ids); + if (childList.isEmpty()) { + return; + } + + // 为每个父节点填充子节点并递归处理子节点 + for (DataSourceFiledReqVO parent : parentList) { + List children = childList.stream() + .filter(f -> conversion(f.getSourceId()).contains(parent.getId())) + .toList(); + parent.setChildren(children); + + // 递归处理子节点 + populateChildren(children); + } + } + + + private List conversion(String sourceId) { + + return Arrays.stream(sourceId.split(",")) + .map(Long::parseLong) + .toList(); + } + } \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/datasource/DataSourceFiledMapper.xml b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/datasource/DataSourceFiledMapper.xml new file mode 100644 index 000000000..f86b9e501 --- /dev/null +++ b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/datasource/DataSourceFiledMapper.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/DataSourceMapper.xml b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/DataSourceMapper.xml index c9e81405d..b701a047a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/DataSourceMapper.xml +++ b/cf-module-system/cf-module-system-biz/src/main/resources/mapper/process/DataSourceMapper.xml @@ -19,5 +19,6 @@ select a.*, b.id field_id, b.name field_name, b.source_id field_source_id, b.key field_key from system_data_source a left join system_data_source_field b on a.id = b.source_id + where a.type in (1,2) \ No newline at end of file