Browse Source

feat(workbench): 新增楼层数据管理功能

- 添加 LccModelFloor 实体类和 QLccModelFloor 查询类
- 在 LccModelManager 中实现楼层数据的获取和更新方法
- 更新 WorldModel 中的 getCatalogData 方法,支持从服务器获取楼层数据
- 修改 FileMenu 中的保存逻辑,支持将编辑结果保存到服务器
- 优化 CatalogDefine 组件中的目录树数据获取
- 调整 config.ts 中的错误消息处理逻辑
master
lizw-2015 6 months ago
parent
commit
3d20d97d07
  1. 57
      servo/src/main/java/com/yvan/workbench/controller/LccModelManager.java
  2. 31
      servo/src/main/java/com/yvan/workbench/model/entity/LccModelFloor.java
  3. 80
      servo/src/main/java/com/yvan/workbench/model/query/QLccModelFloor.java
  4. 6
      servo/src/main/resources/application-dev.yml

57
servo/src/main/java/com/yvan/workbench/controller/LccModelManager.java

@ -1,17 +1,24 @@
package com.yvan.workbench.controller;
import com.yvan.workbench.model.entity.LccModelFloor;
import com.yvan.workbench.model.entity.LccModelWorld;
import org.apache.commons.lang3.StringUtils;
import org.clever.core.Assert;
import org.clever.core.Conv;
import org.clever.core.id.SnowFlake;
import org.clever.core.model.request.QueryByPage;
import org.clever.core.model.request.page.Page;
import org.clever.core.model.response.R;
import org.clever.data.jdbc.DaoFactory;
import org.clever.data.jdbc.QueryDSL;
import org.clever.data.jdbc.querydsl.utils.QueryDslUtils;
import org.clever.web.mvc.annotation.RequestBody;
import org.clever.web.mvc.annotation.RequestParam;
import org.clever.web.mvc.annotation.Transactional;
import java.util.Map;
import static com.yvan.workbench.model.query.QLccModelFloor.lccModelFloor;
import static com.yvan.workbench.model.query.QLccModelWorld.lccModelWorld;
public class LccModelManager {
@ -86,9 +93,57 @@ public class LccModelManager {
);
project.setProjectVersion(1L);
project.setId(SnowFlake.SNOW_FLAKE.nextId());
project.setDirectoryData("[]");
project.setDirectoryData("""
[
{
"label": "仓库楼层",
"items": [
{
"catalogCode": "f1",
"label": "一楼 (f1)"
}
]
}
]
""".stripIndent());
project.setOtherData(getOtherData(project.getProjectUuid(), project.getProjectLabel()));
QUERY_DSL.insert(lccModelWorld).populate(project).execute();
return QUERY_DSL.selectFrom(lccModelWorld).where(lccModelWorld.id.eq(project.getId())).fetchOne();
}
public static LccModelFloor getFloor(@RequestParam Map<String, Object> params) {
String catalogCode = Conv.asString(params.get("catalogCode"));
String project_uuid = Conv.asString(params.get("project_uuid"));
return QUERY_DSL.selectFrom(lccModelFloor)
.where(lccModelFloor.projectUuid.eq(project_uuid))
.where(lccModelFloor.catalogCode.eq(catalogCode))
.orderBy(lccModelFloor.projectVersion.desc())
.fetchFirst();
}
@Transactional
public static R<?> addOrUpdateFloor(@RequestBody LccModelFloor params) {
Assert.isNotBlank(params.getProjectUuid(), "项目编号必填");
Assert.isNotBlank(params.getCatalogCode(), "楼层编号必填");
Assert.isNotBlank(params.getItems(), "楼层数据必填");
long count = QUERY_DSL.selectFrom(lccModelFloor)
.where(lccModelFloor.projectUuid.eq(params.getProjectUuid()))
.where(lccModelFloor.projectVersion.eq(1L))
.where(lccModelFloor.catalogCode.eq(params.getCatalogCode()))
.fetchCount();
if (count >= 1) {
QUERY_DSL.update(lccModelFloor)
.set(lccModelFloor.items, params.getItems())
.where(lccModelFloor.projectUuid.eq(params.getProjectUuid()))
.where(lccModelFloor.projectVersion.eq(1L))
.where(lccModelFloor.catalogCode.eq(params.getCatalogCode()))
.execute();
} else {
params.setId(SnowFlake.SNOW_FLAKE.nextId());
params.setProjectVersion(1L);
// params.setCreateBy();
QUERY_DSL.insert(lccModelFloor).populate(params).execute();
}
return R.success();
}
}

31
servo/src/main/java/com/yvan/workbench/model/entity/LccModelFloor.java

