diff --git a/servo/src/main/java/com/yvan/workbench/controller/LccModelManager.java b/servo/src/main/java/com/yvan/workbench/controller/LccModelManager.java index f63108e..4bbe39a 100644 --- a/servo/src/main/java/com/yvan/workbench/controller/LccModelManager.java +++ b/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 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(); + } } diff --git a/servo/src/main/java/com/yvan/workbench/model/entity/LccModelFloor.java b/servo/src/main/java/com/yvan/workbench/model/entity/LccModelFloor.java new file mode 100644 index 0000000..c1261c4 --- /dev/null +++ b/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; +} diff --git a/servo/src/main/java/com/yvan/workbench/model/query/QLccModelFloor.java b/servo/src/main/java/com/yvan/workbench/model/query/QLccModelFloor.java new file mode 100644 index 0000000..64c2e13 --- /dev/null +++ b/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 { + /** lcc_model_floor表 */ + public static final QLccModelFloor lccModelFloor = new QLccModelFloor("lcc_model_floor"); + + /** */ + public final NumberPath id = createNumber("id", Long.class); + /** 项目编号 */ + public final StringPath projectUuid = createString("projectUuid"); + /** 项目版本 */ + public final NumberPath projectVersion = createNumber("projectVersion", Long.class); + /** 楼层编号 */ + public final StringPath catalogCode = createString("catalogCode"); + /** 楼层数据 */ + public final StringPath items = createString("items"); + /** 创建时间,默认为当前时间 */ + public final DateTimePath createAt = createDateTime("createAt", Date.class); + /** 创建人 */ + public final StringPath createBy = createString("createBy"); + /** 最后更新时间,默认为当前时间,并在更新时自动更新 */ + public final DateTimePath 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 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)); + } +} diff --git a/servo/src/main/resources/application-dev.yml b/servo/src/main/resources/application-dev.yml index d87f517..f70aaf9 100644 --- a/servo/src/main/resources/application-dev.yml +++ b/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: