From 06a22e3d6d75e811affc35e12d00e8fd4259d869 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周日, 09 6月 2024 16:06:55 +0800
Subject: [PATCH] 222

---
 iwara-scada-web/src/views/main/EquipmentBaseInfo/editForm.vue                                |    6 
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryYieldOutput.cs      |  291 +
 .gitignore                                                                                   |    1 
 DBScript/数据库设计/DF22001-一汽连杆数采项目(SCADA).pdma.json                                             | 9823 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs   |  110 
 iWara.SCADA.Code/iWare.Wms.Core/Enum/EquipmentbaseinfoOperatorTypeEnum.cs                    |   40 
 iwara-scada-web/public/index.html                                                            |    2 
 iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml                             |  156 
 iWara.SCADA.Code/iWare.Wms.Application/Service/EquipmentBaseInfo/EquipmentBaseInfoService.cs |   92 
 iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/Equipmentbaseinfolog.cs                         |   80 
 iwara-scada-web/src/utils/domUtil.js                                                         |    2 
 11 files changed, 10,577 insertions(+), 26 deletions(-)

diff --git a/.gitignore b/.gitignore
index 6348653..95f3786 100644
--- a/.gitignore
+++ b/.gitignore
@@ -364,3 +364,4 @@
 /iWare.Mdc.Code/iWare.Mdc.Database.Migrations/Migrations/*
 /iWare.Mdc.Code/iWare.Mdc.Application/applicationsettings.json
 
+/DBScript/鏁版嵁搴撹璁�/.back_DF22001-涓�姹借繛鏉嗘暟閲囬」鐩紙SCADA锛�
diff --git "a/DBScript/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241/DF22001-\344\270\200\346\261\275\350\277\236\346\235\206\346\225\260\351\207\207\351\241\271\347\233\256\357\274\210SCADA\357\274\211.pdma.json" "b/DBScript/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241/DF22001-\344\270\200\346\261\275\350\277\236\346\235\206\346\225\260\351\207\207\351\241\271\347\233\256\357\274\210SCADA\357\274\211.pdma.json"
new file mode 100644
index 0000000..f2c4961
--- /dev/null
+++ "b/DBScript/\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241/DF22001-\344\270\200\346\261\275\350\277\236\346\235\206\346\225\260\351\207\207\351\241\271\347\233\256\357\274\210SCADA\357\274\211.pdma.json"
@@ -0,0 +1,9823 @@
+{
+  "name": "DF22001-涓�姹借繛鏉嗘暟閲囬」鐩紙SCADA锛�",
+  "describe": "涓�姹芥暟閲囬」鐩紙SCADA锛�",
+  "avatar": "",
+  "version": "4.1.3",
+  "createdTime": "2022-10-21 21:00:01",
+  "updatedTime": "2024-6-9 16:05:54",
+  "dbConns": [],
+  "profile": {
+    "default": {
+      "db": "BFC87171-C74F-494A-B7C2-76B9C55FACC9",
+      "dbConn": "D4843C6A-F7EC-480D-A8DB-4F6655F65F92",
+      "entityInitFields": [
+        {
+          "defKey": "Id",
+          "defName": "涓婚敭Id",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "refDict": "",
+          "uiHint": "",
+          "id": "ADB3AD14-6603-43E2-8261-114E32442B5B"
+        },
+        {
+          "defKey": "CreatedUserName",
+          "defName": "鍒涘缓浜�",
+          "comment": "",
+          "domain": "94107640-E002-4AB3-A2DC-B66F98D9645F",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "C8BE2C7A-8251-4ADD-BB4F-411C5754DA62"
+        },
+        {
+          "defKey": "CreatedUserId",
+          "defName": "鍒涘缓鑰匢d",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "717941D9-8B3F-435A-9F8E-8D13B7404D5B",
+          "id": "D40979CC-6D1E-4F98-85D7-18B88607F7F6"
+        },
+        {
+          "defKey": "CreatedTime",
+          "defName": "鍒涘缓鏃堕棿",
+          "comment": "",
+          "domain": "E9456E44-8231-4BC0-B2CD-5FF4AEC6DE97",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "4E471FD6-3E73-4A90-B660-51598A482409"
+        },
+        {
+          "defKey": "UpdatedUserName",
+          "defName": "鏇存柊浜�",
+          "comment": "",
+          "domain": "94107640-E002-4AB3-A2DC-B66F98D9645F",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "0DC24AA9-4CD0-45D8-95CF-FA546BE343AB"
+        },
+        {
+          "defKey": "UpdatedUserId",
+          "defName": "淇敼鑰匢d",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "717941D9-8B3F-435A-9F8E-8D13B7404D5B",
+          "id": "40A2D10C-871D-4B36-AAFD-3D2D753D1B7E"
+        },
+        {
+          "defKey": "UpdatedTime",
+          "defName": "鏇存柊鏃堕棿",
+          "comment": "",
+          "domain": "E9456E44-8231-4BC0-B2CD-5FF4AEC6DE97",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "09F64AC4-4DEE-428F-AF64-4C103884E1AC"
+        },
+        {
+          "defKey": "IsDeleted",
+          "defName": "杞垹闄ゆ爣璁�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF",
+          "id": "5A86B12B-510D-4608-BFB1-534478D0EC59"
+        }
+      ],
+      "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": "MaxCompute",
+        "id": "11D1FB71-A587-4217-89BA-611B8A1F83E0"
+      },
+      {
+        "defKey": "SQLite",
+        "id": "B363BE0B-F852-49B8-9B2E-F6D2174DEAC1"
+      },
+      {
+        "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": "Hive",
+        "id": "81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2"
+      },
+      {
+        "defKey": "Golang",
+        "id": "B91D99E0-9B7C-416C-8737-B760957DAF09"
+      },
+      {
+        "defKey": "Rust",
+        "id": "BDF457FD-9F98-4AC3-A705-7587B00A3BAB"
+      },
+      {
+        "defKey": "GBase",
+        "id": "56F4B55B-F0B8-4049-9E6B-50B95C1D793A"
+      },
+      {
+        "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 Microsoft.EntityFrameworkCore;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\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 author='鎮ㄧ殑鍚嶅瓧'; /* 杩欓噷濉啓浣滆�呭悕瀛� */\n}}\n/*\n * @author : {{=author}}\n * @date : {{=today.toLocaleString()}}\n * @desc : {{=it.func.join(it.entity.defName,it.entity.comment,'-')}}\n */\nnamespace iWare.Wms.Core\n{\n    /// <summary>\n    /// {{=it.entity.defName}}\n    /// </summary>\n    [Table(\"{{=it.func.lowerCase(it.entity.defKey,true) }}\")]\n    [Comment(\"{{=it.entity.defName}}\")]\n    public class {{=it.func.camel(it.entity.defKey,true) }} : DEntityBase\n    {\n        {{~it.entity.fields:field:index}}\n        {{? field.defKey != \"Id\" && field.defKey != \"CreatedTime\" && field.defKey != \"UpdatedTime\" && field.defKey != \"CreatedUserId\" && field.defKey != \"CreatedUserName\" && field.defKey != \"UpdatedUserId\" && field.defKey != \"UpdatedUserName\"\n            && field.defKey != \"IsDeleted\"\n        }} \n        /// <summary>\n        /// {{=it.func.join(field.defName,field.comment,';')}}\n        /// </summary>\n        [Comment(\"{{=field.defName}}\")]\n        {{? field.notNull == true }}[Required] {{?}}\n        {{? field.type == \"string\" }}[MaxLength({{=field.len}})] {{?}}\n        {{? field.type == \"decimal\" }}[Column(\"{{=field.defKey}}\", TypeName = \"decimal({{=field.len}},{{=field.scale}})\")] {{?}}\n        public {{=field.type}}{{? (field.type == \"int\" || field.type == \"decimal\"  || field.type == \"long\"|| field.type == \"bool\" || field.type == \"DateTime\" || field.type == \"DateTimeOffset\") && (field.notNull == false) }}? {{?}} {{=field.defKey}} { 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}",
+        "SqlServerView": "using Microsoft.EntityFrameworkCore;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\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 author='鎮ㄧ殑鍚嶅瓧'; /* 杩欓噷濉啓浣滆�呭悕瀛� */\n}}\n/*\n * @author : {{=author}}\n * @date : {{=today.toLocaleString()}}\n * @desc : {{=it.func.join(it.entity.defName,it.entity.comment,'-')}}\n */\nnamespace Admin.NET.Core\n{\n    /// <summary>\n    /// {{=it.entity.defName}}\n    /// </summary>\n    [Comment(\"{{=it.entity.defName}}\")]\n    public class {{=it.func.camel(it.entity.defKey,true) }} : EntityNotKey\n    {\n    \n        /// <summary>\n        /// 閰嶇疆瑙嗗浘鍚峔n        /// </summary>\n        public {{=it.func.camel(it.entity.defKey,true) }}() : base(\"{{=it.func.lowerCase(it.entity.defKey,true) }}\") { }\n        {{~it.entity.fields:field:index}}\n        /// <summary>\n        /// {{=it.func.join(field.defName,field.comment,';')}}\n        /// 琛▄{=field.refEntity}}\n        /// </summary>\n        {{? field.type == \"string\" }}[MaxLength({{=field.len}})] {{?}}\n        {{? field.type == \"decimal\" }}[Column(\"{{=field.defKey}}\", TypeName = \"decimal({{=field.len}},{{=field.scale}})\")] {{?}}\n        public {{=field.type}}{{? (field.type == \"int\" || field.type == \"decimal\"  || field.type == \"long\"|| field.type == \"bool\" || field.type == \"DateTime\" || field.type == \"DateTimeOffset\") && (field.notNull == false) }}? {{?}} {{=field.defKey}} { 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        /*鎶奙ybatis鐨勫垎椤靛璞″仛灏佽杞崲锛孧P鐨勫垎椤靛璞′笂鏈変竴浜汼QL鏁忔劅淇℃伅锛岃繕鏄�氳繃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('浠g爜:'+(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('瑙i櫎鍏宠仈:'+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('浠g爜:'+(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瑙i櫎鍏宠仈:'+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('浠g爜:'+(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('瑙i櫎鍏宠仈:'+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('浠g爜:'+(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('瑙i櫎鍏宠仈:'+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"
+      },
+      {
+        "type": "dbDDL",
+        "applyFor": "0BBCABA5-B8E4-41B0-B8E4-8F5EA6029307",
+        "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{{~}}",
+        "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",
+        "deleteTable": "",
+        "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/**杩欓噷鎶妚archar,char,text,date,datetime瀛楁鍏ㄩ儴鏄犲皠涓簊tring绫诲瀷.tinyint unsigned,bit,Integer,tinyint,smallint,mediumint鏄犲皠涓篿nt绫诲瀷,int unsigned鏄犲皠涓篵igint.鍏跺畠鑷畾涔夋槧灏勮鍒欐牴鎹嚜宸辨儏鍐典慨鏀�*/\n/**褰撻暱搴�>0鍙湁涓篸ecimal绫诲瀷鎴杁ouble绫诲瀷鏃舵墠淇濈暀闀垮害鍜屽皬鏁扮殑浣嶆暟*/\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('浠g爜:'+(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瑙i櫎鍏宠仈:'+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('浠g爜:'+(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('瑙i櫎鍏宠仈:'+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('浠g爜:'+(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('瑙i櫎鍏宠仈:'+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": 50,
+    "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
+      },
+      {
+        "refKey": "defName",
+        "hideInGraph": false
+      },
+      {
+        "refKey": "primaryKey",
+        "hideInGraph": false
+      },
+      {
+        "refKey": "notNull",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "autoIncrement",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "domain",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "type",
+        "hideInGraph": false
+      },
+      {
+        "refKey": "len",
+        "hideInGraph": false
+      },
+      {
+        "refKey": "scale",
+        "hideInGraph": false
+      },
+      {
+        "refKey": "comment",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "refDict",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "defaultValue",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "isStandard",
+        "hideInGraph": false
+      },
+      {
+        "refKey": "uiHint",
+        "hideInGraph": true
+      },
+      {
+        "refKey": "extProps",
+        "hideInGraph": true
+      }
+    ],
+    "menuWidth": "365px",
+    "recentColors": [
+      "#0070c0",
+      "#6698cc",
+      "#ffffff"
+    ],
+    "modelType": "modalAll"
+  },
+  "entities": [
+    {
+      "id": "362A4C92-24C7-4067-B255-DFBA73C5137A",
+      "defKey": "WorkPieceInfo",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "WorkPieceInfoID",
+          "defName": "涓婚敭ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F7E195BF-2621-4F4F-9FFC-3D1E231C58D2"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "B7CD14FB-AFA9-4C7F-A966-A82890E19814"
+        },
+        {
+          "defKey": "WorkPieceState",
+          "defName": "宸ヤ欢鐘舵��",
+          "comment": "鍦ㄥ埗鍝佽繕鏄畬鎴�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "3165B4EF-D200-4171-86E2-9E0C92C6946F"
+        },
+        {
+          "defKey": "WorkPieceCurrentPositionOrder",
+          "defName": "宸ヤ欢褰撳墠浣嶇疆搴忓彿",
+          "comment": "鏈�澶у��21浜垮锛屽彲浠ヨ�冭檻涓�鐩寸疮鍔�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "1D722B18-48CA-4E04-8510-0ED18C6D0097"
+        },
+        {
+          "defKey": "WorkPieceCurrentPosition",
+          "defName": "宸ヤ欢褰撳墠浣嶇疆",
+          "comment": "璁惧涓垨鑰呬袱涓澶囦腑闂寸殑杈撻�佽緤閬撲笂",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "4B6F20E4-D54A-449E-9AC0-E51FDDB51534"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "褰撳墠璁惧",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8C7CFBAD-6F97-41C9-A75D-C7B23FEE0EA8"
+        },
+        {
+          "defKey": "WorkingProcedureCompleted",
+          "defName": "褰撳墠宸插畬鎴愬伐搴忔祦绋�",
+          "comment": "姣忔宸插畬鎴愬伐搴忕疮绉笂鏉ワ紝涓嬫杩涘叆宸ュ簭鑻ヤ笉绗﹀悎璁″垝鐨勫垯鎻愮ず",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "76101206-DAF4-4158-A6CB-7252A6CEABF0"
+        },
+        {
+          "defKey": "WorkingProcedurePlan",
+          "defName": "璁″垝宸ュ簭娴佺▼",
+          "comment": "OP05OP10PO20OP30OP40OP50OP60OP80OP90锛屾澶勬槸鍚﹂渶瑕佸彲閰嶇疆娴佺▼寰呭畾",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D93FAF8D-6C51-44DA-9FEE-EB4953BEC788"
+        },
+        {
+          "defKey": "WorkingProcedureCurrent",
+          "defName": "褰撳墠宸ュ簭",
+          "comment": "杩涘叆涓嬩竴宸ュ簭鍓嶏紝姝ゅ伐搴忎笉鍙樺寲",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "B8445532-B332-442C-9840-A57C3818B34A"
+        },
+        {
+          "defKey": "WorkingProcedureStartTime",
+          "defName": "宸ュ簭寮�濮嬫椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "98E2D07F-2BC1-441A-B972-3014185671F4"
+        },
+        {
+          "defKey": "ProcessingDurationForCurrent",
+          "defName": "褰撳墠宸ュ簭鍔犲伐鏃堕暱",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "510C506B-CFDE-4125-9FFA-92ABECCAF601"
+        },
+        {
+          "defKey": "ProcessingDurationTotal",
+          "defName": "鎬诲姞宸ユ椂闀�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "8E551783-A2E2-49CA-8815-8E0228E527A8"
+        },
+        {
+          "defKey": "WorkPieceInitOnlineTime",
+          "defName": "棣栧伐搴忎笂绾挎椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "0CBA3997-0ECE-4F9B-A889-B68B7B482DE4"
+        },
+        {
+          "defKey": "Number",
+          "defName": "鏁伴噺",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F49C7A75-07D0-4888-98FD-6BE50D6AE19D"
+        },
+        {
+          "defKey": "WorkPieceIDTo1",
+          "defName": "渚涘簲鍟�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "A63DDA1C-77FE-4E6F-8829-300F4D68BA62"
+        },
+        {
+          "defKey": "WorkPieceIDTo2",
+          "defName": "闆朵欢璁捐灏惧彿",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 4,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "C8946E70-F1DF-4E27-8CA5-AFCF62AA9DCB"
+        },
+        {
+          "defKey": "WorkPieceIDTo3",
+          "defName": "骞存湀鏃�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 6,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "149B0C0B-47D8-4D45-BD5E-374090A34071"
+        },
+        {
+          "defKey": "WorkPieceIDTo4",
+          "defName": "鐝",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "2EE231FF-6B52-413F-92DD-AB5290D88541"
+        },
+        {
+          "defKey": "WorkPieceIDTo5",
+          "defName": "娴佹按鍙�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 4,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "395ABF5D-5E4B-47C6-9AB4-E783A39F8608"
+        },
+        {
+          "defKey": "WorkPieceIDTo6",
+          "defName": "妯″叿鍙�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "7C2359D4-5D81-476B-8C56-AFA7B7054783"
+        },
+        {
+          "defKey": "WorkPieceIDTo7",
+          "defName": "鐐夊彿",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "865056E5-726B-420C-B064-AD9CBD38B4A7"
+        },
+        {
+          "defKey": "QualityState",
+          "defName": "璐ㄩ噺鐘舵��",
+          "comment": "鍚堟牸銆佷笉鍚堟牸銆佺枒浼�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "BA56D55D-A6F4-45E7-8C85-35E62C93B30E"
+        },
+        {
+          "defKey": "QualityStateUpdateUser",
+          "defName": "璐ㄩ噺鐘舵�佸彉鏇翠汉",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DCB30002-E337-4977-888F-2A9DAEB9E4BC"
+        },
+        {
+          "defKey": "QualityStateUpdateTime",
+          "defName": "璐ㄩ噺鐘舵�佸彉鏇存椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "E4998FA4-B78F-41B7-AEBA-A4A4A3AC6B81"
+        },
+        {
+          "defKey": "QualityStateUpdateMode",
+          "defName": "璐ㄩ噺鐘舵�佸彉鏇存柟寮�",
+          "comment": "鎵嬪姩鎴栬嚜鍔�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "C641CB6D-3725-4DE6-854D-24B9153CDB34"
+        },
+        {
+          "defKey": "AlertType",
+          "defName": "鍛婅绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "CFB9DE76-ADBB-4AE5-81BA-C730447A291F"
+        },
+        {
+          "defKey": "AlertMsg",
+          "defName": "鍛婅鍐呭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "8A0ACEE8-A80B-4275-8AB9-042B92887F4B"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D8A478C4-5376-45AF-843B-61EF982ECD05"
+        },
+        {
+          "defKey": "WorkPieceType",
+          "defName": "宸ヤ欢绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E570908D-890F-4BF0-AEAB-836DF7FC5092",
+          "isStandard": true
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "宸ヤ欢淇℃伅琛�",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "634B3C7D-0DD4-4B24-AC32-E42A7E7965BE",
+      "defKey": "WorkPieceInfoLog",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "WorkPieceInfoID",
+          "defName": "涓婚敭ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F7E195BF-2621-4F4F-9FFC-3D1E231C58D2"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "B7CD14FB-AFA9-4C7F-A966-A82890E19814"
+        },
+        {
+          "defKey": "WorkPieceState",
+          "defName": "宸ヤ欢鐘舵��",
+          "comment": "鍦ㄥ埗鍝佽繕鏄畬鎴�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "3165B4EF-D200-4171-86E2-9E0C92C6946F"
+        },
+        {
+          "defKey": "WorkPieceCurrentPositionOrder",
+          "defName": "宸ヤ欢褰撳墠浣嶇疆搴忓彿",
+          "comment": "鏈�澶у��21浜垮锛屽彲浠ヨ�冭檻涓�鐩寸疮鍔�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "1D722B18-48CA-4E04-8510-0ED18C6D0097"
+        },
+        {
+          "defKey": "WorkPieceCurrentPosition",
+          "defName": "宸ヤ欢褰撳墠浣嶇疆",
+          "comment": "璁惧涓垨鑰呬袱涓澶囦腑闂寸殑杈撻�佽緤閬撲笂",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "4B6F20E4-D54A-449E-9AC0-E51FDDB51534"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "褰撳墠璁惧",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8C7CFBAD-6F97-41C9-A75D-C7B23FEE0EA8"
+        },
+        {
+          "defKey": "WorkingProcedureCompleted",
+          "defName": "褰撳墠宸插畬鎴愬伐搴忔祦绋�",
+          "comment": "姣忔宸插畬鎴愬伐搴忕疮绉笂鏉ワ紝涓嬫杩涘叆宸ュ簭鑻ヤ笉绗﹀悎璁″垝鐨勫垯鎻愮ず",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "76101206-DAF4-4158-A6CB-7252A6CEABF0"
+        },
+        {
+          "defKey": "WorkingProcedurePlan",
+          "defName": "璁″垝宸ュ簭娴佺▼",
+          "comment": "OP05OP10PO20OP30OP40OP50OP60OP80OP90锛屾澶勬槸鍚﹂渶瑕佸彲閰嶇疆娴佺▼寰呭畾",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D93FAF8D-6C51-44DA-9FEE-EB4953BEC788"
+        },
+        {
+          "defKey": "WorkingProcedureCurrent",
+          "defName": "褰撳墠宸ュ簭",
+          "comment": "杩涘叆涓嬩竴宸ュ簭鍓嶏紝姝ゅ伐搴忎笉鍙樺寲",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "B8445532-B332-442C-9840-A57C3818B34A"
+        },
+        {
+          "defKey": "WorkingProcedureStartTime",
+          "defName": "宸ュ簭寮�濮嬫椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "98E2D07F-2BC1-441A-B972-3014185671F4"
+        },
+        {
+          "defKey": "ProcessingDurationForCurrent",
+          "defName": "褰撳墠宸ュ簭鍔犲伐鏃堕暱",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "510C506B-CFDE-4125-9FFA-92ABECCAF601"
+        },
+        {
+          "defKey": "ProcessingDurationTotal",
+          "defName": "鎬诲姞宸ユ椂闀�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "8E551783-A2E2-49CA-8815-8E0228E527A8"
+        },
+        {
+          "defKey": "WorkPieceInitOnlineTime",
+          "defName": "鐗╂枡鍒濆涓婄嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "0CBA3997-0ECE-4F9B-A889-B68B7B482DE4"
+        },
+        {
+          "defKey": "Number",
+          "defName": "鏁伴噺",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F49C7A75-07D0-4888-98FD-6BE50D6AE19D"
+        },
+        {
+          "defKey": "WorkPieceIDTo1",
+          "defName": "渚涘簲鍟�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "A63DDA1C-77FE-4E6F-8829-300F4D68BA62"
+        },
+        {
+          "defKey": "WorkPieceIDTo2",
+          "defName": "闆朵欢璁捐灏惧彿",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 4,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "C8946E70-F1DF-4E27-8CA5-AFCF62AA9DCB"
+        },
+        {
+          "defKey": "WorkPieceIDTo3",
+          "defName": "骞存湀鏃�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 6,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "149B0C0B-47D8-4D45-BD5E-374090A34071"
+        },
+        {
+          "defKey": "WorkPieceIDTo4",
+          "defName": "鐝",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "2EE231FF-6B52-413F-92DD-AB5290D88541"
+        },
+        {
+          "defKey": "WorkPieceIDTo5",
+          "defName": "娴佹按鍙�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 4,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "395ABF5D-5E4B-47C6-9AB4-E783A39F8608"
+        },
+        {
+          "defKey": "WorkPieceIDTo6",
+          "defName": "妯″叿鍙�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "7C2359D4-5D81-476B-8C56-AFA7B7054783"
+        },
+        {
+          "defKey": "WorkPieceIDTo7",
+          "defName": "鐐夊彿",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "865056E5-726B-420C-B064-AD9CBD38B4A7"
+        },
+        {
+          "defKey": "QualityState",
+          "defName": "璐ㄩ噺鐘舵��",
+          "comment": "鍚堟牸銆佷笉鍚堟牸銆佺枒浼�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "BA56D55D-A6F4-45E7-8C85-35E62C93B30E"
+        },
+        {
+          "defKey": "QualityStateUpdateUser",
+          "defName": "璐ㄩ噺鐘舵�佸彉鏇翠汉",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DCB30002-E337-4977-888F-2A9DAEB9E4BC"
+        },
+        {
+          "defKey": "QualityStateUpdateTime",
+          "defName": "璐ㄩ噺鐘舵�佸彉鏇存椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "E4998FA4-B78F-41B7-AEBA-A4A4A3AC6B81"
+        },
+        {
+          "defKey": "QualityStateUpdateMode",
+          "defName": "璐ㄩ噺鐘舵�佸彉鏇存柟寮�",
+          "comment": "鎵嬪姩鎴栬嚜鍔�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "C641CB6D-3725-4DE6-854D-24B9153CDB34"
+        },
+        {
+          "defKey": "AlertType",
+          "defName": "鍛婅绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "CFB9DE76-ADBB-4AE5-81BA-C730447A291F"
+        },
+        {
+          "defKey": "AlertMsg",
+          "defName": "鍛婅鍐呭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "8A0ACEE8-A80B-4275-8AB9-042B92887F4B"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D8A478C4-5376-45AF-843B-61EF982ECD05"
+        },
+        {
+          "defKey": "WorkPieceType",
+          "defName": "宸ヤ欢绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F76266C1-C287-4395-9E09-62E3F608AA62",
+          "isStandard": true
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "宸ヤ欢淇℃伅琛ㄥ饱鍘�",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "B8BAB3F0-A775-44D6-AF48-4C57E150902D",
+      "defKey": "WorkPieceLog",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "WorkPieceLogID",
+          "defName": "涓婚敭id",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "7D01D7AD-5B7E-4DAF-9792-5990DB44998B"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "282CBC82-03BF-40B2-80CD-F43BC73313F4"
+        },
+        {
+          "defKey": "WorkPieceIDTo1",
+          "defName": "渚涘簲鍟�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "8C4106AE-00C0-4804-A10D-68FF7FE6F53A"
+        },
+        {
+          "defKey": "WorkPieceIDTo2",
+          "defName": "闆朵欢璁捐灏惧彿",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 4,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "FC70506C-9361-4D32-AF66-DA7E22077B64"
+        },
+        {
+          "defKey": "WorkPieceIDTo3",
+          "defName": "骞存湀鏃�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 6,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "A3C12844-2FC1-43AB-AE60-D51437F31305"
+        },
+        {
+          "defKey": "WorkPieceIDTo4",
+          "defName": "鐝",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "9632EEBA-1560-4E26-8DAA-E148259D7A69"
+        },
+        {
+          "defKey": "WorkPieceIDTo5",
+          "defName": "娴佹按鍙�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 4,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "2FA557C6-DF74-40DA-B53B-FA52538863AA"
+        },
+        {
+          "defKey": "WorkPieceIDTo6",
+          "defName": "妯″叿鍙�",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "74182132-F133-403A-9204-1045D5E7850A"
+        },
+        {
+          "defKey": "WorkPieceIDTo7",
+          "defName": "鐐夊彿",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 2,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "01B80770-AC5B-4441-B8A6-1C39E08EDACE"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭浠e彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "4F4AA803-6BAA-4B69-88F2-29EDC9BCBE21"
+        },
+        {
+          "defKey": "MonitoringPoint",
+          "defName": "鐩戞帶鐐逛唬鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "A60A9FFF-4359-43B8-9404-9AB7EC9B0CEC"
+        },
+        {
+          "defKey": "QualityState",
+          "defName": "璐ㄩ噺鐘舵��",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "E4217828-2259-4CD2-995C-6387EEF331DE"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "CBF8750A-682E-45F2-972C-E295972CD69F"
+        },
+        {
+          "defKey": "OnlineTime",
+          "defName": "涓婄嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "DC110C0A-5418-402D-8825-76A108452FC3"
+        },
+        {
+          "defKey": "OfflineTime",
+          "defName": "涓嬬嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "A88B659B-E237-4B34-B5EA-267D1AC6BBAD"
+        },
+        {
+          "defKey": "ProcessingDuration",
+          "defName": "鍔犲伐鏃堕暱",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "608B3BAF-422A-494D-ABEB-70BD89C0E672"
+        },
+        {
+          "defKey": "MachineToolState",
+          "defName": "鏈哄簥鐘舵��",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "52420E4C-7576-4EDF-A856-A7C2045577FB"
+        },
+        {
+          "defKey": "AlertType",
+          "defName": "鎶ヨ绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "91DC1EDD-11DB-4BB4-9A9B-0FCFB0FFBD2A"
+        },
+        {
+          "defKey": "AlertMsg",
+          "defName": "鎶ヨ鍐呭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "AA6999C5-E486-4C7E-BBB1-6FE20974A5B7"
+        },
+        {
+          "defKey": "WorkPieceNumber",
+          "defName": "宸ヤ欢浠舵暟淇℃伅",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "9CBD67ED-6002-47E7-9684-CE559DF2BED9"
+        },
+        {
+          "defKey": "WorkPieceOnlineTime",
+          "defName": "宸ヤ欢涓婃枡鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "A0F9261A-335E-4474-A05C-187F623ED5F5"
+        },
+        {
+          "defKey": "WorkPieceOfflineTime",
+          "defName": "宸ヤ欢涓嬫枡鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "AB34F0D9-38D1-4685-9665-30A0A1F8DCE5"
+        },
+        {
+          "defKey": "WorkPieceStartMachiningTime",
+          "defName": "宸ヤ欢鍔犲伐寮�濮嬫椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "9D0B8CB6-1783-4E64-87C3-A7D4CBEB54E3"
+        },
+        {
+          "defKey": "WorkPieceEndMachiningTime",
+          "defName": "宸ヤ欢鍔犲伐缁撴潫鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "5A368EE3-3B61-4B51-8F1A-753009CFC66B"
+        },
+        {
+          "defKey": "KnifeToolID",
+          "defName": "鍒�鍏风紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8E5955B7-1090-48F4-BA39-CC9D80210CE6"
+        },
+        {
+          "defKey": "KnifeToolName",
+          "defName": "鍒�鍏峰悕绉�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "D0AD717E-8D92-4CA9-8300-C5955BFF3576"
+        },
+        {
+          "defKey": "KnifeToolCode",
+          "defName": "鍒�鍏风爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "049318C6-D08C-47A5-ADCF-F59D4A226594"
+        },
+        {
+          "defKey": "KnifeToolModel",
+          "defName": "鍒�鍏峰瀷鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "32541D0E-7903-4775-9974-6CE1CA188116"
+        },
+        {
+          "defKey": "KnifeEdgeNumber",
+          "defName": "鍒�娌挎暟",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "B213EEF1-FE46-425E-9009-618C5521169C"
+        },
+        {
+          "defKey": "KnifeToolInsideID",
+          "defName": "鍒�鍏峰唴閮ㄥ彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E684403E-55B6-4181-8B2A-D3D4159FC6D6"
+        },
+        {
+          "defKey": "KnifeWarehouseID",
+          "defName": "鍒�搴撳彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E97C8B56-384E-484A-9FA7-9E8ED489452C"
+        },
+        {
+          "defKey": "KnifePositionID",
+          "defName": "鍒�浣嶇紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "FAE6B560-9BB6-45EE-810E-0681E645F772"
+        },
+        {
+          "defKey": "KnifeToolLife",
+          "defName": "棰濆畾瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "A5FC6C4B-6EB1-4ABC-BB52-E6B98F43FA00"
+        },
+        {
+          "defKey": "KnifeToolEarlyWarningLife",
+          "defName": "棰勮瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "E1078B3F-B3E2-42EF-9AF3-05844FC8FC42"
+        },
+        {
+          "defKey": "KnifeToolSurplusLife",
+          "defName": "鍓╀綑瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "7E84DC3E-CDCE-4F22-9C58-7FB4596BAD04"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "3A51C170-6602-4B31-AC3D-CBF0D7F31B68"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "宸ヤ欢鎺ユ敹淇℃伅灞ュ巻琛�",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "5207D4C1-67D0-4303-AE2E-414C9B2900F2",
+      "defKey": "EquipmentBaseInfo",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentBaseInfoID",
+          "defName": "涓婚敭ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "NewID()",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "93061130-DB5D-45FD-BE67-FBBB600B8AB7"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "AA125FFD-859C-4B16-87BF-795862487F47"
+        },
+        {
+          "defKey": "EquipmentName",
+          "defName": "璁惧鍚嶇О",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D7B98581-7544-4F2D-B3A7-C01AE185FA08"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "璁惧鎵�灞炲伐搴�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
+          "id": "16D75A38-0740-4930-B981-FF9F2238A209"
+        },
+        {
+          "defKey": "EquipmentModel",
+          "defName": "璁惧鍨嬪彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "3E948CEC-3070-472C-AF92-F3CA11EC9D15",
+          "id": "4746C534-2EF2-4012-93F2-22D2CA3C0C4B"
+        },
+        {
+          "defKey": "EquipmentIP",
+          "defName": "璁惧IP鍦板潃",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "49277F80-F863-4184-A978-B6E68849ABF8"
+        },
+        {
+          "defKey": "EquipmentFunction",
+          "defName": "鍔熻兘",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "8CDBF676-F8F3-4755-B873-25F613F91A76"
+        },
+        {
+          "defKey": "EquipmentBrand",
+          "defName": "璁惧鍝佺墝",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "A8EBB860-3C48-45D3-85DD-8694EBC2C229"
+        },
+        {
+          "defKey": "EquipmentManufacturer",
+          "defName": "璁惧鍒堕�犲晢",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "36F543B3-E0A0-4C17-B566-3DE819C764CE"
+        },
+        {
+          "defKey": "DetergentChangeTime",
+          "defName": "娓呮礂娑叉洿鎹㈡椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "8DDB54A5-4CBD-4A8E-BDC9-88D6D4722EDD"
+        },
+        {
+          "defKey": "DetergentChangeAlertThreshold",
+          "defName": "娓呮礂娑叉洿鎹㈤璀﹂槇鍊�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "E74D2F05-FB0F-4F8C-8C6F-1748AAE8077C"
+        },
+        {
+          "defKey": "DetergentChangeCycle",
+          "defName": "娓呮礂娑叉洿鎹㈠懆鏈�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "54EE2F12-5E9A-4BB1-A92D-E062A8E3BA69"
+        },
+        {
+          "defKey": "CuttingFluidChangeTime",
+          "defName": "鍒囧墛娑叉洿鎹㈡椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "A1656E02-69C2-4508-B679-EFD16C9E7B8E"
+        },
+        {
+          "defKey": "CuttingFluidChangeCycle",
+          "defName": "鍒囧墛娑查璀﹂槇鍊�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "14F43700-F7D2-4DA9-B377-C2C84A9CF2D4"
+        },
+        {
+          "defKey": "KnifeToolChangeTime",
+          "defName": "鍒�鍏锋洿鎹㈡椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "D63D39EE-E226-46C2-8F0C-0F5B0485ABD4"
+        },
+        {
+          "defKey": "KnifeToolChangeAlertThreshold",
+          "defName": "鍒�鍏锋洿鎹㈤璀﹂槇鍊�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "59E65D67-5A60-4283-A440-8B1EF0A2B351"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "3E948CEC-3070-472C-AF92-F3CA11EC9D15",
+          "id": "830E7ED4-816E-435B-B67B-97F58A84D8CA"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "璁惧鍩虹淇℃伅",
+      "correlations": [],
+      "env": {
+        "base": {
+          "codeRoot": "Equipmentbaseinfo",
+          "nameSpace": "Admin.NET.Core"
+        },
+        "template": {
+          "C#": {
+            "SqlSugar": {
+              "suffix": "",
+              "enable": false
+            }
+          }
+        },
+        "custom": {}
+      },
+      "indexes": []
+    },
+    {
+      "id": "02592CEC-E2AD-4D60-BE8C-20CFC8CA62F3",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "EquipmentBaseInfoLog",
+      "defName": "璁惧缁存姢璁板綍",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "Id",
+          "defName": "涓婚敭Id",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "refDict": "",
+          "uiHint": "",
+          "id": "49A50EBF-A85E-4CCB-8D83-3FFA8471A68E"
+        },
+        {
+          "defKey": "EquipmentBaseInfoId",
+          "defName": "璁惧ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "717941D9-8B3F-435A-9F8E-8D13B7404D5B",
+          "id": "4EEF90B5-3670-488A-B601-482F55F62B7E"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "AEC70245-1A77-48A2-8017-74FB8B707987"
+        },
+        {
+          "defKey": "OperatorType",
+          "defName": "鎿嶄綔绫诲瀷ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "0CA43E35-C963-444D-81A8-8EAE04167C51"
+        },
+        {
+          "defKey": "OperatorTypeName",
+          "defName": "鎿嶄綔绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "3B75D613-9265-4667-96EB-3F531F361390"
+        },
+        {
+          "defKey": "OperatorContent",
+          "defName": "鎿嶄綔鍐呭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "19F66692-C963-43C9-9FAE-76E98F866533"
+        },
+        {
+          "defKey": "Remark",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "780B1C18-E13F-4640-B458-4070C076EF46"
+        },
+        {
+          "defKey": "CreatedUserName",
+          "defName": "鍒涘缓浜�",
+          "comment": "",
+          "domain": "94107640-E002-4AB3-A2DC-B66F98D9645F",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "CC583796-7BA1-46AB-A282-E8235ED2666F"
+        },
+        {
+          "defKey": "CreatedUserId",
+          "defName": "鍒涘缓鑰匢d",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "717941D9-8B3F-435A-9F8E-8D13B7404D5B",
+          "id": "FB171136-2449-4CAE-A461-28C9681920B7"
+        },
+        {
+          "defKey": "CreatedTime",
+          "defName": "鍒涘缓鏃堕棿",
+          "comment": "",
+          "domain": "E9456E44-8231-4BC0-B2CD-5FF4AEC6DE97",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "4A9AC74B-F811-43DC-856D-4F25237E6A46"
+        },
+        {
+          "defKey": "UpdatedUserName",
+          "defName": "鏇存柊浜�",
+          "comment": "",
+          "domain": "94107640-E002-4AB3-A2DC-B66F98D9645F",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "FD4AB35B-FCD7-4393-86BB-D64C89D0AF81"
+        },
+        {
+          "defKey": "UpdatedUserId",
+          "defName": "淇敼鑰匢d",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "717941D9-8B3F-435A-9F8E-8D13B7404D5B",
+          "id": "B3A13C85-159E-4D6F-A8F5-E5923DE6F4A7"
+        },
+        {
+          "defKey": "UpdatedTime",
+          "defName": "鏇存柊鏃堕棿",
+          "comment": "",
+          "domain": "E9456E44-8231-4BC0-B2CD-5FF4AEC6DE97",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "uiHint": "",
+          "id": "A675BA58-E6E7-4349-8061-156CCA4C9482"
+        },
+        {
+          "defKey": "IsDeleted",
+          "defName": "杞垹闄ゆ爣璁�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF",
+          "id": "643B0EF8-FCC2-47D5-80C7-37AD83651DAF"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "65912DD7-EEC0-4D7C-89C1-134F4C4F97B6",
+      "defKey": "KnifeToolBaseInfo",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "KnifeToolBaseInfoID",
+          "defName": "ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "FB2A2366-D435-4E76-8F6B-30FD53ABD188"
+        },
+        {
+          "defKey": "KnifeToolID",
+          "defName": "鍒�鍏风紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8EE24180-F9D4-43CB-911F-2BD5C585D791"
+        },
+        {
+          "defKey": "KnifeToolModel",
+          "defName": "鍨嬪彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "4DEED0FB-87DB-4C5F-83FE-ACA18EAC4DB5"
+        },
+        {
+          "defKey": "KnifeEdgeNumber",
+          "defName": "鍒�娌挎暟",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "EDCF62B1-9BFA-47FD-BC62-FB272BA350AB"
+        },
+        {
+          "defKey": "KnifeToolLife",
+          "defName": "鍒�鍏峰鍛�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "D680D99D-2D00-445A-9E4A-21CC15677A46"
+        },
+        {
+          "defKey": "KnifeLength",
+          "defName": "鍒�韬暱搴�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "9D9A73E1-B126-4F24-BD31-6F92387FC20C"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "閫傞厤璁惧",
+          "comment": "閫傞厤璁惧缂栧彿",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "748644F6-1DB5-4191-B10E-D89205F656B3"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "B682935F-F844-416F-ACFE-CBB13F2A3880"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "鍒�鍏峰熀鏈俊鎭�",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "E612F83C-1EF2-4200-A14B-5549A7121EEB",
+      "defKey": "EquipmentWorkingLog",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentWorkingLogID",
+          "defName": "ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "0954BFEC-3DD6-4B13-A1A1-FA48FDD945AB"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "2227B7A8-7A35-4301-88BE-44EC32B5582C"
+        },
+        {
+          "defKey": "StartUpTime",
+          "defName": "寮�鏈烘椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "1D119F61-F61C-4EA9-B3C4-C44546622974"
+        },
+        {
+          "defKey": "ShutDownTime",
+          "defName": "鍏虫満鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "FAF7ACA9-32F9-4C0F-883A-1B6EE767C6FF"
+        },
+        {
+          "defKey": "FailureStartTime",
+          "defName": "鏁呴殰寮�濮嬫椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "B6A70F72-3CF8-440C-9834-6ABE85A26790"
+        },
+        {
+          "defKey": "FailureEndTime",
+          "defName": "鏁呴殰缁撴潫鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "3318CF7D-47B1-49A0-93D2-F10273168A49"
+        },
+        {
+          "defKey": "FailureType",
+          "defName": "鏁呴殰浠g爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "960AC541-84BF-498A-ACB0-1D6A99580497"
+        },
+        {
+          "defKey": "FailureMsg",
+          "defName": "鏁呴殰鏂囨湰",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "733B8B86-1429-463A-9A7C-3794832989E7"
+        },
+        {
+          "defKey": "KnifeToolChangeStartTime",
+          "defName": "寮�濮嬫崲鍒�鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "96CCD6D7-3621-47D2-BA1C-D88B0B385B55"
+        },
+        {
+          "defKey": "KnifeToolChangeEndTime",
+          "defName": "缁撴潫鎹㈠垁鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "08DAAE78-8E7D-4215-AC85-7A178D7E699C"
+        },
+        {
+          "defKey": "ToggleManualTime",
+          "defName": "鍒囨崲鎵嬪姩鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "7F7A102D-0800-4B6D-B0F1-B1C0F496BC33"
+        },
+        {
+          "defKey": "ToggleAutoTime",
+          "defName": "鍒囨崲鑷姩鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "5225C534-B744-44F8-A949-607C0EB69F98"
+        },
+        {
+          "defKey": "WorkPieceLogID",
+          "defName": "宸ヤ欢灞ュ巻ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "ECEA1E4D-805C-4048-AFC0-83D77FB08F82"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "璁惧鎵�灞炲伐搴�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "93FD7806-7D23-4692-8340-90AA2AFC0135"
+        },
+        {
+          "defKey": "MonitoringPoint",
+          "defName": "璁惧淇℃伅鍙樻洿鐐�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "1595357C-2DB6-4B05-8A5B-3E9EBB74659D"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "璁惧淇℃伅鍙樻洿鏃剁敓浜у伐浠跺彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "464F2AD1-616F-49B2-80C3-2B67926156EA"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "E73A1858-041F-4753-A49B-2F00FBD0AF68"
+        },
+        {
+          "defKey": "LogAddTime",
+          "defName": "灞ュ巻淇℃伅鏂板鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "48925313-9295-4AA5-9704-E2BD6136868B"
+        },
+        {
+          "defKey": "AlertClose",
+          "defName": "鏁呴殰鏄惁缁撴潫",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF",
+          "id": "C858A2A2-5FA0-4FC5-B437-49CF787E3AEA"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "璁惧杩愯鍘嗗彶",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "E7519C94-4E15-413A-99E1-25175F4BE636",
+      "defKey": "EquipmentCurrentMonitor",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentCurrentMonitorID",
+          "defName": "涓婚敭ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "BD53743F-6C42-426D-A280-918B6760B178"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0CCD40F2-A932-4782-B704-F20AC022F011"
+        },
+        {
+          "defKey": "EquipmentCurrentState",
+          "defName": "褰撳墠鐘舵��",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DB3E4FD5-C007-4C76-A845-2B5D7B02D2DB"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0D62992C-92B6-4DE2-8E0E-C36946E29398"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "21C897A3-CCD8-4509-A42A-78752F121635"
+        },
+        {
+          "defKey": "OnlineTime",
+          "defName": "涓婄嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "4A150DBF-2634-4310-AD1F-15CEEA3C5964"
+        },
+        {
+          "defKey": "WorkTime",
+          "defName": "鍔犲伐鏃堕暱",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "683DDB1C-3A89-47DA-B450-DBB3EA0BCEF3"
+        },
+        {
+          "defKey": "KnifeToolLife",
+          "defName": "鍒�鍏蜂娇鐢ㄥ鍛�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "ED0F2273-0070-4868-B00A-4E35464BA285"
+        },
+        {
+          "defKey": "SpindleCurrent",
+          "defName": "涓昏酱鐢垫祦",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E88D4DE0-E309-4E9E-8D8E-B81F50F1B1E4"
+        },
+        {
+          "defKey": "SpindleTorque",
+          "defName": "涓昏酱鎵煩",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "83832964-C286-4999-AF79-CE6A67D91B33"
+        },
+        {
+          "defKey": "SpindleLoad",
+          "defName": "涓昏酱璐熻浇",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "27121F6E-28E5-4FCE-9302-5669C5352205"
+        },
+        {
+          "defKey": "FailureType",
+          "defName": "鏁呴殰浠g爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "015D6B74-E225-47E1-B816-0358DCADFF21"
+        },
+        {
+          "defKey": "AlertTime",
+          "defName": "鎶ヨ鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "3C64044C-37A4-49AF-B4DC-1C61ABF784B2"
+        },
+        {
+          "defKey": "AlertMsg",
+          "defName": "鎶ヨ淇℃伅",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "DB7914D2-DB62-4D85-98A8-3FDA71506F5E"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "78E4246E-8DAF-43EF-9B2F-8F425BDFB7A0"
+        },
+        {
+          "defKey": "IsCloseAlert",
+          "defName": "鍛婅鏄惁鍏抽棴",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF",
+          "id": "83B5C337-0B9A-4510-A387-8C75AFDD9DCF"
+        },
+        {
+          "defKey": "IsConnect",
+          "defName": "鏄惁閾炬帴",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6F7C1C5C-D159-41E6-BF9D-54DEEFA79AFF",
+          "id": "2A012539-C447-494A-9ED0-04FA321D34EE"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "瀹炴椂璁惧鐘舵��",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "97A0D266-34A8-4B0F-AC52-8EC1BCBA3B15",
+      "defKey": "KnifeToolDataMonitor",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "KnifeToolDataMonitorID",
+          "defName": "ID",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F54CBCD1-D6EA-454A-AC57-DC495AB54580"
+        },
+        {
+          "defKey": "KnifeToolID",
+          "defName": "鍒�鍏风紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "4316CC10-9714-4427-90CB-835378103816"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "4CF229CD-7A77-41B7-BC1D-26AA86AA0746"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F3944CBD-3D06-4BE2-B9F9-1C6BF6B8C4D4"
+        },
+        {
+          "defKey": "KnifeToolName",
+          "defName": "鍒�鍏峰悕绉�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "6E9F6CAE-4879-4F94-8D11-5FE38790900F"
+        },
+        {
+          "defKey": "KnifeToolCode",
+          "defName": "鍒�鍏风爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "A26E9ED8-6852-4ADF-8B6A-CA2CBB62378C"
+        },
+        {
+          "defKey": "KnifeToolModel",
+          "defName": "鍒�鍏峰瀷鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "B46B7678-45D6-4F91-AF04-4DA89229DFFF"
+        },
+        {
+          "defKey": "KnifeEdgeNumber",
+          "defName": "鍒�娌挎暟",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "479C9AF0-5377-4D46-A84B-84A41A04FDA0"
+        },
+        {
+          "defKey": "KnifeToolInsideID",
+          "defName": "鍒�鍏峰唴閮ㄥ彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "CB1B8C2E-D128-4036-826D-D92BC579AFB5"
+        },
+        {
+          "defKey": "KnifeWarehouseID",
+          "defName": "鍒�搴撳彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "FDF9EFF8-2E5C-424E-B052-4D83863DD1FB"
+        },
+        {
+          "defKey": "KnifePositionID",
+          "defName": "鍒�浣嶇紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F73ED5C3-D74E-4F36-96BC-2DD69E360D12"
+        },
+        {
+          "defKey": "KnifeToolLife",
+          "defName": "棰濆畾瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "ABF33799-5BBB-42BC-BCB1-D4F15E1ED3A1"
+        },
+        {
+          "defKey": "KnifeToolEstimateLife",
+          "defName": "棰勫畾瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "C9FBACA9-546A-40AC-9957-541B0B3B341C"
+        },
+        {
+          "defKey": "KnifeToolEarlyWarningLife",
+          "defName": "棰勮瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "D25B92C5-4F24-46AE-90CD-2109A4C7E614"
+        },
+        {
+          "defKey": "KnifeToolSurplusLife",
+          "defName": "鍓╀綑瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "DDABB560-24AB-433B-9770-248606FC9BDF"
+        },
+        {
+          "defKey": "KnifeToolChangeAlertThreshold",
+          "defName": "鍒�鍏烽璀﹂槇鍊�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "967B15F5-C6F9-4F51-96A1-7002DFEC4804"
+        },
+        {
+          "defKey": "Remarks1",
+          "defName": "澶囨敞1",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "5B6E4FD3-6F92-4612-92E6-35F2068149A2"
+        },
+        {
+          "defKey": "Remarks2",
+          "defName": "澶囨敞2",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "F00D2C1F-5701-41E2-A4F7-8912C39880F0"
+        },
+        {
+          "defKey": "Remarks3",
+          "defName": "澶囨敞3",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D3A8EE2F-6C0D-4F96-B6E7-A281E8A0D22F"
+        },
+        {
+          "defKey": "Remarks4",
+          "defName": "澶囨敞4",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "2A2383CF-3BE5-48F9-8A4B-2252A091B096"
+        },
+        {
+          "defKey": "Remarks5",
+          "defName": "澶囨敞5",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "DE163E87-A320-4F36-8617-6EEA15EDA03B"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "defName": "鍒�鍏风洃鎺�",
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "467A479E-05D8-46F5-80F6-910B5A9F1C81",
+      "defKey": "QualityDataInfo",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "QualityDataInfoID",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "0754B938-CD37-4E2D-9896-AA5D96B84644"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "108C27A5-E602-4E9D-BCDB-26CE7D7060E5"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "53644D2D-D496-40DF-815B-6E00D9B158DC"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "73CE6B74-6C1B-4C50-9643-5C8A62218EF7"
+        },
+        {
+          "defKey": "QualityType",
+          "defName": "璐ㄩ噺娴嬮噺鏂瑰紡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "2E905EC1-A37A-4B0F-A87F-AF834CC068BC"
+        },
+        {
+          "defKey": "QualityState",
+          "defName": "璐ㄩ噺鐘舵��",
+          "comment": "鍚堟牸銆佷笉鍚堟牸銆佺枒浼�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "94183F54-A524-4D41-9030-BECDA2D8DD81"
+        },
+        {
+          "defKey": "QualityStateUpdateMode",
+          "defName": "鎿嶄綔鏂瑰紡",
+          "comment": "浜哄伐淇敼锛屾帴鏀舵暟鎹�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E96BCC3C-0E68-45A0-B1C7-05C43A8BAC21"
+        },
+        {
+          "defKey": "QualityStateUpdateUser",
+          "defName": "鎿嶄綔浜�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "9EFC4111-438A-4CC9-A251-2F79AF3AFF71"
+        },
+        {
+          "defKey": "OfflineTime",
+          "defName": "涓嬬嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "530B5D20-B630-409B-A484-5D6BF95660F9"
+        },
+        {
+          "defKey": "QualityOP10To1",
+          "defName": "杩炴潌鍘氬害",
+          "comment": "OP10/OP40",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "2445D5B1-6326-4A37-BF08-3E528E80B77B"
+        },
+        {
+          "defKey": "QualityOP20To1",
+          "defName": "灏忓ご瀛旂洿寰�",
+          "comment": "OP20/OP60/OP90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "321F277E-57B4-41C8-B4BD-1ABEACF66143"
+        },
+        {
+          "defKey": "QualityOP30To1",
+          "defName": "娑ㄦ柇鍔涚煩",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "4AB05470-AE46-4E26-B7DE-0A759BA6E92D"
+        },
+        {
+          "defKey": "QualityOP30To2",
+          "defName": "棰勬嫥绱у姏鐭�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DF397441-4985-4DF1-86FB-0D0BAAF750AA"
+        },
+        {
+          "defKey": "QualityOP30To3",
+          "defName": "棰勬嫥绱ц搴�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "22EC6084-7AB2-4351-B4D3-F3307F7156D5"
+        },
+        {
+          "defKey": "QualityOP30To4",
+          "defName": "缁堟嫥绱у姏鐭�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "C8EE683A-8E43-4FDB-A37F-A8ABB080C665"
+        },
+        {
+          "defKey": "QualityOP30To5",
+          "defName": "缁堟嫥绱ц搴�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F6B5E425-2372-4C83-A04B-044DF65DC483"
+        },
+        {
+          "defKey": "QualityOP30To6",
+          "defName": "琛鍘嬭鍔涚煩",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "D46AAD3C-3BA8-4C50-B93E-50B016FDFED0"
+        },
+        {
+          "defKey": "QualityOP30To7",
+          "defName": "琛鍘嬭浣嶇Щ",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "CAE14C4C-A91C-4277-84A1-BD8D026A9792"
+        },
+        {
+          "defKey": "QualityOP35To1",
+          "defName": "鍘嬭鍔涚煩",
+          "comment": "OP35",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "7467057A-746E-4259-801C-02ED0DBDB423"
+        },
+        {
+          "defKey": "QualityOP35To2",
+          "defName": "Y杞翠綅绉�",
+          "comment": "OP35",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F6F0F9FE-DA09-419F-B8F1-21AB853403BA"
+        },
+        {
+          "defKey": "QualityOP60To1",
+          "defName": "澶уご瀛旂洿寰�",
+          "comment": "OP60/OP90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8C2F799E-D26A-456E-B0D6-9C378949C982"
+        },
+        {
+          "defKey": "QualityOP60To2",
+          "defName": "鏍¢獙鐮佺粨鏋�",
+          "comment": "OP60 浣嗘槸浠�涔堝緟瀹�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "2242A11A-0D47-4CFB-A5D4-18D25545C7CD"
+        },
+        {
+          "defKey": "QualityOP80To1",
+          "defName": "娓呮礂娓╁害",
+          "comment": "OP80",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "44A5F7FC-4717-4CF9-9833-81FE86EE875E"
+        },
+        {
+          "defKey": "QualityOP80To2",
+          "defName": "娓呮礂鍘嬪姏",
+          "comment": "OP80",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "AF104FFB-5481-4D39-B60B-BBD4500B135A"
+        },
+        {
+          "defKey": "QualityOP80To3",
+          "defName": "鍑哄彛澶勫伐浠舵俯搴�",
+          "comment": "OP80 杩欎釜寰呭畾锛屽彲鑳戒笉鏄川閲忎俊鎭�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "A8BE01F1-F168-4741-9B6E-F893BD062371"
+        },
+        {
+          "defKey": "QualityOP90To1",
+          "defName": "澶уご閲嶉噺",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8FEA9D1B-DA10-46F8-9B59-57C3DA47296A"
+        },
+        {
+          "defKey": "QualityOP90To2",
+          "defName": "灏忓ご閲嶉噺",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0B254D18-146E-426F-9A18-4AF92437291E"
+        },
+        {
+          "defKey": "QualityOP90To3",
+          "defName": "鎬婚噸",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "5B42C0A6-B5D5-4941-A82C-88ABF5C75263"
+        },
+        {
+          "defKey": "QualityOP90To4",
+          "defName": "寮洸",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "5EB51AF5-3FAD-4992-A63E-DB23557B8799"
+        },
+        {
+          "defKey": "QualityOP90To5",
+          "defName": "鎵害",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "EE3D246E-03FF-47C4-A052-11A2B42C6338"
+        },
+        {
+          "defKey": "QualityOP90To6",
+          "defName": "鍨傜洿搴�",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E4E2379E-A050-479E-9774-FFA803F92594"
+        },
+        {
+          "defKey": "QualityOP90To7",
+          "defName": "澶уご瀛斿垎缁勭骇鍒�",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DCCEFA42-9AE2-4F43-AD99-AD956A3429E0"
+        },
+        {
+          "defKey": "QualityOP90To8",
+          "defName": "灏忓ご瀛斿垎缁勭骇鍒�",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E35479C1-D8B6-4F0A-AA3B-676632D3C2BB"
+        },
+        {
+          "defKey": "QualityOP90To9",
+          "defName": "閲嶉噺缁勫埆",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "FFD20BAB-AA42-47B5-A459-A18AC9CF6181"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "B1261DD7-0898-4919-AB66-84B191D9ECBD"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "correlations": [],
+      "defName": "璐ㄩ噺鏁版嵁琛�",
+      "indexes": []
+    },
+    {
+      "id": "E2F05A94-F380-4C57-AC4B-84F90338AD2E",
+      "defKey": "QualityDataInfoLog",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "QualityDataInfoLogID",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "D3075F00-9E16-4FA2-81BB-3841A5CD8B46"
+        },
+        {
+          "defKey": "QualityDataInfoID",
+          "defName": "QualityDataInfo琛ㄤ富閿�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "0754B938-CD37-4E2D-9896-AA5D96B84644"
+        },
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "108C27A5-E602-4E9D-BCDB-26CE7D7060E5"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "53644D2D-D496-40DF-815B-6E00D9B158DC"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "73CE6B74-6C1B-4C50-9643-5C8A62218EF7"
+        },
+        {
+          "defKey": "QualityState",
+          "defName": "璐ㄩ噺鐘舵��",
+          "comment": "鍚堟牸銆佷笉鍚堟牸銆佺枒浼�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "94183F54-A524-4D41-9030-BECDA2D8DD81"
+        },
+        {
+          "defKey": "QualityStateUpdateMode",
+          "defName": "鎿嶄綔鏂瑰紡",
+          "comment": "浜哄伐淇敼锛屾帴鏀舵暟鎹�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E96BCC3C-0E68-45A0-B1C7-05C43A8BAC21"
+        },
+        {
+          "defKey": "QualityStateUpdateUser",
+          "defName": "鎿嶄綔浜�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "9EFC4111-438A-4CC9-A251-2F79AF3AFF71"
+        },
+        {
+          "defKey": "OfflineTime",
+          "defName": "涓嬬嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "530B5D20-B630-409B-A484-5D6BF95660F9"
+        },
+        {
+          "defKey": "QualityOP10To1",
+          "defName": "杩炴潌鍘氬害",
+          "comment": "OP10/OP40",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "2445D5B1-6326-4A37-BF08-3E528E80B77B"
+        },
+        {
+          "defKey": "QualityOP20To1",
+          "defName": "灏忓ご瀛旂洿寰�",
+          "comment": "OP20/OP60/OP90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "321F277E-57B4-41C8-B4BD-1ABEACF66143"
+        },
+        {
+          "defKey": "QualityOP30To1",
+          "defName": "娑ㄦ柇鍔涚煩",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "4AB05470-AE46-4E26-B7DE-0A759BA6E92D"
+        },
+        {
+          "defKey": "QualityOP30To2",
+          "defName": "棰勬嫥绱у姏鐭�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DF397441-4985-4DF1-86FB-0D0BAAF750AA"
+        },
+        {
+          "defKey": "QualityOP30To3",
+          "defName": "棰勬嫥绱ц搴�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "22EC6084-7AB2-4351-B4D3-F3307F7156D5"
+        },
+        {
+          "defKey": "QualityOP30To4",
+          "defName": "缁堟嫥绱у姏鐭�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "C8EE683A-8E43-4FDB-A37F-A8ABB080C665"
+        },
+        {
+          "defKey": "QualityOP30To5",
+          "defName": "缁堟嫥绱ц搴�",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F6B5E425-2372-4C83-A04B-044DF65DC483"
+        },
+        {
+          "defKey": "QualityOP30To6",
+          "defName": "琛鍘嬭鍔涚煩",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "D46AAD3C-3BA8-4C50-B93E-50B016FDFED0"
+        },
+        {
+          "defKey": "QualityOP30To7",
+          "defName": "琛鍘嬭浣嶇Щ",
+          "comment": "OP30",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "CAE14C4C-A91C-4277-84A1-BD8D026A9792"
+        },
+        {
+          "defKey": "QualityOP35To1",
+          "defName": "鍘嬭鍔涚煩",
+          "comment": "OP35",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "7467057A-746E-4259-801C-02ED0DBDB423"
+        },
+        {
+          "defKey": "QualityOP35To2",
+          "defName": "Y杞翠綅绉�",
+          "comment": "OP35",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "F6F0F9FE-DA09-419F-B8F1-21AB853403BA"
+        },
+        {
+          "defKey": "QualityOP60To1",
+          "defName": "澶уご瀛旂洿寰�",
+          "comment": "OP60/OP90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8C2F799E-D26A-456E-B0D6-9C378949C982"
+        },
+        {
+          "defKey": "QualityOP60To2",
+          "defName": "鏍¢獙鐮佺粨鏋�",
+          "comment": "OP60 浣嗘槸浠�涔堝緟瀹�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "2242A11A-0D47-4CFB-A5D4-18D25545C7CD"
+        },
+        {
+          "defKey": "QualityOP80To1",
+          "defName": "娓呮礂娓╁害",
+          "comment": "OP80",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "44A5F7FC-4717-4CF9-9833-81FE86EE875E"
+        },
+        {
+          "defKey": "QualityOP80To2",
+          "defName": "娓呮礂鍘嬪姏",
+          "comment": "OP80",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "AF104FFB-5481-4D39-B60B-BBD4500B135A"
+        },
+        {
+          "defKey": "QualityOP80To3",
+          "defName": "鍑哄彛澶勫伐浠舵俯搴�",
+          "comment": "OP80 杩欎釜寰呭畾锛屽彲鑳戒笉鏄川閲忎俊鎭�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "A8BE01F1-F168-4741-9B6E-F893BD062371"
+        },
+        {
+          "defKey": "QualityOP90To1",
+          "defName": "澶уご閲嶉噺",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8FEA9D1B-DA10-46F8-9B59-57C3DA47296A"
+        },
+        {
+          "defKey": "QualityOP90To2",
+          "defName": "灏忓ご閲嶉噺",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0B254D18-146E-426F-9A18-4AF92437291E"
+        },
+        {
+          "defKey": "QualityOP90To3",
+          "defName": "鎬婚噸",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "5B42C0A6-B5D5-4941-A82C-88ABF5C75263"
+        },
+        {
+          "defKey": "QualityOP90To4",
+          "defName": "寮洸",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "5EB51AF5-3FAD-4992-A63E-DB23557B8799"
+        },
+        {
+          "defKey": "QualityOP90To5",
+          "defName": "鎵害",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "EE3D246E-03FF-47C4-A052-11A2B42C6338"
+        },
+        {
+          "defKey": "QualityOP90To6",
+          "defName": "鍨傜洿搴�",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E4E2379E-A050-479E-9774-FFA803F92594"
+        },
+        {
+          "defKey": "QualityOP90To7",
+          "defName": "澶уご瀛斿垎缁勭骇鍒�",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "DCCEFA42-9AE2-4F43-AD99-AD956A3429E0"
+        },
+        {
+          "defKey": "QualityOP90To8",
+          "defName": "灏忓ご瀛斿垎缁勭骇鍒�",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E35479C1-D8B6-4F0A-AA3B-676632D3C2BB"
+        },
+        {
+          "defKey": "QualityOP90To9",
+          "defName": "閲嶉噺缁勫埆",
+          "comment": "P90",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "FFD20BAB-AA42-47B5-A459-A18AC9CF6181"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "B1261DD7-0898-4919-AB66-84B191D9ECBD"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "correlations": [],
+      "defName": "璐ㄩ噺鏁版嵁琛ㄦ棩蹇�",
+      "indexes": []
+    },
+    {
+      "id": "645544A3-2077-41AA-8770-D2527344FA7C",
+      "defKey": "EquipmentFailureCode",
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧浠e彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D7BFCEE6-D4C8-4CC7-84D3-88181BF39941"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "璁惧鎵�灞炲伐搴�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "EFCBA7F9-A70E-4068-AEF0-195D583EC35E"
+        },
+        {
+          "defKey": "Code",
+          "defName": "浠e彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "2DD90AA6-E5C0-4538-A4DD-345D33EDACD7"
+        },
+        {
+          "defKey": "CodeType",
+          "defName": "浠e彿绫诲瀷锛�1锛氭晠闅� 2锛氬憡璀︼級",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "6B0A4B07-FC94-454E-A2DB-FC041595CACF"
+        },
+        {
+          "defKey": "CodeLevel",
+          "defName": "浠e彿绾у埆锛�1,2,3绾э級",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "1310DE7E-4272-47FA-AB59-A98D85A73F66"
+        },
+        {
+          "defKey": "CodeDesc",
+          "defName": "浠e彿鎻忚堪",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "E710B4C1-B0AF-41B8-B330-EC7C32916BF1"
+        }
+      ],
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "correlations": [],
+      "defName": "鍛婅鏁呴殰浠g爜琛�",
+      "indexes": []
+    },
+    {
+      "id": "03C41C31-8F7C-44D6-814A-CE12BD74F112",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "DataCaptureConfig",
+      "defName": "鏁版嵁鏀堕泦宸ュ簭閰嶇疆",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "ID",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "0991ED37-BE86-45CF-B20D-B5AFFF68018D"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "942E5AA2-BE3B-4462-8916-E4FBB8C47CF6"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "1D41E912-51B4-4805-B745-A2C34E97575B"
+        },
+        {
+          "defKey": "DataCapturePointCode",
+          "defName": "鏁版嵁鏀堕泦鐐逛唬鐮�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8107A2F3-EFC1-4085-9FBE-AC2F01B9FAF0"
+        },
+        {
+          "defKey": "DataCapturePointCname",
+          "defName": "鏀堕泦鏀堕泦鐐规弿杩�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "95BF4865-1899-4A0C-B509-CE680E550B6C"
+        },
+        {
+          "defKey": "DataCaptureType",
+          "defName": "鏀堕泦鏂瑰紡",
+          "comment": "PLC,NC",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "E8EAAAC2-898F-4003-809C-E5210B93E799"
+        },
+        {
+          "defKey": "DataCapturePLCType",
+          "defName": "鏀堕泦PLC鍨嬪彿",
+          "comment": "姣斿瑗块棬瀛怱7锛�300鍟ョ殑",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "07C5AB2F-7B22-4414-B60F-CA056EC9A9A6"
+        },
+        {
+          "defKey": "PLCIP",
+          "defName": "PLC鐨処P鍦板潃",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "6DC87026-D891-4CDE-B13B-E83C8B7B8DC0"
+        },
+        {
+          "defKey": "PLCPort",
+          "defName": "PLC绔彛",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "CDDD572E-49EC-4CB4-B31F-BE78255FB54D"
+        },
+        {
+          "defKey": "DbNumber",
+          "defName": "DB鍧楀湴鍧�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "939CA295-0189-4022-BCB3-28C3EDFC9730"
+        },
+        {
+          "defKey": "Offset",
+          "defName": "鍦板潃鍋忕Щ閲�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "E65FF35A-E4C0-41EB-AF2C-6F19A6C632A0"
+        },
+        {
+          "defKey": "DataCaptureColumnType",
+          "defName": "鏀堕泦瀛楁绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
+          "id": "9D3568B0-EFC6-4D7E-99FE-2CC753F2AA5A"
+        },
+        {
+          "defKey": "DataCaptureColumnLength",
+          "defName": "鏀堕泦瀛楁闀垮害",
+          "comment": "灏卞瓧绗︿覆鍨嬬敤",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "B52D44F1-CF16-417E-88FF-F178EF6961B0"
+        },
+        {
+          "defKey": "DataCaptureColumnTabelName",
+          "defName": "鏀堕泦瀛楁瀵瑰簲鍒楀悕",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "51F84EE6-7274-4AB4-AB00-069A4E063717"
+        },
+        {
+          "defKey": "DataCaptureFrequency",
+          "defName": "鏀堕泦棰戠巼(寰)",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F8E56615-347C-4D7E-B259-DE357A5DA81C"
+        },
+        {
+          "defKey": "IsFeedback",
+          "defName": "鏄惁鍙嶉PLC",
+          "comment": "鍙嶉璺冲簭鍜岃川閲忔暟鎹�",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "6CD6E5A4-F194-4217-AC77-11CE5201421C"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "E401B92A-787B-4EE9-B17A-5464ACFFEF57",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "DataCaptureColumnConfig",
+      "defName": "鏁版嵁鏀堕泦鐐瑰浜庡瓧娈�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "ID",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "5260540F-6511-43B1-BF89-04F51E4B23DB"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0EC35288-9E7A-46B0-A502-2B657C59BA9F"
+        },
+        {
+          "defKey": "DataCapturePointCode",
+          "defName": "鏁版嵁鏀堕泦鐐逛唬鐮�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "3EEC7C30-A48F-4557-A9B4-1B3ECBCF8C72"
+        },
+        {
+          "defKey": "DataCapturePointCname",
+          "defName": "鏀堕泦鏀堕泦鐐规弿杩�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "1C55E6A5-3BB4-4A1B-AF47-F182448B5CE0"
+        },
+        {
+          "defKey": "DataCaptureType",
+          "defName": "鏀堕泦鏂瑰紡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "93631419-144C-48D7-B599-33667C1DDA50"
+        },
+        {
+          "defKey": "DbNumber",
+          "defName": "DB鍧楀湴鍧�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "719A575D-E47E-47AA-9447-71F9DDF46170"
+        },
+        {
+          "defKey": "Offset",
+          "defName": "鍦板潃鍋忕Щ閲�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "86A2205F-2D08-437A-81B5-5F7E169EAFC6"
+        },
+        {
+          "defKey": "DataCaptureColumnLength",
+          "defName": "鏀堕泦瀛楁闀垮害",
+          "comment": "灏卞瓧绗︿覆鍨嬬敤",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F116C697-7F1E-4F64-8D15-6EA279DED406"
+        },
+        {
+          "defKey": "DataCaptureColumnType",
+          "defName": "鏀堕泦瀛楁绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": true,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "A00DD351-87AA-4FF6-BDD5-5B7E34EA98FC"
+        },
+        {
+          "defKey": "DataCaptureColumnTabelName",
+          "defName": "鏀堕泦瀛楁瀵瑰簲鍒楀悕",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "7100801B-7D53-4509-A441-FFDF900B2B20"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "82022E44-A3A5-458E-A8B0-C60852BA1396",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "ThreadStatusMonitor",
+      "defName": "绾跨▼鐘舵�佺洃鎺ц〃",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "ID",
+          "defName": "涓婚敭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": true,
+          "notNull": true,
+          "autoIncrement": true,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "73238248-C2C6-4A4D-8901-A62B67D9618A"
+        },
+        {
+          "defKey": "ThreadCode",
+          "defName": "绾跨▼浠g爜",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0A6663DB-AC87-4C1A-B357-61B93715FABE"
+        },
+        {
+          "defKey": "ThreadCname",
+          "defName": "绾跨▼鎻忚堪",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "B5A650AC-C6D0-437E-917B-CC2A0D55D646"
+        },
+        {
+          "defKey": "ThreadStartTime",
+          "defName": "绾跨▼鍚姩鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "0DAF1E4D-7A97-467E-ADBA-DB1D16ED1B8C"
+        },
+        {
+          "defKey": "ThreadEndTime",
+          "defName": "绾跨▼缁撴潫鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "114B799E-293C-4371-9060-00D4C9D18018"
+        },
+        {
+          "defKey": "ThreadLastModifyTime",
+          "defName": "绾跨▼鏈�鍚庡鐞嗘椂闂�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "64107AB6-DC83-45D9-A6F2-378F28588E20"
+        },
+        {
+          "defKey": "ThreadStatue",
+          "defName": "绾跨▼鐘舵��",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "CCBA2E0C-5359-4414-8FCA-F120BF07D886"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "8B4DAED1-4686-4B64-A697-6D80BCFD4C86"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "78B31C58-0D69-4D15-B052-B3BCD8B3AE45",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "WorkPieceProcess",
+      "defName": "宸ヤ欢鍔犲伐灞ュ巻琛�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "A0387909-7AF8-44C4-ACDB-00653D6D480B"
+        },
+        {
+          "defKey": "EquipmentID",
+          "defName": "褰撳墠璁惧",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "CC13E571-510F-4D98-9C98-EC2630224CD0"
+        },
+        {
+          "defKey": "WorkingProcedureCurrent",
+          "defName": "褰撳墠宸ュ簭",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "89854947-90C2-4398-BB9E-09240C8AD921"
+        },
+        {
+          "defKey": "StartTime",
+          "defName": "宸ュ簭涓婄嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "FF9094C9-93A6-4FA0-AD06-BDFF979F677C"
+        },
+        {
+          "defKey": "EndTime",
+          "defName": "宸ュ簭涓嬬嚎鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": true,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "CC50667E-4865-41F9-8EB6-553CF485B500"
+        },
+        {
+          "defKey": "QualityState",
+          "defName": "璐ㄩ噺鐘舵��",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "AAC21AC5-5249-4162-BAEF-ED5C1640B44C"
+        },
+        {
+          "defKey": "QualityDataInfoID",
+          "defName": "璐ㄩ噺淇℃伅id",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "670FFFEC-F673-473A-9E15-CDF6FC34F2E9"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "9DAD773A-AE18-4823-88FF-B30E1139F8BF",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "ProductionPlanInfo",
+      "defName": "鐢熶骇璁″垝琛�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "PlanType",
+          "defName": "璁″垝绫诲瀷锛�1锛氱彮缁勮鍒� 2锛氭湀浠借鍒掞級",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "AECA9E14-BEDF-4675-BE2C-13FFEDFFB332"
+        },
+        {
+          "defKey": "PlanTime",
+          "defName": "璁″垝鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "2ABCA4E5-C646-428A-876E-77A95885F8F9"
+        },
+        {
+          "defKey": "TeamType",
+          "defName": "鐝粍绫诲瀷锛堢櫧鐝紝鏅氱彮锛�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "2A538D28-209D-4AAD-8B82-5E77D4098796"
+        },
+        {
+          "defKey": "PlanProductionNum",
+          "defName": "璁″垝鐢熸垚鏁伴噺",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "5A7E0EA0-A7FF-478C-A6BD-C95D0E7244F1"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "5E68DE76-7654-46DC-A367-FB1F52FA0AE6",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "KnifeToolEquipmentMonitor",
+      "defName": "璁惧鍒�鍏蜂俊鎭洃鎺�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "24897AF3-8B07-4A4D-B118-893031709119"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "3A57AE46-D374-4AF6-856E-BA62F5884890"
+        },
+        {
+          "defKey": "Remarks1",
+          "defName": "澶囨敞1",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "C5B7DE42-40C1-4302-ACF7-994434FAB84D"
+        },
+        {
+          "defKey": "Remarks2",
+          "defName": "澶囨敞2",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "CC7DA307-87C6-4903-97DC-7DECCAA6E94F"
+        },
+        {
+          "defKey": "Remarks3",
+          "defName": "澶囨敞3",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "C48E82E6-9CB3-4AB3-9E8D-6FD575697983"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "C5767D75-2418-4639-945A-CB091347978C",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "KnifeToolEquipmentInfo",
+      "defName": "璁惧鍒�鍏疯鎯呰〃",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "D93A7CE7-F73A-4F37-BAFA-A892ACC5B3AB"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "1CC9B368-A7C7-4471-8681-35172B3D9597"
+        },
+        {
+          "defKey": "Station",
+          "defName": "宸ヤ綅",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "D8148DB5-BCDF-4CB6-8772-A4DF4421176F"
+        },
+        {
+          "defKey": "KnifeToolID",
+          "defName": "鍒�鍏风紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "8F932AA8-4E4D-42AA-80B6-5246CB14DC7C"
+        },
+        {
+          "defKey": "KnifeToolName",
+          "defName": "鍒�鍏峰悕绉�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "FD56D7BF-CCFF-4782-9C5C-2197066D8764"
+        },
+        {
+          "defKey": "StartLife",
+          "defName": "鎹笂鏃跺鍛�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "E92275C1-E11D-49BB-89A5-C568FBBA21FB"
+        },
+        {
+          "defKey": "CurrentLife",
+          "defName": "褰撳墠瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "04558CFA-A591-4987-8985-00DD0319C779"
+        },
+        {
+          "defKey": "ChangeStartTime",
+          "defName": "鎹笂鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "47F8B34F-8022-4EDF-BB45-5530A9137DEA"
+        },
+        {
+          "defKey": "Remarks1",
+          "defName": "澶囨敞1",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "230A6EED-DBC0-4DD9-9BC2-7DC4363A10CC"
+        },
+        {
+          "defKey": "Remarks2",
+          "defName": "澶囨敞2",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "5226E250-DF62-492D-A866-D814E4333623"
+        },
+        {
+          "defKey": "Remarks3",
+          "defName": "澶囨敞3",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "2CE76A2D-8ADE-49DD-B6A5-1CBB12FF47B5"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "155C18AB-4F4F-4A7A-B6AE-06724C4F6D8A",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "KnifeToolEquipmentInfoLog",
+      "defName": "璁惧鍒�鍏锋洿鎹㈠饱鍘嗚〃",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "949CAB11-BDE3-4B9D-A19A-A9B33FD9BEA2"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "871496C8-BC15-4859-A7CA-F7F739134CF2"
+        },
+        {
+          "defKey": "Station",
+          "defName": "宸ヤ綅",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "BE3A8864-C53A-454E-A92B-A92C13183E1D"
+        },
+        {
+          "defKey": "KnifeToolID",
+          "defName": "鍒�鍏风紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "61338D95-4D08-484A-B618-072EC43D5C45"
+        },
+        {
+          "defKey": "KnifeToolName",
+          "defName": "鍒�鍏峰悕绉�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "63768AD4-388F-4D82-A36C-CB835AF04F4A"
+        },
+        {
+          "defKey": "StartLife",
+          "defName": "鎹笂鏃跺鍛�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "2B5B8FEE-AB2F-4C76-A7AA-CBB9E92628FB"
+        },
+        {
+          "defKey": "CurrentLife",
+          "defName": "褰撳墠瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "3309C4D4-25F1-49ED-8063-4CD673186CE9"
+        },
+        {
+          "defKey": "ResidueLife",
+          "defName": "鍓╀綑瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "58085B15-3DAA-4A5F-9FB0-7736F8F1AFDA"
+        },
+        {
+          "defKey": "ChangeStartTime",
+          "defName": "鎹笂鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "6923EC63-04D3-4D5C-B1D7-B46CECCEB2F3"
+        },
+        {
+          "defKey": "ChangeEndTime",
+          "defName": "鎹笅鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "9444F8FD-F02E-4E1B-A0BB-2D8C6A0AFD72"
+        },
+        {
+          "defKey": "Remarks1",
+          "defName": "澶囨敞1",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "6120B22C-EDD0-4428-8B03-481CC3DCF625"
+        },
+        {
+          "defKey": "Remarks2",
+          "defName": "澶囨敞2",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "5A3CA278-26E7-4883-99EF-6D2242361D56"
+        },
+        {
+          "defKey": "Remarks3",
+          "defName": "澶囨敞3",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "88BFE267-CA2E-4E85-A484-D84FB4F6D024"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "E0E3053E-D81B-4579-94F2-9FBBD68BEC9C",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "KnifeToolEquipmentUpdateLog",
+      "defName": "璁惧鍒�鍏锋搷浣滄棩蹇楄〃",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "EquipmentID",
+          "defName": "璁惧缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "0BEDF15A-C3FC-4481-811D-0EC3DDF4F65E"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "46ABB2E5-D4B2-4939-84B9-D74480395EF4"
+        },
+        {
+          "defKey": "Station",
+          "defName": "宸ヤ綅",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "47A35CED-D0D6-4468-9F0C-2664C983935C"
+        },
+        {
+          "defKey": "KnifeToolID",
+          "defName": "鍒�鍏风紪鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "3F6F7AD2-2A06-4EEE-935E-852F46FBD123"
+        },
+        {
+          "defKey": "KnifeToolName",
+          "defName": "鍒�鍏峰悕绉�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "2A2D29A9-C484-4186-BE47-B5C0E7DB27B7"
+        },
+        {
+          "defKey": "StartLife",
+          "defName": "鎹笂鏃跺鍛�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "2A7C38D6-0791-4933-8769-E709EFB40931"
+        },
+        {
+          "defKey": "CurrentLife",
+          "defName": "褰撳墠瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "F612B1AC-6B42-45EB-BDB4-94736313CB6B"
+        },
+        {
+          "defKey": "ResidueLife",
+          "defName": "鍓╀綑瀵垮懡",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "A9C1ED48-B3CA-44FE-9CA3-6E12D6601779"
+        },
+        {
+          "defKey": "ChangeStartTime",
+          "defName": "鎹笂鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "7CFFA0D3-6A93-4DDC-BC10-DF21211064DC",
+          "id": "7CFB3339-2D49-4F65-8EFD-9B6B277EE01F"
+        },
+        {
+          "defKey": "ChangeEndTime",
+          "defName": "鎹笅鏃堕棿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "17DE410F-DFEA-4724-892F-BBA332132687"
+        },
+        {
+          "defKey": "OperateDesc",
+          "defName": "鎿嶄綔鎻忚堪",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "3E948CEC-3070-472C-AF92-F3CA11EC9D15",
+          "id": "A4FFCCF9-F68A-459F-B506-0F93E41358A3"
+        },
+        {
+          "defKey": "Remarks1",
+          "defName": "澶囨敞1",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "422B8F21-7895-4CAE-8D24-8FD583ECF6C8"
+        },
+        {
+          "defKey": "Remarks2",
+          "defName": "澶囨敞2",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "73F524C1-9648-453A-9830-3FE7A7951047"
+        },
+        {
+          "defKey": "Remarks3",
+          "defName": "澶囨敞3",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "87D8BF1F-B5E8-47AE-853B-D6B4BEA3ADDA"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    },
+    {
+      "id": "8955109C-79DD-4EDD-893F-3E390341CDF7",
+      "env": {
+        "base": {
+          "nameSpace": "",
+          "codeRoot": ""
+        }
+      },
+      "defKey": "EquipmentQualityConfig",
+      "defName": "璐ㄩ噺鏁版嵁鏍囧噯鍊奸厤缃�",
+      "comment": "",
+      "properties": {
+        "partitioned by": "(date string)",
+        "row format delimited": "",
+        "fields terminated by ','": "",
+        "collection items terminated by '-'": "",
+        "map keys terminated by ':'": "",
+        "store as textfile;": ""
+      },
+      "nameTemplate": "{defKey}[{defName}]",
+      "notes": {},
+      "headers": [
+        {
+          "refKey": "hideInGraph",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "defName",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "primaryKey",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "notNull",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "autoIncrement",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "domain",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "type",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "len",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "scale",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "comment",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "refDict",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "defaultValue",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "isStandard",
+          "hideInGraph": false
+        },
+        {
+          "refKey": "uiHint",
+          "hideInGraph": true
+        },
+        {
+          "refKey": "extProps",
+          "hideInGraph": true
+        }
+      ],
+      "fields": [
+        {
+          "defKey": "MeasureTool",
+          "defName": "閲忓叿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "F0AB4533-44D3-48EE-90A3-EB2114CADA9A"
+        },
+        {
+          "defKey": "WorkingProcedure",
+          "defName": "宸ュ簭",
+          "comment": "",
+          "type": "VARCHAR",
+          "len": 32,
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "",
+          "id": "0B11019B-796A-4E66-9198-BA73F4938C8F"
+        },
+        {
+          "defKey": "ParamCode",
+          "defName": "鍙傛暟缂栧彿",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "05204067-ADA2-4B35-9EAB-4B9A85E3A3BB"
+        },
+        {
+          "defKey": "ParamDesc",
+          "defName": "鍙傛暟鍚嶇О",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "604A0278-EB2F-48A7-B577-F3195247F5F9"
+        },
+        {
+          "defKey": "StandardValue",
+          "defName": "鍚嶄箟鍊�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "662767C5-5649-48AD-83CC-6E9B78E4501E"
+        },
+        {
+          "defKey": "UpperTolerance",
+          "defName": "涓嬪叕宸�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "A4C7FFC2-F7F1-4F6C-9FB2-B28A0771724C"
+        },
+        {
+          "defKey": "LowerTolerance",
+          "defName": "涓婂叕宸�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "B0B74157-4D5C-499A-820C-37E1B1EF1446"
+        },
+        {
+          "defKey": "ParamColName",
+          "defName": "鍙傛暟鍒楀悕",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "E6AAF76F-B7F9-440C-820F-1BB553EE88DC"
+        },
+        {
+          "defKey": "ParamType",
+          "defName": "鍙傛暟绫诲瀷(1:鏌旀�� 2锛氬叾浠�)",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
+          "id": "E41EB79E-81EA-4F92-96D3-B02667AF2F10"
+        },
+        {
+          "defKey": "Remarks",
+          "defName": "澶囨敞",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "9092C4E0-1A54-4859-ABBB-5B62DBC27573",
+          "id": "39E85908-E878-407B-B9D2-A7EFD2C2DBE0"
+        }
+      ],
+      "correlations": [],
+      "indexes": []
+    }
+  ],
+  "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": "姝e父",
+          "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": [],
+  "dataTypeMapping": {
+    "referURL": "",
+    "mappings": [
+      {
+        "defKey": "string",
+        "id": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+        "defName": "瀛椾覆varchar",
+        "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": "int",
+        "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"
+      },
+      {
+        "defKey": "uniqueidentifier",
+        "id": "9B851CFC-E0A4-4AA4-9F52-7418F700B46F",
+        "defName": "GUID",
+        "BFC87171-C74F-494A-B7C2-76B9C55FACC9": "uniqueidentifier",
+        "F3AC2415-E86B-40C6-9FEB-F4B7937D2C30": "Guid"
+      },
+      {
+        "defKey": "string1",
+        "id": "F8A4AFB0-F3B7-4E32-A5F2-D4D8D3F4BACD",
+        "defName": "瀛椾覆nvarchar",
+        "29D1CE08-4C35-4D2D-AAA9-23D93305B52E": "VARCHAR",
+        "A4E23CB7-BB01-4BD1-9F71-F73F3E15A542": "VARCHAR2",
+        "BFC87171-C74F-494A-B7C2-76B9C55FACC9": "nvarchar",
+        "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",
+        "81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2": "string",
+        "56F4B55B-F0B8-4049-9E6B-50B95C1D793A": "VARCHAR",
+        "483F9346-C99E-4014-A1D2-A554606BD8A3": "VARCHAR",
+        "ABF5836C-0B7C-4007-A41C-F869325E5842": "VARCHAR",
+        "797A1496-D649-4261-89B4-544132EC3F36": "String",
+        "895CFD1D-4273-4D32-A2C4-CAC70200AB5B": "String",
+        "A2EE7B4A-CE62-4290-B00C-B26C1BF18073": "String",
+        "F3AC2415-E86B-40C6-9FEB-F4B7937D2C30": "string",
+        "B91D99E0-9B7C-416C-8737-B760957DAF09": "string",
+        "BDF457FD-9F98-4AC3-A705-7587B00A3BAB": "String"
+      },
+      {
+        "defKey": "long",
+        "id": "87021CD5-DD8A-45AD-A867-A55DFE7993F5",
+        "defName": "闀挎暣鍨�",
+        "29D1CE08-4C35-4D2D-AAA9-23D93305B52E": "INT",
+        "A4E23CB7-BB01-4BD1-9F71-F73F3E15A542": "INT",
+        "BFC87171-C74F-494A-B7C2-76B9C55FACC9": "bigint",
+        "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",
+        "81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2": "int",
+        "56F4B55B-F0B8-4049-9E6B-50B95C1D793A": "INTEGER",
+        "483F9346-C99E-4014-A1D2-A554606BD8A3": "INT",
+        "ABF5836C-0B7C-4007-A41C-F869325E5842": "INTEGER",
+        "797A1496-D649-4261-89B4-544132EC3F36": "Integer",
+        "895CFD1D-4273-4D32-A2C4-CAC70200AB5B": "Integer",
+        "A2EE7B4A-CE62-4290-B00C-B26C1BF18073": "Integer",
+        "F3AC2415-E86B-40C6-9FEB-F4B7937D2C30": "long",
+        "B91D99E0-9B7C-416C-8737-B760957DAF09": "*int",
+        "BDF457FD-9F98-4AC3-A705-7587B00A3BAB": "i32"
+      },
+      {
+        "defKey": "date1",
+        "id": "63EB55D7-63DF-4EC4-94C6-71CA5CA55DB3",
+        "defName": "鏃ユ湡datetimeoffset",
+        "29D1CE08-4C35-4D2D-AAA9-23D93305B52E": "DATETIME",
+        "A4E23CB7-BB01-4BD1-9F71-F73F3E15A542": "DATE",
+        "BFC87171-C74F-494A-B7C2-76B9C55FACC9": "datetimeoffset",
+        "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",
+        "81CCA482-3F4D-4EAC-8CF9-F5E7BC098AD2": "timestamp",
+        "56F4B55B-F0B8-4049-9E6B-50B95C1D793A": "DATE",
+        "483F9346-C99E-4014-A1D2-A554606BD8A3": "DATETIME",
+        "ABF5836C-0B7C-4007-A41C-F869325E5842": "DATE",
+        "797A1496-D649-4261-89B4-544132EC3F36": "Date",
+        "895CFD1D-4273-4D32-A2C4-CAC70200AB5B": "Date",
+        "A2EE7B4A-CE62-4290-B00C-B26C1BF18073": "Date",
+        "F3AC2415-E86B-40C6-9FEB-F4B7937D2C30": "DateTimeOffset",
+        "B91D99E0-9B7C-416C-8737-B760957DAF09": "*time.Time",
+        "BDF457FD-9F98-4AC3-A705-7587B00A3BAB": "DateTime<Local>"
+      },
+      {
+        "defKey": "bit",
+        "id": "7ECAE23D-9FDB-4015-93BC-459D56A1ACA1",
+        "defName": "鏄惁",
+        "BFC87171-C74F-494A-B7C2-76B9C55FACC9": "bit",
+        "F3AC2415-E86B-40C6-9FEB-F4B7937D2C30": "bool"
+      }
+    ]
+  },
+  "domains": [
+    {
+      "defKey": "DefaultString",
+      "defName": "瀛椾覆varchar255",
+      "applyFor": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
+      "len": 255,
+      "scale": "",
+      "uiHint": "",
+      "id": "9092C4E0-1A54-4859-ABBB-5B62DBC27573"
+    },
+    {
+      "defKey": "IdOrKey",
+      "defName": "涓婚敭鏍囪瘑bigint",
+      "applyFor": "87021CD5-DD8A-45AD-A867-A55DFE7993F5",
+      "len": "",
+      "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": "灏忔暟(10,3)",
+      "applyFor": "1A0BDC09-0792-4174-9E8E-80BE8DF44B8E",
+      "len": 10,
+      "scale": 3,
+      "uiHint": "",
+      "id": "FF4459C5-6B45-4DBF-8FC0-E06239BC05B4"
+    },
+    {
+      "defKey": "Money",
+      "defName": "閲戦(24,6)",
+      "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": "7ECAE23D-9FDB-4015-93BC-459D56A1ACA1",
+      "len": "",
+      "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"
+    },
+    {
+      "defKey": "GUID",
+      "defName": "GUID1",
+      "applyFor": "9B851CFC-E0A4-4AA4-9F52-7418F700B46F",
+      "len": "",
+      "scale": "",
+      "uiHint": "",
+      "id": "C20CD488-CCCD-47D7-A008-0617F12B75C8"
+    },
+    {
+      "defKey": "DefaultString2",
+      "defName": "瀛椾覆nvarchar50",
+      "applyFor": "F8A4AFB0-F3B7-4E32-A5F2-D4D8D3F4BACD",
+      "len": 50,
+      "scale": "",
+      "uiHint": "",
+      "id": "94107640-E002-4AB3-A2DC-B66F98D9645F"
+    },
+    {
+      "defKey": "DefaultString1",
+      "defName": "瀛椾覆nvarchar255",
+      "applyFor": "F8A4AFB0-F3B7-4E32-A5F2-D4D8D3F4BACD",
+      "len": 255,
+      "scale": "",
+      "uiHint": "",
+      "id": "B19256E6-87E6-4A43-AD65-67095F06819F"
+    },
+    {
+      "defKey": "Int1",
+      "defName": "闀挎暣鍨�",
+      "applyFor": "87021CD5-DD8A-45AD-A867-A55DFE7993F5",
+      "len": "",
+      "scale": "",
+      "uiHint": "",
+      "id": "717941D9-8B3F-435A-9F8E-8D13B7404D5B"
+    },
+    {
+      "defKey": "DateTime1",
+      "defName": "鏃ユ湡鏃堕棿datetimeoffset",
+      "applyFor": "63EB55D7-63DF-4EC4-94C6-71CA5CA55DB3",
+      "len": "",
+      "scale": "",
+      "uiHint": "",
+      "id": "E9456E44-8231-4BC0-B2CD-5FF4AEC6DE97"
+    }
+  ],
+  "diagrams": [
+    {
+      "defKey": "KeyEntities",
+      "defName": "鍏抽敭涓氬姟瀵硅薄",
+      "relationType": "field",
+      "canvasData": {
+        "cells": [
+          {
+            "id": "9a550b94-ea7b-472e-9857-909b3b2707e9",
+            "shape": "table",
+            "position": {
+              "x": 415,
+              "y": 498
+            },
+            "count": 0,
+            "originKey": "E7519C94-4E15-413A-99E1-25175F4BE636"
+          },
+          {
+            "id": "682455f9-79d0-4c89-8e87-750f8c7864c7",
+            "shape": "table",
+            "position": {
+              "x": -180,
+              "y": 529
+            },
+            "count": 0,
+            "originKey": "E612F83C-1EF2-4200-A14B-5549A7121EEB"
+          },
+          {
+            "id": "4064501c-a65e-4acb-85f2-9503c75c78bf",
+            "shape": "table",
+            "position": {
+              "x": 1011,
+              "y": 110
+            },
+            "count": 0,
+            "originKey": "97A0D266-34A8-4B0F-AC52-8EC1BCBA3B15"
+          },
+          {
+            "id": "1f1a9da9-1d77-409c-bcf4-57dff1f14106",
+            "shape": "table",
+            "position": {
+              "x": 330,
+              "y": -1680
+            },
+            "count": 0,
+            "originKey": "B8BAB3F0-A775-44D6-AF48-4C57E150902D"
+          },
+          {
+            "id": "2e5bac59-b720-44f9-85bb-03e07812ff3d",
+            "shape": "table",
+            "position": {
+              "x": -310,
+              "y": -1680
+            },
+            "count": 0,
+            "originKey": "362A4C92-24C7-4067-B255-DFBA73C5137A"
+          },
+          {
+            "id": "2847cec7-d70a-4aaf-a873-f402b020ee15",
+            "shape": "table",
+            "position": {
+              "x": 451,
+              "y": -570
+            },
+            "count": 0,
+            "originKey": "65912DD7-EEC0-4D7C-89C1-134F4C4F97B6"
+          },
+          {
+            "id": "bf42d0a5-7615-4cdf-b5d3-ea33d16f198e",
+            "shape": "table",
+            "position": {
+              "x": 1030,
+              "y": -570
+            },
+            "count": 0,
+            "originKey": "467A479E-05D8-46F5-80F6-910B5A9F1C81"
+          },
+          {
+            "id": "60a0a8d5-9dac-4994-84bc-3211f6ce6d1c",
+            "shape": "table",
+            "position": {
+              "x": -348,
+              "y": -570
+            },
+            "count": 0,
+            "originKey": "5207D4C1-67D0-4303-AE2E-414C9B2900F2"
+          }
+        ]
+      },
+      "id": "374E8F78-0D0D-444F-8F4B-5E5F29E73CA9"
+    }
+  ],
+  "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        },
+        {
+          "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"
+        }
+      ],
+      "id": "F30202B9-4B5D-4CE7-87CE-B3890C84D3F2"
+    },
+    {
+      "defKey": "WorkPiece",
+      "defName": "",
+      "fields": [
+        {
+          "defKey": "WorkPieceID",
+          "defName": "宸ヤ欢鍙�",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "8182DB70-AF34-40E1-A08D-3186A8CCD706",
+          "uiHint": "642D2E0A-8846-4549-BE56-8C0473F26EDE"
+        },
+        {
+          "defKey": "WorkPieceType",
+          "defName": "宸ヤ欢绫诲瀷",
+          "comment": "",
+          "type": "",
+          "len": "",
+          "scale": "",
+          "primaryKey": false,
+          "notNull": false,
+          "autoIncrement": false,
+          "defaultValue": "",
+          "hideInGraph": false,
+          "refDict": "",
+          "extProps": {},
+          "domain": "16120F75-6AA7-4483-868D-F07F511BB081",
+          "id": "2824FCB7-AEE5-44CA-AA29-320F131534DA"
+        }
+      ],
+      "id": "8789F89F-D628-473B-87B0-528066EDB730"
+    }
+  ],
+  "dbConn": [
+    {
+      "defKey": "D4843C6A-F7EC-480D-A8DB-4F6655F65F92",
+      "defName": "local-sqlserver",
+      "type": "BFC87171-C74F-494A-B7C2-76B9C55FACC9",
+      "properties": {
+        "driver_class_name": "com.microsoft.sqlserver.jdbc.SQLServerDriver",
+        "url": "jdbc:sqlserver://IP鍦板潃:绔彛鍙�;DatabaseName=鏁版嵁搴撳悕",
+        "password": "",
+        "username": ""
+      }
+    }
+  ]
+}
\ No newline at end of file
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/EquipmentBaseInfo/EquipmentBaseInfoService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/EquipmentBaseInfo/EquipmentBaseInfoService.cs
index 33759b1..4eb2e0c 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/EquipmentBaseInfo/EquipmentBaseInfoService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/EquipmentBaseInfo/EquipmentBaseInfoService.cs
@@ -22,8 +22,9 @@
     [Route("api/[Controller]")]
     public class EquipmentBaseInfoService : IEquipmentBaseInfoService, IDynamicApiController, ITransient
     {
-        private readonly IRepository<EquipmentBaseInfo,MasterDbContextLocator> _equipmentBaseInfoRep;
-		private readonly IRepository<V_GetEquipmentAlert, MasterDbContextLocator> _v_GetEquipmentAlertRep;
+        private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
+        private readonly IRepository<Equipmentbaseinfolog, MasterDbContextLocator> _equipmentbaseinfologRep;
+        private readonly IRepository<V_GetEquipmentAlert, MasterDbContextLocator> _v_GetEquipmentAlertRep;
         private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
         private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
         private readonly IRepository<EquipmentCurrentMonitor, MasterDbContextLocator> _equipmentCurrentMonitorRep;
@@ -37,13 +38,15 @@
         /// <param name="sysDictDataRep"></param>
         /// <param name="equipmentCurrentMonitorRep"></param>
         public EquipmentBaseInfoService(
-            IRepository<EquipmentBaseInfo,MasterDbContextLocator> equipmentBaseInfoRep,
-			IRepository<V_GetEquipmentAlert, MasterDbContextLocator> v_GetEquipmentAlert,
+            IRepository<Equipmentbaseinfolog, MasterDbContextLocator> equipmentbaseinfologRep,
+            IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
+            IRepository<V_GetEquipmentAlert, MasterDbContextLocator> v_GetEquipmentAlert,
             IRepository<SysDictType, MasterDbContextLocator> sysDictTypeRep,
             IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep,
             IRepository<EquipmentCurrentMonitor, MasterDbContextLocator> equipmentCurrentMonitorRep
         )
         {
+            _equipmentbaseinfologRep = equipmentbaseinfologRep;
             _equipmentBaseInfoRep = equipmentBaseInfoRep;
             _v_GetEquipmentAlertRep = v_GetEquipmentAlert;
             _sysDictTypeRep = sysDictTypeRep;
@@ -65,10 +68,10 @@
                                      .Where(!string.IsNullOrEmpty(input.EquipmentId), u => u.EquipmentId == input.EquipmentId)
                                      .Where(!string.IsNullOrEmpty(input.EquipmentName), u => EF.Functions.Like(u.EquipmentName, $"%{input.EquipmentName.Trim()}%"))
                                      .Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => u.WorkingProcedure.Equals(input.WorkingProcedure))
-                                     .Where(!string.IsNullOrEmpty(input.AlertType),u=> (input.AlertType.Equals("1")&& u.IsAlertDetergent) 
-                                     ||(input.AlertType.Equals("2") && u.IsAlertKnifeTool) 
-                                     ||(input.AlertType.Equals("3") && u.IsAlertCuttingFluid) 
-                                     ||(input.AlertType.Equals("4") && u.IsAlert))
+                                     .Where(!string.IsNullOrEmpty(input.AlertType), u => (input.AlertType.Equals("1") && u.IsAlertDetergent)
+                                     || (input.AlertType.Equals("2") && u.IsAlertKnifeTool)
+                                     || (input.AlertType.Equals("3") && u.IsAlertCuttingFluid)
+                                     || (input.AlertType.Equals("4") && u.IsAlert))
                                      .OrderBy(PageInputOrder.OrderBuilder<EquipmentAlertSearch>(input))
                                      .ProjectToType<EquipmentAlertInfoOutput>().ToListAsync();
             return equipmentAlertInfos;
@@ -106,7 +109,7 @@
                                          CuttingFluidChangeTime = s.CuttingFluidChangeTime,
                                          Remarks = s.Remarks,
                                          CreatedTime = s.CreatedTime,
-                                         TactTime=s.TactTime,
+                                         TactTime = s.TactTime,
                                      })
                                      .Distinct()
                                      .OrderBy(PageInputOrder.OrderBuilder<EquipmentBaseInfoSearch>(input))
@@ -114,7 +117,7 @@
                                      .ToADPagedListAsync(input.PageNo, input.PageSize);
             return equipmentBaseInfos;
 
-    }
+        }
 
         /// <summary>
         /// 鏍规嵁璁惧鍩虹淇℃伅绠$悊瀵煎嚭Excel
@@ -129,7 +132,7 @@
                                      .Where(!string.IsNullOrEmpty(input.EquipmentName), u => u.EquipmentName == input.EquipmentName)
                                      .Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => EF.Functions.Like(u.WorkingProcedure, $"%{input.WorkingProcedure.Trim()}%"))
                                      .Where(!string.IsNullOrEmpty(input.EquipmentModel), u => EF.Functions.Like(u.EquipmentModel, $"%{input.EquipmentModel.Trim()}%"))
-                                     .Select(s=>new EquipmentBaseInfoExcelOutput
+                                     .Select(s => new EquipmentBaseInfoExcelOutput
                                      {
                                          Id = s.Id,
                                          EquipmentId = s.EquipmentId,
@@ -146,7 +149,7 @@
                                          CuttingFluidChangeTime = s.CuttingFluidChangeTime,
                                          CuttingFluidChangeAlertThreshold = s.CuttingFluidChangeAlertThreshold,
                                          CreatedTime = s.CreatedTime.ConvertToDateTime(),
-                                         UpdatedTime= s.UpdatedTime.ConvertToDateTime(),
+                                         UpdatedTime = s.UpdatedTime.ConvertToDateTime(),
                                          TactTime = s.TactTime,
                                      })
                                      .Distinct()
@@ -174,13 +177,26 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpPost("add")]
+        [UnitOfWork]
         public async Task Add(AddEquipmentBaseInfoInput input)
         {
             var isExist = await _equipmentBaseInfoRep.AnyAsync(u => u.EquipmentId == input.EquipmentId, false);
             if (isExist) throw Oops.Oh($"褰撳墠璁惧缂栧彿宸插瓨鍦紝鏂板澶辫触锛�");
 
             var equipmentBaseInfo = input.Adapt<EquipmentBaseInfo>();
+            equipmentBaseInfo.Id = Yitter.IdGenerator.YitIdHelper.NextId();
             await _equipmentBaseInfoRep.InsertAsync(equipmentBaseInfo);
+
+            //鏂板缁存姢鏃ュ織
+            var log = new Equipmentbaseinfolog()
+            {
+                EquipmentBaseInfoId = equipmentBaseInfo.Id,
+                EquipmentID = equipmentBaseInfo.EquipmentId,
+                OperatorType = EquipmentbaseinfoOperatorTypeEnum.鏂板璁惧,
+                OperatorTypeName = (EquipmentbaseinfoOperatorTypeEnum.鏂板璁惧).ToString(),
+                OperatorContent = "鏂板璁惧:" + equipmentBaseInfo.EquipmentName,
+            };
+            await _equipmentbaseinfologRep.InsertAsync(log);
         }
 
         /// <summary>
