From 538f1f0db8d02103d040b96a489b1a5803750a11 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 23 二月 2024 11:02:57 +0800
Subject: [PATCH] 项目优化

---
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/GantryJob.cs                                |  111 ----
 项目资料/通信协议/WMS和MES接口/5f5bd6b6d22369969ae3b3688408dbc.png                                    |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_patternService.cs                  |   67 ++
 项目资料/通信协议/新增设备协议/太重交互-库口状态_V1.xlsx                                                         |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs                                           |  127 +++--
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs                              |  139 +++-
 项目资料/通信协议/PCS跟AGV和桁架防呆交互协议/PCS与AGV和桁架防呆协议.xlsx                                             |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs                 |    2 
 项目资料/其他/现场IP分配.xlsx                                                                        |    0 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/dt_pattern.cs                            |   58 ++
 代码管理/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs                   |  231 ++++----
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_patternController.cs |   54 ++
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs                   |  208 ++++----
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs                                   |    4 
 代码管理/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue                     |   22 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs                                            |    4 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_patternService.cs                        |   12 
 项目资料/通信协议/PCS跟AGV和桁架防呆交互协议/PCS和桁架协议.xlsx                                                   |    0 
 代码管理/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs                            |   13 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/ToAGV/ToAGVServer.cs                                       |    6 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Common/AGVandGantry.cs                                     |    8 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/partial/dt_pattern.cs                    |   21 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_patternService.cs                |   15 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_patternService.cs                          |   27 +
 代码管理/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_patternRepository.cs                   |   24 +
 项目资料/通信协议/WMS和MES接口/WMS系统接口.docx                                                           |    0 
 /dev/null                                                                                  |    0 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs                      |    7 
 项目资料/通信协议/WMS和MES接口/c40a9fff20facac273c88e13593a7c1.png                                    |    0 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/ToMES/dt_mes_detail.cs                     |    1 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/1/dt_patternMapConfig.cs           |   16 
 代码管理/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfohead.cs                      |    9 
 项目资料/通信协议/WMS和AGV接口/WMS和AGV接口协议.xlsx                                                       |    0 
 代码管理/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_pattern.js                            |  137 +++++
 代码管理/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_pattern.vue                               |   59 ++
 代码管理/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_patternRepository.cs                 |   18 
 代码管理/PCS/WCS_Client/src/router/viewGird.js                                                 |    4 
 代码管理/PCS/WCS_Server/WIDESEA_WCS/ToAGV/ToAGVServer.cs                                       |    1 
 代码管理/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs             |    1 
 代码管理/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_patternController.cs         |   21 
 40 files changed, 958 insertions(+), 469 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_pattern.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_pattern.js"
