diff --git a/Hh.Mes.Api/BaseInfoCache.json b/Hh.Mes.Api/BaseInfoCache.json
new file mode 100644
index 0000000..ef2fe08
--- /dev/null
+++ b/Hh.Mes.Api/BaseInfoCache.json
@@ -0,0 +1,8 @@
+{
+  "baseInfo": [
+    {
+      "key": "base_factory",
+      "sql": "select * from base_factory  with(nolock)   "
+    }
+  ]
+}
\ No newline at end of file
diff --git a/Hh.Mes.Api/Controllers/UpstreamController.cs b/Hh.Mes.Api/Controllers/UpstreamController.cs
index f7b66dd..b91bdec 100644
--- a/Hh.Mes.Api/Controllers/UpstreamController.cs
+++ b/Hh.Mes.Api/Controllers/UpstreamController.cs
@@ -42,28 +42,15 @@ namespace Hh.Mes.Api.Controllers
             return Serialize(service.SendEquipment(entity));
         }
 
-      
-
-        ///// <summary>
-        ///// 人员信息 MOM_HH_003
-        ///// http://127.0.0.1:10008/api/Upstream/Mes/V1/SendUser
-        ///// </summary>
-        //[HttpPost]
-        //[ActionName("Mes/V1/SendUser")]
-        //public string SendUser(SysUserEntity requestData)
-        //{
-        //    return Serialize(service.SendUser(requestData));
-        //}
-
-        ///// <summary>
-        ///// ANDON报警
-        ///// </summary>
-        //[HttpPost]
-        //[ActionName("Mes/V1/AndonUpMom")]
-        //public string AndonUpMom(AndonUpMomEntity andonUpMomEntity)
-        //{
-        //    return Serialize(service.AndonUpMom(andonUpMomEntity));
-        //}
+        /// <summary>
+        /// 生产订单  MOM_HH_005
+        /// </summary>
+        [HttpPost]
+        [ActionName("Mes/V1/SendWorkOrder")]
+        public string SendWorkOrder(MomWorkOrder requestData)
+        {
+            return Serialize(service.SendWorkOrder(requestData));
+        }
 
         /// <summary>
         /// 获取MOM请求Token
diff --git a/Hh.Mes.Api/Startup.cs b/Hh.Mes.Api/Startup.cs
index ee2cb1c..7d5932b 100644
--- a/Hh.Mes.Api/Startup.cs
+++ b/Hh.Mes.Api/Startup.cs
@@ -1,9 +1,11 @@
 using System;
 using System.IO;
 using System.Reflection;
+using System.Threading.Tasks;
 using Hh.Mes.Api.AOP;
 using Hh.Mes.API.AOP;
 using Hh.Mes.Common.config;
+using Hh.Mes.Service;
 using Hh.Mes.Service.Repository;
 using Hh.Mes.Service.SystemAuth;
 using Microsoft.AspNetCore.Builder;
@@ -100,7 +102,13 @@ namespace Hh.Mes.Api
             services.AddScoped<NormalAuthStrategy>();
             services.AddScoped(typeof(IAuth), typeof(LocalAuth));
             #endregion
- 
+
+            //���ݿ������Ƿ�ɹ�
+            Task.Factory.StartNew(() =>
+            {
+                new BaseInfoCacheService().CheckDatabaseConnected();
+            });
+
         }
 
         // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
diff --git a/document/会议记录/华恒-IoT设备云平台启动会-会议记录0305.docx b/document/会议记录/华恒-IoT设备云平台启动会-会议记录0305.docx
new file mode 100644
index 0000000..0ca768a
--- /dev/null
+++ b/document/会议记录/华恒-IoT设备云平台启动会-会议记录0305.docx
diff --git a/document/开发计划/~$IoT平台V2.0.xlsx b/document/开发计划/~$IoT平台V2.0.xlsx
new file mode 100644
index 0000000..f1dffe4
--- /dev/null
+++ b/document/开发计划/~$IoT平台V2.0.xlsx
diff --git a/document/软件设计图/IoT架构图.drawio b/document/软件设计图/IoT架构图.drawio
new file mode 100644
index 0000000..fb1066b
--- /dev/null
+++ b/document/软件设计图/IoT架构图.drawio
@@ -0,0 +1,219 @@
+<mxfile host="65bd71144e">
+    <diagram id="u5RV28YGxslQ54ZlnaUB" name="第 1 页">
+        <mxGraphModel dx="797" dy="394" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+            <root>
+                <mxCell id="0"/>
+                <mxCell id="1" parent="0"/>
+                <mxCell id="2" value="显示层" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#ccffe6;fontColor=#0D0C0C;strokeColor=#2D7600;" parent="1" vertex="1">
+                    <mxGeometry x="60" y="50" width="100" height="70" as="geometry"/>
+                </mxCell>
+                <mxCell id="5" value="" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=default;verticalAlign=top;imageAspect=0;image=data:image/png,iVBORw0KGgoAAAANSUhEUgAAA6gAAACBCAYAAADNCpdLAAAgAElEQVR4Ae2d91dV196vz//x3nvPO95f7xhvzrFgjBUQRIMNUUFs2HuPGiOiYu8VsTfsHRURFbEioGKLHSOW5KSdk6g5iUb93DFX3u2VtrOBtTdr7/04xhxI2Wuv9f0+szx7zjXXX8Q/IkAEiAARIAJEgAgQASJABIgAESACDojAXxxwDpwCESACRIAIEAEiQASIABEgAkSACBABIahAQASIABEgAkSACBABIkAEiAARIAKOiACC6og0cBJEgAgQASJABIgAESACRIAIEAEigKDCABEgAkSACBABIkAEiAARIAJEgAg4IgIVCuoPP/ygkydPKi0tTbNmzdKUKVMoxAAGYAAGYAAGYAAGYAAGYAAGYMBjBqZPn65ly5YpIyNDT58+1bt37/5UgssJanFxsRYsWKC4uDiFhoYqJCREderUoRADGIABGIABGIABGIABGIABGIABjxmoV6+emjZtqg4dOmjy5Mm6du2a3r5961ZSSwmqmTldu3atWraKUufe3ZScNk/zd67Wor3rKcQABmAABmAABmAABmAABmAABmDAYwbm71qraesWq+fw/moRFWmtzi0pKfFcUIuKitS3b1+179pJacd26vTPd1Xw5oku6WsKMYABGIABGIABGIABGIABGIABGPCYgYK3T3XuZbG2XzmurgMT1aZtG+Xk5HguqMePH1dERIT6jh2qU/+87fEbI7AIPAzAAAzAAAzAAAzAAAzAAAzAQEUM5P/+WGPmTNYnjRtpx44dev36daWSWmqJr7l51dxzOnjSGGZO+WSEDyhgAAZgAAZgAAZgAAZgAAZgwBYGJi2frUZNm2jNmjV68eKFZ4J64MAB64bXIZM/s+UkKrJnfsanKjAAAzAAAzAAAzAAAzAAAzAQXAxMXjlPjZs31cqVK/XTTz8hqFSA4KoA5Jt8wwAMwAAMwAAMwAAMwIBzGEBQmYpnFhwGYAAGYAAGYAAGYAAGYAAGHMEAggqIjgCRT62c86kVuSAXMAADMAADMAADMAADtcUAgoqgIqgwAAMwAAMwAAMwAAMwAAMw4AgGEFRAdASItfUJDe/Lp4MwAAMwAAMwAAMwAAMw4BwGEFQEFUGFARiAARiAARiAARiAARiAAUcwgKACoiNA5FMr53xqRS7IBQzA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;" parent="1" vertex="1">
+                    <mxGeometry x="200" y="50" width="610" height="72" as="geometry"/>
+                </mxCell>
+                <mxCell id="7" value="前端UI" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ff99;" parent="1" vertex="1">
+                    <mxGeometry x="60" y="179" width="100" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="8" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ccff99;labelPosition=left;verticalLabelPosition=top;align=right;verticalAlign=bottom;" parent="1" vertex="1">
+                    <mxGeometry x="200" y="179" width="350" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="11" value="WEB" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="190" y="175" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="12" value="LayUI" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="242" y="192" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="13" value="Jquery" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="326" y="192" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="14" value="vue" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="407" y="192" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="15" value="百度地图" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="483" y="192" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="16" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ccff99;labelPosition=left;verticalLabelPosition=top;align=right;verticalAlign=bottom;" parent="1" vertex="1">
+                    <mxGeometry x="570" y="177" width="240" height="65" as="geometry"/>
+                </mxCell>
+                <mxCell id="17" value="APP" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="560" y="172" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="18" value="Android/IOS" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="604" y="194.5" width="80" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="19" value="小程序" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="709" y="195.5" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="20" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="340" y="126" as="sourcePoint"/>
+                        <mxPoint x="340" y="175" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="24" value="交换层" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ff99;" parent="1" vertex="1">
+                    <mxGeometry x="60" y="310" width="100" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="26" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="655.41" y="172" as="sourcePoint"/>
+                        <mxPoint x="655.41" y="122" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="27" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ffcc99;labelPosition=left;verticalLabelPosition=top;align=right;verticalAlign=bottom;" parent="1" vertex="1">
+                    <mxGeometry x="200" y="310" width="170" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="29" value="MVC" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="251" y="326.5" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="30" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ffcc99;labelPosition=left;verticalLabelPosition=top;align=right;verticalAlign=bottom;" parent="1" vertex="1">
+                    <mxGeometry x="400" y="310" width="272" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="31" value="Ajax交互" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="401" y="326.5" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="32" value="Get请求" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="463" y="326.5" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="34" value="Get请求" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="569" y="326.5" width="93" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="36" value="后端" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ff99;" parent="1" vertex="1">
+                    <mxGeometry x="60" y="434" width="100" height="190" as="geometry"/>
+                </mxCell>
+                <mxCell id="37" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ccff99;" parent="1" vertex="1">
+                    <mxGeometry x="200" y="434" width="140" height="190" as="geometry"/>
+                </mxCell>
+                <mxCell id="38" value="API" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="191" y="434" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="39" value="看板接口" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="220" y="474" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="40" value="维护报表接口" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="220" y="524" width="80" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="41" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ccff99;" parent="1" vertex="1">
+                    <mxGeometry x="353" y="433" width="317" height="190" as="geometry"/>
+                </mxCell>
+                <mxCell id="42" value="APP接口" style="text;html=1;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="220" y="568" width="80" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="43" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;dashed=1;" parent="1" vertex="1">
+                    <mxGeometry x="375" y="466" width="135" height="148" as="geometry"/>
+                </mxCell>
+                <mxCell id="44" value="管理系统" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="353" y="434" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="45" value="业务系统" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="375" y="466" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="46" value="业务处理" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="395" y="504" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="47" value="数据逻辑" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="395" y="565" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="48" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;dashed=1;" parent="1" vertex="1">
+                    <mxGeometry x="522.5" y="463" width="135" height="150" as="geometry"/>
+                </mxCell>
+                <mxCell id="49" value="采集系统" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="522.5" y="464" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="50" value="采集端" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="542" y="504" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="51" value="接受端" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="542" y="565" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="52" value="日&lt;br&gt;志&lt;br&gt;记&lt;br&gt;录" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ccff99;textDirection=rtl;" parent="1" vertex="1">
+                    <mxGeometry x="686.5" y="432" width="30" height="198" as="geometry"/>
+                </mxCell>
+                <mxCell id="53" value="管&lt;br&gt;理&lt;br&gt;消&lt;br&gt;息" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ffff99;textDirection=rtl;" parent="1" vertex="1">
+                    <mxGeometry x="730" y="310" width="30" height="320" as="geometry"/>
+                </mxCell>
+                <mxCell id="54" value="权&lt;br&gt;限&lt;br&gt;管&lt;br&gt;理" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#ff9999;textDirection=rtl;" parent="1" vertex="1">
+                    <mxGeometry x="770" y="311" width="30" height="319" as="geometry"/>
+                </mxCell>
+                <mxCell id="55" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="341" y="254" as="sourcePoint"/>
+                        <mxPoint x="341" y="303" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="56" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="656.4099999999999" y="300" as="sourcePoint"/>
+                        <mxPoint x="656.4099999999999" y="250" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="59" value="数据层" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ff99;" parent="1" vertex="1">
+                    <mxGeometry x="60" y="704" width="100" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="60" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ff99;labelPosition=left;verticalLabelPosition=top;align=right;verticalAlign=bottom;" parent="1" vertex="1">
+                    <mxGeometry x="200" y="703" width="600" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="62" value="sqlsugar" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="287" y="724" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="63" value="ORM" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontColor=#0D0C0C;" parent="1" vertex="1">
+                    <mxGeometry x="197" y="704" width="60" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="64" value="数据缓存" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="464" y="724" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="65" value="数据库" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="663.5" y="724" width="67" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="66" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="283" y="381" as="sourcePoint"/>
+                        <mxPoint x="283" y="430" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="67" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="598.4099999999999" y="427" as="sourcePoint"/>
+                        <mxPoint x="598.4099999999999" y="377" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="68" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="482" y="642" as="sourcePoint"/>
+                        <mxPoint x="482" y="691" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+                <mxCell id="70" value="基础层" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ff99;" parent="1" vertex="1">
+                    <mxGeometry x="60" y="840" width="100" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="71" value="" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=#080808;fontColor=#0D0C0C;fillColor=#99ccff;labelPosition=left;verticalLabelPosition=top;align=right;verticalAlign=bottom;" parent="1" vertex="1">
+                    <mxGeometry x="199" y="839" width="600" height="63" as="geometry"/>
+                </mxCell>
+                <mxCell id="73" value="netcore" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="282" y="856.5" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="74" value="操作系统" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="422" y="856.5" width="88" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="75" value="hslcommunication" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="560" y="856.5" width="110" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="76" value="中间件" style="rounded=0;whiteSpace=wrap;html=1;strokeColor=default;fontColor=#0D0C0C;fillColor=#fafafa;align=center;" parent="1" vertex="1">
+                    <mxGeometry x="680" y="856.5" width="110" height="30" as="geometry"/>
+                </mxCell>
+                <mxCell id="77" value="" style="shape=flexArrow;endArrow=classic;html=1;fontColor=#0D0C0C;" parent="1" edge="1">
+                    <mxGeometry width="50" height="50" relative="1" as="geometry">
+                        <mxPoint x="482" y="780" as="sourcePoint"/>
+                        <mxPoint x="482" y="829" as="targetPoint"/>
+                        <Array as="points"/>
+                    </mxGeometry>
+                </mxCell>
+            </root>
+        </mxGraphModel>
+    </diagram>
+</mxfile>
\ No newline at end of file
diff --git a/document/软件设计图/Iot体系流程图.drawio b/document/软件设计图/Iot体系流程图.drawio
new file mode 100644
index 0000000..6d4e6ba
--- /dev/null
+++ b/document/软件设计图/Iot体系流程图.drawio
@@ -0,0 +1,217 @@
+<mxfile host="Electron" modified="2024-03-04T07:52:47.456Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/23.1.5 Chrome/120.0.6099.109 Electron/28.1.0 Safari/537.36" etag="aiuqDw5x90w4hR1_VoaM" version="23.1.5" type="device">
+  <diagram name="第 1 页" id="WC5L4bweZnLv3zD18TvI">
+    <mxGraphModel dx="2231" dy="1299" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-2" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="125" y="150" width="565" height="507.5" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-3" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="139" y="190" width="280" height="440" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-4" value="堆垛机" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="150" y="230" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-5" value="标准输送线/提升机" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="150" y="310" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-6" value="RGV" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="150" y="390" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-7" value="环穿" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="150" y="470" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-8" value="AGV" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="150" y="554.5" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-9" value="桁架" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="230" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-10" value="焊接机器人" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="310" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-11" value="切割机" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="390" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-12" value="组对设备" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="470" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-13" value="其他设备等" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="290" y="554.5" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-14" value="上位机采集软件&lt;br&gt;第三方网关&lt;br&gt;PLC&lt;br&gt;单片机控制器" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="555" y="190" width="120" height="440" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-15" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;exitX=1;exitY=0.25;exitDx=0;exitDy=0;" edge="1" parent="1" source="Sk9KcIoX2QWr241WNbzu-3" target="Sk9KcIoX2QWr241WNbzu-14">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="340" y="420" as="sourcePoint" />
+            <mxPoint x="390" y="370" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-16" value="按设备协议采集&lt;br&gt;报警,状态,实时数据" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="420" y="245" width="130" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-17" value="客户项目现场" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="370" y="150" width="120" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-18" value="公网&lt;br&gt;内网" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="829" y="150" width="120" height="510" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-19" value="设备" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="250" y="190" width="60" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-20" value="采集端&lt;br&gt;指令接收端" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="570" y="200" width="90" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-21" value="网络" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="859" y="160" width="60" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-24" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="710" y="404.65999999999997" as="sourcePoint" />
+            <mxPoint x="800" y="404.65999999999997" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-25" value="MQTT&lt;br&gt;WebApi(https)&lt;br&gt;Socket&lt;div&gt;&lt;br/&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="700" y="320" width="100" height="70" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-26" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="980" y="404.65999999999997" as="sourcePoint" />
+            <mxPoint x="1070" y="404.65999999999997" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-27" value="MQTT&lt;br&gt;WebApi(https)&lt;br&gt;Socket&lt;div&gt;&lt;br/&gt;&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="970" y="320" width="100" height="70" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-28" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1100" y="150" width="770" height="510" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-29" value="MQTT服务端&lt;br&gt;WebApi服务端&lt;br&gt;Socket服务端" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1120" y="210" width="120" height="430" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-30" value="接发端程序" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="1140" y="220" width="80" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-31" value="公司内部服务器" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="1440" y="160" width="100" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-32" value="数据库" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1350" y="210" width="120" height="220" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-34" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1255" y="290" as="sourcePoint" />
+            <mxPoint x="1335" y="289.31" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-35" value="将接受数据写入" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="1240" y="240" width="110" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-36" value="处理端程序" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1350" y="570" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-37" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1" source="Sk9KcIoX2QWr241WNbzu-36" target="Sk9KcIoX2QWr241WNbzu-32">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1390" y="500" as="sourcePoint" />
+            <mxPoint x="1440" y="450" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-38" value="按设备协议处理消息&lt;br&gt;写入处理后的数据" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="1265" y="450" width="130" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-39" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1580" y="210" width="270" height="430" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-40" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1480" y="289.31" as="sourcePoint" />
+            <mxPoint x="1570" y="289.31" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-41" value="读取数据" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="1480" y="240" width="70" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-42" value="前台Web端程序" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
+          <mxGeometry x="1667.5" y="215" width="95" height="30" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-43" value="用户管理&lt;br&gt;公司用户,客户用户" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1590" y="260" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-44" value="设备管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1720" y="260" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-45" value="项目信息管理&lt;br&gt;项目号,项目地等" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1590" y="340" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-46" value="设备报表&lt;br&gt;状态报警显示、性能指标、妥善率统计等" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1720" y="340" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-47" value="对外接口&lt;br&gt;设备数据查询、项目设备人员等对接接口" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1590" y="420" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-48" value="项目地图" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1720" y="420" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-49" value="SIM卡管理" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1590" y="500" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-50" value="系统参数/字典/定时器等组件" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1720" y="500" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-51" value="看板/移动端" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1720" y="570" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-52" value="设备控制" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
+          <mxGeometry x="1590" y="570" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-53" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1570" y="600" as="sourcePoint" />
+            <mxPoint x="1486" y="599.66" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-54" value="设备控制指令&lt;br&gt;授权等" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="1480" y="535" width="100" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-55" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1335" y="599.66" as="sourcePoint" />
+            <mxPoint x="1255" y="599.66" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-57" value="按设备协议生成指令并交给&lt;br&gt;接发端程序进行发送" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="1230" y="530" width="170" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-59" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;entryX=1.003;entryY=0.61;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="800" y="460" as="sourcePoint" />
+            <mxPoint x="712.3449999999999" y="459.5749999999998" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-60" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;entryX=1.003;entryY=0.61;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="1063.83" y="460.43" as="sourcePoint" />
+            <mxPoint x="976.175" y="460.0049999999998" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-61" value="指令发送&lt;br&gt;Socket" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="985" y="480" width="70" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-62" value="指令发送&lt;br&gt;Socket" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="715" y="480" width="70" height="40" as="geometry" />
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-63" value="" style="shape=flexArrow;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.75;exitDx=0;exitDy=0;entryX=1;entryY=0.75;entryDx=0;entryDy=0;" edge="1" parent="1" source="Sk9KcIoX2QWr241WNbzu-14" target="Sk9KcIoX2QWr241WNbzu-3">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="550" y="499.31" as="sourcePoint" />
+            <mxPoint x="420" y="499.31" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="Sk9KcIoX2QWr241WNbzu-65" value="按设备协议&lt;br&gt;下发指令" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
+          <mxGeometry x="445" y="465" width="80" height="40" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>
diff --git a/document/软件设计图/设计.pptx b/document/软件设计图/设计.pptx
new file mode 100644
index 0000000..071518d
--- /dev/null
+++ b/document/软件设计图/设计.pptx
diff --git a/sys/Hh.Mes.POJO/ApiEntity/MomWorkOrder.cs b/sys/Hh.Mes.POJO/ApiEntity/MomWorkOrder.cs
index 5048e4b..82c62dd 100644
--- a/sys/Hh.Mes.POJO/ApiEntity/MomWorkOrder.cs
+++ b/sys/Hh.Mes.POJO/ApiEntity/MomWorkOrder.cs
@@ -8,7 +8,7 @@ namespace Hh.Mes.POJO.ApiEntity
     /// <summary>
     /// Mom工单
     /// </summary>
-    public class MomWorkOrderHead
+    public class MomWorkOrder
     {
         /// <summary>
         /// 唯一标识ID
diff --git a/sys/Hh.Mes.POJO/Request/PageReq.cs b/sys/Hh.Mes.POJO/Request/PageReq.cs
index 72c77a2..1a88365 100644
--- a/sys/Hh.Mes.POJO/Request/PageReq.cs
+++ b/sys/Hh.Mes.POJO/Request/PageReq.cs
@@ -3,14 +3,31 @@
     public class PageReq
     {
         public int page { get; set; }
-        public int limit { get; set; }
+
+        private int _limit = 0;
+        public int limit
+        {
+            get
+            {
+                if (_limit <= 0)
+                {
+                    return 50;
+                }
+                else { return _limit; }
+            }
+            set
+            {
+                _limit = value;
+            }
+
+        }
         public string field { get; set; }
         public string order { get; set; }
 
         public PageReq()
         {
             page = 1;
-            limit = 1000;
+            limit = 50;
         }
     }
 }
diff --git a/sys/Hh.Mes.POJO/WebEntity/api/api_workOrder_detail.cs b/sys/Hh.Mes.POJO/WebEntity/api/api_workOrder_detail.cs
index 79e590b..1520d90 100644
--- a/sys/Hh.Mes.POJO/WebEntity/api/api_workOrder_detail.cs
+++ b/sys/Hh.Mes.POJO/WebEntity/api/api_workOrder_detail.cs
@@ -16,98 +16,9 @@ namespace Hh.Mes.POJO.Entity
         public Guid headKeys { get; set; }
 
         /// <summary>
-        /// 工序code
+        /// Json
         /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "工序code", IsNullable = true)]
-        public string oprSequenceCode { get; set; }
-
-
-        /// <summary>
-        /// 计划开始时间
-        /// </summary>
-        [SugarColumn(ColumnDescription = "计划开始时间", IsNullable = true)]
-        public DateTime planStartTime { get; set; }
-
-        /// <summary>
-        /// 计划结束时间
-        /// </summary>
-        [SugarColumn(ColumnDescription = "计划结束时间", IsNullable = true)]
-        public DateTime planEndTime { get; set; }
-
-        /// <summary>
-        /// 管段物料编码 切割工序
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "管段物料编码 切割工序", IsNullable = true)]
-        public string cutMaterCode { get; set; }
-
-        /// <summary>
-        /// 管段切割长度 切割工序
-        /// </summary>
-        [SugarColumn(ColumnDescription = "管段切割长度 切割工序", IsNullable = true)]
-        public double cuttingLength { get; set; }
-
-        /// <summary>
-        /// 焊口形式对焊BW/插焊SW/支架角焊缝FW 焊接工序
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "焊口形式对焊BW/插焊SW/支架角焊缝FW 焊接工序", IsNullable = true)]
-        public string weldType { get; set; }
-
-        /// <summary>
-        /// 焊口号 焊接工序
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "焊口号 焊接工序", IsNullable = true)]
-        public string weldNo { get; set; }
-
-        /// <summary>
-        /// 焊口物料 焊接工序
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "焊口物料 焊接工序", IsNullable = true)]
-        public string weldMaterCode { get; set; }
-
-        /// <summary>
-        /// 是否成品管0:否,1:是
-        /// </summary>
-        [SugarColumn(ColumnDescription = "是否成品管0:否,1:是", IsNullable = true)]
-        public int isEndProduct { get; set; }
-
-
-        /// <summary>
-        /// 扩展字段1
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "扩展字段3", IsNullable = true)]
-        public string extend1 { get; set; }
-
-        /// <summary>
-        /// 扩展字段2
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "扩展字段4", IsNullable = true)]
-        public string extend2 { get; set; }
-
-
-        /// <summary>
-        /// extendComp1
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "扩展字段1", IsNullable = true)]
-        public string extendComp1 { get; set; }
-
-        /// <summary>
-        /// extendComp2
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "扩展字段2", IsNullable = true)]
-        public string extendComp2 { get; set; }
-
-
-        /// <summary>
-        /// extendComp3
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "扩展字段3", IsNullable = true)]
-        public string extendComp3 { get; set; }
-
-        /// <summary>
-        /// extendComp4
-        /// </summary>
-        [SugarColumn(Length = 40, ColumnDescription = "扩展字段4", IsNullable = true)]
-        public string extendComp4 { get; set; }
+        public string JsonValue { get; set; }
 
         /// <summary>
         /// 建立时间
