From 437f8436bfd174b34a8ec4e48babf25ceb533ef3 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期五, 26 八月 2022 16:05:05 +0800
Subject: [PATCH] MES工单新选源单、选单据类型(标准工单、报废补单) 开发工序检验报表(查询、导出)

---
 VueWebApi/obj/Release/VueWebApi.pdb                            |    0 
 VueWebApi/DLL/BLL/QualityManagementBLL.cs                      |   23 
 VueWebApi/File/newxls/工序检验记录20220826123323771.xlsx             |    0 
 VueWebApi/Controllers/QualityManagementController.cs           |   69 ++
 VueWebApi/Models/StandEqp.cs                                   |   25 
 .vs/VueWebApi/v16/.suo                                         |    0 
 VueWebApi/DLL/DAL/ProductionManagementDAL.cs                   |  156 +++-
 VueWebApi/File/newxls/工序检验记录20220826111001.xls                 |    0 
 VueWebApi/Tools/DownLoad.cs                                    |  573 ++++++++++++++++
 VueWebApi/DLL/BLL/AppDeviceManageBLL.cs                        |   34 +
 VueWebApi/VueWebApi.csproj                                     |    8 
 VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb     |    0 
 VueWebApi/Controllers/ProductionManagementController.cs        |   23 
 VueWebApi/Models/AppDevicecCheck.cs                            |   24 
 VueWebApi/DLL/DAL/AppDeviceManageDAL.cs                        |  192 +++++
 VueWebApi/Controllers/DeviceManagerController.cs               |   10 
 VueWebApi/Logs/2022-08-26.TXT                                  |   58 +
 VueWebApi/bin/VueWebApi.pdb                                    |    0 
 VueWebApi/File/newxls/工序检验记录20220826152043175.xlsx             |    0 
 VueWebApi/File/newxls/20220826120105760.xlsx                   |    0 
 VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache |    2 
 VueWebApi/File/newxls/工序检验记录20220826122922020.xlsx             |    0 
 VueWebApi/Controllers/AppDeviceManageController.cs             |   67 +
 VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt    |    1 
 VueWebApi/Logs/2022-08-25.TXT                                  |  115 +++
 VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user |   10 
 VueWebApi/DLL/BLL/ProductionManagementBLL.cs                   |   20 
 VueWebApi/bin/VueWebApi.xml                                    |  141 +++
 /dev/null                                                      |    0 
 VueWebApi/File/newxls/工序检验记录20220826112554.xls                 |    0 
 VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml     |  141 +++
 VueWebApi/DLL/DAL/QualityManagementDAL.cs                      |  229 ++++++
 VueWebApi/DLL/DAL/DeviceManagerDAL.cs                          |   80 +
 VueWebApi/Tools/DALSkillCondition.cs                           |   35 +
 34 files changed, 1,936 insertions(+), 100 deletions(-)

diff --git a/.vs/VueWebApi/v16/.suo b/.vs/VueWebApi/v16/.suo
index f2c618e..0844e4f 100644
--- a/.vs/VueWebApi/v16/.suo
+++ b/.vs/VueWebApi/v16/.suo
Binary files differ
diff --git a/VueWebApi/Controllers/AppDeviceManageController.cs b/VueWebApi/Controllers/AppDeviceManageController.cs
new file mode 100644
index 0000000..d1dd7e1
--- /dev/null
+++ b/VueWebApi/Controllers/AppDeviceManageController.cs
@@ -0,0 +1,67 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web.Http;
+using VueWebApi.DLL.BLL;
+using VueWebApi.Models;
+using VueWebApi.Tools;
+
+namespace VueWebApi.Controllers
+{
+    [RoutePrefix(prefix: "api/AppDeviceManage")]
+    [ControllerGroup("App璁惧绠$悊", "鍦ㄧ嚎鎺ュ彛")]
+    public class AppDeviceManageController : ApiController
+    {
+        //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+
+        #region[鏃ュ父鐐规,鎵弿宸ヤ綅/璁惧浜岀淮鐮乚
+        /// <summary>
+        /// 鏃ュ父鐐规,鎵弿宸ヤ綅/璁惧浜岀淮鐮�
+        /// </summary>
+        /// <param name="eqpcode">璁惧缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "ScanDeviceQrCodeData")]
+        [HttpGet]
+        public HttpResponseMessage ScanDeviceQrCodeData(string eqpcode)
+        {
+            mes = AppDeviceManageBLL.ScanDeviceQrCodeData(eqpcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鏃ュ父鐐规,閫夋嫨鎵爜璁惧鍒楄〃甯﹀嚭鐐规椤筣
+        /// <summary>
+        /// 鏃ュ父鐐规,閫夋嫨鎵爜璁惧鍒楄〃甯﹀嚭鐐规椤�
+        /// </summary>
+        /// <param name="eqpcode">璁惧缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "SelectScanDeviceQrCodeItem")]
+        [HttpGet]
+        public HttpResponseMessage SelectScanDeviceQrCodeItem(string eqpcode)
+        {
+            mes = AppDeviceManageBLL.SelectScanDeviceQrCodeItem(eqpcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鏃ュ父鐐规銆佹彁浜や繚瀛榏
+        /// <summary>
+        /// 鏃ュ父鐐规銆佹彁浜や繚瀛�
+        /// </summary>
+        /// <param name="username">鐧诲綍浜哄憳(鐐规浜�)</param>
+        /// <param name="json">鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "AppDeviceCheckSave")]
+        [HttpPost]
+        public HttpResponseMessage AppDeviceCheckSave(string username, AppDevicecCheck json)
+        {
+            mes = AppDeviceManageBLL.AppDeviceCheckSave(username, json);
+            return TJson.toJson(mes);
+        }
+        #endregion
+    }
+}
diff --git a/VueWebApi/Controllers/DeviceManagerController.cs b/VueWebApi/Controllers/DeviceManagerController.cs
index db957e1..9a74360 100644
--- a/VueWebApi/Controllers/DeviceManagerController.cs
+++ b/VueWebApi/Controllers/DeviceManagerController.cs
@@ -286,7 +286,7 @@
         /// <returns></returns>
         [Route(template: "DeviceCheckItemSearch")]
         [HttpGet]
-        public HttpResponseMessage DeviceCheckItemSearch(string checkitemcode = null, string checkitemname = null, string checkdescr = null, string isqrcode = null,string cycle=null, int page = 0, int rows = 0, string prop = null, string order = null)
+        public HttpResponseMessage DeviceCheckItemSearch(int page, int rows, string prop,string order,string checkitemcode = null, string checkitemname = null, string checkdescr = null, string isqrcode = null,string cycle=null)
         {
             int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
             int endNum = rows * page;   //缁撴潫璁板綍 rowNum
@@ -351,7 +351,7 @@
         /// <returns></returns>
         [Route(template: "DeviceMaiItemSearch")]
         [HttpGet]
-        public HttpResponseMessage DeviceMaiItemSearch(string maiitemcode = null, string maiitemname = null, string maidescr = null, string isqrcode = null, string cycle = null, int page = 0, int rows = 0, string prop = null, string order = null)
+        public HttpResponseMessage DeviceMaiItemSearch(int page, int rows, string prop, string order,string maiitemcode = null, string maiitemname = null, string maidescr = null, string isqrcode = null, string cycle = null)
         {
             int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
             int endNum = rows * page;   //缁撴潫璁板綍 rowNum
@@ -413,7 +413,7 @@
         /// <returns></returns>
         [Route(template: "DeviceCheckStandArdSearch")]
         [HttpGet]
-        public HttpResponseMessage DeviceCheckStandArdSearch(string checkstandcode = null, string checkstandname = null, string checkcontr = null,int page = 0, int rows = 0, string prop = null, string order = null)
+        public HttpResponseMessage DeviceCheckStandArdSearch(int page, int rows, string prop, string order,string checkstandcode = null, string checkstandname = null, string checkcontr = null)
         {
             int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
             int endNum = rows * page;   //缁撴潫璁板綍 rowNum
@@ -531,7 +531,7 @@
         /// <returns></returns>
         [Route(template: "DeviceRepairStandArdSearch")]
         [HttpGet]
-        public HttpResponseMessage DeviceRepairStandArdSearch(string repairstandcode = null, string repairstandname = null, string repairstanddescr = null, int page = 0, int rows = 0, string prop = null, string order = null)
+        public HttpResponseMessage DeviceRepairStandArdSearch(int page, int rows, string prop, string order,string repairstandcode = null, string repairstandname = null, string repairstanddescr = null)
         {
             int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
             int endNum = rows * page;   //缁撴潫璁板綍 rowNum
@@ -633,5 +633,7 @@
         }
         #endregion
 
+
+
     }
 }
diff --git a/VueWebApi/Controllers/ProductionManagementController.cs b/VueWebApi/Controllers/ProductionManagementController.cs
index 69a67c8..70e08b1 100644
--- a/VueWebApi/Controllers/ProductionManagementController.cs
+++ b/VueWebApi/Controllers/ProductionManagementController.cs
@@ -117,6 +117,8 @@
         /// </summary>
         /// <param name="mesorderstus">宸ュ崟鐘舵�佺爜</param>
         /// <param name="mesordercode">宸ュ崟缂栧彿</param>
+        /// <param name="sourceorder">婧愬崟鍗曞彿</param>
+        /// <param name="ordertype">鍗曟嵁绫诲瀷</param>
         /// <param name="partcode">浜у搧缂栫爜</param>
         /// <param name="partname">浜у搧鍚嶇О</param>
         /// <param name="partspec">浜у搧瑙勬牸</param>
@@ -129,11 +131,11 @@
         /// <returns></returns>
         [Route(template: "MesOrderSearch")]
         [HttpGet]
-        public HttpResponseMessage MesOrderSearch(string mesorderstus = null, string mesordercode = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
+        public HttpResponseMessage MesOrderSearch(string mesorderstus = null, string mesordercode = null,string sourceorder=null,string ordertype=null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
         {
             int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
             int endNum = rows * page;   //缁撴潫璁板綍 rowNum
-            mes = ProductionManagementBLL.MesOrderSearch(mesorderstus, mesordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
+            mes = ProductionManagementBLL.MesOrderSearch(mesorderstus, mesordercode, sourceorder, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
             return TJson.toJson(mes);
         }
         #endregion
@@ -195,6 +197,8 @@
         public HttpResponseMessage AddUpdateMesOrder([FromBody] JObject obj)
         {
             string mesorderstus = obj["mesorderstus"].ToString();    //宸ュ崟鐘舵�佺爜
+            string sourceorder = obj["sourceorder"].ToString();    //婧愬崟缂栧彿
+            string ordertype = obj["ordertype"].ToString();       //宸ュ崟绫诲瀷
             string mesordercode = obj["mesordercode"].ToString(); //宸ュ崟缂栧彿
             string partcode = obj["partcode"].ToString(); //浜у搧缂栫爜
             string mesqty = obj["mesqty"].ToString(); //宸ュ崟鏁伴噺
@@ -205,7 +209,7 @@
             string orderlev = obj["orderlev"].ToString(); //宸ュ崟绛夌骇
             string opertype = obj["OperType"].ToString();  //鎿嶄綔绫诲瀷
             var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
-            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
+            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, sourceorder, ordertype, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
             return TJson.toJson(mes);
         }
         #endregion
@@ -489,8 +493,9 @@
             string reportqty = obj["reportqty"].ToString(); //鎶ュ伐宸ユ暟閲�
             string ngqty = obj["ngqty"].ToString(); //涓嶈壇鏁伴噺
             string badcode = obj["badcode"].ToString(); //涓嶈壇鍘熷洜缂栫爜
+            string remarks = obj["remarks"].ToString(); //澶囨敞
             var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
-            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
+            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, remarks, username);
             return TJson.toJson(mes);
         }
         #endregion
@@ -539,8 +544,9 @@
             string sqty = obj["sqty"].ToString(); //鏀舵枡鏁伴噺
             string ngqty = obj["ngqty"].ToString(); //涓嶈壇鏁伴噺
             string badcode = obj["badcode"].ToString(); //涓嶈壇鍘熷洜缂栫爜
+            string remarks = obj["remarks"].ToString(); //澶囨敞
             var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
-            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
+            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, remarks, username);
             return TJson.toJson(mes);
         }
         #endregion
@@ -549,13 +555,13 @@
         /// <summary>
         /// 涓嶈壇澶勭悊,鎻愪氦
         /// </summary>
+        /// <param name="username">澶勭悊浜哄憳缂栫爜</param>
         /// <param name="json">鎻愪氦鏁版嵁</param>
         /// <returns></returns>
         [Route(template: "EditOrderNgStepSeave")]
         [HttpPost]
-        public HttpResponseMessage EditOrderNgStepSeave(ReportDefectHandle json)
+        public HttpResponseMessage EditOrderNgStepSeave(string username, ReportDefectHandle json)
         {
-            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
             mes = ProductionManagementBLL.EditOrderNgStepSeave(json, username);
             return TJson.toJson(mes);
         }
@@ -623,10 +629,11 @@
             string checktypecode = obj["checktypecode"].ToString(); //妫�楠岀被鍨嬬紪鐮�
             string checkresult = obj["checkresult"].ToString(); //妫�楠岀粨鏋�
             string checkdescr = obj["checkdescr"].ToString(); //妫�楠屾弿杩�
+            string checkqty = obj["checkqty"].ToString(); //妫�楠屾暟閲�
             string data = obj["data"].ToString();
             List<StepCheck> json = Newtonsoft.Json.JsonConvert.DeserializeObject<List<StepCheck>>(data);
             var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
-            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, username,json);
+            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username,json);
             return TJson.toJson(mes);
         }
         #endregion
diff --git a/VueWebApi/Controllers/QualityManagementController.cs b/VueWebApi/Controllers/QualityManagementController.cs
index 79b0223..9f77797 100644
--- a/VueWebApi/Controllers/QualityManagementController.cs
+++ b/VueWebApi/Controllers/QualityManagementController.cs
@@ -227,5 +227,74 @@
         }
         #endregion
 
+
+
+
+        #region[宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇
+        /// <summary>
+        /// 宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+        /// </summary>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="partcode">浜у搧缂栫爜</param>
+        /// <param name="partname">浜у搧鍚嶇О</param>
+        /// <param name="partapec">浜у搧鍚嶇О</param>
+        /// <param name="stepname">浜у搧鍚嶇О</param>
+        /// <param name="standname">浜у搧鍚嶇О</param>
+        /// <param name="checktype">妫�楠岀被鍨嬬紪鐮�</param>
+        /// <param name="checkresult">妫�楠岀粨鏋�</param>
+        /// <param name="page">椤电爜</param>
+        /// <param name="rows">姣忛〉鏄剧ず鏉℃暟</param>
+        /// <param name="prop">鎺掑簭瀛楁</param>
+        /// <param name="order">鎺掑簭瑙勫垯</param>
+        /// <returns></returns>
+        [Route(template: "StepCheckTableSearch")]
+        [HttpGet]
+        public HttpResponseMessage StepCheckTableSearch(string wocode = null, string partcode = null, string partname = null, string partapec = null, string stepname = null,string standname=null, string checktype = null, string checkresult = null, int page = 0, int rows = 0, string prop = null, string order = null)
+        {
+            int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
+            int endNum = rows * page;   //缁撴潫璁板綍 rowNum
+            mes = QualityManagementBLL.StepCheckTableSearch(wocode, partcode, partname,partapec,stepname,standname,checktype,checkresult, startNum, endNum, prop, order);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠岃褰曞垪琛ㄦ槑缁嗘煡璇
+        /// <summary>
+        /// 宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+        /// </summary>
+        /// <param name="id">涓昏〃id</param>
+        /// <returns></returns>
+        [Route(template: "StepCheckTableSubSearch")]
+        [HttpGet]
+        public HttpResponseMessage StepCheckTableSubSearch(string id)
+        {
+            mes = QualityManagementBLL.StepCheckTableSubSearch(id);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠岃褰曞鍑篯
+        /// <summary>
+        /// 宸ュ簭妫�楠岃褰曞鍑�
+        /// </summary>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="partcode">浜у搧缂栫爜</param>
+        /// <param name="partname">浜у搧鍚嶇О</param>
+        /// <param name="partapec">浜у搧鍚嶇О</param>
+        /// <param name="stepname">浜у搧鍚嶇О</param>
+        /// <param name="standname">浜у搧鍚嶇О</param>
+        /// <param name="checktype">妫�楠岀被鍨嬬紪鐮�</param>
+        /// <param name="checkresult">妫�楠岀粨鏋�</param>
+        /// <param name="prop">鎺掑簭瀛楁</param>
+        /// <param name="order">鎺掑簭瑙勫垯</param>
+        /// <returns></returns>
+        [Route(template: "StepCheckTableOutExcel")]
+        [HttpGet]
+        public HttpResponseMessage StepCheckTableOutExcel(string wocode = null, string partcode = null, string partname = null, string partapec = null, string stepname = null, string standname = null, string checktype = null, string checkresult = null,string prop = null, string order = null)
+        {
+            mes = QualityManagementBLL.StepCheckTableOutExcel(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, prop, order);
+            return TJson.toJson(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebApi/DLL/BLL/AppDeviceManageBLL.cs b/VueWebApi/DLL/BLL/AppDeviceManageBLL.cs
new file mode 100644
index 0000000..825fbc8
--- /dev/null
+++ b/VueWebApi/DLL/BLL/AppDeviceManageBLL.cs
@@ -0,0 +1,34 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using VueWebApi.DLL.DAL;
+using VueWebApi.Models;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.BLL
+{
+    public class AppDeviceManageBLL
+    {
+        #region[鏃ュ父鐐规,鎵弿宸ヤ綅/璁惧浜岀淮鐮乚
+        public static ToMessage ScanDeviceQrCodeData(string eqpcode)
+        {
+            return AppDeviceManageDAL.ScanDeviceQrCodeData(eqpcode);
+        }
+        #endregion
+
+        #region[鏃ュ父鐐规,閫夋嫨鎵爜璁惧鍒楄〃甯﹀嚭鐐规椤筣
+        public static ToMessage SelectScanDeviceQrCodeItem(string eqpcode)
+        {
+            return AppDeviceManageDAL.SelectScanDeviceQrCodeItem(eqpcode);
+        }
+        #endregion
+
+        #region[鏃ュ父鐐规銆佹彁浜や繚瀛榏
+        public static ToMessage AppDeviceCheckSave(string username, AppDevicecCheck json)
+        {
+            return AppDeviceManageDAL.AppDeviceCheckSave(username,json);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/ProductionManagementBLL.cs b/VueWebApi/DLL/BLL/ProductionManagementBLL.cs
index 05c107e..4854e2e 100644
--- a/VueWebApi/DLL/BLL/ProductionManagementBLL.cs
+++ b/VueWebApi/DLL/BLL/ProductionManagementBLL.cs
@@ -34,9 +34,9 @@
 
 
         #region[MES宸ュ崟鏌ヨ]
-        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
         {
-            return ProductionManagementDAL.ErpOrderSearch(mesorderstus, mesordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
+            return ProductionManagementDAL.MesOrderSearch(mesorderstus, mesordercode, sourceorder, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
         }
         #endregion
 
@@ -62,9 +62,9 @@
         #endregion
 
         #region[MES宸ュ崟鏂板銆佺紪杈戞彁浜
-        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
+        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
         {
-            return ProductionManagementDAL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
+            return ProductionManagementDAL.AddUpdateMesOrder(mesorderstus,mesordercode, sourceorder,ordertype,partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
         }
         #endregion
 
@@ -178,9 +178,9 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦]
-        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty,string startqty, string reportqty,string ngqty, string badcode, string username)
+        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty,string startqty, string reportqty,string ngqty, string badcode,string remarks, string username)
         {
-            return ProductionManagementDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
+            return ProductionManagementDAL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, remarks, username);
         }
         #endregion
 
@@ -192,9 +192,9 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐, 鏀舵枡鎻愪氦]
-        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string username)
+        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode,string remarks, string username)
         {
-            return ProductionManagementDAL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
+            return ProductionManagementDAL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, remarks, username);
         }
         #endregion
 
@@ -227,9 +227,9 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛榏
-        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr, string username, List<StepCheck> json)
+        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr,string checkqty, string username, List<StepCheck> json)
         {
-            return ProductionManagementDAL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, username, json);
+            return ProductionManagementDAL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username, json);
         }
         #endregion
     }
diff --git a/VueWebApi/DLL/BLL/QualityManagementBLL.cs b/VueWebApi/DLL/BLL/QualityManagementBLL.cs
index e5708a5..12052bf 100644
--- a/VueWebApi/DLL/BLL/QualityManagementBLL.cs
+++ b/VueWebApi/DLL/BLL/QualityManagementBLL.cs
@@ -91,5 +91,28 @@
             return QualityManagementDAL.DeleteStepCheckItem(checkitemcode);
         }
         #endregion
+
+
+
+        #region[宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇
+        public static ToMessage StepCheckTableSearch(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, int startNum, int endNum, string prop, string order)
+        {
+            return QualityManagementDAL.StepCheckTableSearch(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, startNum, endNum, prop, order);
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠岃褰曞垪琛ㄦ槑缁嗘煡璇
+        public static ToMessage StepCheckTableSubSearch(string id)
+        {
+            return QualityManagementDAL.StepCheckTableSubSearch(id);
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠岃褰曞鍑篯
+        public static ToMessage StepCheckTableOutExcel(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, string prop, string order)
+        {
+            return QualityManagementDAL.StepCheckTableOutExcel(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, prop, order);
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/VueWebApi/DLL/DAL/AppDeviceManageDAL.cs b/VueWebApi/DLL/DAL/AppDeviceManageDAL.cs
new file mode 100644
index 0000000..4dd4d7c
--- /dev/null
+++ b/VueWebApi/DLL/DAL/AppDeviceManageDAL.cs
@@ -0,0 +1,192 @@
+锘縰sing Dapper;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Web;
+using VueWebApi.Models;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.DAL
+{
+    public class AppDeviceManageDAL
+    {
+        public static DataTable dt;    //瀹氫箟鍏ㄥ眬鍙橀噺dt
+        public static bool res;       //瀹氫箟鍏ㄥ眬鍙橀噺dt
+        public static ToMessage mes = new ToMessage(); //瀹氫箟鍏ㄥ眬杩斿洖淇℃伅瀵硅薄
+        public static string strProcName = ""; //瀹氫箟鍏ㄥ眬sql鍙橀噺
+        public static List<SqlParameter> listStr = new List<SqlParameter>(); //瀹氫箟鍏ㄥ眬鍙傛暟闆嗗悎
+        public static SqlParameter[] parameters; //瀹氫箟鍏ㄥ眬SqlParameter鍙傛暟鏁扮粍
+
+
+        #region[鏃ュ父鐐规,鎵弿宸ヤ綅/璁惧浜岀淮鐮乚
+        public static ToMessage ScanDeviceQrCodeData(string eqpcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鑾峰彇瀵瑰簲璁惧鍙婃墍灞炶溅闂�
+                sql = @"select A.code,A.name,T.org_code as wksp_code,T.org_name as wksp_name,E.eqpchkmain_code  
+                        from TEqpInfo A
+                        left join TOrganization T on A.wksp_code=T.org_code
+                        left join TEqpchk_Eqp E on A.code=E.eqp_code
+                        where A.code=@eqpcode and A.enable='Y' and T.description='W'";
+                dynamicParams.Add("@eqpcode", eqpcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.Message = "褰撳墠璁惧寮傚父!";
+                    mes.data = data;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[鏃ュ父鐐规,閫夋嫨鎵爜璁惧鍒楄〃甯﹀嚭鐐规椤筣
+        public static ToMessage SelectScanDeviceQrCodeItem(string eqpcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鑾峰彇瀵瑰簲璁惧鍏宠仈鐨勭偣妫�椤圭洰
+                sql = @"select S.seq,S.code,S.name,chkdesc,isscan,cycle  
+                        from TEqpchk_Eqp A
+                        inner join TEqpchk_Main B on A.eqpchkmain_code=B.code
+                        inner join TEqpchk_Deta S on B.code=S.eqpchk_main_code
+                        where A.eqp_code=@eqpcode
+                        order by S.seq asc";
+                dynamicParams.Add("@eqpcode", eqpcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.Message = "褰撳墠璁惧鏈缃偣妫�鏍囧噯缁戝畾鐐规椤圭洰!";
+                    mes.data = data;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[鏃ュ父鐐规銆佹彁浜や繚瀛榏
+        public static ToMessage AppDeviceCheckSave(string username, AppDevicecCheck json)
+        {
+            var sql = "";
+            string djwo = "";
+            List<object> list = new List<object>();
+            try
+            {
+                list.Clear();
+                mes = SeachEncode.EncodingSeach("1036");  //鐢熸垚鍗曞彿
+                if (mes.code == "300")
+                {
+                    return mes;
+                }
+                else
+                {
+                    djwo = mes.data.GetType().GetProperty("Encode").GetValue(mes.data, null).ToString(); //鑾峰彇鍗曞彿
+                }
+                if (json == null || json.children.Count <= 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鐐规椤逛俊鎭笉鑳戒负绌�!";
+                    mes.data = null;
+                    return mes;
+                }
+
+                //鍐欏叆鐐规璁板綍涓昏〃
+                sql = @"insert into TEqpchk_Proc_Main(djwo,eqp_code,eqpchkmain_code,chk_user,chk_date,chk_result) 
+                        values(@djwo,@eqp_code,@eqpchkmain_code,@lm_user,@lm_date,@chk_result)";
+                list.Add(new
+                {
+                    str = sql,
+                    parm = new
+                    {
+                        djwo = djwo,
+                        eqp_code = json.code,
+                        eqpchkmain_code=json.standcode,
+                        lm_user = username,
+                        lm_date = DateTime.Now.ToString(),
+                        chk_result=json.result
+                    }
+                });
+                //寰幆鍐欏叆鐐规璁板綍瀛愯〃
+                for (int i = 0; i < json.children.Count; i++)
+                {
+                    sql = @"insert into TEqpchk_Proc_Deta(seq,djwo,eqpchkdeta_code,chk_cyc,result,chk_value) 
+                            values(@seq,@djwo,@eqpchkdeta_code,@chk_cyc,@result,@chk_value)";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            seq = json.children[i].seq,
+                            djwo = djwo,
+                            eqpchkdeta_code =json.children[i].itemcode,
+                            chk_cyc = json.children[i].cycle,
+                            result = json.children[i].result,
+                            chk_value = json.children[i].value
+                        }
+                    }); ;
+                }
+
+                bool aa = DapperHelper.DoTransaction(list);
+                if (aa)
+                {
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鐐规鎴愬姛!";
+                    mes.data = null;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鐐规澶辫触!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/DAL/DeviceManagerDAL.cs b/VueWebApi/DLL/DAL/DeviceManagerDAL.cs
index ef8756f..88c19f4 100644
--- a/VueWebApi/DLL/DAL/DeviceManagerDAL.cs
+++ b/VueWebApi/DLL/DAL/DeviceManagerDAL.cs
@@ -614,8 +614,15 @@
                     mes.data = null;
                     return mes;
                 }
+
                 //鍒犻櫎璁惧
                 sql = @"update TEqpInfo set is_delete='1' where code=@devicecode";
+                list.Add(new { str = sql, parm = new { devicecode = devicecode } });
+                //鍒犻櫎璁惧鍏宠仈鐐规鏍囧噯琛�
+                sql = @"delete TEqpchk_Eqp  where eqp_code=@devicecode";
+                list.Add(new { str = sql, parm = new { devicecode = devicecode } });
+                //鍒犻櫎璁惧缁戝畾淇濆吇鏍囧噯琛�
+                sql = @"delete TEqpmai_Eqp  where eqp_code=@devicecode";
                 list.Add(new { str = sql, parm = new { devicecode = devicecode } });
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
@@ -1156,7 +1163,7 @@
                 if (opertype == "Add")
                 {
                     //鏂板璁惧鐐规鏍囧噯涓昏〃
-                    sql = @"insert into TEqpchk_Main(code,name,description,iscontr,lm_user,lm_date) values(@code,@name,@descr,@lm_user,@lm_date)";
+                    sql = @"insert into TEqpchk_Main(code,name,description,iscontr,lm_user,lm_date) values(@code,@name,@descr,@iscontr,@lm_user,@lm_date)";
                     list.Add(new { str = sql, parm = new { code = json.code, name = json.name, descr = json.description, iscontr = json.enable, lm_user = username, lm_date = DateTime.Now.ToString() } });
                     for (int i = 0; i < json.Data.Rows.Count; i++)
                     {
@@ -1313,7 +1320,7 @@
         {
             string sql = "";
             var dynamicParams = new DynamicParameters();
-            List<StepEqp> list = new List<StepEqp>();
+            List<StandEqp> list = new List<StandEqp>();
             try
             {
                 //鑾峰彇宸ヤ綔绔欓泦鍚�(杞﹂棿,鍖呭惈宸茬粦瀹氬伐浣滅珯鏍囪瘑)
@@ -1328,26 +1335,41 @@
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 for (int i = 0; i < data.Rows.Count; i++)
                 {
-                    StepEqp rout = new StepEqp();
+                    StandEqp rout = new StandEqp();
                     rout.code = data.Rows[i]["WKSP_CODE"].ToString();
                     rout.name = data.Rows[i]["WKSP_NAME"].ToString();
                     rout.type = data.Rows[i]["TYPE"].ToString();
                     rout.flag = data.Rows[i]["FLAG"].ToString();
-                    rout.children = new List<StepEqpCn>();
+                    rout.children = new List<StandEqpCn>();
                     //鏍规嵁杞﹂棿缂栫爜鏌ユ壘璁惧(鍖呭惈宸插叧鑱旀爣璇�)
-                    sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
+                    //sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
+                    //        from TEqpInfo A
+                    //        left join(
+                    //        select distinct A.eqp_code  from TEqpchk_Eqp A 
+                    //        inner join TEqpInfo B on A.eqp_code=B.code 
+                    //        where A.eqpchkmain_code=@checkstand_code and A.is_delete<>'1' and B.is_delete<>'1'
+                    //        ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
+                    sql = @"select *  from(
+                            select AA.code,AA.name,(case when BB.eqpchkmain_code is null then 'N' else 'Y' end) flag,(case when AA.eqpchkmain_code  is null then 'N' else 'Y' end) flage1
+                            from(
+                            select A.code,A.name,B.eqpchkmain_code
                             from TEqpInfo A
-                            left join(
-                            select distinct A.eqp_code  from TEqpchk_Eqp A 
-                            inner join TEqpInfo B on A.eqp_code=B.code 
-                            where A.eqpchkmain_code=@checkstand_code and A.is_delete<>'1' and B.is_delete<>'1'
-                            ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
+                            left join TEqpchk_Eqp B on A.code=B.eqp_code
+                            where A.wksp_code=@wkspcode and A.is_delete<>'1' 
+                            ) as AA
+                            left join (
+                             select A.code,A.name,B.eqpchkmain_code
+                             from TEqpInfo A
+                             inner join TEqpchk_Eqp B on A.code=B.eqp_code
+                             where A.wksp_code=@wkspcode and B.eqpchkmain_code=@checkstand_code and A.is_delete<>'1'
+                            ) as BB on AA.code=BB.code
+                            ) as CC where case when flag ='N' and flage1 ='Y' then 0 else 1 end=1";
                     dynamicParams.Add("@checkstand_code", checkstand_code);
                     dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
                     var data0 = DapperHelper.selectdata(sql, dynamicParams);
                     for (int j = 0; j < data0.Rows.Count; j++)
                     {
-                        StepEqpCn cn = new StepEqpCn();
+                        StandEqpCn cn = new StandEqpCn();
                         cn.code = data0.Rows[j]["CODE"].ToString();//璁惧缂栫爜
                         cn.name = data0.Rows[j]["NAME"].ToString();//璁惧鍚嶇О
                         cn.type = data0.Rows[j]["TYPE"].ToString();//宸ヤ綔绔欑被鍨�(E:璁惧 W:澶栧崗渚涙柟)
@@ -1734,7 +1756,7 @@
         {
             string sql = "";
             var dynamicParams = new DynamicParameters();
-            List<StepEqp> list = new List<StepEqp>();
+            List<StandEqp> list = new List<StandEqp>();
             try
             {
                 //鑾峰彇宸ヤ綔绔欓泦鍚�(杞﹂棿,鍖呭惈宸茬粦瀹氬伐浣滅珯鏍囪瘑)
@@ -1745,30 +1767,46 @@
                         inner join TEqpInfo B on A.eqp_code=B.code 
                         where A.eapmai_code=@repairstand_code and A.is_delete<>'1' and B.is_delete<>'1'
                         ) B on T.org_code=B.wksp_code where T.description='W' and is_delete<>'1'";
+
                 dynamicParams.Add("@repairstand_code", repairstand_code);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 for (int i = 0; i < data.Rows.Count; i++)
                 {
-                    StepEqp rout = new StepEqp();
+                    StandEqp rout = new StandEqp();
                     rout.code = data.Rows[i]["WKSP_CODE"].ToString();
                     rout.name = data.Rows[i]["WKSP_NAME"].ToString();
                     rout.type = data.Rows[i]["TYPE"].ToString();
                     rout.flag = data.Rows[i]["FLAG"].ToString();
-                    rout.children = new List<StepEqpCn>();
+                    rout.children = new List<StandEqpCn>();
                     //鏍规嵁杞﹂棿缂栫爜鏌ユ壘璁惧(鍖呭惈宸插叧鑱旀爣璇�)
-                    sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
+                    //sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
+                    //        from TEqpInfo A
+                    //        left join(
+                    //        select distinct A.eqp_code  from TEqpmai_Eqp A 
+                    //        inner join TEqpInfo B on A.eqp_code=B.code 
+                    //        where A.eapmai_code=@repairstand_code and A.is_delete<>'1' and B.is_delete<>'1'
+                    //        ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
+                    sql = @"select *  from(
+                            select AA.code,AA.name,(case when BB.eapmai_code is null then 'N' else 'Y' end) flag,(case when AA.eapmai_code  is null then 'N' else 'Y' end) flage1
+                            from(
+                            select A.code,A.name,B.eapmai_code
                             from TEqpInfo A
-                            left join(
-                            select distinct A.eqp_code  from TEqpmai_Eqp A 
-                            inner join TEqpInfo B on A.eqp_code=B.code 
-                            where A.eapmai_code=@repairstand_code and A.is_delete<>'1' and B.is_delete<>'1'
-                            ) B on A.code=B.eqp_code where A.wksp_code=@wkspcode and A.is_delete<>'1'";
+                            left join TEqpmai_Eqp B on A.code=B.eqp_code
+                            where A.wksp_code=@wkspcode and A.is_delete<>'1' 
+                            ) as AA
+                            left join (
+                             select A.code,A.name,B.eapmai_code
+                             from TEqpInfo A
+                             inner join TEqpmai_Eqp B on A.code=B.eqp_code
+                             where A.wksp_code=@wkspcode and B.eapmai_code=@repairstand_code and A.is_delete<>'1'
+                            ) as BB on AA.code=BB.code
+                            ) as CC where case when flag ='N' and flage1 ='Y' then 0 else 1 end=1";
                     dynamicParams.Add("@repairstand_code", repairstand_code);
                     dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
                     var data0 = DapperHelper.selectdata(sql, dynamicParams);
                     for (int j = 0; j < data0.Rows.Count; j++)
                     {
-                        StepEqpCn cn = new StepEqpCn();
+                        StandEqpCn cn = new StandEqpCn();
                         cn.code = data0.Rows[j]["CODE"].ToString();//璁惧缂栫爜
                         cn.name = data0.Rows[j]["NAME"].ToString();//璁惧鍚嶇О
                         cn.type = data0.Rows[j]["TYPE"].ToString();//宸ヤ綔绔欑被鍨�(E:璁惧 W:澶栧崗渚涙柟)
diff --git a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
index 124f2a3..c1c26da 100644
--- a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -138,13 +138,14 @@
                     }
                     if (i == Convert.ToInt32(ordernum))  //鏈�鍚庝竴鍗曟椂
                     {
-                        sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
+                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                         list.Add(new
                         {
                             str = sql,
                             parm = new
                             {
                                 wo_code = wo,
+                                wotype="PO",
                                 status = "NEW",
                                 wkshp_code = wkshopcode,
                                 plan_qty = cdqty + (decimal.Parse(markqty) - sumqty),  //鏈崟涓嬪崟鏁伴噺=鍒囧垎鏁伴噺+(涓嬪崟鏁伴噺-绱鍒囧垎涓嬪崟鏁伴噺)
@@ -160,13 +161,14 @@
                     else
                     {
 
-                        sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
+                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,m_po,lm_user,lm_date) values(@wo_code,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@m_po,@username,@CreateDate)";
                         list.Add(new
                         {
                             str = sql,
                             parm = new
                             {
                                 wo_code = wo,
+                                wotype = "PO",
                                 status = "NEW",
                                 wkshp_code = wkshopcode,
                                 plan_qty = cdqty,
@@ -296,7 +298,7 @@
 
 
         #region[MES宸ュ崟鏌ヨ]
-        public static ToMessage ErpOrderSearch(string mesorderstus, string mesordercode, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode,string sourceorder,string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
         {
             var dynamicParams = new DynamicParameters();
             string search = "";
@@ -311,6 +313,16 @@
                 {
                     search += "and A.wo_code like '%'+@mesordercode+'%' ";
                     dynamicParams.Add("@mesordercode", mesordercode);
+                }
+                if (sourceorder != "" && sourceorder != null)
+                {
+                    search += "and A.m_po like '%'+@sourceorder+'%' ";
+                    dynamicParams.Add("@sourceorder", sourceorder);
+                }
+                if (ordertype != "" && ordertype != null)
+                {
+                    search += "and A.wotype like '%'+@ordertype+'%' ";
+                    dynamicParams.Add("@ordertype", ordertype);
                 }
                 if (partcode != "" && partcode != null)
                 {
@@ -344,7 +356,7 @@
                 }
                 // --------------鏌ヨ鎸囧畾鏁版嵁--------------
                 var total = 0; //鎬绘潯鏁�
-                var sql = @"select A.status,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
+                var sql = @"select A.status,A.wotype,A.m_po,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
                             A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.m_po,U.username as lm_user,A.lm_date
                             from TK_Wrk_Man A
                             left join TMateriel_Info B on A.materiel_code=B.partcode
@@ -463,7 +475,7 @@
         #endregion
 
         #region[MES宸ュ崟鏂板銆佺紪杈戞彁浜
-        public static ToMessage AddUpdateMesOrder(string mesorderstus, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
+        public static ToMessage AddUpdateMesOrder(string mesorderstus,string sourceorder,string ordertype, string mesordercode, string partcode, string mesqty, string routecode, string wkshopcode, string planstartdate, string planenddate, string orderlev, string username, string opertype)
         {
             var sql = "";
             var dynamicParams = new DynamicParameters();
@@ -473,14 +485,16 @@
                 if (opertype == "Add")
                 {
                     //鍐欏叆宸ュ崟琛�
-                    sql = @"insert into TK_Wrk_Man(wo_code,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
-                                values(@mesordercode,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
+                    sql = @"insert into TK_Wrk_Man(wo_code,wotype,m_po,status,wkshp_code,plan_qty,plan_startdate,plan_enddate,route_code,stck_code,lm_user,lm_date,materiel_code,m_po,piroque)
+                                values(@mesordercode,@wotype,@m_po,@mesorderstus,@wkshopcode,@mesqty,@planstartdate,@planenddate,@routecode,@stck_code,@username,@CreateDate,@materiel_code,@m_po,@orderlev)";
                     list.Add(new
                     {
                         str = sql,
                         parm = new
                         {
                             mesordercode = mesordercode,
+                            wotype = ordertype,
+                            m_po = sourceorder,
                             mesorderstus = "ALLO", //娲惧彂
                             wkshopcode = wkshopcode,
                             mesqty = mesqty,
@@ -491,7 +505,6 @@
                             username = username,
                             CreateDate = DateTime.Now.ToString(),
                             materiel_code = partcode,
-                            m_po = "",
                             orderlev = orderlev
                         }
                     });
@@ -1538,7 +1551,7 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦]
-        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode, string username)
+        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode,string remarks, string username)
         {
             var sql = "";
             string[] arra = new string[] { };
@@ -1579,16 +1592,20 @@
                 }
                 if (data.Rows.Count > 0)
                 {
-                    //淇敼鎶ュ伐璁板綍
-                    sql = @"update TK_Wrk_Record set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty,
-                                lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode and step_code=@stepcode and style='B'";
-                    list.Add(new { str = sql, parm = new { reportqty = decimal.Parse(reportqty), ngqty = decimal.Parse(ngqty), mesordercode = mesordercode, stepcode = stepcode, username = username, CreateDate = date } });
+                    //鑾峰彇涓昏〃鏈�澶D
+                    sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_Record')+1,1) as id";
+                    var dt = DapperHelper.selecttable(sql);
+                    //鍐欏叆寮�鎶ュ伐璁板綍琛�
+                    sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date) 
+                                values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date)";
+                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = username, lm_date = date } });
+
                     //鍐欏叆瀛愯〃
                     for (int i = 0; i < arra.Length; i++)
                     {
                         sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date) 
                                 values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
-                        list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
+                        list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
 
                     }
                     if (badcode != "" && ngqty != "0")
@@ -1596,12 +1613,35 @@
                         //鍐欏叆缂洪櫡璁板綍琛�
                         for (int i = 0; i < arra1.Length; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i],remarks=remarks,style = "B", lm_user = username, lm_date = date } });
 
                         }
                     }
+                    ////淇敼鎶ュ伐璁板綍
+                    //sql = @"update TK_Wrk_Record set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty,
+                    //            lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode and step_code=@stepcode and style='B'";
+                    //list.Add(new { str = sql, parm = new { reportqty = decimal.Parse(reportqty), ngqty = decimal.Parse(ngqty), mesordercode = mesordercode, stepcode = stepcode, username = username, CreateDate = date } });
+                    ////鍐欏叆瀛愯〃
+                    //for (int i = 0; i < arra.Length; i++)
+                    //{
+                    //    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date) 
+                    //            values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
+                    //    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
+
+                    //}
+                    //if (badcode != "" && ngqty != "0")
+                    //{
+                    //    //鍐欏叆缂洪櫡璁板綍琛�
+                    //    for (int i = 0; i < arra1.Length; i++)
+                    //    {
+                    //        sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
+                    //            values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
+                    //        list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
+
+                    //    }
+                    //}
                 }
                 else
                 {
@@ -1626,9 +1666,9 @@
                         //鍐欏叆缂洪櫡璁板綍琛�
                         for (int i = 0; i < arra1.Length; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "B", lm_user = username, lm_date = date } });
 
                         }
                     }
@@ -1748,7 +1788,7 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐, 鏀舵枡鎻愪氦]
-        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string username)
+        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inuser, string taskqty, string sqty, string ngqty, string badcode,string remarks, string username)
         {
             var sql = "";
             string[] arra1 = new string[] { };
@@ -1788,26 +1828,52 @@
                 }
                 if (data.Rows.Count > 0)
                 {
-                    //淇敼澶栧崗璁板綍涓昏〃
-                    sql = @"update TK_Wrk_OutRecord set sqty=sqty+@sqty,ng_qty=ng_qty+@ngqty,lm_user=@username,lm_date=@CreateDate
-                             where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code and style='S'";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, sqty = decimal.Parse(sqty), ngqty = decimal.Parse(ngqty), username = username, CreateDate = date } });
+                    //鑾峰彇涓昏〃鏈�澶D
+                    sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_OutRecord')+1,1) as id";
+                    var dt = DapperHelper.selecttable(sql);
+                    //鍐欏叆澶栧崗璁板綍涓昏〃
+                    sql = @"insert into  TK_Wrk_OutRecord(wo_code,step_seq,step_code,wx_code,materiel_code,style,sqty,ng_qty,lm_user,lm_date) 
+                                values(@mesordercode,@stepseq,@stepcode,@wx_code,@partcode,@style,@sqty,@ngqty,@lm_user,@lm_date)";
+                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, wx_code = wxcode, partcode = partcode, style = 'S', sqty = sqty, ngqty = ngqty, lm_user = username, lm_date = date } });
+
                     //鍐欏叆澶栧崗璁板綍瀛愯〃
                     sql = @"insert into  TK_Wrk_OutRecordSub(m_id,wx_code,in_person,in_time,sqty,ng_qty,style,lm_user,lm_date) 
-                                values(@m_id,@wx_code,@in_person,@in_time,@sqty,@ngqty,@style,@lm_user,@lm_date)";
-                    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), wx_code = wxcode, in_person = inuser, in_time = date, sqty = sqty, ngqty = ngqty, style = 'S', lm_user = username, lm_date = date } });
+                                values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
+                    list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
 
                     if (badcode != "" && ngqty != "0")
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
                         for (int i = 0; i < arra1.Length; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "S", lm_user = username, lm_date = date } });
 
                         }
                     }
+
+
+                    ////淇敼澶栧崗璁板綍涓昏〃
+                    //sql = @"update TK_Wrk_OutRecord set sqty=sqty+@sqty,ng_qty=ng_qty+@ngqty,lm_user=@username,lm_date=@CreateDate
+                    //         where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code and style='S'";
+                    //list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, sqty = decimal.Parse(sqty), ngqty = decimal.Parse(ngqty), username = username, CreateDate = date } });
+                    ////鍐欏叆澶栧崗璁板綍瀛愯〃
+                    //sql = @"insert into  TK_Wrk_OutRecordSub(m_id,wx_code,in_person,in_time,sqty,ng_qty,style,lm_user,lm_date) 
+                    //            values(@m_id,@wx_code,@in_person,@in_time,@sqty,@ngqty,@style,@lm_user,@lm_date)";
+                    //list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), wx_code = wxcode, in_person = inuser, in_time = date, sqty = sqty, ngqty = ngqty, style = 'S', lm_user = username, lm_date = date } });
+
+                    //if (badcode != "" && ngqty != "0")
+                    //{
+                    //    //鍐欏叆缂洪櫡璁板綍琛�
+                    //    for (int i = 0; i < arra1.Length; i++)
+                    //    {
+                    //        sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
+                    //            values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
+                    //        list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
+
+                    //    }
+                    //}
                 }
                 else
                 {
@@ -1829,9 +1895,9 @@
                         //鍐欏叆缂洪櫡璁板綍琛�
                         for (int i = 0; i < arra1.Length; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "S", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks= remarks, style = "S", lm_user = username, lm_date = date } });
 
                         }
                     }
@@ -2166,23 +2232,37 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛榏
-        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr, string username, List<StepCheck> json)
+        public static ToMessage SaveMesOrderStepCheckItem(string mesordercode, string partcode, string stepcode, string checkstanedcode, string checkusercode, string checktypecode, string checkresult, string checkdescr,string checkqty, string username, List<StepCheck> json)
         {
             var sql = "";
             string[] arra = new string[] { };
             string[] arra1 = new string[] { };
             List<object> list = new List<object>();
+            string checktypename = "";
             var dynamicParams = new DynamicParameters();
             try
             {
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
 
                 list.Clear();
-
+                switch (checktypecode)
+                {
+                    case "FirstCheck":
+                        checktypename = "棣栨";
+                        break;
+                    case "PatroCheck":
+                        checktypename = "宸℃";
+                        break;
+                    case "EndCheck":
+                        checktypename = "瀹屽伐妫�楠�";
+                        break;
+                    default:
+                        break;
+                }
                 //鍐欏叆宸ュ簭妫�楠岃褰曚富琛�
-                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_result,check_descr,lm_user,lm_date) 
-                                values(@mesordercode,@partcode,@stepcode,@checkstanedcode,@checkusercode,@checktypecode,@checkresult,@checkdescr,@lm_user,@lm_date)";
-                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, partcode = partcode, stepcode = stepcode, checkstanedcode = checkstanedcode, checkusercode = checkusercode, checktypecode = checktypecode, checkresult = checkresult, checkdescr = checkdescr, lm_user = username, lm_date = date } });
+                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,check_result,check_descr,check_qty,lm_user,lm_date) 
+                                values(@mesordercode,@partcode,@stepcode,@checkstanedcode,@checkusercode,@checktypecode,@checktypename,@checkresult,@checkdescr,@check_qty,@lm_user,@lm_date)";
+                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, partcode = partcode, stepcode = stepcode, checkstanedcode = checkstanedcode, checkusercode = checkusercode, checktypecode = checktypecode, checktypename = checktypename, checkresult = checkresult, checkdescr = checkdescr, check_qty=checkqty, lm_user = username, lm_date = date } });
                 //鍐欏叆宸ュ簭妫�楠岃褰曞瓙琛�
                 //鑾峰彇涓昏〃鏈�澶D
                 sql = @"select ISNULL(IDENT_CURRENT('TStepCheckRecord')+1,1) as id";
diff --git a/VueWebApi/DLL/DAL/QualityManagementDAL.cs b/VueWebApi/DLL/DAL/QualityManagementDAL.cs
index fb94930..96a995d 100644
--- a/VueWebApi/DLL/DAL/QualityManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/QualityManagementDAL.cs
@@ -637,5 +637,234 @@
         }
         #endregion
 
