T20240529155531.pdma.json 396KB

1
  1. {"name":"成本管理二期","describe":"成本管理","avatar":"","version":"4.9.2","createdTime":"2024-5-23 16:36:04","updatedTime":"2024-5-29 15:55:31","dbConns":[],"profile":{"default":{"db":"29D1CE08-4C35-4D2D-AAA9-23D93305B52E","dbConn":"","entityInitFields":[{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"ADB3AD14-6603-43E2-8261-114E32442B5B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"92BF430E-01FA-4AEF-944F-25A142632654","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"C8BE2C7A-8251-4ADD-BB4F-411C5754DA62","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"4E471FD6-3E73-4A90-B660-51598A482409","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"0DC24AA9-4CD0-45D8-95CF-FA546BE343AB","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"09F64AC4-4DEE-428F-AF64-4C103884E1AC","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"entityInitProperties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""}},"javaHome":"","sql":{"delimiter":""},"dataTypeSupports":[{"defKey":"MYSQL","id":"29D1CE08-4C35-4D2D-AAA9-23D93305B52E"},{"defKey":"ORACLE","id":"A4E23CB7-BB01-4BD1-9F71-F73F3E15A542"},{"defKey":"SQLServer","id":"BFC87171-C74F-494A-B7C2-76B9C55FACC9"},{"defKey":"PostgreSQL","id":"DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022"},{"defKey":"DB2","id":"89504F5D-94BF-4C9E-8B2E-44F37305FED5"},{"defKey":"DM","id":"0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307"},{"defKey":"GaussDB","id":"592C7013-143D-4E7B-AF64-0D7BF1E28230"},{"defKey":"Kingbase","id":"77BD85E5-9D0D-4096-8427-CBA306FC9C6A"},{"defKey":"GBase","id":"56F4B55B-F0B8-4049-9E6B-50B95C1D793A"},{"defKey":"MaxCompute","id":"11D1FB71-A587-4217-89BA-611B8A1F83E0"},{"defKey":"SQLite","id":"B363BE0B-F852-49B8-9B2E-F6D2174DEAC1"},{"defKey":"Hive","id":"81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2"},{"defKey":"JAVA","id":"797A1496-D649-4261-89B4-544132EC3F36"},{"defKey":"JavaMybatis","id":"895CFD1D-4273-4D32-A2C4-CAC70200AB5B"},{"defKey":"JavaMybatisPlus","id":"A2EE7B4A-CE62-4290-B00C-B26C1BF18073"},{"defKey":"C#","id":"F3AC2415-E86B-40C6-9FEB-F4B7937D2C30"},{"defKey":"Golang","id":"B91D99E0-9B7C-416C-8737-B760957DAF09"},{"defKey":"Rust","id":"BDF457FD-9F98-4AC3-A705-7587B00A3BAB"},{"defKey":"Doris","id":"483F9346-C99E-4014-A1D2-A554606BD8A3"},{"defKey":"HighGo","id":"ABF5836C-0B7C-4007-A41C-F869325E5842"}],"codeTemplates":[{"type":"appCode","applyFor":"797A1496-D649-4261-89B4-544132EC3F36"," JpaBean":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.entity;\n$blankline\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport javax.persistence.*;\nimport java.io.Serializable;\nimport java.util.Date;\n$blankline\n\n /**\n * {{=it.entity.defName}};{{=it.entity.comment}}\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@ApiModel(value = \"{{=it.entity.defName}}\",description = \"{{=it.entity.comment}}\")\n@Table(name=\"{{=it.entity.defKey}}\")\npublic class {{=beanClass}} implements Serializable,Cloneable{\n{{~it.entity.fields:field:index}}\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n {{? field.primaryKey }}\n @Id\n @GeneratedValue\n {{?}}\n @ApiModelProperty(name = \"{{=field.defName}}\",notes = \"{{=field.comment}}\")\n private {{=field.type}} {{=it.func.camel(field.defKey,false)}} ;\n{{~}}\n$blankline\n\n{{~it.entity.fields:field:index}}\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n public {{=field.type}} get{{=it.func.camel(field.defKey,true)}}(){\n return this.{{=it.func.camel(field.defKey,false)}};\n }\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n public void set{{=it.func.camel(field.defKey,true)}}({{=field.type}} {{= it.func.camel(field.defKey,false) }}){\n this.{{=it.func.camel(field.defKey,false)}}={{=it.func.camel(field.defKey,false)}};\n }\n{{~}}\n}"},{"type":"appCode","applyFor":"F3AC2415-E86B-40C6-9FEB-F4B7937D2C30","Default":"using System;\nusing System.Collections.Generic;\n\n$blankline\n{{\n var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n}}\n/*\n * @author : http://www.chiner.com.cn\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n * @desc : {{=it.func.join(it.entity.defName,it.entity.comment,'-')}}\n */\nnamespace PDManer.Application\n{\n public partial class {{=it.func.camel(it.entity.defKey,true) }}\n {\n \n {{~it.entity.fields:field:index}}\n /// <summary>\n /// {{=it.func.join(field.defName,field.comment,';')}}\n /// </summary>\n public {{=field.type}} {{=it.func.camel(field.defKey,true)}} { get; set; }\n $blankline\n {{~}}\n \n }\n}","SqlSugar":"using System;\nusing System.Collections.Generic;\nusing SqlSugar;\n\n$blankline\n{{\n var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n var sqlSugartable='[SugarTable(\"{{=it.entity.defKey}}\", TableDescription = \"{{=it.func.join(it.entity.defName,it.entity.comment,';')}}\")]';\n}}\n/*\n * @author : xkdong@163.com\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n * @desc : {{=it.func.join(it.entity.defName,it.entity.comment,'-')}}\n */\nnamespace Model.DBModel\n{\n /// <summary>\n /// {{=it.func.join(it.entity.defName,it.entity.comment,';')}}\n /// </summary>\n {{=sqlSugartable}}\n public class {{=it.entity.defKey}}\n {\n {{~it.entity.fields:field:index}}\n /// <summary>\n /// {{=it.func.join(field.defName,field.comment,';')}}\n /// </summary>\n {{? field.primaryKey }}\n [SugarColumn(IsIdentity = true, IsPrimaryKey = true)]\n {{?}}\n public {{=field.type}} {{=it.func.camel(field.defKey,true)}}{ get; set; }\n $blankline\n {{~}}\n }\n}"},{"applyFor":"895CFD1D-4273-4D32-A2C4-CAC70200AB5B","type":"appCode","Controller":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.controller;\n$blankline\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiOperation;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\nimport {{=pkgName}}.entity.{{=beanClass}};\nimport {{=pkgName}}.service.{{=serviceClass}};\n$blankline\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表控制层\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@Api(tags = \"{{=it.entity.defName}}对象功能接口\")\n@RestController\n@RequestMapping(\"/{{=it.func.camel(it.entity.defKey,false)}}\")\npublic class {{=beanClass}}Controller{\n @Autowired\n private {{=serviceClass}} {{=serviceVarName}};\n $blankline\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n @ApiOperation(\"通过ID查询单条数据\")\n @GetMapping(\"{{{=it.func.camel(pkVarName,false)}}}\")\n public ResponseEntity<{{=beanClass}}> queryById({{=pkDataType}} {{=pkVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.queryById({{=pkVarName}}));\n }\n $blankline\n /** \n * 分页查询\n *\n * @param {{=beanVarName}} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @ApiOperation(\"分页查询\")\n @GetMapping\n public ResponseEntity<Page<{{=beanClass}}>> paginQuery({{=beanClass}} {{=beanVarName}}, PageRequest pageRequest){\n return ResponseEntity.ok({{=serviceVarName}}.paginQuery({{=beanVarName}}, pageRequest));\n }\n $blankline\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n @ApiOperation(\"新增数据\")\n @PostMapping\n public ResponseEntity<{{=beanClass}}> add({{=beanClass}} {{=beanVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.insert({{=beanVarName}}));\n }\n $blankline\n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n @ApiOperation(\"更新数据\")\n @PutMapping\n public ResponseEntity<{{=beanClass}}> edit({{=beanClass}} {{=beanVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.update({{=beanVarName}}));\n }\n $blankline\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 是否成功\n */\n @ApiOperation(\"通过主键删除数据\")\n @DeleteMapping\n public ResponseEntity<Boolean> deleteById({{=pkDataType}} {{=pkVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.deleteById({{=pkVarName}}));\n }\n}","Service":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.service;\n$blankline\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageRequest;\nimport {{=pkgName}}.entity.{{=beanClass}};\n$blankline\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表服务接口\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\npublic interface {{=serviceClass}}{\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n {{=beanClass}} queryById({{=pkDataType}} {{=pkVarName}});\n \n /** \n * 分页查询\n *\n * @param {{=beanVarName}} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n Page<{{=beanClass}}> paginQuery({{=beanClass}} {{=beanVarName}}, PageRequest pageRequest);\n\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n {{=beanClass}} insert({{=beanClass}} {{=beanVarName}});\n\n \n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n {{=beanClass}} update({{=beanClass}} {{=beanVarName}});\n\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 是否成功\n */\n boolean deleteById({{=pkDataType}} {{=pkVarName}});\n}","ServiceImpl":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkVarNameU = \"UndefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkVarNameU = it.func.camel(field.defKey,true);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n var mapperName = beanVarName+'Mapper';\n \n}}package {{=pkgName}}.service.impl;\n$blankline\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.data.domain.Page;\nimport org.springframework.data.domain.PageImpl;\nimport org.springframework.data.domain.PageRequest;\nimport {{=pkgName}}.entity.{{=beanClass}};\nimport {{=pkgName}}.mapper.{{=beanClass}}Mapper;\nimport {{=pkgName}}.service.{{=serviceClass}};\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表服务实现类\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@Service\npublic class {{=serviceClass}}Impl implements {{=serviceClass}}{\n @Autowired\n private {{=beanClass}}Mapper {{=mapperName}};\n $blankline\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n public {{=beanClass}} queryById({{=pkDataType}} {{=pkVarName}}){\n return {{=mapperName}}.queryById({{=pkVarName}});\n }\n $blankline\n /** \n * 分页查询\n *\n * @param {{=beanVarName}} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n public Page<{{=beanClass}}> paginQuery({{=beanClass}} {{=beanVarName}}, PageRequest pageRequest){\n long total = {{=mapperName}}.count({{=beanVarName}});\n return new PageImpl<>({{=mapperName}}.queryAllByLimit({{=beanVarName}}, pageRequest), pageRequest, total);\n }\n $blankline\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n public {{=beanClass}} insert({{=beanClass}} {{=beanVarName}}){\n {{=mapperName}}.insert({{=beanVarName}});\n return {{=beanVarName}};\n }\n $blankline\n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n public {{=beanClass}} update({{=beanClass}} {{=beanVarName}}){\n {{=mapperName}}.update({{=beanVarName}});\n return queryById({{=beanVarName}}.get{{=pkVarNameU}}());\n }\n $blankline\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 是否成功\n */\n public boolean deleteById({{=pkDataType}} {{=pkVarName}}){\n int total = {{=mapperName}}.deleteById({{=pkVarName}});\n return total > 0;\n }\n}","Mapper":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.mapper;\n$blankline\nimport java.util.List;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.annotations.Param;\nimport org.springframework.data.domain.Pageable;\nimport {{=pkgName}}.entity.{{=beanClass}};\n$blankline\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表数据库访问层\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@Mapper\npublic interface {{=beanClass}}Mapper{\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n {{=beanClass}} queryById({{=pkDataType}} {{=pkVarName}});\n \n /** \n * 分页查询指定行数据\n *\n * @param {{=beanVarName}} 查询条件\n * @param pageable 分页对象\n * @return 对象列表\n */\n List<{{=beanClass}}> queryAllByLimit({{=beanClass}} {{=beanVarName}}, @Param(\"pageable\") Pageable pageable);\n\n /** \n * 统计总行数\n *\n * @param {{=beanVarName}} 查询条件\n * @return 总行数\n */\n long count({{=beanClass}} {{=beanVarName}});\n\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 影响行数\n */\n int insert({{=beanClass}} {{=beanVarName}});\n\n /** \n * 批量新增数据\n *\n * @param entities List<{{=beanClass}}> 实例对象列表\n * @return 影响行数\n */\n int insertBatch(@Param(\"entities\") List<{{=beanClass}}> entities);\n \n /** \n * 批量新增或按主键更新数据\n *\n * @param entities List<{{=beanClass}}> 实例对象列表\n * @return 影响行数\n */\n int insertOrUpdateBatch(@Param(\"entities\") List<{{=beanClass}}> entities);\n \n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 影响行数\n */\n int update({{=beanClass}} {{=beanVarName}});\n\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 影响行数\n */\n int deleteById({{=pkDataType}} {{=pkVarName}});\n}","Mapper.xml":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n var pkField = \"UNDEFINED_ID\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkField = field.defKey;\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"{{=pkgName}}.mapper.{{=beanClass}}Mapper\">\n <resultMap type=\"{{=pkgName}}.entity.{{=beanClass}}\" id=\"{{=beanClass}}Map\">\n {{~it.entity.fields:field:index}}\n <result property=\"{{=it.func.camel(field.defKey,false)}}\" column=\"{{=field.defKey}}\" jdbcType=\"{{=field.type}}\"/>\n {{~}}\n </resultMap>\n $blankline\n <!-- 通过ID查询单条数据 -->\n <select id=\"queryById\" resultMap=\"{{=beanClass}}Map\">\n select\n {{=it.entity.fields.map(function(e,i){return e.defKey}).join(',')}}\n from {{=it.entity.defKey}}\n where {{=pkField}} = #{{{=pkVarName}}}\n </select>\n $blankline\n <!--分页查询指定行数据-->\n <select id=\"queryAllByLimit\" resultMap=\"{{=beanClass}}Map\">\n select\n {{=it.entity.fields.map(function(e,i){return e.defKey}).join(',')}}\n from {{=it.entity.defKey}}\n <where>\n {{~it.entity.fields:field:index}}\n <if test=\"{{=it.func.camel(field.defKey,false)}} != null and {{=it.func.camel(field.defKey,false)}} != ''\">\n and {{=field.defKey}} = #{{{=it.func.camel(field.defKey,false)}}}\n </if>\n {{~}}\n </where>\n limit #{pageable.offset}, #{pageable.pageSize}\n </select>\n $blankline\n <!--统计总行数-->\n <select id=\"count\" resultType=\"java.lang.Long\">\n select count(1)\n from {{=it.entity.defKey}}\n <where>\n {{~it.entity.fields:field:index}}\n <if test=\"{{=it.func.camel(field.defKey,false)}} != null and {{=it.func.camel(field.defKey,false)}} != ''\">\n and {{=field.defKey}} = #{{{=it.func.camel(field.defKey,false)}}}\n </if>\n {{~}}\n </where>\n </select>\n $blankline\n <!--新增数据-->\n <insert id=\"insert\" keyProperty=\"{{=pkField}}\" useGeneratedKeys=\"true\">\n insert into {{=it.entity.defKey}}({{=it.entity.fields.map(function(e,i){return e.defKey}).join(',')}})\n values ({{=it.entity.fields.map(function(e,i){return '#{'+it.func.camel(e.defKey,false)+'}'}).join(',')}})\n </insert>\n $blankline\n <!-- 批量新增数据 -->\n <insert id=\"insertBatch\" keyProperty=\"{{=pkField}}\" useGeneratedKeys=\"true\">\n insert into {{=it.entity.defKey}}({{=it.entity.fields.map(function(e,i){return e.defKey}).join(',')}})\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n ({{=it.entity.fields.map(function(e,i){return '#{entity.'+it.func.camel(e.defKey,false)+'}'}).join(',')}})\n </foreach>\n </insert>\n $blankline\n <!-- 批量新增或按主键更新数据 -->\n <insert id=\"insertOrUpdateBatch\" keyProperty=\"{{=pkField}}\" useGeneratedKeys=\"true\">\n insert into {{=it.entity.defKey}}({{=it.entity.fields.map(function(e,i){return e.defKey}).join(',')}})\n values\n <foreach collection=\"entities\" item=\"entity\" separator=\",\">\n ({{=it.entity.fields.map(function(e,i){return '#{entity.'+it.func.camel(e.defKey,false)+'}'}).join(',')}})\n </foreach>\n on duplicate key update\n {{=it.entity.fields.map(function(e,i){return e.defKey + '=values('+e.defKey+')'}).join(',\\n\\t\\t')}}\n </insert>\n $blankline\n <!-- 更新数据 -->\n <update id=\"update\">\n update {{=it.entity.defKey}}\n <set>\n {{~it.entity.fields:field:index}}\n <if test=\"{{=it.func.camel(field.defKey,false)}} != null and {{=it.func.camel(field.defKey,false)}} != ''\">\n {{=field.defKey}} = #{{{=it.func.camel(field.defKey,false)}}},\n </if>\n {{~}}\n </set>\n where {{=pkField}} = #{{{=pkVarName}}}\n </update>\n $blankline\n <!--通过主键删除-->\n <delete id=\"deleteById\">\n delete from {{=it.entity.defKey}} where {{=pkField}} = #{{{=pkVarName}}}\n </delete>\n</mapper>\n\n","Entity":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.entity;\n$blankline\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport java.io.Serializable;\nimport java.util.Date;\n$blankline\n\n /**\n * {{=it.entity.defName}};{{=it.entity.comment}}\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@ApiModel(value = \"{{=it.entity.defName}}\",description = \"{{=it.entity.comment}}\")\npublic class {{=beanClass}} implements Serializable,Cloneable{\n{{~it.entity.fields:field:index}}\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n @ApiModelProperty(name = \"{{=field.defName}}\",notes = \"{{=field.comment}}\")\n private {{=field.type}} {{=it.func.camel(field.defKey,false)}} ;\n{{~}}\n$blankline\n\n{{~it.entity.fields:field:index}}\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n public {{=field.type}} get{{=it.func.camel(field.defKey,true)}}(){\n return this.{{=it.func.camel(field.defKey,false)}};\n }\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n public void set{{=it.func.camel(field.defKey,true)}}({{=field.type}} {{= it.func.camel(field.defKey,false) }}){\n this.{{=it.func.camel(field.defKey,false)}}={{=it.func.camel(field.defKey,false)}};\n }\n{{~}}\n}"},{"applyFor":"A2EE7B4A-CE62-4290-B00C-B26C1BF18073","type":"appCode","Controller":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.controller;\n$blankline\nimport java.util.List;\nimport io.swagger.annotations.Api;\nimport io.swagger.annotations.ApiOperation;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.data.domain.PageImpl;\nimport org.springframework.data.domain.PageRequest;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.web.bind.annotation.*;\nimport {{=pkgName}}.entity.{{=beanClass}};\nimport {{=pkgName}}.service.{{=serviceClass}};\n$blankline\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表控制层\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@Api(tags = \"{{=it.entity.defName}}对象功能接口\")\n@RestController\n@RequestMapping(\"/{{=it.func.camel(it.entity.defKey,false)}}\")\npublic class {{=beanClass}}Controller{\n @Autowired\n private {{=serviceClass}} {{=serviceVarName}};\n $blankline\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n @ApiOperation(\"通过ID查询单条数据\")\n @GetMapping(\"{{{=it.func.camel(pkVarName,false)}}}\")\n public ResponseEntity<{{=beanClass}}> queryById({{=pkDataType}} {{=pkVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.queryById({{=pkVarName}}));\n }\n $blankline\n /** \n * 分页查询\n *\n * @param {{=beanVarName}} 筛选条件\n * @param pageRequest 分页对象\n * @return 查询结果\n */\n @ApiOperation(\"分页查询\")\n @GetMapping\n public ResponseEntity<PageImpl<{{=beanClass}}>> paginQuery({{=beanClass}} {{=beanVarName}}, PageRequest pageRequest){\n //1.分页参数\n long current = pageRequest.getPageNumber();\n long size = pageRequest.getPageSize();\n\n //2.分页查询\n /*把Mybatis的分页对象做封装转换,MP的分页对象上有一些SQL敏感信息,还是通过spring的分页模型来封装数据吧*/\n com.baomidou.mybatisplus.extension.plugins.pagination.Page<{{=beanClass}}> pageResult = {{=serviceVarName}}.paginQuery({{=beanVarName}}, current,size);\n\n //3. 分页结果组装\n List<{{=beanClass}}> dataList = pageResult.getRecords();\n long total = pageResult.getTotal();\n PageImpl<{{=beanClass}}> retPage = new PageImpl<{{=beanClass}}>(dataList,pageRequest,total);\n return ResponseEntity.ok(retPage);\n }\n $blankline\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n @ApiOperation(\"新增数据\")\n @PostMapping\n public ResponseEntity<{{=beanClass}}> add({{=beanClass}} {{=beanVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.insert({{=beanVarName}}));\n }\n $blankline\n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n @ApiOperation(\"更新数据\")\n @PutMapping\n public ResponseEntity<{{=beanClass}}> edit({{=beanClass}} {{=beanVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.update({{=beanVarName}}));\n }\n $blankline\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 是否成功\n */\n @ApiOperation(\"通过主键删除数据\")\n @DeleteMapping\n public ResponseEntity<Boolean> deleteById({{=pkDataType}} {{=pkVarName}}){\n return ResponseEntity.ok({{=serviceVarName}}.deleteById({{=pkVarName}}));\n }\n}","Service":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.service;\n$blankline\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport {{=pkgName}}.entity.{{=beanClass}};\n$blankline\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表服务接口\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\npublic interface {{=serviceClass}}{\n $blankline\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n {{=beanClass}} queryById({{=pkDataType}} {{=pkVarName}});\n $blankline\n /**\n * 分页查询\n *\n * @param {{=beanVarName}} 筛选条件\n * @param current 当前页码\n * @param size 每页大小\n * @return\n */\n Page<{{=beanClass}}> paginQuery({{=beanClass}} {{=beanVarName}}, long current, long size);\n\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n {{=beanClass}} insert({{=beanClass}} {{=beanVarName}});\n\n \n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n {{=beanClass}} update({{=beanClass}} {{=beanVarName}});\n\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 是否成功\n */\n boolean deleteById({{=pkDataType}} {{=pkVarName}});\n}","ServiceImpl":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkVarNameU = \"UndefinedId\";\n var pkFieldKey = \"UNDEFINED\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkFieldKey = field.defKey;\n pkVarName = it.func.camel(field.defKey,false);\n pkVarNameU = it.func.camel(field.defKey,true);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n var mapperName = beanVarName+'Mapper';\n \n}}package {{=pkgName}}.service.impl;\n$blankline\nimport cn.hutool.core.util.StrUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.extension.plugins.pagination.Page;\nimport com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;\nimport com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;\n\nimport {{=pkgName}}.entity.{{=beanClass}};\nimport {{=pkgName}}.mapper.{{=beanClass}}Mapper;\nimport {{=pkgName}}.service.{{=serviceClass}};\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表服务实现类\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@Service\npublic class {{=serviceClass}}Impl implements {{=serviceClass}}{\n @Autowired\n private {{=beanClass}}Mapper {{=mapperName}};\n $blankline\n /** \n * 通过ID查询单条数据 \n *\n * @param {{=pkVarName}} 主键\n * @return 实例对象\n */\n public {{=beanClass}} queryById({{=pkDataType}} {{=pkVarName}}){\n return {{=mapperName}}.selectById({{=pkVarName}});\n }\n $blankline\n /**\n * 分页查询\n *\n * @param {{=beanVarName}} 筛选条件\n * @param current 当前页码\n * @param size 每页大小\n * @return\n */\n public Page<{{=beanClass}}> paginQuery({{=beanClass}} {{=beanVarName}}, long current, long size){\n //1. 构建动态查询条件\n LambdaQueryWrapper<{{=beanClass}}> queryWrapper = new LambdaQueryWrapper<>();\n {{~it.entity.fields.filter(function(e){return e[\"type\"]===\"String\"&&e.defKey !== pkFieldKey}):field:index}}\n if(StrUtil.isNotBlank({{=beanVarName}}.get{{=it.func.camel(field.defKey,true)}}())){\n queryWrapper.eq({{=beanClass}}::get{{=it.func.camel(field.defKey,true)}}, {{=beanVarName}}.get{{=it.func.camel(field.defKey,true)}}());\n }\n {{~}}\n\n //2. 执行分页查询\n Page<{{=beanClass}}> pagin = new Page<>(current , size , true);\n IPage<{{=beanClass}}> selectResult = {{=mapperName}}.selectByPage(pagin , queryWrapper);\n pagin.setPages(selectResult.getPages());\n pagin.setTotal(selectResult.getTotal());\n pagin.setRecords(selectResult.getRecords());\n\n //3. 返回结果\n return pagin;\n }\n $blankline\n /** \n * 新增数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n public {{=beanClass}} insert({{=beanClass}} {{=beanVarName}}){\n {{=mapperName}}.insert({{=beanVarName}});\n return {{=beanVarName}};\n }\n $blankline\n /** \n * 更新数据\n *\n * @param {{=beanVarName}} 实例对象\n * @return 实例对象\n */\n public {{=beanClass}} update({{=beanClass}} {{=beanVarName}}){\n //1. 根据条件动态更新\n LambdaUpdateChainWrapper<{{=beanClass}}> chainWrapper = new LambdaUpdateChainWrapper<{{=beanClass}}>({{=mapperName}});\n {{~it.entity.fields.filter(function(e){return e[\"type\"]===\"String\"&&e.defKey !== pkFieldKey}):field:index}}\n if(StrUtil.isNotBlank({{=beanVarName}}.get{{=it.func.camel(field.defKey,true)}}())){\n chainWrapper.eq({{=beanClass}}::get{{=it.func.camel(field.defKey,true)}}, {{=beanVarName}}.get{{=it.func.camel(field.defKey,true)}}());\n }\n {{~}}\n //2. 设置主键,并更新\n chainWrapper.set({{=beanClass}}::get{{=pkVarNameU}}, {{=beanVarName}}.get{{=pkVarNameU}}());\n boolean ret = chainWrapper.update();\n //3. 更新成功了,查询最最对象返回\n if(ret){\n return queryById({{=beanVarName}}.get{{=pkVarNameU}}());\n }else{\n return {{=beanVarName}};\n }\n }\n $blankline\n /** \n * 通过主键删除数据\n *\n * @param {{=pkVarName}} 主键\n * @return 是否成功\n */\n public boolean deleteById({{=pkDataType}} {{=pkVarName}}){\n int total = {{=mapperName}}.deleteById({{=pkVarName}});\n return total > 0;\n }\n}","Mapper":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.mapper;\n$blankline\n\nimport com.baomidou.mybatisplus.core.conditions.Wrapper;\nimport com.baomidou.mybatisplus.core.mapper.BaseMapper;\nimport com.baomidou.mybatisplus.core.metadata.IPage;\nimport com.baomidou.mybatisplus.core.toolkit.Constants;\nimport org.apache.ibatis.annotations.Mapper;\nimport org.apache.ibatis.annotations.Param;\nimport {{=pkgName}}.entity.{{=beanClass}};\n$blankline\n\n /**\n * {{=it.entity.defName}};({{=it.entity.defKey}})表数据库访问层\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@Mapper\npublic interface {{=beanClass}}Mapper extends BaseMapper<{{=beanClass}}>{\n /** \n * 分页查询指定行数据\n *\n * @param page 分页参数\n * @param wrapper 动态查询条件\n * @return 分页对象列表\n */\n IPage<{{=beanClass}}> selectByPage(IPage<{{=beanClass}}> page , @Param(Constants.WRAPPER) Wrapper<{{=beanClass}}> wrapper);\n}","Mapper.xml":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n var pkField = \"UNDEFINED_ID\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkField = field.defKey;\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n$blankline\n\n<mapper namespace=\"{{=pkgName}}.mapper.{{=beanClass}}Mapper\">\n <select id=\"selectByPage\" resultType=\"{{=pkgName}}.entity.{{=beanClass}}\">\n select * from user ${ew.customSqlSegment}\n </select>\n</mapper>\n\n","Entity":"{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n var serviceClass = beanClass+'Service';\n var serviceVarName= beanVarName+'Service';\n \n}}package {{=pkgName}}.entity;\n$blankline\nimport io.swagger.annotations.ApiModel;\nimport io.swagger.annotations.ApiModelProperty;\nimport com.baomidou.mybatisplus.annotation.TableName;\nimport com.baomidou.mybatisplus.annotation.TableId;\nimport java.io.Serializable;\nimport java.util.Date;\n$blankline\n\n /**\n * {{=it.entity.defName}};{{=it.entity.comment}}\n * @author : http://www.chiner.pro\n * @date : {{=fullYear}}-{{=month}}-{{=days}}\n */\n@ApiModel(value = \"{{=it.entity.defName}}\",description = \"{{=it.entity.comment}}\")\n@TableName(\"{{=it.entity.defKey}}\")\npublic class {{=beanClass}} implements Serializable,Cloneable{\n{{~it.entity.fields:field:index}}\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n @ApiModelProperty(name = \"{{=field.defName}}\",notes = \"{{=field.comment}}\")\n {{? field.primaryKey }}\n @TableId\n {{?}}\n private {{=field.type}} {{=it.func.camel(field.defKey,false)}} ;\n{{~}}\n$blankline\n\n{{~it.entity.fields:field:index}}\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n public {{=field.type}} get{{=it.func.camel(field.defKey,true)}}(){\n return this.{{=it.func.camel(field.defKey,false)}};\n }\n /** {{=it.func.join(field.defName,field.comment,';')}} */\n public void set{{=it.func.camel(field.defKey,true)}}({{=field.type}} {{= it.func.camel(field.defKey,false) }}){\n this.{{=it.func.camel(field.defKey,false)}}={{=it.func.camel(field.defKey,false)}};\n }\n{{~}}\n}"},{"applyFor":"29D1CE08-4C35-4D2D-AAA9-23D93305B52E","type":"dbDDL","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n `{{=field.defKey}}` {{?field.autoIncrement}}INT AUTO_INCREMENT{{??}}{{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }}{{?}} COMMENT '{{=it.func.join(field.defName,field.comment,';')}}' {{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n) COMMENT = '{{=it.func.join(it.entity.defName,it.entity.comment,';') }}';\n$blankline\n","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n","deleteTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","deleteIndex":"{{~ it.entity.indexes:index}}\nDROP INDEX IF EXISTS {{=index.defKey}} ;\n{{~}}","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n\n\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n{{? modifyEntities && modifyEntities.length > 0}}\n/* --------------- 修改表 --------------- */\n{{~ modifyEntities:entity}}\n{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}{{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}{{=indexChanged?'\\n\\t更改了索引':''}}{{=changed?'\\n\\t更改了属性':''}}{{=relaArray.length>0?('\\n\\t'+relaArray.join('\\n\\t')):''}}\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n{{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n{{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n{{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n{{?}}\n{{~}}\n{{?}}\n","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('ALTER TABLE '+before.defKey+' RENAME TO '+after.defKey);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n ret.push('ALTER TABLE '+after.defKey+' COMMENT \\''+commentText+'\\'');\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = 'ALTER TABLE '+entity.data.baseInfo.defKey;\n for (let field of fieldAdded) { \n let ddlItem = 'ADD COLUMN `'+field.defKey+'` '+field.dbType;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n }\n if(field.autoIncrement){\n ddlItem += ' AUTO_INCREMENT';\n }\n if(field.defaultValue){\n ddlItem += (' DEFAULT ' + field.defaultValue);\n }\n ddlItem += (' COMMENT \\''+field.defName+';'+field.comment+'\\'');\n \n if(field.index>0 && field.afterFieldKey){\n ddlItem += (' AFTER '+field.afterFieldKey);\n }\n ret.push(ddlItem);\n }\n return firstDDL+'\\n'+ret.join(',\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = 'ALTER TABLE '+entity.data.baseInfo.defKey;\n for (let field of fieldRemoved) { \n ret.push('DROP '+field.defKey);\n }\n return firstDDL+'\\n'+ret.join(',\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = 'ALTER TABLE '+entity.data.baseInfo.defKey;\n for (let field of fieldModified) { \n let changeDDL = '';\n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey === after.defKey){\n changeDDL += (' MODIFY COLUMN `'+after.defKey+'`');\n }else{\n changeDDL += (' CHANGE COLUMN `'+before.defKey+'` `'+after.defKey+'`');\n }\n changeDDL += (' '+after.dbType);\n if(after.len>0){\n changeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n changeDDL += (','+after.scale);\n }\n changeDDL += ')';\n }\n if(after.notNull){\n changeDDL += ' NOT NULL';\n }\n let defaultValue = '';\n if(after.defaultValue != null && after.defaultValue.length>0){\n defaultValue = (after.defaultValue);\n }else{\n defaultValue = 'NULL';\n }\n if(defaultValue != 'NULL'){\n changeDDL += (' DEFAULT ' + defaultValue);\n }\n\n let comment = after.defName;\n if(after.comment){\n comment = comment + ';' + (after.comment||'');\n }\n if(comment){\n changeDDL += (' COMMENT \\''+comment+'\\';');\n }\n \n ret.push(firstDDL+' '+changeDDL);\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"},{"applyFor":"A4E23CB7-BB01-4BD1-9F71-F73F3E15A542","type":"dbDDL","createTable":"CREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{?field.autoIncrement}}NUMBER(11) generated by default as IDENTITY, {{??}}{{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= field.notNull ? ' NOT NULL' : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}{{?}}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n","deleteTable":"DROP TABLE {{=it.entity.defKey}};","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","deleteIndex":"{{~ it.entity.indexes:index}}\nDROP INDEX {{=index.defKey}} ;\n{{~}}","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* -------------------------------------------------- */\n创建表:\n{{~ createEntities:entity}}\n {{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* -------------------------------------------------- */\n删除表:\n{{~ dropEntities:entity}}\n {{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* -------------------------------------------------- */\n修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n {{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n {{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n {{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n {{?}}{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}\n {{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('\\n\\t建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('\\n\\t解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}\n{{=indexChanged?'\\n\\t更改了索引':''}}\n{{=changed?'\\n\\t更改了属性':''}}\n{{=relaArray.length>0?relaArray.join(''):''}}\n{{~}}\n{{?}}","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push(`ALTER TABLE ${before.defKey} RENAME TO ${after.defKey}`);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n let myText = `COMMENT ON TABLE ${after.defKey} IS '${commentText}'`;\n ret.push(myText);\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldAdded) { \n let ddlItem = `ADD (${field.defKey} ${field.dbType}`;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n let defaultValue = field.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n ddlItem += (' DEFAULT ' + defaultValue);\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n }\n ddlItem += ')';\n ret.push(`${firstDDL} ${ddlItem}`);\n \n /*处理字段注释*/\n let fieldComments = [];\n if(field.defName != null &&field.defName.length>0){\n fieldComments.push(field.defName);\n }\n if(field.comment != null &&field.comment.length>0){\n fieldComments.push(field.comment);\n }\n let commentText = fieldComments.join(';');\n if(commentText != null && commentText.length > 0){\n let commentDDL = `COMMENT ON COLUMN ${entity.data.baseInfo.defKey}.${field.defKey} IS '${commentText}'`;\n ret.push(commentDDL);\n }\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldRemoved) { \n ret.push(`${firstDDL} DROP COLUMN ${field.defKey}`);\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldModified) { \n let changeDDL = '';\n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey !== after.defKey){\n let renameText = `ALTER TABLE ${entity.data.baseInfo.defKey} RENAME COLUMN ${before.defKey} TO ${after.defKey};`;\n ret.push(renameText);\n }\n /*如果没有变化,则不生成变更语句*/\n if(before.dbType === after.dbType \n && before['len'] === after['len'] \n && before.scale === after.scale\n && before.primaryKey === after.primaryKey\n && before.notNull === after.notNull\n && before.autoIncrement === after.autoIncrement\n && before.defaultValue === after.defaultValue){\n continue;\n }\n changeDDL += ('MODIFY ('+after.defKey+'');\n changeDDL += (' '+after.dbType);\n if(after.len>0){\n changeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n changeDDL += (','+after.scale);\n }\n changeDDL += ')';\n }\n let defaultValue = after.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n changeDDL += (' DEFAULT ' + defaultValue);\n }\n \n if(after.notNull){\n changeDDL += ' NOT NULL';\n }\n changeDDL += ')';\n ret.push(`${firstDDL} ${changeDDL};`);\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"},{"applyFor":"BFC87171-C74F-494A-B7C2-76B9C55FACC9","type":"dbDDL","createTable":"IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[{{=it.entity.defKey}}]') AND type in (N'U')) DROP TABLE [dbo].[{{=it.entity.defKey}}];\n\nCREATE TABLE [dbo].[{{=it.entity.defKey}}](\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{?field.autoIncrement}}INT IDENTITY(1,1) {{??}}{{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}{{?}}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}EXEC sp_addextendedproperty 'MS_Description', '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}', 'SCHEMA', dbo, 'table', {{=it.entity.defKey}}, null, null;{{?}}\n{{~it.entity.fields:field:index}}\nEXEC sp_addextendedproperty 'MS_Description', '{{=it.func.join(field.defName,field.comment,';')}}', 'SCHEMA', dbo, 'table', {{=it.entity.defKey}}, 'column', {{=field.defKey}};\n{{~}}\n","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n","deleteTable":"IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[{{=it.entity.defKey}}]') AND type in (N'U')) DROP TABLE [dbo].[{{=it.entity.defKey}}];","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","deleteIndex":"","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n\n\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n{{? modifyEntities && modifyEntities.length > 0}}\n/* --------------- 修改表 --------------- */\n{{~ modifyEntities:entity}}\n{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}{{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}{{=indexChanged?'\\n\\t更改了索引':''}}{{=changed?'\\n\\t更改了属性':''}}{{=relaArray.length>0?('\\n\\t'+relaArray.join('\\n\\t')):''}}\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n{{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n{{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n{{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n{{?}}\n{{~}}\n{{?}}","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push(`EXEC sp_rename '${before.defKey}','${after.defKey}'`);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n let myText = `IF ((SELECT COUNT(*) FROM ::fn_listextendedproperty('MS_Description','SCHEMA', 'dbo','TABLE', '${after.defKey}', NULL, NULL)) > 0)\n \\n\\tEXEC sp_updateextendedproperty 'MS_Description', '${commentText}','SCHEMA', 'dbo','TABLE', '${after.defKey}'\n \\nELSE\n \\n\\tEXEC sp_addextendedproperty 'MS_Description', '${commentText}', 'SCHEMA', 'dbo','TABLE', '${after.defKey}'\n `;\n ret.push(myText);\n /*ret.push('ALTER TABLE '+after.defKey+' COMMENT \\''+commentText+'\\'');*/\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE [dbo].[${entity.data.baseInfo.defKey}]`;\n for (let field of fieldAdded) { \n let ddlItem = `ADD [${field.defKey}] ${field.dbType}`;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n let defaultValue = field.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n ddlItem += (' DEFAULT ' + defaultValue);\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n }\n ret.push(`${firstDDL} ${ddlItem}`);\n \n /*处理字段注释*/\n let fieldComments = [];\n if(field.defName != null &&field.defName.length>0){\n fieldComments.push(field.defName);\n }\n if(field.comment != null &&field.comment.length>0){\n fieldComments.push(field.comment);\n }\n let commentText = fieldComments.join(';');\n if(commentText != null && commentText.length > 0){\n let commentDDL = `EXEC sp_addextendedproperty 'MS_Description', N'${commentText}','SCHEMA', N'dbo','TABLE', N'${entity.data.baseInfo.defKey}','COLUMN', N'${field.defKey}'`;\n ret.push(commentDDL);\n }\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE [dbo].[${entity.data.baseInfo.defKey}]`;\n for (let field of fieldRemoved) { \n ret.push(`${firstDDL} DROP COLUMN [${field.defKey}]`);\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = `ALTER TABLE [dbo].[${entity.data.baseInfo.defKey}]`;\n for (let field of fieldModified) { \n let changeDDL = '';\n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey === after.defKey){\n changeDDL += (' ALTER COLUMN ['+after.defKey+']');\n }else{\n let renameText = `EXEC sp_rename '[dbo].[${entity.data.baseInfo.defKey}].[${before.defKey}]','${after.defKey}','COLUMN';`;\n ret.push(renameText);\n continue;\n }\n changeDDL += (' '+after.dbType);\n if(after.len>0){\n changeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n changeDDL += (','+after.scale);\n }\n changeDDL += ')';\n }\n let defaultValue = after.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n changeDDL += (' DEFAULT ' + defaultValue);\n }\n \n if(after.notNull){\n changeDDL += ' NOT NULL';\n }\n ret.push(`${firstDDL} ${changeDDL};`);\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"},{"applyFor":"DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022","type":"dbDDL","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{? field.autoIncrement}}SERIAL{{??}}{{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n","deleteTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","deleteIndex":"{{~ it.entity.indexes:index}}\nDROP INDEX {{=index.defKey}} ;\n{{~}}","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n\n\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n{{? modifyEntities && modifyEntities.length > 0}}\n/* --------------- 修改表 --------------- */\n{{~ modifyEntities:entity}}\n{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}{{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}{{=indexChanged?'\\n\\t更改了索引':''}}{{=changed?'\\n\\t更改了属性':''}}{{=relaArray.length>0?('\\n\\t'+relaArray.join('\\n\\t')):''}}\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n{{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n{{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n{{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n{{?}}\n{{~}}\n{{?}}","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push(`ALTER TABLE ${before.defKey} RENAME TO ${after.defKey}`);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n let myText = `COMMENT ON TABLE ${after.defKey} IS '${commentText}'`;\n ret.push(myText);\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldAdded) { \n let ddlItem = `ADD COLUMN ${field.defKey} ${field.dbType}`;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n } \n let defaultValue = field.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n ddlItem += (' DEFAULT ' + defaultValue);\n }\n\n ret.push(`${firstDDL} ${ddlItem}`);\n \n /*处理字段注释*/\n let fieldComments = [];\n if(field.defName != null &&field.defName.length>0){\n fieldComments.push(field.defName);\n }\n if(field.comment != null &&field.comment.length>0){\n fieldComments.push(field.comment);\n }\n let commentText = fieldComments.join(';');\n if(commentText != null && commentText.length > 0){\n let commentDDL = `COMMENT ON COLUMN ${entity.data.baseInfo.defKey}.${field.defKey} IS '${commentText}'`;\n ret.push(commentDDL);\n }\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldRemoved) { \n ret.push(`${firstDDL} DROP COLUMN ${field.defKey}`);\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldModified) { \n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey !== after.defKey){\n let renameText = `ALTER TABLE ${entity.data.baseInfo.defKey} RENAME COLUMN ${before.defKey} TO ${after.defKey};`;\n ret.push(renameText);\n }\n /*如果没有变化,则不生成变更语句*/\n if(before.dbType === after.dbType \n && before['len'] === after['len'] \n && before.scale === after.scale\n && before.primaryKey === after.primaryKey\n && before.notNull === after.notNull\n && before.autoIncrement === after.autoIncrement\n && before.defaultValue === after.defaultValue){\n continue;\n }\n if(before.dbType !== after.dbType || before.len !== after.len || before.scale !== after.scale){\n let dbTypeDDL = `ALTER TABLE ${entity.data.baseInfo.defKey} ALTER COLUMN ${after.defKey} TYPE ${before.dbType}`;\n if(after.len>0){\n dbTypeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n dbTypeDDL += (','+after.scale);\n }\n dbTypeDDL += ')';\n }\n ret.push(dbTypeDDL+';');\n }\n \n if(before.defaultValue !== after.defaultValue){\n let defaultDDL = '';\n let defaultValue = after.defaultValue;\n defaultValue = (defaultValue==null)?\"NULL\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n defaultDDL += ('SET DEFAULT ' + defaultValue);\n }\n let defaultTpl = `ALTER TABLE ${entity.data.baseInfo.defKey} ALTER COLUMN ${defaultDDL};`;\n ret.push(defaultTpl);\n }\n \n if(before.notNull !== after.notNull){\n let notNullDDL= 'SET NULL';\n if(after.notNull){\n let notNullDDL= 'SET NOT NULL';\n }\n let notNullTpl = `ALTER TABLE ${entity.data.baseInfo.defKey} ALTER COLUMN ${notNullDDL};`;\n ret.push(notNullTpl);\n }\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n-- 索引重建\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"},{"type":"dbDDL","applyFor":"89504F5D-94BF-4C9E-8B2E-44F37305FED5","createTable":"CREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{?field.autoIncrement}}DECIMAL(17) GENERATED ALWAYS AS IDENTITY(START WITH 1 INCREMENT BY 1),{{??}}{{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}{{?}}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"},{"applyFor":"0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307","type":"dbDDL","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{?field.autoIncrement}}INT IDENTITY(1,1) {{??}}{{=field.dbType}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{?}}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n","deleteTable":"","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","deleteIndex":"","message":"","update":""},{"type":"dbDDL","applyFor":"592C7013-143D-4E7B-AF64-0D7BF1E28230","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.autoIncrement ? ' AUTO_INCREMENT' : '' }}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"},{"type":"dbDDL","applyFor":"77BD85E5-9D0D-4096-8427-CBA306FC9C6A","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"},{"applyFor":"11D1FB71-A587-4217-89BA-611B8A1F83E0","type":"dbDDL","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{=field.type}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.autoIncrement ? 'AUTO_INCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }} COMMENT '{{=it.func.join(field.defName,field.comment,';')}}' {{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n) COMMENT '{{=it.func.join(it.entity.defName,it.entity.comment,';') }}';\n$blankline\n","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n","deleteTable":"","createIndex":"","deleteIndex":"","message":"","update":""},{"applyFor":"B363BE0B-F852-49B8-9B2E-F6D2174DEAC1","type":"dbDDL","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}} {{= field.notNull ? 'NOT NULL' : '' }} {{= field.autoIncrement ? 'AUTOINCREMENT' : '' }} {{= field.defaultValue ? it.func.join('DEFAULT',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }} --{{=it.func.join(field.defName,field.comment,';')}}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n) ; --{{=it.func.join(it.entity.defName,it.entity.comment,';') }}\n$blankline\n","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline\n"},{"type":"dbDDL","applyFor":"dictSQLTemplate","content":"/* 插入字典总表[{{=it.dict.defKey}}-{{=it.dict.defName}}] */\nINSERT INTO SYS_DICT(KEY_,LABEL,INTRO,REVISION) VALUES('{{=it.dict.defKey}}','{{=it.dict.defName}}','{{=it.dict.intro}}',1);\n/* 插入字典明细表 */\n{{~it.dict.items:item:index}}\nINSERT INTO SYS_DICT_ITEM(DICT_KEY,KEY_,LABEL,SORT_,INTRO,REVISION) VALUES('{{=it.dict.defKey}}','{{=item.defKey}}','{{=item.defName}}','{{=item.sort}}','{{=item.intro}}',1);\n{{~}}"},{"applyFor":"81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2","type":"dbDDL","createTable":"/**字段名,关键字等全部用的小写*/\ndrop table if exists {{=it.entity.defKey}};\n/**补充上库名,external关键字根据建表规范看是否添加*/\ncreate [external] table if not exists {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n/**这里把varchar,char,text,date,datetime字段全部映射为string类型.tinyint unsigned,bit,Integer,tinyint,smallint,mediumint映射为int类型,int unsigned映射为bigint.其它自定义映射规则根据自己情况修改*/\n/**当长度>0只有为decimal类型或double类型时才保留长度和小数的位数*/\n{{~it.entity.fields:field:index}}\n {{=it.func.lowerCase(field.defKey)}} {{=it.func.lowerCase(field.type)=='varchar'||it.func.lowerCase(field.type)=='char'||it.func.lowerCase(field.type)=='text'||it.func.lowerCase(field.type)=='date'||it.func.lowerCase(field.type)=='datetime' ? 'string':it.func.lowerCase(field.type)=='tinyint unsigned'||it.func.lowerCase(field.type)=='bit'||it.func.lowerCase(field.type)=='integer'||it.func.lowerCase(field.type)=='tinyint'||it.func.lowerCase(field.type)=='smallint'||it.func.lowerCase(field.type)=='mediumint' ? 'int':it.func.lowerCase(field.type)=='int unsigned' ? 'bigint':it.func.lowerCase(field.type)}}{{?field.len>0&&(it.func.lowerCase(field.type)=='decimal'||it.func.lowerCase(field.type)=='double')}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{=')'}}{{?}}{{?}} comment '{{=it.func.join(field.defName,field.comment,'')}}' {{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n{{?}}\n)\n{{\n let partitionedBy = it.entity.properties['partitioned by'];\n partitionedBy = partitionedBy?partitionedBy:'请在扩展属性中配置[partitioned by]属性';\n}}\ncomment '{{=it.func.join(it.entity.defName,';') }}'\n/**是否分区表,分区字段名和字段注释自定义*/\n[partitioned by {{=partitionedBy}}]\n/**文件存储格式自定义*/\n[stored as orc]\n/**hdfs上的地址自定义*/\n[location xxx]\n;","createView":"","deleteTable":"","createIndex":"","deleteIndex":"","message":"","update":""},{"applyFor":"B91D99E0-9B7C-416C-8737-B760957DAF09","type":"appCode","content":"{{\n var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1<10?\"0\"+today.getMonth():today.getMonth();\n var days=today.getDate()<10?\"0\"+today.getDate():today.getDate();\n var hours = today.getHours()<10?\"0\"+today.getHours():today.getHours(); \n\tvar minutes = today.getMinutes()<10?\"0\"+today.getMinutes():today.getMinutes(); \n\tvar seconds = today.getSeconds()<10?\"0\"+today.getSeconds():today.getSeconds(); \n}}\n// Package models {{=it.func.join(it.entity.defName,it.entity.comment,',')}}\n// author : http://www.liyang.love\n// date : {{=fullYear}}-{{=month}}-{{=days}} {{=hours}}:{{=minutes}}\n// desc : {{=it.func.join(it.entity.defName,it.entity.comment,',')}}\npackage models\n\n$blankline\n\n// {{=it.func.camel(it.entity.defKey,true) }} {{=it.func.join(it.entity.defName,it.entity.comment,',')}}。\n// 说明:{{=it.entity.comment}}\n// 表名:{{=it.entity.defKey}}\n// group: {{=it.func.camel(it.entity.defKey,true) }}\n// obsolete:\n// appliesto:go 1.8+;\n// namespace:hongmouer.his.models.{{=it.func.camel(it.entity.defKey,true) }}\n// assembly: hongmouer.his.models.go\n// class:HongMouer.HIS.Models.{{=it.func.camel(it.entity.defKey,true) }}\n// version:{{=fullYear}}-{{=month}}-{{=days}} {{=hours}}:{{=minutes}}\ntype {{=it.func.camel(it.entity.defKey,true) }} struct {\n {{~it.entity.fields:field:index}}\n {{=formatGoLang(it.func.camel(field.defKey,true),null,field,it.entity.fields,null,1)}} {{=formatGoLang(field.type,\"type\",field,it.entity.fields,10,3)}} `gorm:\"column:{{=field.primaryKey?\"primaryKey;\":\"\"}}{{=field.defKey}}\" json:\"{{=it.func.camel(field.defKey,true)}}\"` {{=formatGoLang(\"gorm:column:\"+field.defKey+\" json:\"+it.func.camel(field.defKey,true),null,field,it.entity.fields,null,2)}} //type:{{=formatGoLang(field.type,\"type\",field,it.entity.fields,null,3)}} comment:{{=formatGoLang(it.func.join(field.defName,field.comment,';'),\"defName\",field,it.entity.fields,null,4)}} version:{{=fullYear}}-{{=month}}-{{=days}} {{=hours}}:{{=minutes}}\n {{~}}\n}\n\n\n$blankline\n// TableName 表名:{{=it.entity.defKey}},{{=it.entity.defName}}。\n// 说明:{{=it.entity.comment}}\nfunc (ZentaoUserInfo) TableName() string {\n\treturn \"{{=it.entity.defKey}}\"\n}\n\n{{\n\nfunction formatGoLang(str, fieldName, field, fileds, emptLength, isFiled) {\n var maxLength = 0;\n\n if (isFiled == 1) {\n for (var i = 0; i < fileds.length; i++) {\n if (getBlength(it.func.camel(fileds[i].defKey, true)) > maxLength) {\n maxLength = getBlength(it.func.camel(fileds[i].defKey, true)) + 2;\n }\n }\n } else if (isFiled == 2) {\n for (var i = 0; i < fileds.length; i++) {\n var newStr = \"gorm:column:\" + fileds[i].defKey + \" json:\" + it.func.camel(fileds[i].defKey, true);\n if (getBlength(newStr) > maxLength) {\n maxLength = getBlength(newStr) + 2;\n }\n }\n var empt = \"\";\n var strLength = getBlength(str);\n if (field.primaryKey) {\n strLength += getBlength(\"primaryKey;\");\n }\n for (var j = 0; j < maxLength - strLength; j++) {\n empt += ' ';\n }\n return empt;\n } else if (isFiled == 3) {\n /*获取某个字段的最大长度*/\n for (var i = 0; i < fileds.length; i++) {\n var newStr = eval(\"fileds[\" + i + \"].\" + fieldName);\n if (getBlength(newStr) > maxLength) {\n maxLength = getBlength(newStr) + 1;\n }\n }\n } else if (isFiled == 4) {\n /*获取某个字段的最大长度*/\n for (var i = 0; i < fileds.length; i++) {\n var newStr = fileds[i].comment + \";\" + fileds[i].defName;\n if (getBlength(newStr) > maxLength) {\n maxLength = getBlength(newStr) + 1;\n }\n }\n }\n else {\n maxLength = emptLength;\n }\n\n var strLength = getBlength(str);\n for (var j = 0; j < maxLength - strLength; j++) {\n str += ' ';\n }\n return str;\n}\n\nfunction getBlength(str) {\n var n = 0;\n for (var i = str.length; i--;) {\n n += str.charCodeAt(i) > 255 ? 2 : 1;\n }\n return n;\n} \n\n}}"},{"applyFor":"BDF457FD-9F98-4AC3-A705-7587B00A3BAB","type":"appCode","struct":"use chrono::{DateTime, Local};\nuse serde::{Deserialize, Serialize};\n$blankline\n/// {{=it.entity.defName}}\n#[derive(Serialize, Deserialize, Debug, Clone)]\n{{ var today=new Date();\n var fullYear=today.getFullYear();\n var month=today.getMonth() + 1;\n var days=today.getDate();\n \n var pkVarName = \"undefinedId\";\n var pkDataType = \"String\";\n it.entity.fields.forEach(function(field){\n if(field.primaryKey){\n pkVarName = it.func.camel(field.defKey,false);\n pkDataType = field[\"type\"];\n return;\n }\n });\n \n var pkgName = it.entity.env.base.nameSpace;\n var beanClass = it.entity.env.base.codeRoot;\n var beanVarName = beanClass.charAt(0).toLowerCase()+beanClass.slice(1);\n \n}}\npub struct {{=beanClass}} {\n {{~it.entity.fields:field:index}}\n {{\n let fieldDateType = field.type;\n if(!field.notNull){\n fieldDateType = 'Option<'+fieldDateType+'>';\n }\n }}/// {{=field.defName}}\n pub {{=it.func.camel(field.defKey,false)}}: {{=fieldDateType}},\n {{~}}\n}\n"},{"applyFor":"56F4B55B-F0B8-4049-9E6B-50B95C1D793A","type":"dbDDL","createTable":"CREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.autoIncrement ? '' : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createView":"CREATE VIEW {{=it.view.defKey}} AS\nSELECT \n{{~it.view.fields:field:index}}\n {{=field.refEntity}}.{{=field.refEntityField}} AS {{=field.defKey}}{{= index < it.view.fields.length-1 ? ',' : ''}}\n{{~}}\nFROM {{~it.view.refEntities:refEntity:index}}{{=refEntity}}{{= index < it.view.refEntities.length-1 ? ',' : ''}}{{~}};\n$blankline","deleteTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};","createIndex":"{{~ it.entity.indexes:index}}\nCREATE {{? index.unique}}UNIQUE {{?}}INDEX {{=index.defKey}} ON {{=it.entity.defKey}}({{ fieldsKeys = index.fields.map(function(field){return field.fieldDefKey}) ; }}{{=it.func.join(...fieldsKeys,',')}});\n{{~}}","deleteIndex":"{{~ it.entity.indexes:index}}\nDROP INDEX {{=index.defKey}} ;\n{{~}}","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* -------------------------------------------------- */\n创建表:\n{{~ createEntities:entity}}\n {{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* -------------------------------------------------- */\n删除表:\n{{~ dropEntities:entity}}\n {{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* -------------------------------------------------- */\n修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n {{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n {{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n {{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n {{?}}{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}\n {{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('\\n\\t建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('\\n\\t解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}\n{{=indexChanged?'\\n\\t更改了索引':''}}\n{{=changed?'\\n\\t更改了属性':''}}\n{{=relaArray.length>0?relaArray.join(''):''}}\n{{~}}\n{{?}}","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push(`ALTER TABLE ${before.defKey} RENAME TO ${after.defKey}`);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n let myText = `COMMENT ON TABLE ${after.defKey} IS '${commentText}'`;\n ret.push(myText);\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldAdded) { \n let ddlItem = `ADD (${field.defKey} ${field.dbType}`;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n let defaultValue = field.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n ddlItem += (' DEFAULT ' + defaultValue);\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n }\n ddlItem += ')';\n ret.push(`${firstDDL} ${ddlItem}`);\n \n /*处理字段注释*/\n let fieldComments = [];\n if(field.defName != null &&field.defName.length>0){\n fieldComments.push(field.defName);\n }\n if(field.comment != null &&field.comment.length>0){\n fieldComments.push(field.comment);\n }\n let commentText = fieldComments.join(';');\n if(commentText != null && commentText.length > 0){\n let commentDDL = `COMMENT ON COLUMN ${entity.data.baseInfo.defKey}.${field.defKey} IS '${commentText}'`;\n ret.push(commentDDL);\n }\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldRemoved) { \n ret.push(`${firstDDL} DROP COLUMN ${field.defKey}`);\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldModified) { \n let changeDDL = '';\n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey !== after.defKey){\n let renameText = `ALTER TABLE ${entity.data.baseInfo.defKey} RENAME COLUMN ${before.defKey} TO ${after.defKey};`;\n ret.push(renameText);\n }\n /*如果没有变化,则不生成变更语句*/\n if(before.dbType === after.dbType \n && before['len'] === after['len'] \n && before.scale === after.scale\n && before.primaryKey === after.primaryKey\n && before.notNull === after.notNull\n && before.autoIncrement === after.autoIncrement\n && before.defaultValue === after.defaultValue){\n continue;\n }\n changeDDL += ('MODIFY ('+after.defKey+'');\n changeDDL += (' '+after.dbType);\n if(after.len>0){\n changeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n changeDDL += (','+after.scale);\n }\n changeDDL += ')';\n }\n let defaultValue = after.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n changeDDL += (' DEFAULT ' + defaultValue);\n }\n \n if(after.notNull){\n changeDDL += ' NOT NULL';\n }\n changeDDL += ')';\n ret.push(`${firstDDL} ${changeDDL};`);\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"},{"applyFor":"483F9346-C99E-4014-A1D2-A554606BD8A3","type":"dbDDL","createTable":"{{let dorisDistributedBy = it.entity.properties['dorisDistributedBy'];\n dorisDistributedBy = dorisDistributedBy?dorisDistributedBy:'请在表的扩展属性中配置[dorisDistributedBy]属性';\n}}CREATE TABLE IF NOT EXISTS {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n `{{=field.defKey}}` {{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}} {{= field.notNull ? 'NOT NULL' : '' }} COMMENT '{{=it.func.join(field.defName,field.comment,';')}}' {{= index < it.entity.fields.length-1 ? ',' : '' }}\n{{~}}\n) COMMENT '{{=it.func.join(it.entity.defName,it.entity.comment,';') }}'\n{{=dorisDistributedBy}} ;\n$blankline\n","createView":"","deleteTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};","createIndex":"","deleteIndex":"","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n\n\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n{{? modifyEntities && modifyEntities.length > 0}}\n/* --------------- 修改表 --------------- */\n{{~ modifyEntities:entity}}\n{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}{{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}{{=indexChanged?'\\n\\t更改了索引':''}}{{=changed?'\\n\\t更改了属性':''}}{{=relaArray.length>0?('\\n\\t'+relaArray.join('\\n\\t')):''}}\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n{{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n{{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n{{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n{{?}}\n{{~}}\n{{?}}\n","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('ALTER TABLE '+before.defKey+' RENAME TO '+after.defKey);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n ret.push('ALTER TABLE '+after.defKey+' COMMENT \\''+commentText+'\\'');\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = 'ALTER TABLE '+entity.data.baseInfo.defKey;\n for (let field of fieldAdded) { \n let ddlItem = 'ADD COLUMN `'+field.defKey+'` '+field.dbType;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n }\n if(field.autoIncrement){\n ddlItem += ' AUTO_INCREMENT';\n }\n if(field.defaultValue){\n ddlItem += (' DEFAULT ' + field.defaultValue);\n }\n ddlItem += (' COMMENT \\''+field.defName+';'+field.comment+'\\'');\n \n if(field.index>0 && field.afterFieldKey){\n ddlItem += (' AFTER '+field.afterFieldKey);\n }\n ret.push(ddlItem);\n }\n return firstDDL+'\\n'+ret.join(',\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = 'ALTER TABLE '+entity.data.baseInfo.defKey;\n for (let field of fieldRemoved) { \n ret.push('DROP '+field.defKey);\n }\n return firstDDL+'\\n'+ret.join(',\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = 'ALTER TABLE '+entity.data.baseInfo.defKey;\n for (let field of fieldModified) { \n let changeDDL = '';\n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey === after.defKey){\n changeDDL += (' MODIFY COLUMN `'+after.defKey+'`');\n }else{\n changeDDL += (' CHANGE COLUMN `'+before.defKey+'` `'+after.defKey+'`');\n }\n changeDDL += (' '+after.dbType);\n if(after.len>0){\n changeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n changeDDL += (','+after.scale);\n }\n changeDDL += ')';\n }\n if(after.notNull){\n changeDDL += ' NOT NULL';\n }\n let defaultValue = '';\n if(after.defaultValue != null && after.defaultValue.length>0){\n defaultValue = (after.defaultValue);\n }else{\n defaultValue = 'NULL';\n }\n if(defaultValue != 'NULL'){\n changeDDL += (' DEFAULT ' + defaultValue);\n }\n\n let comment = after.defName;\n if(after.comment){\n comment = comment + ';' + (after.comment||'');\n }\n if(comment){\n changeDDL += (' COMMENT \\''+comment+'\\';');\n }\n \n ret.push(firstDDL+' '+changeDDL);\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"},{"applyFor":"ABF5836C-0B7C-4007-A41C-F869325E5842","type":"dbDDL","createTable":"DROP TABLE IF EXISTS {{=it.entity.defKey}};\nCREATE TABLE {{=it.entity.defKey}}(\n{{ pkList = [] ; }}\n{{~it.entity.fields:field:index}}\n {{? field.primaryKey }}{{ pkList.push(field.defKey) }}{{?}}\n {{=field.defKey}} {{? field.autoIncrement}}SERIAL{{??}}{{=field.type}}{{?field.len>0}}{{='('}}{{=field.len}}{{?field.scale>0}}{{=','}}{{=field.scale}}{{?}}{{=')'}}{{?}}{{?}}{{= field.notNull ? ' NOT NULL' : '' }}{{= field.defaultValue ? it.func.join(' DEFAULT ',field.defaultValue,' ') : '' }}{{= index < it.entity.fields.length-1 ? ',' : ( pkList.length>0 ? ',' :'' ) }}\n{{~}}\n{{? pkList.length >0 }}\n PRIMARY KEY ({{~pkList:pkName:i}}{{= pkName }}{{= i<pkList.length-1 ? ',' : '' }}{{~}})\n{{?}}\n);\n$blankline\n{{? it.entity.defKey || it.entity.defName}}COMMENT ON TABLE {{=it.entity.defKey}} IS '{{=it.func.join(it.entity.defName,it.entity.comment,';')}}';{{?}}\n{{~it.entity.fields:field:index}}\n{{? field.defName || field.comment}}COMMENT ON COLUMN {{=it.entity.defKey}}.{{=field.defKey}} IS '{{=it.func.join(field.defName,field.comment,';')}}';{{?}}\n{{~}}","createView":"","deleteTable":"","createIndex":"","deleteIndex":"","message":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChanged(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push('代码:'+(before.defKey||'NULL')+'->'+(after.defKey||'NULL'));\n }\n if(before.defName !== after.defName){\n ret.push('显示名称:'+(before.defName||'NULL')+'->'+(after.defName||'NULL'));\n }\n if(before.comment !== after.comment){\n ret.push('说明:'+(before.comment||'NULL')+'->'+(after.comment||'NULL'));\n }\n if(ret.length>0){\n return ' 基本信息:\\n\\t'+ret.join('\\n\\t');\n }\n return '';\n };\n \n function buildAddedDesc(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n \n for (let field of fieldAdded) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildRemovedDesc(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n \n for (let field of fieldRemoved) { \n let row = [];\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n \n function buildModifiedDesc(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n for (let field1 of fieldModified) { \n let row = [];\n let field = field1.before;\n row.push(field.defKey+'['+field.defName+']');\n ret.push(row.join(\"\"))\n }\n return ret;\n };\n}}\n\n\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=entity.data.defKey}}[{{=entity.data.defName}}]\n{{~}}\n{{?}}\n\n{{? modifyEntities && modifyEntities.length > 0}}\n/* --------------- 修改表 --------------- */\n{{~ modifyEntities:entity}}\n{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]{{let changeText=baseChanged(entity.data.baseChanged);}}\n{{=baseChanged(entity.data.baseChanged)}}\n {{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n 修改字段:\n {{='\\t'}}{{=buildModifiedDesc(entity).join('\\n\\t')}}{{?}}{{\n /*计算是否调整了属性*/\n let propAdded = entity.data.propAdded || [];\n let propRemoved = entity.data.propRemoved || [];\n let propModified = entity.data.propModified || [];\n let changed = propAdded.length>0 || propRemoved.length>0 || propModified.length>0;\n /*计算关联是否调整*/\n let refEntityAdd = entity.data.refEntityAdd || [];\n let refEntityRemoved = entity.data.refEntityRemoved || [];\n let relaArray = [];\n for (let rela of refEntityAdd) {\n relaArray.push('建立关联:'+rela.defKey+'['+rela.defName+']');\n }\n for (let rela of refEntityRemoved) {\n relaArray.push('解除关联:'+rela.defKey+'['+rela.defName+']');\n }\n /*索引是否修改过*/\n let indexChanged = entity.data.indexChanged;\n }}{{=indexChanged?'\\n\\t更改了索引':''}}{{=changed?'\\n\\t更改了属性':''}}{{=relaArray.length>0?('\\n\\t'+relaArray.join('\\n\\t')):''}}\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n 添加字段:\n{{='\\t'}}{{=buildAddedDesc(entity).join('\\n\\t')}}\n{{?}}{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n 删除字段:\n{{='\\t'}}{{=buildRemovedDesc(entity).join('\\n\\t')}}\n{{?}}\n{{~}}\n{{?}}","update":"{{\n let createEntities = it.changes.filter(function(row){return (row.opt==='add'&&row['type']==='entity');});\n let dropEntities = it.changes.filter(function(row){return (row.opt==='delete'&&row['type']==='entity');});\n let modifyEntities = it.changes.filter(function(row){return (row.opt==='update'&&row['type']==='entity');});\n \n function baseChangedDDL(beforeAfter){\n if(beforeAfter == null){\n return '';\n }\n let ret = [];\n let before = beforeAfter.before || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n let after = beforeAfter.after || {\"defKey\":\"\",\"defName\":\"\",\"comment\":\"\"};\n if(before.defKey !== after.defKey){\n ret.push(`ALTER TABLE ${before.defKey} RENAME TO ${after.defKey}`);\n }\n let commentText = '';\n let commentChanged = false;\n if(before.defName !== after.defName){\n commentText = after.defName;\n commentChanged = true;\n }\n if(before.comment !== after.comment){\n commentChanged = true;\n if(commentText){\n commentText = (commentText+ ';'+after.comment)\n }else{\n commentText = after.comment\n }\n }\n if(commentChanged){\n let myText = `COMMENT ON TABLE ${after.defKey} IS '${commentText}'`;\n ret.push(myText);\n }\n let baseText = '-- 基本信息:\\n';\n return baseText+ret.join(';\\n')+';';\n };\n \n function buildAddedDDL(entity){\n let ret = [];\n let fieldAdded = entity.data.fieldAdded||[];\n if(fieldAdded.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldAdded) { \n let ddlItem = `ADD COLUMN ${field.defKey} ${field.dbType}`;\n /*处理数据类型长度*/\n if(field.len>0){\n ddlItem += ('('+field.len);\n if(parseInt(field.scale)>0){\n ddlItem += (','+field.scale);\n }\n ddlItem += ')';\n }\n if(field.notNull){\n ddlItem += ' NOT NULL';\n } \n let defaultValue = field.defaultValue;\n defaultValue = (defaultValue==null)?\"\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n ddlItem += (' DEFAULT ' + defaultValue);\n }\n\n ret.push(`${firstDDL} ${ddlItem}`);\n \n /*处理字段注释*/\n let fieldComments = [];\n if(field.defName != null &&field.defName.length>0){\n fieldComments.push(field.defName);\n }\n if(field.comment != null &&field.comment.length>0){\n fieldComments.push(field.comment);\n }\n let commentText = fieldComments.join(';');\n if(commentText != null && commentText.length > 0){\n let commentDDL = `COMMENT ON COLUMN ${entity.data.baseInfo.defKey}.${field.defKey} IS '${commentText}'`;\n ret.push(commentDDL);\n }\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildRemovedDDL(entity){\n let ret = [];\n let fieldRemoved = entity.data.fieldRemoved||[];\n if(fieldRemoved.length == 0){\n return '';\n }\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldRemoved) { \n ret.push(`${firstDDL} DROP COLUMN ${field.defKey}`);\n }\n return '\\n'+ret.join(';\\n');\n };\n \n function buildModifiedDDL(entity){\n let ret = [];\n let fieldModified = entity.data.fieldModified||[];\n \n let firstDDL = `ALTER TABLE ${entity.data.baseInfo.defKey}`;\n for (let field of fieldModified) { \n let before = field.before || {};\n let after = field.after || {};\n if(before.defKey !== after.defKey){\n let renameText = `ALTER TABLE ${entity.data.baseInfo.defKey} RENAME COLUMN ${before.defKey} TO ${after.defKey};`;\n ret.push(renameText);\n }\n /*如果没有变化,则不生成变更语句*/\n if(before.dbType === after.dbType \n && before['len'] === after['len'] \n && before.scale === after.scale\n && before.primaryKey === after.primaryKey\n && before.notNull === after.notNull\n && before.autoIncrement === after.autoIncrement\n && before.defaultValue === after.defaultValue){\n continue;\n }\n if(before.dbType !== after.dbType || before.len !== after.len || before.scale !== after.scale){\n let dbTypeDDL = `ALTER TABLE ${entity.data.baseInfo.defKey} ALTER COLUMN ${after.defKey} TYPE ${before.dbType}`;\n if(after.len>0){\n dbTypeDDL += ('('+after.len);\n if(parseInt(after.scale)>0){\n dbTypeDDL += (','+after.scale);\n }\n dbTypeDDL += ')';\n }\n ret.push(dbTypeDDL+';');\n }\n \n if(before.defaultValue !== after.defaultValue){\n let defaultDDL = '';\n let defaultValue = after.defaultValue;\n defaultValue = (defaultValue==null)?\"NULL\":(\"\"+defaultValue);\n if(defaultValue.length>0){\n defaultDDL += ('SET DEFAULT ' + defaultValue);\n }\n let defaultTpl = `ALTER TABLE ${entity.data.baseInfo.defKey} ALTER COLUMN ${defaultDDL};`;\n ret.push(defaultTpl);\n }\n \n if(before.notNull !== after.notNull){\n let notNullDDL= 'SET NULL';\n if(after.notNull){\n let notNullDDL= 'SET NOT NULL';\n }\n let notNullTpl = `ALTER TABLE ${entity.data.baseInfo.defKey} ALTER COLUMN ${notNullDDL};`;\n ret.push(notNullTpl);\n }\n }\n return ret;\n };\n}}\n{{? createEntities && createEntities.length > 0}}\n/* --------------- 创建表 --------------- */\n{{~ createEntities:entity}}\n{{=it.func.createDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? dropEntities && dropEntities.length > 0}}\n/* --------------- 删除表 --------------- */\n{{~ dropEntities:entity}}\n{{=it.func.dropDDL(entity.data,entity['type'])}}\n{{~}}\n{{?}}\n\n\n{{? modifyEntities && modifyEntities.length > 0}}\n{{~ modifyEntities:entity}}\n/* --------------- 修改表 --------------- */\n-- 修改表:{{=entity.data.baseInfo.defKey}}[{{=entity.data.baseInfo.defName}}]\n{{=baseChangedDDL(entity.data.baseChanged)}}\n{{? entity.data.fieldModified && entity.data.fieldModified.length > 0}}\n-- 修改字段:\n{{=buildModifiedDDL(entity).join('\\n')}}\n{{?}}{{\n/*索引是否修改过*/\nlet indexChanged = entity.data.indexChanged;\n}}\n{{? indexChanged }}\n-- 索引重建\n{{=it.func.indexRebuildDDL(entity.data.baseInfo,entity.data.newIndexes,entity.data.fullFields,entity['type'])}}\n{{?}}\n\n{{? entity.data.fieldAdded && entity.data.fieldAdded.length > 0}}\n-- 添加字段:\n{{=buildAddedDDL(entity)}};\n{{?}}\n\n{{? entity.data.fieldRemoved && entity.data.fieldRemoved.length > 0}}\n-- 删除字段:\n{{=buildRemovedDDL(entity)}};\n{{?}}\n{{~}}\n{{?}}"}],"generatorDoc":{"docTemplate":""},"relationFieldSize":"15","uiHint":[{"defKey":"Input","defName":"普通输入框","id":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"Select","defName":"下拉输入框","id":"FB111359-2B73-4443-926C-08A98E446448"},{"defKey":"CheckBox","defName":"复选框","id":"0CB8A6C9-1115-4FC0-B51E-5C028065082F"},{"defKey":"RadioBox","defName":"单选框","id":"5C04987A-260F-4B7C-A5D5-22A181AAE9CA"},{"defKey":"Double","defName":"小数输入","id":"8D5BAFE4-E15C-4707-A047-8EE59C58E70F"},{"defKey":"Integer","defName":"整数输入","id":"9999AF2A-A44E-415C-A2DC-D7C613BD0073"},{"defKey":"Money","defName":"金额输入","id":"2B0C3D0C-7BAF-4B36-81AD-9362B5E5DC2E"},{"defKey":"Date","defName":"日期输入","id":"E4D94E14-F695-487F-AFC2-4D888009B7DA"},{"defKey":"DataYearMonth","defName":"年月输入","id":"936927E3-DD2D-4096-87FD-074CDE278D59"},{"defKey":"Text","defName":"长文本输入","id":"D89DD4F1-ADAC-4469-BF8D-B3FF41AE7963"},{"defKey":"RichText","defName":"富文本输入","id":"C134EB1F-4CFF-49E0-882F-2C6FB275CB20"}],"headers":[{"refKey":"defKey","hideInGraph":false,"value":"字段代码","freeze":false},{"refKey":"defName","hideInGraph":false,"value":"显示名称","freeze":false},{"refKey":"primaryKey","hideInGraph":false,"value":"主键","freeze":false},{"refKey":"notNull","hideInGraph":true,"value":"不为空","freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"value":"自增","freeze":false},{"refKey":"domain","hideInGraph":true,"value":"数据域","freeze":false},{"refKey":"type","hideInGraph":false,"value":"数据类型","freeze":false},{"refKey":"len","hideInGraph":false,"value":"长度","freeze":false},{"refKey":"scale","hideInGraph":false,"value":"小数位数","freeze":false},{"refKey":"comment","hideInGraph":true,"value":"说明","freeze":false},{"refKey":"refDict","hideInGraph":true,"value":"数据字典","freeze":false},{"refKey":"defaultValue","hideInGraph":true,"value":"默认值","freeze":false},{"refKey":"isStandard","hideInGraph":false,"value":"标准字段","enable":false,"freeze":false},{"refKey":"uiHint","hideInGraph":true,"value":"UI建议","enable":true,"freeze":false},{"refKey":"extProps","hideInGraph":true,"value":"拓展属性","enable":false,"freeze":false},{"refKey":"attr1","value":"属性1","hideInGraph":true,"enable":true,"freeze":false},{"refKey":"attr2","value":"属性2","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr3","value":"属性3","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr4","value":"属性4","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr5","value":"属性5","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr6","value":"属性6","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr7","value":"属性7","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr8","value":"属性8","hideInGraph":true,"enable":false,"freeze":false},{"refKey":"attr9","value":"属性9","hideInGraph":true,"enable":false,"freeze":false}],"modelType":"modalAll","recentColors":["#d148d1","#ce4bce","#831b83","#dd31dd","#da2fda","#e988e9","#000000","#DDE5FF"],"DDLToggleCase":"L","extAttrProps":{"attr1":{"editType":"","optionsData":"","optionsFetcher":""},"attr2":{"editType":"","optionsData":"","optionsFetcher":""},"attr3":{"editType":"","optionsData":"","optionsFetcher":""},"attr4":{"editType":"","optionsData":"","optionsFetcher":""},"attr5":{"editType":"","optionsData":"","optionsFetcher":""},"attr6":{"editType":"","optionsData":"","optionsFetcher":""},"attr7":{"editType":"","optionsData":"","optionsFetcher":""},"attr8":{"editType":"","optionsData":"","optionsFetcher":""},"attr9":{"editType":"","optionsData":"","optionsFetcher":""}}},"entities":[{"defKey":"SIMS_COLLEGE","defName":"学院","comment":"","properties":{"partitionBy":"","dorisDistributedBy":"DISTRIBUTED BY HASH(`COLLEGE_ID`) BUCKETS 1"},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"freeze":false},{"refKey":"type","hideInGraph":false,"freeze":false},{"refKey":"len","hideInGraph":false,"freeze":false},{"refKey":"scale","hideInGraph":false,"freeze":false},{"refKey":"comment","hideInGraph":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"COLLEGE_ID","defName":"学院ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"9651B83A-2208-4F1E-A870-C3C4E1FAF103","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"COLLEGE_NAME","defName":"学院名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"04BE6748-E056-428D-BFA8-B04F4CE843B3","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"SHORT_NAME","defName":"学院简称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"41E142D0-1539-4E99-83D7-41672E03BFEE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"INTRO","defName":"学院介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"53B857E0-25ED-4666-8437-FD8C68748C85","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PROFESSION_NUMBER","defName":"专业个数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"BDDAC28C-5DF2-4551-9FEA-D956D7C510EA","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"STUDENT_NUMBER","defName":"学生人数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"9993DFC9-B6DD-4A15-9DA5-EE7DEE011A4D","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"PRESIDENT","defName":"院长","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"CC08D659-F79E-4A52-B274-5E07B7533A72","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"8EB6E9A5-6DA4-44DC-8519-E100B189651E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"913C460B-E48B-4563-886B-C0CC71E5A54B","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"3D37BF7C-E283-47DA-870E-002AB6DB6704","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"2B8ED950-CDCE-4323-BD61-CBE0173AE679","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"43FD5A95-5EE1-4316-B708-AC61B32FE9AE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"1868F7F4-8F4D-403D-ABA0-60D89BE37066","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"26B8D13E-BE37-4E20-8496-13A586E84581","indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"},"notes":{}},{"defKey":"SIMS_MAJOR","defName":"专业","comment":"","properties":{"partitionBy":""},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"code":"name","value":"字段代码","newCode":"defKey","com":"Input","relationNoShow":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"code":"chnname","value":"显示名称","newCode":"defName","com":"Input","relationNoShow":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"code":"pk","value":"主键","newCode":"primaryKey","com":"Checkbox","relationNoShow":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"code":"notNull","value":"不为空","newCode":"notNull","com":"Checkbox","relationNoShow":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"code":"autoIncrement","value":"自增","newCode":"autoIncrement","com":"Checkbox","relationNoShow":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"code":"type","value":"数据域","newCode":"domain","com":"Select","relationNoShow":false,"freeze":false},{"refKey":"type","hideInGraph":false,"code":"dataType","value":"数据类型","newCode":"type","com":"Text","relationNoShow":true,"freeze":false},{"refKey":"len","hideInGraph":false,"code":"len","value":"长度","newCode":"len","com":"Input","relationNoShow":true,"freeze":false},{"refKey":"scale","hideInGraph":false,"code":"scale","value":"小数位数","newCode":"scale","com":"Input","relationNoShow":true,"freeze":false},{"refKey":"comment","hideInGraph":true,"code":"remark","value":"说明","newCode":"remark","com":"Input","relationNoShow":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"code":"refDict","value":"数据字典","newCode":"refDict","com":"SearchSelect","relationNoShow":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"code":"defaultValue","value":"默认值","newCode":"defaultValue","com":"Input","relationNoShow":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"MAJOR_ID","defName":"专业ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"8707AEB9-3EC5-4EEA-9E14-99BAF28B46B4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MAJOR_NAME","defName":"专业名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"3577A78C-D13B-416D-8026-E2CED2929199","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"SHORT_NAME","defName":"专业简称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"C2157568-FF44-4BE8-A231-5B98E50DFCEE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ESTAB_DATE","defName":"开设日期","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","refDict":"","uiHint":"","id":"52DCCDBE-1220-4AF6-A7B6-F7CCE61114CB","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"INTRO","defName":"专业介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"61C9D879-BD45-408A-BAEC-577E220D67A2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TUITION_FEE","defName":"学费","comment":"","len":24,"scale":8,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"C3B1681B-99F9-4818-9E80-DE1652A51D85","type":"DECIMAL","refDict":"","uiHint":"","id":"5B5A5E16-AC5E-4184-B561-AEF2D381C898","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"2618820B-865E-4C80-BFEA-50AD5FB1D5D6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"E3CDC9C7-9DDD-46C4-A617-D253C745E5C7","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"9BFE70DA-2B5E-4443-A792-CD9F7B200D35","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"660F4ED1-87F4-4C4A-BEA9-E744A2C0CA51","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"96E1502E-EA6D-4D86-8782-92D6AC604CA9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"3B7186B6-989F-4C9F-B8ED-F36D20713363","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"C2F51B91-7C24-4CB4-8406-706F4851EB0B","indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_CLASS","defName":"班级","comment":"","properties":{"partitionBy":""},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"freeze":false},{"refKey":"type","hideInGraph":false,"freeze":false},{"refKey":"len","hideInGraph":false,"freeze":false},{"refKey":"scale","hideInGraph":false,"freeze":false},{"refKey":"comment","hideInGraph":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"COLLEGE_ID","defName":"所在学院","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"D793F097-1364-49FD-B02C-D4EBBA5A055A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MAJOR_ID","defName":"所属专业ID","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"63130D1B-63C8-491C-B36D-5603A30BFB37","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_ID","defName":"班级ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"6D6BC6AA-8114-4B91-8A2C-4B5FEACEB347","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_NAME","defName":"班级名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"782EC244-02B2-4661-BC21-615F7A468BA8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_NUMBER","defName":"班级人数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"85A3FDFD-6131-42F4-A85E-4509E2F81458","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"ADVISER","defName":"辅导员","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"6BB204C7-1363-4EB4-94B3-555F47C28754","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ESTAB_DATE","defName":"成立时间","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","refDict":"","uiHint":"","id":"54763240-9F13-4490-99D7-CCC0F86A110E","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"YEAR_NUMBER","defName":"学习年数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"118E8C4B-0630-4DCD-96C3-186D0AC6FC66","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"9484FAE7-B93C-451B-859B-F7563E218A92","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"45833E99-76D8-483A-B303-DC4C1699DCAE","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"71FAA0D7-FC33-4FE7-A8A2-E9C4BBDB7EDD","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"18F2D7E1-428D-4138-9990-D7FDF7D34D34","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"B6DA6C8A-2FF6-4759-B610-D5374035FEBE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"1DAB3A13-B7D2-46AD-8DE1-89DA5ADDB3DE","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"C698249E-307D-4087-9EC4-3BABCFC00660","indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_STUDENT","defName":"学生","comment":"","properties":{"partitioned by":"(region string,reg_date string)","row format delimited":"","fields terminated by":"','","collection items terminated by":"'-'","dorisDistributedBy":"DISTRIBUTED BY HASH(STUDENT_ID) BUCKETS 32"},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true,"code":"relationNoShow","value":"关系图","newCode":"hideInGraph","com":"Icon","relationNoShow":true},{"refKey":"defKey","hideInGraph":false,"freeze":true,"code":"name","value":"字段代码","newCode":"defKey","com":"Input","relationNoShow":false},{"refKey":"defName","hideInGraph":false,"freeze":true,"code":"chnname","value":"显示名称","newCode":"defName","com":"Input","relationNoShow":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false,"code":"pk","value":"主键","newCode":"primaryKey","com":"Checkbox","relationNoShow":false},{"refKey":"notNull","hideInGraph":true,"freeze":false,"code":"notNull","value":"不为空","newCode":"notNull","com":"Checkbox","relationNoShow":true},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false,"code":"autoIncrement","value":"自增","newCode":"autoIncrement","com":"Checkbox","relationNoShow":true},{"refKey":"domain","hideInGraph":true,"freeze":false,"code":"type","value":"数据域","newCode":"domain","com":"Select","relationNoShow":true},{"refKey":"type","hideInGraph":false,"freeze":false,"code":"dataType","value":"数据类型","newCode":"type","com":"Text","relationNoShow":false},{"refKey":"len","hideInGraph":false,"freeze":false,"code":"len","value":"长度","newCode":"len","com":"Input","relationNoShow":false},{"refKey":"scale","hideInGraph":false,"freeze":false,"code":"scale","value":"小数位数","newCode":"scale","com":"Input","relationNoShow":false},{"refKey":"comment","hideInGraph":true,"freeze":false,"code":"remark","value":"说明","newCode":"comment","com":"Input","relationNoShow":true},{"refKey":"refDict","hideInGraph":true,"freeze":false,"code":"refDict","value":"数据字典","newCode":"refDict","com":"SearchSelect","relationNoShow":true},{"refKey":"defaultValue","hideInGraph":true,"freeze":false,"code":"defaultValue","value":"默认值","newCode":"defaultValue","com":"Input","relationNoShow":true},{"refKey":"isStandard","hideInGraph":false,"freeze":false,"code":"isStandard","value":"标准字段","newCode":"isStandard","com":"label","relationNoShow":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true,"code":"uiHint","value":"UI建议","newCode":"uiHint","com":"Select","relationNoShow":true},{"refKey":"extProps","hideInGraph":true,"freeze":false,"code":"extProps","value":"拓展属性","newCode":"extProps","com":"linkButton","relationNoShow":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"COLLEGE_ID","defName":"所在学院ID","comment":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","refDict":"","uiHint":"","id":"84ADFE5C-3750-4E38-AC46-7AD11E869B41","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_ID","defName":"所在班级ID","comment":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","refDict":"","uiHint":"","id":"1BCE9672-14BA-4B2B-B8C6-222CC6CF0F61","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_ID","defName":"学生ID","comment":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","refDict":"","uiHint":"","id":"5FAE5CA5-B7A6-40C3-878D-1BB3D4A45B5C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_NAME","defName":"学生姓名","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"51D4FD5A-9EFB-4318-A5D6-6317D630D043","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ENG_NAME","defName":"英文名","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"","refDict":"","uiHint":"","id":"6A9A2D74-E294-497E-8A0F-0DF671A7F4EE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ID_CARD_NO","defName":"身份证号","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"47AEF665-86ED-40A2-88DB-79BF561CCE32","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MOBILE_PHONE","defName":"手机号","comment":"11位手机号","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"8D412D1B-5BE4-4031-8293-EE7EA4E65BCE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"GENDER","defName":"性别","comment":"性别说明","len":"32","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"'M'","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D","type":"VARCHAR","uiHint":"","id":"C1960E6F-08D3-4773-BF97-57AB8D86FD5C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MONTHLY_SALARY","defName":"月薪","comment":"","len":24,"scale":6,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"C3B1681B-99F9-4818-9E80-DE1652A51D85","type":"DECIMAL","refDict":"","uiHint":"","id":"7D073DAB-3675-40A5-BDA5-E6D6F0B75CA7","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"},{"defKey":"BIRTH","defName":"出生日期","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","refDict":"","uiHint":"","id":"F705D168-2A65-4C82-8135-DDC85032F855","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"AVATAR","defName":"头像","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"F5F7AACF-2046-4879-9095-098FD2020E9A","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"HEIGHT","defName":"身高","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"050036B4-0F46-4E58-9375-805208E87A71","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"WEIGHT","defName":"体重","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"AB6E2104-5A5C-4B24-8C27-BF9082C87004","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"NATION","defName":"名族","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'01'","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"115EDEFC-0323-410E-81AB-CCAB8879837A","type":"VARCHAR","uiHint":"","id":"60841340-4D1A-4366-B8CC-CCE3B009DD87","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"POLITICAL","defName":"政治面貌","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"06EED564-BBA9-4747-8D73-AF809A330CB8","type":"VARCHAR","uiHint":"","id":"BD431E79-93A8-4FB7-83D4-046DA0A54F76","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MARITAL","defName":"婚姻状况","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'UNMARRIED'","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"EA1587B7-3954-437A-BFE0-FCB0453BCABA","type":"VARCHAR","uiHint":"","id":"1BE185DC-216C-4264-A594-9FC766DD8F82","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_PROVINCE","defName":"籍贯(省)","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"59F27EDC-6256-4778-9F80-17027C3FA2CA","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_CITY","defName":"籍贯(市)","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"2D97524F-666A-4E6D-89B5-44598FEDE0FF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_ADDRESS","defName":"户籍地址","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"AB597B75-9A96-4A23-ACB5-44ACF237AFA0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"HOBBY","defName":"爱好","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"8D847450-A7A0-4DA4-AF6D-0890CF77C4A6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"INTRO","defName":"简要介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"1BFC4737-B5E1-4FD2-8388-C027B604EEC7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PRESENT_ADDRESS","defName":"居住地址","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"DDD1F108-23F0-4754-805E-E01F0129DFFF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"EMAIL","defName":"电子邮件","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"40AFC519-70CE-4477-A1AD-0A44A3A591C5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ENTRY_DATE","defName":"入学日期","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","refDict":"","uiHint":"","id":"35AD45EE-6BCF-4D86-8EDB-F49037D746CA","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"STATUS","defName":"状态","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'Normal'","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"4642BC5F-02EE-4E17-A60C-CF22F86A0282","type":"VARCHAR","uiHint":"","id":"82343970-31F4-4457-A2F8-876B058FED17","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"8BB51B25-9448-4415-B11C-E698B873C8F2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"7188C7FB-468C-4C26-8368-70425DB901C1","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"44F67AB1-1058-4098-8BA9-709A25F74F69","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"sysdate","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"674F8100-E364-40E0-817B-EE3A41BF45C5","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"35782438-EA32-47AA-955C-1B2AD50F8E7A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"41AFEC1A-F0E0-4BD9-8F72-BF3DF29B7B7C","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[{"defKey":"IDX_SMIS_STUDENT_01","defName":null,"unique":false,"comment":"","fields":[{"fieldDefKey":"51D4FD5A-9EFB-4318-A5D6-6317D630D043","ascOrDesc":"A","id":"417852EB-4D7B-4D09-8916-1C4B88B7D3D4"},{"fieldDefKey":"6A9A2D74-E294-497E-8A0F-0DF671A7F4EE","ascOrDesc":"A","id":"933B0DD4-ACE2-4B93-964F-795F3AF35BB7"}],"id":"72F8D1D3-4C8E-4FE1-9676-8E56FC1A3652"},{"defKey":"IDX_SMIS_STUDENT_CERT","defName":null,"unique":false,"comment":"","fields":[{"fieldDefKey":"47AEF665-86ED-40A2-88DB-79BF561CCE32","ascOrDesc":"A","id":"407B309C-7A25-415D-A265-E443EDA5A897"}],"id":"3EE040D0-4E06-4834-899B-C6B1FB304019"}],"id":"0FC9DB49-4FDB-437E-83E9-7EE803F1CC84","notes":{},"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_TEACHER","defName":"教师","comment":"","properties":{"partitionBy":"","dorisDistributedBy":"DISTRIBUTED BY HASH(TEACHER_ID) BUCKETS 32"},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"freeze":false},{"refKey":"type","hideInGraph":false,"freeze":false},{"refKey":"len","hideInGraph":false,"freeze":false},{"refKey":"scale","hideInGraph":false,"freeze":false},{"refKey":"comment","hideInGraph":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"COLLEGE_ID","defName":"所在学院ID","comment":"","len":32,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"EFD22F94-E1D0-4CAD-947D-E856A997D7B5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TEACHER_ID","defName":"教师ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"C5916046-F140-4B0C-BF84-EBD7DDB38EAA","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TEACHER_NAME","defName":"姓名","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"EAA04B36-6088-4677-8694-DE53A75DE0AD","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"GENDER","defName":"性别","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'M'","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D","type":"VARCHAR","uiHint":"","id":"1F013EA0-19A0-45DB-9801-9F6D8E206B76","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BIRTH","defName":"出生日期","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","refDict":"","uiHint":"","id":"86F51625-13F1-42F3-9414-CA3108880DAE","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"GRADUATE_INSTITUTION","defName":"毕业院校","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"C10DFCF8-3EC4-4B85-BAA7-ACEC989D842F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PRACTICE_YEARS","defName":"从业年限","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"D789B585-FFD8-440E-BEE2-46FB298F49A7","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"POLITICAL","defName":"政治面貌","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"06EED564-BBA9-4747-8D73-AF809A330CB8","isStandard":true,"type":"VARCHAR","uiHint":"","id":"569930CE-0BF2-412B-87B1-131FEF19F0E9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MARITAL","defName":"婚姻状况","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'UNMARRIED'","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"EA1587B7-3954-437A-BFE0-FCB0453BCABA","isStandard":true,"type":"VARCHAR","uiHint":"","id":"68CDDFDD-3B15-4797-BEF9-519D3D67FEDD","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"AVATAR","defName":"头像","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"CDB182D2-3DE7-4661-AFEE-FA2ADF2437AF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"INTRO","defName":"介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"69530973-3EC7-4A60-A685-01D4782D3AF4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"A3D6FC1B-32DE-4D6B-BD54-B21408409AA9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"938DCFBD-1497-43A4-AFD4-F4C3FACC9227","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"39A27481-D4F9-47DB-961E-0E4483589B72","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"2D819E14-1585-4F45-B7AE-6E67FAF5A927","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"681DBA6D-A86C-44C4-A7B5-8E83FF22F78D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"7376A655-992A-4C94-BAFC-494DA519737D","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"536B8B19-C2B3-45D1-ADA8-402C0083FC31","indexes":[],"notes":{},"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_LESSON","defName":"课程","comment":"","properties":{"partitionBy":""},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"freeze":false},{"refKey":"type","hideInGraph":false,"freeze":false},{"refKey":"len","hideInGraph":false,"freeze":false},{"refKey":"scale","hideInGraph":false,"freeze":false},{"refKey":"comment","hideInGraph":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"LESSON_ID","defName":"课程ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"3D337B5E-182D-45C7-9752-E2DD4D7CF2BD","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"LESSON_NAME","defName":"课程名","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"4ECC9FC7-C811-492C-96E3-47C16AFB500A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"INTRO","defName":"课程说明","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"CCCF9A57-4961-4239-9C04-640F56A2B1C1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"HOURS","defName":"学时","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"E76DF7AC-75A3-485A-8622-D851D8ACD418","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"SCORE","defName":"学分","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"4AE396AA-8851-4031-9CA3-272E0823298F","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"C86A2449-A8A2-4891-88E0-0E54B799BDD7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"CFABB61A-ED91-4F0A-AF2F-5292F2F509DA","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"D3CF6A33-7127-49B9-92DB-72A36639DFDC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"3BEDED99-A539-485E-BA83-20660B129B3A","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"CCDB961E-09C0-49E9-89BE-21B17588DF53","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"DCD8E749-4B83-42DB-A65A-694C927E2824","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"9095C2A1-EF4C-4357-AAB2-26F99C1845CA","indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_INSTRUCT","defName":"授课","comment":"","properties":{"partitionBy":""},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"freeze":false},{"refKey":"type","hideInGraph":false,"freeze":false},{"refKey":"len","hideInGraph":false,"freeze":false},{"refKey":"scale","hideInGraph":false,"freeze":false},{"refKey":"comment","hideInGraph":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"INSTRUCT_ID","defName":"授课号","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"EBB91947-AC9D-426E-B38E-5EE460002796","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_ID","defName":"班级ID","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"A23704D2-7128-41A2-988C-D20CB984FA83","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"LESSON_ID","defName":"课程号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"AE73CBE3-577D-4457-8987-5BEFDECAEED9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TEACHER_ID","defName":"教师ID","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"E50C225A-7597-47DB-9057-878F1B491F21","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"D6AFA91F-9A45-44E5-9907-7EBD9253B598","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"5CE25044-60C5-4692-85DE-D6928C7103A1","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"D76C1177-91E3-4D45-B61D-F43EDC7D59E8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"D178B020-A55A-4A8A-85E5-611F598031BD","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"3251E42F-8A56-40E7-AE16-F88611EC466A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"AAB91339-8543-4432-B27C-2AB5FFD5D38F","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"1A50AEEB-F956-4275-AE11-5D6F1F471FBE","indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_EXAM","defName":"考试","comment":"","properties":{"partitionBy":""},"headers":[{"refKey":"hideInGraph","hideInGraph":true,"freeze":true},{"refKey":"defKey","hideInGraph":false,"freeze":false},{"refKey":"defName","hideInGraph":false,"freeze":false},{"refKey":"primaryKey","hideInGraph":false,"freeze":false},{"refKey":"notNull","hideInGraph":true,"freeze":false},{"refKey":"autoIncrement","hideInGraph":true,"freeze":false},{"refKey":"domain","hideInGraph":true,"freeze":false},{"refKey":"type","hideInGraph":false,"freeze":false},{"refKey":"len","hideInGraph":false,"freeze":false},{"refKey":"scale","hideInGraph":false,"freeze":false},{"refKey":"comment","hideInGraph":true,"freeze":false},{"refKey":"refDict","hideInGraph":true,"freeze":false},{"refKey":"defaultValue","hideInGraph":true,"freeze":false},{"refKey":"isStandard","hideInGraph":false,"freeze":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"EXAM_ID","defName":"考试记录ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"C5D96022-B0B0-4F9C-B3E1-6E1F69662E9F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"C1","defName":"","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"065DD9CD-ED14-4FDC-8C6B-7FD0C8ACA6B8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_ID","defName":"学生ID","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"0C5A31BB-2855-4BB9-84D1-7E63B37A71E1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"EXAM_NAME","defName":"考试名","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"53CAC6C4-CB01-4D8D-8E01-2912EA85EDD6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"EXAM_SCORE","defName":"考试分数","comment":"","len":24,"scale":"8","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"FF4459C5-6B45-4DBF-8FC0-E06239BC05B4","type":"DECIMAL","refDict":"","uiHint":"","id":"FA59122E-20A1-47EB-9BE9-31F90A029AAD","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"2C59F43F-9649-4789-A44F-7DED0435CAB5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"25143244-C289-446B-8670-BC8C10DA503E","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"632BFB89-3714-4971-834D-61004D3F0ED7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"68E8278F-B0B9-4C76-9B80-0B0E0C1993B6","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"898B48FA-AA9F-48FE-92FD-919EB8C619C8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"D2975854-EE5C-471D-8E14-94D7CC3DB514","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"id":"6B1610FB-364F-4514-95D6-9DDA681BFC61","indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"defKey":"SIMS_CLASS_FEE","defName":"班费","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"headers":[{"freeze":true,"refKey":"hideInGraph","hideInGraph":true},{"freeze":false,"refKey":"defKey","hideInGraph":false},{"freeze":false,"refKey":"defName","hideInGraph":false},{"freeze":false,"refKey":"primaryKey","hideInGraph":false},{"freeze":false,"refKey":"notNull","hideInGraph":true},{"freeze":false,"refKey":"autoIncrement","hideInGraph":true},{"freeze":false,"refKey":"domain","hideInGraph":true},{"freeze":false,"refKey":"type","hideInGraph":false},{"freeze":false,"refKey":"len","hideInGraph":false},{"freeze":false,"refKey":"scale","hideInGraph":false},{"freeze":false,"refKey":"comment","hideInGraph":true},{"freeze":false,"refKey":"refDict","hideInGraph":true},{"freeze":false,"refKey":"defaultValue","hideInGraph":true},{"freeze":false,"refKey":"isStandard","hideInGraph":false},{"freeze":false,"refKey":"uiHint","hideInGraph":true},{"refKey":"extProps","hideInGraph":true,"freeze":false},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"VARCHAR","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"7222587D-6678-44EC-991F-4B5ABC2FCE2B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"977349F1-D737-4E88-B58B-6FD8BEF6F17E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"983BB0C9-941A-4109-BB63-59E99F467709","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"CF34CD2D-E74C-418F-9FCE-83E419CDE22B","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"8F5AF2F8-092F-46B1-86D7-68C965F73395","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"F3CACD53-C52B-4529-8882-9FC94B55B75E","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"id":"9EA974A6-DD40-46E3-AC70-60B992352CF7","type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"D9E6EB3B-AC76-4328-9EB0-C5D290F41B40","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"SIMS_ADMIN","defName":"管理员","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"ADMIN_ID","defName":"管理员ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"B13573FB-B176-4B5F-9855-2CF6685F8EF2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ADMIN_NAME","defName":"管理员用户名","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"6866CE64-DC34-46DB-A2D3-E6E0CAE4DDA2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ADMIN_PASS","defName":"管理员密码","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"4DB03DED-1922-4C31-9FBC-EFB7E67D39F1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"F122952E-B2FC-4361-A3AA-BEDEE792E7DD","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"89C72128-5A66-4EF4-9924-DA510A2332C3","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"645D4A1D-41F6-4D37-931D-0CD61A59A85C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"A8307D70-EDFE-47E5-9101-009ACB1F9D34","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"A650F33B-F07D-4E05-815D-57255C9FACA9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"D055E1C7-B4CD-41F1-BACB-E939BE2A4620","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"257C6900-0A50-414C-9B60-7F738F9E515E","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"LBRA_CATALOG","defName":"图书分类","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"CATALOG_ID","defName":"分类ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"33E8A819-9DA2-488F-A1F8-541B72243646","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CATALOG_NAME","defName":"分类名","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"56C73E09-D6C5-4D84-B287-3B6AB00BF76D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"SORT_NO","defName":"排序号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"8BFDB721-0DF3-42A1-9BA7-4F842511CD90","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PARENT_ID","defName":"上线分类ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"4E8E5F36-58F4-49D7-B63C-6D7570CD5DE9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"1E354530-E0F3-4624-92EB-906A391C49CF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"0323D8A3-E732-4DBF-8C8C-CC4A4CE64EB1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"8D9B8F78-0102-4B74-93DA-80C7DCA60766","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"E5A5E115-D3E3-458B-B839-07B1F0951BD0","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"FDAD8631-2664-4415-A982-FD8636E8EC1D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"54F1DF29-E925-436B-8A3F-0AC35862C8DF","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"FF8A63F6-E481-452B-A7FA-E9C018BF8AF3","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"LBRA_BOOK","defName":"图书","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"BOOK_ID","defName":"图书ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"BCA6B488-AF07-425E-AE93-1244B2016B48","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CATALOG_ID","defName":"分类ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"344C3A1F-0F8A-4E22-A303-7FB8B1AC29E0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ISBN_NO","defName":"ISBN号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"EAD02A72-269A-4205-A535-DC13861D0B10","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BOOK_NAME","defName":"书名","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"0063B236-A624-464A-A88F-32EFD6BA8525","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"AUTHOR","defName":"作者","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"DD281E02-32E7-4CB8-B336-AB19F32EAB6D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PUBLISHER","defName":"出版社","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"59E04364-B70E-43E5-A865-406BA6BFD0CF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"RELEASE_DATE","defName":"出版时间","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"3A5F8F86-94D7-49E6-8783-5A463C0F0C52","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"BOOK_INTRO","defName":"图书简介","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","id":"BAF708D2-1CFE-4E46-BD53-8E03C25D63E7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PAGES","defName":"页数","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","id":"D171FB70-06EF-4B39-8E9C-AAA2153DECA9","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"BAR_CODE","defName":"条码号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"5E7216CE-88D8-43F2-BE26-F6EDE55B81A4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"ED9F01DC-900E-4E3D-91E1-62040AD68DA0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"A17F5B7A-73EF-4A65-9623-6221321AE794","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"4557162C-B4B6-45C3-B06C-565A3C85BDAE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"083054E5-A56E-4736-9D1B-EF375E03B414","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"49743716-553F-4303-B2E7-11EE4BE5C20B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"E70227A9-FDF6-4A11-9168-7B30C4770A9D","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"3FB14F4D-8AF8-4996-A602-2499C8C36804","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"LBRA_READER","defName":"读者","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"READER_ID","defName":"读者号","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"3E0B7708-C130-47AC-9A17-51FE6C0F743A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"READER_NAME","defName":"姓名","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"300419B3-9C1B-4541-B97D-1FB474902DF3","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CERT_TYPE","defName":"证件类型","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","id":"261F8A3F-8E48-4DBF-B696-B96C3DACC760","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CERT_ID","defName":"证件号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"0079C0EA-BF0E-443E-A395-DADA77C43FAC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"READER_LEVEL","defName":"等级","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","id":"928E5A70-4EE1-4ED9-B08B-F9F7CD3FC4C2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BORROW_TIMES","defName":"累计借阅次数","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","id":"C5666B3B-3C96-4F8F-B83B-9FBF843F5B72","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"D5D9BBB9-0E91-4174-A321-E1CEB0E9C160","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"E4C82FBC-618B-49EC-A460-9BFAE1D271D9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"13952BA9-43BC-468E-B3E5-6E93CE7AD152","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"FF44D8F0-CD84-479A-A2AA-34AA9F80E7D7","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"E35AD6AD-4CCF-418F-8370-F5F9237235D7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"7876E634-FB7E-490E-AA7B-0790F0FF6DB6","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"F9AA8CD9-4C8B-4553-97EF-1E9578045AAB","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"LBRA_BORROW","defName":"借阅","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"BORROW_ID","defName":"借阅ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"DFA96013-DC59-486E-BA67-44131A014A23","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BOOK_ID","defName":"图书ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"FE3EC7EA-6645-4CBF-B925-D2795500C38A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"READER_ID","defName":"读者号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"79041A80-EC48-44D7-B6BE-89237082990C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BORROW_TIME","defName":"借出时间","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"F5236A9D-9B95-4297-89E8-D9D4B22A4A14","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"GIVE_BACK_TIME","defName":"归还时间","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"2A4CF470-3CB2-43BE-B3CB-0EBBCBEEFDDF","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"STATUS","defName":"借阅状态","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","id":"8212746C-EF5C-47C8-B2E1-E547E74F341B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"894585C0-202C-4A8B-BA42-CA2703F571DD","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"9027311F-2579-4F19-A669-D4B46CEEB9D2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"912863CA-281F-4403-ADA9-BCFBC9CC3653","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"B363C8B0-918A-4621-9F96-96DFE52AFFC2","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"60731487-FF8C-4D2B-A00C-9AF019EEDC0F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"3F334E0E-4C5B-4A0B-ACBD-6A335401BDCA","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"75EAC40B-A55E-4AF5-8443-D712495FFFBA","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"LBRA_BOOK_DISCUSS","defName":"图书评论","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"DISCUSS_ID","defName":"评论ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"D38F55F3-F214-4642-B907-65178B5A82E1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BORROW_ID","defName":"借阅ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"A7DF9DA2-CFA5-48D4-B242-0A61BDB46807","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BOOK_ID","defName":"图书ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"8F6FF2E6-D53A-4A5A-9262-92076562210F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"READER_ID","defName":"读者号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CDB62FE0-F864-42E4-85C5-EE6554F6FB4B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DISCUSS_TIME","defName":"评论时间","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"F367A7DA-F75B-4FE6-8E03-AC55CB211BB0","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"DISCUSS_CONTENT","defName":"评论内容","comment":"","type":"VARCHAR","len":3000,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"","id":"377FFB96-45F5-4556-B424-92AEAB4BBD9E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DISCUSS_SCORE","defName":"评分值","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"AABFBE9A-E2A9-452A-88B6-A1269149DF14","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"083939B5-C5FB-4365-8E08-EDA01E7819BF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"839FEDC9-4A87-4E7E-B1AF-4D22F62725D5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"FFA5D50A-A075-42C9-A1B9-F97E85314E27","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"A0BB00D0-539A-4EF5-B046-92D97258CB8A","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"7762F457-05EE-4743-81F9-3BDD7A43E8C8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"22159382-D8D1-4C91-BAE7-7D91EA3789EE","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"C1955E97-3C8C-45F0-B0B6-F31E932E9DD7","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"DORM_BUILDING","defName":"宿舍楼","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"COLLEGE_ID","defName":"学院ID","comment":"","type":"VARCHAR","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"75D31F7D-49C6-4A4F-8450-979F72A0AE71","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BUILDING_ID","defName":"宿舍楼ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"E97BE4C2-D43D-4FD9-A844-6FE813CF2F4A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BUILDING_NAME","defName":"宿舍楼名称","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"6426E48A-2E21-4063-BFF9-1B0DF452C5DE","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BUILDING_LOCATION","defName":"宿舍楼位置","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"B2CB3576-4295-432F-8376-D0A39189730E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BUILDING_FLOOR","defName":"宿舍楼层数","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","id":"41681EC7-436E-4165-9415-75BAFC7A2FD7","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"ISSUE_DATE","defName":"建成年份","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"9D1BE0F3-E7AE-4A97-B30E-3B1038E2AC2A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"7020F672-2841-400E-BE2C-C0DD32417B26","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"0287DF26-B7BC-4A09-BEC9-80A7411F6C46","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"1BEDD583-AEC4-4F61-A8DC-2CDF1D25D60D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"2148ECA3-E768-476F-89B3-F0B2907A82E4","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"4DE1D90A-4DCF-45B2-B706-AADD41F369A9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"F17A6987-77D7-4963-8AB2-5CC1F3EC30C6","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"988BEC7C-7D96-464D-925A-8C8D06002059","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"DORM_ROOM","defName":"宿舍房间","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"COLLEGE_ID","defName":"所在学院","comment":"","type":"VARCHAR","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"D017FDFA-2675-4AD2-93E8-3D5D65C076EC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_ID","defName":"班级ID","comment":"","type":"VARCHAR","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"DE48FE20-A9DF-4BE8-840C-C8504A5DD179","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ROOM_ID","defName":"房间ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"938044AB-656B-4219-B1EB-8DC04C684C84","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BUILDING_ID","defName":"宿舍楼ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6E242213-DB03-4880-A138-14EB4958F680","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ROOM_NO","defName":"房间号","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"CACD8C93-33C4-4FF3-9243-44EA63C48475","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BED_SUM","defName":"床位总数","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","id":"59C1A03B-4462-473A-A9D1-2AA5E5FDBF9C","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"BED_OCCUPIED_TOTAL","defName":"已占床位数","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","id":"CB5AADE0-DD7D-4BE6-979B-DB657FF22FA7","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"GENDER","defName":"宿舍性别","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D","extProps":{},"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","id":"F743093E-F5AF-4A91-B96D-EB1B00BA9CE8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ROOM_AREA","defName":"房间面积","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"FF4459C5-6B45-4DBF-8FC0-E06239BC05B4","id":"F4DE6202-1A5D-4404-8145-EDF0F7407DBF","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"85FD6921-042A-4EFB-BA2E-4D06AE9D8677","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"9C30B38C-9E1B-400F-8637-29207714214B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"435D12E6-8EE4-4539-8513-65B81E9CB529","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"A5CAB0B2-4F96-4DAA-A536-55659526FE9E","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"BA6C0553-20AE-4E93-B4B1-829D079737D4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"8A792F17-019C-433A-B8D2-C443C20BCD38","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"23B898D1-6275-4EE8-841F-B419B48B76CE","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"DORM_ASSETS","defName":"财产","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"ASSETS_ID","defName":"资产ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"4DBB5E17-B676-4A4D-BDCF-7E85BF164B37","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ROOM_ID","defName":"房间ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E341F94C-6A3D-41D0-8631-2DD9A815F69C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ASSETS_TYPE","defName":"资产类型","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","id":"6EAA5B40-6335-422F-A28D-CABD682902E1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ASSETS_NO","defName":"资产编码","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","id":"E8551089-46CD-4086-8DA3-71FACAC669FF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ASSETS_NAME","defName":"资产名称","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","id":"216C07D9-5484-4387-AEE2-4A94A40098A6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PURCHASE_PRICE","defName":"采购价格","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"C3B1681B-99F9-4818-9E80-DE1652A51D85","id":"738A407D-CE4A-4448-BDF8-6A18FE8A2A32","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"},{"defKey":"PURCHASE_DATE","defName":"采购日期","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"4221983F-BE33-42B2-8CB6-F6822A89A5BD","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"35260023-D85C-46F0-B1DC-CE58DFB8666E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"CA531B38-AF5D-40B2-86B9-59330ACFD444","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"1D9C3D5E-DB93-4D02-A9F7-BFF11FEF9EBA","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"5A27A255-FB7E-414A-8D38-1BA35312BFC8","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"B8F772C4-1F78-4950-883F-023114D40E93","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"C1BD5903-E7DC-4C62-85E5-D1CB9F4FA44E","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}},{"id":"BC281F44-81F5-48BC-B749-A6CC74A8C524","env":{"base":{"nameSpace":"","codeRoot":""}},"defKey":"DORM_ROOM_MEMBER","defName":"宿舍入住","comment":"","properties":{"partitioned by":"(date string)","row format delimited":"","fields terminated by ','":"","collection items terminated by '-'":"","map keys terminated by ':'":"","store as textfile;":""},"notes":{},"headers":[{"refKey":"hideInGraph","hideInGraph":true},{"refKey":"defKey","freeze":false,"hideInGraph":false},{"refKey":"defName","freeze":false,"hideInGraph":false},{"refKey":"primaryKey","freeze":false,"hideInGraph":false},{"refKey":"notNull","freeze":false,"hideInGraph":true},{"refKey":"autoIncrement","freeze":false,"hideInGraph":true},{"refKey":"domain","freeze":false,"hideInGraph":true},{"refKey":"type","freeze":false,"hideInGraph":false},{"refKey":"len","freeze":false,"hideInGraph":false},{"refKey":"scale","freeze":false,"hideInGraph":false},{"refKey":"comment","freeze":false,"hideInGraph":true},{"refKey":"refDict","freeze":false,"hideInGraph":true},{"refKey":"defaultValue","freeze":false,"hideInGraph":true},{"refKey":"isStandard","freeze":false,"hideInGraph":false},{"refKey":"uiHint","freeze":false,"hideInGraph":true},{"refKey":"extProps","freeze":false,"hideInGraph":true},{"refKey":"attr1","freeze":false,"hideInGraph":true},{"refKey":"attr2","freeze":false,"hideInGraph":true},{"refKey":"attr3","freeze":false,"hideInGraph":true},{"refKey":"attr4","freeze":false,"hideInGraph":true},{"refKey":"attr5","freeze":false,"hideInGraph":true},{"refKey":"attr6","freeze":false,"hideInGraph":true},{"refKey":"attr7","freeze":false,"hideInGraph":true},{"refKey":"attr8","freeze":false,"hideInGraph":true},{"refKey":"attr9","freeze":false,"hideInGraph":true}],"fields":[{"defKey":"ROOM_MEMBER_ID","defName":"入住记录ID","comment":"","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"16120F75-6AA7-4483-868D-F07F511BB081","id":"0567A868-A6B5-4931-B123-34815A928A3F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_ID","defName":"学生ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CE1EDCD2-5137-46FD-8AC2-85F73647DB8D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ROOM_ID","defName":"房间ID","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","extProps":{},"notes":{},"attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E97DB922-A6CD-445C-89FB-2B79E220399C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CHECK_IN_DATE","defName":"入住时间","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"9DC626DD-0105-45E2-943E-4DC7F4DB158F","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"LEAVE_DATE","defName":"离开时间","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","id":"E73C471E-8832-48AF-8132-C16309F66BD7","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"CHECK_STATUS","defName":"住宿状态","comment":"","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","extProps":{},"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","id":"08875A6C-DCD4-46BE-8E36-7CBBC994A5C2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","refDict":"","uiHint":"","id":"4F388808-8C62-44FE-90C8-7A41A82EBDDF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"60B57E21-F87A-4B37-BDD2-4846644E776D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"6CBFD1A0-6AF5-4764-B283-2CACBFF74F5B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"55C7C94A-6F49-4737-AE2A-D334BE11887E","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"13E13C40-5F7E-4A12-AE46-8728F627AB72","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"refDict":"","uiHint":"","id":"0C6463F6-F056-42E8-86E9-38B8A0113D11","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"correlations":[],"indexes":[],"type":"P","sysProps":{"nameTemplate":"{defKey}[{defName}]"}}],"views":[],"dicts":[{"defKey":"Gender","defName":"性别","intro":"","items":[{"defKey":"M","defName":"男","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"1","id":"3622D417-DA1A-408F-BEE1-11D328D534A0"},{"defKey":"F","defName":"女","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"2","id":"380A0790-64A7-481E-831C-32F7BEE1502B"},{"defKey":"U","defName":"未知","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"3","id":"FA239F4D-1276-40D9-B230-F66BD35C3C27"}],"id":"BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D"},{"defKey":"Political","defName":"政治面貌","intro":"","items":[{"defKey":"10","defName":"共青团员","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"61F3145A-7599-4CCB-B298-D5EE788107BE"},{"defKey":"20","defName":"中共党员","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"ED16D25A-AB2F-4FA0-BB48-2B9031FA28C4"},{"defKey":"30","defName":"民主党派","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"0FB7974A-AE11-438F-86E0-B163316F9272"},{"defKey":"40","defName":"群众","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"7D247234-7E97-45B1-8C56-4A17A370854A"},{"defKey":"90","defName":"未知","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"DA65D752-AF04-4A11-81D8-14A38692A64A"}],"id":"06EED564-BBA9-4747-8D73-AF809A330CB8"},{"defKey":"Marital","defName":"婚姻状况","intro":"婚姻状况的码表","items":[{"defKey":"UNMARRIED","defName":"未婚","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"1","id":"20EE81BC-74EE-47DA-A56F-9663B23F44BD"},{"defKey":"MARRIED","defName":"已婚","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"2","id":"4DCA10A8-417E-4A8D-BDF6-0A278C060ADC"},{"defKey":"WIDOWED","defName":"丧偶","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"3","id":"826062A7-057C-4892-B338-06459F5B808D"},{"defKey":"DIVORCE","defName":"离婚","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"4","id":"B23200B4-5E59-4F5E-A779-D981A040FA32"},{"defKey":"UNSPECIFIED","defName":"未说明","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"5","id":"A7928FE2-349A-4702-9682-2EF7205E077B"}],"id":"EA1587B7-3954-437A-BFE0-FCB0453BCABA"},{"defKey":"StudentStatus","defName":"学生状态","intro":"","items":[{"defKey":"Normal","defName":"正常","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"1","id":"E9CA1CC9-8851-4F6B-86BA-B9CF0E44EB73"},{"defKey":"Graduated","defName":"毕业","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"2","id":"DEC51D7C-99DF-430C-817D-0499862D3CCC"},{"defKey":"Studied","defName":"肄业","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"3","id":"8853D6B6-75D3-4479-9006-FC731CD85B20"},{"defKey":"Stop","defName":"休学","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","sort":"4","id":"C74BA8CF-1DC6-4C79-BAAC-F11EB9C6AF01"}],"id":"4642BC5F-02EE-4E17-A60C-CF22F86A0282"},{"defKey":"GBNation","defName":"民族","intro":"","items":[{"defKey":"01","defName":"汉族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"9224DF53-F7C0-447D-B8ED-0A39F799EE19"},{"defKey":"02","defName":"蒙古族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"D57818E3-9206-45BB-AE79-27C64A4AB80F"},{"defKey":"03","defName":"回族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"0A1A3CA9-6D68-4E15-8BD0-9A2FF428D804"},{"defKey":"04","defName":"藏族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"7CC6B6BE-47EA-460E-ACFA-C377468DEA11"},{"defKey":"05","defName":"维吾尔族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"A666D51F-D249-4FAC-B1F3-78C371836CB3"},{"defKey":"06","defName":"苗族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"A0C9E1BA-D87B-4695-ADFA-287FDA32BB5A"},{"defKey":"07","defName":"彝族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"149B5B9E-C1D1-4790-8CCF-0ED5F4B25172"},{"defKey":"08","defName":"壮族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"F9A3E65C-BF4D-4C6B-ADB7-8C9CF0487360"},{"defKey":"09","defName":"布依族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"14F17DE4-E96A-460B-98A6-F84EC8CF9885"},{"defKey":"10","defName":"朝鲜族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"8A81AB18-B1BF-4797-A6E5-DEDB2C6566B0"},{"defKey":"11","defName":"满族","intro":"","parentKey":"","enabled":true,"attr1":"","attr2":"","attr3":"","id":"7D460947-FBD2-4E4D-8366-3B38DCAF09D1"}],"id":"115EDEFC-0323-410E-81AB-CCAB8879837A"},{"defKey":"GradeLevel","defName":"受教育程度","sort":"","intro":"","items":[],"id":"9E7C9788-B805-4C7D-8531-FD1D9DC79B05"}],"viewGroups":[{"defKey":"base","defName":"基础信息","refEntities":["0FC9DB49-4FDB-437E-83E9-7EE803F1CC84","536B8B19-C2B3-45D1-ADA8-402C0083FC31","D9E6EB3B-AC76-4328-9EB0-C5D290F41B40"],"refViews":[],"refDiagrams":[],"refDicts":["BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D","06EED564-BBA9-4747-8D73-AF809A330CB8","EA1587B7-3954-437A-BFE0-FCB0453BCABA","4642BC5F-02EE-4E17-A60C-CF22F86A0282","115EDEFC-0323-410E-81AB-CCAB8879837A","9E7C9788-B805-4C7D-8531-FD1D9DC79B05"],"id":"2DA923AD-EB8E-4D32-BBCE-E3781E01B9F0","refLogicEntities":["2B5E78B5-44FF-4F14-A289-9D533E4F1F3A"]},{"defKey":"course","defName":"教学选课","refEntities":["26B8D13E-BE37-4E20-8496-13A586E84581","C2F51B91-7C24-4CB4-8406-706F4851EB0B","C698249E-307D-4087-9EC4-3BABCFC00660","9095C2A1-EF4C-4357-AAB2-26F99C1845CA","1A50AEEB-F956-4275-AE11-5D6F1F471FBE","6B1610FB-364F-4514-95D6-9DDA681BFC61","9EA974A6-DD40-46E3-AC70-60B992352CF7"],"refViews":[],"refDiagrams":["0D56908B-B619-4D80-A491-DE9808D9FFEB","9427DD89-11C0-431F-9BB0-8353A2725174"],"refDicts":[],"id":"65FC6BC3-1799-4797-BFFD-24BAAFBABC21","refLogicEntities":["D7C484FB-97F8-4528-999D-2DCE5B198023","44179A2E-4E6A-4977-B4D7-455B0ADE5E7E","0BAE44AF-1EC9-46FC-B012-7845A503D9F1"]},{"defKey":"HourRate","defName":"小时率","refEntities":[],"refViews":[],"refDiagrams":[],"refDicts":[],"id":"401851EF-F256-40D3-87FD-420C871DEFFF"},{"defKey":"dorm","defName":"宿舍管理","refEntities":["C1955E97-3C8C-45F0-B0B6-F31E932E9DD7","988BEC7C-7D96-464D-925A-8C8D06002059","23B898D1-6275-4EE8-841F-B419B48B76CE","BC281F44-81F5-48BC-B749-A6CC74A8C524"],"refViews":[],"refDiagrams":[],"refDicts":[],"id":"78EA1BE7-E8DA-4B0C-8EA3-6930F9D08558"}],"dataTypeMapping":{"referURL":"","mappings":[{"defKey":"string","id":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","defName":"字串","29D1CE08-4C35-4D2D-AAA9-23D93305B52E":"VARCHAR","A4E23CB7-BB01-4BD1-9F71-F73F3E15A542":"VARCHAR2","BFC87171-C74F-494A-B7C2-76B9C55FACC9":"VARCHAR","DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022":"VARCHAR","89504F5D-94BF-4C9E-8B2E-44F37305FED5":"VARCHAR","0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307":"VARCHAR2","592C7013-143D-4E7B-AF64-0D7BF1E28230":"VARCHAR","77BD85E5-9D0D-4096-8427-CBA306FC9C6A":"VARCHAR","11D1FB71-A587-4217-89BA-611B8A1F83E0":"STRING","B363BE0B-F852-49B8-9B2E-F6D2174DEAC1":"TEXT","797A1496-D649-4261-89B4-544132EC3F36":"String","895CFD1D-4273-4D32-A2C4-CAC70200AB5B":"String","A2EE7B4A-CE62-4290-B00C-B26C1BF18073":"String","F3AC2415-E86B-40C6-9FEB-F4B7937D2C30":"string","81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2":"string","B91D99E0-9B7C-416C-8737-B760957DAF09":"string","BDF457FD-9F98-4AC3-A705-7587B00A3BAB":"String","56F4B55B-F0B8-4049-9E6B-50B95C1D793A":"VARCHAR","483F9346-C99E-4014-A1D2-A554606BD8A3":"VARCHAR","ABF5836C-0B7C-4007-A41C-F869325E5842":"VARCHAR"},{"defKey":"double","id":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","defName":"小数","29D1CE08-4C35-4D2D-AAA9-23D93305B52E":"DECIMAL","A4E23CB7-BB01-4BD1-9F71-F73F3E15A542":"DECIMAL","BFC87171-C74F-494A-B7C2-76B9C55FACC9":"DECIMAL","DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022":"NUMERIC","89504F5D-94BF-4C9E-8B2E-44F37305FED5":"DECIMAL","0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307":"DECIMAL","592C7013-143D-4E7B-AF64-0D7BF1E28230":"NUMERIC","77BD85E5-9D0D-4096-8427-CBA306FC9C6A":"NUMERIC","11D1FB71-A587-4217-89BA-611B8A1F83E0":"DOUBLE","B363BE0B-F852-49B8-9B2E-F6D2174DEAC1":"REAL","797A1496-D649-4261-89B4-544132EC3F36":"Double","895CFD1D-4273-4D32-A2C4-CAC70200AB5B":"Double","A2EE7B4A-CE62-4290-B00C-B26C1BF18073":"Double","F3AC2415-E86B-40C6-9FEB-F4B7937D2C30":"decimal","81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2":"double","B91D99E0-9B7C-416C-8737-B760957DAF09":"*float64","BDF457FD-9F98-4AC3-A705-7587B00A3BAB":"f64","56F4B55B-F0B8-4049-9E6B-50B95C1D793A":"DECIMAL","483F9346-C99E-4014-A1D2-A554606BD8A3":"DECIMAL","ABF5836C-0B7C-4007-A41C-F869325E5842":"NUMERIC"},{"defKey":"int","id":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","defName":"整数","29D1CE08-4C35-4D2D-AAA9-23D93305B52E":"INT","A4E23CB7-BB01-4BD1-9F71-F73F3E15A542":"INT","BFC87171-C74F-494A-B7C2-76B9C55FACC9":"INT","DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022":"INTEGER","89504F5D-94BF-4C9E-8B2E-44F37305FED5":"INT","0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307":"INTEGER","592C7013-143D-4E7B-AF64-0D7BF1E28230":"INTEGER","77BD85E5-9D0D-4096-8427-CBA306FC9C6A":"INT4","11D1FB71-A587-4217-89BA-611B8A1F83E0":"INT","B363BE0B-F852-49B8-9B2E-F6D2174DEAC1":"INTEGER","797A1496-D649-4261-89B4-544132EC3F36":"Integer","895CFD1D-4273-4D32-A2C4-CAC70200AB5B":"Integer","A2EE7B4A-CE62-4290-B00C-B26C1BF18073":"Integer","F3AC2415-E86B-40C6-9FEB-F4B7937D2C30":"float","81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2":"int","B91D99E0-9B7C-416C-8737-B760957DAF09":"*int","BDF457FD-9F98-4AC3-A705-7587B00A3BAB":"i32","56F4B55B-F0B8-4049-9E6B-50B95C1D793A":"INTEGER","483F9346-C99E-4014-A1D2-A554606BD8A3":"INT","ABF5836C-0B7C-4007-A41C-F869325E5842":"INTEGER"},{"defKey":"date","id":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","defName":"日期","29D1CE08-4C35-4D2D-AAA9-23D93305B52E":"DATETIME","A4E23CB7-BB01-4BD1-9F71-F73F3E15A542":"DATE","BFC87171-C74F-494A-B7C2-76B9C55FACC9":"DATETIME","DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022":"TIMESTAMP","89504F5D-94BF-4C9E-8B2E-44F37305FED5":"DATE","0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307":"DATE","592C7013-143D-4E7B-AF64-0D7BF1E28230":"DATE","77BD85E5-9D0D-4096-8427-CBA306FC9C6A":"DATE","11D1FB71-A587-4217-89BA-611B8A1F83E0":"DATETIME","B363BE0B-F852-49B8-9B2E-F6D2174DEAC1":"NUMERIC","797A1496-D649-4261-89B4-544132EC3F36":"Date","895CFD1D-4273-4D32-A2C4-CAC70200AB5B":"Date","A2EE7B4A-CE62-4290-B00C-B26C1BF18073":"Date","F3AC2415-E86B-40C6-9FEB-F4B7937D2C30":"DateTime","81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2":"timestamp","B91D99E0-9B7C-416C-8737-B760957DAF09":"*time.Time","BDF457FD-9F98-4AC3-A705-7587B00A3BAB":"DateTime<Local>","56F4B55B-F0B8-4049-9E6B-50B95C1D793A":"DATE","483F9346-C99E-4014-A1D2-A554606BD8A3":"DATETIME","ABF5836C-0B7C-4007-A41C-F869325E5842":"DATE"},{"defKey":"bytes","id":"D516E75B-90F5-4741-B9B3-A186A263F04C","defName":"二进制","29D1CE08-4C35-4D2D-AAA9-23D93305B52E":"BLOB","A4E23CB7-BB01-4BD1-9F71-F73F3E15A542":"BLOB","BFC87171-C74F-494A-B7C2-76B9C55FACC9":"VARBINARY","DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022":"BYTEA","89504F5D-94BF-4C9E-8B2E-44F37305FED5":"BLOB","0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307":"BLOB","592C7013-143D-4E7B-AF64-0D7BF1E28230":"BYTEA","77BD85E5-9D0D-4096-8427-CBA306FC9C6A":"BYTEA","11D1FB71-A587-4217-89BA-611B8A1F83E0":"BINARY","B363BE0B-F852-49B8-9B2E-F6D2174DEAC1":"NONE","797A1496-D649-4261-89B4-544132EC3F36":"byte[]","895CFD1D-4273-4D32-A2C4-CAC70200AB5B":"byte[]","A2EE7B4A-CE62-4290-B00C-B26C1BF18073":"byte[]","F3AC2415-E86B-40C6-9FEB-F4B7937D2C30":"binary","81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2":"binary","B91D99E0-9B7C-416C-8737-B760957DAF09":"[]byte","56F4B55B-F0B8-4049-9E6B-50B95C1D793A":"BYTE","ABF5836C-0B7C-4007-A41C-F869325E5842":"BYTEA"},{"defKey":"largeText","id":"B17BDED3-085F-40E1-9019-3B79CF2BF075","defName":"大文本","29D1CE08-4C35-4D2D-AAA9-23D93305B52E":"TEXT","A4E23CB7-BB01-4BD1-9F71-F73F3E15A542":"CLOB","BFC87171-C74F-494A-B7C2-76B9C55FACC9":"TEXT","DFBEC1DD-AA84-456E-BBF3-C95DD0DB2022":"TEXT","89504F5D-94BF-4C9E-8B2E-44F37305FED5":"CLOB","0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307":"CLOB","592C7013-143D-4E7B-AF64-0D7BF1E28230":"TEXT","77BD85E5-9D0D-4096-8427-CBA306FC9C6A":"TEXT","11D1FB71-A587-4217-89BA-611B8A1F83E0":"STRING","B363BE0B-F852-49B8-9B2E-F6D2174DEAC1":"TEXT","797A1496-D649-4261-89B4-544132EC3F36":"String","895CFD1D-4273-4D32-A2C4-CAC70200AB5B":"String","A2EE7B4A-CE62-4290-B00C-B26C1BF18073":"String","F3AC2415-E86B-40C6-9FEB-F4B7937D2C30":"string","81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2":"string","B91D99E0-9B7C-416C-8737-B760957DAF09":"string","BDF457FD-9F98-4AC3-A705-7587B00A3BAB":"String","56F4B55B-F0B8-4049-9E6B-50B95C1D793A":"TEXT","483F9346-C99E-4014-A1D2-A554606BD8A3":"STRING","ABF5836C-0B7C-4007-A41C-F869325E5842":"TEXT"}]},"domains":[{"defKey":"DefaultString","defName":"默认字串","applyFor":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","len":255,"scale":"","uiHint":"","id":"9092C4E0-1A54-4859-ABBB-5B62DBC27573"},{"defKey":"IdOrKey","defName":"主键标识","applyFor":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","len":32,"scale":"","uiHint":"","id":"16120F75-6AA7-4483-868D-F07F511BB081"},{"defKey":"Name","defName":"名称","applyFor":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","len":90,"scale":"","uiHint":"","id":"54611CCC-CA4B-42E1-9F32-4944C85B85A6"},{"defKey":"Int","defName":"整数","applyFor":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","len":"","scale":"","uiHint":"","id":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E"},{"defKey":"Double","defName":"小数","applyFor":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","len":24,"scale":6,"uiHint":"","id":"FF4459C5-6B45-4DBF-8FC0-E06239BC05B4"},{"defKey":"Money","defName":"金额","applyFor":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","len":24,"scale":6,"uiHint":"","id":"C3B1681B-99F9-4818-9E80-DE1652A51D85"},{"defKey":"DateTime","defName":"日期时间","applyFor":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","len":"","scale":"","uiHint":"","id":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC"},{"defKey":"YesNo","defName":"是否","applyFor":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","len":"1","scale":"","uiHint":"","id":"6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF"},{"defKey":"Dict","defName":"数据字典","applyFor":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","len":"32","scale":"","uiHint":"","id":"73FD2BAD-2358-4336-B96D-45DC897BD792"},{"defKey":"DescText","defName":"描述文本","applyFor":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","len":"900","scale":"","uiHint":"","id":"3E948CEC-3070-472C-AF92-F3CA11EC9D15"}],"diagrams":[{"defKey":"逻辑模型","defName":"","relationType":"field","canvasData":{"cells":[{"id":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","shape":"group","position":{"x":-270,"y":410},"label":"### 界面与表关系图","size":{"width":1230,"height":2370},"children":["e6458913-d5bb-4d3e-8194-4e983ee9561b","e9895e8e-4c87-4ca5-9855-3155b08e1e9a","50255b65-de6e-4032-b606-58482a662442","71e702a2-681a-453f-a15e-30ff10e3b439","32dfec65-cfe2-4f80-9f86-6dfd50c2f07f","c306ccee-689c-49cf-a846-ec1e6a451eb7","ff5515d5-21a9-4272-86b2-c984273febc1","ab4a33f9-98c1-4690-87aa-46e590bd7b0c","8e8dd851-2e95-4bd5-8623-645b6e590bab","aa15bf4b-eb5c-4beb-94be-98c9cf34c41a","d9b4230a-9a29-4b06-9bc2-7d0021d99423","a2aac2ea-416f-4c73-81c2-cd1000ccd7fe","d97d6f07-8365-40ab-bde8-34511452e62f","ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","a9ad3011-be3b-45ce-9200-cbd99874e48d","96e751a3-f338-4cc1-937a-b8d1a6acfa1d","db2e0214-00dd-4c58-ba37-627fd8cba8d2","aa201a0f-fd7d-4393-b33a-589fa51f91b6","7f4cc984-aefc-452a-bd22-39ddc3fd7a43","14b1e9e8-3950-432b-9efd-83bfe8ce0d37","bd6cd2f6-55ae-43fd-af6c-22bdbaf96a00","ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","764cbe48-4a33-4752-94a9-67bda1226718","5bed2e45-b438-46cc-8ee1-72eeaa2c78c6","06ca758c-3187-47bd-8136-ca10dd94640b","618b4b29-9294-493c-a017-936480dab763","0077898e-fcf5-4391-9385-7ef9bf86bbdd","920c31db-1dee-45a4-a779-42bf6912698a","5d1c2361-b5a3-4dbf-83e9-9740050240e2","05a08b49-dd32-414f-b203-de78e5bb75f6","2de04ee4-e71b-439e-8d40-efc7d1260d8f","d02e3b30-e595-4736-9679-ce126e667e04","36f0addc-6834-42d7-92eb-4cc834e64671","f4b94c2e-9b4f-4cf4-9e21-061d459e6e9b","b15470f7-eb1d-4844-b03b-04316952e6b7","200cc305-5210-417d-9dfe-459e4abe9ead","f444c309-5c88-4030-9bb3-893214a0a169","fa0f2465-312d-4ace-8004-4abc3ed3b6a7","b0b6d230-8b0f-4f2f-9d2e-b3d8cd88b234","e4c40d33-e4c2-4dea-9413-62f7c9d772db","a710e5e6-632d-4a69-a77b-1d2e08273701","18d4445e-c03f-4d6c-bd8c-52d298508fbe","9015a485-4289-4b5e-925c-5d5dc7851d2e","06ca758c-3187-47bd-8136-ca10dd94640b","96e751a3-f338-4cc1-937a-b8d1a6acfa1d","db2e0214-00dd-4c58-ba37-627fd8cba8d2","db184b6f-8cb3-4bbb-8290-9c5438f9c11b","aa201a0f-fd7d-4393-b33a-589fa51f91b6","182b311f-746e-49c8-8bfa-c0fec449eb2a","a9ad3011-be3b-45ce-9200-cbd99874e48d","ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","7b27855a-7467-439b-b846-fb7a369f80ae","f2344237-4b72-4042-a531-097f8f467b64","5278e0a2-f809-4023-b439-b35ae083a325","182b311f-746e-49c8-8bfa-c0fec449eb2a","db184b6f-8cb3-4bbb-8290-9c5438f9c11b","80e84e01-fbda-4caf-a016-eae9c69aea5f","c306ccee-689c-49cf-a846-ec1e6a451eb7","d9b4230a-9a29-4b06-9bc2-7d0021d99423","ff5515d5-21a9-4272-86b2-c984273febc1"]},{"id":"f2344237-4b72-4042-a531-097f8f467b64","shape":"erdRelation","source":{"cell":"ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","port":"bottom2"},"target":{"cell":"5bed2e45-b438-46cc-8ee1-72eeaa2c78c6","port":"bottom2"},"relation":"none:none","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"id":"7b27855a-7467-439b-b846-fb7a369f80ae","shape":"erdRelation","source":{"cell":"ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","port":"out2"},"target":{"cell":"764cbe48-4a33-4752-94a9-67bda1226718","port":"in2"},"relation":"none:none","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"id":"182b311f-746e-49c8-8bfa-c0fec449eb2a","shape":"erdRelation","source":{"cell":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","port":"out3"},"target":{"cell":"aa201a0f-fd7d-4393-b33a-589fa51f91b6","port":"in3"},"relation":"none:concave","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"id":"db184b6f-8cb3-4bbb-8290-9c5438f9c11b","shape":"erdRelation","source":{"cell":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","port":"out2"},"target":{"cell":"db2e0214-00dd-4c58-ba37-627fd8cba8d2","port":"in3"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"id":"9015a485-4289-4b5e-925c-5d5dc7851d2e","shape":"erdRelation","source":{"cell":"a9ad3011-be3b-45ce-9200-cbd99874e48d","port":"top2"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"bottom2"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","attrs":{"line":{"strokeDasharray":""}}},{"id":"7f4cc984-aefc-452a-bd22-39ddc3fd7a43","shape":"edit-node","position":{"x":430.0000000000107,"y":1699.9999999999927},"label":"### 标准成本结果单行查询\n---\n工厂\n低阶码\n物料编码\n品名\n图号\n规格\n相对用量\n单位\n制造类型\n本阶单位成本\n本阶相对成本\n相对材料成本\n相对人工成本\n相对制费成本\n总标准成本--电子实际\n总标准成本--7525\n本阶材料成本--电子实际\n本阶材料成本-7525\n本阶人工成本\n本阶设备成本\n本阶燃动成本\n本阶辅料成本\n本阶其它成本\n累计材料成本-电子实际\n累计材料成本-7525\n累计人工成本\n累计设备成本\n累计燃动成本\n累计辅料成本\n累计其它成本\n相对材料成本-7525\n相对总成本\n相对总成本-7525\n层级\n版本","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":210,"height":670},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"5bed2e45-b438-46cc-8ee1-72eeaa2c78c6","shape":"edit-node","position":{"x":-70,"y":1360},"label":"### 成本挖掘报告\n---\n对比分析\n原因分析\n","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":110,"height":150},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"e4d93dce-4df5-403b-bd9d-f126fd1cb7ee","shape":"erdRelation","source":{"cell":"ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","port":"top3"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"bottom"},"relation":"none:n","fillColor":"rgb(247, 151, 128)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"5278e0a2-f809-4023-b439-b35ae083a325","shape":"erdRelation","source":{"cell":"ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","port":"top4"},"target":{"cell":"bd6cd2f6-55ae-43fd-af6c-22bdbaf96a00","port":"top3"},"relation":"none:n","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"764cbe48-4a33-4752-94a9-67bda1226718","shape":"edit-node","position":{"x":-79.999999999985,"y":1140},"label":"### 成本挖掘任务结果\n---\nid\n任务id\n实际总成本\n标准总成本\n总差额\n差额比\n是否有传输过账\n报告状态\n","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":130,"height":190},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"54f3478c-85b5-4b98-8c68-332a9a037140","shape":"erdRelation","source":{"cell":"a9ad3011-be3b-45ce-9200-cbd99874e48d","port":"top"},"target":{"cell":"e6458913-d5bb-4d3e-8194-4e983ee9561b","port":"bottom2"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"9a99fd26-86c6-42b3-9fe1-5380d3314003","shape":"erdRelation","source":{"cell":"a9ad3011-be3b-45ce-9200-cbd99874e48d","port":"top3"},"target":{"cell":"ab4a33f9-98c1-4690-87aa-46e590bd7b0c","port":"bottom"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"14913b43-5f56-45c0-8a8b-128685ae8831","shape":"erdRelation","source":{"cell":"ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","port":"top2"},"target":{"cell":"e6458913-d5bb-4d3e-8194-4e983ee9561b","port":"bottom"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"b27fbbab-850d-4577-bd84-dfec38412d43","shape":"erdRelation","source":{"cell":"ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","port":"top3"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"in3"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"4e142b26-fa22-4806-aee3-7b598f1eaede","shape":"erdRelation","source":{"cell":"ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","port":"top3"},"target":{"cell":"ab4a33f9-98c1-4690-87aa-46e590bd7b0c","port":"bottom2"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"db2e0214-00dd-4c58-ba37-627fd8cba8d2","shape":"edit-node","position":{"x":580.0000000000107,"y":1440},"label":"### 部件缺失信息\n---\n工厂\n物料号\n版本号\n缺失信息(缺失备注信息)","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":160,"height":150},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"a2c4ce7b-8f43-4dc6-b29f-71454f6de700","shape":"erdRelation","source":{"cell":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","port":"top2"},"target":{"cell":"ab4a33f9-98c1-4690-87aa-46e590bd7b0c","port":"in3"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"80e84e01-fbda-4caf-a016-eae9c69aea5f","shape":"erdRelation","source":{"cell":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","port":"top3"},"target":{"cell":"bd6cd2f6-55ae-43fd-af6c-22bdbaf96a00","port":"in3"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"bd3bbe46-89e6-43dc-a1a0-59968252238d","shape":"erdRelation","source":{"cell":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","port":"top"},"target":{"cell":"e6458913-d5bb-4d3e-8194-4e983ee9561b","port":"bottom"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"b82b944c-8659-4720-b69e-e6e066b53882","shape":"erdRelation","source":{"cell":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","port":"top2"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"in3"},"relation":"none:n","fillColor":"rgb(90, 213, 198)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","shape":"edit-node","position":{"x":360.0000000000174,"y":1140},"label":"### 项目标准成本缺失\n---\n工厂代码(工厂id)\n物料料号(物料id)\n产品名称\n项目名称","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":130,"height":150},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"a2aac2ea-416f-4c73-81c2-cd1000ccd7fe","shape":"edit-node","position":{"x":165.000000000015,"y":1709.9999999999893},"label":"### 产品工序\n---\n工厂代码\n自制料号(?)\n工艺路线号\n序号\n工序名称\n成本中心代码\n成本中心名称\n人工工时\n人工费率\n设备工时\n设备费率\n燃动工时\n燃动费率\n辅料工时\n辅料费率\n其他工时\n其他费率\n版本(?)","fillColor":"rgb(117, 190, 250)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":200,"height":360},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"06ca758c-3187-47bd-8136-ca10dd94640b","shape":"edit-node","position":{"x":70,"y":1140},"label":"### 成本挖掘统计\n---\n工厂\n年度\n月度\n库存地点\n材料成本-实际\n人工成本-实际\n制造费用-实际\n总成本-电子实际\n材料成本-标准\n人工成本-标准\n制造费用-标准\n标准成本-电子实际\n材料成本-差异\n人工成本-差异\n制造费用-差异\n总成本差异-电子实际\n---\n原因分析","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":140,"height":350},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"a9ad3011-be3b-45ce-9200-cbd99874e48d","shape":"edit-node","position":{"x":530.000000000015,"y":1140},"label":"### 当月入库标准成本缺失\n---\n工厂代码(工厂id)\n物料料号(物料id)\n产品名称\nWBS号\n项目名称(项目id)\n库存地点编号","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":160,"height":160},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"},{"id":"top4","group":"top"}]}},{"id":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","shape":"edit-node","position":{"x":320.000000000015,"y":1370},"label":"### 成本计算和数据导出(计算计划)\n---\n项目名称\n阶段\n日期\n版本号\n工厂\n物料号\n状态\n关键部件缺失信息(该字段的用意?)","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":210,"height":250},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"},{"id":"top4","group":"top"}]}},{"id":"14b1e9e8-3950-432b-9efd-83bfe8ce0d37","shape":"edit-node","position":{"x":690.000000000015,"y":1699.9999999999927},"label":"### 标准成本结果BOM结构树查询\n---\n物料名称\n总标准成本-电子实际\t\n结构总成本-电子实际\t\n结构人工成本\t\n结构材料成本-电子实际\t\n本阶材料成本-电子实际\t\n本阶材料成本-电子实际-材料\t\n本阶材料成本-电子实际-门控\t\n本阶材料成本-电子实际-电机\t\n本阶材料成本-7525\t\n本阶材料成本-7525-材料\t\n本阶材料成本-7525-门控\t\n本阶材料成本-7525-电机\t\n本阶人工成本\t\n本阶设备成本\t\n本阶燃动成本\t\n本阶辅料成本\t\n本阶其他成本\t\n物料图号\n总标准成本-7525\t\n结构总成本-7525\t\n结构制费成本\t\n结构材料成本-7525\t\n累计材料成本-电子实际\t\n累计材料成本-电子实际-材料\t\n累计材料成本-电子实际-门控\t\n累计材料成本-电子实际-电机\t\n累计材料成本-7525\t\n累计材料成本-7525-材料\t\n累计材料成本-7525-门控\t\n累计材料成本-7525-电机\t\n累计人工成本\t\n累计设备成本\t\n累计燃动成本\t\n累计辅料成本\t\n累计其他成本","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":210,"height":690},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"d97d6f07-8365-40ab-bde8-34511452e62f","shape":"edit-node","position":{"x":-59.99999999998522,"y":1709.9999999999893},"label":"### 最近采购价\n---\nid\n工厂代号(工厂id)\n门控料号(?物料id)\n产品名称(?与物料有什么区别)\n规格\n单位\n不含税价格\n估算日期\n采购类型\n是否启用\n维护人\n维护时间","fontColor":"#000000","fillColor":"rgb(117, 190, 250)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":180,"height":270},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","shape":"edit-node","position":{"x":-240,"y":1140},"label":"### 成本挖掘任务\n---\nid\n工厂\n年\n月\n物料号\nWBS号\n标准版本号","fillColor":"rgb(247, 151, 128)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":130,"height":180},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"e4c40d33-e4c2-4dea-9413-62f7c9d772db","shape":"edit-node","position":{"x":-260,"y":919.9999999999891},"label":"### 菜单管理\n---\nid\n菜单名称\n菜单路径\n菜单模块\n是否启用\n说明\n创建人\n创建时间\n","fillColor":"#DDE5FF","size":{"width":150,"height":180},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"aa201a0f-fd7d-4393-b33a-589fa51f91b6","shape":"edit-node","position":{"x":790,"y":1370},"label":"### 标准成本结果\n---\n工厂代码\n物料编码\n版本号\n机械材料\n门控\n电机\nMK物料\n包装箱\n人工\n运输费\n制费\n成本合计\n7525门控\n7525合计","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":150,"height":290},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"bd6cd2f6-55ae-43fd-af6c-22bdbaf96a00","shape":"edit-node","position":{"x":770,"y":1140},"label":"### 物料号最新的版本号\n---\n项目类型\n子项目号\n项目名称\n项目阶段\n项目日期\n图号\n工厂\n物料号\n版本号\n版本状态","fillColor":"rgb(90, 213, 198)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":170,"height":220},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"ad80ead0-2c42-49a0-9571-931e4536609a","shape":"erdRelation","source":{"cell":"e9895e8e-4c87-4ca5-9855-3155b08e1e9a","port":"bottom"},"target":{"cell":"c306ccee-689c-49cf-a846-ec1e6a451eb7","port":"top2"},"relation":"none:n","fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"a1e1cd85-61f6-4ff4-a6c1-b7057722d9c5","shape":"erdRelation","source":{"cell":"e9895e8e-4c87-4ca5-9855-3155b08e1e9a","port":"bottom2"},"target":{"cell":"32dfec65-cfe2-4f80-9f86-6dfd50c2f07f","port":"top"},"relation":"none:n","fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"b0b6d230-8b0f-4f2f-9d2e-b3d8cd88b234","shape":"edit-node","position":{"x":-100,"y":919.9999999999891},"label":"### 角色管理\n---\nid\n角色名称\n是否启用\n操作权限","fillColor":"#DDE5FF","size":{"width":170,"height":150},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"c45fd09f-f5e0-4a1b-905a-b6623ed429ec","shape":"erdRelation","source":{"cell":"e9895e8e-4c87-4ca5-9855-3155b08e1e9a","port":"bottom2"},"target":{"cell":"e6458913-d5bb-4d3e-8194-4e983ee9561b","port":"top2"},"relation":"none:n","fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"e9895e8e-4c87-4ca5-9855-3155b08e1e9a","shape":"edit-node","position":{"x":-169.999999999985,"y":529.9999999999891},"label":"### 小时费用率\n---\n年度\n工厂代码(工厂id)\n成本中心代码(成本中心id)\n成本中心名称(成本中心id)\n人工小时费率\n设备小时费率\n燃动小时费率\n辅料小时费率\n其他小时费率\n生效日期\n失效日期\n维护人员(用户id)\n维护时间","fillColor":"rgb(245, 220, 78)","size":{"width":180,"height":270},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"},{"id":"bottom4","group":"bottom"}]}},{"id":"32dfec65-cfe2-4f80-9f86-6dfd50c2f07f","shape":"edit-node","position":{"x":390.0000000000174,"y":929.9999999999891},"label":"### 成本中心\n---\nid\n成本中心代码","fillColor":"#DDE5FF","size":{"width":90,"height":70},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"}]}},{"id":"80ff1b9b-450a-4838-ba92-1780c4c3edde","shape":"erdRelation","source":{"cell":"71e702a2-681a-453f-a15e-30ff10e3b439","port":"bottom"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"top"},"relation":"none:n","vertices":[{"x":480,"y":790}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"71e702a2-681a-453f-a15e-30ff10e3b439","shape":"edit-node","position":{"x":50.00000000001501,"y":529.9999999999891},"label":"### 7525价格\n---\nid\n年份\n门控料号(物料id)\n物料规格信息\n价格","fillColor":"rgb(245, 220, 78)","size":{"width":120,"height":160},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"}]}},{"id":"bbf38d0b-7d61-4a17-b39c-c56ae830f9bd","shape":"erdRelation","source":{"cell":"ff5515d5-21a9-4272-86b2-c984273febc1","port":"bottom"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"top2"},"relation":"none:n","vertices":[{"x":470,"y":770}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"11267869-dc5a-411d-b763-fc0ad08db8a6","shape":"erdRelation","source":{"cell":"ff5515d5-21a9-4272-86b2-c984273febc1","port":"bottom3"},"target":{"cell":"ab4a33f9-98c1-4690-87aa-46e590bd7b0c","port":"top2"},"relation":"none:n","vertices":[{"x":520,"y":780},{"x":880,"y":850}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"ab4a33f9-98c1-4690-87aa-46e590bd7b0c","shape":"edit-node","position":{"x":820,"y":929.9999999999891},"label":"### 项目\n---\nid\n项目编号\n项目名称\n项目类型\n计划开始时间\n计划结束时间\n项目状态","fillColor":"#DDE5FF","size":{"width":120,"height":160},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"}]}},{"id":"f5f60922-9d66-4f92-9a70-11c6cce0e702","shape":"erdRelation","source":{"cell":"8e8dd851-2e95-4bd5-8623-645b6e590bab","port":"in2"},"target":{"cell":"c306ccee-689c-49cf-a846-ec1e6a451eb7","port":"top3"},"relation":"none:n","fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"ff5515d5-21a9-4272-86b2-c984273febc1","shape":"edit-node","position":{"x":200.0000000000174,"y":529.9999999999891},"label":"### 预算价格\n---\n年度\n物料号(物料id)\n物料描述(物料id)\n项目编号(项目id)\n预算价格","fillColor":"rgb(245, 220, 78)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":160,"height":130},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"in4","group":"in"}]}},{"id":"339ae80b-97a9-47d5-a701-742796f5143e","shape":"erdRelation","source":{"cell":"8e8dd851-2e95-4bd5-8623-645b6e590bab","port":"bottom"},"target":{"cell":"e6458913-d5bb-4d3e-8194-4e983ee9561b","port":"top"},"relation":"none:concave","vertices":[{"x":500,"y":730}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"3623f1fd-62e0-4004-a07c-61e6c35c15fc","shape":"erdRelation","source":{"cell":"8e8dd851-2e95-4bd5-8623-645b6e590bab","port":"bottom2"},"target":{"cell":"c306ccee-689c-49cf-a846-ec1e6a451eb7","port":"top2"},"relation":"none:n","fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"c306ccee-689c-49cf-a846-ec1e6a451eb7","shape":"edit-node","position":{"x":95,"y":929.9999999999891},"label":"### 用户\n---\nid\n用户名\n昵称\n是否启用\n所属角色\n密码\n创建时间\n\n","fillColor":"#DDE5FF","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":90,"height":160},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"36e0a409-a617-465a-bd82-435826d7af9b","shape":"erdRelation","source":{"cell":"8e8dd851-2e95-4bd5-8623-645b6e590bab","port":"bottom3"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"top3"},"relation":"none:n","vertices":[{"x":570,"y":770}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"8e8dd851-2e95-4bd5-8623-645b6e590bab","shape":"edit-node","position":{"x":400.0000000000183,"y":529.9999999999891},"label":"### 生产批量设置\n---\nid\n门控料号(物料id)\n工厂代号(工厂id)\n生产批量\n维护人(用户id)\n维护时间","fillColor":"rgb(245, 220, 78)","size":{"width":140,"height":160},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"bottom4","group":"bottom"}]}},{"id":"35690dd6-bb9b-44bd-95cb-60ba826eb886","shape":"erdRelation","source":{"cell":"aa15bf4b-eb5c-4beb-94be-98c9cf34c41a","port":"bottom3"},"target":{"cell":"d9b4230a-9a29-4b06-9bc2-7d0021d99423","port":"top2"},"relation":"none:n","fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"d9b4230a-9a29-4b06-9bc2-7d0021d99423","shape":"edit-node","position":{"x":210,"y":934.9999999999891},"label":"### 数据字典\n---\n采购类型(一般采购、外协采购)\n是否启用(是、否)\n项目阶段(初始、首批、量\n产)\n制造类型\n版本状态","fillColor":"#DDE5FF","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","size":{"width":170,"height":150},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"7450b679-24ae-438a-94d9-3619edf7d17b","shape":"erdRelation","source":{"cell":"aa15bf4b-eb5c-4beb-94be-98c9cf34c41a","port":"bottom2"},"target":{"cell":"e6458913-d5bb-4d3e-8194-4e983ee9561b","port":"top3"},"relation":"none:n","vertices":[{"x":590,"y":770}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"e6458913-d5bb-4d3e-8194-4e983ee9561b","shape":"edit-node","position":{"x":510.000000000015,"y":929.9999999999891},"label":"### 工厂\n---\nid\n工厂代码","fillColor":"#DDE5FF","size":{"width":80,"height":70},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"26caad8d-227c-4985-a343-e647e69c682e","shape":"erdRelation","source":{"cell":"aa15bf4b-eb5c-4beb-94be-98c9cf34c41a","port":"bottom"},"target":{"cell":"50255b65-de6e-4032-b606-58482a662442","port":"top2"},"relation":"none:n","vertices":[{"x":660,"y":770}],"fillColor":"rgb(245, 220, 78)","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"50255b65-de6e-4032-b606-58482a662442","shape":"edit-node","position":{"x":640.0000000000107,"y":929.9999999999891},"label":"### 物料\n---\nid\n工厂代号(工厂id)\n物料号\n物料名称\n图号","fillColor":"#DDE5FF","size":{"width":140,"height":140},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"top4","group":"top"}]}},{"id":"aa15bf4b-eb5c-4beb-94be-98c9cf34c41a","shape":"edit-node","position":{"x":610.0000000000183,"y":519.9999999999891},"label":"### 最近采购价格\n---\nid\n工厂代号(工厂id)\n门控料号(物料id)\n产品名称(?与物料有什么区别)\n规格\n单位\n不含税价格\n估算日期\n采购类型\n是否启用","fillColor":"rgb(245, 220, 78)","size":{"width":150,"height":220},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"},{"id":"bottom4","group":"bottom"}]}}]},"id":"49BB7996-5205-4A52-96A3-FE87B1D8C4AC","comment":""},{"defKey":"C.G02","defName":"逻辑关系","relationType":"field","canvasData":{"cells":[{"id":"31463221-5675-43db-befb-fac0dde0c9c9","shape":"erdRelation","source":{"cell":"237d320b-5920-4612-9dc3-b7e8d6f79ceb","port":"out2"},"target":{"cell":"64d0a798-91a5-4e0a-8ab1-fdafc8cea212","port":"in2"},"relation":"1:n","vertices":[{"x":180,"y":369}],"fillColor":"#ACDAFC","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"9ab43a46-81f4-425e-80e0-6dc6fadc257b","shape":"erdRelation","source":{"cell":"793a2c7e-bb69-45a7-ab84-472017071f8e","port":"out2"},"target":{"cell":"64d0a798-91a5-4e0a-8ab1-fdafc8cea212","port":"in2"},"relation":"1:n","vertices":[{"x":180,"y":400}],"fillColor":"#ACDAFC","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"8101d126-5184-4e08-b54f-e7fbc4a29346","shape":"erdRelation","source":{"cell":"64d0a798-91a5-4e0a-8ab1-fdafc8cea212","port":"out2"},"target":{"cell":"a8957271-f62f-4eaf-acc7-b09ecd8a6c14","port":"in2"},"relation":"1:n","vertices":[{"x":590,"y":426}],"fillColor":"#ACDAFC","router":{"name":"manhattan"},"attrs":{"line":{"strokeDasharray":""}}},{"id":"237d320b-5920-4612-9dc3-b7e8d6f79ceb","shape":"table","position":{"x":-95.00000000000011,"y":221},"count":0,"originKey":"D7C484FB-97F8-4528-999D-2DCE5B198023","type":"L","size":{"width":220,"height":100}},{"id":"793a2c7e-bb69-45a7-ab84-472017071f8e","shape":"table","position":{"x":-90.00000000000011,"y":376},"count":0,"originKey":"44179A2E-4E6A-4977-B4D7-455B0ADE5E7E","type":"L","size":{"width":210,"height":100}},{"id":"64d0a798-91a5-4e0a-8ab1-fdafc8cea212","shape":"table","position":{"x":215,"y":261},"count":0,"originKey":"0BAE44AF-1EC9-46FC-B012-7845A503D9F1","type":"L","size":{"width":307,"height":215}},{"id":"a8957271-f62f-4eaf-acc7-b09ecd8a6c14","shape":"table","position":{"x":640,"y":261},"count":0,"originKey":"2B5E78B5-44FF-4F14-A289-9D533E4F1F3A","type":"L","size":{"width":306,"height":330}}]},"id":"0D56908B-B619-4D80-A491-DE9808D9FFEB","comment":""},{"defKey":"C.G03","defName":"物理模型","canvasData":{"cells":[{"id":"02b64cef-3ee3-48a5-9867-9dc4e9726bfd","shape":"group","position":{"x":903.9999999999982,"y":-40.00000000000006},"label":"学生行为","size":{"width":960,"height":760},"children":["9a5658de-7e28-4815-95c2-ccf5ff90e6c1","26b28925-27ed-488d-b20d-2abbcafa5057","8fad7c2e-d083-4589-b938-071541a6cea1","60b8fc40-2b82-4b9a-8da2-5234582e31f6"]},{"id":"8fad7c2e-d083-4589-b938-071541a6cea1","shape":"edit-node","position":{"x":1142,"y":459.999999999998},"label":"课程信息表为镜像,所以后面的“:1\"标识,是指第1个镜像副本,仅关系图需要","fontColor":"#f62b07","fillColor":"#fcfcac","parent":"02b64cef-3ee3-48a5-9867-9dc4e9726bfd","size":{"width":460,"height":90},"ports":{"groups":{"in":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"left"}},"out":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"right"}},"top":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"top"}},"bottom":{"attrs":{"fo":{"width":8,"height":8,"x":-4,"y":-4,"magnet":"true","style":{"visibility":"hidden"}}},"zIndex":3,"position":{"name":"bottom"}}},"items":[{"group":"in","id":"in"},{"group":"in","id":"in2"},{"group":"in","id":"in3"},{"group":"out","id":"out"},{"group":"out","id":"out2"},{"group":"out","id":"out3"},{"group":"top","id":"top"},{"group":"top","id":"top2"},{"group":"top","id":"top3"},{"group":"bottom","id":"bottom"},{"group":"bottom","id":"bottom2"},{"group":"bottom","id":"bottom3"}]}},{"id":"60b8fc40-2b82-4b9a-8da2-5234582e31f6","shape":"erdRelation","source":{"cell":"9a5658de-7e28-4815-95c2-ccf5ff90e6c1","port":"5FAE5CA5-B7A6-40C3-878D-1BB3D4A45B5C%out"},"target":{"cell":"26b28925-27ed-488d-b20d-2abbcafa5057","port":"0C5A31BB-2855-4BB9-84D1-7E63B37A71E1%in"},"relation":"1:n","fillColor":"#c00000","parent":"02b64cef-3ee3-48a5-9867-9dc4e9726bfd","attrs":{"line":{"strokeDasharray":""}}},{"id":"de986735-cd84-4bd5-b50f-6b5a70df984d","shape":"group","position":{"x":-130.00000000000023,"y":-40},"label":"学院设置部分","size":{"width":1010,"height":760},"children":["444bdcfa-cc31-4b36-892b-9caef73cc863","4a31fc9b-4f5a-4f2c-880b-409d433ba848","9972b579-d4c5-4520-9202-7a57bf539151","4bbe78ce-9511-471b-bea0-bcdfa333b636","b9e17f34-b032-4b33-b78b-618b7e046614","925b71be-5cf6-48d7-aea2-5c49e68a5d8b","6210b0eb-8566-4b64-885b-f1b00d6078d7","914c8f40-8cff-49ed-86a9-4dcad63ad668","56317816-819f-41ea-a6ef-bdcd0027fb68","979dfa9f-475a-4be8-8ddc-1f2500ff212b","f03ab359-7568-4402-bc56-4593bf5e1420","5428380e-8314-4f6f-9048-43eff1b48ee5"]},{"id":"f03ab359-7568-4402-bc56-4593bf5e1420","shape":"erdRelation","source":{"cell":"56317816-819f-41ea-a6ef-bdcd0027fb68","port":"9651B83A-2208-4F1E-A870-C3C4E1FAF103%out"},"target":{"cell":"6210b0eb-8566-4b64-885b-f1b00d6078d7","port":"D793F097-1364-49FD-B02C-D4EBBA5A055A%in"},"relation":"1:n","vertices":[],"labels":[{"attrs":{"text":{"text":""},"rect":{}}}],"fillColor":"#ACDAFC","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d"},{"id":"979dfa9f-475a-4be8-8ddc-1f2500ff212b","shape":"erdRelation","source":{"cell":"9972b579-d4c5-4520-9202-7a57bf539151","port":"8707AEB9-3EC5-4EEA-9E14-99BAF28B46B4%out"},"target":{"cell":"6210b0eb-8566-4b64-885b-f1b00d6078d7","port":"63130D1B-63C8-491C-B36D-5603A30BFB37%in"},"relation":"1:n","vertices":[{"x":400,"y":73.00000000000045}],"fillColor":"#ACDAFC","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d"},{"id":"b9e17f34-b032-4b33-b78b-618b7e046614","shape":"erdRelation","source":{"cell":"4a31fc9b-4f5a-4f2c-880b-409d433ba848","port":"3D337B5E-182D-45C7-9752-E2DD4D7CF2BD%out"},"target":{"cell":"4bbe78ce-9511-471b-bea0-bcdfa333b636","port":"AE73CBE3-577D-4457-8987-5BEFDECAEED9%in"},"relation":"1:n","vertices":[{"x":371,"y":319.00000000000045}],"fillColor":"#ACDAFC","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d"},{"id":"925b71be-5cf6-48d7-aea2-5c49e68a5d8b","shape":"erdRelation","source":{"cell":"444bdcfa-cc31-4b36-892b-9caef73cc863","port":"C5916046-F140-4B0C-BF84-EBD7DDB38EAA%out"},"target":{"cell":"4bbe78ce-9511-471b-bea0-bcdfa333b636","port":"AE73CBE3-577D-4457-8987-5BEFDECAEED9%out"},"relation":"1:n","fillColor":"#ACDAFC","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d"},{"id":"5428380e-8314-4f6f-9048-43eff1b48ee5","shape":"erdRelation","source":{"cell":"56317816-819f-41ea-a6ef-bdcd0027fb68","port":"9651B83A-2208-4F1E-A870-C3C4E1FAF103%in"},"target":{"cell":"444bdcfa-cc31-4b36-892b-9caef73cc863","port":"EFD22F94-E1D0-4CAD-947D-E856A997D7B5%in"},"relation":"1:n","vertices":[{"x":-79,"y":620.0000000000005},{"x":381,"y":620.0000000000005}],"fillColor":"#ACDAFC","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d"},{"id":"914c8f40-8cff-49ed-86a9-4dcad63ad668","shape":"erdRelation","source":{"cell":"6210b0eb-8566-4b64-885b-f1b00d6078d7","port":"6D6BC6AA-8114-4B91-8A2C-4B5FEACEB347%in"},"target":{"cell":"4bbe78ce-9511-471b-bea0-bcdfa333b636","port":"A23704D2-7128-41A2-988C-D20CB984FA83%in"},"relation":"1:n","fillColor":"#ACDAFC","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d"},{"id":"47d951f9-c6b0-4407-b2e3-e66f4b2931ec","shape":"erdRelation","source":{"cell":"6210b0eb-8566-4b64-885b-f1b00d6078d7","port":"6D6BC6AA-8114-4B91-8A2C-4B5FEACEB347%out"},"target":{"cell":"9a5658de-7e28-4815-95c2-ccf5ff90e6c1","port":"1BCE9672-14BA-4B2B-B8C6-222CC6CF0F61%in"},"relation":"1:n","vertices":[{"x":890,"y":83}],"fillColor":"#dce775","attrs":{"line":{"strokeDasharray":""}}},{"id":"26b28925-27ed-488d-b20d-2abbcafa5057","shape":"table","position":{"x":1421,"y":19.99999999999801},"count":0,"originKey":"6B1610FB-364F-4514-95D6-9DDA681BFC61","fillColor":"#9acc98","parent":"02b64cef-3ee3-48a5-9867-9dc4e9726bfd","size":{"width":362,"height":146}},{"id":"6210b0eb-8566-4b64-885b-f1b00d6078d7","shape":"table","position":{"x":442,"y":10.000000000000455},"count":0,"originKey":"C698249E-307D-4087-9EC4-3BABCFC00660","fontColor":"#555555","fillColor":"#dce775","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d","size":{"width":393,"height":192}},{"id":"56317816-819f-41ea-a6ef-bdcd0027fb68","shape":"table","position":{"x":-44.5,"y":10.000000000000455},"count":0,"originKey":"26B8D13E-BE37-4E20-8496-13A586E84581","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d","size":{"width":409,"height":192}},{"id":"9972b579-d4c5-4520-9202-7a57bf539151","shape":"table","position":{"x":-48.5,"y":233.00000000000045},"count":0,"originKey":"C2F51B91-7C24-4CB4-8406-706F4851EB0B","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d","size":{"width":352,"height":169}},{"id":"4a31fc9b-4f5a-4f2c-880b-409d433ba848","shape":"table","position":{"x":-59,"y":450.00000000000045},"count":0,"originKey":"9095C2A1-EF4C-4357-AAB2-26F99C1845CA","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d","size":{"width":355,"height":146}},{"id":"444bdcfa-cc31-4b36-892b-9caef73cc863","shape":"table","position":{"x":396,"y":405.00000000000045},"count":0,"originKey":"536B8B19-C2B3-45D1-ADA8-402C0083FC31","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d","size":{"width":451,"height":284}},{"id":"9a5658de-7e28-4815-95c2-ccf5ff90e6c1","shape":"table","position":{"x":950,"y":19.99999999999801},"count":0,"originKey":"0FC9DB49-4FDB-437E-83E9-7EE803F1CC84","fontColor":"#0d0d0d","fillColor":"#c00000","parent":"02b64cef-3ee3-48a5-9867-9dc4e9726bfd","size":{"width":403,"height":330}},{"id":"4bbe78ce-9511-471b-bea0-bcdfa333b636","shape":"table","position":{"x":472,"y":233.00000000000045},"count":0,"originKey":"1A50AEEB-F956-4275-AE11-5D6F1F471FBE","parent":"de986735-cd84-4bd5-b50f-6b5a70df984d","size":{"width":334,"height":123}}]},"id":"9427DD89-11C0-431F-9BB0-8353A2725174","comment":""}],"standardFields":[{"defKey":"personInfo","defName":"个人基本信息要素","fields":[{"defKey":"ID_CARD_NO","defName":"身份证号","comment":"","type":"VARCHAR","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","refDict":"","uiHint":"","id":"A64A91C8-A41F-4113-92FB-7563D7EF054D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MOBILE_PHONE","defName":"手机号","comment":"","type":"VARCHAR","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","refDict":"","uiHint":"","id":"479DA2AB-1974-411A-A81E-92FB939E75EB","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"GENDER","defName":"性别","comment":"","type":"VARCHAR","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D","uiHint":"","id":"48473E29-6594-4912-AADE-C8AB44FCA3E9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"BIRTH","defName":"出生日期","comment":"","type":"DATETIME","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","refDict":"","uiHint":"","id":"2BD3D2EE-2411-49A6-983D-84B81057312F","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"AVATAR","defName":"头像","comment":"","type":"VARCHAR","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","refDict":"","uiHint":"","id":"FDD67CEE-4B52-4BD1-A1A3-9C5EBC6037E6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"HEIGHT","defName":"身高","comment":"","type":"INT","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","refDict":"","uiHint":"","id":"CAAA0E79-41A1-4758-B481-D171168C4D68","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"WEIGHT","defName":"体重","comment":"","type":"INT","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","refDict":"","uiHint":"","id":"575482CE-64A6-4CB9-99DC-8E126D190AAA","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"NATION","defName":"名族","comment":"","type":"VARCHAR","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"115EDEFC-0323-410E-81AB-CCAB8879837A","uiHint":"","id":"15B0D75D-0B97-4985-A816-D0EAFA90446B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"POLITICAL","defName":"政治面貌","comment":"","type":"VARCHAR","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"06EED564-BBA9-4747-8D73-AF809A330CB8","uiHint":"","id":"F458E86D-84D6-45A1-9DD3-51E6C8170D7F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MARITAL","defName":"婚姻状况","comment":"","type":"VARCHAR","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"EA1587B7-3954-437A-BFE0-FCB0453BCABA","uiHint":"","id":"7275E578-6893-4922-AC69-95B261BFBD61","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_PROVINCE","defName":"籍贯(省)","comment":"","type":"VARCHAR","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","refDict":"","uiHint":"","id":"F04BF130-3EC1-4E02-9DED-3214CA88E352","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_CITY","defName":"籍贯(市)","comment":"","type":"VARCHAR","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"","uiHint":"","id":"B97F5BC2-33DE-4857-9DB8-ECFD02C9040C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_ADDRESS","defName":"户籍地址","comment":"","type":"VARCHAR","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","refDict":"","uiHint":"","id":"812ADF1D-8C03-40CA-B030-E539838FB889","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"}],"id":"F30202B9-4B5D-4CE7-87CE-B3890C84D3F2"}],"dbConn":[],"homeCoverDiagram":{"defKey":"home-cover","defName":"首页封面","relationType":"entity","canvasData":{"cells":[{"id":"01ac9826-9c2a-457a-8922-e6f8f25d9561","shape":"mind-edge","source":{"cell":"1bdf13d1-c491-4652-9abd-0929fe040e7f","port":"right"},"target":{"cell":"a6aa31ba-f93c-4652-b293-51bbca33fa87","port":"left"},"fillColor":"rgb(183, 185, 189)"},{"id":"b47d896a-fc4f-4ac9-b011-68a447df24a8","shape":"mind-edge","source":{"cell":"1bdf13d1-c491-4652-9abd-0929fe040e7f","port":"right"},"target":{"cell":"bbf7eeb7-2b33-4594-b2d5-2ec520405479","port":"left"},"fillColor":"rgb(183, 185, 189)"},{"id":"07be3bc0-a68e-476f-ba3d-331fe552faee","shape":"mind-edge","source":{"cell":"1bdf13d1-c491-4652-9abd-0929fe040e7f","port":"right"},"target":{"cell":"7392ebc5-1080-4250-99cb-34fa24f3050b","port":"left"},"fillColor":"rgb(183, 185, 189)"},{"id":"921ED3D8-5A8E-4A84-96AE-978C200C1E93","shape":"mind-edge","source":{"cell":"1bdf13d1-c491-4652-9abd-0929fe040e7f","port":"right"},"target":{"cell":"3795e95d-3f10-46a3-94af-2fc4b0b944b8","port":"left"}},{"id":"46C14C41-47AE-4CCA-B6F4-9EE675B3746F","shape":"mind-edge","source":{"cell":"1bdf13d1-c491-4652-9abd-0929fe040e7f","port":"right"},"target":{"cell":"f286d37f-d476-461d-b42d-4246f376b2a3","port":"left"}},{"id":"1bdf13d1-c491-4652-9abd-0929fe040e7f","shape":"mind-topic","position":{"x":-170,"y":-30},"label":"成本管理","fillColor":"rgb(247, 151, 128)","layout":"right","size":{"width":160,"height":70},"children":["a6aa31ba-f93c-4652-b293-51bbca33fa87","bbf7eeb7-2b33-4594-b2d5-2ec520405479","3795e95d-3f10-46a3-94af-2fc4b0b944b8","7392ebc5-1080-4250-99cb-34fa24f3050b","f286d37f-d476-461d-b42d-4246f376b2a3"]},{"id":"a6aa31ba-f93c-4652-b293-51bbca33fa87","link":"{\"type\":\"\",\"value\":\"\"}","shape":"mind-topic-branch","position":{"x":70,"y":-225},"label":"基础信息维护","fillColor":"rgb(245, 220, 78)","layout":"right","size":{"width":160,"height":60},"children":[]},{"id":"bbf7eeb7-2b33-4594-b2d5-2ec520405479","link":"{\"type\":\"\",\"value\":\"\"}","shape":"mind-topic-branch","position":{"x":70,"y":-125},"label":"SAP导出版本基础数据","fillColor":"rgb(245, 220, 78)","layout":"right","size":{"width":160,"height":60},"children":[]},{"id":"3795e95d-3f10-46a3-94af-2fc4b0b944b8","link":"{\"type\":\"\",\"value\":\"\"}","shape":"mind-topic-branch","position":{"x":70,"y":-25},"label":"成本卷积","fillColor":"rgb(245, 220, 78)","parent":"7392ebc5-1080-4250-99cb-34fa24f3050b","layout":"right","size":{"width":160,"height":60},"children":[]},{"id":"7392ebc5-1080-4250-99cb-34fa24f3050b","link":"{\"type\":\"\",\"value\":\"\"}","shape":"mind-topic-branch","position":{"x":70,"y":75},"label":"挖掘分析系统","fillColor":"rgb(245, 220, 78)","layout":"right","size":{"width":160,"height":60},"children":[]},{"id":"f286d37f-d476-461d-b42d-4246f376b2a3","link":"{\"type\":\"\",\"value\":\"\"}","shape":"mind-topic-branch","position":{"x":70,"y":175},"label":"系统管理","fillColor":"rgb(245, 220, 78)","layout":"right","size":{"width":160,"height":60},"children":[]}]},"id":"home-cover","comment":""},"logicEntities":[{"defName":"学生","comment":"","notes":{},"properties":{"partitioned by":"(region string,reg_date string)","row format delimited":"","fields terminated by":"','","collection items terminated by":"'-'","dorisDistributedBy":"DISTRIBUTED BY HASH(STUDENT_ID) BUCKETS 32"},"defKey":"LE_SIMS_STUDENT","id":"2B5E78B5-44FF-4F14-A289-9D533E4F1F3A","type":"L","headers":[{"refKey":"defKey","newCode":"defKey","value":"属性代码","hideInGraph":false},{"refKey":"defName","newCode":"defName","value":"属性名称","hideInGraph":false},{"refKey":"primaryKey","newCode":"primaryKey","value":"主键","hideInGraph":false},{"refKey":"baseType","newCode":"baseType","value":"数据类型","hideInGraph":false}],"fields":[{"defKey":"COLLEGE_ID","defName":"所在学院ID","comment":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","refDict":"","uiHint":"","id":"558A36B9-408F-485D-9B4B-2DA51262DEE8","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_ID","defName":"所在班级ID","comment":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","refDict":"","uiHint":"","id":"DF8257ED-88CE-481C-A1DA-7E24FE3C7F7C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_ID","defName":"学生ID","comment":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","refDict":"","uiHint":"","id":"C092D1E3-3CE0-419E-8BE1-5376D55E080F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_NAME","defName":"学生姓名","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"1C860FA6-AC09-4D7E-983F-856582CC56A6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ENG_NAME","defName":"英文名","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"","refDict":"","uiHint":"","id":"075A8D01-7DDF-4E2E-8C3A-B347453E690B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ID_CARD_NO","defName":"身份证号","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"5A24A880-B31F-4462-BE46-25160307FBD2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MOBILE_PHONE","defName":"手机号","comment":"11位手机号","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"CB4A3E2F-FC16-4C66-9A4B-69836E5A3B6F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"GENDER","defName":"性别","comment":"性别说明","len":"32","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"'M'","hideInGraph":false,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"BF9E20E0-80D3-486D-BD58-5FADCF3E4A1D","type":"VARCHAR","uiHint":"","id":"22E90E1B-E4BF-4B08-B2BB-14F9FF670CB5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MONTHLY_SALARY","defName":"月薪","comment":"","len":24,"scale":6,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"C3B1681B-99F9-4818-9E80-DE1652A51D85","type":"DECIMAL","refDict":"","uiHint":"","id":"C8B3554E-0C56-4AE7-A139-A451ACDC73A0","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"},{"defKey":"BIRTH","defName":"出生日期","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","refDict":"","uiHint":"","id":"F36E6532-3EB9-4ECE-820D-0A7B0A77BD0C","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"AVATAR","defName":"头像","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"A282A2C1-AACD-4BCF-90A9-7FF6931F55BD","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"HEIGHT","defName":"身高","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"DCC5C838-AD79-4FEB-B68D-E17CC39FC587","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"WEIGHT","defName":"体重","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"7C8D7BEA-72C4-4F58-9A7F-FF7866BB4470","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"NATION","defName":"名族","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'01'","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"115EDEFC-0323-410E-81AB-CCAB8879837A","type":"VARCHAR","uiHint":"","id":"44405037-98A8-4591-BC7F-0FDCFE3EE0D8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"POLITICAL","defName":"政治面貌","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"06EED564-BBA9-4747-8D73-AF809A330CB8","type":"VARCHAR","uiHint":"","id":"053F31D2-D449-4A8D-98B0-480E51F718F6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MARITAL","defName":"婚姻状况","comment":"","len":"32","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'UNMARRIED'","hideInGraph":true,"domain":"73FD2BAD-2358-4336-B96D-45DC897BD792","refDict":"EA1587B7-3954-437A-BFE0-FCB0453BCABA","type":"VARCHAR","uiHint":"","id":"875FC8E1-2BE3-4434-9B49-EBB9FC5D04E9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_PROVINCE","defName":"籍贯(省)","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"2D46EEAF-8AE6-446F-8030-3A7E51BC0F4C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_CITY","defName":"籍贯(市)","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"3264A39D-64A4-44B1-A534-56D16629B5E0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"DOMICILE_PLACE_ADDRESS","defName":"户籍地址","comment":"","len":"60","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"VARCHAR","refDict":"","uiHint":"","id":"7E259466-C455-401D-AD0D-7264E4D8C6B1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"}],"indexes":[],"correlations":[],"sysProps":{"fieldInputSuggest":false,"lePropOrient":"V","propShowFields":["N","K"],"nameTemplate":"{defKey}[{defName}]"}},{"defName":"学院","comment":"","properties":{"partitionBy":"","dorisDistributedBy":"DISTRIBUTED BY HASH(`COLLEGE_ID`) BUCKETS 1"},"defKey":"LE_SIMS_COLLEGE","id":"D7C484FB-97F8-4528-999D-2DCE5B198023","type":"L","headers":[{"refKey":"defKey","newCode":"defKey","value":"属性代码","hideInGraph":false},{"refKey":"defName","newCode":"defName","value":"属性名称","hideInGraph":false},{"refKey":"primaryKey","newCode":"primaryKey","value":"主键","hideInGraph":false},{"refKey":"baseType","newCode":"baseType","value":"数据类型","hideInGraph":false}],"fields":[{"defKey":"COLLEGE_ID","defName":"学院ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"171AD2F6-FC73-40C8-8295-17FABB8411CC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"COLLEGE_NAME","defName":"学院名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"7CD87962-5B9C-4C5A-BED8-7888B61E9988","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"SHORT_NAME","defName":"学院简称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"F7CDE664-FBDA-4E64-90A3-8D56D4E0A4CF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"INTRO","defName":"学院介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"F14FEC76-F34A-40E3-92D9-6D4E4B305770","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PROFESSION_NUMBER","defName":"专业个数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"3D839C4B-8B97-4089-86EB-FAD5F7F4B168","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"STUDENT_NUMBER","defName":"学生人数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"BA6E0244-03BB-498A-9E99-ED22B6E6F55C","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"PRESIDENT","defName":"院长","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"B82763E7-E64A-404C-908D-942CD3B447EA","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"}],"indexes":[],"correlations":[],"sysProps":{"fieldInputSuggest":false,"lePropOrient":"H","propShowFields":["N"],"nameTemplate":"{defKey}[{defName}]"},"notes":{}},{"defName":"专业","comment":"","properties":{"partitionBy":""},"defKey":"LE_SIMS_MAJOR","id":"44179A2E-4E6A-4977-B4D7-455B0ADE5E7E","type":"L","headers":[{"refKey":"defKey","newCode":"defKey","value":"属性代码","hideInGraph":false},{"refKey":"defName","newCode":"defName","value":"属性名称","hideInGraph":false},{"refKey":"primaryKey","newCode":"primaryKey","value":"主键","hideInGraph":false},{"refKey":"baseType","newCode":"baseType","value":"数据类型","hideInGraph":false}],"fields":[{"defKey":"MAJOR_ID","defName":"专业ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"A6C84E79-CB4E-4B66-B2BE-AE664632A0D2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MAJOR_NAME","defName":"专业名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"636B74F4-6D02-40F8-B2F2-9093CC5DC0F9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"SHORT_NAME","defName":"专业简称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"7CB0FA83-CDF8-4521-8038-5D2674ED725A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ESTAB_DATE","defName":"开设日期","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","refDict":"","uiHint":"","id":"D66C474D-8D6F-4ED1-B450-9BFA3371C018","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"INTRO","defName":"专业介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"8ADCD1C6-A6C0-4DC3-89FF-45F8752FF3F4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TUITION_FEE","defName":"学费","comment":"","len":24,"scale":8,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"C3B1681B-99F9-4818-9E80-DE1652A51D85","type":"DECIMAL","refDict":"","uiHint":"","id":"97783BE2-6269-440A-8974-2781BCB9FB02","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E"}],"indexes":[],"correlations":[],"sysProps":{"fieldInputSuggest":false,"lePropOrient":"H","propShowFields":["N"],"nameTemplate":"{defKey}[{defName}]"},"notes":{}},{"defName":"班级","comment":"","properties":{"partitionBy":""},"defKey":"LE_SIMS_CLASS","id":"0BAE44AF-1EC9-46FC-B012-7845A503D9F1","type":"L","headers":[{"refKey":"defKey","newCode":"defKey","value":"属性代码","hideInGraph":false},{"refKey":"defName","newCode":"defName","value":"属性名称","hideInGraph":false},{"refKey":"primaryKey","newCode":"primaryKey","value":"主键","hideInGraph":false},{"refKey":"baseType","newCode":"baseType","value":"数据类型","hideInGraph":false}],"fields":[{"defKey":"COLLEGE_ID","defName":"所在学院","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"DBF15DD4-DB17-4922-9244-BEC5223582D6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"MAJOR_ID","defName":"所属专业ID","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"FB022A4E-6C69-4B2D-A702-2B21B27782C1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_ID","defName":"班级ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"17736B42-6754-4393-85F4-BAA0FF81B76F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CLASS_NAME","defName":"班级名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"2034FFC8-F17B-4851-AB37-F8E875D4884E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"STUDENT_NUMBER","defName":"班级人数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"E3715C03-3ECA-44E2-BE7E-B7FB1ED085B2","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"ADVISER","defName":"辅导员","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"882236A3-E834-4921-82BF-647FECE186F3","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"ESTAB_DATE","defName":"成立时间","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"DATETIME","refDict":"","uiHint":"","id":"9363AD3C-A775-4469-A7E8-3B2956792F42","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"YEAR_NUMBER","defName":"学习年数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"A485EA0E-592C-4E85-BAD6-755B8C5EA9FD","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"}],"indexes":[],"correlations":[],"sysProps":{"fieldInputSuggest":false,"lePropOrient":"V","propShowFields":["N","K","T"],"nameTemplate":"{defKey}[{defName}]"},"notes":{}},{"defName":"学院","comment":"","notes":{},"properties":{"partitionBy":"","dorisDistributedBy":"DISTRIBUTED BY HASH(`COLLEGE_ID`) BUCKETS 1"},"defKey":"LE_SIMS_COLLEGE_1","id":"F3DB3FA7-9A2A-4DBE-A55A-C43814633F49","type":"L","headers":[{"refKey":"defKey","newCode":"defKey","value":"属性代码","hideInGraph":false},{"refKey":"defName","newCode":"defName","value":"属性名称","hideInGraph":false},{"refKey":"primaryKey","newCode":"primaryKey","value":"主键","hideInGraph":false},{"refKey":"baseType","newCode":"baseType","value":"数据类型","hideInGraph":false}],"fields":[{"defKey":"COLLEGE_ID","defName":"学院ID","comment":"","len":32,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"2AB2EC6F-016A-4674-94E7-A142F5663E4E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"COLLEGE_NAME","defName":"学院名称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"CB151BE0-2F81-4B6B-A1FD-852269480572","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"SHORT_NAME","defName":"学院简称","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"3CD57D1F-000D-459A-A43B-7DD2B0138905","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"INTRO","defName":"学院介绍","comment":"","len":"900","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"3E948CEC-3070-472C-AF92-F3CA11EC9D15","type":"VARCHAR","refDict":"","uiHint":"","id":"534EABA6-A4A8-48CD-830C-E2631E1D4FE7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"PROFESSION_NUMBER","defName":"专业个数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"791B2F0E-BD16-4D68-8A81-E4BBF07EE4D3","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"STUDENT_NUMBER","defName":"学生人数","comment":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"INT","refDict":"","uiHint":"","id":"A0C4C841-8490-4D33-9847-FA819E9FA7CC","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"PRESIDENT","defName":"院长","comment":"","len":90,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"domain":"54611CCC-CA4B-42E1-9F32-4944C85B85A6","type":"VARCHAR","refDict":"","uiHint":"","id":"9901DCAA-604F-44A5-8521-B8490B0515B8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"TENANT_ID","defName":"租户号","comment":"","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"VARCHAR","refDict":"","uiHint":"","id":"D0C24913-0F88-4440-931C-36E8381E9BF4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"REVISION","defName":"乐观锁","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"INT","refDict":"","uiHint":"","id":"50B2D2BF-2F5F-4AF3-99ED-E1DEA909E2B6","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811"},{"defKey":"CREATED_BY","defName":"创建人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"284D41F9-EDE4-4563-804A-5D2A340A70F2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"CREATED_TIME","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"59070C9C-13B7-4507-960B-2AD6D5035627","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"},{"defKey":"UPDATED_BY","defName":"更新人","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","len":32,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"VARCHAR","refDict":"","uiHint":"","id":"6C85C546-A976-4025-B32B-FABC7814718B","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64"},{"defKey":"UPDATED_TIME","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":true,"type":"DATETIME","refDict":"","uiHint":"","id":"673472FC-5BB3-4910-B4D6-77B88881412B","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098"}],"indexes":[],"correlations":[],"sysProps":{"fieldInputSuggest":false,"lePropOrient":"V","propShowFields":["N","K","T"],"nameTemplate":"{defKey}[{defName}]"}}],"namingRules":[{"id":"63F1DC0E-6A76-4B75-B3DA-4B00657B4E1B","defName":"属性代码不能超过32","intro":"","controlIntensity":"S","applyObjectType":"L","applyFieldType":"field","programCode":"return (data.field.defName||\"\").length <= 32","enable":true},{"id":"668CBEE6-E0B7-4ACE-B72E-63942963B191","defName":"长度不能超过32位","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"entity","programCode":"return (data.entity.defName||\"\").length <= 32","enable":true},{"id":"11BD987F-82E7-418E-A752-FDD84F1582A2","defName":"长度不能超过32位","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"field","programCode":"return (data.field.defName||\"\").length <= 32","enable":true},{"id":"29D0A8D9-ABE2-451F-8A39-52FAB02E62B9","defName":"索引名-长度不超过32个字符","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"index","programCode":"return (data.index.defName||\"\").length <= 32","enable":true},{"id":"B425A96F-6A31-4DBD-8743-A00DE28FB50F","defName":"不能使用保留字","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"index","programCode":"let sysWords = \"action,add,aggregate,all,alter,after,and,as,asc,avg,avg_row_length,auto_increment,between,bigint,bit,binary,blob,bool,both,by,cascade,case,char,character,change,check,checksum,column,columns,comment,constraint,create,cross,current_date,current_time,current_timestamp,data,database,databases,date,datetime,day,day_hour,day_minute,day_second,dayofmonth,dayofweek,dayofyear,dec,decimal,default,delayed,delay_key_write,delete,desc,describe,distinct,distinctrow,double,drop,end,else,escape,escaped,enclosed,enum,explain,exists,fields,file,first,float,float4,float8,flush,foreign,from,for,full,function,global,grant,grants,group,having,heap,high_priority,hour,hour_minute,hour_second,hosts,identified,ignore,in,index,infile,inner,insert,insert_id,int,integer,interval,int1,int2,int3,int4,int8,into,if,is,isam,join,key,keys,kill,last_insert_id,leading,left,length,like,lines,limit,load,local,lock,logs,long,longblob,longtext,low_priority,max,max_rows,match,mediumblob,mediumtext,mediumint,middleint,min_rows,minute,minute_second,modify,month,monthname,myisam,natural,numeric,no,not,null,on,optimize,option,optionally,or,order,outer,outfile,pack_keys,partial,password,precision,primary,procedure,process,processlist,privileges,read,real,references,reload,regexp,rename,replace,restrict,returns,revoke,rlike,row,rows,second,select,set,show,shutdown,smallint,soname,sql_big_tables,sql_big_selects,sql_low_priority_updates,sql_log_off,sql_log_update,sql_select_limit,sql_small_result,sql_big_result,sql_warnings,straight_join,starting,status,string,table,tables,temporary,terminated,text,then,time,timestamp,tinyblob,tinytext,tinyint,trailing,to,type,use,using,unique,unlock,unsigned,update,usage,values,varchar,variables,varying,varbinary,with,write,when,where,year,year_month,zerofill\".split(\",\");\nreturn sysWords.indexOf(data.index.defKey.toLowerCase())<0;","enable":true},{"id":"EF9E44D0-691A-4352-A079-CFF300107531","defName":"索引名-全小写","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"index","programCode":"return !/[A-Z]+/.test(data.index.defKey);","enable":true},{"id":"972EB2FB-4428-429D-8B0A-F082A8C7A94D","defName":"名称不能为空","intro":"","controlIntensity":"F","applyObjectType":"L","applyFieldType":"entity","programCode":"return data.logicEntity.defName","enable":true},{"id":"EEAEB9C5-BB6C-4E92-949B-D27928690D85","defName":"名称长度不超过32","intro":"","controlIntensity":"S","applyObjectType":"L","applyFieldType":"entity","programCode":"return (data.logicEntity.defName||\"\").length <=32","enable":true},{"id":"24E3F7E5-730D-4378-B72D-195D6B940352","defName":"不能使用保留字","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"entity","programCode":"let sysWords = \"action,add,aggregate,all,alter,after,and,as,asc,avg,avg_row_length,auto_increment,between,bigint,bit,binary,blob,bool,both,by,cascade,case,char,character,change,check,checksum,column,columns,comment,constraint,create,cross,current_date,current_time,current_timestamp,data,database,databases,date,datetime,day,day_hour,day_minute,day_second,dayofmonth,dayofweek,dayofyear,dec,decimal,default,delayed,delay_key_write,delete,desc,describe,distinct,distinctrow,double,drop,end,else,escape,escaped,enclosed,enum,explain,exists,fields,file,first,float,float4,float8,flush,foreign,from,for,full,function,global,grant,grants,group,having,heap,high_priority,hour,hour_minute,hour_second,hosts,identified,ignore,in,index,infile,inner,insert,insert_id,int,integer,interval,int1,int2,int3,int4,int8,into,if,is,isam,join,key,keys,kill,last_insert_id,leading,left,length,like,lines,limit,load,local,lock,logs,long,longblob,longtext,low_priority,max,max_rows,match,mediumblob,mediumtext,mediumint,middleint,min_rows,minute,minute_second,modify,month,monthname,myisam,natural,numeric,no,not,null,on,optimize,option,optionally,or,order,outer,outfile,pack_keys,partial,password,precision,primary,procedure,process,processlist,privileges,read,real,references,reload,regexp,rename,replace,restrict,returns,revoke,rlike,row,rows,second,select,set,show,shutdown,smallint,soname,sql_big_tables,sql_big_selects,sql_low_priority_updates,sql_log_off,sql_log_update,sql_select_limit,sql_small_result,sql_big_result,sql_warnings,straight_join,starting,status,string,table,tables,temporary,terminated,text,then,time,timestamp,tinyblob,tinytext,tinyint,trailing,to,type,use,using,unique,unlock,unsigned,update,usage,values,varchar,variables,varying,varbinary,with,write,when,where,year,year_month,zerofill\".split(\",\");\nreturn sysWords.indexOf(data.entity.defKey.toLowerCase())<0;","enable":true},{"id":"039BF435-DC77-4DA4-81C7-7F8076BF22BB","defName":"表名-全小写","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"entity","programCode":"return !/[A-Z]+/.test(data.entity.defKey);","enable":true},{"id":"CBEB0E30-19C6-427D-A8BF-61FF10E27A0B","defName":"表名-不允许空格","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"entity","programCode":"return !/\\s+/.test(data.entity.defKey);","enable":true},{"id":"1168C7C2-8E8E-4FB7-B639-B3DE839C395A","defName":"表名-英文及下划线","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"entity","programCode":"return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(data.entity.defKey);","enable":true},{"id":"D373637C-D3A6-4621-B656-6841A5444A76","defName":"表必须有comment注释","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"entity","programCode":"return (data.entity.defName||\"\").length > 0 || (data.entity.comment||\"\").length > 0","enable":true},{"id":"2BAB122B-8811-40BB-89F3-CDC24B5862D3","defName":"主键命名为 id,类型为 int 或 bigint,且为自增","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"entity","programCode":"let fields = data.entity.fields;\nfor(let i=0;i<fields.length;i++){\n let field = fields[i];\n if(field.primaryKey){\n return field.autoIncrement && (field.dbType.toUpperCase()==\"INT\"||field.dbType==\"BIGINT\");\n }\n}\nreturn false;","enable":true},{"id":"0B2F0BD2-3B84-4AB1-BA29-9DE9620AF608","defName":"必须有数据的创建时间以及创建人字段","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"entity","programCode":"let count = 0;\nlet fields = data.entity.fields;\nfor(let i=0;i<fields.length;i++){\n let field = fields[i];\n if(\"created_time,updated_time\".indexOf(field.defKey.toLowerCase())>=0){\n count ++;\n }\n}\nreturn count==2;","enable":true},{"id":"BEC54F19-52D5-4882-BCE1-4439785F8001","defName":"不能使用保留字","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"field","programCode":"let sysWords = \"action,add,aggregate,all,alter,after,and,as,asc,avg,avg_row_length,auto_increment,between,bigint,bit,binary,blob,bool,both,by,cascade,case,char,character,change,check,checksum,column,columns,comment,constraint,create,cross,current_date,current_time,current_timestamp,data,database,databases,date,datetime,day,day_hour,day_minute,day_second,dayofmonth,dayofweek,dayofyear,dec,decimal,default,delayed,delay_key_write,delete,desc,describe,distinct,distinctrow,double,drop,end,else,escape,escaped,enclosed,enum,explain,exists,fields,file,first,float,float4,float8,flush,foreign,from,for,full,function,global,grant,grants,group,having,heap,high_priority,hour,hour_minute,hour_second,hosts,identified,ignore,in,index,infile,inner,insert,insert_id,int,integer,interval,int1,int2,int3,int4,int8,into,if,is,isam,join,key,keys,kill,last_insert_id,leading,left,length,like,lines,limit,load,local,lock,logs,long,longblob,longtext,low_priority,max,max_rows,match,mediumblob,mediumtext,mediumint,middleint,min_rows,minute,minute_second,modify,month,monthname,myisam,natural,numeric,no,not,null,on,optimize,option,optionally,or,order,outer,outfile,pack_keys,partial,password,precision,primary,procedure,process,processlist,privileges,read,real,references,reload,regexp,rename,replace,restrict,returns,revoke,rlike,row,rows,second,select,set,show,shutdown,smallint,soname,sql_big_tables,sql_big_selects,sql_low_priority_updates,sql_log_off,sql_log_update,sql_select_limit,sql_small_result,sql_big_result,sql_warnings,straight_join,starting,status,string,table,tables,temporary,terminated,text,then,time,timestamp,tinyblob,tinytext,tinyint,trailing,to,type,use,using,unique,unlock,unsigned,update,usage,values,varchar,variables,varying,varbinary,with,write,when,where,year,year_month,zerofill\".split(\",\");\nreturn sysWords.indexOf(data.field.defKey.toLowerCase())<0;","enable":true},{"id":"082E186D-7B02-4F1C-9ECE-378AB98C4845","defName":"字段-全小写","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"field","programCode":"return !/[A-Z]+/.test(data.field.defKey);","enable":true},{"id":"F3CE5C67-23B6-4E7B-BA91-D5F0BCBC9E6A","defName":"字段-不允许空格","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"field","programCode":"return !/\\s+/.test(data.field.defKey);","enable":true},{"id":"21AFEAC8-96D7-467F-8320-A33887FC0C5D","defName":"字段-英文及下划线","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"field","programCode":"return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(data.field.defKey);","enable":true},{"id":"2BBDE47B-6926-4E1A-AE57-D4F6E5399EE6","defName":"字段-必需有comment注释","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"field","programCode":"return (data.field.defName||\"\").length > 0 || (data.field.comment||\"\").length > 0","enable":true},{"id":"5E181E43-0D72-498F-8178-4C1CDBC89A16","defName":"字段-不能与表名相同","intro":"","controlIntensity":"F","applyObjectType":"P","applyFieldType":"field","programCode":"return data.field.defKey != data.entity.defKey;","enable":true},{"id":"DE8F8598-5D53-4727-A837-7816C2AF99D9","defName":"外键-字段必须具有表名及其主键","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"field","programCode":"let relas = data.entity.correlations;\nfor(let i=0;i<relas.length;i++){\n let rela = relas[i];\n if(data.field.defKey==rela.myField&&rela.myRows==\"n\"){\n if(rela.myField==(rela.refEntity+\"_\"+rela.refField)){\n return true;\n }else{\n return false;\n }\n }\n}\nreturn true;","enable":true},{"id":"D330BCC3-DBAB-4677-8C5A-A301003A5878","defName":"时间字段类型尽量选取 timestamp","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"field","programCode":"if(data.field.defName.lastIndexOf(\"日期\")>=0 || data.field.defName.lastIndexOf(\"时间\")>=0 ){\n if(data.field.dbType.toLowerCase().indexOf(\"date\")>=0){\n return true;\n }else{\n return false;\n }\n};\nreturn true;","enable":true},{"id":"2E7FDA44-989A-4C5B-A0C5-12B1E40E57B1","defName":"索引名-英文及下划线","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"index","programCode":"return /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(data.index.defKey);","enable":true},{"id":"023450B3-AAE2-4DC1-AE63-2196DD82823D","defName":"索引名-主键的名称以pk_开头,唯一键以uk_开头,普通索引以 ix_开头","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"index","programCode":"if(data.index.unique){\n return data.index.defKey.indexOf(\"uk_\")==0;\n}else{\n return data.index.defKey.indexOf(\"ix_\")==0;\n}","enable":true},{"id":"1C563E17-262B-4EB6-87F0-203CAC667CF0","defName":"不允许存在blob、text等大字段","intro":"","controlIntensity":"S","applyObjectType":"P","applyFieldType":"field","programCode":"if(\"blob,text\".indexOf(data.field.dbType.toLowerCase())>=0){\n return false;\n}\nreturn true;","enable":true}]}