diff --git a/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService.cs b/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService.cs
index 4e4a6d5..8d1ea3e 100644
--- a/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService.cs
+++ b/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService.cs
@@ -51,6 +51,11 @@ namespace Hh.Mes.Service.ApiService
         /// <returns></returns>
         public ResponseUpstream<string>  typeValidation(string type, ResponseUpstream<string> response)
         {
+            if (string.IsNullOrEmpty(type))
+            {
+                type = "I";
+                return response;
+            }
             if ("IUD".IndexOf(type)==-1)
             {
                 response.ResponseError($"【上位系统】【type 只能是I或者U或者D标识】,请核实确认!");
diff --git a/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService_WorkOrder.cs b/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService_WorkOrder.cs
new file mode 100644
index 0000000..3995b02
--- /dev/null
+++ b/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService_WorkOrder.cs
@@ -0,0 +1,94 @@
+using Hh.Mes.Common.log;
+using Hh.Mes.POJO.ApiEntity;
+using Hh.Mes.POJO.Entity;
+using Hh.Mes.POJO.Response;
+using Hh.Mes.POJO.WebEntity;
+using NPOI.POIFS.FileSystem;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Hh.Mes.Service.ApiService
+{
+    public partial class UpstreamService
+    {
+        #region 属性
+
+        /// <summary>
+        /// 华恒线体code
+        /// </summary>
+        private string Sys_LineCode { get; set; }
+
+        private base_work_center work_center { get; set; }
+
+        /// <summary>
+        /// 产品表
+        /// </summary>
+        private base_product_header Sys_ProductHeader { get; set; }
+
+
+
+        /// <summary>
+        /// 工艺路线头
+        /// </summary>
+        private base_process_route_head Sys_ProcessHead { get; set; }
+
+        /// <summary>
+        /// 工艺路线明细
+        /// </summary>
+        private List<base_process_route_detail> Sys_ProcessDetail { get; set; }
+
+        /// <summary>
+        /// 输出返回实体
+        /// </summary>
+        private ResponseUpstream<string> ResponseOrder { get; set; }
+
+        /// <summary>
+        /// Json 接受实体
+        /// </summary>
+        private MomWorkOrder MomEntity { get; set; }
+
+
+        #region 切割、组队、焊接工序
+        /// <summary>
+        /// 切割工序
+        /// </summary>
+        private base_process_route_detail Sys_process_cut { get; set; }
+
+        /// <summary>
+        /// 组队工序
+        /// </summary>
+        private base_process_route_detail Sys_process_fitUp { get; set; }
+
+        /// <summary>
+        /// 焊接工序
+        /// </summary>
+        private base_process_route_detail Sys_process_weld { get; set; }
+        #endregion
+
+        //工序任务 管段号 同一组工序明细的值 一样
+        private string Part_Code { get; set; }
+
+        /// <summary>
+        /// 更新数据使用 缓存工序任务头变量
+        /// </summary>
+        private bus_workOrder_head busWkHead { get; set; }
+
+        /// <summary>
+        /// 订单类型名称
+        /// </summary>
+        private string proOrderTypeName { get; set; }
+        #endregion
+
+        public dynamic SendWorkOrder(MomWorkOrder requestData)
+        {
+            return ExceptionsHelp.Instance.ExecuteT(() =>
+            {
+                this.MomEntity = requestData;
+                ResponseOrder = new ResponseUpstream<string>(requestData.plmeid);
+
+                return "";
+            });
+        }
+    }
+}
diff --git a/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService_WorkOrder_Method.cs b/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService_WorkOrder_Method.cs
new file mode 100644
index 0000000..8386b25
--- /dev/null
+++ b/sys/Hh.Mes.Service/ApiService/UpstreamDown/UpstreamService_WorkOrder_Method.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace Hh.Mes.Service.ApiService
+{
+    public partial class UpstreamService
+    {
+    }
+}
diff --git a/sys/Hh.Mes.Service/base/BaseInfoCacheService.cs b/sys/Hh.Mes.Service/base/BaseInfoCacheService.cs
index c1de812..aaf931d 100644
--- a/sys/Hh.Mes.Service/base/BaseInfoCacheService.cs
+++ b/sys/Hh.Mes.Service/base/BaseInfoCacheService.cs
@@ -99,5 +99,34 @@ namespace Hh.Mes.Service
             //var dt = Context.Ado.GetDataTable(sqlMater);
             return null;
         }
+
+        /// <summary>
+        /// api 启动检查数据库是否已连接上
+        /// </summary>
+        public void CheckDatabaseConnected()
+        {
+            var isConnection = false;
+            ExceptionsHelp.Instance.ExecuteT(() =>
+            {
+                Console.WriteLine();
+                Console.ForegroundColor = ConsoleColor.Green;
+                Console.WriteLine($"The database is being connected......");
+                Console.WriteLine();
+                var sql = baseSql["base_factory"];
+                Context.Ado.GetDataTable(sql);
+                return "";
+            }, actionCatCh: () =>
+            {
+                isConnection = true;
+                Console.ForegroundColor = ConsoleColor.Red;
+                Console.WriteLine();
+                Console.WriteLine($"The database connection is  Error!Please Check Connection 【{ConfigRead.GetInstance.GetAppsetConnection().BaseDBContext}】");
+                Console.WriteLine();
+                Console.ResetColor();
+            }, actionFinally: () =>
+            {
+                if (!isConnection) Console.WriteLine("The database connection is successful");
+            });
+        }
     }
 }