@@ -191,11 +207,11 @@
         [HttpPost("delete")]
         public async Task Delete(DeleteEquipmentBaseInfoInput input)
         {
-            string[] EquiArr = new string[] {"EOP10", "EOP20", "EOP30", "EOP35", "EOP40", "EOP50", "EOP60", "EOP70", "EOP80" };
-            
+            string[] EquiArr = new string[] { "EOP10", "EOP20", "EOP30", "EOP35", "EOP40", "EOP50", "EOP60", "EOP70", "EOP80" };
+
             var equipmentBaseInfo = await _equipmentBaseInfoRep.FirstOrDefaultAsync(u => u.Id == input.Id);
 
-            if(EquiArr.Contains(equipmentBaseInfo.EquipmentId)) throw Oops.Oh($"绯荤粺榛樿鐨勮澶囦笉鑳借繘琛屽垹闄わ紒");
+            if (EquiArr.Contains(equipmentBaseInfo.EquipmentId)) throw Oops.Oh($"绯荤粺榛樿鐨勮澶囦笉鑳借繘琛屽垹闄わ紒");
 
             await _equipmentBaseInfoRep.DeleteAsync(equipmentBaseInfo);
         }
@@ -206,13 +222,14 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpPost("selectDelete")]
-        public async Task SelectDelete(List<EquipmentBaseInfoInput>  input)
+        public async Task SelectDelete(List<EquipmentBaseInfoInput> input)
         {
             StringBuilder builder = new StringBuilder();
             string[] EquiArr = new string[] { "EOP10", "EOP20", "EOP30", "EOP35", "EOP40", "EOP50", "EOP60", "EOP70", "EOP80" };
             foreach (EquipmentBaseInfoInput item in input)
             {
-                if (EquiArr.Contains(item.EquipmentId)) {
+                if (EquiArr.Contains(item.EquipmentId))
+                {
 
                     if (string.IsNullOrEmpty(builder.ToString()))
                     {
@@ -227,7 +244,7 @@
 
             if (!string.IsNullOrEmpty(builder.ToString()))
             {
-                throw Oops.Oh($"绯荤粺榛樿鐨勮澶囥��"+builder.ToString()+"銆戜笉鑳借繘琛屽垹闄わ紒");
+                throw Oops.Oh($"绯荤粺榛樿鐨勮澶囥��" + builder.ToString() + "銆戜笉鑳借繘琛屽垹闄わ紒");
             }
 
             foreach (var item in input)
@@ -243,13 +260,42 @@
         /// <param name="input"></param>
         /// <returns></returns>
         [HttpPost("edit")]
+        [UnitOfWork]
         public async Task Update(UpdateEquipmentBaseInfoInput input)
         {
-            var isExist = await _equipmentBaseInfoRep.AnyAsync(u => u.Id == input.Id && u.EquipmentId == input.EquipmentId, false);
-            if (!isExist) throw Oops.Oh($"璁惧缂栧彿涓嶈兘杩涜鍙樻洿锛屼慨鏀瑰け璐ワ紒");
+            var isExistObj = await _equipmentBaseInfoRep.Where(u => u.Id == input.Id && u.EquipmentId == input.EquipmentId, false).FirstOrDefaultAsync();
+            if (isExistObj == null) throw Oops.Oh($"璁惧缂栧彿涓嶈兘杩涜鍙樻洿锛屼慨鏀瑰け璐ワ紒");
 
             var equipmentBaseInfo = input.Adapt<EquipmentBaseInfo>();
-            await _equipmentBaseInfoRep.UpdateAsync(equipmentBaseInfo,ignoreNullValues:false);
+            await _equipmentBaseInfoRep.UpdateAsync(equipmentBaseInfo, ignoreNullValues: false);
+
+            if (isExistObj.CuttingFluidChangeTime?.ToString("yyyy-MM-dd") != equipmentBaseInfo.CuttingFluidChangeTime?.ToString("yyyy-MM-dd"))
+            {
+                //鏂板缁存姢鏃ュ織
+                var log = new Equipmentbaseinfolog()
+                {
+                    EquipmentBaseInfoId = equipmentBaseInfo.Id,
+                    EquipmentID = equipmentBaseInfo.EquipmentId,
+                    OperatorType = EquipmentbaseinfoOperatorTypeEnum.鍒囧墛娑叉洿鎹�,
+                    OperatorTypeName = (EquipmentbaseinfoOperatorTypeEnum.鍒囧墛娑叉洿鎹�).ToString(),
+                    OperatorContent = "鏇存崲鏃堕棿:" + equipmentBaseInfo.CuttingFluidChangeTime?.ToString("yyyy-MM-dd"),
+                };
+                await _equipmentbaseinfologRep.InsertAsync(log);
+            }
+            if (isExistObj.Detergentchangetime?.ToString("yyyy-MM-dd") != equipmentBaseInfo.Detergentchangetime?.ToString("yyyy-MM-dd"))
+            {
+                //鏂板缁存姢鏃ュ織
+                var log = new Equipmentbaseinfolog()
+                {
+                    EquipmentBaseInfoId = equipmentBaseInfo.Id,
+                    EquipmentID = equipmentBaseInfo.EquipmentId,
+                    OperatorType = EquipmentbaseinfoOperatorTypeEnum.娓呮礂娑叉洿鎹�,
+                    OperatorTypeName = (EquipmentbaseinfoOperatorTypeEnum.娓呮礂娑叉洿鎹�).ToString(),
+                    OperatorContent = "鏇存崲鏃堕棿:" + equipmentBaseInfo.Detergentchangetime?.ToString("yyyy-MM-dd"),
+                };
+                await _equipmentbaseinfologRep.InsertAsync(log);
+            }
+
         }
 
         /// <summary>
@@ -296,9 +342,9 @@
             KnifeToolnames.Add("EOP50");
             KnifeToolnames.Add("EOP60");
             var equipmentBaseInfos = await _equipmentBaseInfoRep.DetachedEntities
-                    .Where(!string.IsNullOrEmpty(Type), u => (Type.ToUpper().Equals("QUALITY")?names.Contains(u.EquipmentId):false)||(Type.ToUpper().Equals("KNIFETOOL") ? KnifeToolnames.Contains(u.EquipmentId) : false))
+                    .Where(!string.IsNullOrEmpty(Type), u => (Type.ToUpper().Equals("QUALITY") ? names.Contains(u.EquipmentId) : false) || (Type.ToUpper().Equals("KNIFETOOL") ? KnifeToolnames.Contains(u.EquipmentId) : false))
                                      .ProjectToType<EquipmentBaseInfoOutput>()
-                                     .OrderBy(o=>o.EquipmentId)
+                                     .OrderBy(o => o.EquipmentId)
                                      .ToListAsync();
             return equipmentBaseInfos;
         }
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryYieldOutput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryYieldOutput.cs
new file mode 100644
index 0000000..17ceaf5
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryYieldOutput.cs
@@ -0,0 +1,291 @@
+锘縰sing Furion.TaskScheduler;
+using iWare.Wms.Core.Enum;
+using iWare.Wms.Core.Util.LowCode.Dto;
+using System;
+using System.ComponentModel;
+
+namespace iWare.Wms.Application
+{
+
+    /// <summary>
+    /// 浜ч噺鏌ヨ杈撳嚭鍙傛暟
+    /// </summary>
+    public class QueryYieldOutput
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        public string WorkPieceID { get; set; }
+
+        /// <summary>
+        /// 鎴愬搧鐮�
+        /// </summary>
+        public virtual string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 褰撳墠宸ュ簭
+        /// </summary>
+        public string WorkingProcedureCurrent { get; set; }
+
+        /// <summary>
+        /// 褰撳墠璁惧
+        /// </summary>
+        public string EquipmentID { get; set; }
+
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public string EquipmentName { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿
+        /// </summary>
+        public DateTime? StartTime { get; set; }
+
+        private DateTime? m_EndTime = null;
+
+        /// <summary>
+        /// 宸ュ簭涓嬬嚎鏃堕棿
+        /// </summary>
+        public DateTime? EndTime
+        {
+            get
+            {
+
+                if (m_EndTime == null)
+                {
+                    return null;
+                }
+
+                if (m_EndTime == Convert.ToDateTime("0001-01-01"))
+                {
+                    return null;
+                }
+                else
+                {
+                    return m_EndTime;
+                }
+            }
+            set { m_EndTime = value; }
+        }
+
+        /// <summary>
+        /// 鍔犲伐鏃堕暱
+        /// </summary>
+        public string TimeSceonds
+        {
+            get
+            {
+                if (EndTime == null || StartTime == null || EndTime == Convert.ToDateTime("0001-01-01") || StartTime == Convert.ToDateTime("0001-01-01"))
+                {
+                    return "";
+                }
+
+                TimeSpan ts = Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime);
+
+                return Convert.ToInt32(ts.TotalMinutes).ToString() + "min";
+            }
+        }
+
+        /// <summary>
+        /// 璐ㄩ噺鐘舵��
+        /// </summary>
+        public int QualityState { get; set; }
+
+        /// <summary>
+        /// 璐ㄩ噺鐘舵�佸悕瀛�
+        /// </summary>
+        public string QualityStateName
+        {
+            get
+            {
+                if (1 == QualityState)
+                {
+                    return "鍚堟牸";
+
+                }
+                else if (2 == QualityState)
+                {
+
+                    return "涓嶅悎鏍�";
+                }
+                else if (3 == QualityState)
+                {
+
+                    return "鐤戜技";
+                }
+                else
+                {
+                    return "";
+                }
+            }
+        }
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷锛圫PC/鐢熶骇锛�
+        /// </summary>
+        public string OperationType { get; set; }
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        public string OperationTypeHand
+        {
+            get
+            {
+                string str = "";
+                if (string.IsNullOrEmpty(OperationType))
+                {
+                    str = "鍏朵粬";
+                }
+                else
+                {
+                    str = OperationType;
+                }
+                return str;
+            }
+        }
+        /// <summary>
+        /// 璐ㄩ噺淇℃伅id
+        /// </summary>
+        public long QualityDataInfoID { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        public string CreateUserName { get; set; }
+
+    }
+
+    /// <summary>
+    /// 浜ч噺鏌ヨ瀵煎嚭杈撳嚭鍙傛暟
+    /// </summary>
+    [Description("浜ч噺鏌ヨ")]
+    public class ExportYieldOutput
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        [Description("宸ヤ欢鍙�")]
+        public string WorkPieceID { get; set; }
+
+        /// <summary>
+        /// 褰撳墠宸ュ簭
+        /// </summary>
+        [Description("褰撳墠宸ュ簭")]
+        public string WorkingProcedureCurrent { get; set; }
+
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        [Description("璁惧鍚嶇О")]
+        public string EquipmentName { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿
+        /// </summary>
+        [Description("涓婄嚎鏃堕棿")]
+        public string StartTime { get; set; }
+
+        private string m_EndTime = "";
+        /// <summary>
+        /// 宸ュ簭涓嬬嚎鏃堕棿
+        /// </summary>
+        [Description("涓嬬嚎鏃堕棿")]
+        public string EndTime
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(m_EndTime))
+                {
+                    return "";
+                }
+
+                if (m_EndTime.Contains("0001-01-01"))
+                {
+                    return "";
+                }
+                else
+                {
+                    return m_EndTime;
+                }
+            }
+            set { m_EndTime = value; }
+        }
+
+        /// <summary>
+        /// 鍔犲伐鏃堕暱
+        /// </summary>
+        [Description("鍔犲伐鏃堕暱")]
+        public string TimeSceonds
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(EndTime) || string.IsNullOrEmpty(StartTime))
+                {
+                    return "";
+                }
+
+                TimeSpan ts = Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime);
+
+                return Convert.ToInt32(ts.TotalMinutes).ToString() + "min";
+            }
+        }
+
+        /// <summary>
+        /// 璐ㄩ噺鐘舵��
+        /// </summary>
+        public int QualityState { get; set; }
+        /// <summary>
+        /// 璐ㄩ噺鐘舵�佸悕绉�
+        /// </summary>
+        [Description("璐ㄩ噺鐘舵��")]
+        public string QualityStateName
+        {
+            get
+            {
+                if (1 == QualityState)
+                {
+                    return "鍚堟牸";
+
+                }
+                else if (2 == QualityState)
+                {
+
+                    return "涓嶅悎鏍�";
+                }
+                else if (3 == QualityState)
+                {
+
+                    return "鐤戜技";
+                }
+                else
+                {
+                    return "";
+                }
+            }
+        }
+        /// <summary>
+        /// 鎴愬搧鐮�
+        /// </summary>
+        [Description("鎴愬搧鐮�")]
+        public string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// Id涓婚敭
+        /// </summary>
+        public long Id { get; set; }
+        /// <summary>
+        /// 鍒涘缓浜�
+        /// </summary>
+        [Description("鏁版嵁鏉ユ簮")]
+        public string CreateUserName { get; set; }
+
+    }
+
+    
+}
+
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
index 035d7d3..ca9e64d 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
@@ -250,6 +250,116 @@
             return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
         }
 
