From 925394b1b7f61a2c2a15fdaa0ecd0763214ccda1 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期二, 30 五月 2023 18:01:29 +0800
Subject: [PATCH] 增加App报工、工序检验功能

---
 VueWebApi/obj/Release/VueWebApi.pdb                             |    0 
 VueWebApi/DLL/BLL/AppPersonalBLL.cs                             |   20 
 VueWebApi/DLL/BLL/AppAnalyticsBLL.cs                            |   26 
 VueWebApi/DLL/BLL/QualityManagementBLL.cs                       |   29 
 VueWebApi/Controllers/QualityManagementController.cs            |   86 +
 VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.dll      |    0 
 VueWebApi/Controllers/ReportManagerController.cs                |   65 
 .vs/VueWebApi/v16/.suo                                          |    0 
 VueWebApi/DLL/DAL/AppQualityManagementDAL.cs                    |  310 ++++
 VueWebApi/Controllers/AppQualityManagementController.cs         |  145 ++
 VueWebApi/Controllers/AppPersonalController.cs                  |   45 
 VueWebApi/Controllers/AppAnalyticsController.cs                 |   69 
 VueWebApi/DLL/DAL/LoginDAL.cs                                   |    9 
 VueWebApi/VueWebApi.csproj                                      |   17 
 VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb      |    0 
 VueWebApi/Controllers/ProductionManagementController.cs         |   58 
 VueWebApi/bin/VueWebApi.pdb                                     |    0 
 VueWebApi/DLL/BLL/BaseDateBLL.cs                                |   68 
 VueWebApi/Tools/AppLableBarCode.cs                              |  183 ++
 VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache  |    2 
 VueWebApi/DLL/BLL/AppQualityManagementBLL.cs                    |   33 
 VueWebApi/DLL/DAL/AppAnalyticsDAL.cs                            |  343 ++++
 VueWebApi/Controllers/AppDeviceManageController.cs              |    1 
 VueWebApi/DLL/BLL/ProductionManagementBLL.cs                    |   22 
 VueWebApi/DLL/DAL/AppPersonalDAL.cs                             |  101 +
 VueWebApi/Models/AppScheduleKanban.cs                           |   44 
 VueWebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user |   10 
 VueWebApi/bin/VueWebApi.xml                                     |  398 +++++
 VueWebApi/Models/User.cs                                        |    1 
 VueWebApi/Logs/2023-05-30.TXT                                   |   78 +
 VueWebApi/DLL/DAL/ReportManagerDAL.cs                           |  200 ++
 VueWebApi/DLL/DAL/QualityManagementDAL.cs                       |  461 +++++
 VueWebApi/Controllers/SystemSettingController.cs                |   17 
 VueWebApi/Controllers/AppProductionManagementController.cs      |  233 +++
 VueWebApi/Controllers/BaseDateController.cs                     |  135 +
 VueWebApi/DLL/DAL/BaseDateDAL.cs                                |  226 +++
 VueWebApi/DLL/DAL/ProductionManagementDAL.cs                    |  184 +
 VueWebApi/DLL/BLL/ReportManagerBLL.cs                           |   15 
 VueWebApi/VueWebApi.csproj.user                                 |    2 
 VueWebApi/DLL/BLL/SystemSettingBLL.cs                           |    8 
 VueWebApi/Models/AppLabCode.cs                                  |   27 
 VueWebApi/DLL/DAL/SystemSettingDAL.cs                           |    9 
 VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt     |    1 
 VueWebApi/bin/VueWebApi.dll                                     |    0 
 /dev/null                                                       |    0 
 VueWebApi/obj/Release/VueWebApi.dll                             |    0 
 VueWebApi/DLL/DAL/KanBanManagerentDAL.cs                        |  108 +
 VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml      |  398 +++++
 VueWebApi/Tools/ChannelActionFilterAttributeApp.cs              |   69 
 VueWebApi/Controllers/LoginController.cs                        |    4 
 50 files changed, 4,015 insertions(+), 245 deletions(-)

diff --git a/.vs/VueWebApi/v16/.suo b/.vs/VueWebApi/v16/.suo
index 338d4d1..dfcf1b0 100644
--- a/.vs/VueWebApi/v16/.suo
+++ b/.vs/VueWebApi/v16/.suo
Binary files differ
diff --git a/VueWebApi/Controllers/AppAnalyticsController.cs b/VueWebApi/Controllers/AppAnalyticsController.cs
new file mode 100644
index 0000000..0ddfbe4
--- /dev/null
+++ b/VueWebApi/Controllers/AppAnalyticsController.cs
@@ -0,0 +1,69 @@
+锘縰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.Tools;
+
+namespace VueWebApi.Controllers
+{
+    [RoutePrefix(prefix: "api/AppAnalytics")]
+    [ControllerGroup("App鏅鸿兘鍒嗘瀽", "鍦ㄧ嚎鎺ュ彛")]
+    //[ChannelActionFilterAttributeApp]
+    public class AppAnalyticsController : ApiController
+    {
+        //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+
+        #region[App鐢熶骇鐪嬫澘]
+        /// <summary>
+        /// App鐢熶骇鐪嬫澘
+        /// </summary>
+        /// <param name="usercode">鐧诲綍浜哄憳</param>
+        /// <param name="Ratetime">鏃堕棿</param>
+        /// <param name="defecttype">缂洪櫡缁熻绫诲瀷</param>
+        /// <returns></returns>
+        [Route(template: "ProductionKanban")]
+        [HttpGet]
+        public HttpResponseMessage ProductionKanban(string usercode, string Ratetime,string defecttype)
+        {
+            string startopendate = "";  //寮�濮嬫椂闂�
+            string endclosedate = "";    //缁撴潫鏃堕棿
+            if (Ratetime != "" && Ratetime != null)
+            {
+                startopendate = Ratetime.Split('~')[0].ToString();
+                endclosedate = Ratetime.Split('~')[1].ToString();
+            }
+            mes = AppAnalyticsBLL.ProductionKanban(usercode, startopendate, endclosedate, defecttype);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[App鐢熶骇杩涘害鐪嬫澘鍗曟嵁淇℃伅]
+        /// <summary>
+        /// App鐢熶骇杩涘害鐪嬫澘鍗曟嵁淇℃伅
+        /// </summary>
+        /// <param name="ordertype">鍗曟嵁绫诲瀷(SO:閿�鍞鍗曘�丮O:鐢熶骇璁㈠崟銆丳O:鐢熶骇宸ュ崟)</param>
+        /// <param name="partcode">浜у搧淇℃伅(鍙涓�)</param>
+        /// <param name="Ratetime">鍗曟嵁鏃ユ湡鑼冨洿</param>
+        /// <returns></returns>
+        [Route(template: "ProductionScheduleKanban")]
+        [HttpGet]
+        public HttpResponseMessage ProductionScheduleKanban(string ordertype, string partcode=null, string Ratetime=null)
+        {
+            string startopendate = "";  //寮�濮嬫椂闂�
+            string endclosedate = "";    //缁撴潫鏃堕棿
+            if (Ratetime != "" && Ratetime != null)
+            {
+                startopendate = Ratetime.Split('~')[0].ToString();
+                endclosedate = Ratetime.Split('~')[1].ToString();
+            }
+            mes = AppAnalyticsBLL.ProductionScheduleKanban(ordertype,partcode, startopendate, endclosedate);
+            return TJson.toJson(mes);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Controllers/AppDeviceManageController.cs b/VueWebApi/Controllers/AppDeviceManageController.cs
index 935337c..1196265 100644
--- a/VueWebApi/Controllers/AppDeviceManageController.cs
+++ b/VueWebApi/Controllers/AppDeviceManageController.cs
@@ -14,6 +14,7 @@
 {
     [RoutePrefix(prefix: "api/AppDeviceManage")]
     [ControllerGroup("App璁惧绠$悊", "鍦ㄧ嚎鎺ュ彛")]
+    //[ChannelActionFilterAttributeApp]
     public class AppDeviceManageController : ApiController
     {
         //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
diff --git a/VueWebApi/Controllers/AppPersonalController.cs b/VueWebApi/Controllers/AppPersonalController.cs
new file mode 100644
index 0000000..4947507
--- /dev/null
+++ b/VueWebApi/Controllers/AppPersonalController.cs
@@ -0,0 +1,45 @@
+锘縰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.Tools;
+
+namespace VueWebApi.Controllers
+{
+    [RoutePrefix(prefix: "api/AppPersonal")]
+    [ControllerGroup("App涓汉涓績", "鍦ㄧ嚎鎺ュ彛")]
+    //[ChannelActionFilterAttributeApp]
+    public class AppPersonalController : ApiController
+    {
+        //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+
+        #region[App涓汉璁′欢宸ヨ祫]
+        /// <summary>
+        /// App涓汉璁′欢宸ヨ祫
+        /// </summary>
+        /// <param name="compute">璁$畻鏂瑰紡:鏈亾璁$畻銆侀�愰亾璁$畻</param>
+        /// <param name="usercode">鐧诲綍浜哄憳</param>
+        /// <param name="Ratetime">鏃堕棿</param>
+        /// <returns></returns>
+        [Route(template: "PieceRateWage")]
+        [HttpGet]
+        public HttpResponseMessage PieceRateWage(string compute, string usercode,string Ratetime)
+        {
+            string startopendate = "";  //寮�濮嬫椂闂�
+            string endclosedate = "";    //缁撴潫鏃堕棿
+            if (Ratetime != "" && Ratetime != null)
+            {
+                startopendate = Ratetime.Split('~')[0].ToString();
+                endclosedate = Ratetime.Split('~')[1].ToString();
+            }
+            mes = AppPersonalBLL.PieceRateWage(compute,usercode, startopendate, endclosedate);
+            return TJson.toJson(mes);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Controllers/AppProductionManagementController.cs b/VueWebApi/Controllers/AppProductionManagementController.cs
new file mode 100644
index 0000000..647ee70
--- /dev/null
+++ b/VueWebApi/Controllers/AppProductionManagementController.cs
@@ -0,0 +1,233 @@
+锘縰sing Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+using VueWebApi.DLL.BLL;
+using VueWebApi.Tools;
+
+namespace VueWebApi.Controllers
+{
+    [RoutePrefix(prefix: "api/AppProductionManagement")]
+    [ControllerGroup("App鐢熶骇绠$悊", "鍦ㄧ嚎鎺ュ彛")]
+    //[ChannelActionFilterAttributeApp]
+    public class AppProductionManagementController : ApiController
+    {
+        //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+
+
+        #region [鐢熶骇寮�鎶ュ伐锛氬紑宸�(寮�濮�/鎶ュ伐)/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛]
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐锛氬紑宸�(寮�濮�/鎶ュ伐)/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+        /// </summary>
+        /// <param name="OperType">鎿嶄綔绫诲瀷锛氳嚜鍒�(ZZ)/澶栧崗(WX)</param>
+        /// <param name="SelectType">鎿嶄綔绫诲瀷锛氬鍗忓彂鏂欐爣璇�(OUT)/澶栧崗鏀舵枡鏍囪瘑(IN)</param>
+        /// <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepStart")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderStepStart(string OperType, string orderstepqrcode, string SelectType = null)
+        {
+            mes = ProductionManagementBLL.MesOrderStepStart(OperType, SelectType, orderstepqrcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐锛氬紑宸ユ椂鑾峰彇璁惧涓嬫媺鍒楄〃]
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐锛氬紑宸ユ椂鑾峰彇璁惧涓嬫媺鍒楄〃
+        /// </summary>
+        /// <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepStartSelectEqp")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderStepStartSelectEqp(string orderstepqrcode)
+        {
+            mes = ProductionManagementBLL.MesOrderStepStartSelectEqp(orderstepqrcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐锛氭姤宸ユ椂鑾峰彇鐢熶骇鐝粍涓嬫媺妗哴
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐锛氭姤宸ユ椂鑾峰彇鐢熶骇鐝粍涓嬫媺妗�
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepReportSelectUserGroup")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderStepReportSelectUserGroup()
+        {
+            mes = ProductionManagementBLL.MesOrderStepReportSelectUserGroup();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐锛氭牴鎹敓浜х彮缁勬煡鎵句汉鍛樺垪琛╙
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐锛氭牴鎹敓浜х彮缁勬煡鎵句汉鍛樺垪琛�
+        /// </summary>
+        /// <param name="usergroupcode">鐝粍缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderGroupSelectUser")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderGroupSelectUser(string usergroupcode)
+        {
+            mes = ProductionManagementBLL.MesOrderGroupSelectUser(usergroupcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐锛氫汉鍛樹笅鎷夊垪琛╙
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐锛氫汉鍛樹笅鎷夊垪琛�
+        /// </summary>
+        /// <param name="usercode">浜哄憳缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderSelectUser")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderSelectUser(string usercode = null)
+        {
+            mes = ProductionManagementBLL.MesOrderSelectUser(usercode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐锛氬彂鏂�/鏀舵枡鏃惰幏鍙栧鍗忎笅鎷夊垪琛╙
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐锛氬彂鏂�/鏀舵枡鏃惰幏鍙栧鍗忎笅鎷夊垪琛�
+        /// </summary>
+        /// <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepSelectWX")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderStepSelectWX(string orderstepqrcode)
+        {
+            mes = ProductionManagementBLL.MesOrderStepSelectWX(orderstepqrcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇鎶ュ伐锛氭姤宸�/澶栧崗鏀舵枡 鑾峰彇涓嶈壇鍘熷洜涓嬫媺鍒楄〃]
+        /// <summary>
+        /// 鐢熶骇鎶ュ伐锛氭姤宸�/澶栧崗鏀舵枡 鑾峰彇涓嶈壇鍘熷洜涓嬫媺鍒楄〃
+        /// </summary>
+        /// <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepSelectCause")]
+        [HttpGet]
+        public HttpResponseMessage MesOrderStepSelectCause(string orderstepqrcode)
+        {
+            mes = ProductionManagementBLL.MesOrderStepSelectCause(orderstepqrcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐,寮�宸ユ彁浜
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐,寮�宸ユ彁浜�
+        /// </summary>
+        /// <param name="obj">寮�宸ユ彁浜ゆ暟鎹�</param>
+        /// <returns></returns>
+        [Route(template: "SavaMesOrderStepStart")]
+        [HttpPost]
+        public HttpResponseMessage SavaMesOrderStepStart()
+        {
+            string mesordercode = HttpContext.Current.Request["mesordercode"].ToString();//宸ュ崟缂栧彿
+            string partcode = HttpContext.Current.Request["partcode"].ToString();//浜у搧缂栫爜
+            string stepseq = HttpContext.Current.Request["stepseq"].ToString();//宸ュ簭搴忓彿
+            string stepcode = HttpContext.Current.Request["stepcode"].ToString();//宸ュ簭缂栫爜
+            string eqpcode = HttpContext.Current.Request["eqpcode"].ToString();//璁惧缂栫爜
+            string taskqty = HttpContext.Current.Request["taskqty"].ToString();//浠诲姟鏁伴噺
+            string startqty = HttpContext.Current.Request["startqty"].ToString();//寮�宸ユ暟閲�
+            var username = HttpContext.Current.Request["admin"].ToString(); //寮�宸ヤ汉鍛�
+            mes = ProductionManagementBLL.SavaMesOrderStepStart(mesordercode, partcode, stepseq, stepcode, eqpcode, taskqty, startqty, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦]
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦
+        /// </summary>
+        /// <param name="obj">鎶ュ伐鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "SavaMesOrderStepReport")]
+        [HttpPost]
+        public HttpResponseMessage SavaMesOrderStepReport()
+        {
+            string mesordercode = HttpContext.Current.Request["mesordercode"].ToString();//宸ュ崟缂栧彿
+            string partcode = HttpContext.Current.Request["partcode"].ToString();//浜у搧缂栫爜
+            string stepseq = HttpContext.Current.Request["stepseq"].ToString();//宸ュ簭搴忓彿
+            string stepcode = HttpContext.Current.Request["stepcode"].ToString();//宸ュ簭缂栫爜
+            string eqpcode = HttpContext.Current.Request["eqpcode"].ToString();//璁惧缂栫爜
+            string usergroupcode = HttpContext.Current.Request["usergroupcode"].ToString();//鐝粍缂栫爜
+            string reportuser = HttpContext.Current.Request["reportuser"].ToString();//鎶ュ伐浜哄憳
+            string taskqty = HttpContext.Current.Request["taskqty"].ToString();//浠诲姟鏁伴噺
+            string startqty = HttpContext.Current.Request["startqty"].ToString();//寮�宸ユ暟閲�
+            string reportqty = HttpContext.Current.Request["reportqty"].ToString();//鎶ュ伐宸ユ暟閲�
+            string ngqty = HttpContext.Current.Request["ngqty"].ToString();//涓嶈壇鏁伴噺
+            string badcode = HttpContext.Current.Request["badcode"].ToString();//涓嶈壇鍘熷洜缂栫爜
+            string remarks = HttpContext.Current.Request["remarks"].ToString();//澶囨敞
+            string username = HttpContext.Current.Request["admin"].ToString();//鎿嶄綔浜哄憳
+            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode,usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, remarks, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐,鍙戞枡鎻愪氦]
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐,鍙戞枡鎻愪氦
+        /// </summary>
+        /// <param name="obj">鍙戞枡鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "SavaMesOrderStepOut")]
+        [HttpPost]
+        public HttpResponseMessage SavaMesOrderStepOut()
+        {
+            string mesordercode = HttpContext.Current.Request["mesordercode"].ToString();//宸ュ崟缂栧彿
+            string partcode = HttpContext.Current.Request["partcode"].ToString();//浜у搧缂栫爜
+            string stepseq = HttpContext.Current.Request["stepseq"].ToString();//宸ュ簭搴忓彿
+            string stepcode = HttpContext.Current.Request["stepcode"].ToString();//宸ュ簭缂栫爜
+            string wxcode = HttpContext.Current.Request["wxcode"].ToString();//澶栧崗渚涘簲鍟嗙紪鐮�
+            string outuser = HttpContext.Current.Request["outuser"].ToString();//鍙戞枡浜哄憳
+            string taskqty = HttpContext.Current.Request["taskqty"].ToString();//浠诲姟鏁伴噺
+            string fqty = HttpContext.Current.Request["fqty"].ToString();//鍙戞枡鏁伴噺
+            string username = HttpContext.Current.Request["admin"].ToString();//鎿嶄綔浜哄憳
+            mes = ProductionManagementBLL.SavaMesOrderStepOut(mesordercode, partcode, stepseq, stepcode, wxcode, outuser, taskqty, fqty, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐,鏀舵枡鎻愪氦]
+        /// <summary>
+        /// 鐢熶骇寮�鎶ュ伐,鏀舵枡鎻愪氦
+        /// </summary>
+        /// <param name="obj">鏀舵枡鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "SavaMesOrderStepIn")]
+        [HttpPost]
+        public HttpResponseMessage SavaMesOrderStepIn()
+        {
+            string mesordercode = HttpContext.Current.Request["mesordercode"].ToString();//宸ュ崟缂栧彿
+            string partcode = HttpContext.Current.Request["partcode"].ToString();//浜у搧缂栫爜
+            string stepseq = HttpContext.Current.Request["stepseq"].ToString();//宸ュ簭搴忓彿
+            string stepcode = HttpContext.Current.Request["stepcode"].ToString();//宸ュ簭缂栫爜
+            string wxcode = HttpContext.Current.Request["wxcode"].ToString();//澶栧崗渚涘簲鍟嗙紪鐮�
+            string inuser = HttpContext.Current.Request["inuser"].ToString();//鏀舵枡浜哄憳
+            string taskqty = HttpContext.Current.Request["taskqty"].ToString();//浠诲姟鏁伴噺
+            string sqty = HttpContext.Current.Request["sqty"].ToString();//鏀舵枡鏁伴噺
+            string ngqty = HttpContext.Current.Request["ngqty"].ToString();//涓嶈壇鏁伴噺
+            string badcode = HttpContext.Current.Request["badcode"].ToString();//涓嶈壇鍘熷洜缂栫爜
+            string remarks = HttpContext.Current.Request["remarks"].ToString();//澶囨敞
+            string username = HttpContext.Current.Request["admin"].ToString();//鎿嶄綔浜哄憳
+            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, remarks, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Controllers/AppQualityManagementController.cs b/VueWebApi/Controllers/AppQualityManagementController.cs
new file mode 100644
index 0000000..e597c66
--- /dev/null
+++ b/VueWebApi/Controllers/AppQualityManagementController.cs
@@ -0,0 +1,145 @@
+锘縰sing Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Web;
+using System.Web.Http;
+using VueWebApi.DLL.BLL;
+using VueWebApi.Models;
+using VueWebApi.Tools;
+
+namespace VueWebApi.Controllers
+{
+    [RoutePrefix(prefix: "api/AppQualityManagement")]
+    [ControllerGroup("App璐ㄩ噺绠$悊", "鍦ㄧ嚎鎺ュ彛")]
+    //[ChannelActionFilterAttributeApp]
+    public class AppQualityManagementController : ApiController
+    {
+        //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+
+        #region[鍏ュ巶妫�楠�,鎵弿閲囪喘鍒拌揣鐢熸垚鏍囩]
+        /// <summary>
+        /// 鍏ュ巶妫�楠�,鎵弿閲囪喘鍒拌揣鐢熸垚鏍囩
+        /// </summary>
+        /// <param name="labcode">閲囪喘鍒拌揣鐢熸垚鏍囩</param>
+        /// <returns></returns>
+        [Route(template: "InFactoryCheckScanLabCode")]
+        [HttpGet]
+        public HttpResponseMessage InFactoryCheckScanLabCode(string labcode)
+        {
+            mes = AppQualityManagementBLL.InFactoryCheckScanLabCode(labcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鍏ュ巶妫�楠�,鏍规嵁閫夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
+        /// <summary>
+        /// 鍏ュ巶妫�楠�,鏍规嵁閫夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
+        /// </summary>
+        /// <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
+        /// <returns></returns>
+        [Route(template: "InFactoryCheckItem")]
+        [HttpGet]
+        public HttpResponseMessage InFactoryCheckItem(string checkstandcode)
+        {
+            mes = AppQualityManagementBLL.InFactoryCheckItem(checkstandcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鍏ュ巶妫�楠�,鎻愪氦]
+        /// <summary>
+        /// 鍏ュ巶妫�楠�,鎻愪氦
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "InFactoryCheckSave")]
+        [HttpPost]
+        public HttpResponseMessage InFactoryCheckSave()
+        {
+            string hbillno = HttpContext.Current.Request["hbillno"].ToString();//閲囪喘璁㈠崟鍙�
+            string labcode = HttpContext.Current.Request["labcode"].ToString();//鏍囩缂栧彿
+            string checkstandcode = HttpContext.Current.Request["checkstandcode"].ToString();//璐ㄦ鏂规缂栫爜
+            string check_type = HttpContext.Current.Request["check_type"].ToString();//妫�楠岀被鍨�(鍏ュ巶妫�楠�(InCheck))
+            string sampmethod = HttpContext.Current.Request["sampmethod"].ToString();//鎶芥鏂瑰紡锛氬浐瀹氭娊妫�(FIXED) 姣斾緥鎶芥(SCARE)
+            string partcode = HttpContext.Current.Request["partcode"].ToString();//鐗╂枡缂栫爜
+            string customercode = HttpContext.Current.Request["customercode"].ToString();//寰�鏉ュ崟浣�(澶栬喘渚涙柟缂栫爜)
+            string batchno = HttpContext.Current.Request["batchno"].ToString();//鎵规鍙�
+            string qualitystatus = HttpContext.Current.Request["qualitystatus"].ToString(); //璐ㄩ噺鐘舵��(鍚堟牸銆佷笉鍚堟牸)
+            string labqty = HttpContext.Current.Request["labqty"].ToString();//鐗╂枡鏁伴噺(鏍囩鏁伴噺)
+            string sampleqty = HttpContext.Current.Request["sampleqty"].ToString();//鏍锋湰鏁伴噺
+            string goodqty = HttpContext.Current.Request["goodqty"].ToString();//鍚堟牸鏁伴噺
+            string ngqty = HttpContext.Current.Request["ngqty"].ToString();//涓嶅悎鏍兼暟閲�
+            string issyncbatch = HttpContext.Current.Request["issyncbatch"].ToString();//鍚屾鐩稿悓鎵规
+            string checkitemcont = HttpContext.Current.Request["checkitemcont"].ToString();//妫�楠岄」鐩暟鎹�
+            string username = HttpContext.Current.Request["admin"].ToString();//鎿嶄綔浜哄憳
+            mes = AppQualityManagementBLL.InFactoryCheckSave(hbillno, labcode, checkstandcode, check_type, sampmethod, partcode, customercode, batchno, qualitystatus, labqty, sampleqty, goodqty, ngqty, issyncbatch, checkitemcont, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+
+
+        #region[宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
+        /// <summary>
+        /// 宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+        /// </summary>
+        /// <param name="orderstepqrcode">鎵弿宸ュ簭浜岀淮鐮佷俊鎭�</param>
+        /// <param name="checktype">妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)</param>
+        /// <returns></returns>
+        [Route(template: "StepCheckSearch")]
+        [HttpGet]
+        public HttpResponseMessage StepCheckSearch(string orderstepqrcode,string checktype)
+        {
+            mes = ProductionManagementBLL.MesOrderStepCheckSearch(orderstepqrcode, checktype);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
+        /// <summary>
+        /// 鍏ュ巶妫�楠�,宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
+        /// </summary>
+        /// <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
+        /// <returns></returns>
+        [Route(template: "StepCheckItemList")]
+        [HttpGet]
+        public HttpResponseMessage StepCheckItemList(string checkstandcode)
+        {
+            mes = ProductionManagementBLL.MesOrderStepCheckItemList(checkstandcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[宸ュ簭妫�楠�,鎻愪氦]
+        /// <summary>
+        /// 宸ュ簭妫�楠�,鎻愪氦
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "SaveStepCheckItem")]
+        [HttpPost]
+        public HttpResponseMessage SaveStepCheckItem()
+        {
+            string wocode = HttpContext.Current.Request["wocode"].ToString();//宸ュ崟鍙�
+            string partcode = HttpContext.Current.Request["partcode"].ToString();//鐗╂枡缂栫爜
+            string stepcode = HttpContext.Current.Request["stepcode"].ToString();//宸ュ簭缂栫爜
+            string checkstandcode = HttpContext.Current.Request["checkstandcode"].ToString();//璐ㄦ鏂规缂栫爜
+            string check_type = HttpContext.Current.Request["check_type"].ToString();//妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)
+            string sampmethod = HttpContext.Current.Request["sampmethod"].ToString();//鎶芥鏂瑰紡锛氬浐瀹氭娊妫�(FIXED) 姣斾緥鎶芥(SCARE)
+            string qualitystatus = HttpContext.Current.Request["qualitystatus"].ToString(); //璐ㄩ噺鐘舵��(鍚堟牸銆佷笉鍚堟牸)
+            string labqty = HttpContext.Current.Request["good_qty"].ToString();//宸ュ簭浠诲姟鍚堟牸鏁伴噺
+            string sampleqty = HttpContext.Current.Request["sampleqty"].ToString();//鏍锋湰鏁伴噺
+            string goodqty = HttpContext.Current.Request["goodqty"].ToString();//鍚堟牸鏁伴噺
+            string ngqty = HttpContext.Current.Request["ngqty"].ToString();//涓嶅悎鏍兼暟閲�
+            string checkitemcont = HttpContext.Current.Request["checkitemcont"].ToString();//妫�楠岄」鐩暟鎹�
+            string username = HttpContext.Current.Request["admin"].ToString();//鎿嶄綔浜哄憳
+            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(wocode,partcode,stepcode,checkstandcode,check_type,sampmethod,qualitystatus,labqty,sampleqty,goodqty,ngqty,checkitemcont,username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+    }
+}
diff --git a/VueWebApi/Controllers/BaseDateController.cs b/VueWebApi/Controllers/BaseDateController.cs
new file mode 100644
index 0000000..51f6920
--- /dev/null
+++ b/VueWebApi/Controllers/BaseDateController.cs
@@ -0,0 +1,135 @@
+锘縰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.Tools;
+
+namespace VueWebApi.Controllers
+{
+    [RoutePrefix(prefix: "api/BaseDate")]
+    [ControllerGroup("鍩烘湰璧勬枡", "鍦ㄧ嚎鎺ュ彛")]
+    //[ChannelActionFilter]
+    public class BaseDateController : ApiController
+    {
+        //瀹氫箟鍏ㄥ眬淇℃伅杩斿洖鍙橀噺
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+
+        #region[閲囪喘渚涙柟淇℃伅鏌ヨ]
+        /// <summary>
+        /// 閲囪喘渚涙柟淇℃伅鏌ヨ
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "PurchSupplierSelect")]
+        [HttpGet]
+        public HttpResponseMessage PurchSupplierSelect()
+        {
+            mes = BaseDateBLL.PurchSupplierSelect();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[閮ㄩ棬淇℃伅鏌ヨ]
+        /// <summary>
+        /// 閮ㄩ棬淇℃伅鏌ヨ
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "DepartMentSelect")]
+        [HttpGet]
+        public HttpResponseMessage DepartMentSelect()
+        {
+            mes = BaseDateBLL.DepartMentSelect();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[浠撳簱淇℃伅鏌ヨ]
+        /// <summary>
+        /// 浠撳簱淇℃伅鏌ヨ
+        /// </summary>
+        /// <returns>StoreHouseSearch</returns>
+        [Route(template: "StoreHouseSearch")]
+        [HttpGet]
+        public HttpResponseMessage StoreHouseSearch()
+        {
+            mes = BaseDateBLL.StoreHouseSearch();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[搴撲綅淇℃伅鏌ヨ]
+        /// <summary>
+        /// 搴撲綅淇℃伅鏌ヨ
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "WarehouseLocationSearch")]
+        [HttpGet]
+        public HttpResponseMessage WarehouseLocationSearch()
+        {
+            mes = BaseDateBLL.WarehouseLocationSearch();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[搴撲綅鏌ヨ浠撳簱]
+        /// <summary>
+        /// 搴撲綅鏌ヨ浠撳簱
+        /// </summary>
+        /// <param name="locationcode">搴撲綅缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "WarehouseLocationSearchStoreHouse")]
+        [HttpGet]
+        public HttpResponseMessage WarehouseLocationSearchStoreHouse(string locationcode)
+        {
+            mes = BaseDateBLL.WarehouseLocationSearchStoreHouse(locationcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鍗曚綅淇℃伅鏌ヨ]
+        /// <summary>
+        /// 鍗曚綅淇℃伅鏌ヨ
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "UnitSerch")]
+        [HttpGet]
+        public HttpResponseMessage UnitSerch()
+        {
+            mes = BaseDateBLL.UnitSerch();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规淇℃伅]
+        /// <summary>
+        /// 璐ㄦ鏂规淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "QualityScheme")]
+        [HttpGet]
+        public HttpResponseMessage QualityScheme()
+        {
+            mes = BaseDateBLL.QualityScheme();
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[瀛樿揣鏌ヨ]
+        /// <summary>
+        /// 瀛樿揣鏌ヨ
+        /// </summary>
+        /// <param name="param">瀛樿揣淇℃伅</param>
+        /// <returns></returns>
+        [Route(template: "InventorySelect")]
+        [HttpGet]
+        public HttpResponseMessage InventorySelect(string param=null)
+        {
+            mes = BaseDateBLL.InventorySelect(param);
+            return TJson.toJson(mes);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Controllers/LoginController.cs b/VueWebApi/Controllers/LoginController.cs
index a47ecfe..f1041a2 100644
--- a/VueWebApi/Controllers/LoginController.cs
+++ b/VueWebApi/Controllers/LoginController.cs
@@ -238,9 +238,11 @@
                     ms.usercode = dt.Rows[0]["USERCODE"].ToString();
                     ms.username = dt.Rows[0]["USERNAME"].ToString();
                     ms.password = dt.Rows[0]["PASSWORD"].ToString();
+                    ms.group_name = dt.Rows[0]["GROUP_NAME"].ToString();
                     ms.usertype = usertype;
                     mss.Add(ms);
-
+                    //鍐欏叆鐧诲綍鎿嶄綔璁板綍
+                    mes = LoginBLL.LoginBas(ms.usercode, ms.usertype);
                     mes.code = "200";
                     mes.Message = "鐧诲綍鎴愬姛!";
                     mes.data = ms;
diff --git a/VueWebApi/Controllers/ProductionManagementController.cs b/VueWebApi/Controllers/ProductionManagementController.cs
index 5467bf6..19b4f61 100644
--- a/VueWebApi/Controllers/ProductionManagementController.cs
+++ b/VueWebApi/Controllers/ProductionManagementController.cs
@@ -629,40 +629,28 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
+
+        #region[宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
         /// <summary>
-        /// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+        /// 宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
         /// </summary>
-        /// <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+        /// <param name="orderstepqrcode">鎵弿宸ュ簭浜岀淮鐮佷俊鎭�</param>
+        /// <param name="checktype">妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)</param>
         /// <returns></returns>
         [Route(template: "MesOrderStepCheckSearch")]
         [HttpGet]
-        public HttpResponseMessage MesOrderStepCheckSearch(string orderstepqrcode)
+        public HttpResponseMessage MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
         {
-            mes = ProductionManagementBLL.MesOrderStepCheckSearch(orderstepqrcode);
+            mes = ProductionManagementBLL.MesOrderStepCheckSearch(orderstepqrcode, checktype);
             return TJson.toJson(mes);
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁]
+        #region[宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
         /// <summary>
-        /// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁
+        /// 鍏ュ巶妫�楠�,宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
         /// </summary>
-        /// <returns></returns>
-        [Route(template: "MesOrderStepCheckSelect")]
-        [HttpGet]
-        public HttpResponseMessage MesOrderStepCheckSelect()
-        {
-            mes = ProductionManagementBLL.MesOrderStepCheckSelect();
-            return TJson.toJson(mes);
-        }
-        #endregion
-
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛╙
-        /// <summary>
-        /// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛�
-        /// </summary>
-        /// <param name="checkstandcode">妫�楠屾爣鍑嗙紪鐮�</param>
+        /// <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
         /// <returns></returns>
         [Route(template: "MesOrderStepCheckItemList")]
         [HttpGet]
@@ -673,29 +661,29 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛榏
+        #region[宸ュ簭妫�楠�,鎻愪氦]
         /// <summary>
-        /// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛�
+        /// 宸ュ簭妫�楠�,鎻愪氦
         /// </summary>
-        /// <param name="obj">鎻愪氦淇℃伅</param>
         /// <returns></returns>
         [Route(template: "SaveMesOrderStepCheckItem")]
         [HttpPost]
         public HttpResponseMessage SaveMesOrderStepCheckItem([FromBody] JObject obj)
         {
-            string mesordercode = obj["mesordercode"].ToString(); //宸ュ崟缂栧彿
+            string wocode = obj["wocode"].ToString(); //宸ュ崟缂栧彿
             string partcode = obj["partcode"].ToString(); //浜у搧缂栫爜
             string stepcode = obj["stepcode"].ToString(); //宸ュ簭缂栫爜
-            string checkstanedcode = obj["checkstanedcode"].ToString(); //妫�楠屾爣鍑嗙紪鐮�
-            string checkusercode = obj["checkusercode"].ToString(); //妫�楠屼汉鍛樼紪鐮�
-            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);
+            string checkstandcode = obj["checkstandcode"].ToString(); //璐ㄦ鏂规缂栫爜
+            string check_type = obj["check_type"].ToString(); //妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)
+            string sampmethod = obj["sampmethod"].ToString(); //鎶芥鏂瑰紡锛氬浐瀹氭娊妫�(FIXED) 姣斾緥鎶芥(SCARE)
+            string qualitystatus = obj["qualitystatus"].ToString(); //璐ㄩ噺鐘舵��(鍚堟牸銆佷笉鍚堟牸)
+            string labqty = obj["good_qty"].ToString(); //宸ュ簭浠诲姟鍚堟牸鏁伴噺
+            string sampleqty = obj["sampleqty"].ToString(); //鏍锋湰鏁伴噺
+            string goodqty = obj["goodqty"].ToString(); //鍚堟牸鏁伴噺
+            string ngqty = obj["ngqty"].ToString();//涓嶅悎鏍兼暟閲�
+            string checkitemcont = obj["checkitemcont"].ToString(); //妫�楠岄」鐩暟鎹�
             var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
-            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username,json);
+            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(wocode, partcode, stepcode, checkstandcode, check_type, sampmethod, qualitystatus, labqty, sampleqty, goodqty, ngqty, checkitemcont, username);
             return TJson.toJson(mes);
         }
         #endregion
diff --git a/VueWebApi/Controllers/QualityManagementController.cs b/VueWebApi/Controllers/QualityManagementController.cs
index 9f77797..1d52e3d 100644
--- a/VueWebApi/Controllers/QualityManagementController.cs
+++ b/VueWebApi/Controllers/QualityManagementController.cs
@@ -296,5 +296,91 @@
             return TJson.toJson(mes);
         }
         #endregion
+
+
+        #region[璐ㄦ鏂规鍒楄〃鏌ヨ]
+        /// <summary>
+        /// 璐ㄦ鏂规鍒楄〃鏌ヨ
+        /// </summary>
+        /// <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+        /// <param name="qualityinsptname">璐ㄦ鏂规鍚嶇О</param>
+        /// <param name="status">鏈夋晥鐘舵��</param>
+        /// <param name="checktype">璐ㄦ绫诲瀷</param>
+        /// <param name="sampltype">鎶芥牱鏂瑰紡</param>
+        /// <param name="suitobject">閫傜敤瀵硅薄</param>
+        /// <param name="page">椤电爜</param>
+        /// <param name="rows">姣忛〉鏄剧ず鏉℃暟</param>
+        /// <param name="prop">鎺掑簭瀛楁</param>
+        /// <param name="order">鎺掑簭瑙勫垯</param>
+        /// <returns></returns>
+        [Route(template: "QualityInspectionSearch")]
+        [HttpGet]
+        public HttpResponseMessage QualityInspectionSearch(string qualityinsptcode = null, string qualityinsptname = null, string status = null, string checktype = null, string sampltype = null, string suitobject = 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.QualityInspectionSearch(qualityinsptcode, qualityinsptname, status, checktype, sampltype, suitobject, startNum, endNum, prop, order);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规鏌ョ湅缂栬緫]
+        /// <summary>
+        /// 璐ㄦ鏂规鏌ョ湅缂栬緫
+        /// </summary>
+        /// <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "QualityInspectionSeeEdit")]
+        [HttpGet]
+        public HttpResponseMessage QualityInspectionSeeEdit(string qualityinsptcode)
+        {
+            mes = QualityManagementBLL.QualityInspectionSeeEdit(qualityinsptcode);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规鏂板/缂栬緫鎻愪氦]
+        /// <summary>
+        /// 璐ㄦ鏂规鏂板/缂栬緫鎻愪氦
+        /// </summary>
+        /// <param name="obj">鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "QualityInspectionAddEditSave")]
+        [HttpPost]
+        public HttpResponseMessage QualityInspectionAddEditSave([FromBody] JObject obj)
+        {
+            string qualityinsptcode = obj["qualityinsptcode"].ToString(); //璐ㄦ鏂规缂栫爜
+            string qualityinsptname = obj["qualityinsptname"].ToString(); //璐ㄦ鏂规鍚嶇О
+            string status = obj["status"].ToString(); //鏈夋晥鐘舵��
+            string checktype = obj["checktype"].ToString(); //妫�楠岀被鍨�
+            string sampmethod = obj["sampmethod"].ToString(); //鎶芥鏂瑰紡
+            string sampscare = obj["sampscare"].ToString(); //鍥哄畾鎶芥(鏍锋湰鏁�)   姣斾緥鎶芥(鐧惧垎姣�)
+            string suitobject = obj["suitobject"].ToString(); //閫傜敤瀵硅薄
+            string suitpart = obj["suitpart"].ToString();  //閫傜敤鐗╂枡(缂栫爜)鎴栬�呯墿鏂欑被鍨�(缂栫爜)
+            string descr = obj["descr"].ToString(); //妫�楠屾柟妗堟弿杩�
+            string stepcode = obj["stepcode"].ToString(); //宸ュ簭缂栫爜(棣栨銆佸贰妫�銆佸畬宸ユ楠�)
+            string checkitem = obj["checkitem"].ToString(); //璐ㄦ鍒楄〃
+            string type = obj["type"].ToString(); //鎿嶄綔绫诲瀷
+            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
+            mes = QualityManagementBLL.QualityInspectionAddEditSave(qualityinsptcode, qualityinsptname, status, checktype, sampmethod, sampscare, suitobject, suitpart, descr, stepcode, checkitem, type, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规鍒犻櫎]
+        /// <summary>
+        /// 璐ㄦ鏂规鍒犻櫎
+        /// </summary>
+        /// <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "QualityInspectionDelete")]
+        [HttpPost]
+        public HttpResponseMessage QualityInspectionDelete(string qualityinsptcode)
+        {
+            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //鎿嶄綔浜哄憳
+            mes = QualityManagementBLL.QualityInspectionDelete(qualityinsptcode, username);
+            return TJson.toJson(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebApi/Controllers/ReportManagerController.cs b/VueWebApi/Controllers/ReportManagerController.cs
index 969c696..c43ba9f 100644
--- a/VueWebApi/Controllers/ReportManagerController.cs
+++ b/VueWebApi/Controllers/ReportManagerController.cs
@@ -385,5 +385,70 @@
             return TJson.toJson(mes);
         }
         #endregion
+
+
+        #region[鐢熶骇杩涘害鎶ヨ〃]
+        /// <summary>
+        /// 鐢熶骇杩涘害鎶ヨ〃
+        /// </summary>
+        /// <param name="status">宸ュ崟鐘舵��</param>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="routecode">宸ヨ壓璺嚎缂栫爜</param>
+        /// <param name="routename">宸ヨ壓璺嚎鍚嶇О</param>
+        /// <param name="partcode">浜у搧缂栫爜</param>
+        /// <param name="partname">浜у搧鍚嶇О</param>
+        /// <param name="partspec">瑙勬牸鍨嬪彿</param>
+        /// <param name="lm_date">鍗曟嵁鏃ユ湡</param>
+        /// <param name="page">椤电爜</param>
+        /// <param name="rows">姣忛〉鏄剧ず鏉℃暟</param>
+        /// <param name="prop">鎺掑簭瀛楁</param>
+        /// <param name="order">鎺掑簭瑙勫垯</param>
+        /// <returns></returns>
+        [Route(template: "ProductionScheduleReportSearch")]
+        [HttpGet]
+        public HttpResponseMessage ProductionScheduleReportSearch(int page, int rows, string prop, string order, string status = null, string wocode = null, string routecode = null, string routename = null, string partcode = null, string partname = null, string partspec = null, string lm_date = null)
+        {
+            string opendate = "";     //寮�濮嬫椂闂�
+            string closedate = "";    //缁撴潫鏃堕棿
+            if (lm_date != "" && lm_date != null)
+            {
+                opendate = lm_date.Split('~')[0].ToString();
+                closedate = lm_date.Split('~')[1].ToString();
+            }
+            int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
+            int endNum = rows * page;   //缁撴潫璁板綍 rowNum
+            mes = ReportManagerBLL.ProductionScheduleReportSearch(status, wocode, routecode, routename, partcode, partname, partspec, opendate, closedate, startNum, endNum, prop, order);
+            return TJson.toJson(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇杩涘害鎶ヨ〃瀵煎嚭]
+        /// <summary>
+        /// 鐢熶骇杩涘害鎶ヨ〃瀵煎嚭
+        /// </summary>
+        /// <param name="status">宸ュ崟鐘舵��</param>
+        /// <param name="wocode">宸ュ崟缂栧彿</param>
+        /// <param name="routecode">宸ヨ壓璺嚎缂栫爜</param>
+        /// <param name="routename">宸ヨ壓璺嚎鍚嶇О</param>
+        /// <param name="partcode">浜у搧缂栫爜</param>
+        /// <param name="partname">浜у搧鍚嶇О</param>
+        /// <param name="partspec">瑙勬牸鍨嬪彿</param>
+        /// <param name="lm_date">鍗曟嵁鏃ユ湡</param>
+        /// <returns></returns>
+        [Route(template: "ProductionScheduleReportExcelSearch")]
+        [HttpGet]
+        public HttpResponseMessage ProductionScheduleReportExcelSearch(string status = null, string wocode = null, string routecode = null, string routename = null, string partcode = null, string partname = null, string partspec = null, string lm_date = null)
+        {
+            string opendate = "";     //寮�濮嬫椂闂�
+            string closedate = "";    //缁撴潫鏃堕棿
+            if (lm_date != "" && lm_date != null)
+            {
+                opendate = lm_date.Split('~')[0].ToString();
+                closedate = lm_date.Split('~')[1].ToString();
+            }
+            mes = ReportManagerBLL.ProductionScheduleReportExcelSearch(status, wocode, routecode, routename, partcode, partname, partspec, opendate, closedate);
+            return TJson.toJson(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebApi/Controllers/SystemSettingController.cs b/VueWebApi/Controllers/SystemSettingController.cs
index 4c266d6..55e8bde 100644
--- a/VueWebApi/Controllers/SystemSettingController.cs
+++ b/VueWebApi/Controllers/SystemSettingController.cs
@@ -80,6 +80,23 @@
         #endregion
 
 
+        #region[鐢熸垚绯荤粺鏉$爜(鑷畾涔�)]
+        /// <summary>
+        /// 鐢熸垚绯荤粺鏉$爜(鑷畾涔�)
+        /// </summary>
+        /// <param name="rightcode">鍔熻兘缂栫爜</param>
+        /// <param name="partcode">鐗╂枡缂栫爜</param>
+        /// <param name="qty">鏁伴噺</param>
+        /// <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+        /// <returns></returns>
+        [Route(template: "LabelBarCode")]
+        [HttpGet]
+        public HttpResponseMessage LabelBarCode(string rightcode, string partcode, string qty, string onelabqty)
+        {
+            mes = SystemSettingBLL.LabelBarCode(rightcode, partcode, qty, onelabqty);
+            return TJson.toJson(mes);
+        }
+        #endregion
 
         #region[杞﹂棿鍏憡鍒楄〃]
         /// <summary>
diff --git a/VueWebApi/DLL/BLL/AppAnalyticsBLL.cs b/VueWebApi/DLL/BLL/AppAnalyticsBLL.cs
new file mode 100644
index 0000000..fcd7424
--- /dev/null
+++ b/VueWebApi/DLL/BLL/AppAnalyticsBLL.cs
@@ -0,0 +1,26 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using VueWebApi.DLL.DAL;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.BLL
+{
+    public class AppAnalyticsBLL
+    {
+        #region[App鐢熶骇鐪嬫澘]
+        public static ToMessage ProductionKanban(string usercode, string startopendate, string endclosedate,string defecttype)
+        {
+            return AppAnalyticsDAL.ProductionKanban(usercode, startopendate, endclosedate, defecttype);
+        }
+        #endregion
+
+        #region[App鐢熶骇杩涘害鐪嬫澘鍗曟嵁淇℃伅]
+        public static ToMessage ProductionScheduleKanban(string ordertype, string partcode, string startopendate, string endclosedate)
+        {
+            return AppAnalyticsDAL.ProductionScheduleKanban(ordertype, partcode, startopendate, endclosedate);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/AppPersonalBLL.cs b/VueWebApi/DLL/BLL/AppPersonalBLL.cs
new file mode 100644
index 0000000..2b3c5ab
--- /dev/null
+++ b/VueWebApi/DLL/BLL/AppPersonalBLL.cs
@@ -0,0 +1,20 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using VueWebApi.DLL.DAL;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.BLL
+{
+    public class AppPersonalBLL
+    {
+
+        #region[App涓汉璁′欢宸ヨ祫]
+        public static ToMessage PieceRateWage(string compute, string usercode, string startopendate, string endclosedate)
+        {
+            return AppPersonalDAL.PieceRateWage(compute,usercode, startopendate, endclosedate);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/AppQualityManagementBLL.cs b/VueWebApi/DLL/BLL/AppQualityManagementBLL.cs
new file mode 100644
index 0000000..ac89590
--- /dev/null
+++ b/VueWebApi/DLL/BLL/AppQualityManagementBLL.cs
@@ -0,0 +1,33 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using VueWebApi.DLL.DAL;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.BLL
+{
+    public class AppQualityManagementBLL
+    {
+        #region[鍏ュ巶妫�楠�,鎵弿閲囪喘鍒拌揣鐢熸垚鏍囩]
+        public static ToMessage InFactoryCheckScanLabCode(string labcode)
+        {
+            return AppQualityManagementDAL.InFactoryCheckScanLabCode(labcode);
+        }
+        #endregion
+
+        #region[鍏ュ巶妫�楠�,鏍规嵁閫夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
+        public static ToMessage InFactoryCheckItem(string checkstandcode)
+        {
+            return AppQualityManagementDAL.InFactoryCheckItem(checkstandcode);
+        }
+        #endregion
+
+        #region[鍏ュ巶妫�楠�,鎻愪氦]
+        public static ToMessage InFactoryCheckSave(string hbillno, string labcode, string checkstandcode, string check_type, string sampmethod, string partcode, string customercode, string batchno, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string issyncbatch, string checkitemcont, string username)
+        {
+            return AppQualityManagementDAL.InFactoryCheckSave(hbillno, labcode, checkstandcode, check_type, sampmethod, partcode, customercode, batchno, qualitystatus, labqty, sampleqty, goodqty, ngqty, issyncbatch, checkitemcont, username);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/BaseDateBLL.cs b/VueWebApi/DLL/BLL/BaseDateBLL.cs
new file mode 100644
index 0000000..c637258
--- /dev/null
+++ b/VueWebApi/DLL/BLL/BaseDateBLL.cs
@@ -0,0 +1,68 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using VueWebApi.DLL.DAL;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.BLL
+{
+    public class BaseDateBLL
+    {
+        #region[閲囪喘渚涙柟淇℃伅鏌ヨ]
+        public static ToMessage PurchSupplierSelect()
+        {
+            return BaseDateDAL.PurchSupplierSelect();
+        }
+        #endregion
+
+        #region[閮ㄩ棬淇℃伅鏌ヨ]
+        public static ToMessage DepartMentSelect()
+        {
+            return BaseDateDAL.DepartMentSelect();
+        }
+        #endregion
+
+        #region[浠撳簱淇℃伅鏌ヨ]
+        public static ToMessage StoreHouseSearch()
+        {
+            return BaseDateDAL.StoreHouseSearch();
+        }
+        #endregion
+
+        #region[搴撲綅淇℃伅鏌ヨ]
+        public static ToMessage WarehouseLocationSearch()
+        {
+            return BaseDateDAL.WarehouseLocationSearch();
+        }
+        #endregion
+
+        #region[搴撲綅鏌ヨ浠撳簱]
+        public static ToMessage WarehouseLocationSearchStoreHouse(string locationcode)
+        {
+            return BaseDateDAL.WarehouseLocationSearchStoreHouse(locationcode);
+        }
+        #endregion
+
+        #region[鍗曚綅淇℃伅鏌ヨ]
+        public static ToMessage UnitSerch()
+        {
+            return BaseDateDAL.UnitSerch();
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规淇℃伅]
+        public static ToMessage QualityScheme()
+        {
+            return BaseDateDAL.QualityScheme();
+        }
+        #endregion
+
+        #region[瀛樿揣鏌ヨ]
+        public static ToMessage InventorySelect(string param)
+        {
+            return BaseDateDAL.InventorySelect(param);
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/ProductionManagementBLL.cs b/VueWebApi/DLL/BLL/ProductionManagementBLL.cs
index 37b2355..90bf30c 100644
--- a/VueWebApi/DLL/BLL/ProductionManagementBLL.cs
+++ b/VueWebApi/DLL/BLL/ProductionManagementBLL.cs
@@ -227,31 +227,25 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
-        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode)
+
+        #region[宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
+        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
         {
-            return ProductionManagementDAL.MesOrderStepCheckSearch(orderstepqrcode);
+            return ProductionManagementDAL.MesOrderStepCheckSearch(orderstepqrcode, checktype);
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁]
-        public static ToMessage MesOrderStepCheckSelect()
-        {
-            return ProductionManagementDAL.MesOrderStepCheckSelect();
-        }
-        #endregion
-
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛╙
+        #region[宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
         public static ToMessage MesOrderStepCheckItemList(string checkstandcode)
         {
             return ProductionManagementDAL.MesOrderStepCheckItemList(checkstandcode);
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛榏
-        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)
+        #region[宸ュ簭妫�楠�,鎻愪氦]
+        public static ToMessage SaveMesOrderStepCheckItem(string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, string username)
         {
-            return ProductionManagementDAL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username, json);
+            return ProductionManagementDAL.SaveMesOrderStepCheckItem(wocode, partcode, stepcode, checkstandcode, check_type, sampmethod, qualitystatus, labqty, sampleqty, goodqty, ngqty, checkitemcont, username);
         }
         #endregion
 
diff --git a/VueWebApi/DLL/BLL/QualityManagementBLL.cs b/VueWebApi/DLL/BLL/QualityManagementBLL.cs
index 12052bf..159141d 100644
--- a/VueWebApi/DLL/BLL/QualityManagementBLL.cs
+++ b/VueWebApi/DLL/BLL/QualityManagementBLL.cs
@@ -114,5 +114,34 @@
             return QualityManagementDAL.StepCheckTableOutExcel(wocode, partcode, partname, partapec, stepname, standname, checktype, checkresult, prop, order);
         }
         #endregion
+
+
+        #region[璐ㄦ鏂规鍒楄〃鏌ヨ]
+        public static ToMessage QualityInspectionSearch(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampltype, string suitobject, int startNum, int endNum, string prop, string order)
+        {
+            return QualityManagementDAL.QualityInspectionSearch(qualityinsptcode, qualityinsptname, status, checktype, sampltype, suitobject, startNum, endNum, prop, order);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规鏌ョ湅缂栬緫]
+        public static ToMessage QualityInspectionSeeEdit(string qualityinsptcode)
+        {
+            return QualityManagementDAL.QualityInspectionSeeEdit(qualityinsptcode);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规鏂板/缂栬緫鎻愪氦]
+        public static ToMessage QualityInspectionAddEditSave(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampmethod, string sampscare, string suitobject, string suitpart, string descr, string stepcode, string checkitem, string type, string username)
+        {
+            return QualityManagementDAL.QualityInspectionAddEditSave(qualityinsptcode, qualityinsptname, status, checktype, sampmethod, sampscare, suitobject, suitpart, descr, stepcode, checkitem, type, username);
+        }
+        #endregion
+
+        #region[璐ㄦ鏂规鍒犻櫎]
+        public static ToMessage QualityInspectionDelete(string qualityinsptcode, string username)
+        {
+            return QualityManagementDAL.QualityInspectionDelete(qualityinsptcode, username);
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/ReportManagerBLL.cs b/VueWebApi/DLL/BLL/ReportManagerBLL.cs
index 090934d..67b77ac 100644
--- a/VueWebApi/DLL/BLL/ReportManagerBLL.cs
+++ b/VueWebApi/DLL/BLL/ReportManagerBLL.cs
@@ -97,5 +97,20 @@
             return ReportManagerDAL.MaintenanceDetailsReportExcelSearch(wocode, partcode, partname, partspec, stepname, style, defectname, repairname, repairopendate, repairclosedate);
         }
         #endregion
+
+
+        #region[鐢熶骇杩涘害鎶ヨ〃]
+        public static ToMessage ProductionScheduleReportSearch(string status, string wocode, string routecode, string routename, string partcode, string partname, string partspec, string opendate, string closedate, int startNum, int endNum, string prop, string order)
+        {
+            return ReportManagerDAL.ProductionScheduleReportSearch(status, wocode, routecode, routename, partcode, partname, partspec, opendate, closedate, startNum, endNum, prop, order);
+        }
+        #endregion
+
+        #region[鐢熶骇杩涘害鎶ヨ〃瀵煎嚭]
+        public static ToMessage ProductionScheduleReportExcelSearch(string status, string wocode, string routecode, string routename, string partcode, string partname, string partspec, string opendate, string closedate)
+        {
+            return ReportManagerDAL.ProductionScheduleReportExcelSearch(status, wocode, routecode, routename, partcode, partname, partspec, opendate, closedate);
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/VueWebApi/DLL/BLL/SystemSettingBLL.cs b/VueWebApi/DLL/BLL/SystemSettingBLL.cs
index c9a6d26..5a767b0 100644
--- a/VueWebApi/DLL/BLL/SystemSettingBLL.cs
+++ b/VueWebApi/DLL/BLL/SystemSettingBLL.cs
@@ -32,6 +32,14 @@
         #endregion
 
 
+        #region[鐢熸垚绯荤粺鏉$爜(鑷畾涔�)]
+        public static ToMessage LabelBarCode(string rightcode, string partcode, string qty, string onelabqty)
+        {
+            return SystemSettingDAL.LabelBarCode(rightcode, partcode, qty, onelabqty);
+        }
+        #endregion
+
+
         #region[杞﹂棿鍏憡鍒楄〃]
         public static ToMessage SystemAnnouncementSearch(string wkspcode, string ancetitle, string ancecont, string cancel, string level, int startNum, int endNum, string prop, string order)
         {
diff --git a/VueWebApi/DLL/DAL/AppAnalyticsDAL.cs b/VueWebApi/DLL/DAL/AppAnalyticsDAL.cs
new file mode 100644
index 0000000..e96f522
--- /dev/null
+++ b/VueWebApi/DLL/DAL/AppAnalyticsDAL.cs
@@ -0,0 +1,343 @@
+锘縰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 AppAnalyticsDAL
+    {
+        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[App鐢熶骇鐪嬫澘]
+        public static ToMessage ProductionKanban(string usercode, string startopendate, string endclosedate,string defecttype)
+        {
+            Dictionary<object, object> dList = new Dictionary<object, object>();
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                // --------------鐢熶骇鎬昏--------------
+                var sql = @"select 
+                             sum(CASE AA.clmname WHEN '璁″垝鏁伴噺' THEN AA.clmqty ELSE 0 END) as 'plan_qty', 
+                             sum(CASE AA.clmname WHEN '鍚堟牸浜у嚭' THEN AA.clmqty ELSE 0 END) as 'good_qty', 
+                             sum(CASE AA.clmname WHEN '缂洪櫡浜у嚭' THEN AA.clmqty ELSE 0 END) as 'defect_qty'
+                             from(
+                             select  isnull(sum(A.plan_qty),0) as clmqty,'璁″垝鏁伴噺'as clmname  from TK_Wrk_Man  A
+                             where A.lm_date between @startopendate and @endclosedate
+                             union all
+                             select isnull(sum(P.good_qty),0) as report_qty,'鍚堟牸浜у嚭' as 鍚堟牸浜у嚭  from TK_Wrk_Man  A
+                             inner join TK_Wrk_Step P on A.wo_code=P.wo_code  and P.isend='Y'
+                             where A.lm_date between @startopendate and @endclosedate
+                             union all
+                             select (isnull(sum(P.ng_qty),0)+isnull(sum(P.bad_qty),0)) as ngqty,'缂洪櫡浜у嚭' as 缂洪櫡浜у嚭  from TK_Wrk_Man  A
+                             inner join TK_Wrk_Step P on A.wo_code=P.wo_code 
+                             where A.lm_date between @startopendate and @endclosedate
+                             ) as AA";
+                dynamicParams.Add("@startopendate", startopendate + " 00:00:00");
+                dynamicParams.Add("@endclosedate", endclosedate + " 23:59:59");
+                var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                dList.Add("dt0", data0);
+                // --------------鐢熶骇宸ュ崟--------------
+                var sql1 = @"select sum(AA.cluntqty) as wo_coum,AA.wo_status   from (
+                             select COUNT(A.id) as cluntqty,
+                             case when A.status='START' then '鎵ц涓�' when A.status='CLOSED' then '宸茬粨鏉�' else '鏈紑濮�' end as wo_status
+                             from TK_Wrk_Man A
+                             where A.lm_date between @startopendate and @endclosedate
+                             group by A.status
+                             ) as AA group by AA.wo_status";
+                var data1 = DapperHelper.selectdata(sql1, dynamicParams);
+                dList.Add("dt1", data1);
+                // --------------缂洪櫡缁熻--------------
+                var sql2 = "";
+                switch (defecttype)
+                {
+                    case "prt": //鎸変骇鍝佺粺璁�
+                         sql2 = @"select top 5 sum(AA.plan_qty) as plan_qty,AA.partname,sum(AA.ng_qty)+sum(AA.bad_qty) as defect_qty  from (
+                                  select A.plan_qty,M.partname,S.ng_qty,S.bad_qty   from TK_Wrk_Man A
+                                  inner join (select wo_code, isnull(sum(ng_qty),0) as ng_qty,isnull(sum(bad_qty),0) as bad_qty from TK_Wrk_Step where ng_qty>0 or bad_qty>0 group by wo_code) S on A.wo_code=S.wo_code
+                                  inner join TMateriel_Info M on A.materiel_code=M.partcode
+                                  where A.lm_date between @startopendate and @endclosedate 
+                                  ) as AA
+                                  group by AA.partname
+                                  order by defect_qty desc";
+                        break;
+                    case "stp"://鎸夊伐搴忕粺璁�
+                         sql2 = @"select top 5 sum(AA.plan_qty) as plan_qty,AA.stepname,sum(AA.ng_qty)+sum(AA.bad_qty) as defect_qty  from (
+                                  select A.plan_qty,T.stepname,S.ng_qty,S.bad_qty   from TK_Wrk_Man A
+                                  inner join (select wo_code,step_code, isnull(sum(ng_qty),0) as ng_qty,isnull(sum(bad_qty),0) as bad_qty from TK_Wrk_Step where ng_qty>0 or bad_qty>0 group by wo_code,step_code) S on A.wo_code=S.wo_code
+                                  inner join TStep T on S.step_code=T.stepcode
+                                  where A.lm_date between @startopendate and @endclosedate 
+                                  ) as AA
+                                  group by AA.stepname
+                                  order by defect_qty desc";
+                        break;
+                    default:
+                        break;
+                }
+                var data2 = DapperHelper.selectdata(sql2, dynamicParams);
+                dList.Add("dt2", data2);
+                mes.code = "200";
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.data = dList;
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[App鐢熶骇杩涘害鐪嬫澘鍗曟嵁淇℃伅]
+        public static ToMessage ProductionScheduleKanban(string ordertype, string partcode, string startopendate, string endclosedate)
+        {
+            Dictionary<object, object> dList = new Dictionary<object, object>();
+            List<AppScheduleKanban> list = new List<AppScheduleKanban>();
+            var dynamicParams = new DynamicParameters();
+            string search = "",sql="";
+            DataTable dt;
+            try
+            {
+                //鏍规嵁鏌ヨ鏉′欢,鏌ユ壘绗﹀悎瑕佹眰鐨勫崟鎹�
+                switch (ordertype)
+                {
+                    case "SO": //鎸夐攢鍞鍗曠粺璁�
+                        if (partcode != "" && partcode != null)
+                        {
+                            string[] selects = Array.ConvertAll<string, string>(partcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string鍒嗗壊杞瑂tring[] 
+                            search += " and A.materiel_code in @partcode ";
+                            dynamicParams.Add("@partcode", selects.ToArray());
+                        }
+                        if (startopendate != "" && startopendate != null)
+                        {
+                            search += " and convert(varchar(100),A.saleOrderDate,21)>=@startopendate and convert(varchar(100),A.saleOrderDate,21)<=@endclosedate ";
+                            dynamicParams.Add("@startopendate", startopendate + " 00:00:00");
+                            dynamicParams.Add("@endclosedate", endclosedate + " 23:59:59");
+                        }
+                        //鑾峰彇鍗曟嵁淇℃伅
+                        sql = @"select distinct saleOrderCode,A.saleOrderDate,sum(A.saleOrderqty) as saleOrderqty
+                                from TKimp_Ewo A 
+                                where A.saleOrderCode<>'' " + search+ " group by A.saleOrderCode,A.saleOrderDate  order by A.saleOrderDate desc";
+                        dt = DapperHelper.selectlist(sql, dynamicParams);
+                        if (dt.Rows.Count > 0)
+                        {
+                            for (int i = 0; i < dt.Rows.Count; i++)
+                            {
+                                AppScheduleKanban cmp = new AppScheduleKanban();
+                                cmp.ordercode = dt.Rows[i]["saleOrderCode"].ToString();
+                                cmp.orderqty = dt.Rows[i]["saleOrderqty"].ToString();
+                                cmp.children = new List<AppScheduleKanbanSub>();
+                                //鑾峰彇鍗曟嵁涓嬩骇鍝佸畬鎴愪俊鎭�
+                                sql = @"select AA.wo,AA.partcode,AA.partname,AA.partspec,AA.saleOrderqty,isnull(BB.good_qty,0) as good_qty  from(
+                                        select distinct E.wo,T.partcode,T.partname,T.partspec,sum(E.saleOrderqty) as saleOrderqty   
+                                        from TKimp_Ewo E 
+                                        left  join TMateriel_Info T on E.materiel_code=T.partcode 
+                                        where E.saleOrderCode=@saleOrderCode
+                                        group by E.wo,T.partcode,T.partname,T.partspec
+                                        ) as AA
+                                        left join
+                                        (
+                                          select M.m_po,sum(S.good_qty) as good_qty    from TK_Wrk_Man M
+                                          inner join TK_Wrk_Step S on M.wo_code=S.wo_code 
+                                          where  S.isend='Y' and S.good_qty>0
+                                          group by M.m_po
+                                        ) as BB  on AA.wo=BB.m_po";
+                                dynamicParams.Add("@saleOrderCode", dt.Rows[i]["saleOrderCode"].ToString());
+                                var data = DapperHelper.selectdata(sql, dynamicParams);
+                                decimal good_qty = data.AsEnumerable().Select(d => d.Field<decimal>("good_qty")).Sum();  //鎶ュ伐鎬绘暟閲�
+                                cmp.ordergoodqty = good_qty.ToString();
+                                for (int j = 0; j < data.Rows.Count; j++) 
+                                {
+                                    AppScheduleKanbanSub cbp = new AppScheduleKanbanSub();
+                                    cbp.code= data.Rows[j]["partcode"].ToString();
+                                    cbp.name = data.Rows[j]["partname"].ToString();
+                                    cbp.spec = data.Rows[j]["partspec"].ToString();
+                                    cbp.planqty= data.Rows[j]["saleOrderqty"].ToString();
+                                    cbp.goodqty = data.Rows[j]["good_qty"].ToString();
+                                    cmp.children.Add(cbp);
+                                }
+                                list.Add(cmp);
+                            }
+                            mes.code = "200";
+                            mes.Message = "success!";
+                            mes.data = list;
+                            return mes;
+                        }
+                        else
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "鏃犵鍚堣姹傚崟鎹紒";
+                            mes.data = null;
+                        }
+                        break;
+                    case "MO": //鎸夌敓浜ц鍗曠粺璁�
+                        if (partcode != "" && partcode != null)
+                        {
+                            string[] selects = Array.ConvertAll<string, string>(partcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string鍒嗗壊杞瑂tring[] 
+                            search += " and A.materiel_code in @partcode ";
+                            dynamicParams.Add("@partcode", selects.ToArray());
+                        }
+                        if (startopendate != "" && startopendate != null)
+                        {
+                            search += " and convert(varchar(100),A.createdate,21)>=@startopendate and convert(varchar(100),A.createdate,21)<=@endclosedate ";
+                            dynamicParams.Add("@startopendate", startopendate + " 00:00:00");
+                            dynamicParams.Add("@endclosedate", endclosedate + " 23:59:59");
+                        }
+                        //鑾峰彇鍗曟嵁淇℃伅
+                        sql = @"select distinct A.wo,A.createdate,sum(A.qty) as orderqty
+                                from TKimp_Ewo A  
+                                where 1=1  "+search+" group by A.wo,A.createdate  order by A.createdate desc";
+                        dt = DapperHelper.selectlist(sql, dynamicParams);
+                        if (dt.Rows.Count > 0)
+                        {
+                            for (int i = 0; i < dt.Rows.Count; i++)
+                            {
+                                AppScheduleKanban cmp = new AppScheduleKanban();
+                                cmp.ordercode = dt.Rows[i]["wo"].ToString();
+                                cmp.orderqty = dt.Rows[i]["orderqty"].ToString();
+                                cmp.children = new List<AppScheduleKanbanSub>();
+                                //鑾峰彇鍗曟嵁涓嬩骇鍝佸畬鎴愪俊鎭�
+                                sql = @"select distinct E.wo,T.partcode,T.partname,T.partspec,sum(E.qty) as orderqty,isnull(BB.good_qty,0) as good_qty   
+                                        from TKimp_Ewo E 
+                                        left  join TMateriel_Info T on E.materiel_code=T.partcode 
+                                        left  join (
+                                          select M.m_po,sum(S.good_qty) as good_qty    from TK_Wrk_Man M
+                                          inner join TK_Wrk_Step S on M.wo_code=S.wo_code 
+                                          where  S.isend='Y' and S.good_qty>0
+                                          group by M.m_po
+                                        ) as BB  on E.wo=BB.m_po
+                                        where E.wo=@wo
+                                        group by E.wo,T.partcode,T.partname,T.partspec,BB.good_qty";
+                                dynamicParams.Add("@wo", dt.Rows[i]["wo"].ToString());
+                                var data = DapperHelper.selectdata(sql, dynamicParams);
+                                decimal good_qty = data.AsEnumerable().Select(d => d.Field<decimal>("good_qty")).Sum();  //鎶ュ伐鎬绘暟閲�
+                                cmp.ordergoodqty = good_qty.ToString();
+                                for (int j = 0; j < data.Rows.Count; j++)
+                                {
+                                    AppScheduleKanbanSub cbp = new AppScheduleKanbanSub();
+                                    cbp.code = data.Rows[j]["partcode"].ToString();
+                                    cbp.name = data.Rows[j]["partname"].ToString();
+                                    cbp.spec = data.Rows[j]["partspec"].ToString();
+                                    cbp.planqty = data.Rows[j]["orderqty"].ToString();
+                                    cbp.goodqty = data.Rows[j]["good_qty"].ToString();
+                                    cmp.children.Add(cbp);
+                                }
+                                list.Add(cmp);
+                            }
+                            mes.code = "200";
+                            mes.Message = "success!";
+                            mes.data = list;
+                            return mes;
+                        }
+                        else
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "鏃犵鍚堣姹傚崟鎹紒";
+                            mes.data = null;
+                        }
+                        break;
+                    case "PO": //鎸夌敓浜у伐鍗曠粺璁�
+                        if (partcode != "" && partcode != null)
+                        {
+                            string[] selects = Array.ConvertAll<string, string>(partcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string鍒嗗壊杞瑂tring[] 
+                            search += " and A.materiel_code in @partcode ";
+                            dynamicParams.Add("@partcode", selects.ToArray());
+                        }
+                        if (startopendate != "" && startopendate != null)
+                        {
+                            search += " and convert(varchar(100),A.lm_date,21)>=@startopendate and convert(varchar(100),A.lm_date,21)<=@endclosedate ";
+                            dynamicParams.Add("@startopendate", startopendate + " 00:00:00");
+                            dynamicParams.Add("@endclosedate", endclosedate + " 23:59:59");
+                        }
+                        //鑾峰彇鍗曟嵁淇℃伅
+                        sql = @"select distinct A.wo_code,T.partcode,T.partname,T.partspec,A.lm_date,sum(A.plan_qty) as orderqty
+                                from TK_Wrk_Man A  
+                                left  join TMateriel_Info T on A.materiel_code=T.partcode
+                                where 1=1 "+search+" group by A.wo_code,T.partcode,T.partname,T.partspec,A.lm_date  order by A.lm_date desc";
+                        dt = DapperHelper.selectlist(sql, dynamicParams);
+                        if (dt.Rows.Count > 0)
+                        {
+                            for (int i = 0; i < dt.Rows.Count; i++)
+                            {
+                                AppScheduleKanban cmp = new AppScheduleKanban();
+                                cmp.ordercode = dt.Rows[i]["wo_code"].ToString();
+                                cmp.partcode= dt.Rows[i]["partcode"].ToString();
+                                cmp.partname = dt.Rows[i]["partname"].ToString();
+                                cmp.partspec = dt.Rows[i]["partspec"].ToString();
+                                cmp.orderqty = dt.Rows[i]["orderqty"].ToString();
+                                cmp.children = new List<AppScheduleKanbanSub>();
+                                //鑾峰彇鍗曟嵁涓嬩骇鍝佸畬鎴愪俊鎭�
+                                sql = @"select M.wo_code,T.stepcode,T.stepname,S.plan_qty,S.good_qty,S.isend    
+                                        from TK_Wrk_Man M
+                                        inner join TK_Wrk_Step S on M.wo_code=S.wo_code 
+                                        left  join TStep T on S.step_code=T.stepcode
+                                        where  M.wo_code=@wo_code
+                                        order by S.seq ";
+                                dynamicParams.Add("@wo_code", dt.Rows[i]["wo_code"].ToString());
+                                var data = DapperHelper.selectdata(sql, dynamicParams);
+                                if (data.Rows.Count > 0)
+                                {
+                                    cmp.ordergoodqty = data.AsEnumerable().Where(t => t.Field<string>("isend") == "Y").ToList().Select(c => c.Field<decimal>("good_qty")).First().ToString();
+                                    for (int j = 0; j < data.Rows.Count; j++)
+                                    {
+                                        AppScheduleKanbanSub cbp = new AppScheduleKanbanSub();
+                                        cbp.code = data.Rows[j]["stepcode"].ToString();
+                                        cbp.name = data.Rows[j]["stepname"].ToString();
+                                        cbp.spec = data.Rows[j]["isend"].ToString();
+                                        cbp.planqty = data.Rows[j]["plan_qty"].ToString();
+                                        cbp.goodqty = data.Rows[j]["good_qty"].ToString();
+                                        cmp.children.Add(cbp);
+                                    }
+                                    list.Add(cmp);
+                                }
+                                else 
+                                {
+                                    cmp.ordergoodqty = "0";
+                                    list.Add(cmp);
+                                }
+                            }
+                            mes.code = "200";
+                            mes.Message = "success!";
+                            mes.data = list;
+                            return mes;
+                        }
+                        else
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "鏃犵鍚堣姹傚崟鎹紒";
+                            mes.data = null;
+                        }
+                        break;
+                    default:
+                        break;
+                }
+            }
+            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/AppPersonalDAL.cs b/VueWebApi/DLL/DAL/AppPersonalDAL.cs
new file mode 100644
index 0000000..4528039
--- /dev/null
+++ b/VueWebApi/DLL/DAL/AppPersonalDAL.cs
@@ -0,0 +1,101 @@
+锘縰sing Dapper;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Web;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.DAL
+{
+    public class AppPersonalDAL
+    {
+        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[App涓汉璁′欢宸ヨ祫]
+        public static ToMessage PieceRateWage(string compute, string usercode,string startopendate, string endclosedate)
+        {
+            Dictionary<object, object> dList = new Dictionary<object, object>();
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (compute == "last")  //鏈亾宸ュ簭
+                {
+                    search += "and P.isend=@isend ";
+                    dynamicParams.Add("@isend", "Y");
+                }
+                dynamicParams.Add("@usercode", usercode);
+                dynamicParams.Add("@startopendate", startopendate + " 00:00:00");
+                dynamicParams.Add("@endclosedate", endclosedate + " 23:59:59");
+
+                // --------------鏌ヨ鎶ュ伐鏁般�佽壇鍝佹墸闄ゃ�佽绠楀伐璧勬敹鍏�--------------
+                //left  join TPrteEqp_Stad S on A.materiel_code=S.materiel_code and A.eqp_code=S.eqp_code and A.step_code=S.step_code and K.route_code=S.route_code and K.wkshp_code=S.wkspcode
+                var sql = @"select isnull(sum(BB.report_qty),0) as report_qty,(isnull(sum(BB.userngmoney),0)+isnull(sum(BB.userbadmoney),0)) as userngbadmoney,
+                            isnull(sum(BB.usermoney),0)-(isnull(sum(BB.userngmoney),0)+isnull(sum(BB.userbadmoney),0)) as usermoney 
+                            from (
+                            select AA.wo_code,AA.partcode,AA.partname,AA.partspec,AA.stepcode,AA.stepname,
+                            AA.task_qty,AA.group_code,AA.group_name,AA.report_qty,AA.unprice,AA.isend,
+                            AA.moneys as usermoney,AA.badmoneys as userbadmoney,AA.ngmoneys as userngmoney,AA.username,AA.report_date
+                            from (
+                            select distinct A.wo_code,M.partcode,M.partname,M.partspec,T.stepcode,T.stepname,
+                            A.task_qty,G.group_code,G.group_name,B.report_qty,isnull(S.unprice,0) as unprice,P.isend,
+                            (B.report_qty*isnull(S.unprice,0)) as moneys,(B.ng_qty*isnull(S.unprice,0)) as ngmoneys,(B.bad_qty*isnull(S.unprice,0)) as badmoneys,
+                            B.report_person,U.username,B.report_date
+                            from TK_Wrk_Record A
+                            inner join TK_Wrk_RecordSub B on A.id=B.m_id
+                            inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code 
+                            left  join TK_Wrk_Man K on A.wo_code=K.wo_code
+                            left  join TGroup G on B.usergroup_code=G.group_code
+                            left  join TWoPrteEqp_Stad S on A.wo_code=S.wo and A.materiel_code=S.materiel_code and A.eqp_code=S.eqp_code and A.step_code=S.step_code and K.route_code=S.route_code
+                            left  join TMateriel_Info M on A.materiel_code=M.partcode
+                            left  join TStep T on A.step_code=T.stepcode
+                            left  join TUser U on B.report_person=U.usercode
+                            where B.report_person=@usercode and  B.report_date between @startopendate and @endclosedate "+search+") as AA) as BB";
+                var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                dList.Add("dt0", data0);
+                // --------------鏌ヨ鎶ュ伐鏄庣粏(鎸夌収宸ュ崟銆佷骇鍝併�佸伐搴忓垎缁�)--------------
+                var sql1 = @"select AA.wo_code,AA.partcode,AA.partname,AA.stepcode,AA.stepname,
+                             AA.task_qty,AA.group_code,AA.group_name,AA.unprice,
+                             isnull(sum(AA.report_qty),0) as report_qty,isnull(sum(AA.ng_qty),0) as ng_qty,isnull(sum(AA.bad_qty),0) as bad_qty,
+                             AA.report_person,AA.username,AA.colum
+                             from (
+                             select distinct A.wo_code,M.partcode,M.partname,T.stepcode,T.stepname,
+                             A.task_qty,G.group_code,G.group_name,isnull(S.unprice,0) as unprice,
+                             B.report_qty,B.ng_qty,B.bad_qty,
+                             B.report_person,U.username,B.report_date,
+                             (select distinct count(*)   from TK_Wrk_RecordSub S  where S.m_id=B.m_id) as colum
+                             from TK_Wrk_Record A
+                             inner join TK_Wrk_RecordSub B on A.id=B.m_id
+                             inner join TK_Wrk_Step P on A.wo_code=P.wo_code and A.step_code=P.step_code 
+                             left  join TK_Wrk_Man K on A.wo_code=K.wo_code
+                             left  join TGroup G on B.usergroup_code=G.group_code
+                             left  join TWoPrteEqp_Stad S on A.wo_code=S.wo and A.materiel_code=S.materiel_code and A.eqp_code=S.eqp_code and A.step_code=S.step_code and K.route_code=S.route_code
+                             left  join TMateriel_Info M on A.materiel_code=M.partcode
+                             left  join TStep T on A.step_code=T.stepcode
+                             left  join TUser U on B.report_person=U.usercode
+                             where B.report_person=@usercode and B.report_date between @startopendate and @endclosedate " + search+") as AA  group by AA.wo_code,AA.partcode,AA.partname,AA.stepcode,AA.stepname,AA.task_qty,AA.group_code,AA.group_name,AA.unprice,AA.report_person,AA.username,colum";
+                var data1 = DapperHelper.selectdata(sql1, dynamicParams);
+                dList.Add("dt1", data1);
+                mes.code = "200";
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.data = dList;
+            }
+            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/AppQualityManagementDAL.cs b/VueWebApi/DLL/DAL/AppQualityManagementDAL.cs
new file mode 100644
index 0000000..c6821f0
--- /dev/null
+++ b/VueWebApi/DLL/DAL/AppQualityManagementDAL.cs
@@ -0,0 +1,310 @@
+锘縰sing Dapper;
+using Newtonsoft.Json.Linq;
+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 AppQualityManagementDAL
+    {
+        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 InFactoryCheckScanLabCode(string labcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            Dictionary<string, object> list = new Dictionary<string, object>();
+            try
+            {
+                //鍒ゆ柇鏉$爜鏄惁鏈夋晥(閲囪喘鍒拌揣鍔熻兘缂栫爜锛�2060)
+                sql = @"select *  from T_BarCodeBill where hbarcode=@labcode and rightcode=@rightcode and hbarcodestatus='Y'";
+                dynamicParams.Add("@labcode", labcode);
+                dynamicParams.Add("@rightcode", "2060");
+                var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (data0.Rows.Count <= 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "涓嶆槸鏈夋晥鐨勬爣绛炬潯鐮�!";
+                    mes.data = null;
+                    return mes;
+                }
+                //鍒ゆ柇鏉$爜鏄惁闇�瑕佹楠�
+                sql = @"select *  from TMateriel_Info where partcode=@partcode and is_incheck='N'";
+                dynamicParams.Add("@partcode", data0.Rows[0]["hmaterialcode"].ToString());
+                var data_0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (data_0.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "姝ゆ爣绛炬潯鐮佸厤妫�!";
+                    mes.data = null;
+                    return mes;
+                }
+                //鍒ゆ柇鏉$爜鏄惁妫�楠�
+                sql = @"select *  from TStepCheckRecord where hbarcode=@labcode and check_type='InCheck'";
+                dynamicParams.Add("@labcode", labcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "姝ゆ爣绛炬潯鐮佸凡妫�楠�!";
+                    mes.data = null;
+                    return mes;
+                }
+                //鑾峰彇鏍囩淇℃伅
+                sql = @"select A.hbillno,A.hmaterialcode as partcode,M.partname,M.partspec,A.hbarcode,M.stocktype_code,A.hqty,
+                        A.hcustomercode,C.name as hcustomername,A.hbatchno,A.qualitystatus
+                        from T_BarCodeBill A
+                        left join TMateriel_Info M on A.hmaterialcode=M.partcode
+                        left join TCustomer C on A.hcustomercode=C.code
+                        where A.hbarcode=@labcode and A.hbarcodestatus='Y'";
+                dynamicParams.Add("@labcode", labcode);
+                var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                if (data1.Rows.Count > 0)
+                {
+                    //鑾峰彇缁戝畾鐨勫叆鍘傝川妫�鏂规銆佹娊鏍锋柟寮忋�佹牱鏈暟
+                    sql = @"select code as checkstandcode,name as checkstandname,sampmethod,sampscare   
+                            from TStepCheckStandard
+                            where (PATINDEX('%,' + RTRIM(@partcode) + ',%',',' + suitpart + ',')>0 or PATINDEX('%,' + RTRIM(@stocktype_code) + ',%',',' + suitpart + ',')>0)
+                            and checktype='InCheck'";
+                    dynamicParams.Add("@partcode", data1.Rows[0]["partcode"].ToString());//鐗╂枡缂栫爜
+                    dynamicParams.Add("@stocktype_code", data1.Rows[0]["stocktype_code"].ToString());//瀛樿揣绫诲瀷缂栫爜
+                    var data2 = DapperHelper.selectdata(sql, dynamicParams);
+                    list.Add("labcont", data1);
+                    list.Add("chekstand", data2);
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = list;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.Message = "姝ゆ爣绛炬潯鐮佷笉瀛樺湪鎴栧け鏁�!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[鍏ュ巶妫�楠�,鏍规嵁閫夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
+        public static ToMessage InFactoryCheckItem(string checkstandcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //璐ㄦ鏂规缂栫爜鑾峰彇妫�楠岄」
+                sql = @"select A.stepcheckitem_seq, B.code,B.name,A.required,A.numberjudge,A.unit,A.decimalnum,
+                        A.standvalue,A.uppervalue,A.lowervalue,A.stepcheckitem_desc   
+                        from TStepCheckStandardSub A
+                        left join TStepCheckItem B on A.stepcheckitem_code=B.code
+                        where A.stepstaned_code=@checkstandcode
+                        order by A.stepcheckitem_seq";
+                dynamicParams.Add("@checkstandcode", checkstandcode);//璐ㄦ鏂规缂栫爜
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+                }
+                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
+
+        #region[鍏ュ巶妫�楠�,鎻愪氦]
+        public static ToMessage InFactoryCheckSave(string hbillno, string labcode, string checkstandcode, string check_type, string sampmethod, string partcode, string customercode, string batchno, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string issyncbatch, string checkitemcont, string username)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            List<ObjectData> obj = new List<ObjectData>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                string datetime = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
+                //鑾峰彇妫�楠岄」鐩俊鎭�
+                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitemcont);
+                list.Clear();
+                if (issyncbatch == "Y")  //鍚屾鐩稿悓鎵规
+                {
+                    //鏌ユ壘鐩稿悓鎵规鏉$爜(鍔熻兘缂栫爜銆佸崟鎹彿銆佸崟鎹被鍨嬨�佹潯鐮佺被鍨嬨�佺墿鏂欑紪鐮併�佹壒娆″彿銆佹潯鐮佺姸鎬�)
+                    sql = @"select hbarcode,hqty  from T_BarCodeBill
+                            where rightcode=@rightcode and hbillno=@hbillno and hbilltype=@hbilltype and hbarcodetype=@hbarcodetype 
+                            and hmaterialcode=@hmaterialcode and hbatchno=@hbatchno and hbarcodestatus=@hbarcodestatus";
+                    dynamicParams.Add("@rightcode", "2060");
+                    dynamicParams.Add("@hbillno", hbillno);
+                    dynamicParams.Add("@hbilltype", "1103");
+                    dynamicParams.Add("@hbarcodetype", "P");
+                    dynamicParams.Add("@hmaterialcode", partcode);
+                    dynamicParams.Add("@hbatchno", batchno);
+                    dynamicParams.Add("@hbarcodestatus", "Y");
+                    var data = DapperHelper.selectdata(sql, dynamicParams);
+                    if (data.Rows.Count > 0)
+                    {
+                        for (int i = 0; i < data.Rows.Count; i++)
+                        {
+                            ObjectData tbj = new ObjectData();
+                            tbj.code = data.Rows[i]["hbarcode"].ToString();
+                            tbj.name = data.Rows[i]["hqty"].ToString();
+                            obj.Add(tbj);
+                        }
+                    }
+                    else
+                    {
+                        ObjectData tbj = new ObjectData();
+                        tbj.code = labcode;
+                        tbj.name = labqty;
+                        obj.Add(tbj);
+                    }
+                }
+                else
+                {
+                    ObjectData tbj = new ObjectData();
+                    tbj.code = labcode;
+                    tbj.name = labqty;
+                    obj.Add(tbj);
+                }
+
+                //寰幆鏍囩涓暟
+                for (int i = 0; i <obj.Count; i++)
+                {
+                    //鍐欏叆妫�楠岃褰曚富琛�
+                    sql = @"insert into  TStepCheckRecord(hbarcode,wo_code,partcode,checkstaned_code,customer_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date) 
+                                values(@hbarcode,@wo_code,@partcode,@checkstaned_code,@customer_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date)";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            hbarcode = obj[i].code,
+                            wo_code = hbillno,
+                            partcode = partcode,
+                            checkstaned_code = checkstandcode,
+                            customer_code=customercode,
+                            check_user = username,
+                            check_type = check_type,
+                            check_typename = "鍏ュ巶妫�楠�",
+                            sampmethod = sampmethod,
+                            check_result = qualitystatus,
+                            check_qty = decimal.Parse(sampleqty),
+                            good_qty = decimal.Parse(goodqty),
+                            ng_qty = decimal.Parse(ngqty),
+                            lm_user = username,
+                            lm_date = datetime
+                        }
+                    });
+                    //鑾峰彇涓昏〃鏈�澶D
+                    sql = @"select ISNULL(IDENT_CURRENT('TStepCheckRecord')+@num,1) as id";
+                    dynamicParams.Add("@num", i+1);
+                    var dt = DapperHelper.selectdata(sql, dynamicParams);
+                    //鍐欏叆妫�楠岃褰曞瓙琛�
+                    for (int j = 0; j < arra.Count; j++)
+                    {
+                        sql = @"insert into  TStepCheckRecordSub(m_id,checknum,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_value,check_result,lm_user,lm_date) 
+                                values(@m_id,@checknum,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_value,@check_result,@lm_user,@lm_date)";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
+                                checknum = arra[j]["checknum"].ToString(),
+                                checkiem_seq = arra[j]["checkiem_seq"].ToString(),
+                                checkitem_code = arra[j]["checkitem_code"].ToString(),
+                                checkitem_name = arra[j]["checkitem_name"].ToString(),
+                                checkitem_descr = arra[j]["checkitem_descr"].ToString(),
+                                check_value = arra[j]["check_value"].ToString(),
+                                check_result = arra[j]["check_result"].ToString(),
+                                lm_user = username,
+                                lm_date = datetime
+                            }
+                        });
+                    }
+                }
+                //鍥炲啓鏉$爜妗f琛ㄦ爣绛捐川妫�鐘舵��
+                sql = @"update T_BarCodeBill set qualitystatus=@qualitystatus  where rightcode=@rightcode and hbillno=@hbillno and hbilltype=@hbilltype 
+                        and hbarcodetype=@hbarcodetype  and hmaterialcode=@hmaterialcode and hbatchno=@hbatchno and hbarcodestatus=@hbarcodestatus";
+                list.Add(new
+                {
+                    str = sql,
+                    parm = new
+                    {
+                        qualitystatus= qualitystatus,
+                        rightcode = "2060",
+                        hbillno = hbillno,
+                        hbilltype = "1103",
+                        hbarcodetype = "P",
+                        hmaterialcode = partcode,
+                        hbatchno = batchno,
+                        hbarcodestatus = "Y"
+                    }
+                });
+
+                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/BaseDateDAL.cs b/VueWebApi/DLL/DAL/BaseDateDAL.cs
new file mode 100644
index 0000000..ec8602b
--- /dev/null
+++ b/VueWebApi/DLL/DAL/BaseDateDAL.cs
@@ -0,0 +1,226 @@
+锘縰sing Dapper;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.Linq;
+using System.Web;
+using VueWebApi.Tools;
+
+namespace VueWebApi.DLL.DAL
+{
+    public class BaseDateDAL
+    {
+        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 PurchSupplierSelect()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select code,name  from TCustomer
+                        where type in('211','228') and is_delete='0'";
+                var data = DapperHelper.selecttable(sql);
+                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 DepartMentSelect()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select org_code as code,org_name as name from TOrganization
+                        where description='D' and is_delete='0'";
+                var data = DapperHelper.selecttable(sql);
+                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 StoreHouseSearch()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select code,name  from T_Sec_Stck";
+                var data = DapperHelper.selecttable(sql);
+                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 WarehouseLocationSearch()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select code,name  from T_Sec_Loca";
+                var data = DapperHelper.selecttable(sql);
+                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 WarehouseLocationSearchStoreHouse(string locationcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select code,name  from T_Sec_Loca";
+                var data = DapperHelper.selecttable(sql);
+                if (data.Rows.Count <= 0)
+                {
+                    mes.code = "300";
+                    mes.Message = "搴撲綅淇℃伅涓嶅瓨鍦�!";
+                    mes.data = null;
+                    return mes;
+                }
+                sql = @"select A.code as locationcode,A.name as locationname,B.code as warehousecode,B.name as warehousename  
+                        from T_Sec_Loca A
+                        inner join T_Sec_Stck B on A.stock_code=B.code
+                        where A.code=@locationcode";
+                dynamicParams.Add("@locationcode", locationcode);
+                var data1 = 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 UnitSerch()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select code,name  from TUom
+                        where is_delete='0'";
+                var data = DapperHelper.selecttable(sql);
+                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 QualityScheme()
+        {
+            string sql = "";
+            try
+            {
+                sql = @"select code,name,sampmethod,sampscare  from TStepCheckStandard
+                        where status='Y' and checktype='InCheck'";
+                var data = DapperHelper.selecttable(sql);
+                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 InventorySelect(string param)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select * from TMateriel_Info where concat(partcode, partname,partspec) like concat('%',@param,'%');";
+                dynamicParams.Add("@param", param);
+                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
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/DLL/DAL/KanBanManagerentDAL.cs b/VueWebApi/DLL/DAL/KanBanManagerentDAL.cs
index 860ce4e..afe308f 100644
--- a/VueWebApi/DLL/DAL/KanBanManagerentDAL.cs
+++ b/VueWebApi/DLL/DAL/KanBanManagerentDAL.cs
@@ -58,17 +58,30 @@
                 {
                     string[] selects = Array.ConvertAll<string, string>(shopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string鍒嗗壊杞瑂tring[] 
                     //鏌ヨ浜х嚎涓嬪凡寮�宸ョ殑鍔犲伐鍗曚俊鎭�
-                    sql = @"select *  from ( 
-                                    select distinct E.saleOrderCode,A.wo_code,P.plan_qty,M.partcode,M.partname,M.partspec,T.name as uomname,S.good_qty,S.ng_qty,S.bad_qty   from TK_Wrk_Record A
-                                    inner join TK_Wrk_Man P on A.wo_code=P.wo_code
-                                    left join TMateriel_Info M on P.materiel_code=M.partcode
-                                    left join TUom T on M.uom_code=T.code 
-                                    left join TKimp_Ewo E on P.m_po=E.wo and P.sourceid=E.id
-                                    left join (
-                                      select wo_code,sum(good_qty) as good_qty,sum(ng_qty) as ng_qty,sum(bad_qty) as bad_qty  from TK_Wrk_Step where isend='Y' group by wo_code
-                                    ) S on P.wo_code=S.wo_code
-                                    where P.status<>'CLOSED' and P.status<>'NEW' and P.wkshp_code in @shopcode and A.style='S' and A.step_seq='1'
-                                    ) as AA where AA.plan_qty>(AA.good_qty+aa.bad_qty+AA.ng_qty)";
+                    //sql = @"select *  from ( 
+                    //                select distinct E.saleOrderCode,A.wo_code,P.plan_qty,M.partcode,M.partname,M.partspec,T.name as uomname,S.good_qty,S.ng_qty,S.bad_qty   from TK_Wrk_Record A
+                    //                inner join TK_Wrk_Man P on A.wo_code=P.wo_code
+                    //                left join TMateriel_Info M on P.materiel_code=M.partcode
+                    //                left join TUom T on M.uom_code=T.code 
+                    //                left join TKimp_Ewo E on P.m_po=E.wo and P.sourceid=E.id
+                    //                left join (
+                    //                  select wo_code,sum(good_qty) as good_qty,sum(ng_qty) as ng_qty,sum(bad_qty) as bad_qty  from TK_Wrk_Step where isend='Y' group by wo_code
+                    //                ) S on P.wo_code=S.wo_code
+                    //                where P.status<>'CLOSED' and P.status<>'NEW' and P.wkshp_code in @shopcode and A.style='S' and A.step_seq='1'
+                    //                ) as AA where AA.plan_qty>(AA.good_qty+aa.bad_qty+AA.ng_qty)";
+                    sql = @"select  AA.lm_date,AA.saleOrderCode,AA.wo_code,AA.plan_qty,AA.partcode,AA.partname,AA.partspec,AA.uomname,
+                          sum(AA.good_qty) as good_qty,sum(AA.ng_qty)+sum(AA.bad_qty) as ng_qty,sum(AA.bad_qty) as  bad_qty
+                          from(
+                          select  P.lm_date,E.saleOrderCode,A.wo_code,P.plan_qty,M.partcode,M.partname,M.partspec,T.name as uomname,A.good_qty,A.ng_qty,A.bad_qty   
+                          from TK_Wrk_Record A
+                          inner join TK_Wrk_Man P on A.wo_code=P.wo_code
+                          left join TMateriel_Info M on P.materiel_code=M.partcode
+                          left join TUom T on M.uom_code=T.code 
+                          left join TKimp_Ewo E on P.m_po=E.wo and P.sourceid=E.id
+                          where P.status<>'CLOSED' and P.status<>'NEW' 
+                          and P.wkshp_code in @shopcode and  DateDiff(dd,P.lm_date,getdate())<=15
+                          ) as AA  group by AA.lm_date,AA.saleOrderCode,AA.wo_code,AA.plan_qty,AA.partcode,AA.partname,AA.partspec,AA.uomname
+                          order by AA.lm_date desc";
                     var data0 = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
                 
                     if (data0.Rows.Count > 0)
@@ -93,7 +106,7 @@
                             lineone.children = new List<TreeTwo>();
 
                             //鏌ユ柊宸ュ崟涓嬪伐搴忎俊鎭�
-                            sql = @"select A.seq,T.stepcode,T.stepname,A.plan_qty,A.good_qty,A.ng_qty,A.status  
+                            sql = @"select A.seq,T.stepcode,T.stepname,A.plan_qty,A.good_qty,A.ng_qty+A.bad_qty as ng_qty,A.status  
                                             from TK_Wrk_Step A
                                             left join TStep T on A.step_code=T.stepcode
                                             where A.wo_code=@wo_code";
@@ -158,17 +171,30 @@
             try
             {
                 //鑾峰彇浠诲姟鍒楄〃淇℃伅
-                sql = @"select A.*,ROW_NUMBER() OVER(ORDER BY (case when A.warning<=2 then A.planenddate end) asc ,A.planstartdate asc) AS RowNum from(
+                //sql = @"select A.*,ROW_NUMBER() OVER(ORDER BY (case when A.warning<=2 then A.planenddate end) asc ,A.planstartdate asc) AS RowNum from(
+                //         select  A.status,A.lm_date,E.saleOrderCode,A.wo_code,M.partcode,M.partname,M.partspec,U.name,
+                //         A.plan_qty,B.good_qty,B.ng_qty,E.planstartdate,E.planenddate, datediff(day,getdate(),E.planenddate) warning
+                //         from TK_Wrk_Man A 
+                //         inner join TK_Wrk_Step B on A.wo_code=B.wo_code
+                //         inner join TKimp_Ewo E on A.m_po=E.wo and A.sourceid=E.id
+                //         left  join TMateriel_Info M on A.materiel_code=M.partcode
+                //         left  join TUom U on M.uom_code=U.code
+                //         where A.status<>'CLOSED' and A.wkshp_code in @shopcode and A.is_delete<>'1' and B.isend='Y'
+                //         and A.plan_qty>(B.good_qty+B.ng_qty+B.bad_qty)
+                //         )as A ";
+                sql = @"select *  from(
+                         select A.*,ROW_NUMBER() OVER(ORDER BY A.lm_date desc) AS RowNum from(
                          select  A.status,A.lm_date,E.saleOrderCode,A.wo_code,M.partcode,M.partname,M.partspec,U.name,
-                         A.plan_qty,B.good_qty,B.ng_qty,E.planstartdate,E.planenddate, datediff(day,getdate(),E.planenddate) warning
+                         A.plan_qty,B.good_qty,BS.ng_qty,E.planstartdate,E.planenddate, datediff(day,getdate(),E.planenddate) warning
                          from TK_Wrk_Man A 
-                         inner join TK_Wrk_Step B on A.wo_code=B.wo_code
+                         inner join (select wo_code, sum(good_qty) as good_qty from TK_Wrk_Step where isend='Y' group by wo_code) B on A.wo_code=B.wo_code
+                          inner join (select wo_code, sum(ng_qty)+sum(bad_qty) as ng_qty from TK_Wrk_Step group by wo_code) BS on A.wo_code=BS.wo_code
                          inner join TKimp_Ewo E on A.m_po=E.wo and A.sourceid=E.id
                          left  join TMateriel_Info M on A.materiel_code=M.partcode
                          left  join TUom U on M.uom_code=U.code
-                         where A.status<>'CLOSED' and A.wkshp_code in @shopcode and A.is_delete<>'1' and B.isend='Y'
-                         and A.plan_qty>(B.good_qty+B.ng_qty+B.bad_qty)
-                         )as A ";
+                         where A.status<>'CLOSED' and A.wkshp_code in @shopcode and A.is_delete<>'1' and  DateDiff(dd,A.lm_date,getdate())<=15
+                         )as A 
+                         ) as AA ";
                 var data = DapperHelper.selectlist(sql, new { shopcode = selects.ToArray() });
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -287,7 +313,7 @@
             try
             {
                 //鑾峰彇閲囪喘璁㈠崟璺熻釜鍒楄〃
-                sql = @"select * from h_v_DDKanBan_PurchaseLeftBottom ";
+                sql = @"select * from h_v_DDKanBan_PurchaseLeftBottom order by voucherdate desc";
                 var data = DapperHelper.selecttable(sql);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -337,7 +363,7 @@
             try
             {
                 //鑾峰彇浠撳簱鐢熶骇鍔犲伐鍗曞緟鍏ュ簱鍒楄〃
-                sql = @"select * from h_v_DDKanBan_WareHouseTopLeft order by voucherdate";
+                sql = @"select * from h_v_DDKanBan_WareHouseTopLeft order by voucherdate desc";
                 var data = DapperHelper.selecttable(sql);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -361,7 +387,7 @@
             try
             {
                 //鑾峰彇浠撳簱鐢熶骇鍔犲伐鍗曞緟鍏ュ簱鍒楄〃
-                sql = @"select * from h_v_DDKanBan_WareHouseTopBottom order by voucherdate";
+                sql = @"select * from h_v_DDKanBan_WareHouseTopBottom order by voucherdate desc";
                 var data = DapperHelper.selecttable(sql);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -481,7 +507,7 @@
                         left join TK_Wrk_Record T on S.wo_code=T.wo_code
                         left  join TMateriel_Info M on A.materiel_code=M.partcode
                         where A.saleOrderCode is not null and A.saleOrderCode<>'' 
-                        and T.eqp_code=@lineCode and B.status<>'CLOSED' 
+                        and T.eqp_code=@lineCode and B.status<>'CLOSED' and  DateDiff(dd,B.lm_date,getdate())<=15
                         ) as AA
                         group by AA.saleOrderCode,AA.materiel_code,AA.partname";
                 dynamicParams.Add("@lineCode", lineCode);
@@ -508,7 +534,19 @@
             try
             {
                 //鑾峰彇宸ュ崟鎶ュ伐淇℃伅,鎶ュ伐鏁伴噺>0  涓斿伐鍗曠姸鎬佷负闈炲叧闂姸鎬�  
-                sql = @"select row_number() over(order by A.wo_code,B.seq) as RowNum,A.wo_code,E.name as eqp_name,M.partname,B.plan_qty,A.plan_startdate,A.plan_enddate,T.stepname,B.good_qty
+                //sql = @"select row_number() over(order by A.wo_code,B.seq) as RowNum,A.wo_code,E.name as eqp_name,M.partname,B.plan_qty,A.plan_startdate,A.plan_enddate,T.stepname,B.good_qty
+                //        from TK_Wrk_Man A
+                //        inner join TK_Wrk_Step B on A.wo_code=B.wo_code
+                //        inner join(
+                //          select wo_code,step_code,materiel_code,eqp_code, sum(good_qty) as  good_qty  
+                //          from TK_Wrk_Record where style='B' group by wo_code,step_code,materiel_code,eqp_code
+                //          ) as S on A.wo_code=S.wo_code and A.materiel_code=S.materiel_code and B.step_code=S.step_code
+                //        left join TStep T on B.step_code=T.stepcode
+                //        left join TMateriel_Info M on A.materiel_code=M.partcode
+                //        left join TEqpInfo E on S.eqp_code=E.code
+                //        where   A.status<>'CLOSED' 
+                //        order by A.wo_code,B.seq";
+                sql = @"select row_number() over(order by A.plan_startdate,B.seq) as RowNum,A.wo_code,E.name as eqp_name,M.partname,B.plan_qty,A.plan_startdate,A.plan_enddate,T.stepname,B.good_qty
                         from TK_Wrk_Man A
                         inner join TK_Wrk_Step B on A.wo_code=B.wo_code
                         inner join(
@@ -518,8 +556,8 @@
                         left join TStep T on B.step_code=T.stepcode
                         left join TMateriel_Info M on A.materiel_code=M.partcode
                         left join TEqpInfo E on S.eqp_code=E.code
-                        where   A.status<>'CLOSED'
-                        order by A.wo_code,B.seq";
+                        where   A.status<>'CLOSED' and  DateDiff(dd,A.lm_date,getdate())<=15
+                        order by A.plan_startdate,B.seq";
                 var data = DapperHelper.selecttable(sql);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -688,6 +726,22 @@
             try
             {
                 //瀵屽皵杈捐溅闂磋川閲忔暟瀛楀寲鐪嬫澘,涓嶈壇鏄庣粏(鍙栬川妫�宸ュ簭,鎸変骇绾跨粺璁�)
+                //sql = @"select row_number() over(order by MM.lm_date,MM.wo_code) as RowNum,MM.lm_date,A.eqp_code,E.name as eqp_name,MM.wo_code,A.materiel_code,M.partname,MM.step_code,T.stepname,A.good_qty as report_qty,A.ng_qty,
+                //        defect_name=( STUFF(( SELECT  ',' + B.name
+                //                                  FROM  CSR_WorkRecord_Defect N
+                //        						  inner join TDefect B on N.defect_code=B.code
+                //        						  where record_id=MM.record_id
+                //                                FOR
+                //                                  XML PATH('')
+                //                                ), 1, 1, '') )
+                //        from CSR_WorkRecord_Defect as MM
+                //        inner join TK_Wrk_Record A on MM.record_id=a.id
+                //        inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.step_code=S.step_code
+                //        inner join TStep T on MM.step_code=T.stepcode
+                //        inner join TEqpInfo E on A.eqp_code=E.code
+                //        inner join TMateriel_Info M on A.materiel_code=M.partcode
+                //        where  MM.step_code=@StepCode and MM.style='B' and A.style='B' and A.ng_qty>0 and S.status<>'CLOSED' 
+                //        group by MM.lm_date,MM.record_id,A.eqp_code,E.name,MM.wo_code,A.materiel_code,M.partname,MM.step_code,T.stepname,A.good_qty,A.ng_qty";
                 sql = @"select row_number() over(order by MM.lm_date,MM.wo_code) as RowNum,MM.lm_date,A.eqp_code,E.name as eqp_name,MM.wo_code,A.materiel_code,M.partname,MM.step_code,T.stepname,A.good_qty as report_qty,A.ng_qty,
                         defect_name=( STUFF(( SELECT  ',' + B.name
                                                   FROM  CSR_WorkRecord_Defect N
@@ -703,7 +757,9 @@
                         inner join TEqpInfo E on A.eqp_code=E.code
                         inner join TMateriel_Info M on A.materiel_code=M.partcode
                         where  MM.step_code=@StepCode and MM.style='B' and A.style='B' and A.ng_qty>0 and S.status<>'CLOSED' 
-                        group by MM.lm_date,MM.record_id,A.eqp_code,E.name,MM.wo_code,A.materiel_code,M.partname,MM.step_code,T.stepname,A.good_qty,A.ng_qty";
+                        and  DateDiff(dd,MM.lm_date,getdate())<=15
+                        group by MM.lm_date,MM.record_id,A.eqp_code,E.name,MM.wo_code,A.materiel_code,M.partname,MM.step_code,T.stepname,A.good_qty,A.ng_qty
+                        order by MM.lm_date desc";
                 dynamicParams.Add("@StepCode", StepCode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
diff --git a/VueWebApi/DLL/DAL/LoginDAL.cs b/VueWebApi/DLL/DAL/LoginDAL.cs
index 234f067..3696164 100644
--- a/VueWebApi/DLL/DAL/LoginDAL.cs
+++ b/VueWebApi/DLL/DAL/LoginDAL.cs
@@ -28,7 +28,9 @@
         {
 
             //鎵цsql
-            strProcName = "select *  from [dbo].[TUser] where usercode=@username and password=@password and is_delete='0'";
+            strProcName = @"select *  from [dbo].[TUser] U 
+                            left join TGroup G on U.usergroup_code = G.group_code 
+                            where U.usercode=@username and U.password=@password and U.is_delete='0'";
             //鍒涘缓鍙傛暟
             listStr.Add(new SqlParameter("@username", username));
             listStr.Add(new SqlParameter("@password", password));
@@ -134,12 +136,13 @@
                 }).ToList();
                 for (int i = 0; i < data.Count; i++)
                 {
-                    sql = @"select distinct mu.right_code as code,mu.right_name as name,mu.right_seq,mu.is_delete as flag,imgurl
+                    sql = @"select *  from(
+                            select distinct mu.right_code as code,mu.right_name as name,mu.right_seq,mu.is_delete as flag,imgurl
 							from TRight mu
                             inner join TRoleRightRelation rl on mu.right_code=rl.right_code
                             inner join TUserRoleRelation ro on rl.role_code=ro.role_code
                             where mu.type=@usertype and ro.user_code=@usercode and mu.parent_id=@paent_id 
-							order by mu.right_seq, mu.right_code";
+                            ) as AA order by  CAST(AA.right_seq AS DECIMAL) ASC,AA.code";
                     dynamicParams.Add("@usercode", usercode);
                     dynamicParams.Add("@usertype", usertype);
                     dynamicParams.Add("@paent_id", data[i].code);
diff --git a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
index 48401f8..a5c5b95 100644
--- a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -1,4 +1,5 @@
 锘縰sing Dapper;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.Data;
@@ -2373,13 +2374,15 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
-        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode)
+
+        #region[宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
+        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
         {
             var sql = "";
             string ordercode = "";
             string stepcode = "";
             var dynamicParams = new DynamicParameters();
+            Dictionary<string, object> list = new Dictionary<string, object>();
             try
             {
                 if (orderstepqrcode != "" && orderstepqrcode != null)
@@ -2399,7 +2402,7 @@
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
                     //閫氳繃鎵弿浜岀淮鐮佷俊鎭煡鎵句换鍔′俊鎭�
-                    sql = @"select A.wo_code,M.partcode,M.partname,M.partspec,S.stepcode,S.stepname  
+                    sql = @"select A.wo_code,A.good_qty,M.partcode,M.partname,M.partspec,M.stocktype_code,S.stepcode,S.stepname  
                             from TK_Wrk_Step A
                             inner join TK_Wrk_Man P on A.wo_code=P.wo_code
                             left join TMateriel_Info M on P.materiel_code=M.partcode
@@ -2410,11 +2413,44 @@
                     var data = DapperHelper.selectdata(sql, dynamicParams);
                     if (data.Rows.Count > 0)
                     {
-                        mes.code = "200";
-                        mes.count = 0;
-                        mes.Message = "鏌ヨ鎴愬姛!";
-                        mes.data = data;
-                        return mes;
+                        if (decimal.Parse(data.Rows[0]["good_qty"].ToString()) > 0)
+                        {
+                            //鑾峰彇缁戝畾鐨勮川妫�鏂规銆佹娊鏍锋柟寮忋�佹牱鏈暟
+                            sql = @"select code as checkstandcode,name as checkstandname,sampmethod,sampscare   
+                            from TStepCheckStandard
+                            where (PATINDEX('%,' + RTRIM(@partcode) + ',%',',' + suitpart + ',')>0 or PATINDEX('%,' + RTRIM(@stocktype_code) + ',%',',' + suitpart + ',')>0)
+                            and checktype=@checktype and stepcode=@stepcode ";
+                            dynamicParams.Add("@partcode", data.Rows[0]["partcode"].ToString());//鐗╂枡缂栫爜
+                            dynamicParams.Add("@stepcode", stepcode);//宸ュ簭缂栫爜
+                            dynamicParams.Add("@stocktype_code", data.Rows[0]["stocktype_code"].ToString());//瀛樿揣绫诲瀷缂栫爜
+                            dynamicParams.Add("@checktype", checktype);//妫�楠岀被鍨�
+                            var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                            if (data1.Rows.Count > 0)
+                            {
+                                list.Add("labcont", data);
+                                list.Add("chekstand", data1);
+                                mes.code = "200";
+                                mes.count = 0;
+                                mes.Message = "鏌ヨ鎴愬姛!";
+                                mes.data = list;
+                            }
+                            else
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "褰撳墠浜у搧銆�" + data.Rows[0]["partname"].ToString() + "銆�,瀵瑰簲宸ュ簭銆�" + data.Rows[0]["stepname"].ToString() + "銆戯紝鏈寚瀹氳川妫�鏂规!";
+                                mes.data = null;
+                                return mes;
+                            }
+                        }
+                        else
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "褰撳墠宸ュ簭浠诲姟鏃犳姤宸ヤ骇鍑�!";
+                            mes.data = null;
+                            return mes;
+                        }
                     }
                     else
                     {
@@ -2445,47 +2481,36 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁]
-        public static ToMessage MesOrderStepCheckSelect()
-        {
-            string sql = "";
-            var dynamicParams = new DynamicParameters();
-            try
-            {
-                //鑾峰彇宸ュ簭妫�楠屾爣鍑�
-                sql = @"select code,name  from TStepCheckStandard where is_delete<>'1'";
-                var data = DapperHelper.selecttable(sql);
-                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[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛╙
+        #region[宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩甝
         public static ToMessage MesOrderStepCheckItemList(string checkstandcode)
         {
             string sql = "";
             var dynamicParams = new DynamicParameters();
             try
             {
-                //鏍规嵁妫�楠屾爣鍑嗙紪鐮佽幏鍙栧伐搴忔楠岄」鐩�
-                sql = @"select B.code,B.name,A.stepcheckitem_desc,A.stepcheckitem_seq   from TStepCheckStandardSub A
+                //璐ㄦ鏂规缂栫爜鑾峰彇妫�楠岄」
+                sql = @"select A.stepcheckitem_seq, B.code,B.name,A.required,A.numberjudge,A.unit,A.decimalnum,
+                        A.standvalue,A.uppervalue,A.lowervalue,A.stepcheckitem_desc   
+                        from TStepCheckStandardSub A
                         left join TStepCheckItem B on A.stepcheckitem_code=B.code
-                        where B.is_delete<>'1' and A.stepstaned_code=@checkstandcode";
-                dynamicParams.Add("@checkstandcode", checkstandcode);
+                        where A.stepstaned_code=@checkstandcode
+                        order by A.stepcheckitem_seq";
+                dynamicParams.Add("@checkstandcode", checkstandcode);//璐ㄦ鏂规缂栫爜
                 var data = DapperHelper.selectdata(sql, dynamicParams);
-                mes.code = "200";
-                mes.Message = "鏌ヨ鎴愬姛!";
-                mes.data = data;
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "褰撳墠璐ㄦ鏂规鏃犳楠岄」!";
+                    mes.data = null;
+                }
             }
             catch (Exception e)
             {
@@ -2498,21 +2523,24 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛榏
-        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)
+        #region[宸ュ簭妫�楠�,鎻愪氦]
+        public static ToMessage SaveMesOrderStepCheckItem(string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, string username)
         {
             var sql = "";
-            string[] arra = new string[] { };
-            string[] arra1 = new string[] { };
-            List<object> list = new List<object>();
             string checktypename = "";
+            List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
             try
             {
-                string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
-
+                string datetime = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
+                //鑾峰彇妫�楠岄」鐩俊鎭�
+                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitemcont);
                 list.Clear();
-                switch (checktypecode)
+
+                //鍐欏叆妫�楠岃褰曚富琛�
+                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date) 
+                                values(@wo_code,@partcode,@step_code,@checkstaned_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date)";
+                switch (check_type)
                 {
                     case "FirstCheck":
                         checktypename = "棣栨";
@@ -2526,20 +2554,48 @@
                     default:
                         break;
                 }
-                //鍐欏叆宸ュ簭妫�楠岃褰曚富琛�
-                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";
-                var dt = DapperHelper.selecttable(sql);
-                for (int i = 0; i < json.Count; i++)
+                list.Add(new
                 {
-                    sql = @"insert into  TStepCheckRecordSub(m_id,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_result,lm_user,lm_date) 
-                                values(@m_id,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_result,@lm_user,@lm_date)";
-                    list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), checkiem_seq = int.Parse(json[i].seq), checkitem_code = json[i].code, checkitem_name = json[i].name, checkitem_descr = json[i].descr, check_result = json[i].checkresult, lm_user = username, lm_date = date } });
-
+                    str = sql,
+                    parm = new
+                    {
+                        wo_code = wocode,
+                        partcode = partcode,
+                        step_code = stepcode,
+                        checkstaned_code = checkstandcode,
+                        check_user = username,
+                        check_type = check_type,
+                        check_typename = checktypename,
+                        sampmethod = sampmethod,
+                        check_result = qualitystatus,
+                        check_qty = decimal.Parse(sampleqty),
+                        good_qty = decimal.Parse(goodqty),
+                        ng_qty = decimal.Parse(ngqty),
+                        lm_user = username,
+                        lm_date = datetime
+                    }
+                });
+                //鍐欏叆妫�楠岃褰曞瓙琛�
+                for (int j = 0; j < arra.Count; j++)
+                {
+                    sql = @"insert into  TStepCheckRecordSub(m_id,checknum,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_value,check_result,lm_user,lm_date) 
+                                values(CONVERT(INT,IDENT_CURRENT('TStepCheckRecord')),@checknum,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_value,@check_result,@lm_user,@lm_date)";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            checknum = arra[j]["checknum"].ToString(),
+                            checkiem_seq = arra[j]["checkiem_seq"].ToString(),
+                            checkitem_code = arra[j]["checkitem_code"].ToString(),
+                            checkitem_name = arra[j]["checkitem_name"].ToString(),
+                            checkitem_descr = arra[j]["checkitem_descr"].ToString(),
+                            check_value = arra[j]["check_value"].ToString(),
+                            check_result = arra[j]["check_result"].ToString(),
+                            lm_user = username,
+                            lm_date = datetime
+                        }
+                    });
                 }
 
                 bool aa = DapperHelper.DoTransaction(list);
@@ -2547,14 +2603,14 @@
                 {
                     mes.code = "200";
                     mes.count = 0;
-                    mes.Message = "妫�楠屾垚鍔�!";
+                    mes.Message = "鎿嶄綔鎴愬姛!";
                     mes.data = null;
                 }
                 else
                 {
                     mes.code = "300";
                     mes.count = 0;
-                    mes.Message = "妫�楠屽け璐�!";
+                    mes.Message = "鎿嶄綔澶辫触!";
                     mes.data = null;
                 }
             }
diff --git a/VueWebApi/DLL/DAL/QualityManagementDAL.cs b/VueWebApi/DLL/DAL/QualityManagementDAL.cs
index 21cec92..1ed9b94 100644
--- a/VueWebApi/DLL/DAL/QualityManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/QualityManagementDAL.cs
@@ -1,4 +1,5 @@
 锘縰sing Dapper;
+using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.Data;
@@ -685,13 +686,8 @@
                     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 total = 0; //鎬绘潯鏁�(棣栨銆佸贰妫�銆佸畬宸ユ楠�)
                 var sql = @"select A.id,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
@@ -699,7 +695,7 @@
                             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;
+                            where A.check_type in('FirstCheck','PatroCheck','EndCheck') " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -724,16 +720,24 @@
             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;
+                //瀛樺偍杩囩▼鍚�
+                sql = @"h_p_IFCLD_WuLiuCheckSubSelect";
+                dynamicParams.Add("@checkid", id);
+                DataTable dt = DapperHelper.selectProcedure(sql, dynamicParams);
+                if (dt.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = dt;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鏃犳楠屾槑缁嗘暟鎹�!";
+                    mes.data = null;
+                }
             }
             catch (Exception e)
             {
@@ -793,6 +797,115 @@
                     search += "and A.check_result=@checkresult ";
                     dynamicParams.Add("@checkresult", checkresult);
                 }
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select 
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.wo_code
+                            ELSE ''END AS '宸ュ崟鍙�',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN M.partcode
+                            ELSE ''END AS '浜у搧缂栫爜',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN M.partname
+                            ELSE ''END AS '浜у搧鍚嶇О',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN M.partspec
+                            ELSE ''END AS '瑙勬牸鍨嬪彿',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN S.stepname
+                            ELSE ''END AS '宸ュ簭鍚嶇О',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.checkstaned_code
+                            ELSE ''END AS '鏍囧噯缂栫爜',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN T.name
+                            ELSE ''END AS '鏍囧噯鍚嶇О',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN U.username
+                            ELSE ''END AS '妫�楠屼汉鍛�',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_typename
+                            ELSE ''END AS '妫�楠岀被鍨�',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_result
+                            ELSE ''END AS '妫�楠岀粨鏋�',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_descr
+                            ELSE ''END AS '妫�楠屾弿杩�',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.check_qty
+                            END AS '鏍锋湰鏁伴噺',
+                            CASE WHEN
+                            ROW_NUMBER() OVER (PARTITION BY A.id ORDER BY B.id) = 1 THEN A.lm_date
+                            END AS '妫�楠屾椂闂�',
+                            B.checknum as 妫�楠屼欢娆�,B.checkitem_seq as '妫�楠岄」鐩簭鍙�',B.checkitem_code '妫�楠岄」鐩紪鐮�',B.checkitem_name '妫�楠岄」鐩悕绉�',B.checkitem_descr '妫�楠岄」鐩弿杩�',B.check_result '妫�楠岄」鐩粨鏋�',
+                            C.standvalue as '鏍囧噯鍊�',C.uppervalue as '涓婇檺鍊�',C.lowervalue as '涓嬮檺鍊�',B.check_value as '瀹炴祴鍊�'
+                            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 TStepCheckStandardSub C on A.checkstaned_code=C.stepstaned_code and B.checkitem_code=C.stepcheckitem_code
+                            left join TUser U on A.check_user=U.usercode  
+                            where A.check_type in('FirstCheck','PatroCheck','EndCheck') " + 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
+
+
+        #region[璐ㄦ鏂规鍒楄〃鏌ヨ]
+        public static ToMessage QualityInspectionSearch(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampltype, string suitobject, int startNum, int endNum, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (qualityinsptcode != "" && qualityinsptcode != null)
+                {
+                    search += "and AA.code like '%'+@qualityinsptcode+'%' ";
+                    dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
+                }
+                if (qualityinsptname != "" && qualityinsptname != null)
+                {
+                    search += "and AA.name like '%'+@qualityinsptname+'%' ";
+                    dynamicParams.Add("@qualityinsptname", qualityinsptname);
+                }
+                if (status != "" && status != null)
+                {
+                    search += "and AA.status=@status ";
+                    dynamicParams.Add("@status", status);
+                }
+                if (checktype != "" && checktype != null)
+                {
+                    search += "and AA.checktype=@checktype ";
+                    dynamicParams.Add("@checktype", checktype);
+                }
+                if (sampltype != "" && sampltype != null)
+                {
+                    search += "and AA.sampmethod=@sampltype ";
+                    dynamicParams.Add("@sampltype", sampltype);
+                }
+                if (suitobject != "" && suitobject != null)
+                {
+                    search += "and AA.suitobject=@suitobject ";
+                    dynamicParams.Add("@suitobject", suitobject);
+                }
                 if (search == "")
                 {
                     search = "and 1=1 ";
@@ -800,61 +913,273 @@
                 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  
+                var sql = @"select *  from(
+                            select A.code,A.name,A.status,A.checktype,A.sampmethod,A.sampscare,A.suitobject,A.stepcode,S.stepname,A.descr,A.suitpart,A.lm_date,U.username,
+                            case when A.suitobject='P' then
+                            STUFF(( SELECT ';' + partname
+                            FROM TMateriel_Info
+                            where   PATINDEX('%;' + RTRIM(TMateriel_Info.partcode) + ';%',';' + A.suitpart + ';')>0    
+                            FOR XML PATH('')), 1, 1,'')  
+                            when A.suitobject='PY' 
+                            then 
+                            STUFF(( SELECT ';' + name
+                            FROM T_Dict
+                            where   PATINDEX('%;' + RTRIM(T_Dict.code) + ';%',';' + A.suitpart + ';')>0    
+                            FOR XML PATH('')), 1, 1,'')
+                            end as suitpartname
+                            from TStepCheckStandard A
+                            left join TUser U on  A.lm_user=U.usercode
+                            left join TStep S on A.stepcode=S.stepcode
+                            ) as AA 
                             where " + search;
-                DataTable data = DapperHelper.selectdata(sql, dynamicParams);
-                data.TableName ="Table"; //璁剧疆DataTable鐨勫悕绉�
-                string msg = DownLoad.DataTableToExcel(data, "宸ュ簭妫�楠岃褰�");
+                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
                 mes.count = total;
-                mes.data = msg;
+                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 QualityInspectionSeeEdit(string qualityinsptcode)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select A.stepcheckitem_seq,A.stepcheckitem_code,B.name as stepcheckitem_name,A.required,
+                        A.numberjudge,A.unit,A.decimalnum,A.standvalue,A.uppervalue,A.lowervalue,A.stepcheckitem_desc  
+                        from TStepCheckStandardSub A
+                        inner join TStepCheckItem B on A.stepcheckitem_code=B.code
+                        where A.stepstaned_code=@qualityinsptcode";
+                dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
+                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 QualityInspectionAddEditSave(string qualityinsptcode, string qualityinsptname, string status, string checktype, string sampmethod, string sampscare, string suitobject, string suitpart, string descr, string stepcode, string checkitem, string type, string username)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
+                //鑾峰彇璐ㄦ鍒楄〃妫�楠岄」鐩暟鎹�
+                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(checkitem);
+                list.Clear();
+                switch (type)
+                {
+                    case "Add": //鏂板
+                        //鍐欏叆璐ㄦ鏂规涓昏〃
+                        sql = @"insert into  TStepCheckStandard(code,name,status,checktype,sampmethod,sampscare,suitobject,suitpart,stepcode,descr,lm_user,lm_date) 
+                                values(@code,@name,@status,@checktype,@sampmethod,@sampscare,@suitobject,@suitpart,@stepcode,@descr,@lm_user,@lm_date)";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                code = qualityinsptcode,
+                                name = qualityinsptname,
+                                status = status,
+                                checktype = checktype,
+                                sampmethod = sampmethod,
+                                sampscare = sampscare,
+                                suitobject = suitobject,
+                                suitpart = suitpart,
+                                stepcode = stepcode,
+                                descr = descr,
+                                lm_user = username,
+                                lm_date = date
+                            }
+                        });
+                        //鍐欏叆璐ㄦ鏂规瀛愯〃
+                        for (int i = 0; i < arra.Count; i++)
+                        {
+                            sql = @"insert into  TStepCheckStandardSub(stepstaned_code,stepcheckitem_seq,stepcheckitem_code,required,numberjudge,unit,decimalnum,standvalue,uppervalue,lowervalue,stepcheckitem_desc,lm_user,lm_date) 
+                                values(@stepstaned_code,@stepcheckitem_seq,@stepcheckitem_code,@required,@numberjudge,@unit,@decimalnum,@standvalue,@uppervalue,@lowervalue,@stepcheckitem_desc,@lm_user,@lm_date)";
+                            list.Add(new
+                            {
+                                str = sql,
+                                parm = new
+                                {
+                                    stepstaned_code = qualityinsptcode,
+                                    stepcheckitem_seq = Convert.ToInt32(arra[i]["stepcheckitem_seq"].ToString()),
+                                    stepcheckitem_code = arra[i]["stepcheckitem_code"].ToString(),
+                                    required = arra[i]["required"].ToString(),
+                                    numberjudge = arra[i]["numberjudge"].ToString(),
+                                    unit = arra[i]["unit"].ToString(),
+                                    decimalnum = arra[i]["decimalnum"].ToString(),
+                                    standvalue = arra[i]["standvalue"].ToString(),
+                                    uppervalue = arra[i]["uppervalue"].ToString(),
+                                    lowervalue = arra[i]["lowervalue"].ToString(),
+                                    stepcheckitem_desc = arra[i]["stepcheckitem_desc"].ToString(),
+                                    lm_user = username,
+                                    lm_date = date
+                                }
+                            });
+                        }
+                        break;
+                    case "Update"://淇敼
+                        //鍒ゆ柇鏄惁鐢熸垚妫�楠岃褰�(鍏ュ巶妫�楠�(InCheck)  鍑哄巶妫�楠�(OutCheck)  FirstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�))
+                        sql = @"select *  from TStepCheckRecord where checkstaned_code=@qualityinsptcode and check_type=@checktype";
+                        dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
+                        dynamicParams.Add("@checktype", checktype);
+                        var data = DapperHelper.selectdata(sql, dynamicParams);
+                        if (data.Rows.Count > 0)
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "淇敼澶辫触,褰撳墠璐ㄦ鏂规宸茬敓鎴愬搴旀楠岃褰�!";
+                            mes.data = null;
+                            return mes;
+                        }
+                        //鍒犻櫎璐ㄦ鏂规瀛愯〃
+                        sql = @"delete from TStepCheckStandardSub where stepstaned_code=@code";
+                        list.Add(new { str = sql, parm = new { code = qualityinsptcode } });
+                        //淇敼璐ㄦ鏂规涓昏〃
+                        sql = @"update TStepCheckStandard set name=@name,status=@status,checktype=@checktype,sampmethod=@sampmethod,sampscare=@sampscare,
+                                suitobject=@suitobject,suitpart=@suitpart,stepcode=@stepcode,descr=@descr
+                                where code=@code";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                code = qualityinsptcode,
+                                name = qualityinsptname,
+                                status = status,
+                                checktype = checktype,
+                                sampmethod = sampmethod,
+                                sampscare = sampscare,
+                                suitobject = suitobject,
+                                suitpart = suitpart,
+                                stepcode = stepcode,
+                                descr = descr,
+                            }
+                        });
+                        //鏂板璐ㄦ鏂规瀛愯〃
+                        for (int i = 0; i < arra.Count; i++)
+                        {
+                            sql = @"insert into  TStepCheckStandardSub(stepstaned_code,stepcheckitem_seq,stepcheckitem_code,required,numberjudge,unit,decimalnum,standvalue,uppervalue,lowervalue,stepcheckitem_desc,lm_user,lm_date) 
+                                values(@stepstaned_code,@stepcheckitem_seq,@stepcheckitem_code,@required,@numberjudge,@unit,@decimalnum,@standvalue,@uppervalue,@lowervalue,@stepcheckitem_desc,@lm_user,@lm_date)";
+                            list.Add(new
+                            {
+                                str = sql,
+                                parm = new
+                                {
+                                    stepstaned_code = qualityinsptcode,
+                                    stepcheckitem_seq = Convert.ToInt32(arra[i]["stepcheckitem_seq"].ToString()),
+                                    stepcheckitem_code = arra[i]["stepcheckitem_code"].ToString(),
+                                    required = arra[i]["required"].ToString(),
+                                    numberjudge = arra[i]["numberjudge"].ToString(),
+                                    unit = arra[i]["unit"].ToString(),
+                                    decimalnum = arra[i]["decimalnum"].ToString(),
+                                    standvalue = arra[i]["standvalue"].ToString(),
+                                    uppervalue = arra[i]["uppervalue"].ToString(),
+                                    lowervalue = arra[i]["lowervalue"].ToString(),
+                                    stepcheckitem_desc = arra[i]["stepcheckitem_desc"].ToString(),
+                                    lm_user = username,
+                                    lm_date = date
+                                }
+                            });
+                        }
+                        break;
+                    default:
+                        break;
+                }
+                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
+
+        #region[璐ㄦ鏂规鍒犻櫎]
+        public static ToMessage QualityInspectionDelete(string qualityinsptcode, string username)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鍒ゆ柇鏄惁鐢熸垚妫�楠岃褰�(鍏ュ巶妫�楠�(InCheck)  鍑哄巶妫�楠�(OutCheck)  FirstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�))
+                sql = @"select *  from TStepCheckRecord where checkstaned_code=@qualityinsptcode";
+                dynamicParams.Add("@qualityinsptcode", qualityinsptcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鍒犻櫎澶辫触,褰撳墠璐ㄦ鏂规宸茬敓鎴愬搴旀楠岃褰�!";
+                    mes.data = null;
+                    return mes;
+                }
+                //鍒犻櫎璐ㄦ鏂规涓昏〃
+                sql = @"delete TStepCheckStandard  where code=@code";
+                list.Add(new { str = sql, parm = new { code = qualityinsptcode } });
+                //鍒犻櫎璐ㄦ鏂规瀛愯〃
+                sql = @"delete TStepCheckStandardSub  where stepstaned_code=@code";
+                list.Add(new { str = sql, parm = new { code = qualityinsptcode } });
+
+                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)
             {
diff --git a/VueWebApi/DLL/DAL/ReportManagerDAL.cs b/VueWebApi/DLL/DAL/ReportManagerDAL.cs
index aaeedbc..ca85f44 100644
--- a/VueWebApi/DLL/DAL/ReportManagerDAL.cs
+++ b/VueWebApi/DLL/DAL/ReportManagerDAL.cs
@@ -1045,5 +1045,205 @@
             return mes;
         }
         #endregion
+
+
+        #region[鐢熶骇杩涘害鎶ヨ〃]
+        public static ToMessage ProductionScheduleReportSearch(string status, string wocode, string routecode, string routename, string partcode, string partname, string partspec, string opendate, string closedate, int startNum, int endNum, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (status != "" && status != null)
+                {
+                    switch (status)
+                    {
+                        case "START":
+                            search += "and AA.status='START' ";
+                            break;
+                        case "CLOSED":
+                            search += "and AA.status='CLOSED' ";
+                            break;
+                        default:
+                            search += "and AA.status<>'START' and AA.status<>'CLOSED' ";
+                            break;
+                    }
+                }
+                if (wocode != "" && wocode != null)
+                {
+                    search += "and AA.wo_code like '%'+@wocode+'%' ";
+                    dynamicParams.Add("@wocode", wocode);
+                }
+                if (routecode != "" && routecode != null)
+                {
+                    search += "and AA.route_code like '%'+@routecode+'%' ";
+                    dynamicParams.Add("@routecode", routecode);
+                }
+                if (routename != "" && routename != null)
+                {
+                    search += "and AA.route_name like '%'+@routename+'%' ";
+                    dynamicParams.Add("@routename", routename);
+                }
+                if (partcode != "" && partcode != null)
+                {
+                    search += "and AA.partcode like '%'+@partcode+'%' ";
+                    dynamicParams.Add("@partcode", partcode);
+                }
+                if (partname != "" && partname != null)
+                {
+                    search += "and AA.partname like '%'+@partname+'%' ";
+                    dynamicParams.Add("@partname", partname);
+                }
+                if (partspec != "" && partspec != null)
+                {
+                    search += "and AA.partspec like '%'+@partspec+'%' ";
+                    dynamicParams.Add("@partspec", partspec);
+                }
+                if (opendate != "" && opendate != null)
+                {
+                    search += "and AA.lm_date between @opendate and @closedate ";
+                    dynamicParams.Add("@opendate", opendate + " 00:00:00");
+                    dynamicParams.Add("@closedate", closedate + " 23:59:59");
+                }
+                if (search == "")
+                {
+                    search = "and 1=1 ";
+                }
+                search = search.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select  AA.saleOrderCode,AA.m_po,AA.wo_code,
+                            (case when AA.status='START' then '鎵ц涓�' when AA.status='CLOSED' then '宸插畬鎴�' else '鏈紑濮�' end) as status,
+                            AA.lm_date,AA.route_code,AA.route_name,AA.partcode,AA.partname,AA.partspec,AA.plan_qty,left(AA.concat_name,len(concat_name)-1) as concat_name  from
+                            (
+                            select E.saleOrderCode,W.m_po,m.wo_code,W.status,W.lm_date,W.route_code,R.name as route_name,P.partcode,P.partname,P.partspec,m.plan_qty,
+                            (select s.stepname+'/'+cast(cast(n.good_qty as decimal(18,2)) AS varchar(50))+',' from TK_Wrk_Step n
+                             inner join TStep S on n.step_code=S.stepcode
+                             where n.wo_code=m.wo_code for xml path('')) as concat_name
+                            from TK_Wrk_Step m
+                            inner join TK_Wrk_Man W on m.wo_code=W.wo_code
+                            left join TKimp_Ewo E on W.m_po=E.wo
+                            inner join TMateriel_Info P on W.materiel_code=p.partcode
+                            inner join TFlw_Rout R on W.route_code=R.code
+                            group by E.saleOrderCode,W.m_po,m.wo_code,W.status,W.lm_date,W.route_code,R.name,P.partcode,P.partname,P.partspec,m.plan_qty
+                            ) AA  
+                            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 ProductionScheduleReportExcelSearch(string status, string wocode, string routecode, string routename, string partcode, string partname, string partspec, string opendate, string closedate)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (status != "" && status != null)
+                {
+                    switch (status)
+                    {
+                        case "START":
+                            search += "and AA.status='START' ";
+                            break;
+                        case "CLOSED":
+                            search += "and AA.status='CLOSED' ";
+                            break;
+                        default:
+                            search += "and AA.status<>'START' and AA.status<>'CLOSED' ";
+                            break;
+                    }
+                }
+                if (wocode != "" && wocode != null)
+                {
+                    search += "and AA.wo_code like '%'+@wocode+'%' ";
+                    dynamicParams.Add("@wocode", wocode);
+                }
+                if (routecode != "" && routecode != null)
+                {
+                    search += "and AA.route_code like '%'+@routecode+'%' ";
+                    dynamicParams.Add("@routecode", routecode);
+                }
+                if (routename != "" && routename != null)
+                {
+                    search += "and AA.route_name like '%'+@routename+'%' ";
+                    dynamicParams.Add("@routename", routename);
+                }
+                if (partcode != "" && partcode != null)
+                {
+                    search += "and AA.partcode like '%'+@partcode+'%' ";
+                    dynamicParams.Add("@partcode", partcode);
+                }
+                if (partname != "" && partname != null)
+                {
+                    search += "and AA.partname like '%'+@partname+'%' ";
+                    dynamicParams.Add("@partname", partname);
+                }
+                if (partspec != "" && partspec != null)
+                {
+                    search += "and AA.partspec like '%'+@partspec+'%' ";
+                    dynamicParams.Add("@partspec", partspec);
+                }
+                if (opendate != "" && opendate != null)
+                {
+                    search += "and AA.lm_date between @opendate and @closedate ";
+                    dynamicParams.Add("@opendate", opendate + " 00:00:00");
+                    dynamicParams.Add("@closedate", closedate + " 23:59:59");
+                }
+                if (search == "")
+                {
+                    search = "and 1=1 ";
+                }
+                search = search.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select  AA.saleOrderCode as ERP婧愬崟鍙�,AA.m_po as ERP鐢熶骇璁㈠崟,AA.wo_code as 鐢熶骇宸ュ崟鍙�,
+                            (case when AA.status='START' then '鎵ц涓�' when AA.status='CLOSED' then '宸插畬鎴�' else '鏈紑濮�' end) as 宸ュ崟鐘舵��,
+                            AA.lm_date as 鍗曟嵁鏃ユ湡,AA.route_code as 宸ヨ壓璺嚎缂栧彿,AA.route_name as 宸ヨ壓璺嚎鍚嶇О,
+                            AA.partcode as 浜у搧缂栫爜,AA.partname as 浜у搧鍚嶇О,AA.partspec as 浜у搧瑙勬牸,AA.plan_qty as 浠诲姟鏁伴噺,left(AA.concat_name,len(concat_name)-1) as 鐢熶骇杩涘害  from
+                            (
+                            select E.saleOrderCode,W.m_po,m.wo_code,W.status,W.lm_date,W.route_code,R.name as route_name,P.partcode,P.partname,P.partspec,m.plan_qty,
+                            (select s.stepname+'/'+cast(cast(n.good_qty as decimal(18,2)) AS varchar(50))+',' from TK_Wrk_Step n
+                             inner join TStep S on n.step_code=S.stepcode
+                             where n.wo_code=m.wo_code for xml path('')) as concat_name
+                            from TK_Wrk_Step m
+                            inner join TK_Wrk_Man W on m.wo_code=W.wo_code
+                            left join TKimp_Ewo E on W.m_po=E.wo
+                            inner join TMateriel_Info P on W.materiel_code=p.partcode
+                            inner join TFlw_Rout R on W.route_code=R.code
+                            group by E.saleOrderCode,W.m_po,m.wo_code,W.status,W.lm_date,W.route_code,R.name,P.partcode,P.partname,P.partspec,m.plan_qty
+                            ) AA  
+                            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/DLL/DAL/SystemSettingDAL.cs b/VueWebApi/DLL/DAL/SystemSettingDAL.cs
index b350950..dcad43d 100644
--- a/VueWebApi/DLL/DAL/SystemSettingDAL.cs
+++ b/VueWebApi/DLL/DAL/SystemSettingDAL.cs
@@ -155,6 +155,15 @@
         #endregion
 
 
+        #region[鐢熸垚绯荤粺鏉$爜(鑷畾涔�)]
+        public static ToMessage LabelBarCode(string rightcode, string partcode, string qty, string onelabqty)
+        {
+            mes = AppLableBarCode.EncodingSeach(rightcode, partcode, qty, onelabqty);
+            return mes;
+        }
+        #endregion
+
+
         #region[杞﹂棿鍏憡鍒楄〃]
         public static ToMessage SystemAnnouncementSearch(string wkspcode, string ancetitle, string ancecont, string cancel, string level, int startNum, int endNum, string prop, string order)
         {
diff --git a/VueWebApi/Logs/2023-05-30.TXT b/VueWebApi/Logs/2023-05-30.TXT
new file mode 100644
index 0000000..c49b073
--- /dev/null
+++ b/VueWebApi/Logs/2023-05-30.TXT
@@ -0,0 +1,78 @@
+ 【时间】:2023-05-30 13:32:31,861
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 11 
+ 【文件地址】:D:\新凯迪MES\MES项目\MES富尔达\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:将截断字符串或二进制数据。
+语句已终止。
+引发异常路径:/api/AppProductionManagement/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\MES项目\MES富尔达\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 457
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
+ 【时间】:2023-05-30 13:34:50,570
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 9 
+ 【文件地址】:D:\新凯迪MES\MES项目\MES富尔达\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:将截断字符串或二进制数据。
+语句已终止。
+引发异常路径:/api/AppProductionManagement/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\MES项目\MES富尔达\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 457
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
+ 【时间】:2023-05-30 13:50:40,954
+ 【级别】:ERROR
+ 【类名】:日志记录
+ 【线程ID】: 6 
+ 【文件地址】:D:\新凯迪MES\MES项目\MES富尔达\VueWebApi\VueWebApi\Tools\LogHelper.cs 第25行
+ 【日志内容】:
+消息类型:SqlException
+消息内容:将截断字符串或二进制数据。
+语句已终止。
+引发异常路径:/api/AppProductionManagement/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\MES项目\MES富尔达\VueWebApi\VueWebApi\Tools\DapperHelper.cs:行号 457
+ 【日记详细】: 
+---------------------------------------------------------------------------------------------------------------
diff --git a/VueWebApi/Models/AppLabCode.cs b/VueWebApi/Models/AppLabCode.cs
new file mode 100644
index 0000000..a1ae747
--- /dev/null
+++ b/VueWebApi/Models/AppLabCode.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace VueWebApi.Models
+{
+    public class AppLabCode
+    {
+        /// <summary>
+        /// 鍔熻兘缂栫爜
+        /// </summary>
+        public string rightcode { get; set; }
+        /// <summary>
+        /// 鏍囩鏉$爜
+        /// </summary>
+        public string labcode { get; set; }
+        /// <summary>
+        /// 鏍囩鏁伴噺
+        /// </summary>
+        public string labqty { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string partnumber { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Models/AppScheduleKanban.cs b/VueWebApi/Models/AppScheduleKanban.cs
new file mode 100644
index 0000000..3fc9f27
--- /dev/null
+++ b/VueWebApi/Models/AppScheduleKanban.cs
@@ -0,0 +1,44 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+
+namespace VueWebApi.Models
+{
+    public class AppScheduleKanban
+    {
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string ordercode { get; set; }
+        /// <summary>
+        /// 鍗曟嵁鏁伴噺
+        /// </summary>
+        public string orderqty { get; set; }
+        /// <summary>
+        /// 鍗曟嵁缂栧彿
+        /// </summary>
+        public string ordergoodqty { get; set; }
+        /// <summary>
+        /// 浜у搧缂栫爜
+        /// </summary>
+        public string partcode { get; set; }
+        /// <summary>
+        /// 浜у搧鍚嶇О
+        /// </summary>
+        public string partname { get; set; }
+        /// <summary>
+        /// 浜у搧瑙勬牸
+        /// </summary>
+        public string partspec { get; set; }
+        public List<AppScheduleKanbanSub> children { get; set; }//瀛愯妭鐐�
+    }
+    public class AppScheduleKanbanSub
+    {
+        public string code { get; set; }  
+        public string name { get; set; }
+        public string spec { get; set; }
+        public string planqty { get; set; }
+        public string goodqty { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Models/User.cs b/VueWebApi/Models/User.cs
index b4d1472..1619ba8 100644
--- a/VueWebApi/Models/User.cs
+++ b/VueWebApi/Models/User.cs
@@ -14,5 +14,6 @@
         public string password { get; set; }
         public string usertype { get; set; }
         public string rediskey { get; set; }
+        public string group_name { get; set; }
     }
 }
\ No newline at end of file
diff --git a/VueWebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user b/VueWebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user
index 0ae4872..cd99cf3 100644
--- a/VueWebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user
+++ b/VueWebApi/Properties/PublishProfiles/FolderProfile1.pubxml.user
@@ -5,7 +5,7 @@
 <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <_PublishTargetUrl>D:\缃戠珯鍙戝竷\MES瀵屽皵杈�</_PublishTargetUrl>
-    <History>True|2023-03-08T04:43:42.9598898Z;True|2023-03-06T18:51:13.2558827+08:00;True|2023-03-06T18:50:27.1759228+08:00;True|2023-03-06T17:51:38.0075626+08:00;True|2023-03-06T14:40:55.5044464+08:00;True|2023-03-04T16:07:14.5197891+08:00;True|2023-03-04T14:41:42.0976052+08:00;True|2023-03-03T16:02:52.7528225+08:00;True|2023-02-20T19:50:29.9610176+08:00;True|2022-12-02T09:48:15.8632783+08:00;True|2022-12-02T09:39:45.8161756+08:00;True|2022-12-02T08:40:39.6638743+08:00;True|2022-12-01T14:57:53.4186199+08:00;True|2022-11-30T15:59:10.4273430+08:00;True|2022-11-30T14:04:20.4425530+08:00;True|2022-11-30T14:03:51.8326823+08:00;True|2022-11-30T13:26:46.0316090+08:00;True|2022-11-29T08:57:17.3697109+08:00;True|2022-11-23T14:06:03.8602775+08:00;True|2022-11-21T15:13:10.4385853+08:00;True|2022-11-16T10:29:41.2258924+08:00;True|2022-11-16T09:54:23.4213778+08:00;</History>
+    <History>True|2023-05-30T07:34:18.5399623Z;True|2023-05-30T15:20:27.4273476+08:00;True|2023-05-30T11:27:05.6033045+08:00;True|2023-05-30T11:08:12.5476054+08:00;True|2023-05-30T11:03:06.2723106+08:00;True|2023-05-30T10:17:53.1019520+08:00;True|2023-05-30T10:16:57.3703637+08:00;True|2023-05-29T15:48:15.9306443+08:00;True|2023-05-11T16:24:47.9829255+08:00;True|2023-05-04T14:27:04.1494078+08:00;True|2023-05-04T14:26:40.5417813+08:00;True|2023-05-04T13:10:10.7125008+08:00;True|2023-03-08T12:43:42.9598898+08:00;True|2023-03-06T18:51:13.2558827+08:00;True|2023-03-06T18:50:27.1759228+08:00;True|2023-03-06T17:51:38.0075626+08:00;True|2023-03-06T14:40:55.5044464+08:00;True|2023-03-04T16:07:14.5197891+08:00;True|2023-03-04T14:41:42.0976052+08:00;True|2023-03-03T16:02:52.7528225+08:00;True|2023-02-20T19:50:29.9610176+08:00;True|2022-12-02T09:48:15.8632783+08:00;True|2022-12-02T09:39:45.8161756+08:00;True|2022-12-02T08:40:39.6638743+08:00;True|2022-12-01T14:57:53.4186199+08:00;True|2022-11-30T15:59:10.4273430+08:00;True|2022-11-30T14:04:20.4425530+08:00;True|2022-11-30T14:03:51.8326823+08:00;True|2022-11-30T13:26:46.0316090+08:00;True|2022-11-29T08:57:17.3697109+08:00;True|2022-11-23T14:06:03.8602775+08:00;True|2022-11-21T15:13:10.4385853+08:00;True|2022-11-16T10:29:41.2258924+08:00;True|2022-11-16T09:54:23.4213778+08:00;</History>
   </PropertyGroup>
   <ItemGroup>
     <File Include="Areas/HelpPage/HelpPage.css">
@@ -705,13 +705,13 @@
       <publishTime>12/24/2021 15:38:29</publishTime>
     </File>
     <File Include="bin/VueWebApi.dll">
-      <publishTime>03/08/2023 12:43:37</publishTime>
+      <publishTime>05/30/2023 15:34:13</publishTime>
     </File>
     <File Include="bin/VueWebApi.pdb">
-      <publishTime>03/08/2023 12:43:37</publishTime>
+      <publishTime>05/30/2023 15:34:13</publishTime>
     </File>
     <File Include="bin/VueWebApi.xml">
-      <publishTime>03/08/2023 12:43:37</publishTime>
+      <publishTime>05/30/2023 15:34:13</publishTime>
     </File>
     <File Include="bin/WebActivatorEx.dll">
       <publishTime>02/08/2013 16:42:28</publishTime>
@@ -1074,7 +1074,7 @@
       <publishTime>06/16/2022 13:39:23</publishTime>
     </File>
     <File Include="Web.config">
-      <publishTime>03/08/2023 12:43:42</publishTime>
+      <publishTime>05/30/2023 15:34:17</publishTime>
     </File>
   </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/VueWebApi/Tools/AppLableBarCode.cs b/VueWebApi/Tools/AppLableBarCode.cs
new file mode 100644
index 0000000..22fef9c
--- /dev/null
+++ b/VueWebApi/Tools/AppLableBarCode.cs
@@ -0,0 +1,183 @@
+锘縰sing Dapper;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Web;
+using VueWebApi.Models;
+
+namespace VueWebApi.Tools
+{
+    public class AppLableBarCode
+    {
+        public static ToMessage mes = new ToMessage(); //瀹氫箟鍏ㄥ眬杩斿洖淇℃伅瀵硅薄
+
+        #region [鑾峰彇瑙勫垯缂栫爜]
+        /// <summary>
+        /// 鏍规嵁鍔熻兘缂栫爜鑾峰彇鏈�鏂拌鍒欑紪鐮�
+        /// </summary>
+        /// <param name="rightcode">鍔熻兘缂栫爜</param>
+        /// <param name="partcode">鐗╂枡缂栫爜</param>
+        /// <param name="qty">鏁伴噺</param>
+        /// <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+        /// <returns></returns>
+        public static ToMessage EncodingSeach(string rightcode,string partcode, string qty, string onelabqty)
+        {
+            string sql, year="", month="", day="", fdate="", q="", cunm2 = "", Encode="", cunm = "";
+            int digit2 = 0, value2 = 0, digit3 = 0, digitdiff = 0;
+            bool stf;
+            List<object> list = new List<object>();
+            List<string> listdt = new List<string>();
+            List<AppLabCode> lab = new List<AppLabCode>();
+            var dynamicParams = new DynamicParameters();
+            //鑾峰彇鏍囩涓暟:杩涗竴娉�
+            decimal labcum = Math.Ceiling(decimal.Parse(qty) / decimal.Parse(onelabqty));
+            try
+            {
+                sql = @"select prefix,filingdate,incbit,value from  T_CodeRules  where rightcode=@rightcode";
+                dynamicParams.Add("@rightcode", rightcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    string prefix = data.Rows[0]["PREFIX"].ToString();  //鍥哄畾瀛楁
+                    string filingdate = data.Rows[0]["FILINGDATE"].ToString();  //鎻愪氦鏃ユ湡
+                    int incbit = int.Parse(data.Rows[0]["INCBIT"].ToString());  //鑷浣嶆暟
+                    string value = data.Rows[0]["VALUE"].ToString();  //娴佹按鍙�                                               
+                    decimal sumqty = 0;//瀹氫箟绱鍗曟爣绛炬暟閲�
+                    if (int.Parse(value) >=0)  
+                    {
+                        switch (filingdate)
+                        {
+                            case "骞存湀鏃�":
+                                lab = Labcode(partcode,year, month, day, prefix, fdate, digit2, value2, digit3, digitdiff, q, cunm2, Encode, value, labcum, sumqty, onelabqty, rightcode, qty,out  cunm);
+                                break;
+                            case "骞存湀":
+                                lab = Labcode(partcode,year, month, day, prefix, fdate, digit2, value2, digit3, digitdiff, q, cunm2, Encode, value, labcum, sumqty, onelabqty, rightcode, qty, out cunm);
+                                break;
+                            case "骞�":
+                                lab = Labcode(partcode,year, month, day, prefix, fdate, digit2, value2, digit3, digitdiff, q, cunm2, Encode, value, labcum, sumqty, onelabqty, rightcode, qty, out cunm);
+                                break;
+                            default:
+                                break;
+                        }
+                        //鏇存柊瑙勫垯琛ㄤ綅鏁板強娴佹按鍙�
+                        sql = @"update T_CodeRules set incbit=@incbit,value=@cunm2  where rightcode=@rightcode";
+                        dynamicParams.Add("@incbit", cunm.Length);
+                        dynamicParams.Add("@cunm2", cunm);
+                        dynamicParams.Add("@rightcode", rightcode);
+                        list.Add(new { str = sql, parm = dynamicParams });
+                        stf = DapperHelper.DoTransaction(list);
+                        if (stf)
+                        {
+                            mes.code = "200";
+                            mes.Message = "鎴愬姛!";
+                            mes.data = lab;
+                        }
+                        else
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "澶辫触!";
+                            mes.data = null;
+                        }
+                    }
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鏈缃紪鐮佽鍒�,鐢熸垚鍗曞彿澶辫触,璇疯缃紪鐮佷负銆�" + rightcode + "銆戠殑缂栫爜瑙勫垯!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[鐢熸垚鏉$爜]
+        /// <summary>
+        /// 鐢熸垚鏉$爜
+        /// </summary>
+        /// <param name="partcode">鐗╂枡缂栫爜</param>
+        /// <param name="year">骞�</param>
+        /// <param name="month">鏈�</param>
+        /// <param name="day">鏃�</param>
+        /// <param name="prefix">鍥哄畾瀛楁</param>
+        /// <param name="fdate">骞�(2浣�)+鏈�(2浣�)+鏃�(2浣�)</param>
+        /// <param name="digit2">娴佹按鍙烽暱搴�</param>
+        /// <param name="value2">鑷娴佹按鍙�</param>
+        /// <param name="digit3">鑷娴佹按鍙烽暱搴�</param>
+        /// <param name="digitdiff">浣嶆暟宸�</param>
+        /// <param name="q">琛ヤ綅(0)</param>
+        /// <param name="cunm2">鏈�缁堟祦姘村彿(鍖呭惈琛ヤ綅)</param>
+        /// <param name="Encode">鏈�缁堟爣绛剧爜(鍥哄畾瀛楁+瑙勫垯+鏈�缁堟祦姘村彿)</param>
+        /// <param name="value">鍒濆鏌ヨ鏈�鏂版祦姘村彿</param>
+        /// <param name="labcum">鏍囩涓暟</param>
+        /// <param name="sumqty">绱鍗曟爣绛炬暟閲�</param>
+        /// <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+        /// <param name="rightcode">鍔熻兘缂栫爜</param>
+        /// <param name="qty">鏁伴噺</param>
+        /// <param name="cunm">杈撳嚭鏈�缁堟祦姘村彿</param>
+        /// <returns></returns>
+        public static List<AppLabCode> Labcode(string partcode,string year,string month,string day,string prefix, string fdate,int digit2,int value2,int digit3,int digitdiff,string q,string cunm2,string Encode, string value, decimal labcum, decimal sumqty,string onelabqty,string rightcode,string qty,out string cunm) 
+        {
+            List<AppLabCode> lab = new List<AppLabCode>();
+            year = DateTime.Now.Year.ToString().Substring(2, 2);//鑾峰彇骞�(2浣�)
+            month = DateTime.Now.Month.ToString().PadLeft(2, '0');//鑾峰彇鏈�(2浣�)
+            day = DateTime.Now.Day.ToString().PadLeft(2, '0');//鑾峰彇鏃�(2浣�)
+            fdate = year + month + day;
+
+            //鑾峰彇鏌ヨ娴佹按鍙风殑浣嶆暟
+            digit2 = value.Length;//鑾峰彇string绫诲瀷浣嶆暟  
+            for (int i = 1; i <= labcum; i++)
+            { 
+                AppLabCode lb = new AppLabCode();
+                lb.rightcode = rightcode;
+                if (i == labcum)  //鏈�鍚庝竴寮犳爣绛�
+                {
+                    lb.labqty = (decimal.Parse(qty) - sumqty).ToString(); //鍗曟爣绛炬暟閲�
+                }
+                else
+                {
+                    lb.labqty = onelabqty; //鍗曟爣绛炬暟閲�
+                    sumqty += decimal.Parse(onelabqty);
+                }
+
+                //娴佹按鍙峰惊鐜嚜澧�
+                value2 = int.Parse(value) + i;
+                //鑾峰彇鑷鍚庢祦姘村彿浣嶆暟
+                digit3 = value2.ToString().Length;
+                //鑾峰彇浣嶆暟涔嬪樊
+                digitdiff = digit2 - digit3;
+                //閲嶆柊鑾峰彇娴佹按鍙蜂綅鏁�
+                digit2 = digit3;
+                q = "";
+                if (digitdiff < 0) //浣嶆暟宸负璐熸暟闇�瑕佽繘琛ヤ綅
+                {
+                    cunm2 = value2.ToString();//鏈�缁堟祦姘村彿
+                }
+                else
+                {
+                    for (int j = 1; j <= digitdiff; j++)
+                    {
+                        q = q + "0";
+                    }
+                    cunm2 = q + value2.ToString();//鏈�缁堟祦姘村彿
+                }
+                Encode = prefix + fdate + cunm2; //鏈�缁堢紪鐮�
+                lb.labcode = Encode;
+                lb.partnumber = partcode;
+                lab.Add(lb);  
+            }
+            cunm = cunm2;
+            return lab;
+        }
+        #endregion
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/Tools/ChannelActionFilterAttributeApp.cs b/VueWebApi/Tools/ChannelActionFilterAttributeApp.cs
new file mode 100644
index 0000000..f15e715
--- /dev/null
+++ b/VueWebApi/Tools/ChannelActionFilterAttributeApp.cs
@@ -0,0 +1,69 @@
+锘縰sing Newtonsoft.Json;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Net.Http;
+using System.Net.Http.Headers;
+using System.Text;
+using System.Web;
+using System.Web.Http.Controllers;
+using System.Web.Http.Filters;
+using VueWebApi.Models;
+
+namespace VueWebApi.Tools
+{
+    /// <summary>
+    /// 娓犻亾杩囨护鍣�
+    /// </summary>
+    [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false)]
+    public class ChannelActionFilterAttributeApp : ActionFilterAttribute
+    {
+        ToMessage mes = new ToMessage();
+        RedisHelper redis = new RedisHelper();
+        /// <summary>
+        /// 璇锋眰鎺ュ彛涔嬪墠娓犻亾杩囨护
+        /// </summary>
+        /// <param name="actionContext"></param>
+        public override void OnActionExecuting(HttpActionContext actionContext)
+        {
+            try
+            {
+                var rediskey = HttpContext.Current.Request.Headers["rediskey"].ToString();
+                var guid = HttpContext.Current.Request.Headers["guid"].ToString();
+                base.OnActionExecuting(actionContext);
+                //濡傛灉瀛樺湪
+                if (redis.Get<User>(rediskey, 1).userid.ToString() != "")
+                {
+                    //鑾峰彇redis涓綋鍓嶇敤鎴蜂俊鎭�
+                    User r_loginUser = redis.Get<User>(rediskey, 1);
+                    //濡傛灉session涓殑鐢ㄦ埛guid鍜宺edis涓殑鐢ㄦ埛guid鍖归厤
+                    if (r_loginUser.guid.Equals(guid))
+                    {
+                        //閲嶇疆杩囨湡鏃堕棿
+                        redis.KeyExpire(rediskey, redis.secondsTimeOut);
+                    }
+                    else
+                    {
+                        mes.code = "303";
+                        mes.Message = "鐧诲綍宸茶秴鏃�,璇烽噸鏂扮櫥褰�!";
+                        actionContext.Response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(mes), Encoding.GetEncoding("UTF-8"), "application/json") };
+                    }
+                }
+                else //濡傛灉redis鐧诲綍鐢ㄦ埛涓笉瀛樺湪褰撳墠鐢ㄦ埛
+                {
+                    mes.code = "303";
+                    mes.Message = "鐧诲綍宸茶秴鏃�,璇烽噸鏂扮櫥褰�!";
+                    actionContext.Response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(mes), Encoding.GetEncoding("UTF-8"), "application/json") };
+                }
+            }
+            catch (Exception)
+            {
+                mes.code = "303";
+                mes.Message = "鐧诲綍宸茶秴鏃�,璇烽噸鏂扮櫥褰�!";
+                actionContext.Response = new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = new StringContent(JsonConvert.SerializeObject(mes), Encoding.GetEncoding("UTF-8"), "application/json") };
+            }
+
+        }
+    }
+}
\ No newline at end of file
diff --git a/VueWebApi/VueWebApi.csproj b/VueWebApi/VueWebApi.csproj
index 5b5547c..907c8f4 100644
--- a/VueWebApi/VueWebApi.csproj
+++ b/VueWebApi/VueWebApi.csproj
@@ -308,9 +308,22 @@
     <Compile Include="Areas\HelpPage\SampleGeneration\SampleDirection.cs" />
     <Compile Include="Areas\HelpPage\SampleGeneration\TextSample.cs" />
     <Compile Include="Areas\HelpPage\XmlDocumentationProvider.cs" />
+    <Compile Include="Controllers\AppAnalyticsController.cs" />
+    <Compile Include="Controllers\AppPersonalController.cs" />
+    <Compile Include="Controllers\AppProductionManagementController.cs" />
+    <Compile Include="Controllers\AppQualityManagementController.cs" />
+    <Compile Include="Controllers\BaseDateController.cs" />
     <Compile Include="Controllers\ReportManagerController.cs" />
     <Compile Include="Controllers\SendController.cs" />
+    <Compile Include="DLL\BLL\AppAnalyticsBLL.cs" />
+    <Compile Include="DLL\BLL\AppPersonalBLL.cs" />
+    <Compile Include="DLL\BLL\AppQualityManagementBLL.cs" />
+    <Compile Include="DLL\BLL\BaseDateBLL.cs" />
     <Compile Include="DLL\BLL\ReportManagerBLL.cs" />
+    <Compile Include="DLL\DAL\AppAnalyticsDAL.cs" />
+    <Compile Include="DLL\DAL\AppPersonalDAL.cs" />
+    <Compile Include="DLL\DAL\AppQualityManagementDAL.cs" />
+    <Compile Include="DLL\DAL\BaseDateDAL.cs" />
     <Compile Include="DLL\DAL\ReportManagerDAL.cs" />
     <Compile Include="Hubs\ChatHub.cs" />
     <Compile Include="Controllers\AppDeviceManageController.cs" />
@@ -365,6 +378,8 @@
     <Compile Include="Models\AlreadyScheduling.cs" />
     <Compile Include="Models\AnDnDate.cs" />
     <Compile Include="Models\AppDevicecCheck.cs" />
+    <Compile Include="Models\AppLabCode.cs" />
+    <Compile Include="Models\AppScheduleKanban.cs" />
     <Compile Include="Models\APSList.cs" />
     <Compile Include="Models\BomSub.cs" />
     <Compile Include="Models\CapacityPlanSect.cs" />
@@ -389,7 +404,9 @@
     <Compile Include="Models\Uom.cs" />
     <Compile Include="Models\User.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Tools\AppLableBarCode.cs" />
     <Compile Include="Tools\ChannelActionFilterAttribute.cs" />
+    <Compile Include="Tools\ChannelActionFilterAttributeApp.cs" />
     <Compile Include="Tools\DALSkillCondition.cs" />
     <Compile Include="Tools\DapperHelper.cs" />
     <Compile Include="Tools\DataOperator.cs" />
diff --git a/VueWebApi/VueWebApi.csproj.user b/VueWebApi/VueWebApi.csproj.user
index 8b44de6..387c7cf 100644
--- a/VueWebApi/VueWebApi.csproj.user
+++ b/VueWebApi/VueWebApi.csproj.user
@@ -10,7 +10,7 @@
     <UseGlobalApplicationHostFile />
     <LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
     <NameOfLastUsedPublishProfile>D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\Properties\PublishProfiles\FolderProfile1.pubxml</NameOfLastUsedPublishProfile>
-    <ProjectView>ProjectFiles</ProjectView>
+    <ProjectView>ShowAllFiles</ProjectView>
     <Controller_SelectedScaffolderID>ApiControllerEmptyScaffolder</Controller_SelectedScaffolderID>
     <Controller_SelectedScaffolderCategoryPath>root/Common/Web API</Controller_SelectedScaffolderCategoryPath>
     <WebStackScaffolding_ControllerDialogWidth>600</WebStackScaffolding_ControllerDialogWidth>
diff --git a/VueWebApi/bin/VueWebApi.dll b/VueWebApi/bin/VueWebApi.dll
index ec81155..82a1f26 100644
--- a/VueWebApi/bin/VueWebApi.dll
+++ b/VueWebApi/bin/VueWebApi.dll
Binary files differ
diff --git a/VueWebApi/bin/VueWebApi.pdb b/VueWebApi/bin/VueWebApi.pdb
index 8f5d1ef..cf2e606 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 59bbce2..3e5d997 100644
--- a/VueWebApi/bin/VueWebApi.xml
+++ b/VueWebApi/bin/VueWebApi.xml
@@ -506,6 +506,202 @@
             </summary>
             <param name="documentPath">The physical path to XML document.</param>
         </member>
+        <member name="M:VueWebApi.Controllers.AppAnalyticsController.ProductionKanban(System.String,System.String,System.String)">
+            <summary>
+            App鐢熶骇鐪嬫澘
+            </summary>
+            <param name="usercode">鐧诲綍浜哄憳</param>
+            <param name="Ratetime">鏃堕棿</param>
+            <param name="defecttype">缂洪櫡缁熻绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppAnalyticsController.ProductionScheduleKanban(System.String,System.String,System.String)">
+            <summary>
+            App鐢熶骇杩涘害鐪嬫澘鍗曟嵁淇℃伅
+            </summary>
+            <param name="ordertype">鍗曟嵁绫诲瀷(SO:閿�鍞鍗曘�丮O:鐢熶骇璁㈠崟銆丳O:鐢熶骇宸ュ崟)</param>
+            <param name="partcode">浜у搧淇℃伅(鍙涓�)</param>
+            <param name="Ratetime">鍗曟嵁鏃ユ湡鑼冨洿</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppPersonalController.PieceRateWage(System.String,System.String,System.String)">
+            <summary>
+            App涓汉璁′欢宸ヨ祫
+            </summary>
+            <param name="compute">璁$畻鏂瑰紡:鏈亾璁$畻銆侀�愰亾璁$畻</param>
+            <param name="usercode">鐧诲綍浜哄憳</param>
+            <param name="Ratetime">鏃堕棿</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepStart(System.String,System.String,System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氬紑宸�(寮�濮�/鎶ュ伐)/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+            </summary>
+            <param name="OperType">鎿嶄綔绫诲瀷锛氳嚜鍒�(ZZ)/澶栧崗(WX)</param>
+            <param name="SelectType">鎿嶄綔绫诲瀷锛氬鍗忓彂鏂欐爣璇�(OUT)/澶栧崗鏀舵枡鏍囪瘑(IN)</param>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepStartSelectEqp(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氬紑宸ユ椂鑾峰彇璁惧涓嬫媺鍒楄〃
+            </summary>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepReportSelectUserGroup">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氭姤宸ユ椂鑾峰彇鐢熶骇鐝粍涓嬫媺妗�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderGroupSelectUser(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氭牴鎹敓浜х彮缁勬煡鎵句汉鍛樺垪琛�
+            </summary>
+            <param name="usergroupcode">鐝粍缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderSelectUser(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氫汉鍛樹笅鎷夊垪琛�
+            </summary>
+            <param name="usercode">浜哄憳缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepSelectWX(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氬彂鏂�/鏀舵枡鏃惰幏鍙栧鍗忎笅鎷夊垪琛�
+            </summary>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepSelectCause(System.String)">
+            <summary>
+            鐢熶骇鎶ュ伐锛氭姤宸�/澶栧崗鏀舵枡 鑾峰彇涓嶈壇鍘熷洜涓嬫媺鍒楄〃
+            </summary>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepStart">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,寮�宸ユ彁浜�
+            </summary>
+            <param name="obj">寮�宸ユ彁浜ゆ暟鎹�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepReport">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦
+            </summary>
+            <param name="obj">鎶ュ伐鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepOut">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,鍙戞枡鎻愪氦
+            </summary>
+            <param name="obj">鍙戞枡鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepIn">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,鏀舵枡鎻愪氦
+            </summary>
+            <param name="obj">鏀舵枡鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.InFactoryCheckScanLabCode(System.String)">
+            <summary>
+            鍏ュ巶妫�楠�,鎵弿閲囪喘鍒拌揣鐢熸垚鏍囩
+            </summary>
+            <param name="labcode">閲囪喘鍒拌揣鐢熸垚鏍囩</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.InFactoryCheckItem(System.String)">
+            <summary>
+            鍏ュ巶妫�楠�,鏍规嵁閫夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
+            </summary>
+            <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.InFactoryCheckSave">
+            <summary>
+            鍏ュ巶妫�楠�,鎻愪氦
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.StepCheckSearch(System.String,System.String)">
+            <summary>
+            宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+            </summary>
+            <param name="orderstepqrcode">鎵弿宸ュ簭浜岀淮鐮佷俊鎭�</param>
+            <param name="checktype">妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.StepCheckItemList(System.String)">
+            <summary>
+            鍏ュ巶妫�楠�,宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
+            </summary>
+            <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.SaveStepCheckItem">
+            <summary>
+            宸ュ簭妫�楠�,鎻愪氦
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.PurchSupplierSelect">
+            <summary>
+            閲囪喘渚涙柟淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.DepartMentSelect">
+            <summary>
+            閮ㄩ棬淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.StoreHouseSearch">
+            <summary>
+            浠撳簱淇℃伅鏌ヨ
+            </summary>
+            <returns>StoreHouseSearch</returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.WarehouseLocationSearch">
+            <summary>
+            搴撲綅淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.WarehouseLocationSearchStoreHouse(System.String)">
+            <summary>
+            搴撲綅鏌ヨ浠撳簱
+            </summary>
+            <param name="locationcode">搴撲綅缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.UnitSerch">
+            <summary>
+            鍗曚綅淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.QualityScheme">
+            <summary>
+            璐ㄦ鏂规淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.InventorySelect(System.String)">
+            <summary>
+            瀛樿揣鏌ヨ
+            </summary>
+            <param name="param">瀛樿揣淇℃伅</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.ReportManagerController.OutSourceReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             濮斿鎶ヨ〃璁板綍鏌ヨ
@@ -689,6 +885,38 @@
             <param name="defectname">缂洪櫡鍚嶇О</param>
             <param name="repairname">缁翠慨浜哄憳</param>
             <param name="repairdate">缁翠慨鏃堕棿</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.ReportManagerController.ProductionScheduleReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            鐢熶骇杩涘害鎶ヨ〃
+            </summary>
+            <param name="status">宸ュ崟鐘舵��</param>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="routecode">宸ヨ壓璺嚎缂栫爜</param>
+            <param name="routename">宸ヨ壓璺嚎鍚嶇О</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partspec">瑙勬牸鍨嬪彿</param>
+            <param name="lm_date">鍗曟嵁鏃ユ湡</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.ReportManagerController.ProductionScheduleReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            鐢熶骇杩涘害鎶ヨ〃瀵煎嚭
+            </summary>
+            <param name="status">宸ュ崟鐘舵��</param>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="routecode">宸ヨ壓璺嚎缂栫爜</param>
+            <param name="routename">宸ヨ壓璺嚎鍚嶇О</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partspec">瑙勬牸鍨嬪彿</param>
+            <param name="lm_date">鍗曟嵁鏃ユ湡</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.SendController.GetConnect(System.String)">
@@ -2016,6 +2244,12 @@
             <param name="wkshopcode">杞﹂棿缂栫爜</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.AddMesOrderCodeSearch">
+            <summary>
+            MES宸ュ崟鏂板銆佽幏鍙栧伐鍗曞彿
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.AddUpdateMesOrder(Newtonsoft.Json.Linq.JObject)">
             <summary>
             MES宸ュ崟鏂板銆佺紪杈戞彁浜�
@@ -2174,31 +2408,25 @@
             <param name="json">鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckSearch(System.String)">
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckSearch(System.String,System.String)">
             <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+            宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
             </summary>
-            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
-            <returns></returns>
-        </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckSelect">
-            <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁
-            </summary>
+            <param name="orderstepqrcode">鎵弿宸ュ簭浜岀淮鐮佷俊鎭�</param>
+            <param name="checktype">妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckItemList(System.String)">
             <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛�
+            鍏ュ巶妫�楠�,宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
             </summary>
-            <param name="checkstandcode">妫�楠屾爣鍑嗙紪鐮�</param>
+            <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.SaveMesOrderStepCheckItem(Newtonsoft.Json.Linq.JObject)">
             <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛�
+            宸ュ簭妫�楠�,鎻愪氦
             </summary>
-            <param name="obj">鎻愪氦淇℃伅</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderBitchClosedSearch(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)">
@@ -2782,6 +3010,43 @@
             <param name="order">鎺掑簭瑙勫垯</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.QualityInspectionSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+            <summary>
+            璐ㄦ鏂规鍒楄〃鏌ヨ
+            </summary>
+            <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+            <param name="qualityinsptname">璐ㄦ鏂规鍚嶇О</param>
+            <param name="status">鏈夋晥鐘舵��</param>
+            <param name="checktype">璐ㄦ绫诲瀷</param>
+            <param name="sampltype">鎶芥牱鏂瑰紡</param>
+            <param name="suitobject">閫傜敤瀵硅薄</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.QualityInspectionSeeEdit(System.String)">
+            <summary>
+            璐ㄦ鏂规鏌ョ湅缂栬緫
+            </summary>
+            <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.QualityInspectionAddEditSave(Newtonsoft.Json.Linq.JObject)">
+            <summary>
+            璐ㄦ鏂规鏂板/缂栬緫鎻愪氦
+            </summary>
+            <param name="obj">鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.QualityInspectionDelete(System.String)">
+            <summary>
+            璐ㄦ鏂规鍒犻櫎
+            </summary>
+            <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             缂栫爜瑙勫垯鏌ヨ
@@ -2806,6 +3071,16 @@
             鑾峰彇瑙勫垯鐢熸垚鐨勭紪鐮�
             </summary>
             <param name="rightcode">鍔熻兘缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.SystemSettingController.LabelBarCode(System.String,System.String,System.String,System.String)">
+            <summary>
+            鐢熸垚绯荤粺鏉$爜(鑷畾涔�)
+            </summary>
+            <param name="rightcode">鍔熻兘缂栫爜</param>
+            <param name="partcode">鐗╂枡缂栫爜</param>
+            <param name="qty">鏁伴噺</param>
+            <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.SystemSettingController.SystemAnnouncementSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
@@ -2929,6 +3204,92 @@
             娉ㄥ唽Session
             </summary>
         </member>
+        <member name="P:VueWebApi.Models.AppLabCode.rightcode">
+            <summary>
+            鍔熻兘缂栫爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppLabCode.labcode">
+            <summary>
+            鏍囩鏉$爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppLabCode.labqty">
+            <summary>
+            鏍囩鏁伴噺
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppLabCode.partnumber">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.ordercode">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.orderqty">
+            <summary>
+            鍗曟嵁鏁伴噺
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.ordergoodqty">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.partcode">
+            <summary>
+            浜у搧缂栫爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.partname">
+            <summary>
+            浜у搧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.partspec">
+            <summary>
+            浜у搧瑙勬牸
+            </summary>
+        </member>
+        <member name="M:VueWebApi.Tools.AppLableBarCode.EncodingSeach(System.String,System.String,System.String,System.String)">
+            <summary>
+            鏍规嵁鍔熻兘缂栫爜鑾峰彇鏈�鏂拌鍒欑紪鐮�
+            </summary>
+            <param name="rightcode">鍔熻兘缂栫爜</param>
+            <param name="partcode">鐗╂枡缂栫爜</param>
+            <param name="qty">鏁伴噺</param>
+            <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Tools.AppLableBarCode.Labcode(System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.Decimal,System.Decimal,System.String,System.String,System.String,System.String@)">
+            <summary>
+            鐢熸垚鏉$爜
+            </summary>
+            <param name="partcode">鐗╂枡缂栫爜</param>
+            <param name="year">骞�</param>
+            <param name="month">鏈�</param>
+            <param name="day">鏃�</param>
+            <param name="prefix">鍥哄畾瀛楁</param>
+            <param name="fdate">骞�(2浣�)+鏈�(2浣�)+鏃�(2浣�)</param>
+            <param name="digit2">娴佹按鍙烽暱搴�</param>
+            <param name="value2">鑷娴佹按鍙�</param>
+            <param name="digit3">鑷娴佹按鍙烽暱搴�</param>
+            <param name="digitdiff">浣嶆暟宸�</param>
+            <param name="q">琛ヤ綅(0)</param>
+            <param name="cunm2">鏈�缁堟祦姘村彿(鍖呭惈琛ヤ綅)</param>
+            <param name="Encode">鏈�缁堟爣绛剧爜(鍥哄畾瀛楁+瑙勫垯+鏈�缁堟祦姘村彿)</param>
+            <param name="value">鍒濆鏌ヨ鏈�鏂版祦姘村彿</param>
+            <param name="labcum">鏍囩涓暟</param>
+            <param name="sumqty">绱鍗曟爣绛炬暟閲�</param>
+            <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+            <param name="rightcode">鍔熻兘缂栫爜</param>
+            <param name="qty">鏁伴噺</param>
+            <param name="cunm">杈撳嚭鏈�缁堟祦姘村彿</param>
+            <returns></returns>
+        </member>
         <member name="T:VueWebApi.Tools.ChannelActionFilterAttribute">
             <summary>
             娓犻亾杩囨护鍣�
@@ -2940,6 +3301,17 @@
             </summary>
             <param name="actionContext"></param>
         </member>
+        <member name="T:VueWebApi.Tools.ChannelActionFilterAttributeApp">
+            <summary>
+            娓犻亾杩囨护鍣�
+            </summary>
+        </member>
+        <member name="M:VueWebApi.Tools.ChannelActionFilterAttributeApp.OnActionExecuting(System.Web.Http.Controllers.HttpActionContext)">
+            <summary>
+            璇锋眰鎺ュ彛涔嬪墠娓犻亾杩囨护
+            </summary>
+            <param name="actionContext"></param>
+        </member>
         <member name="M:VueWebApi.Tools.DALSkillCondition.ResultExcel(System.String,System.Data.DataTable)">
             <summary>
             涓嬭浇excel
diff --git a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.dll b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.dll
index ec81155..82a1f26 100644
--- a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.dll
+++ b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.dll
Binary files differ
diff --git a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.pdb
index 8f5d1ef..cf2e606 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 59bbce2..3e5d997 100644
--- a/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
+++ b/VueWebApi/obj/Release/Package/PackageTmp/bin/VueWebApi.xml
@@ -506,6 +506,202 @@
             </summary>
             <param name="documentPath">The physical path to XML document.</param>
         </member>
+        <member name="M:VueWebApi.Controllers.AppAnalyticsController.ProductionKanban(System.String,System.String,System.String)">
+            <summary>
+            App鐢熶骇鐪嬫澘
+            </summary>
+            <param name="usercode">鐧诲綍浜哄憳</param>
+            <param name="Ratetime">鏃堕棿</param>
+            <param name="defecttype">缂洪櫡缁熻绫诲瀷</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppAnalyticsController.ProductionScheduleKanban(System.String,System.String,System.String)">
+            <summary>
+            App鐢熶骇杩涘害鐪嬫澘鍗曟嵁淇℃伅
+            </summary>
+            <param name="ordertype">鍗曟嵁绫诲瀷(SO:閿�鍞鍗曘�丮O:鐢熶骇璁㈠崟銆丳O:鐢熶骇宸ュ崟)</param>
+            <param name="partcode">浜у搧淇℃伅(鍙涓�)</param>
+            <param name="Ratetime">鍗曟嵁鏃ユ湡鑼冨洿</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppPersonalController.PieceRateWage(System.String,System.String,System.String)">
+            <summary>
+            App涓汉璁′欢宸ヨ祫
+            </summary>
+            <param name="compute">璁$畻鏂瑰紡:鏈亾璁$畻銆侀�愰亾璁$畻</param>
+            <param name="usercode">鐧诲綍浜哄憳</param>
+            <param name="Ratetime">鏃堕棿</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepStart(System.String,System.String,System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氬紑宸�(寮�濮�/鎶ュ伐)/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+            </summary>
+            <param name="OperType">鎿嶄綔绫诲瀷锛氳嚜鍒�(ZZ)/澶栧崗(WX)</param>
+            <param name="SelectType">鎿嶄綔绫诲瀷锛氬鍗忓彂鏂欐爣璇�(OUT)/澶栧崗鏀舵枡鏍囪瘑(IN)</param>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepStartSelectEqp(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氬紑宸ユ椂鑾峰彇璁惧涓嬫媺鍒楄〃
+            </summary>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepReportSelectUserGroup">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氭姤宸ユ椂鑾峰彇鐢熶骇鐝粍涓嬫媺妗�
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderGroupSelectUser(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氭牴鎹敓浜х彮缁勬煡鎵句汉鍛樺垪琛�
+            </summary>
+            <param name="usergroupcode">鐝粍缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderSelectUser(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氫汉鍛樹笅鎷夊垪琛�
+            </summary>
+            <param name="usercode">浜哄憳缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepSelectWX(System.String)">
+            <summary>
+            鐢熶骇寮�鎶ュ伐锛氬彂鏂�/鏀舵枡鏃惰幏鍙栧鍗忎笅鎷夊垪琛�
+            </summary>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.MesOrderStepSelectCause(System.String)">
+            <summary>
+            鐢熶骇鎶ュ伐锛氭姤宸�/澶栧崗鏀舵枡 鑾峰彇涓嶈壇鍘熷洜涓嬫媺鍒楄〃
+            </summary>
+            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepStart">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,寮�宸ユ彁浜�
+            </summary>
+            <param name="obj">寮�宸ユ彁浜ゆ暟鎹�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepReport">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦
+            </summary>
+            <param name="obj">鎶ュ伐鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepOut">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,鍙戞枡鎻愪氦
+            </summary>
+            <param name="obj">鍙戞枡鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppProductionManagementController.SavaMesOrderStepIn">
+            <summary>
+            鐢熶骇寮�鎶ュ伐,鏀舵枡鎻愪氦
+            </summary>
+            <param name="obj">鏀舵枡鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.InFactoryCheckScanLabCode(System.String)">
+            <summary>
+            鍏ュ巶妫�楠�,鎵弿閲囪喘鍒拌揣鐢熸垚鏍囩
+            </summary>
+            <param name="labcode">閲囪喘鍒拌揣鐢熸垚鏍囩</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.InFactoryCheckItem(System.String)">
+            <summary>
+            鍏ュ巶妫�楠�,鏍规嵁閫夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
+            </summary>
+            <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.InFactoryCheckSave">
+            <summary>
+            鍏ュ巶妫�楠�,鎻愪氦
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.StepCheckSearch(System.String,System.String)">
+            <summary>
+            宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+            </summary>
+            <param name="orderstepqrcode">鎵弿宸ュ簭浜岀淮鐮佷俊鎭�</param>
+            <param name="checktype">妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.StepCheckItemList(System.String)">
+            <summary>
+            鍏ュ巶妫�楠�,宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
+            </summary>
+            <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.AppQualityManagementController.SaveStepCheckItem">
+            <summary>
+            宸ュ簭妫�楠�,鎻愪氦
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.PurchSupplierSelect">
+            <summary>
+            閲囪喘渚涙柟淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.DepartMentSelect">
+            <summary>
+            閮ㄩ棬淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.StoreHouseSearch">
+            <summary>
+            浠撳簱淇℃伅鏌ヨ
+            </summary>
+            <returns>StoreHouseSearch</returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.WarehouseLocationSearch">
+            <summary>
+            搴撲綅淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.WarehouseLocationSearchStoreHouse(System.String)">
+            <summary>
+            搴撲綅鏌ヨ浠撳簱
+            </summary>
+            <param name="locationcode">搴撲綅缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.UnitSerch">
+            <summary>
+            鍗曚綅淇℃伅鏌ヨ
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.QualityScheme">
+            <summary>
+            璐ㄦ鏂规淇℃伅
+            </summary>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.BaseDateController.InventorySelect(System.String)">
+            <summary>
+            瀛樿揣鏌ヨ
+            </summary>
+            <param name="param">瀛樿揣淇℃伅</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.ReportManagerController.OutSourceReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
             <summary>
             濮斿鎶ヨ〃璁板綍鏌ヨ
@@ -689,6 +885,38 @@
             <param name="defectname">缂洪櫡鍚嶇О</param>
             <param name="repairname">缁翠慨浜哄憳</param>
             <param name="repairdate">缁翠慨鏃堕棿</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.ReportManagerController.ProductionScheduleReportSearch(System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            鐢熶骇杩涘害鎶ヨ〃
+            </summary>
+            <param name="status">宸ュ崟鐘舵��</param>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="routecode">宸ヨ壓璺嚎缂栫爜</param>
+            <param name="routename">宸ヨ壓璺嚎鍚嶇О</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partspec">瑙勬牸鍨嬪彿</param>
+            <param name="lm_date">鍗曟嵁鏃ユ湡</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.ReportManagerController.ProductionScheduleReportExcelSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.String)">
+            <summary>
+            鐢熶骇杩涘害鎶ヨ〃瀵煎嚭
+            </summary>
+            <param name="status">宸ュ崟鐘舵��</param>
+            <param name="wocode">宸ュ崟缂栧彿</param>
+            <param name="routecode">宸ヨ壓璺嚎缂栫爜</param>
+            <param name="routename">宸ヨ壓璺嚎鍚嶇О</param>
+            <param name="partcode">浜у搧缂栫爜</param>
+            <param name="partname">浜у搧鍚嶇О</param>
+            <param name="partspec">瑙勬牸鍨嬪彿</param>
+            <param name="lm_date">鍗曟嵁鏃ユ湡</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.SendController.GetConnect(System.String)">
@@ -2016,6 +2244,12 @@
             <param name="wkshopcode">杞﹂棿缂栫爜</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.AddMesOrderCodeSearch">
+            <summary>
+            MES宸ュ崟鏂板銆佽幏鍙栧伐鍗曞彿
+            </summary>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.AddUpdateMesOrder(Newtonsoft.Json.Linq.JObject)">
             <summary>
             MES宸ュ崟鏂板銆佺紪杈戞彁浜�
@@ -2174,31 +2408,25 @@
             <param name="json">鎻愪氦鏁版嵁</param>
             <returns></returns>
         </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckSearch(System.String)">
+        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckSearch(System.String,System.String)">
             <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+            宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
             </summary>
-            <param name="orderstepqrcode">鎵弿浜岀淮鐮佷俊鎭�</param>
-            <returns></returns>
-        </member>
-        <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckSelect">
-            <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁
-            </summary>
+            <param name="orderstepqrcode">鎵弿宸ュ簭浜岀淮鐮佷俊鎭�</param>
+            <param name="checktype">妫�楠屾柟寮廎irstCheck锛堥妫�锛� PatroCheck(宸℃)  EndCheck(瀹屽伐妫�)</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderStepCheckItemList(System.String)">
             <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛�
+            鍏ュ巶妫�楠�,宸ュ簭妫�楠屾牴鎹�夋嫨鐨勬楠屾柟妗堟煡鎵炬楠岄」鐩�
             </summary>
-            <param name="checkstandcode">妫�楠屾爣鍑嗙紪鐮�</param>
+            <param name="checkstandcode">妫�楠屾柟妗堢紪鐮�</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.SaveMesOrderStepCheckItem(Newtonsoft.Json.Linq.JObject)">
             <summary>
-            鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛�
+            宸ュ簭妫�楠�,鎻愪氦
             </summary>
-            <param name="obj">鎻愪氦淇℃伅</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.ProductionManagementController.MesOrderBitchClosedSearch(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)">
@@ -2782,6 +3010,43 @@
             <param name="order">鎺掑簭瑙勫垯</param>
             <returns></returns>
         </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.QualityInspectionSearch(System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
+            <summary>
+            璐ㄦ鏂规鍒楄〃鏌ヨ
+            </summary>
+            <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+            <param name="qualityinsptname">璐ㄦ鏂规鍚嶇О</param>
+            <param name="status">鏈夋晥鐘舵��</param>
+            <param name="checktype">璐ㄦ绫诲瀷</param>
+            <param name="sampltype">鎶芥牱鏂瑰紡</param>
+            <param name="suitobject">閫傜敤瀵硅薄</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.QualityInspectionSeeEdit(System.String)">
+            <summary>
+            璐ㄦ鏂规鏌ョ湅缂栬緫
+            </summary>
+            <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.QualityInspectionAddEditSave(Newtonsoft.Json.Linq.JObject)">
+            <summary>
+            璐ㄦ鏂规鏂板/缂栬緫鎻愪氦
+            </summary>
+            <param name="obj">鎻愪氦鏁版嵁</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.QualityManagementController.QualityInspectionDelete(System.String)">
+            <summary>
+            璐ㄦ鏂规鍒犻櫎
+            </summary>
+            <param name="qualityinsptcode">璐ㄦ鏂规缂栫爜</param>
+            <returns></returns>
+        </member>
         <member name="M:VueWebApi.Controllers.SystemSettingController.EncodingRules(System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
             <summary>
             缂栫爜瑙勫垯鏌ヨ
@@ -2806,6 +3071,16 @@
             鑾峰彇瑙勫垯鐢熸垚鐨勭紪鐮�
             </summary>
             <param name="rightcode">鍔熻兘缂栫爜</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Controllers.SystemSettingController.LabelBarCode(System.String,System.String,System.String,System.String)">
+            <summary>
+            鐢熸垚绯荤粺鏉$爜(鑷畾涔�)
+            </summary>
+            <param name="rightcode">鍔熻兘缂栫爜</param>
+            <param name="partcode">鐗╂枡缂栫爜</param>
+            <param name="qty">鏁伴噺</param>
+            <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
             <returns></returns>
         </member>
         <member name="M:VueWebApi.Controllers.SystemSettingController.SystemAnnouncementSearch(System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.String,System.String)">
@@ -2929,6 +3204,92 @@
             娉ㄥ唽Session
             </summary>
         </member>
+        <member name="P:VueWebApi.Models.AppLabCode.rightcode">
+            <summary>
+            鍔熻兘缂栫爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppLabCode.labcode">
+            <summary>
+            鏍囩鏉$爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppLabCode.labqty">
+            <summary>
+            鏍囩鏁伴噺
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppLabCode.partnumber">
+            <summary>
+            鐗╂枡缂栫爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.ordercode">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.orderqty">
+            <summary>
+            鍗曟嵁鏁伴噺
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.ordergoodqty">
+            <summary>
+            鍗曟嵁缂栧彿
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.partcode">
+            <summary>
+            浜у搧缂栫爜
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.partname">
+            <summary>
+            浜у搧鍚嶇О
+            </summary>
+        </member>
+        <member name="P:VueWebApi.Models.AppScheduleKanban.partspec">
+            <summary>
+            浜у搧瑙勬牸
+            </summary>
+        </member>
+        <member name="M:VueWebApi.Tools.AppLableBarCode.EncodingSeach(System.String,System.String,System.String,System.String)">
+            <summary>
+            鏍规嵁鍔熻兘缂栫爜鑾峰彇鏈�鏂拌鍒欑紪鐮�
+            </summary>
+            <param name="rightcode">鍔熻兘缂栫爜</param>
+            <param name="partcode">鐗╂枡缂栫爜</param>
+            <param name="qty">鏁伴噺</param>
+            <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+            <returns></returns>
+        </member>
+        <member name="M:VueWebApi.Tools.AppLableBarCode.Labcode(System.String,System.String,System.String,System.String,System.String,System.String,System.Int32,System.Int32,System.Int32,System.Int32,System.String,System.String,System.String,System.String,System.Decimal,System.Decimal,System.String,System.String,System.String,System.String@)">
+            <summary>
+            鐢熸垚鏉$爜
+            </summary>
+            <param name="partcode">鐗╂枡缂栫爜</param>
+            <param name="year">骞�</param>
+            <param name="month">鏈�</param>
+            <param name="day">鏃�</param>
+            <param name="prefix">鍥哄畾瀛楁</param>
+            <param name="fdate">骞�(2浣�)+鏈�(2浣�)+鏃�(2浣�)</param>
+            <param name="digit2">娴佹按鍙烽暱搴�</param>
+            <param name="value2">鑷娴佹按鍙�</param>
+            <param name="digit3">鑷娴佹按鍙烽暱搴�</param>
+            <param name="digitdiff">浣嶆暟宸�</param>
+            <param name="q">琛ヤ綅(0)</param>
+            <param name="cunm2">鏈�缁堟祦姘村彿(鍖呭惈琛ヤ綅)</param>
+            <param name="Encode">鏈�缁堟爣绛剧爜(鍥哄畾瀛楁+瑙勫垯+鏈�缁堟祦姘村彿)</param>
+            <param name="value">鍒濆鏌ヨ鏈�鏂版祦姘村彿</param>
+            <param name="labcum">鏍囩涓暟</param>
+            <param name="sumqty">绱鍗曟爣绛炬暟閲�</param>
+            <param name="onelabqty">鍗曟爣绛炬暟閲�</param>
+            <param name="rightcode">鍔熻兘缂栫爜</param>
+            <param name="qty">鏁伴噺</param>
+            <param name="cunm">杈撳嚭鏈�缁堟祦姘村彿</param>
+            <returns></returns>
+        </member>
         <member name="T:VueWebApi.Tools.ChannelActionFilterAttribute">
             <summary>
             娓犻亾杩囨护鍣�
@@ -2940,6 +3301,17 @@
             </summary>
             <param name="actionContext"></param>
         </member>
+        <member name="T:VueWebApi.Tools.ChannelActionFilterAttributeApp">
+            <summary>
+            娓犻亾杩囨护鍣�
+            </summary>
+        </member>
+        <member name="M:VueWebApi.Tools.ChannelActionFilterAttributeApp.OnActionExecuting(System.Web.Http.Controllers.HttpActionContext)">
+            <summary>
+            璇锋眰鎺ュ彛涔嬪墠娓犻亾杩囨护
+            </summary>
+            <param name="actionContext"></param>
+        </member>
         <member name="M:VueWebApi.Tools.DALSkillCondition.ResultExcel(System.String,System.Data.DataTable)">
             <summary>
             涓嬭浇excel
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 c0c81a3..8eb305e 100644
--- a/VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
+++ b/VueWebApi/obj/Release/VueWebApi.csproj.CoreCompileInputs.cache
@@ -1 +1 @@
-84c4fdafb5a7ab59842e3e3e48ca01e11b43f156
+ecd625ca9bc352246e3de4a380e092f4c64a44c5
diff --git a/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt b/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
index 83d83ba..3597e89 100644
--- a/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
+++ b/VueWebApi/obj/Release/VueWebApi.csproj.FileListAbsolute.txt
@@ -845,7 +845,6 @@
 D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.resources.dll
 D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Deployment.resources.dll
 D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\bin\zh-Hans\System.Web.WebPages.Razor.resources.dll
-D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.AssemblyReference.cache
 D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CoreCompileInputs.cache
 D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\obj\Release\VueWebApi.csproj.CopyComplete
 D:\鏂板嚡杩狹ES\MES椤圭洰\MES瀵屽皵杈綷VueWebApi\VueWebApi\obj\Release\VueWebApi.dll
diff --git a/VueWebApi/obj/Release/VueWebApi.dll b/VueWebApi/obj/Release/VueWebApi.dll
index ec81155..82a1f26 100644
--- a/VueWebApi/obj/Release/VueWebApi.dll
+++ b/VueWebApi/obj/Release/VueWebApi.dll
Binary files differ
diff --git a/VueWebApi/obj/Release/VueWebApi.pdb b/VueWebApi/obj/Release/VueWebApi.pdb
index 8f5d1ef..cf2e606 100644
--- a/VueWebApi/obj/Release/VueWebApi.pdb
+++ b/VueWebApi/obj/Release/VueWebApi.pdb
Binary files differ

--
Gitblit v1.9.3