diff --git a/web/WebMvc/Areas/Planned/Controllers/GeneratorController.cs b/web/WebMvc/Areas/Planned/Controllers/GeneratorController.cs
index 7ee0b50..c39ebeb 100644
--- a/web/WebMvc/Areas/Planned/Controllers/GeneratorController.cs
+++ b/web/WebMvc/Areas/Planned/Controllers/GeneratorController.cs
@@ -1,4 +1,5 @@
-using Hh.Mes.Common.Reflect;
+using Hh.Mes.Common.config;
+using Hh.Mes.Common.Reflect;
 using Hh.Mes.Common.Request;
 using Hh.Mes.POJO.Entity;
 using Hh.Mes.POJO.Response;
@@ -36,6 +37,10 @@ namespace WebMvc.Areas.Planned.Controllers
 
         public IActionResult Index()
         {
+            if (ConfigRead.GetInstance.GetAppsetConnection().IsDevelopment)
+            {
+                return Redirect("/htmlTemp/403.html");
+            }
             return View();
         }
 
diff --git a/web/WebMvc/wwwroot/htmlTemp/403.html b/web/WebMvc/wwwroot/htmlTemp/403.html
new file mode 100644
index 0000000..fed7833
--- /dev/null
+++ b/web/WebMvc/wwwroot/htmlTemp/403.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset='utf-8'>
+    <title>500 页面</title>
+    <style type='text/css'>
+        body {
+            margin: 8% auto 0;
+            max-width: 400px;
+            min-height: 200px;
+            padding: 10px;
+            font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;
+            font-size: 14px;
+            padding-right: 200px;
+            position: relative;
+        }
+
+        p {
+            color: #555;
+            margin: 15px 0px;
+        }
+
+        img {
+            border: 0px;
+        }
+
+        .d {
+            color: #404040;
+        }
+
+        .robot img {
+            max-width: 192px;
+        }
+
+        .robot {
+            position: absolute;
+            top: 0;
+            right: 0;
+        }
+    </style>
+</head>
+<body>
+<div style="margin-top:20px">
+    <p style=""><b style="">403.</b>  There are no permissions</p>
+    <p class="d">线上环境没有权限使用。</p>
+    <a href="javascript:history.go(-1);">向上一页</a>
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/web/WebMvc/wwwroot/js/index.js b/web/WebMvc/wwwroot/js/index.js
index 933180e..aba9ea4 100644
--- a/web/WebMvc/wwwroot/js/index.js
+++ b/web/WebMvc/wwwroot/js/index.js
@@ -155,13 +155,13 @@ layui.config({
             url = thisInfo.attr("data-url");
         //默认加上缓存的动态参数
         if (url != null && url.indexOf("sysWhere") > -1) {
-            Object.keys(localStorage).forEach(x => {
-                if (x.indexOf("sysWhere") > -1) {
-                    url += `${url}&${x}=${localStorage.getItem(x)}`
-                }
-            })
-            thisInfo.attr("data-url", url)
-            url = thisInfo.attr("data-url");
+            var urlWhere = Object.keys(localStorage)
+                .filter(x => x.includes("sysWhere"))
+                .map(x => `${x}=${localStorage.getItem(x)}`)
+                .join("&");
+
+            url = url.includes("?") ? `${url}&${urlWhere}` : `${url}?${urlWhere}`;
+            thisInfo.attr("data-url", url);
         }
         //如果不存在子级 _x
         if (thisInfo.siblings().length == 0 && url != undefined) {