@ -0,0 +1,31 @@
package com.yvan.workbench.model.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* (lcc_model_floor)
*/
@Data
public class LccModelFloor implements Serializable {
/** */
private Long id;
/** 项目编号 */
private String projectUuid;
/** 项目版本 */
private Long projectVersion;
/** 楼层编号 */
private String catalogCode;
/** 楼层数据 */
private String items;
/** 创建时间,默认为当前时间 */
private Date createAt;
/** 创建人 */
private String createBy;
/** 最后更新时间,默认为当前时间,并在更新时自动更新 */
private Date updateAt;
/** 更新人 */
private String updateBy;
}

80
servo/src/main/java/com/yvan/workbench/model/query/QLccModelFloor.java

@ -0,0 +1,80 @@
package com.yvan.workbench.model.query;
import com.querydsl.core.types.Path;
import com.querydsl.core.types.PathMetadata;
import com.querydsl.core.types.dsl.DateTimePath;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.StringPath;
import com.querydsl.sql.ColumnMetadata;
import com.querydsl.sql.RelationalPathBase;
import com.yvan.workbench.model.entity.LccModelFloor;
import java.sql.Types;
import java.util.Date;
import static com.querydsl.core.types.PathMetadataFactory.forVariable;
/**
* (lcc_model_floor)
*/
@SuppressWarnings("ALL")
public class QLccModelFloor extends RelationalPathBase<LccModelFloor> {
/** lcc_model_floor表 */
public static final QLccModelFloor lccModelFloor = new QLccModelFloor("lcc_model_floor");
/** */
public final NumberPath<Long> id = createNumber("id", Long.class);
/** 项目编号 */
public final StringPath projectUuid = createString("projectUuid");
/** 项目版本 */
public final NumberPath<Long> projectVersion = createNumber("projectVersion", Long.class);
/** 楼层编号 */
public final StringPath catalogCode = createString("catalogCode");
/** 楼层数据 */
public final StringPath items = createString("items");
/** 创建时间,默认为当前时间 */
public final DateTimePath<Date> createAt = createDateTime("createAt", Date.class);
/** 创建人 */
public final StringPath createBy = createString("createBy");
/** 最后更新时间,默认为当前时间,并在更新时自动更新 */
public final DateTimePath<Date> updateAt = createDateTime("updateAt", Date.class);
/** 更新人 */
public final StringPath updateBy = createString("updateBy");
public QLccModelFloor(String variable) {
super(LccModelFloor.class, forVariable(variable), "rcs2_tw_zhanghui", "lcc_model_floor");
addMetadata();
}
public QLccModelFloor(String variable, String schema, String table) {
super(LccModelFloor.class, forVariable(variable), schema, table);
addMetadata();
}
public QLccModelFloor(String variable, String schema) {
super(LccModelFloor.class, forVariable(variable), schema, "lcc_model_floor");
addMetadata();
}
public QLccModelFloor(Path<? extends LccModelFloor> path) {
super(path.getType(), path.getMetadata(), "rcs2_tw_zhanghui", "lcc_model_floor");
addMetadata();
}
public QLccModelFloor(PathMetadata metadata) {
super(LccModelFloor.class, metadata, "rcs2_tw_zhanghui", "lcc_model_floor");
addMetadata();
}
private void addMetadata() {
addMetadata(id, ColumnMetadata.named("id").withIndex(1).ofType(Types.BIGINT).withSize(19));
addMetadata(projectUuid, ColumnMetadata.named("project_uuid").withIndex(2).ofType(Types.VARCHAR).withSize(36));
addMetadata(projectVersion, ColumnMetadata.named("project_version").withIndex(3).ofType(Types.BIGINT).withSize(19));
addMetadata(catalogCode, ColumnMetadata.named("catalogCode").withIndex(4).ofType(Types.VARCHAR).withSize(255));
addMetadata(items, ColumnMetadata.named("items").withIndex(5).ofType(Types.LONGVARCHAR).withSize(65535));
addMetadata(createAt, ColumnMetadata.named("create_at").withIndex(6).ofType(Types.TIMESTAMP));
addMetadata(createBy, ColumnMetadata.named("create_by").withIndex(7).ofType(Types.VARCHAR).withSize(255));
addMetadata(updateAt, ColumnMetadata.named("update_at").withIndex(8).ofType(Types.TIMESTAMP));
addMetadata(updateBy, ColumnMetadata.named("update_by").withIndex(9).ofType(Types.VARCHAR).withSize(255));
}
}

6
servo/src/main/resources/application-dev.yml

@ -55,7 +55,7 @@ web:
enable: true
mappings:
- hosted-path: '/'
location: './yvan-lcc-bench/servo/src/main/resources/static'
location: './servo/src/main/resources/static'
mvc:
path: '/api/'
http-method: [ 'POST', 'GET' ]
@ -76,8 +76,8 @@ web:
exclude-packages: [ ]
exclude-classes: [ ]
locations:
- './yvan-lcc-bench/servo/out/production/classes'
#- './yvan-lcc-bench/servo/build/classes/java/main'
- './servo/out/production/classes'
#- './servo/build/classes/java/main'
security:
enable: true
data-source:

Loading…
Cancel
Save