+
+        #region 浜ч噺鏌ヨ [Editby shaocx,2024-06-08]
+
+        /// <summary>
+        /// 浜ч噺鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("queryYield")]
+        public async Task<PageResult<QueryYieldOutput>> QueryYield([FromQuery] WorkPieceProcessSearch input)
+        {
+          
+            var workPieceProcesss = await (from process in _workPieceProcessRep.DetachedEntities
+                                           join baseinfo in _equipmentBaseInfoRep.DetachedEntities on process.EquipmentID equals baseinfo.EquipmentId into joinedEmpty
+                                           from baseinfo2 in joinedEmpty.DefaultIfEmpty()
+                                           join workPiece in _workPieceInfoRep.DetachedEntities on process.WorkPieceID equals workPiece.WorkPieceID into joined2Empty
+                                           from workPiece2 in joined2Empty.DefaultIfEmpty()
+                                           where process.IsDeleted == false && process.WorkPieceID.Contains(string.IsNullOrEmpty(input.WorkPieceID) ? "" : input.WorkPieceID)
+                     && process.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : process.QualityState)
+                     && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+                     && process.WorkingProcedureCurrent == (string.IsNullOrEmpty(input.WorkingProcedureCurrent) ? process.WorkingProcedureCurrent : input.WorkingProcedureCurrent)
+                     && workPiece2.OP80NewCode == (string.IsNullOrEmpty(input.OP80NewCode) ? workPiece2.OP80NewCode : input.OP80NewCode)
+                     && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+                     && process.OperationType == (string.IsNullOrEmpty(input.OperationType) ? process.OperationType : input.OperationType)
+                     && !string.IsNullOrEmpty(process.WorkPieceID)
+                     && process.StartTime >= (input.StartTimeBeginTime.HasValue ? input.StartTimeBeginTime : DateTime.MinValue)
+                     && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
+                                           select new WorkPieceProcessOutput
+                                           {
+
+                                               Id = process.Id,
+                                               WorkPieceID = process.WorkPieceID,
+                                               EquipmentID = process.EquipmentID,
+                                               EquipmentName = (baseinfo2 == null ? "" : baseinfo2.EquipmentName),
+                                               OP80NewCode = workPiece2.OP80NewCode,
+
+                                               WorkingProcedureCurrent = process.WorkingProcedureCurrent,
+                                               StartTime = process.StartTime,
+                                               EndTime = process.EndTime,
+                                               QualityState = process.QualityState,
+                                               QualityDataInfoID = process.QualityDataInfoID,
+                                               OperationType = process.OperationType,
+                                               CreateUserName = process.CreatedUserName
+                                           }).OrderBy(o => o.StartTime)
+             .ProjectToType<QueryYieldOutput>()
+              .ToADPagedListAsync(input.PageNo, input.PageSize);
+
+            return workPieceProcesss;
+        }
+
+        /// <summary>
+        /// 瀵煎嚭浜ч噺鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("exportYield")]
+        public async Task<IActionResult> ExportYield([FromQuery] WorkPieceProcessSearch input)
+        {
+            var workPieceMachiningInfos = await (from process in _workPieceProcessRep.DetachedEntities
+                                                 join baseinfo in _equipmentBaseInfoRep.DetachedEntities
+                                               on process.EquipmentID equals baseinfo.EquipmentId into joinedEmpty
+                                                 from baseinfo2 in joinedEmpty.DefaultIfEmpty()
+                                                 join workPiece in _workPieceInfoRep.DetachedEntities on process.WorkPieceID equals workPiece.WorkPieceID into joined2Empty
+                                                 from workPiece2 in joined2Empty.DefaultIfEmpty()
+                                                 where process.IsDeleted == false && process.WorkPieceID.Contains(string.IsNullOrEmpty(input.WorkPieceID) ? "" : input.WorkPieceID)
+                    && process.QualityState == (input.QualityState.HasValue ? input.QualityState.Value : process.QualityState)
+                                                 && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+                                                 && process.WorkingProcedureCurrent == (string.IsNullOrEmpty(input.WorkingProcedureCurrent) ? process.WorkingProcedureCurrent : input.WorkingProcedureCurrent)
+                                                 && process.EquipmentID == (string.IsNullOrEmpty(input.EquipmentID) ? process.EquipmentID : input.EquipmentID)
+                                                 && workPiece2.OP80NewCode == (string.IsNullOrEmpty(input.OP80NewCode) ? workPiece2.OP80NewCode : input.OP80NewCode)
+                    && process.OperationType == (string.IsNullOrEmpty(input.OperationType) ? process.OperationType : input.OperationType)
+                                                && !string.IsNullOrEmpty(process.WorkPieceID)
+                    && process.StartTime >= (input.StartTimeBeginTime.HasValue ? input.StartTimeBeginTime : DateTime.MinValue)
+                    && process.StartTime <= (input.StartTimeEndTime.HasValue ? input.StartTimeEndTime : DateTime.MaxValue)
+                                                 select new WorkPieceProcessExcelOutput
+                                                 {
+                                                     OP80NewCode = workPiece2.OP80NewCode,
+
+                                                     Id = process.Id,
+                                                     WorkPieceID = process.WorkPieceID,
+                                                     //EquipmentID = process.EquipmentID,
+                                                     EquipmentName = (baseinfo2 == null ? "" : baseinfo2.EquipmentName),
+                                                     WorkingProcedureCurrent = process.WorkingProcedureCurrent,
+                                                     StartTime = process.StartTime.ToString(),
+                                                     EndTime = process.EndTime.ToString(),
+                                                     //QualityState = process.QualityState,
+                                                     CreateUserName = process.CreatedUserName
+                                                 }).OrderBy(o => o.StartTime).Distinct()
+            .ProjectToType<WorkPieceProcessExcelOutput>()
+             .ToListAsync();
+
+
+            foreach (WorkPieceProcessExcelOutput item in workPieceMachiningInfos)
+            {
+                item.StartTime = string.IsNullOrEmpty(item.StartTime) ? "" : Convert.ToDateTime(item.StartTime).ToString("yyyy-MM-dd hh:mm:ss");
+                item.EndTime = string.IsNullOrEmpty(item.EndTime) ? "" : Convert.ToDateTime(item.EndTime).ToString("yyyy-MM-dd hh:mm:ss");
+            }
+
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(workPieceMachiningInfos, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+
+            ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        #endregion
+
         /// <summary>
         /// 鍒嗛〉鏌ヨ宸ヤ欢鍔犲伐(宸ヤ欢淇℃伅琛�)
         /// </summary>
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml b/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
index edcb6e7..4ffe612 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
+++ b/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
@@ -1865,7 +1865,7 @@
             璁惧鍩虹淇℃伅绠$悊鏈嶅姟
             </summary>
         </member>
-        <member name="M:iWare.Wms.Application.EquipmentBaseInfoService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentBaseInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.V_GetEquipmentAlert,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentCurrentMonitor,Furion.DatabaseAccessor.MasterDbContextLocator})">
+        <member name="M:iWare.Wms.Application.EquipmentBaseInfoService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.Equipmentbaseinfolog,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentBaseInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.V_GetEquipmentAlert,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentCurrentMonitor,Furion.DatabaseAccessor.MasterDbContextLocator})">
             <summary>
             璁惧鍩虹淇℃伅鏋勯��
             </summary>
@@ -14901,6 +14901,146 @@
             <param name="input"></param>
             <returns></returns>
         </member>
+        <member name="T:iWare.Wms.Application.QueryYieldOutput">
+            <summary>
+            浜ч噺鏌ヨ杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.OP80NewCode">
+            <summary>
+            鎴愬搧鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.WorkingProcedureCurrent">
+            <summary>
+            褰撳墠宸ュ簭
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.EquipmentID">
+            <summary>
+            褰撳墠璁惧
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.EquipmentName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.StartTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.EndTime">
+            <summary>
+            宸ュ簭涓嬬嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.TimeSceonds">
+            <summary>
+            鍔犲伐鏃堕暱
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.QualityState">
+            <summary>
+            璐ㄩ噺鐘舵��
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.QualityStateName">
+            <summary>
+            璐ㄩ噺鐘舵�佸悕瀛�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.OperationType">
+            <summary>
+            鎿嶄綔绫诲瀷锛圫PC/鐢熶骇锛�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.OperationTypeHand">
+            <summary>
+            鎿嶄綔绫诲瀷
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.QualityDataInfoID">
+            <summary>
+            璐ㄩ噺淇℃伅id
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.QueryYieldOutput.CreateUserName">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
+        <member name="T:iWare.Wms.Application.ExportYieldOutput">
+            <summary>
+            浜ч噺鏌ヨ瀵煎嚭杈撳嚭鍙傛暟
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.WorkingProcedureCurrent">
+            <summary>
+            褰撳墠宸ュ簭
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.EquipmentName">
+            <summary>
+            璁惧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.StartTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.EndTime">
+            <summary>
+            宸ュ簭涓嬬嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.TimeSceonds">
+            <summary>
+            鍔犲伐鏃堕暱
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.QualityState">
+            <summary>
+            璐ㄩ噺鐘舵��
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.QualityStateName">
+            <summary>
+            璐ㄩ噺鐘舵�佸悕绉�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.OP80NewCode">
+            <summary>
+            鎴愬搧鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.Id">
+            <summary>
+            Id涓婚敭
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYieldOutput.CreateUserName">
+            <summary>
+            鍒涘缓浜�
+            </summary>
+        </member>
         <member name="T:iWare.Wms.Application.WorkPieceProcessDto">
             <summary>
             宸ヤ欢鍔犲伐杩芥函杈撳嚭鍙傛暟
@@ -15558,6 +15698,20 @@
             <param name="input"></param>
             <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
         </member>
+        <member name="M:iWare.Wms.Application.WorkPieceProcessService.QueryYield(iWare.Wms.Application.WorkPieceProcessSearch)">
+            <summary>
+            浜ч噺鏌ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.WorkPieceProcessService.ExportYield(iWare.Wms.Application.WorkPieceProcessSearch)">
+            <summary>
+            瀵煎嚭浜ч噺鏌ヨ
+            </summary>
+            <param name="input"></param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
         <member name="M:iWare.Wms.Application.WorkPieceProcessService.WorkPieceInfoMachiningPage(iWare.Wms.Application.WorkPieceProcessSearch)">
             <summary>
             鍒嗛〉鏌ヨ宸ヤ欢鍔犲伐(宸ヤ欢淇℃伅琛�)
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/Equipmentbaseinfolog.cs b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/Equipmentbaseinfolog.cs
new file mode 100644
index 0000000..ca5a819
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Entity/SCADA/Equipmentbaseinfolog.cs
@@ -0,0 +1,80 @@
+锘縰sing Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+/*
+ * @author : 鎮ㄧ殑鍚嶅瓧
+ * @date : 2024/6/9涓嬪崍3:33:04
+ * @desc : 璁惧缁存姢璁板綍
+ */
+namespace iWare.Wms.Core
+{
+    /// <summary>
+    /// 璁惧缁存姢璁板綍
+    /// </summary>
+    [Table("equipmentbaseinfolog")]
+    [Comment("璁惧缁存姢璁板綍")]
+    public class Equipmentbaseinfolog : DEntityBase
+    {
+
+
+        /// <summary>
+        /// 璁惧ID
+        /// </summary>
+        [Comment("璁惧ID")]
+        [Required]
+
+        public long EquipmentBaseInfoId { get; set; }
+
+
+        /// <summary>
+        /// 璁惧缂栧彿
+        /// </summary>
+        [Comment("璁惧缂栧彿")]
+        [MaxLength(255)]
+        public string EquipmentID { get; set; }
+
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷ID
+        /// </summary>
+        [Comment("鎿嶄綔绫诲瀷ID")]
+        [Required]
+
+        public EquipmentbaseinfoOperatorTypeEnum OperatorType { get; set; }
+
+
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷
+        /// </summary>
+        [Comment("鎿嶄綔绫诲瀷")]
+        [Required]
+        [MaxLength(255)]
+        public string OperatorTypeName { get; set; }
+
+
+        /// <summary>
+        /// 鎿嶄綔鍐呭
+        /// </summary>
+        [Comment("鎿嶄綔鍐呭")]
+        [MaxLength(255)]
+        public string OperatorContent { get; set; }
+
+
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        [Comment("澶囨敞")]
+        [MaxLength(255)]
+        public string Remark { get; set; }
+
+
+
+
+
+
+
+
+
+    }
+}
\ No newline at end of file
diff --git a/iWara.SCADA.Code/iWare.Wms.Core/Enum/EquipmentbaseinfoOperatorTypeEnum.cs b/iWara.SCADA.Code/iWare.Wms.Core/Enum/EquipmentbaseinfoOperatorTypeEnum.cs
new file mode 100644
index 0000000..562a213
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Core/Enum/EquipmentbaseinfoOperatorTypeEnum.cs
@@ -0,0 +1,40 @@
+锘縰sing System.ComponentModel;
+
+namespace iWare.Wms.Core
+{
+    /// <summary>
+    /// 璁惧缁存姢璁板綍鎿嶄綔绫诲瀷
+    /// </summary>
+    public enum EquipmentbaseinfoOperatorTypeEnum
+    {
+        /// <summary>
+        /// 鏂板璁惧
+        /// </summary>
+        [Description("鏂板璁惧")]
+        鏂板璁惧 = 0,
+
+        /// <summary>
+        /// 娓呮礂娑叉洿鎹�
+        /// </summary>
+        [Description("娓呮礂娑叉洿鎹�")]
+        娓呮礂娑叉洿鎹� = 1,
+
+        /// <summary>
+        /// 娓呮礂娑叉坊鍔�
+        /// </summary>
+        [Description("娓呮礂娑叉坊鍔�")]
+        娓呮礂娑叉坊鍔� = 2,
+
+        /// <summary>
+        /// 鍒囧墛娑叉洿鎹�
+        /// </summary>
+        [Description("鍒囧墛娑叉洿鎹�")]
+        鍒囧墛娑叉洿鎹� = 3,
+
+        /// <summary>
+        /// 鍒囧墛娑叉坊鍔�
+        /// </summary>
+        [Description("鍒囧墛娑叉坊鍔�")]
+        鍒囧墛娑叉坊鍔� = 4
+    }
+}
\ No newline at end of file
diff --git a/iwara-scada-web/public/index.html b/iwara-scada-web/public/index.html
index 9aa8cf7..08cadff 100644
--- a/iwara-scada-web/public/index.html
+++ b/iwara-scada-web/public/index.html
@@ -24,7 +24,7 @@
     <div class="loading-wrp">
       <span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
     </div>
-    <div style="display: flex; justify-content: center; align-items: center;">iWare.Wms</div>
+    <div style="display: flex; justify-content: center; align-items: center;">濂ユ櫘鑷姩鍖�</div>
   </div>
 </div>
 <!-- require cdn assets js -->
diff --git a/iwara-scada-web/src/utils/domUtil.js b/iwara-scada-web/src/utils/domUtil.js
index fc6c0ee..6e39236 100644
--- a/iwara-scada-web/src/utils/domUtil.js
+++ b/iwara-scada-web/src/utils/domUtil.js
@@ -16,4 +16,4 @@
   }
 }
 