+
+        #region[宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇
+        public static ToMessage StepCheckTableSearch(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, int startNum, int endNum, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (wocode != "" && wocode != null)
+                {
+                    search += "and A.wo_code like '%'+@wocode+'%' ";
+                    dynamicParams.Add("@wocode", wocode);
+                }
+                if (partcode != "" && partcode != null)
+                {
+                    search += "and A.partcode like '%'+@stanedname+'%' ";
+                    dynamicParams.Add("@partcode", partcode);
+                }
+                if (partname != "" && partname != null)
+                {
+                    search += "and B.partname like '%'+@partname+'%' ";
+                    dynamicParams.Add("@partname", partname);
+                }
+                if (partapec != "" && partapec != null)
+                {
+                    search += "and B.partspec like '%'+@partapec+'%' ";
+                    dynamicParams.Add("@partapec", partapec);
+                }
+                if (stepname != "" && stepname != null)
+                {
+                    search += "and S.stepname like '%'+@stepname+'%' ";
+                    dynamicParams.Add("@stepname", stepname);
+                }
+                if (standname != "" && standname != null)
+                {
+                    search += "and T.name like '%'+@standname+'%' ";
+                    dynamicParams.Add("@standname", standname);
+                }
+                if (checktype != "" && checktype != null)
+                {
+                    search += "and A.check_type=@checktype ";
+                    dynamicParams.Add("@checktype", checktype);
+                }
+                if (checkresult != "" && checkresult != null)
+                {
+                    search += "and A.check_result=@checkresult ";
+                    dynamicParams.Add("@checkresult", checkresult);
+                }
+                if (search == "")
+                {
+                    search = "and 1=1 ";
+                }
+                search = search.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select A.wo_code,A.partcode,B.partname,B.partspec,A.step_code,S.stepname,A.checkstaned_code,T.name as checkstaned_name,A.check_user,
+                            A.check_type,A.check_result,A.check_descr,A.check_qty,U.username as lm_user,A.lm_date   
+                            from TStepCheckRecord A
+                            left join TMateriel_Info B on A.partcode=B.partcode
+                            left join TStep S on A.step_code=S.stepcode
+                            left join TStepCheckStandard T on A.checkstaned_code=T.code
+                            left join TUser U on A.lm_user=U.usercode 
+                            where " + search;
+                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
+                mes.code = "200";
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.count = total;
+                mes.data = data.ToList();
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠岃褰曞垪琛ㄦ槑缁嗘煡璇
+        public static ToMessage StepCheckTableSubSearch(string id)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select A.checkitem_seq,A.checkitem_code,A.checkitem_name,A.checkitem_descr,A.check_result,U.username as lm_user,A.lm_date
+                        from TStepCheckRecordSub A
+                        left join TUser U on A.lm_user=U.usercode
+                        where A.m_id=@id";
+                dynamicParams.Add("@id", id);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+
+                mes.code = "200";
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.data = data;
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠岃褰曞鍑篯
+        public static ToMessage StepCheckTableOutExcel(string wocode, string partcode, string partname, string partapec, string stepname, string standname, string checktype, string checkresult, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (wocode != "" && wocode != null)
+                {
+                    search += "and A.wo_code like '%'+@wocode+'%' ";
+                    dynamicParams.Add("@wocode", wocode);
+                }
+                if (partcode != "" && partcode != null)
+                {
+                    search += "and A.partcode like '%'+@stanedname+'%' ";
+                    dynamicParams.Add("@partcode", partcode);
+                }
+                if (partname != "" && partname != null)
+                {
+                    search += "and B.partname like '%'+@partname+'%' ";
+                    dynamicParams.Add("@partname", partname);
+                }
+                if (partapec != "" && partapec != null)
+                {
+                    search += "and B.partspec like '%'+@partapec+'%' ";
+                    dynamicParams.Add("@partapec", partapec);
+                }
+                if (stepname != "" && stepname != null)
+                {
+                    search += "and S.stepname like '%'+@stepname+'%' ";
+                    dynamicParams.Add("@stepname", stepname);
+                }
+                if (standname != "" && standname != null)
+                {
+                    search += "and T.name like '%'+@standname+'%' ";
+                    dynamicParams.Add("@standname", standname);
+                }
+                if (checktype != "" && checktype != null)
+                {
+                    search += "and A.check_type=@checktype ";
+                    dynamicParams.Add("@checktype", checktype);
+                }
+                if (checkresult != "" && checkresult != null)
+                {
+                    search += "and A.check_result=@checkresult ";
+                    dynamicParams.Add("@checkresult", checkresult);
+                }
+                if (search == "")
+                {
+                    search = "and 1=1 ";
+                }
+                search = search.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select 
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.wo_code ORDER BY B.checkitem_code) = 1 THEN A.wo_code
+                            ELSE ''END AS '宸ュ崟鍙�',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.partcode ORDER BY B.checkitem_code) = 1 THEN M.partcode
+                            ELSE ''END AS '浜у搧缂栫爜',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.partcode ORDER BY B.checkitem_code) = 1 THEN M.partname
+                            ELSE ''END AS '浜у搧鍚嶇О',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.partcode ORDER BY B.checkitem_code) = 1 THEN M.partspec
+                            ELSE ''END AS '瑙勬牸鍨嬪彿',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.step_code ORDER BY B.checkitem_code) = 1 THEN S.stepname
+                            ELSE ''END AS '宸ュ簭鍚嶇О',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.checkstaned_code ORDER BY B.checkitem_code) = 1 THEN A.checkstaned_code
+                            ELSE ''END AS '鏍囧噯缂栫爜',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.checkstaned_code ORDER BY B.checkitem_code) = 1 THEN T.name
+                            ELSE ''END AS '鏍囧噯鍚嶇О',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.check_user ORDER BY B.checkitem_code) = 1 THEN U.username
+                            ELSE ''END AS '妫�楠屼汉鍛�',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.check_typename ORDER BY B.checkitem_code) = 1 THEN A.check_typename
+                            ELSE ''END AS '妫�楠岀被鍨�',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.check_result ORDER BY B.checkitem_code) = 1 THEN A.check_result
+                            ELSE ''END AS '妫�楠岀粨鏋�',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.check_descr ORDER BY B.checkitem_code) = 1 THEN A.check_descr
+                            ELSE ''END AS '妫�楠屾弿杩�',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.check_qty ORDER BY B.checkitem_code) = 1 THEN A.check_qty
+                            END AS '妫�楠屾暟閲�',
+	                        CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.lm_date ORDER BY B.checkitem_code) = 1 THEN A.lm_date
+                            END AS '妫�楠屾椂闂�',
+                            B.checkitem_seq as '妫�楠岄」鐩簭鍙�',B.checkitem_code '妫�楠岄」鐩紪鐮�',B.checkitem_name '妫�楠岄」鐩悕绉�',B.checkitem_descr '妫�楠岄」鐩弿杩�',B.check_result '妫�楠岄」鐩粨鏋�'
+                            from TStepCheckRecord A
+                            left join TStepCheckRecordSub B on A.id=B.m_id
+                            left join TMateriel_Info M on A.partcode=M.partcode
+                            left join TStep S on A.step_code=S.stepcode
+                            left join TStepCheckStandard T on A.checkstaned_code=T.code
+                            left join TUser U on A.check_user=U.usercode  
+                            where " + search;
+                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
+                data.TableName ="Table"; //璁剧疆DataTable鐨勫悕绉�
+                string msg = DownLoad.DataTableToExcel(data, "宸ュ簭妫�楠岃褰�");
+                mes.code = "200";
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.count = total;
+                mes.data = msg;
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/VueWebApi/File/newxls/20220826120105760.xlsx b/VueWebApi/File/newxls/20220826120105760.xlsx
new file mode 100644
index 0000000..677d55c
--- /dev/null
+++ b/VueWebApi/File/newxls/20220826120105760.xlsx
Binary files differ
diff --git "a/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826111001.xls" "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826111001.xls"
new file mode 100644
index 0000000..e0a5da5
--- /dev/null
+++ "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826111001.xls"
Binary files differ
diff --git "a/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826112554.xls" "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826112554.xls"
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826112554.xls"
diff --git "a/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826122922020.xlsx" "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826122922020.xlsx"
new file mode 100644
index 0000000..17bca0e
--- /dev/null
+++ "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826122922020.xlsx"
Binary files differ
diff --git "a/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826123323771.xlsx" "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826123323771.xlsx"
new file mode 100644
index 0000000..8f72e97
--- /dev/null
+++ "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826123323771.xlsx"
Binary files differ
diff --git "a/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826152043175.xlsx" "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826152043175.xlsx"
new file mode 100644
index 0000000..ad5e80b
--- /dev/null
+++ "b/VueWebApi/File/newxls/\345\267\245\345\272\217\346\243\200\351\252\214\350\256\260\345\275\22520220826152043175.xlsx"
Binary files differ
diff --git a/VueWebApi/Logs/2022-08-25.TXT b/VueWebApi/Logs/2022-08-25.TXT
new file mode 100644
index 0000000..9c05974
--- /dev/null
+++ b/VueWebApi/Logs/2022-08-25.TXT
@@ -0,0 +1,115 @@
+ 【时间】:2022-08-25 15:41:35,441
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 8 
+ 【文件地址】:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:“)”附近有语法错误。
+关键字 'AS' 附近有语法错误。
+引发异常路径:/api/DeviceManager/DeviceCheckStandArdSearch
+引发异常的方法:OnError
+引发异常源:.Net SqlClient Data Provider   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
+   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
+   在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
+   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
+   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
+   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
+   在 Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
+   在 Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
+   在 VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) 位置 D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 160
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
+ 【时间】:2022-08-25 15:43:03,620
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 8 
+ 【文件地址】:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:“)”附近有语法错误。
+关键字 'AS' 附近有语法错误。
+引发异常路径:/api/DeviceManager/DeviceCheckStandArdSearch
+引发异常的方法:OnError
+引发异常源:.Net SqlClient Data Provider   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
+   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
+   在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
+   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
+   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
+   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
+   在 Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
+   在 Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
+   在 VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) 位置 D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 160
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
+ 【时间】:2022-08-25 15:45:03,124
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 39 
+ 【文件地址】:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:“)”附近有语法错误。
+关键字 'AS' 附近有语法错误。
+引发异常路径:/api/DeviceManager/DeviceCheckStandArdSearch
+引发异常的方法:OnError
+引发异常源:.Net SqlClient Data Provider   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
+   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
+   在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
+   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
+   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
+   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
+   在 Dapper.SqlMapper.QueryMultipleImpl(IDbConnection cnn, CommandDefinition& command)
+   在 Dapper.SqlMapper.QueryMultiple(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
+   在 VueWebApi.Tools.DapperHelper.GetPageList[T](String sql, Object parm, String orderBy, String sort, Int32 pageIndex, Int32 pageSize, Int32& total) 位置 D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 160
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
+ 【时间】:2022-08-25 19:57:55,721
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 9 
+ 【文件地址】:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
+引发异常路径:/api/ProductionManagement/SavaMesOrderStepReport
+引发异常的方法:OnError
+引发异常源:.Net SqlClient Data Provider   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
+   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
+   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
+   在 Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader)
+   在 Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command)
+   在 Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
+   在 VueWebApi.Tools.DapperHelper.DoTransaction(List`1 sqlList) 位置 D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 425
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
diff --git a/VueWebApi/Logs/2022-08-26.TXT b/VueWebApi/Logs/2022-08-26.TXT
new file mode 100644
index 0000000..a2f4f79
--- /dev/null
+++ b/VueWebApi/Logs/2022-08-26.TXT
@@ -0,0 +1,58 @@
+ 【时间】:2022-08-26 15:11:23,377
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 12 
+ 【文件地址】:D:\新凯迪MES\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:列名 'checktypename' 无效。
+引发异常路径:/api/QualityManagement/StepCheckTableOutExcel
+引发异常的方法:OnError
+引发异常源:.Net SqlClient Data Provider   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
+   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
+   在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
+   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
+   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
+   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderImpl(IDbConnection cnn, CommandDefinition& command, CommandBehavior commandBehavior, IDbCommand& cmd)
+   在 Dapper.SqlMapper.ExecuteReader(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
+   在 VueWebApi.Tools.DapperHelper.selectdata(String sql, Object parm) 位置 D:\新凯迪MES\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 195
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
+ 【时间】:2022-08-26 15:12:52,425
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 12 
+ 【文件地址】: 第0行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:列名 'checktypename' 无效。
+引发异常路径:/api/QualityManagement/StepCheckTableOutExcel
+引发异常的方法:OnError
+引发异常源:.Net SqlClient Data Provider   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
+   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
+   在 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
+   在 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
+   在 System.Data.SqlClient.SqlDataReader.get_MetaData()
+   在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
+   在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
+   在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
+   在 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderWithFlagsFallback(IDbCommand cmd, Boolean wasClosed, CommandBehavior behavior)
+   在 Dapper.SqlMapper.ExecuteReaderImpl(IDbConnection cnn, CommandDefinition& command, CommandBehavior commandBehavior, IDbCommand& cmd)
+   在 Dapper.SqlMapper.ExecuteReader(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
+   在 VueWebApi.Tools.DapperHelper.selectdata(String sql, Object parm)
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
diff --git a/VueWebApi/Models/AppDevicecCheck.cs b/VueWebApi/Models/AppDevicecCheck.cs
new file mode 100644
index 0000000..d6a3d90
--- /dev/null
+++ b/VueWebApi/Models/AppDevicecCheck.cs
@@ -0,0 +1,24 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace VueWebApi.Models
+{
+    public class AppDevicecCheck
+    {
+        public string code { get; set; }
+        public string name { get; set; }
+        public string standcode { get; set; }
+        public string result { get; set; }
+        public List<AppDevicecCheckCn> children { get; set; }//瀛愯妭鐐�
+    }
+    public class AppDevicecCheckCn 
+    {
+        public string seq { get; set; }
+        public string itemcode { get; set; }
+        public string cycle { get; set; }
+        public string value { get; set; }
+        public string result { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Models/StandEqp.cs b/VueWebApi/Models/StandEqp.cs
new file mode 100644
index 0000000..84cf9f8
--- /dev/null
+++ b/VueWebApi/Models/StandEqp.cs
@@ -0,0 +1,25 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace VueWebApi.Models
+{
+    public class StandEqp
+    {
+        public string code { get; set; }
+        public string name { get; set; }
+        public string type { get; set; }
+        public string flag { get; set; }
+        public string flag1 { get; set; }
+        public List<StandEqpCn> children { get; set; }//瀛愯妭鐐�
+    }
+    public class StandEqpCn
+    {
+        public string code { get; set; }
+        public string name { get; set; }
+        public string type { get; set; }
+        public string flag { get; set; }
+        public string flag1 { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user b/VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
index 4040536..2bc47c4 100644
--- a/VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
+++ b/VueWebApi/Properties/PublishProfiles/FolderProfile.pubxml.user
@@ -5,7 +5,7 @@
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <_PublishTargetUrl>D:\缃戠珯鍙戝竷\XKDMesApi</_PublishTargetUrl>
-    <History>True|2022-08-23T14:50:41.0238571Z;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History>
+    <History>True|2022-08-26T08:00:22.2697361Z;False|2022-08-26T15:58:16.7347649+08:00;True|2022-08-26T15:22:29.6367466+08:00;True|2022-08-25T20:02:24.4685508+08:00;True|2022-08-25T19:50:42.8601696+08:00;True|2022-08-25T15:56:20.3615518+08:00;True|2022-08-25T15:48:16.9923580+08:00;True|2022-08-25T15:27:07.9474640+08:00;True|2022-08-25T13:11:36.9626131+08:00;True|2022-08-24T14:10:58.2790665+08:00;True|2022-08-24T11:43:10.4463552+08:00;True|2022-08-24T08:02:17.9871411+08:00;True|2022-08-23T22:50:41.0238571+08:00;True|2022-08-23T22:16:20.9249814+08:00;True|2022-08-23T21:59:21.1909300+08:00;True|2022-08-23T21:50:40.8106496+08:00;True|2022-08-23T21:06:55.6611505+08:00;True|2022-08-23T19:49:07.0507418+08:00;True|2022-08-23T19:03:15.9808046+08:00;True|2022-08-23T18:58:57.1700899+08:00;True|2022-08-23T18:54:26.8058591+08:00;True|2022-08-23T18:45:39.1928602+08:00;True|2022-08-23T17:32:10.6125039+08:00;True|2022-08-23T15:58:34.9205174+08:00;True|2022-08-23T15:49:21.3383764+08:00;True|2022-08-23T15:14:21.0775398+08:00;True|2022-08-23T15:04:07.8829410+08:00;True|2022-08-23T14:59:17.5143895+08:00;True|2022-08-23T14:55:17.0069050+08:00;True|2022-08-23T14:41:41.0884731+08:00;True|2022-08-23T14:41:06.5045325+08:00;True|2022-08-23T14:28:54.7390570+08:00;True|2022-08-23T13:56:59.3670549+08:00;True|2022-08-23T13:56:38.8588174+08:00;True|2022-08-22T20:48:56.2180227+08:00;True|2022-08-22T19:07:12.1093584+08:00;True|2022-08-22T19:04:07.7837887+08:00;True|2022-08-22T14:38:00.9342884+08:00;True|2022-08-22T10:59:23.2073567+08:00;True|2022-08-22T10:53:58.0920733+08:00;True|2022-08-22T10:53:10.2446944+08:00;True|2022-08-22T10:43:35.3791396+08:00;True|2022-08-18T09:45:46.4643950+08:00;True|2022-08-18T09:40:55.2601145+08:00;True|2022-08-16T16:17:14.3399134+08:00;True|2022-08-15T17:58:16.1460123+08:00;True|2022-08-15T17:55:55.7137518+08:00;True|2022-08-15T17:44:37.6024482+08:00;True|2022-08-15T17:44:21.9583041+08:00;True|2022-08-15T17:43:23.1305690+08:00;True|2022-08-15T17:29:31.1670490+08:00;True|2022-08-15T17:26:42.9269470+08:00;True|2022-08-15T17:23:27.0940168+08:00;True|2022-08-15T17:07:32.9192045+08:00;True|2022-08-15T16:47:03.8611076+08:00;True|2022-08-15T16:41:50.6843705+08:00;True|2022-08-15T16:38:26.7407413+08:00;True|2022-08-15T16:31:49.0805578+08:00;True|2022-08-15T16:27:33.6712012+08:00;True|2022-08-15T16:24:35.1042794+08:00;True|2022-08-15T16:21:57.2757683+08:00;True|2022-08-15T16:18:17.3545368+08:00;True|2022-08-15T16:15:04.2645412+08:00;True|2022-08-15T14:44:09.3078026+08:00;True|2022-08-15T11:20:09.2930712+08:00;True|2022-08-15T10:42:12.2991587+08:00;True|2022-08-15T10:41:38.3711025+08:00;True|2022-08-15T10:19:06.9974383+08:00;True|2022-08-12T17:15:09.2133281+08:00;True|2022-08-12T10:48:05.8776009+08:00;True|2022-08-12T10:26:16.4183447+08:00;True|2022-08-12T08:33:01.9502005+08:00;True|2022-08-11T09:06:08.8394009+08:00;True|2022-08-11T08:39:06.2534634+08:00;True|2022-08-11T08:05:13.6919725+08:00;True|2022-08-08T14:48:16.3637965+08:00;True|2022-08-05T15:44:02.3797448+08:00;True|2022-08-05T09:57:55.7744103+08:00;True|2022-08-04T15:24:38.8785046+08:00;True|2022-08-04T15:11:16.7054147+08:00;True|2022-08-04T14:53:52.7239932+08:00;True|2022-08-04T14:48:35.6115863+08:00;True|2022-08-04T14:39:16.1113507+08:00;True|2022-08-04T12:26:39.4998322+08:00;True|2022-08-04T10:34:23.9626503+08:00;True|2022-08-04T08:12:51.4305728+08:00;True|2022-08-03T15:43:09.2317512+08:00;True|2022-08-02T19:17:55.0460145+08:00;True|2022-08-02T19:08:13.5872184+08:00;True|2022-08-02T18:50:12.1280167+08:00;True|2022-08-02T18:05:53.6540810+08:00;True|2022-08-02T16:13:26.3567210+08:00;True|2022-08-02T15:27:59.9264333+08:00;True|2022-07-25T15:35:49.6958399+08:00;True|2022-07-25T15:30:40.4444876+08:00;True|2022-07-25T13:33:38.4068153+08:00;True|2022-07-22T15:00:56.7326322+08:00;True|2022-07-22T14:51:18.0169121+08:00;True|2022-07-22T14:26:08.4246205+08:00;True|2022-07-22T14:23:05.0897016+08:00;True|2022-07-22T14:18:18.7806854+08:00;True|2022-07-22T14:09:29.7924367+08:00;True|2022-07-22T14:02:26.6403133+08:00;True|2022-07-22T13:56:40.0887615+08:00;True|2022-07-22T13:50:10.7852190+08:00;True|2022-07-22T11:38:25.6671780+08:00;True|2022-07-22T10:55:36.7947659+08:00;True|2022-07-21T17:53:41.1464086+08:00;True|2022-07-21T17:43:33.5311479+08:00;True|2022-07-21T16:09:07.7687640+08:00;True|2022-07-21T16:04:47.9317019+08:00;True|2022-07-21T15:58:21.2359033+08:00;True|2022-07-21T15:56:07.7425829+08:00;True|2022-07-21T15:51:34.7108381+08:00;True|2022-07-21T15:48:57.5735708+08:00;True|2022-07-21T15:44:25.8205030+08:00;True|2022-07-21T15:25:51.4222269+08:00;True|2022-07-21T15:22:36.8818295+08:00;True|2022-07-21T15:19:28.8532774+08:00;True|2022-07-21T14:57:45.7532568+08:00;True|2022-07-21T11:16:12.0900762+08:00;True|2022-07-21T10:10:40.4714948+08:00;True|2022-07-21T10:00:19.5258058+08:00;True|2022-07-14T14:34:28.5093226+08:00;True|2022-07-14T13:59:59.7754985+08:00;True|2022-07-14T12:46:29.6685284+08:00;True|2022-07-14T09:22:25.9079652+08:00;True|2022-07-14T09:22:04.6797478+08:00;True|2022-07-14T09:10:45.0177607+08:00;True|2022-07-14T08:41:43.3026713+08:00;True|2022-07-14T08:27:32.7454972+08:00;True|2022-07-14T08:21:58.6572366+08:00;True|2022-07-14T08:17:59.2904747+08:00;True|2022-07-14T08:12:39.8483472+08:00;True|2022-06-30T15:04:41.6941982+08:00;True|2022-06-24T16:39:01.1080301+08:00;True|2022-06-17T13:23:15.1455451+08:00;True|2022-06-17T13:22:18.5517557+08:00;True|2022-06-17T13:19:27.7323818+08:00;True|2022-06-17T13:12:24.1252779+08:00;True|2022-06-17T13:09:20.4234258+08:00;True|2022-06-17T13:06:49.9869509+08:00;True|2022-06-17T12:58:54.6964621+08:00;False|2022-06-17T12:58:10.6767711+08:00;False|2022-06-17T12:57:08.9747950+08:00;False|2022-06-17T12:56:18.4650121+08:00;False|2022-06-17T12:55:57.9981927+08:00;True|2022-06-13T14:21:36.5610928+08:00;True|2022-06-13T11:41:39.4210151+08:00;True|2022-06-11T02:35:03.4727934+08:00;True|2022-06-11T02:31:13.7362660+08:00;True|2022-06-11T02:30:58.3616790+08:00;True|2022-06-11T01:57:04.4951468+08:00;True|2022-06-10T13:27:13.2097124+08:00;</History>
   </PropertyGroup>
   <ItemGroup>
     <File Include="Areas/HelpPage/HelpPage.css">
@@ -696,16 +696,16 @@
       <publishTime>12/24/2021 15:38:29</publishTime>
     </File>
     <File Include="bin/VueWebApi.dll">
-      <publishTime>08/23/2022 22:50:32</publishTime>
+      <publishTime>08/26/2022 16:00:15</publishTime>
     </File>
     <File Include="bin/VueWebApi.dll.config">
       <publishTime>06/15/2022 15:31:43</publishTime>
     </File>
     <File Include="bin/VueWebApi.pdb">
-      <publishTime>08/23/2022 22:50:32</publishTime>
+      <publishTime>08/26/2022 16:00:15</publishTime>
     </File>
     <File Include="bin/VueWebApi.xml">
-      <publishTime>08/23/2022 22:50:32</publishTime>
+      <publishTime>08/26/2022 16:00:15</publishTime>
     </File>
     <File Include="bin/WebActivatorEx.dll">
       <publishTime>02/08/2013 16:42:28</publishTime>
@@ -1449,7 +1449,7 @@
       <publishTime>06/10/2022 08:20:24</publishTime>
     </File>
     <File Include="Web.config">
-      <publishTime>08/23/2022 22:50:40</publishTime>
+      <publishTime>08/26/2022 16:00:21</publishTime>
     </File>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/VueWebApi/Tools/DALSkillCondition.cs b/VueWebApi/Tools/DALSkillCondition.cs
new file mode 100644
index 0000000..bad754b
--- /dev/null
+++ b/VueWebApi/Tools/DALSkillCondition.cs
@@ -0,0 +1,35 @@
+锘�
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Web;
+
+namespace VueWebApi.Tools
+{
+    public class DALSkillCondition
+    {
+        /// <summary>
+        /// 涓嬭浇excel
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="num"></param>
+        /// <returns></returns>
+        #region
+        public static bool ResultExcel(string path, DataTable dt)
+        {
+            try
+            {
+
+                NPOIHelper.ExportEasy(dt, path);
+                return true;
+            }
+            catch (Exception)
+            {
+                throw;
+            }
+
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Tools/DownLoad.cs b/VueWebApi/Tools/DownLoad.cs
new file mode 100644
index 0000000..c682fa6
--- /dev/null
+++ b/VueWebApi/Tools/DownLoad.cs
@@ -0,0 +1,573 @@
+锘縰sing NPOI.HSSF.UserModel;
+using NPOI.HSSF.Util;
+using NPOI.SS.UserModel;
+using NPOI.SS.Util;
+using NPOI.XSSF.UserModel;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Web;
+
+namespace VueWebApi.Tools
+{
+    public static class DownLoad
+    {
+        ///<summary>
+        ///    涓嬭浇
+        ///</summary>
+        ///<typeparam name="T"></typeparam>
+        ///<param name="data"></param>
+        ///<param name="map">鎵�闇�瑕佺殑鍒�</param>
+        ///<param name="filenName">鏂囦欢鍚嶅瓧</param>
+        ///<returns></returns>
+        public static string Download<T>(this IList<T> data, Dictionary<string, string> map, string filenName)
+        {
+            var filename = filenName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
+            string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
+            var filepath = HttpContext.Current.Server.MapPath("/File/newxls/");
+            var path = filepath + filename;
+
+            if (!Directory.Exists(filepath))
+            {
+                Directory.CreateDirectory(filepath);
+            }
+            var properties = TypeDescriptor.GetProperties(typeof(T));
+            var dt = new DataTable();
+            var list = map.Values;
+            //鏄剧ず琛ㄧ粨鏋�
+            foreach (var row in list)
+            {
+                dt.Columns.Add(row);
+            }
+            //鍙栧��
+            foreach (var item in data)
+            {
+                var i = 0;
+                var values = new object[dt.Columns.Count];
+                foreach (var content in map)
+                {
+                    var property = properties[content.Key];
+                    if (property != null)
+                    {
+                        var value = property.GetValue(item);
+                        if (property.PropertyType == typeof(decimal))
+                        {
+                            if ((decimal)value == 0)
+                            {
+                                value = 0;
+                            }
+                            else
+                            {
+                                value = ((decimal)value).ToString("0.00");
+                            }
+                        }
+                        values[i] = value;
+                        if (Convert.ToString(content).Contains("鐜�"))
+                        {
+                            values[i] = value + "%";
+                        }
+
+                    }
+                    else
+                    {
+                        values[i] = DBNull.Value;
+                    }
+                    i++;
+                }
+                dt.Rows.Add(values);
+            }
+            var b = DALSkillCondition.ResultExcel(path, dt);
+            if (b)
+            {
+                var url = fileip + "/apis/File/newxls/" + filename;
+                return url;
+            }
+            var messge = filename + "涓嬭浇澶辫触";
+            return messge;
+        }
+
+        /// <summary>
+        /// Datas the set to excel.
+        /// </summary>
+        /// <param name="ds">The ds.</param>
+        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
+        public static string DataSetToExcel(DataSet ds, string filenName)
+        {
+            try
+            {
+                string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
+                string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
+                string filePath = HttpContext.Current.Server.MapPath("/File/newxls/");
+                Directory.CreateDirectory(filePath);
+                string Path = filePath + fileName;
+
+                FileStream fs = null;
+                XSSFWorkbook workbook = new XSSFWorkbook();
+                for (int i = 0; i < ds.Tables.Count; i++)
+                {
+                    XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet(ds.Tables[i].TableName);
+                    XSSFCellStyle dateStyle = (XSSFCellStyle)workbook.CreateCellStyle();
+                    XSSFDataFormat format = (XSSFDataFormat)workbook.CreateDataFormat();
+                    dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");
+
+                    int rowIndex = 0;
+
+                    #region 鏂板缓琛紝濉厖琛ㄥご锛屽~鍏呭垪澶达紝鏍峰紡
+
+                    if (rowIndex == 0)
+                    {
+                        #region 鍒楀ご鍙婃牱寮�
+
+                        XSSFRow headerRow = (XSSFRow)sheet.CreateRow(0);
+                        XSSFCellStyle headStyle = (XSSFCellStyle)workbook.CreateCellStyle();
+                        headStyle.Alignment = HorizontalAlignment.Center;
+
+                        XSSFFont font = (XSSFFont)workbook.CreateFont();
+                        font.FontName = "寰蒋闆呴粦";
+                        font.FontHeightInPoints = 12; //瀛椾綋澶у皬
+                        font.Boldweight = 700;//瀛椾綋鍔犵矖
+                        headStyle.SetFont(font);
+                        //鑷畾涔夎〃澶�
+                        for (var j = 0; j < ds.Tables[i].Columns.Count; j++)
+                        {
+                            sheet.SetColumnWidth(j, 30 * 256);//
+                            //sheet.AutoSizeColumn(j); //鑷�傚簲瀹藉害
+                            headerRow.CreateCell(j).SetCellValue(ds.Tables[i].Columns[j].ColumnName);
+                            headerRow.GetCell(j).CellStyle = headStyle;
+                        }
+
+                        #endregion
+
+                        rowIndex = 1;
+                    }
+
+                    #endregion
+                    ICellStyle cellstyle = workbook.CreateCellStyle();
+                    cellstyle.VerticalAlignment = VerticalAlignment.Center;
+                    cellstyle.Alignment = HorizontalAlignment.Center;
+                    foreach (DataRow row in ds.Tables[i].Rows)
+                    {
+                        XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
+
+                        #region 濉厖鍐呭
+
+                        foreach (DataColumn column in ds.Tables[i].Columns)
+                        {
+                            XSSFCell newCell = (XSSFCell)dataRow.CreateCell(column.Ordinal);
+                            string type = row[column].GetType().FullName.ToString();
+                            newCell.SetCellValue(GetValue(row[column].ToString(), type));
+                            newCell.CellStyle = cellstyle;
+                        }
+
+                        #endregion
+
+                        rowIndex++;
+                    }
+                }
+
+                using (fs = File.OpenWrite(Path))
+                {
+                    workbook.Write(fs);
+                    var url = fileip + "/File/newxls/" + fileName;
+                    return url;
+                }
+            }
+            catch (Exception e)
+            {
+                return e.Message;
+            }
+        }
+
+        /// <summary>
+        /// Datas the set to excel.
+        /// </summary>
+        /// <param name="ds">The ds.</param>
+        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
+        public static string DataTableToExcel(DataTable ds, string filenName)
+        {
+            try
+            {
+                string fileName = filenName + DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".xlsx";
+                string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
+                string filePath = HttpContext.Current.Server.MapPath("/File/newxls/");
+                Directory.CreateDirectory(filePath);
+                string Path = filePath + fileName;
+
+                FileStream fs = null;
+                XSSFWorkbook workbook = new XSSFWorkbook();
+
+                XSSFSheet sheet = (XSSFSheet)workbook.CreateSheet(ds.TableName);
+                XSSFCellStyle dateStyle = (XSSFCellStyle)workbook.CreateCellStyle();
+                XSSFDataFormat format = (XSSFDataFormat)workbook.CreateDataFormat();
+                dateStyle.DataFormat = format.GetFormat("yyyy-mm-dd");
+
+                int rowIndex = 0;
+
+                #region 鏂板缓琛紝濉厖琛ㄥご锛屽~鍏呭垪澶达紝鏍峰紡
+
+                if (rowIndex == 0)
+                {
+                    #region 鍒楀ご鍙婃牱寮�
+
+                    XSSFRow headerRow = (XSSFRow)sheet.CreateRow(0);
+                    XSSFCellStyle headStyle = (XSSFCellStyle)workbook.CreateCellStyle();
+                    headStyle.Alignment = HorizontalAlignment.Center;
+
+                    XSSFFont font = (XSSFFont)workbook.CreateFont();
+                    font.FontName = "寰蒋闆呴粦";
+                    font.FontHeightInPoints = 12; //瀛椾綋澶у皬
+                    font.Boldweight = 700;//瀛椾綋鍔犵矖
+                    headStyle.SetFont(font);
+                    //鑷畾涔夎〃澶�
+                    for (var j = 0; j < ds.Columns.Count; j++)
+                    {
+                        sheet.SetColumnWidth(j, 30 * 256);//
+                                                          //sheet.AutoSizeColumn(j); //鑷�傚簲瀹藉害
+                        headerRow.CreateCell(j).SetCellValue(ds.Columns[j].ColumnName);
+                        headerRow.GetCell(j).CellStyle = headStyle;
+                    }
+
+                    #endregion
+
+                    rowIndex = 1;
+                }
+
+                #endregion
+                ICellStyle cellstyle = workbook.CreateCellStyle();
+                cellstyle.VerticalAlignment = VerticalAlignment.Center;
+                cellstyle.Alignment = HorizontalAlignment.Center;
+                foreach (DataRow row in ds.Rows)
+                {
+                    XSSFRow dataRow = (XSSFRow)sheet.CreateRow(rowIndex);
+
+                    #region 濉厖鍐呭
+
+                    foreach (DataColumn column in ds.Columns)
+                    {
+                        XSSFCell newCell = (XSSFCell)dataRow.CreateCell(column.Ordinal);
+                        string type = row[column].GetType().FullName.ToString();
+                        newCell.SetCellValue(GetValue(row[column].ToString(), type));
+                        newCell.CellStyle = cellstyle;
+                    }
+
+                    #endregion
+
+                    rowIndex++;
+                }
+
+
+                using (fs = File.OpenWrite(Path))
+                {
+                    workbook.Write(fs);
+                    var url = fileip + "/File/newxls/" + fileName;
+                    return url;
+                }
+            }
+            catch (Exception e)
+            {
+                return e.Message;
+            }
+        }
+
+        /// <summary>
+        /// Gets the value.
+        /// </summary>
+        /// <param name="cellValue">The cell value.</param>
+        /// <param name="type">The type.</param>
+        /// <returns>System.String.</returns>
+        private static string GetValue(string cellValue, string type)
+        {
+            object value = string.Empty;
+            switch (type)
+            {
+                case "System.String"://瀛楃涓茬被鍨�
+                    value = cellValue;
+                    break;
+                case "System.DateTime"://鏃ユ湡绫诲瀷
+                    System.DateTime dateV;
+                    System.DateTime.TryParse(cellValue, out dateV);
+                    value = dateV;
+                    break;
+                case "System.Boolean"://甯冨皵鍨�
+                    bool boolV = false;
+                    bool.TryParse(cellValue, out boolV);
+                    value = boolV;
+                    break;
+                case "System.Int16"://鏁村瀷
+                case "System.Int32":
+                case "System.Int64":
+                case "System.Byte":
+                    int intV = 0;
+                    int.TryParse(cellValue, out intV);
+                    value = intV;
+                    break;
+                case "System.Decimal"://娴偣鍨�
+                case "System.Double":
+                    double doubV = 0;
+                    double.TryParse(cellValue, out doubV);
+                    value = doubV;
+                    break;
+                case "System.DBNull"://绌哄�煎鐞�
+                    value = string.Empty;
+                    break;
+                default:
+                    value = string.Empty;
+                    break;
+            }
+            return value.ToString();
+        }
+
+
+        /// <summary>
+        /// Datatable鐢熸垚Excel琛ㄦ牸骞惰繑鍥炶矾寰�
+        /// </summary>
+        /// <param name="m_DataTable">Datatable</param>
+        /// <param name="s_FileName">鏂囦欢鍚�</param>
+        /// <returns></returns>
+        public static string DataToExcel(System.Data.DataTable m_DataTable, string filenName)
+        {
+            var filename = filenName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
+            string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
+            var filepath = HttpContext.Current.Server.MapPath("/File/newxls/");
+            var path = filepath + filename;
+
+            //string FileName = AppDomain.CurrentDomain.BaseDirectory + ("/Upload/Excel/") + filenName + ".xls";  //鏂囦欢瀛樻斁璺緞
+            if (System.IO.File.Exists(path))                                //瀛樺湪鍒欏垹闄�
+            {
+                System.IO.File.Delete(path);
+            }
+            System.IO.FileStream objFileStream;
+            System.IO.StreamWriter objStreamWriter;
+            string strLine = "";
+            objFileStream = new System.IO.FileStream(path, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);
+            objStreamWriter = new System.IO.StreamWriter(objFileStream, Encoding.Unicode);
+            for (int i = 0; i < m_DataTable.Columns.Count; i++)
+            {
+
+                strLine = strLine + m_DataTable.Columns[i].Caption.ToString() + Convert.ToChar(9);      //鍐欏垪鏍囬
+            }
+            objStreamWriter.WriteLine(strLine);
+            strLine = "";
+            for (int i = 0; i < m_DataTable.Rows.Count; i++)
+            {
+                for (int j = 0; j < m_DataTable.Columns.Count; j++)
+                {
+                    if (m_DataTable.Rows[i].ItemArray[j] == null)
+                        strLine = strLine + " " + Convert.ToChar(9);                                    //鍐欏唴瀹�
+                    else
+                    {
+                        string rowstr = "";
+                        rowstr = m_DataTable.Rows[i].ItemArray[j].ToString();
+                        if (rowstr.IndexOf("\r\n") > 0)
+                            rowstr = rowstr.Replace("\r\n", " ");
+                        if (rowstr.IndexOf("\t") > 0)
+                            rowstr = rowstr.Replace("\t", " ");
+                        strLine = strLine + rowstr + Convert.ToChar(9);
+                    }
+                }
+                objStreamWriter.WriteLine(strLine);
+                strLine = "";
+            }
+            objStreamWriter.Close();
+            objFileStream.Close();
+            var url = fileip + "/File/newxls/" + filename;
+            return url;
+        }
+
+
+
+        /// <summary>
+        /// 宸ヨ祫鎶ヨ〃Excel瀵煎嚭鏁版嵁鍚堝苟
+        /// </summary>
+        /// <param name="path"></param>
+        /// <param name="table"></param>
+        /// <param name="treeIndex"></param>
+        public static void DataTree(DataTable table, string filenName, int treeIndex, out string pathstring)  //   /apis/File/newxls/宸ヨ祫浜ч噺鎶ヨ〃20200507114638.xls
+        {
+            var filename = filenName + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
+            string fileip = System.Configuration.ConfigurationManager.AppSettings["FileIP"];
+            var filepath = HttpContext.Current.Server.MapPath("/File/newxls/");
+            var path = filepath + filename;
+            using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite))
+            {
+                IWorkbook workBook = new HSSFWorkbook();
+                //鐜板湪浣跨敤鐨勪粛鐒舵槸鐢熸垚Excel2003鐨凟xcel鏂囦欢锛岀敱浜�03瀵硅鏁帮紙65535锛夊拰鍒楁暟锛�255锛夋湁闄愬埗锛屾墍浠ュ綋鏁版嵁瓒呭嚭鑼冨洿鍚庨毦鍏嶅嚭閿�
+                //ArgumentException: Invalid column index (256). Allowable column range for BIFF8 is (0..255) or ('A'..'IV') ...
+                if (Path.GetExtension(path).Equals(".xlsx", System.StringComparison.OrdinalIgnoreCase))
+                {
+                    workBook = new XSSFWorkbook();
+                }
+
+                string sheetName = string.IsNullOrWhiteSpace(table.TableName) ? "Sheet1" : table.TableName;
+                ISheet sheet = workBook.CreateSheet(sheetName);
+                IRow row = null;
+                int colNum = 8; //鍚堝苟鐨勫垪鏁�
+                //int colNum = table.Columns.Count;
+                //if (treeIndex < table.Columns.Count || treeIndex > 0)
+                //{
+                //    colNum = treeIndex;
+                //}
+
+                ICellStyle cellCenterStyle = GetCenter(workBook);
+                //IFont font = workBook.CreateFont(); //鍒涘缓涓�涓瓧浣撴牱寮忓璞�
+                //font.FontName = "鏂规鑸掍綋"; //鍜宔xcel閲岄潰鐨勫瓧浣撳搴�
+                //font.IsItalic = true; //鏂滀綋
+                //font.FontHeightInPoints = 16;//瀛椾綋澶у皬
+                //font.Boldweight = short.MaxValue;//瀛椾綋鍔犵矖
+                //cellCenterStyle.SetFont(font); //灏嗗瓧浣撴牱寮忚祴缁欐牱寮忓璞�
+
+                int beginNum = 1;//鎺掗櫎鍒楀ご锛屼粠1寮�濮�
+
+                //澶勭悊琛ㄦ牸鍒楀ご
+                row = sheet.CreateRow(beginNum - 1);
+                for (int i = 0; i < table.Columns.Count; i++)
+                {
+
+                    string strVal = table.Columns[i].ColumnName;
+                    ICell cell = row.CreateCell(i);
+                    cell.SetCellValue(strVal);
+                    cell.CellStyle = cellCenterStyle;
+                    row.Height = 450;
+
+                    sheet.AutoSizeColumn(i);
+
+                    List<int> lstColWidth = new List<int>();
+                    //璁板綍鍒楅暱搴�
+                    lstColWidth.Add(DataLength(strVal));
+                    //璁剧疆鍒楀
+                    int maxWidth = lstColWidth.Max() * 600;
+                    sheet.SetColumnWidth(i, maxWidth);
+                }
+
+                //澶勭悊鏁版嵁鍐呭
+                for (int i = 0; i < table.Rows.Count; i++)
+                {
+                    row = sheet.CreateRow(beginNum + i);
+                    row.Height = 350;
+                    for (int j = 0; j < table.Columns.Count; j++)
+                    {
+                        string strVal = table.Rows[i][j].ToString();
+                        ICell currCell = row.CreateCell(j);
+                        currCell.SetCellValue(strVal);
+                        currCell.CellStyle = cellCenterStyle;
+                        sheet.SetColumnWidth(j, 256 * 15);
+                    }
+                }
+
+                for (int i = 0; i < colNum; i++)  //鏁版嵁鏉℃暟
+                {
+                    List<int> lstColWidth = new List<int>();
+                    string currVal = string.Empty;
+                    string nextVal = string.Empty;
+                    for (int j = beginNum; j <= sheet.LastRowNum; j++)
+                    {
+                        currVal = sheet.GetRow(j).Cells[i].StringCellValue;
+
+                        int mk = j;
+                        if (!string.IsNullOrWhiteSpace(currVal))//鎺掗櫎 绌哄�硷紝绌哄�间笉鍋氬悎骞跺鐞�
+                        {
+                            for (int k = j + 1; k <= sheet.LastRowNum; k++)
+                            {
+                                nextVal = sheet.GetRow(k).Cells[i].StringCellValue;
+
+                                if (currVal != nextVal)
+                                {
+                                    //鍥犱负k 绱姞鎵�浠ュ鑷村綋鍓嶅�间笌涓嬩釜鍊� 涓嶇浉鍚岋紝鎵�浠ヨ褰� 褰撳墠琛屾暟瑕� 鍑忓幓1
+                                    mk = k - 1;
+                                    break;
+                                }
+                                else if (k == sheet.LastRowNum) //杈圭晫鍊硷紝澶勭悊鏈�鍚庝竴琛岋紝鍒欐彁鍓岯reak 骞惰褰曞綋鍓� k
+                                {
+                                    mk = k;
+                                    break;
+                                }
+                            }
+                        }
+
+                        if (mk != j)//鎺掗櫎 绌哄�煎锛屼笅涓�肩殑琛屾暟涓嶇瓑浜庡綋鍓嶈鏁帮紝鍒欓渶瑕佸悎骞�
+                        {
+                            sheet.AddMergedRegion(new CellRangeAddress(j, mk, i, i));
+
+                            //sheet.GetRow(j).GetCell(i).SetCellValue("");
+                        }
+                        //else
+                        //{
+                        //    if (mk < sheet.LastRowNum) 
+                        //    {
+                        //        if (sheet.GetRow(j).Cells[0].StringCellValue == sheet.GetRow(mk + 1).Cells[0].StringCellValue
+                        //           && sheet.GetRow(j).Cells[1].StringCellValue == sheet.GetRow(mk + 1).Cells[1].StringCellValue
+                        //           && sheet.GetRow(j).Cells[2].StringCellValue == sheet.GetRow(mk + 1).Cells[2].StringCellValue
+                        //           && sheet.GetRow(j).Cells[3].StringCellValue == sheet.GetRow(mk + 1).Cells[3].StringCellValue
+                        //            )
+                        //        {
+                        //            int mmk = mk + 1;
+                        //            sheet.AddMergedRegion(new CellRangeAddress(j, mmk, i, i));
+                        //        }
+                        //    }
+                        //}
+
+                        //if (i == 0) //濡傛灉鏄涓�鍒楋紝鍒� 鍨傜洿姘村钩灞呬腑
+                        {
+                            sheet.GetRow(j).Cells[i].CellStyle = cellCenterStyle;
+                        }
+                        //璺冲埌鎵ц涓嬩竴涓笉鍚屾暟鎹殑琛�
+                        j = mk;
+
+                        //璁板綍鍒楅暱搴�
+                        lstColWidth.Add(DataLength(currVal));
+                    }
+
+                    //璁剧疆鍒楀
+                    //int maxWidth = lstColWidth.Max() * 600;
+                    //sheet.SetColumnWidth(i, maxWidth);
+                }
+                //鍥哄畾鍒椼�佽 婊氬姩鏃朵笉鍙�
+                //sheet.CreateFreezePane(3, 1, 3, 1);
+
+                //鍐欏叆鏁版嵁娴�
+                workBook.Write(fs);
+                var url = fileip + "/apis/File/newxls/" + filename;
+                pathstring = url;
+            }
+        }
+
+
+        private static ICellStyle GetCenter(IWorkbook workBook, short fontSize = 10)
+        {
+            ICellStyle cellStyle = workBook.CreateCellStyle();
+            IFont font = workBook.CreateFont();
+            font.FontName = "寰蒋闆呴粦";
+            font.FontHeightInPoints = fontSize;
+            cellStyle.SetFont(font);
+            cellStyle.VerticalAlignment = VerticalAlignment.Center;
+            cellStyle.Alignment = HorizontalAlignment.Center;
+            return cellStyle;
+        }
+
+
+        /// <summary>
+        /// 鑾峰彇瀛楃涓查暱搴︼紙涓枃鎸�2涓瓧鑺傞暱搴︼級
+        /// </summary>
+        /// <param name="stringWithEnglishAndChinese"></param>
+        /// <returns></returns>
+        private static int DataLength(string stringWithEnglishAndChinese)
+        {
+            int lng = 0;
+            for (int i = 0; i < stringWithEnglishAndChinese.Length; i++)
+            {
+                byte[] b = System.Text.Encoding.Default.GetBytes(stringWithEnglishAndChinese.Substring(i, 1));
+                if (b.Length > 1)
+                    lng += 2;
+                else
+                    lng += 1;
+            }
+            return lng;
+        }
+
+
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/VueWebApi.csproj b/VueWebApi/VueWebApi.csproj
index a12f8e6..09dfdad 100644
--- a/VueWebApi/VueWebApi.csproj
+++ b/VueWebApi/VueWebApi.csproj
@@ -283,6 +283,7 @@
     <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
     <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
     <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
+    <Compile Include="Controllers\AppDeviceManageController.cs" />
     <Compile Include="Controllers\BasicSettingController.cs" />
     <Compile Include="Controllers\DeviceManagerController.cs" />
     <Compile Include="Controllers\ErpSyncMesController.cs" />
@@ -297,6 +298,7 @@
     <Compile Include="Controllers\SystemSettingController.cs" />
     <Compile Include="Controllers\ValuesController.cs" />
     <Compile Include="DDKanBanModel\ShopTopLeft.cs" />
+    <Compile Include="DLL\BLL\AppDeviceManageBLL.cs" />
     <Compile Include="DLL\BLL\BasicSettingBLL.cs" />
     <Compile Include="DLL\BLL\DeviceManagerBLL.cs" />
     <Compile Include="DLL\BLL\ErpSyncMesBLL.cs" />
@@ -310,6 +312,7 @@
     <Compile Include="DLL\BLL\QualityManagementBLL.cs" />
     <Compile Include="DLL\BLL\SystemSettingBLL.cs" />
     <Compile Include="DLL\BLL\UserDataBLL.cs" />
+    <Compile Include="DLL\DAL\AppDeviceManageDAL.cs" />
     <Compile Include="DLL\DAL\BasicSettingDAL.cs" />
     <Compile Include="DLL\DAL\DeviceManagerDAL.cs" />
     <Compile Include="DLL\DAL\ErpSyncMesDAL.cs" />
@@ -326,6 +329,7 @@
     <Compile Include="Global.asax.cs">
       <DependentUpon>Global.asax</DependentUpon>
     </Compile>
+    <Compile Include="Models\AppDevicecCheck.cs" />
     <Compile Include="Models\ExcelErro.cs" />
     <Compile Include="Models\MaterialRout.cs" />
     <Compile Include="Models\ObjectData.cs" />
@@ -334,6 +338,7 @@
     <Compile Include="Models\RoleUserSubmit.cs" />
     <Compile Include="Models\RoutEdit.cs" />
     <Compile Include="Models\ScanStartReportData.cs" />
+    <Compile Include="Models\StandEqp.cs" />
     <Compile Include="Models\StepCheck.cs" />
     <Compile Include="Models\StepDefect.cs" />
     <Compile Include="Models\StepEqp.cs" />
@@ -344,9 +349,11 @@
     <Compile Include="Models\User.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Tools\ChannelActionFilterAttribute.cs" />
+    <Compile Include="Tools\DALSkillCondition.cs" />
     <Compile Include="Tools\DapperHelper.cs" />
     <Compile Include="Tools\DataOperator.cs" />
     <Compile Include="Tools\DBHelper.cs" />
+    <Compile Include="Tools\DownLoad.cs" />
     <Compile Include="Tools\Encrypt.cs" />
     <Compile Include="Tools\ExcelList.cs" />
     <Compile Include="Tools\ExcelModelCheck.cs" />
@@ -485,6 +492,7 @@
   <ItemGroup>
     <Folder Include="App_Data\" />
     <Folder Include="File\excel\" />
+    <Folder Include="File\newxls\" />
     <Folder Include="InExcel\" />
   </ItemGroup>
   <ItemGroup>
diff --git a/VueWebApi/bin/VueWebApi.pdb b/VueWebApi/bin/VueWebApi.pdb
index e5f34f9..63f7882 100644
--- a/VueWebApi/bin/VueWebApi.pdb
+++ b/VueWebApi/bin/VueWebApi.pdb
Binary files differ
diff --git a/VueWebApi/bin/VueWebApi.xml b/VueWebApi/bin/VueWebApi.xml
index 947d198..d9e1e37 100644
--- a/VueWebApi/bin/VueWebApi.xml
+++ b/VueWebApi/bin/VueWebApi.xml
@@ -506,6 +506,28 @@
             </summary>
             <param name="documentPath">The physical path to XML document.</param>
         </member>
+        <member name="M:VueWebApi.Controllers.AppDeviceManageController.ScanDeviceQrCodeData(System.String)">
+            <summary>
+            鏃ュ父鐐规,鎵弿宸ヤ綅/璁惧浜岀淮鐮�
+            </summary>
+            <param name="eqpcode">璁惧缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppDeviceManageController.SelectScanDeviceQrCodeItem(System.String)">
+            <summary>
+            鏃ュ父鐐规,閫夋嫨鎵爜璁惧鍒楄〃甯﹀嚭鐐规椤�
+            </summary>
+            <param name="eqpcode">璁惧缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppDeviceManageController.AppDeviceCheckSave(System.String,VueWebApi.Models.AppDevicecCheck)">
+            <summary>
+            鏃ュ父鐐规銆佹彁浜や繚瀛�
+            </summary>
+            <param name="username">鐧诲綍浜哄憳(鐐规浜�)</param>
+            <param name="json">鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.BasicSettingController.OrganizationSearch(System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             缁勭粐鏋舵瀯鏌ヨ
@@ -865,7 +887,7 @@
             <param name="devicecode">璁惧缂栫爜</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧鐐规椤瑰垪琛ㄦ煡璇�
             </summary>
@@ -894,7 +916,7 @@
             <param name="checkitemcode">璁惧鐐规椤圭洰(閮ㄤ綅)缂栫爜</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧淇濆吇椤瑰垪琛ㄦ煡璇�
             </summary>
@@ -923,7 +945,7 @@
             <param name="maiitemcode">璁惧淇濆吇椤圭洰(閮ㄤ綅)缂栫爜</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧鐐规鏍囧噯鍒楄〃鏌ヨ
             </summary>
@@ -979,7 +1001,7 @@
             <param name="json">鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧淇濆吇鏍囧噯鍒楄〃鏌ヨ
             </summary>
@@ -1376,12 +1398,14 @@
             <param name="erpordercode">璁㈠崟鍙�</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             MES宸ュ崟鏌ヨ
             </summary>
             <param name="mesorderstus">宸ュ崟鐘舵�佺爜</param>
             <param name="mesordercode">宸ュ崟缂栧彿</param>
+            <param name="sourceorder">婧愬崟鍗曞彿</param>
+            <param name="ordertype">鍗曟嵁绫诲瀷</param>
             <param name="partcode">浜у搧缂栫爜</param>
             <param name="partname">浜у搧鍚嶇О</param>
             <param name="partspec">浜у搧瑙勬牸</param>
@@ -1564,10 +1588,11 @@
             <param name="obj">鏀舵枡鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(VueWebApi.Models.ReportDefectHandle)">
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(System.String,VueWebApi.Models.ReportDefectHandle)">
             <summary>
             涓嶈壇澶勭悊,鎻愪氦
             </summary>
+            <param name="username">澶勭悊浜哄憳缂栫爜</param>
             <param name="json">鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
@@ -1982,6 +2007,47 @@
             <param name="checkitemcode">妫�楠岄」鐩唬鐮�</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+            <summary>
+            宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+            </summary>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partapec">浜у搧鍚嶇О</param>
+            <param name="stepname">浜у搧鍚嶇О</param>
+            <param name="standname">浜у搧鍚嶇О</param>
+            <param name="checktype">妫�楠岀被鍨嬬紪鐮�</param>
+            <param name="checkresult">妫�楠岀粨鏋�</param>
+            <param name="page">椤电爜</param>
+            <param name="rows">姣忛〉鏄剧ず鏉℃暟</param>
+            <param name="prop">鎺掑簭瀛楁</param>
+            <param name="order">鎺掑簭瑙勫垯</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSubSearch(System.String)">
+            <summary>
+            宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+            </summary>
+            <param name="id">涓昏〃id</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableOutExcel(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            宸ュ簭妫�楠岃褰曞鍑�
+            </summary>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partapec">浜у搧鍚嶇О</param>
+            <param name="stepname">浜у搧鍚嶇О</param>
+            <param name="standname">浜у搧鍚嶇О</param>
+            <param name="checktype">妫�楠岀被鍨嬬紪鐮�</param>
+            <param name="checkresult">妫�楠岀粨鏋�</param>
+            <param name="prop">鎺掑簭瀛楁</param>
+            <param name="order">鎺掑簭瑙勫垯</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             缂栫爜瑙勫垯鏌ヨ
@@ -2023,6 +2089,14 @@
             璇锋眰鎺ュ彛涔嬪墠娓犻亾杩囨护
             </summary>
             <param name="actionContext"></param>
+        </member>
+        <member name="M:VueWebApi.Tools.DALSkillCondition.ResultExcel(System.String,System.Data.DataTable)">
+            <summary>
+            涓嬭浇excel
+            </summary>
+            <param name="path"></param>
+            <param name="num"></param>
+            <returns></returns>
         </member>
         <member name="M:VueWebApi.Tools.DapperHelper.sqlConnection">
             <summary>
@@ -2314,6 +2388,61 @@
             <param name="parameters">鍙傛暟鏁扮粍</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Tools.DownLoad.Download``1(System.Collections.Generic.IList{``0},System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
+            <summary>
+                涓嬭浇
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="data"></param>
+            <param name="map">鎵�闇�瑕佺殑鍒�</param>
+            <param name="filenName">鏂囦欢鍚嶅瓧</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataSetToExcel(System.Data.DataSet,System.String)">
+            <summary>
+            Datas the set to excel.
+            </summary>
+            <param name="ds">The ds.</param>
+            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataTableToExcel(System.Data.DataTable,System.String)">
+            <summary>
+            Datas the set to excel.
+            </summary>
+            <param name="ds">The ds.</param>
+            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.GetValue(System.String,System.String)">
+            <summary>
+            Gets the value.
+            </summary>
+            <param name="cellValue">The cell value.</param>
+            <param name="type">The type.</param>
+            <returns>System.String.</returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataToExcel(System.Data.DataTable,System.String)">
+            <summary>
+            Datatable鐢熸垚Excel琛ㄦ牸骞惰繑鍥炶矾寰�
+            </summary>
+            <param name="m_DataTable">Datatable</param>
+            <param name="s_FileName">鏂囦欢鍚�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataTree(System.Data.DataTable,System.String,System.Int32,System.String@)">
+            <summary>
+            宸ヨ祫鎶ヨ〃Excel瀵煎嚭鏁版嵁鍚堝苟
+            </summary>
+            <param name="path"></param>
+            <param name="table"></param>
+            <param name="treeIndex"></param>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataLength(System.String)">
+            <summary>
+            鑾峰彇瀛楃涓查暱搴︼紙涓枃鎸�2涓瓧鑺傞暱搴︼級
+            </summary>
+            <param name="stringWithEnglishAndChinese"></param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Tools.ImportExcel.ExcelToTable(System.String)">
             <summary>
             Excel瀵煎叆鎴怐atable
diff --git a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
index e5f34f9..63f7882 100644
--- a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
+++ b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
Binary files differ
diff --git a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
index 947d198..d9e1e37 100644
--- a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
+++ b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
@@ -506,6 +506,28 @@
             </summary>
             <param name="documentPath">The physical path to XML document.</param>
         </member>
+        <member name="M:VueWebApi.Controllers.AppDeviceManageController.ScanDeviceQrCodeData(System.String)">
+            <summary>
+            鏃ュ父鐐规,鎵弿宸ヤ綅/璁惧浜岀淮鐮�
+            </summary>
+            <param name="eqpcode">璁惧缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppDeviceManageController.SelectScanDeviceQrCodeItem(System.String)">
+            <summary>
+            鏃ュ父鐐规,閫夋嫨鎵爜璁惧鍒楄〃甯﹀嚭鐐规椤�
+            </summary>
+            <param name="eqpcode">璁惧缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppDeviceManageController.AppDeviceCheckSave(System.String,VueWebApi.Models.AppDevicecCheck)">
+            <summary>
+            鏃ュ父鐐规銆佹彁浜や繚瀛�
+            </summary>
+            <param name="username">鐧诲綍浜哄憳(鐐规浜�)</param>
+            <param name="json">鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.BasicSettingController.OrganizationSearch(System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             缁勭粐鏋舵瀯鏌ヨ
@@ -865,7 +887,7 @@
             <param name="devicecode">璁惧缂栫爜</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧鐐规椤瑰垪琛ㄦ煡璇�
             </summary>
@@ -894,7 +916,7 @@
             <param name="checkitemcode">璁惧鐐规椤圭洰(閮ㄤ綅)缂栫爜</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceMaiItemSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧淇濆吇椤瑰垪琛ㄦ煡璇�
             </summary>
@@ -923,7 +945,7 @@
             <param name="maiitemcode">璁惧淇濆吇椤圭洰(閮ㄤ綅)缂栫爜</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceCheckStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧鐐规鏍囧噯鍒楄〃鏌ヨ
             </summary>
@@ -979,7 +1001,7 @@
             <param name="json">鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.DeviceManagerController.DeviceRepairStandArdSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             璁惧淇濆吇鏍囧噯鍒楄〃鏌ヨ
             </summary>
@@ -1376,12 +1398,14 @@
             <param name="erpordercode">璁㈠崟鍙�</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             MES宸ュ崟鏌ヨ
             </summary>
             <param name="mesorderstus">宸ュ崟鐘舵�佺爜</param>
             <param name="mesordercode">宸ュ崟缂栧彿</param>
+            <param name="sourceorder">婧愬崟鍗曞彿</param>
+            <param name="ordertype">鍗曟嵁绫诲瀷</param>
             <param name="partcode">浜у搧缂栫爜</param>
             <param name="partname">浜у搧鍚嶇О</param>
             <param name="partspec">浜у搧瑙勬牸</param>
@@ -1564,10 +1588,11 @@
             <param name="obj">鏀舵枡鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(VueWebApi.Models.ReportDefectHandle)">
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.EditOrderNgStepSeave(System.String,VueWebApi.Models.ReportDefectHandle)">
             <summary>
             涓嶈壇澶勭悊,鎻愪氦
             </summary>
+            <param name="username">澶勭悊浜哄憳缂栫爜</param>
             <param name="json">鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
@@ -1982,6 +2007,47 @@
             <param name="checkitemcode">妫�楠岄」鐩唬鐮�</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+            <summary>
+            宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+            </summary>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partapec">浜у搧鍚嶇О</param>
+            <param name="stepname">浜у搧鍚嶇О</param>
+            <param name="standname">浜у搧鍚嶇О</param>
+            <param name="checktype">妫�楠岀被鍨嬬紪鐮�</param>
+            <param name="checkresult">妫�楠岀粨鏋�</param>
+            <param name="page">椤电爜</param>
+            <param name="rows">姣忛〉鏄剧ず鏉℃暟</param>
+            <param name="prop">鎺掑簭瀛楁</param>
+            <param name="order">鎺掑簭瑙勫垯</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableSubSearch(System.String)">
+            <summary>
+            宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+            </summary>
+            <param name="id">涓昏〃id</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.StepCheckTableOutExcel(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            宸ュ簭妫�楠岃褰曞鍑�
+            </summary>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partapec">浜у搧鍚嶇О</param>
+            <param name="stepname">浜у搧鍚嶇О</param>
+            <param name="standname">浜у搧鍚嶇О</param>
+            <param name="checktype">妫�楠岀被鍨嬬紪鐮�</param>
+            <param name="checkresult">妫�楠岀粨鏋�</param>
+            <param name="prop">鎺掑簭瀛楁</param>
+            <param name="order">鎺掑簭瑙勫垯</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             缂栫爜瑙勫垯鏌ヨ
@@ -2023,6 +2089,14 @@
             璇锋眰鎺ュ彛涔嬪墠娓犻亾杩囨护
             </summary>
             <param name="actionContext"></param>
+        </member>
+        <member name="M:VueWebApi.Tools.DALSkillCondition.ResultExcel(System.String,System.Data.DataTable)">
+            <summary>
+            涓嬭浇excel
+            </summary>
+            <param name="path"></param>
+            <param name="num"></param>
+            <returns></returns>
         </member>
         <member name="M:VueWebApi.Tools.DapperHelper.sqlConnection">
             <summary>
@@ -2314,6 +2388,61 @@
             <param name="parameters">鍙傛暟鏁扮粍</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Tools.DownLoad.Download``1(System.Collections.Generic.IList{``0},System.Collections.Generic.Dictionary{System.String,System.String},System.String)">
+            <summary>
+                涓嬭浇
+            </summary>
+            <typeparam name="T"></typeparam>
+            <param name="data"></param>
+            <param name="map">鎵�闇�瑕佺殑鍒�</param>
+            <param name="filenName">鏂囦欢鍚嶅瓧</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataSetToExcel(System.Data.DataSet,System.String)">
+            <summary>
+            Datas the set to excel.
+            </summary>
+            <param name="ds">The ds.</param>
+            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataTableToExcel(System.Data.DataTable,System.String)">
+            <summary>
+            Datas the set to excel.
+            </summary>
+            <param name="ds">The ds.</param>
+            <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.GetValue(System.String,System.String)">
+            <summary>
+            Gets the value.
+            </summary>
+            <param name="cellValue">The cell value.</param>
+            <param name="type">The type.</param>
+            <returns>System.String.</returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataToExcel(System.Data.DataTable,System.String)">
+            <summary>
+            Datatable鐢熸垚Excel琛ㄦ牸骞惰繑鍥炶矾寰�
+            </summary>
+            <param name="m_DataTable">Datatable</param>
+            <param name="s_FileName">鏂囦欢鍚�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataTree(System.Data.DataTable,System.String,System.Int32,System.String@)">
+            <summary>
+            宸ヨ祫鎶ヨ〃Excel瀵煎嚭鏁版嵁鍚堝苟
+            </summary>
+            <param name="path"></param>
+            <param name="table"></param>
+            <param name="treeIndex"></param>
+        </member>
+        <member name="M:VueWebApi.Tools.DownLoad.DataLength(System.String)">
+            <summary>
+            鑾峰彇瀛楃涓查暱搴︼紙涓枃鎸�2涓瓧鑺傞暱搴︼級
+            </summary>
+            <param name="stringWithEnglishAndChinese"></param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Tools.ImportExcel.ExcelToTable(System.String)">
             <summary>
             Excel瀵煎叆鎴怐atable
diff --git a/VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache b/VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache
deleted file mode 100644
index f5e894a..0000000
--- a/VueWebApi/obj/Release/VueWebApi.csproj.AssemblyReference.cache
+++ /dev/null
Binary files differ
diff --git a/VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache b/VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
index 37151ec..768faab 100644
--- a/VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
+++ b/VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-b1c5bf276d54b9e7c26704c1bb657e6a3aea4166
+381130c0169b46e9923444e6a74044fb28bd1180
diff --git a/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt b/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
index c64ac13..9c1a6fd 100644
--- a/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
+++ b/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
@@ -265,7 +265,6 @@
 D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.resources.dll
 D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Deployment.resources.dll
 D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Razor.resources.dll
-D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.AssemblyReference.cache
 D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CoreCompileInputs.cache
 D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CopyComplete
 D:\鏂板嚡杩狹ES\VueWebApi\VueWebApi\obj\Release\VueWebApi.dll
diff --git a/VueWebApi/obj/Release/VueWebApi.pdb b/VueWebApi/obj/Release/VueWebApi.pdb
index e5f34f9..63f7882 100644
--- a/VueWebApi/obj/Release/VueWebApi.pdb
+++ b/VueWebApi/obj/Release/VueWebApi.pdb
Binary files differ

--
Gitblit v1.9.3