new file mode 100644
index 0000000..6c8718b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/extension/widesea_wcs/wcs/dt_pattern.js"
@@ -0,0 +1,137 @@
+/*****************************************************************************************
+**  Author:jxx 2022
+**  QQ:283591387
+**瀹屾暣鏂囨。瑙侊細http://v2.volcore.xyz/document/api 銆愪唬鐮佺敓鎴愰〉闈iewGrid銆�
+**甯哥敤绀轰緥瑙侊細http://v2.volcore.xyz/document/vueDev
+**鍚庡彴鎿嶄綔瑙侊細http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//姝s鏂囦欢鏄敤鏉ヨ嚜瀹氫箟鎵╁睍涓氬姟浠g爜锛屽彲浠ユ墿灞曚竴浜涜嚜瀹氫箟椤甸潰鎴栬�呴噸鏂伴厤缃敓鎴愮殑浠g爜
+
+let extension = {
+  components: {
+    //鏌ヨ鐣岄潰鎵╁睍缁勪欢
+    gridHeader: '',
+    gridBody: '',
+    gridFooter: '',
+    //鏂板缓銆佺紪杈戝脊鍑烘鎵╁睍缁勪欢
+    modelHeader: '',
+    modelBody: '',
+    modelFooter: ''
+  },
+  tableAction: '', //鎸囧畾鏌愬紶琛ㄧ殑鏉冮檺(杩欓噷濉啓琛ㄥ悕,榛樿涓嶇敤濉啓)
+  buttons: { view: [], box: [], detail: [] }, //鎵╁睍鐨勬寜閽�
+  methods: {
+     //涓嬮潰杩欎簺鏂规硶鍙互淇濈暀涔熷彲浠ュ垹闄�
+    onInit() {  //妗嗘灦鍒濆鍖栭厤缃墠锛�
+        //绀轰緥锛氬湪鎸夐挳鐨勬渶鍓嶉潰娣诲姞涓�涓寜閽�
+        //   this.buttons.unshift({  //涔熷彲浠ョ敤push鎴栬�卻plice鏂规硶鏉ヤ慨鏀筨uttons鏁扮粍
+        //     name: '鎸夐挳', //鎸夐挳鍚嶇О
+        //     icon: 'el-icon-document', //鎸夐挳鍥炬爣vue2鐗堟湰瑙乮view鏂囨。icon锛寁ue3鐗堟湰瑙乪lement ui鏂囨。icon(娉ㄦ剰涓嶆槸element puls鏂囨。)
+        //     type: 'primary', //鎸夐挳鏍峰紡vue2鐗堟湰瑙乮view鏂囨。button锛寁ue3鐗堟湰瑙乪lement ui鏂囨。button
+        //     onClick: function () {
+        //       this.$Message.success('鐐瑰嚮浜嗘寜閽�');
+        //     }
+        //   });
+
+        //绀轰緥锛氳缃慨鏀规柊寤恒�佺紪杈戝脊鍑烘瀛楁鏍囩鐨勯暱搴�
+        // this.boxOptions.labelWidth = 150;
+        this.columns.push({
+          field: '鎿嶄綔',
+          title: '鎿嶄綔',
+          width: 150,
+          fixed: 'right',
+          align: 'center',
+          render: (h, { row, column, index }) => {
+            return h('div', {}, [
+              h(
+                'span',
+                {
+                  style: {
+                    'cursor': 'pointer',
+                    'padding': '5px 10px',
+                    'border-radius': '3px',
+                    'background-color': '#67c23a',
+                    'color': '#fff',
+                    'font-size': '13px ',
+                  },
+                  onClick: (e) => {
+                    this.request('UpdateAuto', row);
+                    // this.request(row);
+                  }
+                },
+                '鑷姩'
+              ),
+              h(
+                'span',
+                {
+                  style: {
+                    'cursor': 'pointer',
+                    'margin-left': "10px",
+                    'padding': '5px 10px',
+                    'border-radius': '3px',
+                    'background-color': '#f56c6c',
+                    'color': '#fff',
+                    'font-size': '13px ',
+                  },
+                  onClick: (e) => {
+                    this.request('UpdateManual', row);
+                    // this.request(row);
+                  }
+                },
+                '鎵嬪姩'
+              )
+            ]);
+          }
+        });
+    },
+    request(action,row) {
+      // let url = `api/VV_Dispatch/${action}`;
+      let url = `/api/dt_pattern/${action}`;
+      // let params = {
+      //   Name: row.Name,
+      //   Enable:row.Enable
+      // }
+      this.http.post(url , row, true).then((x) => {
+        if (!x.status) return this.$error(x.message);
+        this.$success(x.message);
+        // this.refresh();
+        this.search();
+      });
+    },
+    onInited() {
+      //妗嗘灦鍒濆鍖栭厤缃悗
+      //濡傛灉瑕侀厤缃槑缁嗚〃,鍦ㄦ鏂规硶鎿嶄綔
+      //this.detailOptions.columns.forEach(column=>{ });
+    },
+    searchBefore(param) {
+      //鐣岄潰鏌ヨ鍓�,鍙互缁檖aram.wheres娣诲姞鏌ヨ鍙傛暟
+      //杩斿洖false锛屽垯涓嶄細鎵ц鏌ヨ
+      return true;
+    },
+    searchAfter(result) {
+      //鏌ヨ鍚庯紝result杩斿洖鐨勬煡璇㈡暟鎹�,鍙互鍦ㄦ樉绀哄埌琛ㄦ牸鍓嶅鐞嗚〃鏍肩殑鍊�
+      return true;
+    },
+    addBefore(formData) {
+      //鏂板缓淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛紝鍙互缁欑粰琛ㄥ崟璁剧疆鍊硷紝鑷繁杈撳嚭鐪媐ormData鐨勫��
+      return true;
+    },
+    updateBefore(formData) {
+      //缂栬緫淇濆瓨鍓峟ormData涓哄璞★紝鍖呮嫭鏄庣粏琛ㄣ�佸垹闄よ鐨処d
+      return true;
+    },
+    rowClick({ row, column, event }) {
+      //鏌ヨ鐣岄潰鐐瑰嚮琛屼簨浠�
+      // this.$refs.table.$refs.table.toggleRowSelection(row); //鍗曞嚮琛屾椂閫変腑褰撳墠琛�;
+    },
+    modelOpenAfter(row) {
+      //鐐瑰嚮缂栬緫銆佹柊寤烘寜閽脊鍑烘鍚庯紝鍙互鍦ㄦ澶勫啓閫昏緫锛屽锛屼粠鍚庡彴鑾峰彇鏁版嵁
+      //(1)鍒ゆ柇鏄紪杈戣繕鏄柊寤烘搷浣滐細 this.currentAction=='Add';
+      //(2)缁欏脊鍑烘璁剧疆榛樿鍊�
+      //(3)this.editFormFields.瀛楁='xxx';
+      //濡傛灉闇�瑕佺粰涓嬫媺妗嗚缃粯璁ゅ�硷紝璇烽亶鍘唗his.editFormOptions鎵惧埌瀛楁閰嶇疆瀵瑰簲data灞炴�х殑key鍊�
+      //鐪嬩笉鎳傚氨鎶婅緭鍑虹湅锛歝onsole.log(this.editFormOptions)
+    }
+  }
+};
+export default extension;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js"
index b3b11ea..f03fb96 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/router/viewGird.js"
@@ -189,6 +189,10 @@
         path: '/dt_Interfacerecord_pcs',
         name: 'dt_Interfacerecord_pcs',
         component: () => import('@/views/widesea_wcs/system/dt_Interfacerecord_pcs.vue')
+    }    ,{
+        path: '/dt_pattern',
+        name: 'dt_pattern',
+        component: () => import('@/views/widesea_wcs/wcs/dt_pattern.vue')
     }]
 
 export default viewgird
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_pattern.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_pattern.vue"
new file mode 100644
index 0000000..f2c9261
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Client/src/views/widesea_wcs/wcs/dt_pattern.vue"
@@ -0,0 +1,59 @@
+<!--
+*Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *涓氬姟璇峰湪@/extension/widesea_wcs/wcs/dt_pattern.js姝ゅ缂栧啓
+ -->
+<template>
+    <view-grid ref="grid"
+               :columns="columns"
+               :detail="detail"
+               :editFormFields="editFormFields"
+               :editFormOptions="editFormOptions"
+               :searchFormFields="searchFormFields"
+               :searchFormOptions="searchFormOptions"
+               :table="table"
+               :extend="extend">
+    </view-grid>
+</template>
+<script>
+    import extend from "@/extension/widesea_wcs/wcs/dt_pattern.js";
+    import { ref, defineComponent } from "vue";
+    export default defineComponent({
+        setup() {
+            const table = ref({
+                key: 'ID',
+                footer: "Foots",
+                cnName: '鍏ュ簱妯″紡',
+                name: 'wcs/dt_pattern',
+                url: "/dt_pattern/",
+                sortName: "ID"
+            });
+            const editFormFields = ref({});
+            const editFormOptions = ref([]);
+            const searchFormFields = ref({});
+            const searchFormOptions = ref([]);
+            const columns = ref([{field:'ID',title:'ID',type:'int',width:110,hidden:true,readonly:true,require:true,align:'left'},
+                       {field:'pattern_name',title:'妯″紡鍚�',type:'string',width:220,align:'left',sort:true},
+                       {field:'pattern_state',title:'妯″紡鐘舵��',type:'int',bind:{ key:'PatternStates',data:[]},width:110,require:true,align:'left'},
+                       {field:'pattern_remark',title:'pattern_remark',type:'string',width:220,align:'left'}]);
+            const detail = ref({
+                cnName: "#detailCnName",
+                table: "#detailTable",
+                columns: [],
+                sortName: "",
+                key: ""
+            });
+            return {
+                table,
+                extend,
+                editFormFields,
+                editFormOptions,
+                searchFormFields,
+                searchFormOptions,
+                columns,
+                detail,
+            };
+        },
+    });
+</script>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/MachineDB.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/MachineDB.cs"
deleted file mode 100644
index 715a35f..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/MachineDB.cs"
+++ /dev/null
@@ -1,82 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using WIDESEA_Comm.ItemDB;
-
-namespace WIDESEA_Comm.DBItem
-{
-    public partial class MachineDB
-    {
-        public event Action<string, MachineDB> OnReadSignal;
-
-        public string R_Name { get; set; }
-        /// <summary>
-        /// SN
-        /// </summary>
-        public string R_o_wp_id { get; set; }
-        /// <summary>
-        /// 寮�濮嬫椂闂�
-        /// </summary>
-        public DateTime R_o_mach_start_time { get; set; }
-        /// <summary>
-        /// 瀹屾垚鏃堕棿
-        /// </summary>
-        public DateTime R_o_mach_finish_time { get; set; }
-        /// <summary>
-        /// 鎿嶄綔浜�
-        /// </summary>
-        public string R_o_operator { get; set; }
-        /// <summary>
-        /// 鍘诲悜
-        /// </summary>
-        public string R_o_shift { get; set; }
-        /// <summary>
-        /// 璐ㄦ鐘舵�� 0:鏈畾涔�,1:OK,2:NG
-        /// </summary>
-        public short R_o_wp_status { get; set; }
-        /// <summary>
-        /// 缁撴灉
-        /// </summary>
-        public short R_o_result { get; set; }
-        /// <summary>
-        /// 閿欒浠g爜
-        /// </summary>
-        public short R_o_error_code { get; set; }
-
-        public short R_o_substation { get; set; }
-
-        public string R_o_value_result_real_1 { get; set; }
-        public string R_o_value_result_real_2 { get; set; }
-        public string R_o_value_result_real_3 { get; set; }
-        public string R_o_value_result_real_4 { get; set; }
-        public bool R_o_value_result_bool { get; set; }
-        public short oi_on { get; set; }
-        public short R_oi_on
-        {
-            get
-            {
-                return oi_on;
-            }
-            set
-            {
-                if (value == 1 && R_Name.Contains("瑙嗚妫�娴�"))
-                    ReadSignal(OperationType.OperationType_Record, this);
-                else if (value == 1 && R_Name.Contains("閾炬潯鏈�"))
-                    ReadSignal(OperationType.OperationType_Processor, this);
-                oi_on = value;
-
-
-            }
-        }
-
-        public void ReadSignal(string type, MachineDB reader)
-        {
-            Task.Run(() =>
-            {
-                OnReadSignal?.Invoke(type, reader);
-            });
-        }
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/WheelDataDB.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/WheelDataDB.cs"
deleted file mode 100644
index 189cd78..0000000
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/DBItem/WheelDataDB.cs"
+++ /dev/null
@@ -1,37 +0,0 @@
-锘縰sing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace WIDESEA_Comm.DBItem
-{
-    public partial class WheelDataDB
-    {
-        public event Action<string, WheelDataDB> OnReadSignal;
-        public string R_Name { get; set; }
-        public int R_o_wp_type { get; set; }
-        /// <summary>
-        /// 1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹�
-        /// </summary>
-        public short R_i_status { get; set; }
-        public int R_i_parameter_a { get; set; }
-        public int R_i_parameter_b { get; set; }
-        public int R_i_parameter_c { get; set; }
-        public int R_i_parameter_d { get; set; }
-        public int R_i_parameter_e { get; set; }
-        public int R_i_parameter_f { get; set; }
-        public int R_i_parameter_g { get; set; }
-        public int R_i_parameter_h { get; set; }
-        public string R_i_skip_op { get; set; }
-
-        public short R_oi_on { get; set; }
-        public void ReadSignal(string type, WheelDataDB reader)
-        {
-            Task.Run(() =>
-            {
-                OnReadSignal?.Invoke(type, reader);
-            });
-        }
-    }
-}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs"
index 6f0e255..3f8a147 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Comm/StateEnum/LocationStateEnum.cs"
@@ -15,11 +15,14 @@
         /// <summary>
         /// 绌鸿揣浣�
         /// </summary>
-<<<<<<< Updated upstream
-        Empty
-=======
         Empty,
-        Busy
->>>>>>> Stashed changes
+        /// <summary>
+        /// 鍗犵敤
+        /// </summary>
+        Busy,
+        /// <summary>
+        /// 寮傚父
+        /// </summary>
+        Abnormal
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/dt_pattern.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/dt_pattern.cs"
new file mode 100644
index 0000000..ebe722f
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/dt_pattern.cs"
@@ -0,0 +1,58 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    [Entity(TableCnName = "鍏ュ簱妯″紡",TableName = "dt_pattern")]
+    public partial class dt_pattern:BaseEntity
+    {
+        /// <summary>
+       ///
+       /// </summary>
+       [Key]
+       [Display(Name ="ID")]
+       [Column(TypeName="int")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public int ID { get; set; }
+
+       /// <summary>
+       ///
+       /// </summary>
+       [Display(Name ="pattern_name")]
+       [MaxLength(255)]
+       [Column(TypeName="nvarchar(255)")]
+       [Editable(true)]
+       public string pattern_name { get; set; }
+
+       /// <summary>
+       ///妯″紡
+       /// </summary>
+       [Display(Name ="妯″紡")]
+       [Column(TypeName="int")]
+       [Editable(true)]
+       [Required(AllowEmptyStrings=false)]
+       public int pattern_state { get; set; }
+
+       /// <summary>
+       ///
+       /// </summary>
+       [Display(Name ="pattern_remark")]
+       [MaxLength(255)]
+       [Column(TypeName="nvarchar(255)")]
+       [Editable(true)]
+       public string pattern_remark { get; set; }
+
+       
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/partial/dt_pattern.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/partial/dt_pattern.cs"
new file mode 100644
index 0000000..dc1213b
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/1/partial/dt_pattern.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉鏁版嵁搴撳瓧娈靛彂鐢熷彉鍖栵紝璇峰湪浠g爜鐢熷櫒閲嶆柊鐢熸垚姝odel
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Entity.SystemModels;
+
+namespace WIDESEA_Entity.DomainModels
+{
+    
+    public partial class dt_pattern
+    {
+        //姝ゅ閰嶇疆瀛楁(瀛楁閰嶇疆瑙佹model鐨勫彟涓�涓猵artial),濡傛灉琛ㄤ腑娌℃湁姝ゅ瓧娈佃鍔犱笂 [NotMapped]灞炴�э紝鍚﹀垯浼氬紓甯�
+    }
+}
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
index 6b483b0..b8473c3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
@@ -13,126 +13,119 @@
 
 namespace WIDESEA_Entity.DomainModels
 {
-    [Entity(TableCnName = "搴撲綅淇℃伅",TableName = "dt_stationinfo")]
-    public partial class dt_stationinfo:BaseEntity
+    [Entity(TableCnName = "搴撲綅淇℃伅", TableName = "dt_stationinfo")]
+    public partial class dt_stationinfo : BaseEntity
     {
         /// <summary>
-       ///
-       /// </summary>
-       [Display(Name ="id")]
-       [Column(TypeName="uniqueidentifier")]
-       [Editable(true)]
-       [Required(AllowEmptyStrings=false)]
-       public Guid id { get; set; }
+        ///
+        /// </summary>
+        [Key]
+        [Display(Name = "id")]
+        [Column(TypeName = "uniqueidentifier")]
+        //[Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public Guid id { get; set; }
 
-       /// <summary>
-       ///缂撳瓨鏋剁紪鍙�
-       /// </summary>
-       [Display(Name ="缂撳瓨鏋剁紪鍙�")]
-       [MaxLength(30)]
-       [Column(TypeName="nvarchar(30)")]
-       [Editable(true)]
-       public string stationCode { get; set; }
+        /// <summary>
+        ///缂撳瓨鏋剁紪鍙�
+        /// </summary>
+        [Display(Name = "缂撳瓨鏋剁紪鍙�")]
+        [MaxLength(30)]
+        [Column(TypeName = "nvarchar(30)")]
+        //[Editable(true)]
+        public string stationCode { get; set; }
 
-       /// <summary>
-       ///鐗╂枡绫诲瀷
-       /// </summary>
-       [Display(Name ="鐗╂枡绫诲瀷")]
-       [MaxLength(25)]
-       [Column(TypeName="nvarchar(25)")]
-       [Editable(true)]
-       public string stationType { get; set; }
+        /// <summary>
+        ///鐗╂枡绫诲瀷
+        /// </summary>
+        [Display(Name = "鐗╂枡绫诲瀷")]
+        [MaxLength(25)]
+        [Column(TypeName = "nvarchar(25)")]
+        //[Editable(true)]
+        public string? stationType { get; set; }
 
-       /// <summary>
-       ///鍖哄煙
-       /// </summary>
-       [Display(Name ="鍖哄煙")]
-       [MaxLength(15)]
-       [Column(TypeName="nvarchar(15)")]
-       [Editable(true)]
-       [Required(AllowEmptyStrings=false)]
-       public string area { get; set; }
+        /// <summary>
+        ///鍖哄煙
+        /// </summary>
+        [Display(Name = "鍖哄煙")]
+        [MaxLength(15)]
+        [Column(TypeName = "nvarchar(15)")]
+        //[Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public string area { get; set; }
 
-       /// <summary>
-       ///鏄惁鍚敤
-       /// </summary>
-       [Display(Name ="鏄惁鍚敤")]
-       [Column(TypeName="bit")]
-       [Editable(true)]
-       [Required(AllowEmptyStrings=false)]
-       public bool enable { get; set; }
+        /// <summary>
+        ///鏄惁鍚敤
+        /// </summary>
+        [Display(Name = "鏄惁鍚敤")]
+        [Column(TypeName = "bit")]
+        //[Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public bool enable { get; set; }
 
-       /// <summary>
-       ///璐т綅鐘舵��
-       /// </summary>
-       [Display(Name ="璐т綅鐘舵��")]
-       [MaxLength(255)]
-       [Column(TypeName="varchar(255)")]
-       [Editable(true)]
-       public string location_state { get; set; }
+        /// <summary>
+        ///璐т綅鐘舵��
+        /// </summary>
+        [Display(Name = "璐т綅鐘舵��")]
+        [MaxLength(255)]
+        [Column(TypeName = "varchar(255)")]
+        //[Editable(true)]
+        public string location_state { get; set; }
 
-       /// <summary>
-       ///鏈�鍚庣姸鎬佹敼鍙樻椂闂�
-       /// </summary>
-       [Display(Name ="鏈�鍚庣姸鎬佹敼鍙樻椂闂�")]
-       [Column(TypeName="datetime")]
-       [Editable(true)]
-       public DateTime? lastUpdateTime { get; set; }
+        /// <summary>
+        ///鏈�鍚庣姸鎬佹敼鍙樻椂闂�
+        /// </summary>
+        [Display(Name = "鏈�鍚庣姸鎬佹敼鍙樻椂闂�")]
+        [Column(TypeName = "datetime")]
+        //[Editable(true)]
+        public DateTime? lastUpdateTime { get; set; }
 
-       /// <summary>
-       ///杞﹁疆鏁伴噺
-       /// </summary>
-       [Display(Name ="杞﹁疆鏁伴噺")]
-       [Column(TypeName="int")]
-       public int? quantity { get; set; }
+        /// <summary>
+        ///杞﹁疆鏁伴噺
+        /// </summary>
+        [Display(Name = "杞﹁疆鏁伴噺")]
+        [Column(TypeName = "int")]
+        public int quantity { get; set; }
 
-       /// <summary>
-       ///杞﹁疆SN鍙�
-       /// </summary>
-       [Display(Name ="杞﹁疆SN鍙�")]
-       [MaxLength(500)]
-       [Column(TypeName="nvarchar(500)")]
-       public string bindSN { get; set; }
+        /// <summary>
+        ///杞﹁疆SN鍙�
+        /// </summary>
+        [Display(Name = "杞﹁疆SN鍙�")]
+        [MaxLength(500)]
+        [Column(TypeName = "nvarchar(500)")]
+        public string bindSN { get; set; }
 
-       /// <summary>
-       ///鎵樼洏鐘舵��
-       /// </summary>
-       [Display(Name ="鎵樼洏鐘舵��")]
-       [MaxLength(100)]
-       [Column(TypeName="nvarchar(100)")]
-       public string tray_status { get; set; }
+        /// <summary>
+        ///鎵樼洏鐘舵��
+        /// </summary>
+        [Display(Name = "鎵樼洏鐘舵��")]
+        [MaxLength(100)]
+        [Column(TypeName = "nvarchar(100)")]
+        public string tray_status { get; set; }
 
-       /// <summary>
-       ///澶囨敞
-       /// </summary>
-       [Display(Name ="澶囨敞")]
-       [MaxLength(100)]
-       [Column(TypeName="nvarchar(100)")]
-       [Editable(true)]
-       public string remark { get; set; }
+        /// <summary>
+        ///澶囨敞
+        /// </summary>
+        [Display(Name = "澶囨敞")]
+        [MaxLength(100)]
+        [Column(TypeName = "nvarchar(100)")]
+        //[Editable(true)]
+        public string remark { get; set; }
 
-       /// <summary>
-       ///涓婚敭
-       /// </summary>
-       [Key]
-       [Display(Name ="涓婚敭")]
-       [Column(TypeName="int")]
-       [Required(AllowEmptyStrings=false)]
-       public int zj { get; set; }
 
-       /// <summary>
-       ///琛�
-       /// </summary>
-       [Display(Name ="琛�")]
-       [Column(TypeName="int")]
-       public int? line { get; set; }
+        /// <summary>
+        ///琛�
+        /// </summary>
+        [Display(Name = "琛�")]
+        [Column(TypeName = "int")]
+        public int? line { get; set; }
 
-       /// <summary>
-       ///鍒�
-       /// </summary>
-       [Display(Name ="鍒�")]
-       [Column(TypeName="int")]
-       public int? column { get; set; }
+        /// <summary>
+        ///鍒�
+        /// </summary>
+        [Display(Name = "鍒�")]
+        [Column(TypeName = "int")]
+        public int? column { get; set; }
 
         /// <summary>
         ///宸ュ崟缂栧彿
@@ -140,7 +133,7 @@
         [Display(Name = "宸ュ崟缂栧彿")]
         [MaxLength(255)]
         [Column(TypeName = "nvarchar(255)")]
-        [Editable(true)]
+        //[Editable(true)]
         public string Number { get; set; }
 
         /// <summary>
@@ -148,7 +141,6 @@
         /// </summary>
         [Display(Name = "鐐夊彿")]
         [Column(TypeName = "int")]
-        [Required(AllowEmptyStrings = false)]
-        public int heatNumber { get; set; }
+        public int? heatNumber { get; set; }
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/ToMES/dt_mes_detail.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/ToMES/dt_mes_detail.cs"
index ca992eb..846d7c3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/ToMES/dt_mes_detail.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/ToMES/dt_mes_detail.cs"
@@ -28,7 +28,6 @@
         /// <summary>
         ///宸ュ崟澶磋〃ID
         /// </summary>
-        [Key]
         [Display(Name = "mes_headID")]
         [Column(TypeName = "uniqueidentifier")]
         [Required(AllowEmptyStrings = false)]
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfohead.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfohead.cs"
index 8013fcc..cdbb669 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfohead.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/DomainModels/WCS/dt_plcinfohead.cs"
@@ -95,7 +95,14 @@
         [Column(TypeName = "nvarchar(255)")]
         [Editable(true)]
         public string plcinfo_remark { get; set; }
-
+        /// <summary>
+        ///鍨嬪彿
+        /// </summary>
+        [Display(Name = "鍨嬪彿")]
+        [MaxLength(20)]
+        [Column(TypeName = "nvarchar(20)")]
+        [Editable(true)]
+        public string plcinfo_model { get; set; }
 
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/1/dt_patternMapConfig.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/1/dt_patternMapConfig.cs"
new file mode 100644
index 0000000..5bb1d84
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_Entity/MappingConfiguration/1/dt_patternMapConfig.cs"
@@ -0,0 +1,16 @@
+using WIDESEA_Entity.MappingConfiguration;
+using WIDESEA_Entity.DomainModels;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace WIDESEA_Entity.MappingConfiguration
+{
+    public class dt_patternMapConfig : EntityMappingConfiguration<dt_pattern>
+    {
+        public override void Map(EntityTypeBuilder<dt_pattern>
+        builderTable)
+        {
+          //b.Property(x => x.StorageName).HasMaxLength(45);
+        }
+     }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/AGVandGantry.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/AGVandGantry.cs"
index 635912b..3a12737 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/AGVandGantry.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/AGVandGantry.cs"
@@ -32,7 +32,7 @@
                 var Gantryplc = FreeDB.Select<dt_plcinfohead>().Where(x => x.plcinfo_name == Gantry_client.PLCName).First();
                 List<string> numbers = new List<string>() { "1鍗曞厓闃插憜", "2鍗曞厓闃插憜", "3鍗曞厓闃插憜", "涓婃枡鍖洪槻鍛�" };
                 var details = FreeDB.Select<dt_plcinfodetail>().Where(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == numbers[requestin.AreaNr - 1]).ToList();
-                if (MethodName == "AGVRequestin")
+                if (MethodName == "AGVRequestin")//璇锋眰杩涘叆鍖哄煙
                 {
                     Gantry_client.WriteByOrder("W_AreaNr", (Int16)requestin.AreaNr, numbers[requestin.AreaNr - 1]);//鍖哄煙鍙�
                     Gantry_client.WriteByOrder("W_AGV_Request_In", true, numbers[requestin.AreaNr - 1]);//鐢宠杩涘叆鍖哄煙
@@ -41,7 +41,7 @@
                     if (!Release) throw new Exception("妗佹灦鏈厑璁歌繘鍏ワ紒");
                     if (!Gantry_Out_of_Area) throw new Exception("妗佹灦鍦ㄥ尯鍩熷唴锛�");
                 }
-                else if (MethodName == "EnteriorLeav")
+                else if (MethodName == "EnteriorLeav")//杩涘叆绂诲紑鍖哄煙
                 {
                     Gantry_client.WriteByOrder("W_AreaNr", (Int16)requestin.AreaNr, numbers[requestin.AreaNr - 1]);//鍖哄煙鍙�
                     if (requestin.Type == 1)
@@ -57,12 +57,12 @@
                         if (Area_Occupied_by_AGV) throw new Exception("妗佹灦鏈弽棣圓GV绂诲紑淇″彿");
                     }
                 }
-                else if (MethodName == "AGVOutofArea")
+                else if (MethodName == "AGVOutofArea")//AGV涓嶅湪鍖哄煙鍐�
                 {
                     Gantry_client.WriteByOrder("W_AreaNr", (Int16)requestin.AreaNr, numbers[requestin.AreaNr - 1]);//鍖哄煙鍙�
                     Gantry_client.WriteByOrder("W_AGV_OUT_OF_Area", requestin.OUTOFArea == 1 ? true : false, numbers[requestin.AreaNr - 1]);//AGV涓嶅湪璇ュ尯鍩�
                 }
-                else if (MethodName == "GantryOutofArea")
+                else if (MethodName == "GantryOutofArea")//妗佹灦涓嶅湪鍖哄煙鍐�
                 {
                     var Gantry_Out_of_Area = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦涓嶅湪璇ュ尯鍩�
                     if (!Gantry_Out_of_Area) throw new Exception("妗佹灦鍦ㄥ尯鍩熷唴锛�");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
index 5dbcde3..84d6f6f 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Common/Gantry.cs"
@@ -4,10 +4,12 @@
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using WIDESEA_Comm;
 using WIDESEA_Core.EFDbContext;
 using WIDESEA_WCS.IRepositories;
 using WIDESEA_WCS.Repositories;
 using WIDESEA_WCS.WCSClient;
+using static System.Collections.Specialized.BitVector32;
 
 namespace WIDESEA_WCS
 {
@@ -17,9 +19,9 @@
         Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
         Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
         Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
-        /// <summary>
-        /// 鏌ヨ杞﹁疆鏁版嵁
-        /// </summary>
+        Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+
+        #region 鏌ヨ杞﹁疆鏁版嵁
         public void QueryWheeldata(PLCClient client)
         {
             try
@@ -30,21 +32,23 @@
                 {
                     var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList();
                     var on = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_oi_on").First(), client);
-                    if ((Int16)on == 1)
+                    if ((byte)on == 1)
                     {
                         var wp_type = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_o_wp_type").First(), client);
                         var geometry = dataRepository.FindFirst(x => x.TypeId == (Int32)wp_type);
                         if (geometry == null)
                         {
                             //DBExtension.Write(details.Where(x => x.plcdetail_name == "W_i_status").First(), client, (Int16)2);
-                            client.WriteByOrder("W_i_status", (Int16)2, name);//1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹�
-                            client.WriteByOrder("W_i_skip_op", "1", name);//灞忚斀宸ヨ壓(灞忚斀瑙嗚妫�娴�/灞忚斀娑傛补);
-                                                                          //0-浣跨敤锛�1-璺宠繃
-                            client.WriteByOrder("R_oi_on", (Int16)0, name);
+                            //1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹�
+                            client.WriteByOrder("W_i_status", (byte)2, name);
+                            //灞忚斀宸ヨ壓(灞忚斀瑙嗚妫�娴�/灞忚斀娑傛补);
+                            //client.WriteByOrder("W_i_skip_op", "1", name);
+                            client.WriteByOrder("R_oi_on", (byte)0, name);
                         }
                         else
                         {
-                            client.WriteByOrder("W_i_status", (Int16)1, name);
+                            //1-鎵惧埌鏁版嵁锛�2-鏈壘鍒板伐浠剁被鍨嬫暟鎹�
+                            client.WriteByOrder("W_i_status", (byte)1, name);
                             client.WriteByOrder("W_i_parameter_a", (float)geometry.a, name);
                             client.WriteByOrder("W_i_parameter_b", (float)geometry.b, name);
                             client.WriteByOrder("W_i_parameter_c", (float)geometry.c, name);
@@ -54,8 +58,13 @@
                             client.WriteByOrder("W_i_parameter_g", (float)geometry.g, name);
                             client.WriteByOrder("W_i_parameter_h", (float)geometry.h, name);
                             //灞忚斀宸ヨ壓(灞忚斀瑙嗚妫�娴�/灞忚斀娑傛补)
-                            client.WriteByOrder("W_i_skip_op", "0", name);//瀛楃涓插啓鍏�-2
-                            client.WriteByOrder("R_oi_on", (Int16)0, name);
+                            if (name != "杈婇亾涓婃枡鏌ヨ杞﹁疆")
+                            {
+                                client.WriteByOrder("W_i_skip_op_SJ1", (byte)1, name);//灞忚斀瑙嗚妫�娴嬭澶�1
+                                client.WriteByOrder("W_i_skip_op_SJ2", (byte)1, name);//灞忚斀瑙嗚妫�娴嬭澶�2
+                                client.WriteByOrder("W_i_skip_op_LT", (byte)1, name);//灞忚斀閾炬潯鏈�
+                            }
+                            client.WriteByOrder("R_oi_on", (byte)0, name);
                         }
                     }
                 }
@@ -65,9 +74,9 @@
                 throw;
             }
         }
-        /// <summary>
-        /// 鏌ヨ璁㈠崟,鏄惁闇�瑕佸姞宸�
-        /// </summary>
+        #endregion
+
+        #region 鏌ヨ璁㈠崟,鏄惁闇�瑕佸姞宸�
         public void QueryOrder(PLCClient client)
         {
             try
@@ -78,20 +87,23 @@
                 {
                     var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList();
                     var on = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_oi_on").First(), client);
-                    if ((Int16)on == 1)
+                    if ((byte)on == 1)
                     {
                         var wp_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_o_wp_id").First(), client);
-                        //闇�娣诲姞鏌ヨ杞﹁疆SN鍙疯鍗曢�昏緫
+                        //闇�娣诲姞鏌ヨ杞﹁疆SN鍙疯鍗曢�昏緫   闇�娣诲姞鍏ュ簱妯″紡鍒ゆ柇锛屾墜鍔ㄥ叆搴撴ā寮忛渶浜哄伐娣诲姞鍏ュ簱搴撳尯锛屽惁鍒欐姤璀�
+
 
                         var wp_type = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_o_wp_type").First(), client);
                         var geometry = dataRepository.FindFirst(x => x.TypeId == (Int32)wp_type);
                         if (geometry == null)
                         {
-                            client.WriteByOrder("W_i_status", (Int16)2, name);//1-濂�,鍏佽鍔犲伐锛�2-涓嶅湪鍒楄〃涓紝3-涓嶅姞宸ヨ溅杞被鍨�
+                            //1-濂�,鍏佽鍔犲伐锛�2-涓嶅湪鍒楄〃涓紝3-涓嶅姞宸ヨ溅杞被鍨嬶紝4-鎵嬪姩鍏ュ簱妯″紡浜哄伐鏈�夋嫨搴撳尯
+                            client.WriteByOrder("W_i_status", (Int16)2, name);
                             client.WriteByOrder("R_oi_on", (Int16)0, name);
                         }
                         else
                         {
+                            //1-濂�,鍏佽鍔犲伐锛�2-涓嶅湪鍒楄〃涓紝3-涓嶅姞宸ヨ溅杞被鍨嬶紝4-鎵嬪姩鍏ュ簱妯″紡浜哄伐鏈�夋嫨搴撳尯
                             client.WriteByOrder("W_i_status", (Int16)1, name);
                             //client.WriteByOrder("W_i_job_id", "", name);
                             //client.WriteByOrder("W_i_drawing_id", "", name);
@@ -108,35 +120,64 @@
                 throw;
             }
         }
-        /// <summary>
-        /// 涓嬫枡浣嶄氦浜�
-        /// </summary>
+        #endregion
+
+        #region 涓嬫枡浣嶄氦浜�
         public void Layofflevel(PLCClient client)
         {
             try
             {
                 var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
-                List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�", "涓婃枡鍖�" };
+                var Pipeline_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "閾炬潯鏈�");
+                if (Pipeline_client == null) throw new Exception("閾炬潯鏈鸿皟搴︽湇鍔℃湭寮�鍚紒");
+                if (!Pipeline_client.IsConnected) throw new Exception("涓庨摼鏉℃満杩炴帴瓒呮椂锛�");
+                var Pipelineplc = repository.FindFirst(x => x.plcinfo_name == Pipeline_client.PLCName);
+                List<string> names = new List<string>() { "1鍗曞厓涓嬫枡鍖�", "2鍗曞厓涓嬫枡鍖�", "3鍗曞厓涓嬫枡鍖�" };
                 foreach (string name in names)
                 {
                     var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList();
 
                     var Request = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Request_Load").First(), client);
                     if (!Request) continue;
-                    var PartStatus = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok
+
+                    List<string> StationCodes = new List<string>() { "X01001001", "X01001002", "X01001003" };
+                    if (name == "2鍗曞厓涓嬫枡鍖�")
+                        StationCodes = new List<string>() { "X02001001", "X02001002", "X02001003" };
+                    if (name == "3鍗曞厓涓嬫枡鍖�")
+                        StationCodes = new List<string>() { "X03001001", "X03001002" };
                     var Wheel_Type = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_Type").First(), client);//杞﹁疆绫诲瀷
                     var Wheel_id = DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Wheel_id").First(), client).ToString();//杞﹁疆SN鍙�
-
-
-                    client.WriteByOrder("W_AreaNr", (Int16)1, name);//鍖哄煙璐т綅鍙�
-                    client.WriteByOrder("W_IndexNr", (Int16)1, name);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                    client.WriteByOrder("W_Storage_Type", true, name);//鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                    client.WriteByOrder("W_Enabl_Load", true, name);//鏄惁鍏佽
-
+                    for (int i = 0; i < StationCodes.Count - 1; i++)
+                    {
+                        var PartStatus = (Int32)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PartStatus").First(), client);//1:ok;2:nok
+                        string NG = StationCodes[StationCodes.Count - 1];//NG璐т綅
+                        var station = stationinfoRepository.FindFirst(x => x.stationCode == StationCodes[i] && x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity < 5);
+                        if (station == null) continue;
+                        var Pipelinedetails = plcRepository.Find(x => x.plcdetail_iotype == Pipelineplc.plcinfo_iotyep && x.plcdetail_number == StationCodes[i]).ToList();
+                        var PalletSignal = (Int16)DBExtension.Read(Pipelinedetails.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+                        if (PalletSignal == 1)
+                        {
+                            if (PartStatus == 1 && NG != station.stationCode)
+                            {
+                                client.WriteByOrder("W_AreaNr", (Int16)i + 1, name);//鍖哄煙璐т綅鍙�
+                                client.WriteByOrder("W_IndexNr", (Int16)station.quantity + 1, name);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                            }
+                            else if (PartStatus == 2 && NG == station.stationCode)
+                            {
+                                client.WriteByOrder("W_AreaNr", (Int16)i + 1, name);//鍖哄煙璐т綅鍙�
+                                client.WriteByOrder("W_IndexNr", (Int16)station.quantity + 1, name);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                            }
+                            client.WriteByOrder("W_Storage_Type", (Int16)1, name);//鎵樼洏绫诲瀷1-妯斁;2-绔栨斁(鏆傛椂鍙湁妯斁鎵樼洏)
+                            client.WriteByOrder("W_Enabl_Load", true, name);//鏄惁鍏佽
+                        }
+                    }
                     var finished = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_load_finished").First(), client);//鏀炬枡瀹屾垚
                     if (finished)
                     {
-
+                        var AreaNr = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "W_AreaNr").First(), client);
+                        var station = stationinfoRepository.FindFirst(x => x.stationCode == StationCodes[AreaNr - 1]);
+                        station.quantity = station.quantity++;
+                        stationinfoRepository.Update(station);
                         client.WriteByOrder("W_Storage_update", true, name);//璐т綅鐘舵�佹洿鏂�
                     }
                 }
@@ -146,30 +187,6 @@
                 throw;
             }
         }
-        /// <summary>
-        /// 闃插憜鎺柦
-        /// </summary>
-        static bool Gantry_Out_of_Area1;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
-        static bool Gantry_Out_of_Area2;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
-        static bool Gantry_Out_of_Area3;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
-        static bool Gantry_Out_of_Area4;//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
-        public void Stupidproofmeasure(PLCClient client)
-        {
-            try
-            {
-                var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
-                List<string> names = new List<string>() { "1鍗曞厓闃插憜", "2鍗曞厓闃插憜", "3鍗曞厓闃插憜", "涓婃枡鍖洪槻鍛�" };
-                foreach (string name in names)
-                {
-                    var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList();
-                    var Release_In = (bool)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_Release_In").First(), client);//鍏佽杩涘叆
-                    if (!Release_In) { }
-                }
-            }
-            catch (Exception ex)
-            {
-                throw;
-            }
-        }
+        #endregion
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_patternRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_patternRepository.cs"
new file mode 100644
index 0000000..77cee71
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IRepositories/WCS/Idt_patternRepository.cs"
@@ -0,0 +1,18 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶笽dt_patternRepository缂栧啓鎺ュ彛
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Extensions.AutofacManager;
+namespace WIDESEA_WCS.IRepositories
+{
+    public partial interface Idt_patternRepository : IDependency,IRepository<dt_pattern>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_patternService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_patternService.cs"
new file mode 100644
index 0000000..c07182a
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Idt_patternService.cs"
@@ -0,0 +1,12 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ */
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_patternService : IService<dt_pattern>
+    {
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_patternService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_patternService.cs"
new file mode 100644
index 0000000..48212f4
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/IServices/WCS/Partial/Idt_patternService.cs"
@@ -0,0 +1,15 @@
+/*
+*鎵�鏈夊叧浜巇t_pattern绫荤殑涓氬姟浠g爜鎺ュ彛搴斿湪姝ゅ缂栧啓
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+namespace WIDESEA_WCS.IServices
+{
+    public partial interface Idt_patternService
+    {
+       public WebResponseContent UpdateAuto(string v);
+       public WebResponseContent UpdateManual(string v);
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs"
index caf9bf8..db146c8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/JobBase.cs"
@@ -67,11 +67,11 @@
             }
             catch (Exception ex)
             {
-                jobHistory += $",銆愭墽琛屽け璐�:{ex.Message}銆�";
+                jobHistory += $",銆愭墽琛屽け璐�:{ex.Message}銆�+";
             }
             finally
             {
-                taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds,3);
+                taskSeconds = Math.Round(stopwatch.Elapsed.TotalSeconds, 3);
                 jobHistory += $"(鑰楁椂:{taskSeconds}绉�)";
                 if (taskSeconds > 1 || jobHistory.Contains("鎵ц澶辫触"))
                     WriteLog.Info(jobid + "鎵ц璁板綍").Write(jobHistory, jobid + "鎵ц璁板綍");
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
index c1e35dd..cc62517 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/Task/AutoTaskJob.cs"
@@ -22,7 +22,7 @@
         {
             try
             {
-                //ExecuteJob(context, DoAction);
+                ExecuteJob(context, DoAction);
             }
             catch { }
             return Task.CompletedTask;
@@ -32,7 +32,7 @@
         {
             //throw new NotImplementedException();
             //Creation.HCJCreation();
-            Creation.PLCinfodetail();
+            //Creation.PLCinfodetail();
 
         }
     }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/GantryJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/GantryJob.cs"
index 71a8d36..51d5974 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/GantryJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/GantryJob.cs"
@@ -45,117 +45,6 @@
             gantry.QueryWheeldata(client);
             gantry.QueryOrder(client);
             gantry.Layofflevel(client);
-            gantry.Stupidproofmeasure(client);
-        }
-
-        #region
-        static List<MachineDB> MachineDBs = new List<MachineDB>();
-        static List<WheelDataDB> wheelDataDBs = new List<WheelDataDB>();
-        private void DoAction(PLCClient client)
-        {
-            try
-            {
-                VOLContext Context = new VOLContext();
-                Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
-                Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
-
-                var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
-                var numbers = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep).GroupBy(x => x.plcdetail_number).ToList();
-                foreach (var number in numbers)
-                {
-                    if (number.Key.Contains("杈婇亾涓嬫枡"))
-                    {
-                        PropertyInfo[] propertyInfos = typeof(WheelDataDB).GetProperties();//鑾峰彇鎵�鏈夊睘鎬�
-                        WheelDataDB dBItem = wheelDataDBs.Where(x => x.R_Name == number.Key).FirstOrDefault();
-                        if (dBItem == null)
-                        {
-                            dBItem = new();
-                            dBItem.OnReadSignal += HandleReadSignal;
-                            wheelDataDBs.Add(dBItem);
-                        }
-                        List<dt_plcinfodetail> details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == number.Key).ToList();
-                        for (int i = 0; i < propertyInfos.Length; i++)
-                        {
-                            if (i == 0)
-                            {
-                                dBItem.R_Name = number.Key;
-                            }
-                            else
-                            {
-                                object readData = DBExtension.Read(details.Where(x => x.plcdetail_name == propertyInfos[i].Name).FirstOrDefault(), client);
-                                if (readData != null) { }
-                                object obj = propertyInfos[i].GetValue(dBItem);
-                                if (obj != readData)
-                                    propertyInfos[i].SetValue(dBItem, readData);
-                            }
-                        }
-                    }
-                    else
-                    {
-
-                        PropertyInfo[] propertyInfos = typeof(MachineDB).GetProperties();//鑾峰彇鎵�鏈夊睘鎬�
-                        MachineDB dBItem = MachineDBs.Where(x => x.R_Name == number.Key).FirstOrDefault();
-                        if (dBItem == null)
-                        {
-                            dBItem = new();
-                            dBItem.OnReadSignal += HandleReadSignal;
-                            MachineDBs.Add(dBItem);
-                        }
-                        List<dt_plcinfodetail> details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == number.Key).ToList();
-                        for (int i = 0; i < propertyInfos.Length; i++)
-                        {
-                            if (i == 0)
-                            {
-                                dBItem.R_Name = number.Key;
-                            }
-                            else
-                            {
-                                object readData = DBExtension.Read(details.Where(x => x.plcdetail_name == propertyInfos[i].Name).FirstOrDefault(), client);
-                                if (readData != null) { }
-                                object obj = propertyInfos[i].GetValue(dBItem);
-                                if (obj != readData)
-                                    propertyInfos[i].SetValue(dBItem, readData);
-                            }
-                        }
-                    }
-                }
-            }
-            catch (Exception ex)
-            {
-
-                throw;
-            }
-        }
-        #endregion
-        public void HandleReadSignal(string type, MachineDB DBItem)
-        {
-            switch (type)
-            {
-                case OperationType.OperationType_Record:
-
-                    break;
-                case OperationType.OperationType_Processor:
-
-                    break;
-                case OperationType.OperationType_WheelData:
-
-                    break;
-            }
-        }
-        public void HandleReadSignal(string type, WheelDataDB DBItem)
-        {
-            switch (type)
-            {
-                case OperationType.OperationType_Record:
-
-                    break;
-                case OperationType.OperationType_Processor:
-
-                    break;
-                case OperationType.OperationType_WheelData:
-
-                    break;
-            }
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
index 4d94346..e953d35 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Jobs/equipment/PipelineJob.cs"
@@ -1,12 +1,19 @@
-锘縰sing Quartz;
+锘縰sing HslCommunication;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using Quartz;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using System.Xml.Linq;
 using WIDESEA_Comm;
+using WIDESEA_Comm.LogInfo;
 using WIDESEA_Core.BaseProvider;
 using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Extensions;
 using WIDESEA_Core.FreeDB;
 using WIDESEA_WCS.IRepositories;
 using WIDESEA_WCS.Jobs;
@@ -63,59 +70,99 @@
         /// <param name="client"></param>
         private void Loadinglevel(PLCClient client, string number = "涓婃枡鍖�")
         {
-            VOLContext Context = new VOLContext();
-            Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
-            Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
-            Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
-            Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
-            var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
-            var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "妗佹灦");
-            if (!Gantry_client.IsConnected) return;
-            var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName);
-            List<string> names = new List<string>() { "S01001001", "S01001002" };
-            foreach (string name in names)
+            try
             {
-                var station = stationinfoRepository.FindFirst(x => x.stationCode == name && x.enable && x.location_state == LocationStateEnum.Stroge.ToString());
-                if (station == null)
-                {
-                    Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
-                    continue;
-                }
-                var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == name).ToList();
-                var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
-                var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
-                if (PalletSignal == 1 && MaterialSignal == 1)
-                {
-                    Gantry_client.WriteByOrder("W_AreaNr", (Int16)1, number);//鍖哄煙璐т綅鍙�
-                    Gantry_client.WriteByOrder("W_IndexNr", (Int16)1, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
-                    Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
-                    Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)1, number);//杞﹁疆绫诲瀷
-                    Gantry_client.WriteByOrder("W_Wheel_id", "", number);//杞﹁疆SN鍙�
-                    Gantry_client.WriteByOrder("W_RequestUnload", true, number);
-                }
-                else
-                {
-                    Gantry_client.WriteByOrder("W_RequestUnload", false, number);
-                }
-                var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
-                var Gantry_Out_of_Area = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
+                VOLContext Context = new VOLContext();
+                Idt_plcinfoheadRepository repository = new dt_plcinfoheadRepository(Context);
+                Idt_plcinfodetailRepository plcRepository = new dt_plcinfodetailRepository(Context);
+                Idt_geometry_dataRepository dataRepository = new dt_geometry_dataRepository(Context);
+                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
+                var plc = repository.FindFirst(x => x.plcinfo_name == client.PLCName);
+                var Gantry_client = PLCClient.Clients.FirstOrDefault(t => t.PLCName == "妗佹灦");
+                if (Gantry_client == null) throw new Exception("妗佹灦璋冨害鏈嶅姟鏈紑鍚紒");
+                if (!Gantry_client.IsConnected) throw new Exception("涓庢鏋惰繛鎺ヨ秴鏃讹紒");
+                var Gantryplc = repository.FindFirst(x => x.plcinfo_name == Gantry_client.PLCName);
 
-                var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
-                if (QueryDate)
+
+                ///鏌ユ壘涓婃枡鍖虹殑璐т綅
+                var Stations = stationinfoRepository.Find(x => x.area == "6");
+                //缂撳瓨鏋舵湭鍚敤绂佹妗佹灦杩涘叆
+                foreach (var station in Stations)
                 {
-                    var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
-                    if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
+                    if (!station.enable)
+                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                }
+
+                var Station = Stations?.Where(x => x.enable && x.location_state == LocationStateEnum.Stroge.ToString() && x.quantity > 0).OrderBy(x => x.quantity).First();
+                if (Station != null)
+                {
+                    var SNS = Station.bindSN.Split(",");
+                    //缂撳瓨鏋朵笂杞﹁疆鏁伴噺涓嶴N鍙锋暟閲忎笉涓�鑷�
+                    if (SNS.Length != Station.quantity)
                     {
+                        Station.location_state = LocationStateEnum.Abnormal.ToString();
+                        stationinfoRepository.Update(Station, true);
+                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                        throw new Exception("涓婃枡浣嶈溅杞暟閲忎笌SN鍙锋暟閲忎笉涓�鑷达紝涓婃枡浣嶇紪鍙凤細" + Station.stationCode);
+                    }
+                    var details = plcRepository.Find(x => x.plcdetail_iotype == plc.plcinfo_iotyep && x.plcdetail_number == Station.stationCode).ToList();
+                    var PalletSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_PalletSignal").First(), client);//璇诲彇鎵樼洏淇″彿:1:鏈�,2鏃�
+                    var MaterialSignal = (Int16)DBExtension.Read(details.Where(x => x.plcdetail_name == "R_MaterialSignal").First(), client);//璇诲彇璐х墿淇″彿:1:鏈�,2鏃�
+                    if (PalletSignal == 1 && MaterialSignal == 1)
+                    {
+                        var area = Convert.ToInt16(Station.stationCode.Substring(Station.stationCode.Length - 1, 1));
+                        Gantry_client.WriteByOrder("W_AreaNr", (Int16)area, number);//鍖哄煙璐т綅鍙�
+                        Gantry_client.WriteByOrder("W_IndexNr", (Int16)SNS.Length, number);//鎵樼洏涓婄殑绗嚑涓溅杞�
+                        Gantry_client.WriteByOrder("W_Storage_Type", (Int16)1, number); //鎵樼洏绫诲瀷1-妯斁;2-绔栨斁
+                        Gantry_client.WriteByOrder("W_Wheel_Type", (Int16)Convert.ToInt16(Station.stationType), number);//杞﹁疆绫诲瀷
+                        Gantry_client.WriteByOrder("W_Wheel_id", SNS[SNS.Length - 1], number);//杞﹁疆SN鍙�
+                        Gantry_client.WriteByOrder("W_RequestUnload", true, number);
+                    }
+                    else
+                    {
+                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);
+                    }
 
+                    var Gantrydetails = plcRepository.Find(x => x.plcdetail_iotype == Gantryplc.plcinfo_iotyep && x.plcdetail_number == number).ToList();
+                    var Gantry_Out_of_Area = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Gantry_Out_of_Area").First(), Gantry_client);//妗佹灦鏄惁鍦ㄥ尯鍩熷唴
+
+                    var QueryDate = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_QueryDate").First(), Gantry_client);//淇℃伅鏌ヨ
+                    if (QueryDate)
+                    {
+                        var Date_Vaild = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Date_Vaild").First(), Gantry_client);//淇℃伅纭
+                        if (!Date_Vaild)//淇℃伅鏈夎锛岃褰曟棩蹇�
+                        {
+                            Station.location_state = LocationStateEnum.Abnormal.ToString();
+                            stationinfoRepository.Update(Station, true);
+                            Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
+                            throw new Exception($"鏈煡璇㈠埌SN鍙凤細{SNS[SNS.Length - 1]}鐨勮鍗曪紝涓婃枡浣嶇紪鍙凤細{Station.stationCode}");
+                        }
+                    }
+                    var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
+                    if (finished)
+                    {
+                        Station.quantity = Station.quantity - 1;
+                        Station.bindSN = OperStr(SNS);
+                        var count = stationinfoRepository.Update(Station, true);
+                        if (count < 1)
+                            throw new Exception($"涓婃枡浣嶄俊鎭洿鏂板け璐ワ紒涓婃枡浣嶇紪鍙凤細{Station.stationCode}");
+                        Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
+                        Gantry_client.WriteByOrder("W_RequestUnload", false, number);//淇″彿涓篺alse妗佹灦鍋滄杩涘叆
                     }
                 }
-                var finished = (bool)DBExtension.Read(Gantrydetails.Where(x => x.plcdetail_name == "R_Unlod_finished").First(), Gantry_client);//澶瑰彇瀹屾垚
-                if (finished)
-                {
-
-                    Gantry_client.WriteByOrder("W_Storage_update", true, number);//璐т綅鐘舵�佹洿鏂�
-                }
             }
+            catch (Exception ex)
+            {
+                //WritePCSLog.LogAdd(requestin.AreaNr.ToString(), respone.success == 1 ? "鎴愬姛 " : "澶辫触", "WMS", "AGV", json, JsonConvert.SerializeObject(respone), remark, "妫�娴嬬嚎涓婃枡鍖�", ex.Message);
+            }
+        }
+
+        private string OperStr(string[] strArrty)
+        {
+            string[] newstr = strArrty.RemoveLast(1);
+            string Newsn = string.Join(",", newstr);
+
+            return Newsn;
         }
     }
 }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_patternRepository.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_patternRepository.cs"
new file mode 100644
index 0000000..01a3ff5
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Repositories/WCS/dt_patternRepository.cs"
@@ -0,0 +1,24 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *Repository鎻愪緵鏁版嵁搴撴搷浣滐紝濡傛灉瑕佸鍔犳暟鎹簱鎿嶄綔璇峰湪褰撳墠鐩綍涓婸artial鏂囦欢澶筪t_patternRepository缂栧啓浠g爜
+ */
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.EFDbContext;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.Repositories
+{
+    public partial class dt_patternRepository : RepositoryBase<dt_pattern> , Idt_patternRepository
+    {
+    public dt_patternRepository(VOLContext dbContext)
+    : base(dbContext)
+    {
+
+    }
+    public static Idt_patternRepository Instance
+    {
+      get {  return AutofacContainerModule.GetService<Idt_patternRepository>(); } }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
index 9322093..3c54118 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/VV_DispatchService.cs"
@@ -149,7 +149,7 @@
                     PLCClient client = null;
                     if (plc.plcinfo_type == "Simene")
                     {
-                        client = new SiemensPLCClient()
+                        client = new SiemensPLCClient(plc.plcinfo_model)
                         {
                             PLCName = plc.plcinfo_name,
                             Ip = plc.plcinfo_ip,
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_patternService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_patternService.cs"
new file mode 100644
index 0000000..c9977db
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/Partial/dt_patternService.cs"
@@ -0,0 +1,67 @@
+/*
+ *鎵�鏈夊叧浜巇t_pattern绫荤殑涓氬姟浠g爜搴斿湪姝ゅ缂栧啓
+*鍙娇鐢╮epository.璋冪敤甯哥敤鏂规硶锛岃幏鍙朎F/Dapper绛変俊鎭�
+*濡傛灉闇�瑕佷簨鍔¤浣跨敤repository.DbContextBeginTransaction
+*涔熷彲浣跨敤DBServerProvider.鎵嬪姩鑾峰彇鏁版嵁搴撶浉鍏充俊鎭�
+*鐢ㄦ埛淇℃伅銆佹潈闄愩�佽鑹茬瓑浣跨敤UserContext.Current鎿嶄綔
+*dt_patternService瀵瑰銆佸垹銆佹敼鏌ャ�佸鍏ャ�佸鍑恒�佸鏍镐笟鍔′唬鐮佹墿灞曞弬鐓erviceFunFilter
+*/
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+using System.Linq;
+using WIDESEA_Core.Utilities;
+using System.Linq.Expressions;
+using WIDESEA_Core.Extensions;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_WCS.IRepositories;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Newtonsoft.Json;
+
+namespace WIDESEA_WCS.Services
+{
+    public partial class dt_patternService
+    {
+        private readonly IHttpContextAccessor _httpContextAccessor;
+        private readonly Idt_patternRepository _repository;//璁块棶鏁版嵁搴�
+
+        [ActivatorUtilitiesConstructor]
+        public dt_patternService(
+            Idt_patternRepository dbRepository,
+            IHttpContextAccessor httpContextAccessor
+            )
+        : base(dbRepository)
+        {
+            _httpContextAccessor = httpContextAccessor;
+            _repository = dbRepository;
+            //澶氱鎴蜂細鐢ㄥ埌杩檌nit浠g爜锛屽叾浠栨儏鍐靛彲浠ヤ笉鐢�
+            //base.Init(dbRepository);
+        }
+        public WebResponseContent UpdateAuto(string v)
+        {
+            WebResponseContent content = new WebResponseContent();
+            var model = JsonConvert.DeserializeObject<dt_pattern>(v);
+            model.pattern_state = 1;
+            var cont = _repository.Update(model, true);
+            if (cont > 0)
+                content.OK(model.pattern_name + "璁剧疆涓鸿嚜鍔ㄥ叆搴撴垚鍔燂紒");
+            else
+                content.Error(model.pattern_name + "璁剧疆涓鸿嚜鍔ㄥ叆搴撳け璐ワ紒");
+            return content;
+        }
+        public WebResponseContent UpdateManual(string v)
+        {
+            WebResponseContent content = new WebResponseContent();
+            var model = JsonConvert.DeserializeObject<dt_pattern>(v);
+            model.pattern_state = 0;
+            var cont = _repository.Update(model, true);
+            if (cont > 0)
+                content.OK(model.pattern_name + "璁剧疆涓烘墜鍔ㄥ叆搴撴垚鍔燂紒");
+            else
+                content.Error(model.pattern_name + "璁剧疆涓烘墜鍔ㄥ叆搴撳け璐ワ紒");
+            return content;
+        }
+  }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_patternService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_patternService.cs"
new file mode 100644
index 0000000..525578d
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/Services/WCS/dt_patternService.cs"
@@ -0,0 +1,27 @@
+/*
+ *Author锛歫xx
+ *Contact锛�283591387@qq.com
+ *浠g爜鐢辨鏋剁敓鎴�,姝ゅ浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *鎵�鏈変笟鍔$紪鍐欏叏閮ㄥ簲鍦≒artial鏂囦欢澶逛笅dt_patternService涓嶪dt_patternService涓紪鍐�
+ */
+using WIDESEA_WCS.IRepositories;
+using WIDESEA_WCS.IServices;
+using WIDESEA_Core.BaseProvider;
+using WIDESEA_Core.Extensions.AutofacManager;
+using WIDESEA_Entity.DomainModels;
+
+namespace WIDESEA_WCS.Services
+{
+    public partial class dt_patternService : ServiceBase<dt_pattern, Idt_patternRepository>
+    , Idt_patternService, IDependency
+    {
+    public dt_patternService(Idt_patternRepository repository)
+    : base(repository)
+    {
+    Init(repository);
+    }
+    public static Idt_patternService Instance
+    {
+      get { return AutofacContainerModule.GetService<Idt_patternService>(); } }
+    }
+ }
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/ToAGV/ToAGVServer.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/ToAGV/ToAGVServer.cs"
index 41d31c1..ffc2571 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/ToAGV/ToAGVServer.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/ToAGV/ToAGVServer.cs"
@@ -19,7 +19,6 @@
 {
     public partial class ToAGVServer
     {
-        FreeDB freeDB = new FreeDB();
         static AGVRespone respone = new AGVRespone();
         static AGVRequestin requestin = new AGVRequestin();
         /// <summary>
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
index 8922db1..2471725 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WCS/WCSClient/Siemens/SiemensPLCClient.cs"
@@ -14,9 +14,12 @@
         private readonly object _lockWrite = new object();
         public SiemensS7Net siemensPLCClient { get; set; }
 
-        public SiemensPLCClient()
+        public SiemensPLCClient(string model)
         {
-            siemensPLCClient = new SiemensS7Net(SiemensPLCS.S1200);
+            if (model == "S300")
+                siemensPLCClient = new SiemensS7Net(SiemensPLCS.S300);
+            else
+                siemensPLCClient = new SiemensS7Net(SiemensPLCS.S1500);
             base.siemensPLCClient = this.siemensPLCClient;
         }
 
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_patternController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_patternController.cs"
new file mode 100644
index 0000000..60e5c8e
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/Partial/dt_patternController.cs"
@@ -0,0 +1,54 @@
+/*
+ *鎺ュ彛缂栧啓澶�...
+*濡傛灉鎺ュ彛闇�瑕佸仛Action鐨勬潈闄愰獙璇侊紝璇峰湪Action涓婁娇鐢ㄥ睘鎬�
+*濡�: [ApiActionPermission("dt_pattern",Enums.ActionPermissionOptions.Search)]
+ */
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using WIDESEA_Entity.DomainModels;
+using WIDESEA_WCS.IServices;
+using Microsoft.AspNetCore.Authorization;
+using Newtonsoft.Json;
+using WIDESEA_Core.Utilities;
+
+namespace WIDESEA_WCS.Controllers
+{
+    public partial class dt_patternController
+    {
+        private readonly Idt_patternService _service;//璁块棶涓氬姟浠g爜
+        private readonly IHttpContextAccessor _httpContextAccessor;
+
+        [ActivatorUtilitiesConstructor]
+        public dt_patternController(
+            Idt_patternService service,
+            IHttpContextAccessor httpContextAccessor
+        )
+        : base(service)
+        {
+            _service = service;
+            _httpContextAccessor = httpContextAccessor;
+        }
+        /// <summary>
+        /// 鍏ュ簱妯″紡璁句负鑷姩
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, Route("UpdateAuto"), AllowAnonymous]
+        public WebResponseContent UpdateAuto([FromBody] object saveModel)
+        {
+            return _service.UpdateAuto(JsonConvert.SerializeObject(saveModel));
+        }
+        /// <summary>
+        /// 鍏ュ簱妯″紡璁句负鎵嬪姩
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost, Route("UpdateManual"), AllowAnonymous]
+        public WebResponseContent UpdateManual([FromBody] object saveModel)
+        {
+            return _service.UpdateManual(JsonConvert.SerializeObject(saveModel));
+        }
+    }
+}
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_patternController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_patternController.cs"
new file mode 100644
index 0000000..1144ad0
--- /dev/null
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/PCS/WCS_Server/WIDESEA_WebApi/Controllers/WIDESEA_WCS/dt_patternController.cs"
@@ -0,0 +1,21 @@
+/*
+ *浠g爜鐢辨鏋剁敓鎴�,浠讳綍鏇存敼閮藉彲鑳藉鑷磋浠g爜鐢熸垚鍣ㄨ鐩�
+ *濡傛灉瑕佸鍔犳柟娉曡鍦ㄥ綋鍓嶇洰褰曚笅Partial鏂囦欢澶筪t_patternController缂栧啓
+ */
+using Microsoft.AspNetCore.Mvc;
+using WIDESEA_Core.Controllers.Basic;
+using WIDESEA_Entity.AttributeManager;
+using WIDESEA_WCS.IServices;
+namespace WIDESEA_WCS.Controllers
+{
+    [Route("api/dt_pattern")]
+    [PermissionTable(Name = "dt_pattern")]
+    public partial class dt_patternController : ApiBaseController<Idt_patternService>
+    {
+        public dt_patternController(Idt_patternService service)
+        : base(service)
+        {
+        }
+    }
+}
+
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue"
index f495eaa..357cbb5 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Client/src/views/Task/widesea_wms/taskinfo/dt_agvtask.vue"
@@ -42,26 +42,26 @@
                        {field:'agv_tasknum',title:'浠诲姟缂栧彿',type:'string',sort:true,width:110,require:true,align:'left',sort:true},
                        {field:'agv_fromaddress',title:'璧风偣鍦板潃',type:'string',width:110,align:'left'},
                        {field:'agv_toaddress',title:'缁堢偣鍦板潃',type:'string',width:110,align:'left'},
-                       {field:'agv_code',title:'AGV缂栧彿',type:'string',bind:{ key:'agv_code',data:[]},width:110,require:true,align:'left'},
+                    //    {field:'agv_code',title:'AGV缂栧彿',type:'string',bind:{ key:'agv_code',data:[]},width:110,require:true,align:'left'},
                        {field:'agv_taskstate',title:'浠诲姟鐘舵��',type:'string',bind:{ key:'Taskstates',data:[]},width:110,require:true,align:'left'},
-                       {field:'agv_worktype',title:'AGV宸ヤ綔绫诲瀷',type:'int',width:110,align:'left'},
+                    //    {field:'agv_worktype',title:'AGV宸ヤ綔绫诲瀷',type:'int',width:110,align:'left'},
                        {field:'agv_materielid',title:'鐗╂枡绫诲瀷',type:'string',width:110,require:true,align:'left'},
                        {field:'bindSN',title:'杞﹁疆SN鍙�',type:'string',width:110,align:'left'},
                        {field:'agv_qty',title:'鏁伴噺',type:'int',width:110,require:true,align:'left'},
+                    //    {field:'agv_finishedtime',title:'瀹屾垚鏃堕棿',type:'datetime',width:150,align:'left',sort:true},
+                       {field:'agv_tasktype',title:'浠诲姟绫诲瀷',type:'string',bind:{ key:'agv_tasktypes',data:[]},width:110,require:true,align:'left'},
+                       {field:'agv_grade',title:'浠诲姟绛夌骇',type:'int',bind:{ key:'task_grade',data:[]},sort:true,width:110,align:'left'},
+                    //    {field:'agv_barcode',title:'鎵樼洏鐮�',type:'string',width:110,require:true,align:'left'},
+                    //    {field:'agv_materbarcode',title:'鐗╂枡鐮�',type:'string',width:110,align:'left'},
                        {field:'agv_createtime',title:'鍒涘缓鏃堕棿',type:'datetime',sort:true,width:150,require:true,align:'left',sort:true},
                        {field:'agv_realesstime',title:'鎵ц鏃堕棿',type:'datetime',width:150,align:'left',sort:true},
-                       {field:'agv_finishedtime',title:'瀹屾垚鏃堕棿',type:'datetime',width:150,align:'left',sort:true},
-                       {field:'agv_tasktype',title:'浠诲姟绫诲瀷',type:'string',bind:{ key:'agv_tasktypes',data:[]},width:110,require:true,align:'left'},
-                       {field:'agv_remark',title:'澶囨敞',type:'string',width:120,align:'left'},
-                       {field:'agv_grade',title:'浠诲姟绛夌骇',type:'int',bind:{ key:'task_grade',data:[]},sort:true,width:110,align:'left'},
-                       {field:'agv_userid',title:'鍒涘缓鑰�',type:'string',width:110,align:'left'},
-                       {field:'agv_barcode',title:'鎵樼洏鐮�',type:'string',width:110,require:true,align:'left'},
-                       {field:'agv_materbarcode',title:'鐗╂枡鐮�',type:'string',width:110,align:'left'},
                        {field:'agv_executingBeginTime',title:'璧峰鐐规墽琛屼腑',type:'datetime',width:150,align:'left',sort:true},
                        {field:'agv_executingEndTime',title:'璧峰鐐瑰畬鎴�',type:'datetime',width:150,align:'left',sort:true},
                        {field:'agv_completeBeginTime',title:'鐩殑鐐规墽琛屼腑',type:'datetime',width:150,align:'left',sort:true},
-                       {field:'unitag',title:'unitag',type:'guid',width:110,align:'left'},
-                       {field:'ID',title:'涓婚敭',type:'int',width:80,hidden:true,readonly:true,require:true,align:'left'}]);
+                       {field:'agv_userid',title:'鍒涘缓鑰�',type:'string',width:110,align:'left'},
+                       {field:'agv_remark',title:'澶囨敞',type:'string',width:120,align:'left'},
+                    //    {field:'unitag',title:'unitag',type:'guid',width:110,align:'left'}
+                    ]);
             const detail = ref({
                 cnName: "#detailCnName",
                 table: "#detailTable",
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
index 96fd1b7..1b2d904 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_Entity/DomainModels/System/dt_stationinfo.cs"
@@ -13,142 +13,135 @@
 
 namespace WIDESEA_Entity.DomainModels
 {
-    [Entity(TableCnName = "搴撲綅淇℃伅",TableName = "dt_stationinfo")]
-    public partial class dt_stationinfo:BaseEntity
+    [Entity(TableCnName = "搴撲綅淇℃伅", TableName = "dt_stationinfo")]
+    public partial class dt_stationinfo : BaseEntity
     {
         /// <summary>
-       ///
-       /// </summary>
-       [Display(Name ="id")]
-       [Column(TypeName="uniqueidentifier")]
-       [Editable(true)]
-       [Required(AllowEmptyStrings=false)]
-       public Guid id { get; set; }
+        ///
+        /// </summary>
+        [Key]
+        [Display(Name = "id")]
+        [Column(TypeName = "uniqueidentifier")]
+        [Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public Guid id { get; set; }
 
-       /// <summary>
-       ///缂撳瓨鏋剁紪鍙�
-       /// </summary>
-       [Display(Name ="缂撳瓨鏋剁紪鍙�")]
-       [MaxLength(30)]
-       [Column(TypeName="nvarchar(30)")]
-       [Editable(true)]
-       public string stationCode { get; set; }
+        /// <summary>
+        ///缂撳瓨鏋剁紪鍙�
+        /// </summary>
+        [Display(Name = "缂撳瓨鏋剁紪鍙�")]
+        [MaxLength(30)]
+        [Column(TypeName = "nvarchar(30)")]
+        [Editable(true)]
+        public string stationCode { get; set; }
 
-       /// <summary>
-       ///鐗╂枡绫诲瀷
-       /// </summary>
-       [Display(Name ="鐗╂枡绫诲瀷")]
-       [MaxLength(25)]
-       [Column(TypeName="nvarchar(25)")]
-       [Editable(true)]
-       public string stationType { get; set; }
+        /// <summary>
+        ///鐗╂枡绫诲瀷
+        /// </summary>
+        [Display(Name = "鐗╂枡绫诲瀷")]
+        [MaxLength(25)]
+        [Column(TypeName = "nvarchar(25)")]
+        [Editable(true)]
+        public string stationType { get; set; }
 
-       /// <summary>
-       ///鍖哄煙
-       /// </summary>
-       [Display(Name ="鍖哄煙")]
-       [MaxLength(15)]
-       [Column(TypeName="nvarchar(15)")]
-       [Editable(true)]
-       [Required(AllowEmptyStrings=false)]
-       public string area { get; set; }
+        /// <summary>
+        ///鍖哄煙
+        /// </summary>
+        [Display(Name = "鍖哄煙")]
+        [MaxLength(15)]
+        [Column(TypeName = "nvarchar(15)")]
+        [Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public string area { get; set; }
 
-       /// <summary>
-       ///鏄惁鍚敤
-       /// </summary>
-       [Display(Name ="鏄惁鍚敤")]
-       [Column(TypeName="bit")]
-       [Editable(true)]
-       [Required(AllowEmptyStrings=false)]
-       public bool enable { get; set; }
+        /// <summary>
+        ///鏄惁鍚敤
+        /// </summary>
+        [Display(Name = "鏄惁鍚敤")]
+        [Column(TypeName = "bit")]
+        [Editable(true)]
+        [Required(AllowEmptyStrings = false)]
+        public bool enable { get; set; }
 
-       /// <summary>
-       ///璐т綅鐘舵��
-       /// </summary>
-       [Display(Name ="璐т綅鐘舵��")]
-       [MaxLength(255)]
-       [Column(TypeName="varchar(255)")]
-       [Editable(true)]
-       public string location_state { get; set; }
+        /// <summary>
+        ///璐т綅鐘舵��
+        /// </summary>
+        [Display(Name = "璐т綅鐘舵��")]
+        [MaxLength(255)]
+        [Column(TypeName = "varchar(255)")]
+        [Editable(true)]
+        public string location_state { get; set; }
 
-       /// <summary>
-       ///鏈�鍚庣姸鎬佹敼鍙樻椂闂�
-       /// </summary>
-       [Display(Name ="鏈�鍚庣姸鎬佹敼鍙樻椂闂�")]
-       [Column(TypeName="datetime")]
-       [Editable(true)]
-       public DateTime? lastUpdateTime { get; set; }
+        /// <summary>
+        ///鏈�鍚庣姸鎬佹敼鍙樻椂闂�
+        /// </summary>
+        [Display(Name = "鏈�鍚庣姸鎬佹敼鍙樻椂闂�")]
+        [Column(TypeName = "datetime")]
+        [Editable(true)]
+        public DateTime? lastUpdateTime { get; set; }
 
-       /// <summary>
-       ///杞﹁疆鏁伴噺
-       /// </summary>
-       [Display(Name ="杞﹁疆鏁伴噺")]
-       [Column(TypeName="int")]
-       public int? quantity { get; set; }
+        /// <summary>
+        ///杞﹁疆鏁伴噺
+        /// </summary>
+        [Display(Name = "杞﹁疆鏁伴噺")]
+        [Column(TypeName = "int")]
+        public int? quantity { get; set; }
 
-       /// <summary>
-       ///杞﹁疆SN鍙�
-       /// </summary>
-       [Display(Name ="杞﹁疆SN鍙�")]
-       [MaxLength(500)]
-       [Column(TypeName="nvarchar(500)")]
-       public string bindSN { get; set; }
+        /// <summary>
+        ///杞﹁疆SN鍙�
+        /// </summary>
+        [Display(Name = "杞﹁疆SN鍙�")]
+        [MaxLength(500)]
+        [Column(TypeName = "nvarchar(500)")]
+        public string bindSN { get; set; }
 
-       /// <summary>
-       ///鎵樼洏鐘舵��
-       /// </summary>
-       [Display(Name ="鎵樼洏鐘舵��")]
-       [MaxLength(100)]
-       [Column(TypeName="nvarchar(100)")]
-       public string tray_status { get; set; }
+        /// <summary>
+        ///鎵樼洏鐘舵��
+        /// </summary>
+        [Display(Name = "鎵樼洏鐘舵��")]
+        [MaxLength(100)]
+        [Column(TypeName = "nvarchar(100)")]
+        public string tray_status { get; set; }
 
-       /// <summary>
-       ///琛�
-       /// </summary>
-       [Display(Name ="琛�")]
-       [Column(TypeName="int")]
-       public int? line { get; set; }
+        /// <summary>
+        ///琛�
+        /// </summary>
+        [Display(Name = "琛�")]
+        [Column(TypeName = "int")]
+        public int? line { get; set; }
 
-       /// <summary>
-       ///鍒�
-       /// </summary>
-       [Display(Name ="鍒�")]
-       [Column(TypeName="int")]
-       public int? column { get; set; }
+        /// <summary>
+        ///鍒�
+        /// </summary>
+        [Display(Name = "鍒�")]
+        [Column(TypeName = "int")]
+        public int? column { get; set; }
 
-       /// <summary>
-       ///澶囨敞
-       /// </summary>
-       [Display(Name ="澶囨敞")]
-       [MaxLength(100)]
-       [Column(TypeName="nvarchar(100)")]
-       [Editable(true)]
-       public string remark { get; set; }
+        /// <summary>
+        ///澶囨敞
+        /// </summary>
+        [Display(Name = "澶囨敞")]
+        [MaxLength(100)]
+        [Column(TypeName = "nvarchar(100)")]
+        [Editable(true)]
+        public string remark { get; set; }
 
-       /// <summary>
-       ///涓婚敭
-       /// </summary>
-       [Key]
-       [Display(Name ="涓婚敭")]
-       [Column(TypeName="int")]
-       [Required(AllowEmptyStrings=false)]
-       public int zj { get; set; }
 
-       /// <summary>
-       ///宸ュ崟缂栧彿
-       /// </summary>
-       [Display(Name ="宸ュ崟缂栧彿")]
-       [MaxLength(255)]
-       [Column(TypeName="nvarchar(255)")]
-       public string Number { get; set; }
+        /// <summary>
+        ///宸ュ崟缂栧彿
+        /// </summary>
+        [Display(Name = "宸ュ崟缂栧彿")]
+        [MaxLength(255)]
+        [Column(TypeName = "nvarchar(255)")]
+        public string Number { get; set; }
 
-       /// <summary>
-       ///鐐夊彿
-       /// </summary>
-       [Display(Name ="鐐夊彿")]
-       [Column(TypeName="int")]
-       public int? heatNumber { get; set; }
+        /// <summary>
+        ///鐐夊彿
+        /// </summary>
+        [Display(Name = "鐐夊彿")]
+        [Column(TypeName = "int")]
+        public int? heatNumber { get; set; }
 
-       
+
     }
 }
\ No newline at end of file
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs"
index 93a35a3..14825bc 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/Services/Taskinfo/Partial/dt_agvtaskService.cs"
@@ -82,6 +82,7 @@
                 agvtask.agv_taskstate = AGVTaskStateEnum.Create.ToString();
                 agvtask.agv_tasktype = tasktype;
                 agvtask.agv_worktype = 1;//宸ヤ綔绫诲瀷
+                agvtask.bindSN = station1.bindSN;
                 agvtask.agv_materielid = station1.stationType;//鐗╂枡绫诲瀷
                 agvtask.agv_qty = station1.quantity;
                 agvtask.agv_createtime = DateTime.Now;
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToAGV/ToAGVServer.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToAGV/ToAGVServer.cs"
index 1a470f2..b6454a8 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToAGV/ToAGVServer.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WMS/ToAGV/ToAGVServer.cs"
@@ -44,6 +44,12 @@
                     respone.Message = tasteInfo.TASK_NO + "锛氶噸澶嶈皟鐢紝浠诲姟鐘舵�佷负锛�" + tasteInfo.TASK_State;
                     return respone;
                 }
+                #region 鍒ゆ柇浠诲姟鐘舵��
+                //List<string> list = new List<string>() { AGVTaskStateEnum.Executing.ToString(), AGVTaskStateEnum.Complete.ToString(), AGVTaskStateEnum.Executing1.ToString(), AGVTaskStateEnum.Complete1.ToString() };
+                //var index = list.IndexOf(task.agv_taskstate) + 1;
+                //if (tasteInfo.TASK_State < index)
+                //    throw new Exception("浠诲姟鐘舵�佹洿鏂板紓甯革紒褰撳墠浠诲姟鐘舵�佷负锛�" + index + ";璇锋眰鏇存柊鐘舵�佷负锛�" + tasteInfo.TASK_State);
+                #endregion
                 if (tasteInfo.TASK_State == (int)AGVTaskStateEnum.Executing)
                     task.agv_executingBeginTime = DateTime.Now;
                 else if (tasteInfo.TASK_State == (int)AGVTaskStateEnum.Complete)
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\345\205\266\344\273\226/\347\216\260\345\234\272IP\345\210\206\351\205\215.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\205\266\344\273\226/\347\216\260\345\234\272IP\345\210\206\351\205\215.xlsx"
new file mode 100644
index 0000000..03b8e72
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\345\205\266\344\273\226/\347\216\260\345\234\272IP\345\210\206\351\205\215.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\345\222\214\346\241\201\346\236\266\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\351\234\200\350\246\201\351\207\207\351\233\206\347\232\204\344\277\241\346\201\257.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\345\222\214\346\241\201\346\236\266\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\351\234\200\350\246\201\351\207\207\351\233\206\347\232\204\344\277\241\346\201\257.xlsx"
deleted file mode 100644
index 575ea7e..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\345\222\214\346\241\201\346\236\266\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\351\234\200\350\246\201\351\207\207\351\233\206\347\232\204\344\277\241\346\201\257.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/AGV\344\270\216\346\241\201\346\236\266\351\230\262\345\221\206\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/AGV\344\270\216\346\241\201\346\236\266\351\230\262\345\221\206\345\215\217\350\256\256.xlsx"
deleted file mode 100644
index d24434a..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/AGV\344\270\216\346\241\201\346\236\266\351\230\262\345\221\206\345\215\217\350\256\256.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/PCS\344\270\216AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/PCS\344\270\216AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\345\215\217\350\256\256.xlsx"
new file mode 100644
index 0000000..a65b9bb
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/PCS\344\270\216AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\345\215\217\350\256\256.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/PCS\345\222\214\346\241\201\346\236\266\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/PCS\345\222\214\346\241\201\346\236\266\345\215\217\350\256\256.xlsx"
new file mode 100644
index 0000000..eb80fcb
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/PCS\350\267\237AGV\345\222\214\346\241\201\346\236\266\351\230\262\345\221\206\344\272\244\344\272\222\345\215\217\350\256\256/PCS\345\222\214\346\241\201\346\236\266\345\215\217\350\256\256.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214AGV\346\216\245\345\217\243/WMS\343\200\201PCS\345\222\214AGV\346\216\245\345\217\243\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214AGV\346\216\245\345\217\243/WMS\343\200\201PCS\345\222\214AGV\346\216\245\345\217\243\345\215\217\350\256\256.xlsx"
deleted file mode 100644
index 0ca77ad..0000000
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214AGV\346\216\245\345\217\243/WMS\343\200\201PCS\345\222\214AGV\346\216\245\345\217\243\345\215\217\350\256\256.xlsx"
+++ /dev/null
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214AGV\346\216\245\345\217\243/WMS\345\222\214AGV\346\216\245\345\217\243\345\215\217\350\256\256.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214AGV\346\216\245\345\217\243/WMS\345\222\214AGV\346\216\245\345\217\243\345\215\217\350\256\256.xlsx"
new file mode 100644
index 0000000..8215e72
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214AGV\346\216\245\345\217\243/WMS\345\222\214AGV\346\216\245\345\217\243\345\215\217\350\256\256.xlsx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/5f5bd6b6d22369969ae3b3688408dbc.png" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/5f5bd6b6d22369969ae3b3688408dbc.png"
new file mode 100644
index 0000000..39583ae
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/5f5bd6b6d22369969ae3b3688408dbc.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/WMS\347\263\273\347\273\237\346\216\245\345\217\243.docx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/WMS\347\263\273\347\273\237\346\216\245\345\217\243.docx"
new file mode 100644
index 0000000..5dc3353
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/WMS\347\263\273\347\273\237\346\216\245\345\217\243.docx"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/c40a9fff20facac273c88e13593a7c1.png" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/c40a9fff20facac273c88e13593a7c1.png"
new file mode 100644
index 0000000..1625c0c
--- /dev/null
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/WMS\345\222\214MES\346\216\245\345\217\243/c40a9fff20facac273c88e13593a7c1.png"
Binary files differ
diff --git "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx" "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx"
index d93ee39..28d7d14 100644
--- "a/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx"
+++ "b/\351\241\271\347\233\256\350\265\204\346\226\231/\351\200\232\344\277\241\345\215\217\350\256\256/\346\226\260\345\242\236\350\256\276\345\244\207\345\215\217\350\256\256/\345\244\252\351\207\215\344\272\244\344\272\222-\345\272\223\345\217\243\347\212\266\346\200\201_V1.xlsx"
Binary files differ

--
Gitblit v1.9.3