| 1 |
- {"name":"成本管理二期","describe":"成本管理","avatar":"","version":"4.9.2","createdTime":"2024-5-23 16:36:04","updatedTime":"2024-6-7 16:09:01","dbConns":[],"profile":{"default":{"db":"29D1CE08-4C35-4D2D-AAA9-23D93305B52E","dbConn":"AB260C61-FBEB-4832-ADBD-E03CCFE82D96","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":""}},"menuWidth":"241px"},"entities":[{"id":"15372773-A008-4A5F-B23E-75E100F99B47","defKey":"cost_center","defName":"成本中心表","comment":"","properties":{},"fields":[{"defKey":"company_code","defName":"","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E49448AA-E299-4E2A-B4DD-E2A5A4DC2965","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"cost_center_code","defName":"","comment":"","domain":"","type":"VARCHAR","len":50,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1AD66764-F41C-4547-B1FA-20A935807D71","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"cost_center_name","defName":"","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"2D8FEB6B-498E-47A7-AA36-B48F60A08A26","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"cost_category","defName":"","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"0170012C-B492-4B0D-8DFC-A846C2432623","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"status","defName":"","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F8C747B6-4A23-4DD2-8548-7450C794D881","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"65E2E950-34BE-49A8-98A3-9EB13E974B8F","defKey":"hour_rate","defName":"小时费率表","comment":"","properties":{},"fields":[{"defKey":"year","defName":"年度","comment":"","domain":"","type":"VARCHAR","len":4,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B7294178-FFFD-44E1-9096-43DA30382968","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"cost_center_code","defName":"成本中心代码","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"67E63272-228B-4A7B-A9ED-562B24F20D0A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"factory","defName":"工厂代码","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3A505DE2-B4D2-4203-AAC0-FA6D90EDC1A6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"labor_hour_rate","defName":"人工小时费率","comment":"","domain":"","type":"DECIMAL","len":13,"scale":3,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"0621221F-577F-410E-9099-AD251DAEC448","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"equip_hour_rate","defName":"设备小时费率","comment":"","domain":"","type":"DECIMAL","len":13,"scale":3,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"8D540C7B-955B-45E2-8F7A-8D2F09ADBCEA","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"fuel_hour_rate","defName":"燃动小时费率","comment":"","domain":"","type":"DECIMAL","len":13,"scale":3,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"350088D8-058E-484B-9D64-828870A3E635","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"auxiliary_hour_rate","defName":"辅料小时费率","comment":"","domain":"","type":"DECIMAL","len":13,"scale":3,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"061734C8-8B5B-442D-8009-F7CFC44D3480","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"other_hour_rate","defName":"其他小时费率","comment":"","domain":"","type":"DECIMAL","len":13,"scale":3,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"2A092CB8-230B-411D-9926-9006108D302F","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"effective_date","defName":"生效日期","comment":"","domain":"","type":"DATE","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"4D1F80F6-B100-46BD-AB14-46E781970172","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"expiration_date","defName":"失效日期","comment":"","domain":"","type":"DATE","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"629B4427-C314-46B4-A5EF-9F9BCC72CE44","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"guardian","defName":"维护人员","comment":"","domain":"","type":"VARCHAR","len":30,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B22F9668-187E-4910-B315-93BD87BC904E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"maintenance_time","defName":"维护时间","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"799A2E1C-891C-4C1A-B831-2488ED50F4BC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"reserve_1","defName":"预留字段1","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"924EB0A3-3B36-49EF-B6E1-3175E207CD22","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"reserve_2","defName":"预留字段2","comment":"","domain":"","type":"DECIMAL","len":6,"scale":3,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"11EF41CC-1975-421B-A3CC-C703DCA1BE9F","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"id","defName":"主键","comment":"","domain":"16120F75-6AA7-4483-868D-F07F511BB081","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"91AC3D31-CB32-454B-B563-C05155DFBC7F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"0C137DAC-F352-41FC-83D4-852123619E5C","defKey":"sap_subfactory","defName":"同步SAP工厂信息","comment":"","properties":{},"fields":[{"defKey":"id","defName":"主键","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"894B4818-0F6B-4ABC-80C3-EDEC93A699F0","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"company_code","defName":"公司代码","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6B3D866D-6236-44F2-A78C-F60CD70D1971","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"factory","defName":"工厂代码","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"92D955D7-1331-428E-B725-66F8203F9225","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"1271309E-2310-435D-B129-DC3F72BBA013","defKey":"diy_version_new","defName":"物料号最新的版本号","comment":"","properties":{},"fields":[{"defKey":"id","defName":"主键","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"2244E62A-31B7-4046-9B5A-04D57AA6234D","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"projectName","defName":"项目名称","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"44F69E4B-9E02-40CE-A66D-690B5F3D8E57","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"stage","defName":"阶段","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3E8FAD6B-B69F-4F76-889D-DC491B3C779C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"date","defName":"日期","comment":"","domain":"","type":"VARCHAR","len":30,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B62BC5EC-DE88-4D1A-B2AD-C2A6C7015CE7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"version","defName":"版本号","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"EEBE305F-AB80-43B1-A620-33BD97232162","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"werks","defName":"工厂","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F0B74C38-D122-426E-9967-A019E9C3FC0C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"matnr","defName":"物料号","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"73E27B7A-9823-411B-A52E-18428B09C45C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"status","defName":"状态","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"83603E78-9A0D-43EF-A75B-A11B3809060D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"createdTime","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CCAAB7F6-3A10-407E-948E-04C9E691C23D","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"finishTime","defName":"完成时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6C3F517D-46A7-43CC-80D1-2C9DEC854725","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"batchname","defName":"批次","comment":"","domain":"","type":"VARCHAR","len":50,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"2D3DA37F-EDC1-4DE4-AC02-8FF542EB49C7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"userid","defName":"用户id","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"A071A8A1-1840-4D15-A38B-245895B95FA2","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"graphicnumber","defName":"图号","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1038828B-161A-4DFF-ADE4-DCAEFDD60D1C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"projectPspid","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"8C4F8BA2-1D57-4A3F-B750-DBF1D32D4450","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"projectCate","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3A20DC52-B11A-4270-BF81-302A75F86334","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"keylost","defName":"","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"8E90BC94-31A1-426B-9932-8F6390B8FD21","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"mknum","defName":"","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"ADC8DB96-7D3D-45B2-8330-88CAD4766C88","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[{"defKey":"matnr","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"B61421F5-E4B2-41B8-8A69-6388C765522C","fieldDefKey":"73E27B7A-9823-411B-A52E-18428B09C45C"}],"id":"68BA8FC5-24D4-43EC-A8BD-246FD00E6CDF"},{"defKey":"projectName","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"68B13AA4-882A-419A-9700-7F374F53CCA8","fieldDefKey":"44F69E4B-9E02-40CE-A66D-690B5F3D8E57"}],"id":"FE00E4C5-C452-47AF-89C4-0EC4B3C38FEC"},{"defKey":"stage","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"A742D85E-6452-49B8-B7A1-3830E1AF3D7B","fieldDefKey":"3E8FAD6B-B69F-4F76-889D-DC491B3C779C"}],"id":"067B888B-EC47-4035-B2B1-18F3116AD387"},{"defKey":"version","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"356E024E-D277-42E0-B754-3C27DFE73C18","fieldDefKey":"EEBE305F-AB80-43B1-A620-33BD97232162"}],"id":"5E5131A7-531C-497A-88CB-E93AFABCAC10"},{"defKey":"werks","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"BE36E2BE-9FFD-4BD4-A687-D9A992A3B889","fieldDefKey":"F0B74C38-D122-426E-9967-A019E9C3FC0C"}],"id":"63D92237-2877-4AE3-A01E-64F5F51CAAFE"}],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"FDB6475C-445C-40D7-A2E7-AE1392BD75D7","defKey":"sys_dict_data","defName":"字典数据表","comment":"","properties":{},"fields":[{"defKey":"dict_code","defName":"字典编码","comment":"","domain":"","type":"BIGINT","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"FEED7E2A-5221-452A-A815-5EA98492BEDB","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dict_sort","defName":"字典排序","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"0","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"D4745119-96BC-41A3-9BAA-5D3104B5483C","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dict_label","defName":"字典标签","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"73FE5FBD-9454-4B5B-AE16-85C93BE1013F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dict_value","defName":"字典键值","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"13CF3B5E-575F-4E4B-902E-6627AC12410F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dict_type","defName":"字典类型","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"DDC8F344-BE93-4676-A40C-C76EFB7D8F9D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"css_class","defName":"样式属性(其他样式扩展)","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"C4989163-0CF7-4BE5-88A6-A70310EA6992","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"list_class","defName":"表格回显样式","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E7A2B940-FA0F-43D3-A360-524A0D860A1D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"is_default","defName":"是否默认(Y是 N否)","comment":"","domain":"","type":"CHAR","len":1,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'N'","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CFD012FA-79C9-4053-BED2-D5F756601572","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"status","defName":"状态(0正常 1停用)","comment":"","domain":"","type":"CHAR","len":1,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'0'","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CB0752C8-CEC3-4F0A-89B1-1AE20B8F4968","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"create_by","defName":"创建者","comment":"","domain":"","type":"VARCHAR","len":64,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"EE91C7C2-98D5-4A94-86FD-D1B969AE6EF8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"create_time","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"20FAA003-BC26-4D1A-9BCF-A2615C8FFB5C","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"update_by","defName":"更新者","comment":"","domain":"","type":"VARCHAR","len":64,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E7777E3B-52A8-4D8E-83A4-EE30FD9E7A47","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"update_time","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6D27918B-2ED7-4DF5-AFD8-6EC92D5E4053","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"remark","defName":"备注","comment":"","domain":"","type":"VARCHAR","len":500,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"A644FBD0-A87B-4059-9147-8A65EE5535B2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"7AE6268A-7B4D-4F6A-8E6C-19F7C93C3C49","defKey":"sys_dict_type","defName":"字典类型表","comment":"","properties":{},"fields":[{"defKey":"dict_id","defName":"字典主键","comment":"","domain":"","type":"BIGINT","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"2864CC80-6949-4C21-809A-53003E91BDF8","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dict_name","defName":"字典名称","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"71A78792-B4DD-432F-B636-E1376EFC2C86","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dict_type","defName":"字典类型","comment":"","domain":"","type":"VARCHAR","len":100,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6E210E32-73F7-470D-880B-CE5D4A959652","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"status","defName":"状态(0正常 1停用)","comment":"","domain":"","type":"CHAR","len":1,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"'0'","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F0CBB590-1BBA-4E38-9850-3BB064F008C2","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"create_by","defName":"创建者","comment":"","domain":"","type":"VARCHAR","len":64,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"34DB7AEC-5048-47A7-9F8F-AAFB15D387C5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"create_time","defName":"创建时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"7436C7CA-53F7-4D54-88CF-E30135945EF1","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"update_by","defName":"更新者","comment":"","domain":"","type":"VARCHAR","len":64,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"DEDD8E11-31EA-4D18-A272-D8126090DD04","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"update_time","defName":"更新时间","comment":"","domain":"7CFFA0D3-6A93-4DDC-BC10-DF21211064DC","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"35339139-B2AD-4E26-BE49-FD973FA944FB","baseType":"89D69E81-EA34-42EE-9FA2-93B8BD27E098","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"remark","defName":"备注","comment":"","domain":"","type":"VARCHAR","len":500,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"7E6A9ABC-F1B5-434E-8A88-AFA76836F474","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[{"defKey":"dict_type","unique":true,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"5780595B-CF9F-45BC-B2ED-671B7930E9EF","fieldDefKey":"6E210E32-73F7-470D-880B-CE5D4A959652"}],"id":"D5C9FC5C-3A0C-4B51-A325-B0BC5E0C1CE8"}],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"7D1DEA8A-7373-4659-B1A7-B0E72416EDA7","defKey":"material","defName":"物料表,该表内容从sap里抓取获得","comment":"","properties":{},"fields":[{"defKey":"factory","defName":"工厂代号(工厂id)","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F2B3E4D0-1A13-44E0-AD48-10D4AF232781","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"material_number","defName":"物料号","comment":"","domain":"","type":"VARCHAR","len":54,"scale":"","primaryKey":false,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"BADBBE3C-453A-47BD-A255-3A2DE31ADDE5","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"material_type","defName":"物料类型","comment":"","domain":"","type":"VARCHAR","len":15,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"485350D5-E666-46F8-B466-C83BDF026B36","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"product_category","defName":"产品类型","comment":"","domain":"","type":"VARCHAR","len":30,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"4C4B6C92-49BE-4E9B-88AD-D7793AD854D2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"product_name","defName":"物料名称","comment":"","domain":"","type":"VARCHAR","len":120,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3251CEF5-A600-4CA4-9E41-A523F9B93D49","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"norms","defName":"","comment":"","domain":"","type":"VARCHAR","len":210,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"9E52044E-B5F5-485C-AAD7-C1599C1E230A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"manufacturing_type","defName":"制造类型","comment":"","domain":"","type":"VARCHAR","len":30,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F4309FEF-1AB9-4D28-A84B-7C007AD1614C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"inventory_unit","defName":"库存单位","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"175E90FD-3C70-4CBB-AF86-76824E14D07E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"purchasing_unit","defName":"购买单价","comment":"","domain":"","type":"VARCHAR","len":60,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"9A5908FE-AF1E-447A-B3AF-8572BD5F95AB","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"old_material_group","defName":"所属旧物料组","comment":"","domain":"","type":"VARCHAR","len":30,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"DD057882-55E4-483E-8341-E410EADE15F9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"standard_cost","defName":"标准成本","comment":"","domain":"","type":"VARCHAR","len":20,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"16A0AAF5-C15D-4BC3-A963-0122A49AEDA0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"abc_level","defName":"","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"56133029-8ADA-4AF0-9B6B-54FD99817269","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"effective_state","defName":"","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"7A70E0A5-37EB-4B82-ABD4-735B45F27441","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"profit_center","defName":"","comment":"","domain":"","type":"VARCHAR","len":50,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"38041E3A-1584-4559-926E-4CA0CE5EC744","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"iswbs","defName":"","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"AB65B9E4-26FE-4826-A59C-6E7D606EEC95","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"graph_number","defName":"图号","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E6B036D1-0DC2-48AA-B679-C11312FEFE21","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"mtbez","defName":"","comment":"","domain":"","type":"VARCHAR","len":80,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"98F2AC12-1185-4AFE-97D2-FDF6D6D7A5B1","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"wgbez","defName":"","comment":"","domain":"","type":"VARCHAR","len":80,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"7615D684-08BE-460C-9D4A-3C1AABEF2A9E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"sobsl","defName":"","comment":"","domain":"","type":"VARCHAR","len":10,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"BC35E308-2D86-4CC5-8AC4-A3FF1759F97E","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[{"defKey":"factory","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"F710200A-3C28-4D7A-9D40-53081AD9B4CE","fieldDefKey":"F2B3E4D0-1A13-44E0-AD48-10D4AF232781"}],"id":"EC09805C-86B4-415B-921D-E173A8E7F11D"},{"defKey":"materialNumber","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"6241323A-7DA4-4229-BD76-6D2D2F9CCB52","fieldDefKey":"BADBBE3C-453A-47BD-A255-3A2DE31ADDE5"}],"id":"A8CC9685-8808-48A7-95D7-60CEDA5848F8"}],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"236F8414-6100-429D-8DEC-A223B0BDA052","defKey":"avl_project","defName":"AVL项目","comment":"","properties":{},"fields":[{"defKey":"mpvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CE881FE8-29DB-4676-ACAB-525BCEC8F1DC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"code","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E1714B7E-289C-45CC-9286-58482060DD1A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"prps_posid","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"7E953CFE-3A5F-4E83-B9F0-79914766D827","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"factory","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"531CCF0B-0723-485D-B0BD-EE75AABA552D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"material_number","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"13EC0E8D-4C11-499A-8185-8CAC56C318E3","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"mnvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"BF6CF3EE-81FD-4F7C-A801-BC17C44904F4","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"ptname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"754E892C-06A1-4074-B9DD-1634AD3B29D2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"snvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6CA5ED47-41A0-4A5D-A4F1-B6895C7BC3E6","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"resb_bdmng","defName":"","comment":"","domain":"","type":"DOUBLE","len":255,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B18DD194-6A50-4AF1-B3E6-C859C0889653","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"prps_pspnr","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"81113555-896B-4020-8355-869AF729C071","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"product_name","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"8E58B44F-C0A9-43EA-B506-725768AB1CAB","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"graph_number","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6092E10E-002C-4FDD-8262-21BA22E58A16","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_version_number","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"71E444DB-7EEB-41E2-968C-31CBA26E425D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_material_cost_total","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E0E36FBE-EF12-4576-B11F-027B4CC448B4","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_material_cost_accumulated_em","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"D8D63239-9252-44DF-9A6B-220087D98760","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_total_standard_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1946D1E3-1944-48AF-9884-2954BB5BA627","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_labor_cost_total_unit_product_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3EA74F84-2EEF-41AF-AB7B-A18D6AD4576B","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_material_cost_total_em","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"83705511-37D9-4345-A9C4-43F8909C8F81","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_material_cost_total_edcu","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"88EA6551-4EEF-465F-9C2C-5115928C2E5B","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_total_standard_cost_lie","defName":"","comment":"","domain":"","type":"DOUBLE","len":22,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"8A709E17-C9C9-44AE-B494-7E878A810F1E","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_version_number","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"4F0E4D8C-1D1C-4743-86E6-E4896006396D","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_material_cost_total","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"D67C50FA-D192-4112-A907-346274D908BC","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_material_cost_accumulated_em","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1BC655B5-FCC9-44FB-A6EE-654F78584F8D","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_total_standard_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"ADEFB32A-829E-47DD-BF5A-8EFC1DCFA46F","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_labor_cost_total_unit_product_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"16FEA032-1D87-480B-8AFF-F523C3D1E8F0","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_material_cost_total_em","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1816C315-27F2-4512-9650-AE7765B25FE3","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_material_cost_total_edcu","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"C79DCDF4-37BD-4D46-A975-21984C945D77","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_total_standard_cost_lie","defName":"","comment":"","domain":"","type":"DOUBLE","len":22,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"432611A9-249D-49CE-84E3-6E717444E743","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_version_number","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"A05AE17F-2A86-426B-97A3-BCE3F87FC1E0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_material_cost_total","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"44753482-08A5-4647-8231-DD694135DF19","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_material_cost_accumulated_em","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"5FF9B3F7-1B73-400A-8409-B2B69EB4B168","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_total_standard_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":15,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"C00999A5-FA00-48E7-AC49-438BE151BD6F","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_labor_cost_total_unit_product_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B0C0D1FF-F4C5-4B42-AE0F-9A8C6F5D0884","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_material_cost_total_em","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"EE7A6FFC-2382-4FBA-9542-93F2AD2C22C9","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_material_cost_total_edcu","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1B62BA2D-CCEE-4683-900B-988689AF4283","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_total_standard_cost_lie","defName":"","comment":"","domain":"","type":"DOUBLE","len":22,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CDAD5BF3-CCA3-40A5-9446-8007FA4D5BF2","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"crm_proj_scmingxi_num","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"DA9DAF78-F236-4245-A1E0-587D1EEE3D70","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"crm_proj_zz3_stitle","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"A3F98CDA-B948-4C04-B522-8544053F7F5C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"crm_proj_Shichangyuce_jiaoriqi","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"5229E8E1-07A7-4FB3-BAA8-CB610541D7EA","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"sap_sale_VBPA_PERNR","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"4EE717A5-1A2D-4D90-9BD3-96AA4D299B34","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"crm_proj_org_employee_sname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"077F3240-3952-4EC8-9EE6-A53DB8FE38E7","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"sap_log_shipped_qty","defName":"","comment":"","domain":"","type":"DOUBLE","len":22,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"52A0BC33-E49F-4818-ACC1-E84B9CF5A596","baseType":"","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"crm_proj_account_sname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"BE132171-DAFB-4683-997C-DB7405873920","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"sap_log_ship_to_name","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F33F68D4-9402-4A96-BE2D-E5C55474E9C2","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"id","defName":"","comment":"","domain":"6BC8F04B-6CFA-4995-98D3-318F5CDD774E","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":true,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"12E787AD-1EF6-4547-80C1-9D626D6CEE8E","baseType":"1D764C4A-6F9F-421E-B11A-6F3E23B51811","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"qiname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"384DEDA1-EF05-4B5C-831B-7A8F12854CB9","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"proj_zzls","defName":"","comment":"","domain":"","type":"VARCHAR","len":50,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"FBCAA72E-FAB0-4198-A044-007887E9AFC8","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"prps_post1","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"CB8FE5D9-4C2A-4CBC-BAE2-3A7AFBC3B5D0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"proj_verna","defName":"","comment":"","domain":"","type":"VARCHAR","len":50,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3D29AE55-DF54-4835-865A-019302F16503","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_total_lie","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1A857BF2-0C7A-43C7-8BF7-08A16F177CE0","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"A_unit_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6A6FA6DE-CC5F-4C9E-8193-C9067D4A5452","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_total_lie","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B5A8DDB8-796D-4C78-B71F-5D0376D85ACC","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"B_unit_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"19463F68-54C7-44AB-A242-AE4372E99719","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_total_lie","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"3E9F8AE9-F6C4-4DF1-9D2B-79691B6D61F9","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"C_unit_cost","defName":"","comment":"","domain":"","type":"DECIMAL","len":16,"scale":4,"primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"158FD5D2-0527-4382-9CBA-9778D48E48B2","baseType":"1A0BDC09-0792-4174-9E8E-80BE8DF44B8E","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[{"defKey":"code","unique":false,"defName":null,"comment":"","fields":[{"ascOrDesc":"A","id":"8E038BB9-DFAB-4043-82A3-55BC2A43DFD9","fieldDefKey":"E1714B7E-289C-45CC-9286-58482060DD1A"}],"id":"5C7355F1-FFE0-4FF6-B6FD-7A8D262DBDD5"}],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]},{"id":"BC5A6F14-212E-45C2-9D41-DC1F439AC619","defKey":"mdm_project","defName":"MDM项目","comment":"","properties":{},"fields":[{"defKey":"code","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":true,"notNull":true,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"27CF4B08-8915-4A63-AFAD-2E8731206725","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"ptvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"AFD8FC89-6141-4341-A284-1EB7FD555F94","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"ptname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B5987D38-9752-444D-95DC-27F97EA91D9F","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"mpvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"9C8CDEF3-2896-40BC-A143-BF034A8C5D8A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"mnvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"9D356679-CFFB-4EEF-A077-0CCBDB361836","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"snvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"135538D2-344C-4187-AFBE-81EB16817278","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"ccvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"6508D50D-6E68-427D-BBF5-3DACCACA4744","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"nvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1FBBF001-F985-4D18-ACDE-52FE5611092C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"buvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"1DB0DA93-2900-4649-BC95-67D62AA6AD1C","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"buname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"65E76D0F-6D21-4BE1-B340-F14466EC82B0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"divalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"FB8C8AC6-6633-475A-AE49-98E11C7C1930","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"qivalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"A3FA0C86-AF0E-4B05-8A10-E520AEC3EFAC","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"qiname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"F2E40A12-F242-4B10-9FDA-DA73ABD06179","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dqvalue","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"B000D214-9D5D-4916-901D-709D9B6B2E3A","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"dqname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"730770B3-36F0-4848-ADDC-AB0182744CF3","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"billname","defName":"","comment":"","domain":"9092C4E0-1A54-4859-ABBB-5B62DBC27573","type":"","len":"","scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"E058648B-D1C4-4F10-B264-9C6759F423BF","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"},{"defKey":"starttime","defName":"","comment":"","domain":"","type":"VARCHAR","len":50,"scale":"","primaryKey":false,"notNull":false,"autoIncrement":false,"defaultValue":"","hideInGraph":false,"refDict":"","attr1":"","attr2":"","attr3":"","attr4":"","attr5":"","attr6":"","attr7":"","attr8":"","attr9":"","id":"93581770-00F3-428A-BD56-0124F07699F0","baseType":"FC9790A7-36B8-4A48-8F9A-BC1042BCFE64","extProps":{},"uiHint":"642D2E0A-8846-4549-BE56-8C0473F26EDE"}],"indexes":[],"sysProps":{"nameTemplate":"{defKey}[{defName}]"},"headers":[{"freeze":false,"refKey":"hideInGraph","hideInGraph":true},{"freeze":true,"refKey":"defKey","hideInGraph":false},{"freeze":true,"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},{"freeze":false,"refKey":"extProps","hideInGraph":true}],"correlations":[]}],"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":["15372773-A008-4A5F-B23E-75E100F99B47","65E2E950-34BE-49A8-98A3-9EB13E974B8F","FDB6475C-445C-40D7-A2E7-AE1392BD75D7","7AE6268A-7B4D-4F6A-8E6C-19F7C93C3C49","236F8414-6100-429D-8DEC-A223B0BDA052","BC5A6F14-212E-45C2-9D41-DC1F439AC619"],"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":[]},{"defKey":"sap","defName":"SAP导出数据","refEntities":["0C137DAC-F352-41FC-83D4-852123619E5C","1271309E-2310-435D-B129-DC3F72BBA013","7D1DEA8A-7373-4659-B1A7-B0E72416EDA7"],"refViews":[],"refDiagrams":[],"refDicts":[],"id":"65FC6BC3-1799-4797-BFFD-24BAAFBABC21","refLogicEntities":[]},{"defKey":"cost","defName":"卷积","refEntities":[],"refViews":[],"refDiagrams":[],"refDicts":[],"id":"401851EF-F256-40D3-87FD-420C871DEFFF","refLogicEntities":[]},{"defKey":"cost-compare","defName":"成本对比","refEntities":[],"refViews":[],"refDiagrams":[],"refDicts":[],"id":"78EA1BE7-E8DA-4B0C-8EA3-6930F9D08558","refLogicEntities":[]},{"defKey":"excavate","defName":"成本挖掘","refEntities":[],"refViews":[],"refDiagrams":[],"refDicts":[],"id":"8C87C2BA-BBDF-43A2-A8D6-0E35AE171A35","refLogicEntities":[]}],"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":"1逻辑模型","defName":"","relationType":"field","canvasData":{"cells":[{"id":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","shape":"group","position":{"x":-10,"y":510},"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","b0b6d230-8b0f-4f2f-9d2e-b3d8cd88b234","e4c40d33-e4c2-4dea-9413-62f7c9d772db","06ca758c-3187-47bd-8136-ca10dd94640b","96e751a3-f338-4cc1-937a-b8d1a6acfa1d","db2e0214-00dd-4c58-ba37-627fd8cba8d2","aa201a0f-fd7d-4393-b33a-589fa51f91b6","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","c306ccee-689c-49cf-a846-ec1e6a451eb7","d9b4230a-9a29-4b06-9bc2-7d0021d99423","ff5515d5-21a9-4272-86b2-c984273febc1","32dfec65-cfe2-4f80-9f86-6dfd50c2f07f","e6458913-d5bb-4d3e-8194-4e983ee9561b","50255b65-de6e-4032-b606-58482a662442","9015a485-4289-4b5e-925c-5d5dc7851d2e","54f3478c-85b5-4b98-8c68-332a9a037140","182b311f-746e-49c8-8bfa-c0fec449eb2a","db184b6f-8cb3-4bbb-8290-9c5438f9c11b","80e84e01-fbda-4caf-a016-eae9c69aea5f","bd3bbe46-89e6-43dc-a1a0-59968252238d","14913b43-5f56-45c0-8a8b-128685ae8831","db184b6f-8cb3-4bbb-8290-9c5438f9c11b","9015a485-4289-4b5e-925c-5d5dc7851d2e","e4d93dce-4df5-403b-bd9d-f126fd1cb7ee","b27fbbab-850d-4577-bd84-dfec38412d43","b82b944c-8659-4720-b69e-e6e066b53882","bbf38d0b-7d61-4a17-b39c-c56ae830f9bd","ab4a33f9-98c1-4690-87aa-46e590bd7b0c","9a99fd26-86c6-42b3-9fe1-5380d3314003","4e142b26-fa22-4806-aee3-7b598f1eaede","a2c4ce7b-8f43-4dc6-b29f-71454f6de700","11267869-dc5a-411d-b763-fc0ad08db8a6"]},{"id":"d97d6f07-8365-40ab-bde8-34511452e62f","shape":"edit-node","position":{"x":200.00000000001478,"y":1809.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":"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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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","attrs":{"line":{"strokeDasharray":""}}},{"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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"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)","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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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)","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"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)","attrs":{"line":{"strokeDasharray":""}}},{"id":"e9895e8e-4c87-4ca5-9855-3155b08e1e9a","link":"{\"type\":\"internally\",\"value\":\"65E2E950-34BE-49A8-98A3-9EB13E974B8F\"}","shape":"edit-node","position":{"x":90.000000000015,"y":629.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":"71e702a2-681a-453f-a15e-30ff10e3b439","shape":"edit-node","position":{"x":310.000000000015,"y":629.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":"ff5515d5-21a9-4272-86b2-c984273febc1","shape":"edit-node","position":{"x":465.000000000015,"y":629.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":"8e8dd851-2e95-4bd5-8623-645b6e590bab","shape":"edit-node","position":{"x":660.0000000000183,"y":629.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":"aa15bf4b-eb5c-4beb-94be-98c9cf34c41a","shape":"edit-node","position":{"x":870.0000000000183,"y":619.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":"aa201a0f-fd7d-4393-b33a-589fa51f91b6","shape":"edit-node","position":{"x":1310,"y":1570},"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":"14b1e9e8-3950-432b-9efd-83bfe8ce0d37","shape":"edit-node","position":{"x":950.000000000015,"y":1799.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":"7f4cc984-aefc-452a-bd22-39ddc3fd7a43","shape":"edit-node","position":{"x":690.0000000000107,"y":1799.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":"db2e0214-00dd-4c58-ba37-627fd8cba8d2","shape":"edit-node","position":{"x":975.000000000015,"y":1649.9999999999927},"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":"e6458913-d5bb-4d3e-8194-4e983ee9561b","link":"{\"type\":\"internally\",\"value\":\"0C137DAC-F352-41FC-83D4-852123619E5C\"}","shape":"edit-node","position":{"x":790.0000000000183,"y":1050},"label":"### 工厂\n---\nid\n工厂代码","fillColor":"#DDE5FF","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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":"a2aac2ea-416f-4c73-81c2-cd1000ccd7fe","shape":"edit-node","position":{"x":425.000000000015,"y":1809.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":"96e751a3-f338-4cc1-937a-b8d1a6acfa1d","shape":"edit-node","position":{"x":700.000000000015,"y":1570},"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":"a9ad3011-be3b-45ce-9200-cbd99874e48d","shape":"edit-node","position":{"x":1060,"y":1470},"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":"764cbe48-4a33-4752-94a9-67bda1226718","shape":"edit-node","position":{"x":180.000000000015,"y":1240},"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":"ecf1f808-4e1e-4f2f-bb68-016cfd5d76b2","shape":"edit-node","position":{"x":20,"y":1240},"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":"5bed2e45-b438-46cc-8ee1-72eeaa2c78c6","shape":"edit-node","position":{"x":190,"y":1460},"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":"b0b6d230-8b0f-4f2f-9d2e-b3d8cd88b234","shape":"edit-node","position":{"x":160,"y":1019.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":"c306ccee-689c-49cf-a846-ec1e6a451eb7","shape":"edit-node","position":{"x":360.0000000000148,"y":1029.999999999989},"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":"32dfec65-cfe2-4f80-9f86-6dfd50c2f07f","link":"{\"type\":\"internally\",\"value\":\"15372773-A008-4A5F-B23E-75E100F99B47\"}","shape":"edit-node","position":{"x":660.0000000000183,"y":1064.999999999989},"label":"### 成本中心\n---\nid\n成本中心代码","fillColor":"#DDE5FF","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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":"50255b65-de6e-4032-b606-58482a662442","link":"{\"type\":\"internally\",\"value\":\"7D1DEA8A-7373-4659-B1A7-B0E72416EDA7\"}","shape":"edit-node","position":{"x":910.000000000015,"y":1029.999999999989},"label":"### 物料\n---\nid\n工厂代号(工厂id)\n物料号\n物料名称\n图号","fillColor":"#DDE5FF","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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":"ab4a33f9-98c1-4690-87aa-46e590bd7b0c","link":"{\"type\":\"internally\",\"value\":\"236F8414-6100-429D-8DEC-A223B0BDA052\"}","shape":"edit-node","position":{"x":1080,"y":1029.999999999989},"label":"### 项目\n---\nid\n项目编号\n项目名称\n项目类型\n计划开始时间\n计划结束时间\n项目状态","fillColor":"#DDE5FF","parent":"4fa67bb0-fbbe-4388-ac9e-6bb32e9cb04c","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":"06ca758c-3187-47bd-8136-ca10dd94640b","shape":"edit-node","position":{"x":425.000000000015,"y":1300},"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":"ea0f4b6c-37b3-42f7-8f12-0a946e1ae841","shape":"edit-node","position":{"x":840,"y":1290},"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":"bd6cd2f6-55ae-43fd-af6c-22bdbaf96a00","link":"{\"type\":\"internally\",\"value\":\"1271309E-2310-435D-B129-DC3F72BBA013\"}","shape":"edit-node","position":{"x":1030,"y":1240},"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":"d9b4230a-9a29-4b06-9bc2-7d0021d99423","link":"{\"type\":\"internally\",\"value\":\"7AE6268A-7B4D-4F6A-8E6C-19F7C93C3C49\"}","shape":"edit-node","position":{"x":465.000000000015,"y":1050},"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":"e4c40d33-e4c2-4dea-9413-62f7c9d772db","shape":"edit-node","position":{"x":0,"y":1019.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":"49BB7996-5205-4A52-96A3-FE87B1D8C4AC","comment":""},{"defKey":"2","defName":"逻辑关系","relationType":"field","canvasData":{"cells":[]},"id":"0D56908B-B619-4D80-A491-DE9808D9FFEB","comment":""},{"defKey":"3","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":[{"defKey":"AB260C61-FBEB-4832-ADBD-E03CCFE82D96","defName":"成本管理","type":"29D1CE08-4C35-4D2D-AAA9-23D93305B52E","properties":{"driver_class_name":"com.mysql.cj.jdbc.Driver","url":"jdbc:mysql://121.40.189.20:3306/costmanage?characterEncoding=UTF-8&useSSL=false&useUnicode=true&serverTimezone=UTC","password":"YMzc157#","username":"root"}}],"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":[],"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}]}
|