-export const domTitle = 'iWare.Wms'
+export const domTitle = '濂ユ櫘鑷姩鍖�'
diff --git a/iwara-scada-web/src/views/main/EquipmentBaseInfo/editForm.vue b/iwara-scada-web/src/views/main/EquipmentBaseInfo/editForm.vue
index e42cb48..1a91468 100644
--- a/iwara-scada-web/src/views/main/EquipmentBaseInfo/editForm.vue
+++ b/iwara-scada-web/src/views/main/EquipmentBaseInfo/editForm.vue
@@ -120,6 +120,7 @@
 <script>
 import moment from 'moment'
 import { EquipmentBaseInfoEdit } from '@/api/modular/main/EquipmentBaseInfoManage'
+import { dateFormat } from '@/utils/util'
 export default {
   data() {
     return {
@@ -179,6 +180,10 @@
           // knifeToolChangeTime: record.knifeToolChangeTime != null ? moment(record.knifeToolChangeTime, 'YYYY-MM-DD') : ''
           // knifeToolChangeTime:moment(record.knifeToolChangeTime != null ? record.knifeToolChangeTime : "", 'YYYY-MM-DD'),
         })
+
+        //瑙﹀彂浜嬩欢
+        this.onChangedetergentchangetime(null,record.detergentchangetime != null ? dateFormat(record.detergentchangetime, 'YYYY-mm-dd') : '');
+        this.onChangecuttingFluidchangetime(null,record.cuttingFluidChangeTime != null ? dateFormat(record.cuttingFluidChangeTime, 'YYYY-mm-dd') : '');
       })
       // this.form.getFieldDecorator('detergentchangetime', { initialValue: moment(record.detergentchangetime, 'YYYY-MM-DD') })
       // this.detergentchangetimeDateString = moment(record.detergentchangetime).format('YYYY-MM-DD')
@@ -226,6 +231,7 @@
       })
     },
     onChangedetergentchangetime(date, dateString) {
+      //debugger
       this.detergentchangetimeDateString = dateString
     },
 

--
Gitblit v1.9.3