From 26f357e815683a453e84beda235adae31eece223 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期日, 08 十月 2023 17:54:03 +0800
Subject: [PATCH] 1.人员基础资料、班组基础资料接口 2.报工调整查询接口、报工调整获取不良记录接口、报工调整提交接口

---
 VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs             |   35 +
 VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs                    |   23 +
 VueWebCoreApi/Controllers/SystemSettingController.cs     |    4 
 VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs                    |  825 +++++++++++++++++++++++++++++++-------
 VueWebCoreApi/Models/UpdateReport/UpdateProductReport.cs |   46 ++
 VueWebCoreApi/Controllers/GeneralBasicDataController.cs  |   60 ++
 VueWebCoreApi/Tools/AppLableBarCode.cs                   |   18 
 VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs             |  126 ++++++
 VueWebCoreApi/Controllers/WorkOrderController.cs         |   73 +++
 VueWebCoreApi/Tools/ScanStartReport.cs                   |   40 +
 10 files changed, 1,067 insertions(+), 183 deletions(-)

diff --git a/VueWebCoreApi/Controllers/GeneralBasicDataController.cs b/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
index 2b2ba80..b56d142 100644
--- a/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
+++ b/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
@@ -73,6 +73,34 @@
         }
         #endregion
 
+        #region[浜哄憳鍩虹璧勬枡]
+        /// <summary>
+        /// 浜哄憳鍩虹璧勬枡
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "PersonPermissions")]
+        [HttpGet]
+        public JsonResult PersonPermissions()
+        {
+            mes = GeneralBasicDataBLL.PersonPermissions();
+            return Json(mes);
+        }
+        #endregion
+
+        #region[鐝粍鏌ユ壘浜哄憳鍩虹璧勬枡]
+        /// <summary>
+        /// 鐝粍鏌ユ壘浜哄憳鍩虹璧勬枡
+        /// </summary>
+        /// <param name="groupcode">鐝粍缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "GroupsPersonPermissions")]
+        [HttpGet]
+        public JsonResult GroupsPersonPermissions(string groupcode)
+        {
+            mes = GeneralBasicDataBLL.GroupsPersonPermissions(groupcode);
+            return Json(mes);
+        }
+        #endregion
 
         #region[鎸夐挳鍩虹璧勬枡]
         /// <summary>
@@ -131,6 +159,15 @@
         }
         #endregion
 
+        #region[璁惧鍩虹璧勬枡]
+        [Route(template: "EqpPermissions")]
+        [HttpGet]
+        public JsonResult EqpPermissions()
+        {
+            mes = GeneralBasicDataBLL.EqpPermissions();
+            return Json(mes);
+        }
+        #endregion
 
         #region[浠撳簱鍩虹璧勬枡]
         /// <summary>
@@ -160,5 +197,28 @@
         }
         #endregion
 
+        #region[缂洪櫡鍩虹璧勬枡]
+        [Route(template: "DefectPermissions")]
+        [HttpGet]
+        public JsonResult DefectPermissions()
+        {
+            mes = GeneralBasicDataBLL.DefectPermissions();
+            return Json(mes);
+        }
+        #endregion
+
+        #region[寰�鏉ュ崟浣嶅熀纭�璧勬枡]
+        /// <summary>
+        /// 寰�鏉ュ崟浣嶅熀纭�璧勬枡
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "CustomerPermissions")]
+        [HttpGet]
+        public JsonResult CustomerPermissions()
+        {
+            mes = GeneralBasicDataBLL.CustomerPermissions();
+            return Json(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/Controllers/SystemSettingController.cs b/VueWebCoreApi/Controllers/SystemSettingController.cs
index c0d1376..fa5384d 100644
--- a/VueWebCoreApi/Controllers/SystemSettingController.cs
+++ b/VueWebCoreApi/Controllers/SystemSettingController.cs
@@ -142,9 +142,9 @@
         }
         #endregion
 
-        #region[鐢熸垚鐗╂枡鏍囩鏉$爜(姣忔鑾峰彇鏈�鏂�,App鍙娇鐢�)]
+        #region[鐢熸垚绯荤粺鏉$爜(鑷畾涔�),鐢熸垚鐗╂枡鏍囩鏉$爜(姣忔鑾峰彇鏈�鏂�,App鍙娇鐢�)]
         /// <summary>
-        /// 鐢熸垚鐗╂枡鏍囩鏉$爜(姣忔鑾峰彇鏈�鏂�,App鍙娇鐢�)
+        /// 鐢熸垚绯荤粺鏉$爜(鑷畾涔�),鐢熸垚鐗╂枡鏍囩鏉$爜(姣忔鑾峰彇鏈�鏂�,App鍙娇鐢�)
         /// </summary>
         /// <param name="rightcode">鍔熻兘缂栫爜</param>
         /// <param name="partcode">鐗╂枡缂栫爜</param>
diff --git a/VueWebCoreApi/Controllers/WorkOrderController.cs b/VueWebCoreApi/Controllers/WorkOrderController.cs
index 9d0523c..188fe8e 100644
--- a/VueWebCoreApi/Controllers/WorkOrderController.cs
+++ b/VueWebCoreApi/Controllers/WorkOrderController.cs
@@ -8,6 +8,7 @@
 using System.Threading.Tasks;
 using VueWebCoreApi.DLL.BLL;
 using VueWebCoreApi.Models;
+using VueWebCoreApi.Models.UpdateReport;
 using VueWebCoreApi.Models.WorkData;
 using VueWebCoreApi.Tools;
 
@@ -550,5 +551,77 @@
             return Json(mes);
         }
         #endregion
+
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鍒楄〃鏁版嵁鏌ヨ鎺ュ彛]
+        /// <summary>
+        /// 鐢熶骇鎵ц,鎶ュ伐璋冩暣鍒楄〃鏁版嵁鏌ヨ鎺ュ彛
+        /// </summary>
+        /// <param name="wo_code">宸ュ崟缂栧彿</param>
+        /// <param name="partnumber">浜у搧缂栫爜</param>
+        /// <param name="partname">浜у搧鍚嶇О</param>
+        /// <param name="partspec">浜у搧瑙勬牸</param>
+        /// <param name="reportuser">鎶ュ伐浜哄憳</param>
+        /// <param name="reportdate">鎶ュ伐鏃堕棿</param>
+        /// <param name="page">椤电爜</param>
+        /// <param name="rows">姣忛〉鏉℃暟</param>
+        /// <param name="prop">鎺掑簭瀛楁</param>
+        /// <param name="order">鎺掑簭瑙勫垯</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepVerifySearch")]
+        [HttpGet]
+        public JsonResult MesOrderStepVerifySearch(string wo_code = null, string partnumber = null, string partname = null, string partspec = null, string reportuser = null, string reportdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
+        {
+            string reportdateopendate = "";  //鎶ュ伐寮�濮嬫椂闂�
+            string reportdateclosedate = "";    //鎶ュ伐缁撴潫鏃堕棿
+            if (reportdate != "" && reportdate != null)
+            {
+                reportdateopendate = reportdate.Split('~')[0].ToString();
+                reportdateclosedate = reportdate.Split('~')[1].ToString();
+            }
+            int startNum = rows * (page - 1) + 1;  //璧峰璁板綍rowNum
+            int endNum = rows * page;   //缁撴潫璁板綍 rowNum
+            mes = WorkOrderBLL.MesOrderStepVerifySearch(wo_code, partnumber, partname, partspec, reportuser, reportdateopendate, reportdateclosedate, startNum, endNum, prop, order);
+            return Json(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鑾峰彇閫夊畾鎶ュ伐璁板綍鐨勪笉鑹暟鎹甝
+        /// <summary>
+        /// 鐢熶骇鎵ц,鎶ュ伐璋冩暣鑾峰彇閫夊畾鎶ュ伐璁板綍鐨勪笉鑹暟鎹�
+        /// </summary>
+        /// <param name="wo_code">宸ュ崟鍙�</param>
+        /// <param name="step_code">宸ュ簭鍙�</param>
+        /// <param name="step_type">宸ュ簭绫诲瀷(鑷埗:Z 澶栧崗:W)</param>
+        /// <param name="isbott">鏄惁棣栭亾宸ュ簭</param>
+        /// <param name="isend">鏄惁鏈亾宸ュ簭</param>
+        /// <param name="id">鎶ュ伐涓籭d</param>
+        /// <param name="sbid">鎶ュ伐瀛恑d</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepModelSearch")]
+        [HttpGet]
+        public JsonResult MesOrderStepModelSearch(string wo_code,string step_code,string step_type,string isbott,string isend,string id, string sbid)
+        {
+            mes = WorkOrderBLL.MesOrderStepModelSearch(wo_code, step_code, step_type, isbott, isend,id,sbid);
+            return Json(mes);
+        }
+        #endregion
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鏁版嵁鎻愪氦]
+        /// <summary>
+        /// 鐢熶骇鎵ц,鎶ュ伐璋冩暣鏁版嵁鎻愪氦
+        /// </summary>
+        /// <param name="json">鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "MesOrderStepUpdateSeave")]
+        [HttpPost]
+        public JsonResult MesOrderStepUpdateSeave(List<UpdateProductReport> json)
+        {
+            var token = HttpContext.Request.Headers["Token"].ToString();
+            User us = JwtTools.Denocode(token.ToString());
+            mes = WorkOrderBLL.MesOrderStepUpdateSeave(us, json);
+            return Json(mes);
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs b/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
index b1994bc..6873359 100644
--- a/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
+++ b/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
@@ -38,6 +38,20 @@
         }
         #endregion
 
+        #region[浜哄憳鍩虹璧勬枡]
+        public static ToMessage PersonPermissions()
+        {
+            return GeneralBasicDataDAL.PersonPermissions();
+        }
+        #endregion
+
+        #region[鐝粍鏌ユ壘浜哄憳鍩虹璧勬枡]
+        public static ToMessage GroupsPersonPermissions(string groupcode)
+        {
+            return GeneralBasicDataDAL.GroupsPersonPermissions(groupcode);
+        }
+        #endregion
+
         #region[鎸夐挳鍩虹璧勬枡]
         public static ToMessage ButtonData()
         {
@@ -67,6 +81,13 @@
         }
         #endregion
 
+        #region[璁惧鍩虹璧勬枡]
+        public static ToMessage EqpPermissions()
+        {
+            return GeneralBasicDataDAL.EqpPermissions();
+        }
+        #endregion
+
         #region[浠撳簱鍩虹璧勬枡]
         public static ToMessage WareHouse()
         {
@@ -80,5 +101,19 @@
             return GeneralBasicDataDAL.StepData();
         }
         #endregion
+
+        #region[缂洪櫡鍩虹璧勬枡]
+        public static ToMessage DefectPermissions()
+        {
+            return GeneralBasicDataDAL.DefectPermissions();
+        }
+        #endregion
+
+        #region[寰�鏉ュ崟浣嶅熀纭�璧勬枡]
+        public static ToMessage CustomerPermissions()
+        {
+            return GeneralBasicDataDAL.CustomerPermissions();
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs b/VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
index 54db46e..b891e4e 100644
--- a/VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
+++ b/VueWebCoreApi/DLL/BLL/WorkOrderBLL.cs
@@ -5,6 +5,7 @@
 using System.Threading.Tasks;
 using VueWebCoreApi.DLL.DAL;
 using VueWebCoreApi.Models;
+using VueWebCoreApi.Models.UpdateReport;
 using VueWebCoreApi.Models.WorkData;
 using VueWebCoreApi.Tools;
 
@@ -169,5 +170,27 @@
             return WorkOrderDAL.EditOrderNgStepSeave(json, us);
         }
         #endregion
+
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鏁版嵁鏌ヨ鎺ュ彛]
+        public static ToMessage MesOrderStepVerifySearch(string wo_code, string partnumber, string partname, string partspec, string reportuser, string reportdateopendate, string reportdateclosedate, int startNum, int endNum, string prop, string order)
+        {
+            return WorkOrderDAL.MesOrderStepVerifySearch(wo_code, partnumber, partname, partspec, reportuser, reportdateopendate, reportdateclosedate, startNum, endNum, prop, order);
+        }
+        #endregion
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鑾峰彇閫夊畾鎶ュ伐璁板綍鐨勪笉鑹暟鎹甝
+        public static ToMessage MesOrderStepModelSearch(string wo_code, string step_code, string step_type, string isbott, string isend, string id, string sbid)
+        {
+            return WorkOrderDAL.MesOrderStepModelSearch(wo_code, step_code, step_type, isbott, isend, id, sbid);
+        }
+        #endregion
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鏁版嵁鎻愪氦]
+        public static ToMessage MesOrderStepUpdateSeave(User us, List<UpdateProductReport> json)
+        {
+            return WorkOrderDAL.MesOrderStepUpdateSeave(us,json);
+        }
+        #endregion
     }
 }
diff --git a/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs b/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
index f3828f5..783980c 100644
--- a/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
@@ -122,6 +122,59 @@
         }
         #endregion
 
+        #region[浜哄憳鍩虹璧勬枡]
+        public static ToMessage PersonPermissions()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                sql = @"select usercode,username from TUser where  status='Y'";
+                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 GroupsPersonPermissions(string groupcode)
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select stuff((select ',' + usercode
+                        from (select usercode from TUser 
+                        where ',' + group_code + ',' LIKE @groupcode and status='Y') as A
+                        FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') AS usercode_list";
+                dynamicParams.Add("@groupcode", "%," + groupcode + ",%");
+                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 ButtonData()
         {
@@ -260,6 +313,31 @@
         }
         #endregion
 
+        #region[璁惧鍩虹璧勬枡]
+        public static ToMessage EqpPermissions()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                sql = @"select code,name from TEqpInfo where  enable='Y'";
+                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 WareHouse()
         {
@@ -310,5 +388,53 @@
         }
         #endregion
 
+        #region[缂洪櫡鍩虹璧勬枡]
+        public static ToMessage DefectPermissions()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                sql = @"select code,name from TDefect";
+                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 CustomerPermissions()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select code,name from TCustomer where status='0'";
+                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
     }
 }
diff --git a/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs b/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
index 73794b2..ee8f7cd 100644
--- a/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -7,6 +7,7 @@
 using System.Linq;
 using System.Threading.Tasks;
 using VueWebCoreApi.Models;
+using VueWebCoreApi.Models.UpdateReport;
 using VueWebCoreApi.Models.WorkData;
 using VueWebCoreApi.Tools;
 
@@ -1142,7 +1143,7 @@
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
 
-                    if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+                    if (ordercode != "" && (stepcode == null || stepcode == "")) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
                     {
                         search += "and A.wo_code=@ordercode ";
                         dynamicParams.Add("@ordercode", ordercode);
@@ -1189,7 +1190,7 @@
                     dynamicParams.Add("@partspec", partspec);
                 }
                 //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(鑷埗宸ュ簭)
-                sql = @"select A.status,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
+                sql = @"select A.id,A.status,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                         S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date
                         from TK_Wrk_Step A
                         left join TK_Wrk_Man B on A.wo_code=B.wo_code
@@ -1197,22 +1198,11 @@
                         left join TStep S on A.step_code=S.stepcode
                         where A.status in('ALLO','START') and S.flwtype='Z'  " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
-                if (data.ToList().Count > 0)
-                {
-                    mes.code = "200";
-                    mes.count = total;
-                    mes.Message = "鏌ヨ鎴愬姛!";
-                    mes.data = data.ToList();
-                    return mes;
-                }
-                else
-                {
-                    mes.code = "300";
-                    mes.count = 0;
-                    mes.Message = "鏃犲彲鎵ц鐨勭敓浜т换鍔�,浠诲姟宸插畬鎴愭垨宸插叧闂�!";
-                    mes.data = null;
-                    return mes;
-                }
+                mes.code = "200";
+                mes.count = total;
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.data = data.ToList();
+                return mes;
             }
             catch (Exception e)
             {
@@ -1249,7 +1239,7 @@
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
 
-                    if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+                    if (ordercode != "" && (stepcode == null || stepcode == "")) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
                     {
                         search += "and A.wo_code=@ordercode ";
                         dynamicParams.Add("@ordercode", ordercode);
@@ -1296,30 +1286,22 @@
                     dynamicParams.Add("@partspec", partspec);
                 }
                 //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(鑷埗宸ュ簭)
-                sql = @"select A.status,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
-                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
+                sql = @"select A.id,A.status,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
+                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,
+                        (select isnull(sum(fqty),0) as fqty   from TK_Wrk_OutRecord where wo_code=A.wo_code and step_code=A.step_code and style='F') as fqty,
+                        A.laborbad_qty,A.materielbad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
                         from TK_Wrk_Step A
                         left join TK_Wrk_Man B on A.wo_code=B.wo_code
                         left join TMateriel_Info M on B.materiel_code=M.partcode
                         left join TStep S on A.step_code=S.stepcode
                         where A.status in('ALLO','START') and S.flwtype='W'  " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
-                if (data.ToList().Count > 0)
-                {
-                    mes.code = "200";
-                    mes.count = total;
-                    mes.Message = "鏌ヨ鎴愬姛!";
-                    mes.data = data.ToList();
-                    return mes;
-                }
-                else
-                {
-                    mes.code = "300";
-                    mes.count = 0;
-                    mes.Message = "鏃犲彲鎵ц鐨勭敓浜т换鍔�,浠诲姟宸插畬鎴愭垨宸插叧闂�!";
-                    mes.data = null;
-                    return mes;
-                }
+                mes.code = "200";
+                mes.count = total;
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.data = data.ToList();
+                return mes;
+
             }
             catch (Exception e)
             {
@@ -1356,7 +1338,7 @@
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
 
-                    if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+                    if (ordercode != "" && (stepcode == null || stepcode == "")) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
                     {
                         search += "and A.wo_code=@ordercode ";
                         dynamicParams.Add("@ordercode", ordercode);
@@ -1401,7 +1383,7 @@
                     dynamicParams.Add("@partspec", partspec);
                 }
                 //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(鑷埗宸ュ簭)
-                sql = @"select A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isend,
+                sql = @"select A.id,A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isend,
                         S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.laborbad_qty,A.materielbad_qty,B.lm_date
                         from TK_Wrk_Step A
                         left join TK_Wrk_Man B on A.wo_code=B.wo_code
@@ -1409,22 +1391,11 @@
                         left join TStep S on A.step_code=S.stepcode
                         where A.status in('ALLO','START') and A.ng_qty>0  " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
-                if (data.ToList().Count > 0)
-                {
-                    mes.code = "200";
-                    mes.count = total;
-                    mes.Message = "鏌ヨ鎴愬姛!";
-                    mes.data = data.ToList();
-                    return mes;
-                }
-                else
-                {
-                    mes.code = "300";
-                    mes.count = 0;
-                    mes.Message = "鏃犲彲鎵ц鐨勭敓浜т换鍔�,浠诲姟宸插畬鎴愭垨宸插叧闂�!";
-                    mes.data = null;
-                    return mes;
-                }
+                mes.code = "200";
+                mes.count = total;
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.data = data.ToList();
+                return mes;
             }
             catch (Exception e)
             {
@@ -1545,7 +1516,7 @@
                         mes = ScanStartReport.ZZEncodingSeach(wocode, stepcode);
                         break;
                     case "WX":
-                        mes = ScanStartReport.WXEncodingSeach(SelectType, stepcode, stepcode);
+                        mes = ScanStartReport.WXEncodingSeach(SelectType, wocode, stepcode);
                         break;
                     default:
                         break;
@@ -1563,18 +1534,19 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦]
-        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode,string stepprice, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
+        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string stepprice, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, User us)
         {
             var sql = "";
             decimal ngqty = 0;
             string[] arra1 = new string[] { };
+            List<object> list0 = new List<object>();
             List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
             try
             {
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
                 //鑾峰彇鎶ュ伐浜哄憳銆佸垎閰嶆瘮渚�
-                JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(reportuser);
+                //JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(reportuser);
                 //鍒ゆ柇鏄惁鏈変笉鑹暟鎹�
                 var groupedItems = defectobjs.GroupBy(item => item.defect_code) // 鎸夌紪鐮乧ode鍒嗙粍
                         .Select(group => new { defect_code = group.Key, badqty = group.Sum(item => Convert.ToDecimal(item.badqty)) }).ToList(); // 姹囨�讳笉鑹暟閲�
@@ -1594,22 +1566,36 @@
                 dynamicParams.Add("@step_code", stepcode);
                 dynamicParams.Add("@eqpcode", eqpcode);
                 var data0 = DapperHelper.selectdata(sql, dynamicParams);
-                if (data0.Rows.Count <= 0) 
+                if (data0.Rows.Count <= 0)
                 {
                     //鍐欏叆寮�鎶ュ伐璁板綍琛�
                     sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,step_price,eqp_code,materiel_code,open_person,open_time,task_qty,start_qty,style,lm_user,lm_date) 
                                 values(@mesordercode,@stepseq,@stepcode,@step_price,@eqpcode,@partcode,@username,@opentime,@taskqty,@startqty,@style,@lm_user,@lm_date)";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price=stepprice, eqpcode = eqpcode, partcode = partcode, username = us.usercode, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = us.usercode, lm_date = date } });
+                    list0.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price = stepprice, eqpcode = eqpcode, partcode = partcode, username = us.usercode, opentime = date, taskqty = taskqty, startqty = startqty, style = "S", lm_user = us.usercode, lm_date = date } });
                     //鍥炲啓宸ュ崟宸ュ簭琛ㄧ姸鎬佷负START: 寮�宸�
                     sql = @"update TK_Wrk_Step set status='START'  where wo_code=@mesordercode and step_code=@stepcode";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
+                    list0.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
 
-                    //鍥炲啓宸ュ崟宸ュ簭琛ㄧ姸鎬佷负宸插紑宸�
-                    sql = @"update TK_Wrk_Step set status='START'  where wo_code=@mesordercode and step_code=@stepcode";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode } });
                     //鍥炲啓宸ュ崟琛ㄧ姸鎬佷负锛� 寮�宸ワ細START 
                     sql = @"update TK_Wrk_Man set status='START'  where wo_code=@mesordercode";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
+                    list0.Add(new { str = sql, parm = new { mesordercode = mesordercode } });
+                    bool st = DapperHelper.DoTransaction(list0);
+                    if (st)
+                    {
+                        //鍐欏叆鎿嶄綔璁板綍琛�
+                        LogHelper.DbOperateLog(us.usercode, "寮�宸�", "寮�宸ヤ簡宸ュ崟:" + mesordercode + "宸ュ簭:" + stepcode, us.usertype);
+                        mes.code = "200";
+                        mes.count = 0;
+                        mes.Message = "鎿嶄綔鎴愬姛!";
+                        mes.data = null;
+                    }
+                    else
+                    {
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "鎿嶄綔澶辫触!";
+                        mes.data = null;
+                    }
                 }
 
                 //鍒ゆ柇鏄惁鏈夋姤宸ヨ褰�(鏈夛細淇敼 鏃狅細鏂板)
@@ -1642,34 +1628,30 @@
                     //鍐欏叆寮�鎶ュ伐璁板綍琛�
                     sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,step_price,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date,inbarcode) 
                                 values(@mesordercode,@stepseq,@stepcode,@step_price,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date,@inbarcode)";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price=stepprice, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = us.usercode, lm_date = date, inbarcode = inbarcode } });
+                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price = stepprice, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = us.usercode, lm_date = date, inbarcode = inbarcode } });
 
                     //鍐欏叆瀛愯〃
-                    for (int i = 0; i < arra.Count; i++)
-                    {
-                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date) 
+                    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date) 
                                 values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@reckway,@usergroup_code,@ratio,@ng_qty,@style,@lm_user,@lm_date)";
-                        list.Add(new
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
                         {
-                            str = sql,
-                            parm = new
-                            {
-                                m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
-                                eqp_code = eqpcode,
-                                report_person = arra[i]["usercode"].ToString(),
-                                report_date = date,
-                                report_qty = reportqty,
-                                reckway = reckway,
-                                usergroup_code = usergroupcode,
-                                ratio = decimal.Parse(arra[i]["ratio"].ToString()),
-                                ng_qty = ngqty,
-                                style = "B",
-                                lm_user = us.usercode,
-                                lm_date = date
-                            }
-                        });
-
-                    }
+                            m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
+                            eqp_code = eqpcode,
+                            report_person = reportuser,
+                            report_date = date,
+                            report_qty = reportqty,
+                            reckway = reckway,
+                            usergroup_code = usergroupcode,
+                            ratio = 0, //鍒嗛厤姣斾緥
+                            ng_qty = ngqty,
+                            style = "B",
+                            lm_user = us.usercode,
+                            lm_date = date
+                        }
+                    });
                     if (groupedItems.Count > 0)
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
@@ -1690,34 +1672,30 @@
                     //鍐欏叆寮�鎶ュ伐璁板綍琛�
                     sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,step_price,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date,inbarcode) 
                                 values(@mesordercode,@stepseq,@stepcode,@step_price,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date,@inbarcode)";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price=stepprice, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = us.usercode, lm_date = date, inbarcode = inbarcode } });
+                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, step_price = stepprice, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = us.usercode, lm_date = date, inbarcode = inbarcode } });
 
                     //鍐欏叆瀛愯〃
-                    for (int i = 0; i < arra.Count; i++)
-                    {
-                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date) 
+                    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,reckway,usergroup_code,ratio,ng_qty,style,lm_user,lm_date) 
                                 values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@reckway,@usergroup_code,@ratio,@ng_qty,@style,@lm_user,@lm_date)";
-                        list.Add(new
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
                         {
-                            str = sql,
-                            parm = new
-                            {
-                                m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
-                                eqp_code = eqpcode,
-                                report_person = arra[i]["usercode"].ToString(),
-                                report_date = date,
-                                report_qty = reportqty,
-                                reckway = reckway,
-                                usergroup_code = usergroupcode,
-                                ratio = decimal.Parse(arra[i]["ratio"].ToString()),
-                                ng_qty = ngqty,
-                                style = "B",
-                                lm_user = us.usercode,
-                                lm_date = date
-                            }
-                        });
-
-                    }
+                            m_id = int.Parse(dt.Rows[0]["ID"].ToString()),
+                            eqp_code = eqpcode,
+                            report_person = reportuser,
+                            report_date = date,
+                            report_qty = reportqty,
+                            reckway = reckway,
+                            usergroup_code = usergroupcode,
+                            ratio = 0, //鍒嗛厤姣斾緥
+                            ng_qty = ngqty,
+                            style = "B",
+                            lm_user = us.usercode,
+                            lm_date = date
+                        }
+                    });
                     if (groupedItems.Count > 0)
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
@@ -1747,6 +1725,8 @@
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
                 {
+                    //鍐欏叆鎿嶄綔璁板綍琛�
+                    LogHelper.DbOperateLog(us.usercode, "鎶ュ伐", "鎶ュ伐浜嗗伐鍗�:" + mesordercode + "宸ュ簭:" + stepcode, us.usertype);
                     mes.code = "200";
                     mes.count = 0;
                     mes.Message = "鎿嶄綔鎴愬姛!";
@@ -1792,7 +1772,7 @@
                     //淇敼鍙戞枡璁板綍
                     sql = @"update TK_Wrk_OutRecord set fqty=fqty+@fqty,lm_user=@username,lm_date=@CreateDate
                              where wo_code=@mesordercode and step_code=@stepcode and wx_code=@wx_code and style='F'";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, fqty = decimal.Parse(fqty), username =us.usercode, CreateDate = date } });
+                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, wx_code = wxcode, fqty = decimal.Parse(fqty), username = us.usercode, CreateDate = date } });
                     //鍐欏叆瀛愯〃
                     sql = @"insert into  TK_Wrk_OutRecordSub(m_id,wx_code,out_person,out_time,fqty,style,lm_user,lm_date) 
                                 values(@m_id,@wx_code,@out_person,@out_time,@fqty,@style,@lm_user,@lm_date)";
@@ -1824,6 +1804,8 @@
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
                 {
+                    //鍐欏叆鎿嶄綔璁板綍琛�
+                    LogHelper.DbOperateLog(us.usercode, "澶栧崗鍙戞枡", "澶栧崗鍙戞枡宸ュ崟:" + mesordercode + "宸ュ簭:" + stepcode, us.usertype);
                     mes.code = "200";
                     mes.count = 0;
                     mes.Message = "鍙戞枡鎴愬姛!";
@@ -2001,6 +1983,8 @@
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
                 {
+                    //鍐欏叆鎿嶄綔璁板綍琛�
+                    LogHelper.DbOperateLog(us.usercode, "澶栧崗鏀舵枡", "澶栧崗鏀舵枡宸ュ崟:" + mesordercode + "宸ュ簭:" + stepcode, us.usertype);
                     mes.code = "200";
                     mes.count = 0;
                     mes.Message = "鏀舵垚鍔�!";
@@ -2032,7 +2016,7 @@
             string[] arra1 = new string[] { };
             List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
-            decimal sumrepair_qty = 0, sumlaborbad_qty = 0,summaterielbad_qty=0;  //绱缁翠慨鏁伴噺銆佺疮璁″伐搴熸暟閲忋�佺疮璁℃枡搴熸暟閲�
+            decimal sumrepair_qty = 0, sumlaborbad_qty = 0, summaterielbad_qty = 0;  //绱缁翠慨鏁伴噺銆佺疮璁″伐搴熸暟閲忋�佺疮璁℃枡搴熸暟閲�
             try
             {
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
@@ -2076,7 +2060,7 @@
                             }
                         });
                         //鍥炲啓缂洪櫡璁板綍琛ㄧ殑寰呭鐞嗘暟閲�
-                        sql = @"update CSR_WorkRecord_Defect set defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@laborbad_qty-@materielbad_qty, defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                         where wo_code=@wo_code and step_code=@step_code and id=@id and style='B'";
                         list.Add(new
                         {
@@ -2091,28 +2075,56 @@
                                 id = int.Parse(json.Data.Rows[i]["ID"].ToString())
                             }
                         });
-                        //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
-                        sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date) 
-                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
-                        list.Add(new
+                        //鍒ゆ柇缂洪櫡璁板綍澶勭悊琛ㄦ槸鍚﹀瓨鍦ㄨ褰�
+                        sql = @"select *  from CSR_WorkRecord_DefectHandle where wo_code=@wo_code and step_code=@step_code and  defect_id=@defect_id";
+                        dynamicParams.Add("@wo_code", json.Data.Rows[i]["WO_CODE"].ToString());
+                        dynamicParams.Add("@step_code", json.Data.Rows[i]["STEP_CODE"].ToString());
+                        dynamicParams.Add("@defect_id", json.Data.Rows[i]["ID"].ToString());
+                        var data = DapperHelper.selectdata(sql, dynamicParams);
+                        if (data.Rows.Count <= 0)
                         {
-                            str = sql,
-                            parm = new
+                            //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+                            sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date) 
+                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
+                            list.Add(new
                             {
-                                defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
-                                wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
-                                partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
-                                stepseq = json.Data.Rows[i]["SEQ"].ToString(),
-                                stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
-                                repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
-                                laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
-                                materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
-                                defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
-                                style = "B",
-                                lm_user = us.usercode,
-                                lm_date = date
-                            }
-                        });
+                                str = sql,
+                                parm = new
+                                {
+                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+                                    partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
+                                    stepseq = json.Data.Rows[i]["SEQ"].ToString(),
+                                    stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
+                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
+                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
+                                    defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
+                                    style = "B",
+                                    lm_user = us.usercode,
+                                    lm_date = date
+                                }
+                            });
+                        }
+                        else
+                        {
+                            //鏇存柊鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+                            sql = @"update CSR_WorkRecord_DefectHandle set repair_qty=repair_qty+@repair_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                                    where wo_code=@wo_code and step_code=@step_code and defect_id=@defect_id";
+                            list.Add(new
+                            {
+                                str = sql,
+                                parm = new
+                                {
+                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+                                    step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
+                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
+                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString())
+                                }
+                            });
+                        }
 
                         sumrepair_qty = sumrepair_qty + decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString());
                         sumlaborbad_qty = sumlaborbad_qty + decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString());
@@ -2152,7 +2164,7 @@
                             }
                         });
                         //鍥炲啓缂洪櫡璁板綍琛ㄧ殑寰呭鐞嗘暟閲�
-                        sql = @"update CSR_WorkRecord_Defect set defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@laborbad_qty-@materielbad_qty,defect_pendqty=defect_pendqty-@repair_qty-@laborbad_qty-@materielbad_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
                         where wo_code=@wo_code and step_code=@step_code and id=@id and style='S'";
                         list.Add(new
                         {
@@ -2167,28 +2179,56 @@
                                 id = int.Parse(json.Data.Rows[i]["ID"].ToString())
                             }
                         });
-                        //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
-                        sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date) 
-                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
-                        list.Add(new
+                        //鍒ゆ柇缂洪櫡璁板綍澶勭悊琛ㄦ槸鍚﹀瓨鍦ㄨ褰�
+                        sql = @"select *  from CSR_WorkRecord_DefectHandle where wo_code=@wo_code and step_code=@step_code and  defect_id=@defect_id";
+                        dynamicParams.Add("@wo_code", json.Data.Rows[i]["WO_CODE"].ToString());
+                        dynamicParams.Add("@step_code", json.Data.Rows[i]["STEP_CODE"].ToString());
+                        dynamicParams.Add("@defect_id", json.Data.Rows[i]["ID"].ToString());
+                        var data = DapperHelper.selectdata(sql, dynamicParams);
+                        if (data.Rows.Count <= 0)
                         {
-                            str = sql,
-                            parm = new
+                            //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+                            sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,laborbad_qty,materielbad_qty,defect_code,style,lm_user,lm_date) 
+                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@laborbad_qty,@materielbad_qty,@defect_code,@style,@lm_user,@lm_date)";
+                            list.Add(new
                             {
-                                defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
-                                wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
-                                partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
-                                stepseq = json.Data.Rows[i]["SEQ"].ToString(),
-                                stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
-                                repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
-                                laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
-                                materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
-                                defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
-                                style = "S",
-                                lm_user = us.usercode,
-                                lm_date = date
-                            }
-                        });
+                                str = sql,
+                                parm = new
+                                {
+                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+                                    partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
+                                    stepseq = json.Data.Rows[i]["SEQ"].ToString(),
+                                    stepcode = json.Data.Rows[i]["STEP_CODE"].ToString(),
+                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
+                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString()),
+                                    defect_code = json.Data.Rows[i]["DEFECT_CODE"].ToString(),
+                                    style = "S",
+                                    lm_user = us.usercode,
+                                    lm_date = date
+                                }
+                            });
+                        }
+                        else
+                        {
+                            //鏇存柊鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+                            sql = @"update CSR_WorkRecord_DefectHandle set repair_qty=repair_qty+@repair_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                                    where wo_code=@wo_code and step_code=@step_code and defect_id=@defect_id";
+                            list.Add(new
+                            {
+                                str = sql,
+                                parm = new
+                                {
+                                    defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+                                    wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+                                    step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
+                                    repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+                                    laborbad_qty = decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString()),
+                                    materielbad_qty = decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString())
+                                }
+                            });
+                        }
                         sumrepair_qty = sumrepair_qty + decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString());
                         sumlaborbad_qty = sumlaborbad_qty + decimal.Parse(json.Data.Rows[i]["LABORBAD_QTY"].ToString());
                         summaterielbad_qty = summaterielbad_qty + decimal.Parse(json.Data.Rows[i]["MATERIELBAD_QTY"].ToString());
@@ -2207,12 +2247,14 @@
                         stepcode = json.Data.Rows[0]["STEP_CODE"].ToString(),
                         sumrepair_qty = sumrepair_qty,
                         sumlaborbad_qty = sumlaborbad_qty,
-                        summaterielbad_qty= summaterielbad_qty
+                        summaterielbad_qty = summaterielbad_qty
                     }
                 });
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
                 {
+                    //鍐欏叆鎿嶄綔璁板綍琛�
+                    LogHelper.DbOperateLog(us.usercode, "涓嶈壇澶勭悊", "宸ュ崟:" + json.Data.Rows[0]["WO_CODE"].ToString() + "宸ュ簭:" + json.Data.Rows[0]["STEP_CODE"].ToString(), us.usertype);
                     mes.code = "200";
                     mes.count = 0;
                     mes.Message = "鎿嶄綔鎴愬姛!";
@@ -2236,5 +2278,472 @@
             return mes;
         }
         #endregion
+
+
+
+        #region[鐢熶骇鎵ц,鎶ュ伐璋冩暣鏁版嵁鏌ヨ鎺ュ彛]
+        public static ToMessage MesOrderStepVerifySearch(string wo_code, string partnumber, string partname, string partspec, string reportuser, string reportdateopendate, string reportdateclosedate, int startNum, int endNum, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (wo_code != "" && wo_code != null)
+                {
+                    search += "and AA.wo_code like '%'+@wo_code+'%' ";
+                    dynamicParams.Add("@wo_code", wo_code);
+                }
+                if (partnumber != "" && partnumber != null)
+                {
+                    search += "and AA.partnumber like '%'+@partnumber+'%' ";
+                    dynamicParams.Add("@partnumber", partnumber);
+                }
+                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 (reportuser != "" && reportuser != null)
+                {
+                    search += "and AA.usercode like '%'+@reportuser+'%' ";
+                    dynamicParams.Add("@reportuser", reportuser);
+                }
+                if (reportdateopendate != "" && reportdateopendate != null)
+                {
+                    search += "and AA.report_date between @reportdateopendate and @reportdateclosedate ";
+                    dynamicParams.Add("@reportdateopendate", reportdateopendate + " 00:00:00");
+                    dynamicParams.Add("@reportdateclosedate", reportdateclosedate + " 23:59:59");
+                }
+
+
+                if (search == "")
+                {
+                    search = "and 1=1 ";
+                }
+                search = search.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
+                // --------------鏌ヨ鎸囧畾鑷埗鎶ュ伐澶栧崗鏀舵枡鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @" select *  from(
+                             select A.id,B.id as sbid,A.wo_code,A.materiel_code as partnumber,P.partname,P.partspec,A.task_qty,M.wkshp_code,T.torg_name as wkshp_name,A.eqp_code,E.name as eqp_name,
+                             A.step_seq,A.step_code,S.stepname,S.flwtype as steptype,k.isbott as first_choke,k.isend as last_choke,A.step_price,B.reckway,B.usergroup_code,G.usergroupname as usergroup_name,
+                             B.report_person as usercode,
+                              STUFF((SELECT ',' + U.username
+                                     FROM TUser U
+                                     WHERE CHARINDEX(',' + U.usercode + ',', ',' + B.report_person + ',') > 0
+                                     FOR XML PATH('')), 1, 1, '') AS username,
+                             B.report_date,B.report_qty,B.ng_qty,B.laborbad_qty,B.materielbad_qty
+                             from TK_Wrk_Record A
+                             inner join TK_Wrk_RecordSub B on A.id=B.m_id
+                             left join TK_Wrk_Man M on A.wo_code=M.wo_code
+                             left join TK_Wrk_Step K on M.wo_code=K.wo_code and A.step_code=K.step_code
+                             left join TStep S on A.step_code=S.stepcode
+                             left join TMateriel_Info P on A.materiel_code=P.partcode
+                             left join TOrganization T on M.wkshp_code=T.torg_code
+                             left join TEqpInfo E on A.eqp_code=E.code
+                             left join TGroup G on G.usergroupcode=B.usergroup_code
+                             where A.style='B' and B.style='B' and M.status<>'CLOSED' and B.verify='N'
+                             union all
+                             select A.id,B.id as sbid,A.wo_code,A.materiel_code as partnumber,P.partname,P.partspec,M.plan_qty as task_qty,M.wkshp_code,T.torg_name as wkshp_name,A.wx_code as eqp_code,E.name as eqp_name,
+                             A.step_seq,A.step_code,S.stepname,S.flwtype as steptype,k.isbott as first_choke,k.isend as last_choke,A.step_price,'person' as reckway,'' as usergroup_code,'' as usergroup_name,
+                             B.in_person as usercode,
+                             STUFF((SELECT ',' + U.username
+                                     FROM TUser U
+                                     WHERE CHARINDEX(',' + U.usercode + ',', ',' + B.in_person + ',') > 0
+                                     FOR XML PATH('')), 1, 1, '') AS username,
+                             B.in_time as report_date,B.sqty as report_qty,B.ng_qty,B.laborbad_qty,B.materielbad_qty
+                             from TK_Wrk_OutRecord A
+                             inner join TK_Wrk_OutRecordSub B on A.id = B.m_id
+                             left join TK_Wrk_Man M on A.wo_code = M.wo_code
+                             left join TK_Wrk_Step K on M.wo_code=K.wo_code and A.step_code=K.step_code
+                             left join TStep S on A.step_code = S.stepcode
+                             left join TMateriel_Info P on A.materiel_code = P.partcode
+                             left join TOrganization T on M.wkshp_code = T.torg_code
+                             left join TCustomer E on A.wx_code = E.code 
+                             where A.style = 'S' and B.style = 'S' and M.status<>'CLOSED' and B.verify='N'
+                             ) as 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 MesOrderStepModelSearch(string wo_code, string step_code, string step_type, string isbott, string isend, string id, string sbid)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                if (step_type == "Z")
+                {
+                    sql = @"select D.id,D.record_id,D.defect_code,
+                            STUFF((SELECT ',' + F.name
+                                    FROM TDefect F
+                                    WHERE CHARINDEX(',' + F.code + ',', ',' + D.defect_code + ',') > 0
+                                    FOR XML PATH('')), 1, 1, '') AS defect_name,
+                            D.defect_qty,laborbad_qty,materielbad_qty   
+                            from CSR_WorkRecord_Defect D  
+                            where wo_code=@wo_code and step_code=@step_code and record_id=@id";
+                    dynamicParams.Add("@wo_code", wo_code);
+                    dynamicParams.Add("@step_code", step_code);
+                    dynamicParams.Add("@id", id);
+                    var data = DapperHelper.selectdata(sql, dynamicParams);
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+
+                }
+                if (step_type == "W")
+                {
+                    sql = @"select D.id,D.record_id,D.defect_code,
+                            STUFF((SELECT ',' + F.name
+                                    FROM TDefect F
+                                    WHERE CHARINDEX(',' + F.code + ',', ',' + D.defect_code + ',') > 0
+                                    FOR XML PATH('')), 1, 1, '') AS defect_name,
+                            D.defect_qty,laborbad_qty,materielbad_qty   
+                            from CSR_WorkRecord_Defect D  
+                            where wo_code=@wo_code and step_code=@step_code and record_id=@id";
+                    dynamicParams.Add("@wo_code", wo_code);
+                    dynamicParams.Add("@step_code", step_code);
+                    dynamicParams.Add("@id", id);
+                    var data = DapperHelper.selectdata(sql, dynamicParams);
+                    mes.code = "200";
+                    mes.count = 0;
+                    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 MesOrderStepUpdateSeave(User us, List<UpdateProductReport> json)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
+                list.Clear();
+                //鍒ゆ柇褰撳墠宸ュ簭鏄嚜鍒跺伐搴忚繕鏄鍗忓伐搴�
+                if (json[0].flw_type.ToString() == "Z")//鑷埗宸ュ簭
+                {
+                    //鑾峰彇姝ゆ鎶ュ伐璋冩暣鎻愪氦鐨勬暟鎹�(鍚堟牸鏁伴噺銆佷笉鑹暟閲忋�佸伐搴熸暟閲忋�佹枡搴熸暟閲�)
+                    decimal this_reportqty = decimal.Parse(json[0].report_qty.ToString()); //鎶ュ伐鏁伴噺(鍚堟牸)
+                    decimal this_ngqty = json[0].children.Sum(item => decimal.Parse(item.ng_qty));//涓嶈壇鏁伴噺姹囨��
+                    decimal this_laborbadqty = json[0].children.Sum(item => decimal.Parse(item.laborbad_qty));//宸ュ簾鏁伴噺姹囨��
+                    decimal this_materielbadqty = json[0].children.Sum(item => decimal.Parse(item.materielbad_qty));//鏂欏簾鏁伴噺姹囨��
+                    decimal this_ng_dvalue = json[0].children.Sum(item => decimal.Parse(item.ng_dvalue));//涓嶈壇鏁伴噺宸�兼眹鎬�
+                    decimal this_laborbad_dvalue = json[0].children.Sum(item => decimal.Parse(item.laborbad_dvalue));//宸ュ簾鏁伴噺宸�兼眹鎬�
+                    decimal this_materielbad_dvalue = json[0].children.Sum(item => decimal.Parse(item.materielbad_dvalue));//鏂欏簾鏁伴噺宸�兼眹鎬�
+                    //棣栭亾宸ュ簭鐨勬姤宸�
+                    if (json[0].first_choke == "Y")
+                    {
+                        //鏌ヨ褰撳墠棣栭亾鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@id", json[0].id);
+                        dynamicParams.Add("@step_code", json[0].step_code);
+                        var dt = DapperHelper.selectdata(sql, dynamicParams);
+                        decimal notthis_reportqty = decimal.Parse(dt.Rows[0]["good_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�绘暟
+                        decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�讳笉鑹暟
+                        decimal notthis_laborbadqty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�诲伐搴熸暟
+                        decimal notthis_materielbadqty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�绘枡搴熸暟
+                        //鍒ゆ柇锛氬綋鍓嶅伐搴忔姤宸ヨ褰曪細鏈鎶ュ伐鏁伴噺+鏈涓嶈壇鏁伴噺+鏈宸ュ簾鏁伴噺+鏈鏂欏簾鏁伴噺+褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�绘暟+褰撳墠宸ュ簭闈炴湰娆′笉鑹�绘暟+褰撳墠宸ュ簭闈炴湰娆″伐搴熸�绘暟+褰撳墠宸ュ簭闈炴湰娆℃枡搴熸�绘暟>宸ュ崟浠诲姟鏁伴噺
+                        decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbadqty + notthis_materielbadqty;
+                        if (updatereportsumqty > decimal.Parse(json[0].task_qty.ToString()))
+                        {
+                            mes.code = "300";
+                            mes.count = 0;
+                            mes.Message = "鑷埗棣栭亾宸ュ簭淇敼鎶ュ伐鎬绘暟閲忥細銆�" + updatereportsumqty + "銆戜笉鑳藉ぇ浜庡伐鍗曚换鍔℃暟閲忥細銆�" + json[0].task_qty.ToString() + "銆�!";
+                            mes.data = null;
+                            return mes;
+                        }
+                        //鏌ヨ褰撳墠宸ュ簭涓嬮亾宸ュ簭锛氭�绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�绘姤搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq+1";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@step_seq", json[0].step_seq);
+                        var dt0 = DapperHelper.selectdata(sql, dynamicParams);
+                        if (dt0.Rows.Count > 0)
+                        {
+                            //鍒ゆ柇褰撳墠宸ュ簭锛氭姤宸ユ�绘暟鏁伴噺+涓嶈壇鎬绘暟鏁伴噺+宸ュ簾鎬绘暟閲�+鏂欏簾鎬绘暟閲�<涓嬮亾宸ュ簭鎶ュ伐鎬绘暟閲�+涓嬮亾宸ュ簭涓嶈壇鎬绘暟閲�+涓嬮亾宸ュ簭宸ュ簾鎬绘暟閲�+涓嬮亾宸ュ簭鏂欏簾鎬绘暟閲�
+                            decimal last_reportqty = decimal.Parse(dt0.Rows[0]["good_qty"].ToString());  //涓嬮亾宸ュ簭鎶ュ伐鎬绘暟閲�
+                            decimal last_ngqty = decimal.Parse(dt0.Rows[0]["ng_qty"].ToString());  //涓嬮亾宸ュ簭涓嶈壇鎬绘暟閲�
+                            decimal last_laborbad_qty = decimal.Parse(dt0.Rows[0]["laborbad_qty"].ToString());  //涓嬮亾宸ュ簭宸ュ簾鎬绘暟閲�
+                            decimal last_materielbad_qty = decimal.Parse(dt0.Rows[0]["materielbad_qty"].ToString());  //涓嬮亾宸ュ簭鏂欏簾鎬绘暟閲�
+                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
+                            //鍒ゆ柇锛堝綋鍓嶉潪鏈鎶ュ伐鎬诲悎鏍兼暟+鏈鎶ュ伐璋冩暣鍚堟牸鏁帮級<涓嬮亾宸ュ簭鎶ュ伐鎬绘暟
+                            if ((notthis_reportqty + decimal.Parse(json[0].report_qty) < last_updatereportsumqty))
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "鑷埗棣栭亾宸ュ簭淇敼鎶ュ伐鎬诲悎鏍兼暟閲忥細銆�" + (notthis_reportqty + decimal.Parse(json[0].report_qty)) + "銆戜笉鑳藉皬浜庝笅閬撳伐搴忔姤宸ユ�绘暟閲忥細銆�" + last_updatereportsumqty + "銆�,璇疯緭鍏ュ悎娉曟暟鍊兼垨鍏堜慨鏀逛笅閬撳伐搴忔姤宸ユ暟閲�!";
+                                mes.data = null;
+                                return mes;
+                            }
+                        }
+                    }
+                    //鏈亾宸ュ簭鐨勬姤宸�
+                    else if (json[0].last_choke == "Y")
+                    {
+                        //鏌ヨ褰撳墠鏈亾鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@id", json[0].id);
+                        dynamicParams.Add("@step_code", json[0].step_code);
+                        var dt = DapperHelper.selectdata(sql, dynamicParams);
+                        decimal notthis_reportqty = decimal.Parse(dt.Rows[0]["good_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ユ�绘暟
+                        decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ユ�绘暟
+                        decimal notthis_laborbad_qty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ュ伐搴熸�绘暟
+                        decimal notthis_materielbad_qty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ユ枡搴熸�绘暟
+                        //鑾峰彇褰撳墠鏈亾宸ュ簭鎶ュ伐鎬绘暟閲忥細鏈淇敼鎶ュ伐鏁伴噺+鏈淇敼涓嶈壇鏁伴噺+鏈淇敼宸ュ簾鏁伴噺+鏈淇敼鎶ュ伐鏂欏簾鏁伴噺+褰撳墠鏈亾宸ュ簭闈炴湰娆℃姤宸ユ�绘暟+褰撳墠鏈亾宸ュ簭闈炴湰娆′笉鑹�绘暟+褰撳墠鏈亾宸ュ簭闈炴湰娆″伐搴熸�绘暟+褰撳墠鏈亾宸ュ簭闈炴湰娆℃枡搴熸�绘暟
+                        decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbad_qty + notthis_materielbad_qty;
+
+                        //鏌ヨ褰撳墠鏈亾宸ュ簭涓婇亾宸ュ簭锛氭�绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�绘姤搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq-1";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@step_seq", json[0].step_seq);
+                        var dt0 = DapperHelper.selectdata(sql, dynamicParams);
+                        if (dt0.Rows.Count > 0)
+                        {
+                            decimal last_reportqty = decimal.Parse(dt0.Rows[0]["good_qty"].ToString());  //涓婇亾宸ュ簭鎶ュ伐鎬绘暟閲�
+                            decimal last_ngqty = decimal.Parse(dt0.Rows[0]["ng_qty"].ToString());  //涓婇亾宸ュ簭涓嶈壇鎬绘暟閲�
+                            decimal last_laborbad_qty = decimal.Parse(dt0.Rows[0]["laborbad_qty"].ToString());  //涓婇亾宸ュ簭宸ュ簾鎬绘暟閲�
+                            decimal last_materielbad_qty = decimal.Parse(dt0.Rows[0]["materielbad_qty"].ToString());  //涓婇亾宸ュ簭鏂欏簾鎬绘暟閲�
+                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
+                            //鍒ゆ柇锛氬綋鍓嶆湯閬撳伐搴忔姤宸ヨ褰曪細褰撳墠鏈亾宸ュ簭鎶ュ伐鎬绘暟閲�>涓婇亾宸ュ簭鎶ュ伐鍚堟牸鎬绘暟
+                            if (updatereportsumqty > last_reportqty)
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "鑷埗鏈亾宸ュ簭淇敼鎶ュ伐鎬绘暟閲忥細銆�" + updatereportsumqty + "銆戜笉鑳藉ぇ浜庝笂閬撳伐搴忔姤宸ユ�诲悎鏍兼暟閲忥細銆�" + last_reportqty + "銆�,璇疯緭鍏ュ悎娉曟暟鍊兼垨鍏堜慨鏀逛笂閬撳伐搴忔姤宸ユ暟閲�!";
+                                mes.data = null;
+                                return mes;
+                            }
+                        }
+                    }
+                    else //涓棿宸ュ簭鐨勬姤宸�
+                    {
+                       //鏌ヨ褰撳墠涓棿鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�绘姤搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                    from TK_Wrk_Record where wo_code=@wo_code and style='B' and id<>@id and step_code=@step_code";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@id", json[0].id);
+                        dynamicParams.Add("@step_code", json[0].step_code);
+                        var dt = DapperHelper.selectdata(sql, dynamicParams);
+                        decimal notthis_reportqty = decimal.Parse(dt.Rows[0]["good_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�绘暟
+                        decimal notthis_ngqty = decimal.Parse(dt.Rows[0]["ng_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�绘暟
+                        decimal notthis_laborbad_qty = decimal.Parse(dt.Rows[0]["laborbad_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ュ伐璐规�绘暟
+                        decimal notthis_materielbad_qty = decimal.Parse(dt.Rows[0]["materielbad_qty"].ToString());  //褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ枡搴熸�绘暟
+                        //鑾峰彇褰撳墠涓棿宸ュ簭鎶ュ伐鎬绘暟閲忥細鏈淇敼鎶ュ伐鏁伴噺+鏈淇敼涓嶈壇鏁伴噺+鏈淇敼宸ュ簾鏁伴噺+鏈淇敼鏂欏簾鎬绘暟+褰撳墠宸ュ簭闈炴湰娆℃姤宸ユ�绘暟+褰撳墠宸ュ簭闈炴湰娆′笉鑹�绘暟+褰撳墠宸ュ簭闈炴湰娆″伐搴熸�绘暟+褰撳墠宸ュ簭闈炴湰娆℃枡搴熸�绘暟
+                        decimal updatereportsumqty = this_reportqty + this_ngqty + this_laborbadqty + this_materielbadqty + notthis_reportqty + notthis_ngqty + notthis_laborbad_qty + notthis_materielbad_qty;
+                        //鏌ヨ褰撳墠宸ュ簭涓婇亾宸ュ簭锛氭�绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq-1";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@step_seq", json[0].step_seq);
+                        var dt0 = DapperHelper.selectdata(sql, dynamicParams);
+                        if (dt0.Rows.Count > 0)
+                        {
+                            decimal last_reportqty = decimal.Parse(dt0.Rows[0]["good_qty"].ToString());  //涓婇亾宸ュ簭鎶ュ伐鎬诲悎鏍兼暟閲�
+                            decimal last_ngqty = decimal.Parse(dt0.Rows[0]["ng_qty"].ToString());  //涓婇亾宸ュ簭涓嶈壇鎬绘暟閲�
+                            decimal last_laborbad_qty = decimal.Parse(dt0.Rows[0]["laborbad_qty"].ToString());  //涓婇亾宸ュ簭宸ュ簾鎬绘暟閲�
+                            decimal last_materielbad_qty = decimal.Parse(dt0.Rows[0]["materielbad_qty"].ToString());//涓婇亾宸ュ簭鏂欏簾鎬绘暟閲�
+                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
+                            //鍒ゆ柇锛氬綋鍓嶅伐搴忔姤宸ヨ褰曪細褰撳墠宸ュ簭鎶ュ伐鎬绘暟>涓婇亾宸ュ簭鎶ュ伐鎬诲悎鏍兼暟
+                            if (updatereportsumqty > last_reportqty)
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "鑷埗宸ュ簭淇敼鎶ュ伐鎬绘暟閲忥細銆�" + updatereportsumqty + "銆戜笉鑳藉ぇ浜庝笂閬撳伐搴忔姤宸ユ�诲悎鏍兼暟閲忥細銆�" + last_reportqty + "銆�,璇疯緭鍏ュ悎娉曟暟鍊兼垨鍏堜慨鏀逛笂閬撳伐搴忔姤宸ユ暟閲�!";
+                                mes.data = null;
+                                return mes;
+                            }
+                        }
+                        //鏌ヨ褰撳墠宸ュ簭涓嬮亾宸ュ簭锛氭�绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�绘姤搴熸暟閲�
+                        sql = @"select isnull(sum(good_qty),0) as good_qty,isnull(sum(ng_qty),0) as ng_qty,isnull(sum(laborbad_qty),0) as laborbad_qty,isnull(sum(materielbad_qty),0) as materielbad_qty   
+                                    from TK_Wrk_Record where wo_code=@wo_code and style='B'  and step_seq=@step_seq+1";
+                        dynamicParams.Add("@wo_code", json[0].wo_code);
+                        dynamicParams.Add("@step_seq", json[0].step_seq);
+                        var dt1 = DapperHelper.selectdata(sql, dynamicParams);
+                        if (dt1.Rows.Count > 0)
+                        {
+                            decimal last_reportqty = decimal.Parse(dt1.Rows[0]["good_qty"].ToString());  //涓嬮亾宸ュ簭鎶ュ伐鎬绘暟閲�
+                            decimal last_ngqty = decimal.Parse(dt1.Rows[0]["ng_qty"].ToString());  //涓嬮亾宸ュ簭涓嶈壇鎬绘暟閲�
+                            decimal last_laborbad_qty = decimal.Parse(dt1.Rows[0]["laborbad_qty"].ToString());  //涓嬮亾宸ュ簭宸ュ簾鎬绘暟閲�
+                            decimal last_materielbad_qty = decimal.Parse(dt1.Rows[0]["materielbad_qty"].ToString());  //涓嬮亾宸ュ簭鏂欏簾鎬绘暟閲�
+                            decimal last_updatereportsumqty = last_reportqty + last_ngqty + last_laborbad_qty + last_materielbad_qty;
+                            //鍒ゆ柇锛氬綋鍓嶅伐搴忔姤宸ヨ褰曪細褰撳墠宸ュ簭鎶ュ伐鎬绘暟<涓嬮亾宸ュ簭鎶ュ伐鎬绘暟(鍚堟牸+涓嶈壇+宸ュ簾+鏂欏簾)
+                            //鍒ゆ柇锛堝綋鍓嶉潪鏈鎶ュ伐鎬诲悎鏍兼暟+鏈鎶ュ伐璋冩暣鍚堟牸鏁帮級<涓嬮亾宸ュ簭鎶ュ伐鎬绘暟
+                            if ((notthis_reportqty + decimal.Parse(json[0].report_qty)< last_updatereportsumqty))
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "鑷埗宸ュ簭淇敼鎶ュ伐鎬诲悎鏍兼暟閲忥細銆�" + (notthis_reportqty + decimal.Parse(json[0].report_qty)) + "銆戜笉鑳藉皬浜庝笅閬撳伐搴忔姤宸ユ�绘暟閲忥細銆�" + last_updatereportsumqty + "銆�,璇疯緭鍏ュ悎娉曟暟鍊兼垨鍏堜慨鏀逛笅閬撳伐搴忔姤宸ユ暟閲�!";
+                                mes.data = null;
+                                return mes;
+                            }
+                        }
+                    }
+
+                    ///////////////////////////////淇敼鎶ュ伐//////////////////////////////
+
+                    //鍥炲啓瀵瑰簲鐨勬姤宸ヨ褰曞瓙琛ㄥ悎鏍兼暟閲忋�佷笉鑹暟閲忋�佹姤搴熸暟閲�
+                    sql = @"update TK_Wrk_RecordSub set report_qty=report_qty+@repair_qty,ng_qty=ng_qty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty,
+                            updatereportuser=@updatereportuser,updatereportdate=@updatereportdate
+                            where  m_id=@m_id and id=@id and style='B'";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            m_id = int.Parse(json[0].id),
+                            id = int.Parse(json[0].sbid),
+                            repair_qty = decimal.Parse(json[0].report_dvalue),
+                            ng_qty = this_ng_dvalue,
+                            laborbad_qty = this_laborbad_dvalue,
+                            materielbad_qty = this_materielbad_dvalue,
+                            //bad_money = decimal.Parse(json[i].badmoney_dvalue),
+                            updatereportuser = us.usercode,
+                            updatereportdate = date
+                        }
+                    });
+                    //鍥炲啓瀵瑰簲鐨勬姤宸ヨ褰曚富琛ㄥ悎鏍兼暟閲忋�佷笉鑹暟閲忋�佹姤搴熸暟閲�
+                    sql = @"update TK_Wrk_Record set start_qty=start_qty+@good_qty, good_qty=good_qty+@good_qty,ng_qty=ng_qty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                            where wo_code=@wo_code and step_code=@step_code and id=@id and style='B'";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            good_qty = decimal.Parse(json[0].report_dvalue),
+                            ng_qty = this_ng_dvalue,
+                            laborbad_qty = this_laborbad_dvalue,
+                            materielbad_qty = this_materielbad_dvalue,
+                            wo_code = json[0].wo_code,
+                            step_code = json[0].step_code,
+                            id = int.Parse(json[0].id)
+                        }
+                    });
+                    //鍥炲啓宸ュ崟宸ュ簭琛�
+                    sql = @"update TK_Wrk_Step set good_qty=good_qty+@good_qty,ng_qty=ng_qty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                            where wo_code=@wo_code and step_code=@step_code";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            good_qty = decimal.Parse(json[0].report_dvalue),
+                            ng_qty = this_ng_dvalue,
+                            laborbad_qty = this_laborbad_dvalue,
+                            materielbad_qty = this_materielbad_dvalue,
+                            wo_code = json[0].wo_code,
+                            step_code = json[0].step_code
+                        }
+                    });
+                    
+                    for (int i = 0; i < json[0].children.Count; i++)
+                    {
+                        //鍥炲啓涓嶈壇
+                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty+@ng_qty,defect_pendqty=defect_pendqty+@ng_qty,laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty,
+                                updatereportuser=@updatereportuser,updatereportdate=@updatereportdate
+                                where wo_code=@wo_code and step_code=@step_code and id=@ng_id and record_id=@record_id and style='B'";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                ng_qty = decimal.Parse(json[0].children[i].ng_dvalue),
+                                laborbad_qty = decimal.Parse(json[0].children[i].laborbad_dvalue),
+                                materielbad_qty = decimal.Parse(json[0].children[i].materielbad_dvalue),
+                                wo_code = json[0].wo_code,
+                                step_code = json[0].step_code,
+                                ng_id = int.Parse(json[0].children[i].ng_id),
+                                record_id = json[0].id,
+                                updatereportuser = us.usercode,
+                                updatereportdate = date
+                            }
+                        });
+                        //鍥炲啓涓嶈壇澶勭悊
+                        sql = @"update CSR_WorkRecord_DefectHandle set laborbad_qty=laborbad_qty+@laborbad_qty,materielbad_qty=materielbad_qty+@materielbad_qty
+                                where wo_code=@wo_code and step_code=@step_code and defect_id=@defect_id and style='B'";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                laborbad_qty = decimal.Parse(json[0].children[i].laborbad_dvalue),
+                                materielbad_qty = decimal.Parse(json[0].children[i].materielbad_dvalue),
+                                wo_code = json[0].wo_code,
+                                step_code = json[0].step_code,
+                                defect_id = int.Parse(json[0].children[i].ng_id),
+                                updatereportuser = us.usercode,
+                                updatereportdate = date
+                            }
+                        });
+                    }
+                }
+                if (json[0].flw_type.ToString() == "W")//澶栧崗宸ュ簭
+                {
+
+                }
+
+                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
     }
 }
diff --git a/VueWebCoreApi/Models/UpdateReport/UpdateProductReport.cs b/VueWebCoreApi/Models/UpdateReport/UpdateProductReport.cs
new file mode 100644
index 0000000..377fe65
--- /dev/null
+++ b/VueWebCoreApi/Models/UpdateReport/UpdateProductReport.cs
@@ -0,0 +1,46 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace VueWebCoreApi.Models.UpdateReport
+{
+    /// <summary>
+    /// 淇敼鎶ュ伐鎻愪氦鏁版嵁绫�
+    /// </summary>
+    public class UpdateProductReport
+    {
+        public string id { get; set; }  //鎶ュ伐璁板綍涓昏〃id/澶栧崗鏀舵枡璁板綍涓昏〃id
+        public string sbid { get; set; }  //鎶ュ伐璁板綍瀛愯〃id/澶栧崗鏀舵枡璁板綍瀛愯〃id
+        public string wo_code { get; set; }  //鐢熶骇宸ュ崟鍙�
+        public string partnumber { get; set; }  //鐗╂枡缂栫爜
+        public string task_qty { get; set; }  //宸ュ崟鏁伴噺
+        public string wkshp_code { get; set; }  //杞﹂棿缂栧彿
+        public string eqp_code { get; set; }  //璁惧缂栫爜/澶栧崗渚涘簲鍟嗙紪鐮�
+        public string step_seq { get; set; }  //宸ュ簭搴忓彿
+        public string step_code { get; set; }  //宸ュ簭缂栫爜
+        public string flw_type { get; set; }  //宸ュ簭灞炴��(Z:鑷埗 W:澶栧崗)
+        public string first_choke { get; set; }  //鏄惁棣栭亾宸ュ簭
+        public string last_choke { get; set; }  //鏄惁鏈亾宸ュ簭
+        public string unprice { get; set; }  //宸ュ簭鍗曚环
+        public string groupcode { get; set; }  //鐝粍缂栫爜
+        public string usercode { get; set; }  //鎶ュ伐浜哄憳缂栫爜
+        public string report_date { get; set; }  //鎶ュ伐鏃堕棿
+        public string report_qty { get; set; }  //鎶ュ伐鏁伴噺
+        public string report_dvalue { get; set; } //鎶ュ伐鏁伴噺宸��
+        public List<UpdateReportSub> children { get; set; }
+    }
+    public class UpdateReportSub 
+    {
+        public string ng_id { get; set; }  //涓嶈壇璁板綍涓籭d
+        public string ng_sbid { get; set; }  //涓嶈壇璁板綍瀛恑d
+        public string ng_qty { get; set; }  //涓嶈壇鏁伴噺
+        public string ng_dvalue { get; set; } //涓嶈壇鏁伴噺宸��
+        public string laborbad_qty { get; set; }  //宸ュ簾鏁伴噺
+        public string laborbad_dvalue { get; set; }  //宸ュ簾鏁伴噺宸��
+        public string materielbad_qty { get; set; }  //鏂欏簾鏁伴噺
+        public string materielbad_dvalue { get; set; }  //鏂欏簾鏁伴噺宸��
+        public string bad_money { get; set; }  //鎶ュ簾閲戦
+        public string badmoney_dvalue { get; set; }  //鎶ュ簾閲戦宸��
+    }
+}
diff --git a/VueWebCoreApi/Tools/AppLableBarCode.cs b/VueWebCoreApi/Tools/AppLableBarCode.cs
index c13021a..8c2e403 100644
--- a/VueWebCoreApi/Tools/AppLableBarCode.cs
+++ b/VueWebCoreApi/Tools/AppLableBarCode.cs
@@ -24,17 +24,25 @@
         {
             string sql, year = "", month = "", day = "", fdate = "", q = "", cunm2 = "", Encode = "", cunm = "";
             int digit2 = 0, value2 = 0, digit3 = 0, digitdiff = 0;
+            decimal labcum = 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));
+            if (qty == "0" && onelabqty == "0")
+            {
+                labcum = 1;
+            }
+            else 
+            {
+                labcum = Math.Ceiling(decimal.Parse(qty) / decimal.Parse(onelabqty));
+            }
             try
             {
-                sql = @"select prefix,filingdate,incbit,value from  TCodeRules  where rightcode=@rightcode";
-                dynamicParams.Add("@rightcode", rightcode);
+                sql = @"select prefix,filingdate,incbit,value from  TCodeRules  where menucode=@menucode";
+                dynamicParams.Add("@menucode", rightcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 if (data.Rows.Count > 0)
                 {
@@ -60,10 +68,10 @@
                                 break;
                         }
                         //鏇存柊瑙勫垯琛ㄤ綅鏁板強娴佹按鍙�
-                        sql = @"update TCodeRules set incbit=@incbit,value=@cunm2  where rightcode=@rightcode";
+                        sql = @"update TCodeRules set incbit=@incbit,value=@cunm2  where menucode=@menucode";
                         dynamicParams.Add("@incbit", cunm.Length);
                         dynamicParams.Add("@cunm2", cunm);
-                        dynamicParams.Add("@rightcode", rightcode);
+                        dynamicParams.Add("@menucode", rightcode);
                         list.Add(new { str = sql, parm = dynamicParams });
                         stf = DapperHelper.DoTransaction(list);
                         if (stf)
diff --git a/VueWebCoreApi/Tools/ScanStartReport.cs b/VueWebCoreApi/Tools/ScanStartReport.cs
index 2c1f0a1..c549b08 100644
--- a/VueWebCoreApi/Tools/ScanStartReport.cs
+++ b/VueWebCoreApi/Tools/ScanStartReport.cs
@@ -46,20 +46,20 @@
                 }
 
                 //1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
-                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.stepprice,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend,L.org_code,L.org_name  
+                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.stepprice,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name  
                         from TK_Wrk_Step A
                         left join  TStep T on A.step_code=T.stepcode
                         left join  TK_Wrk_Man M on A.wo_code=M.wo_code
                         left join  TMateriel_Info P on M.materiel_code=P.partcode
-                        left join  TOrganization L on M.wkshp_code=L.org_code
+                        left join  TOrganization L on M.wkshp_code=L.torg_code
                         where A.wo_code=@ordercode and A.step_code=@stepcode";
                 dynamicParams.Add("@ordercode", ordercode);
                 dynamicParams.Add("@stepcode", stepcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 if (data.Rows.Count > 0)
                 {
-                    rt.wkshopcode = data.Rows[0]["org_code"].ToString(); //杞﹂棿缂栫爜
-                    rt.wkshopname = data.Rows[0]["org_name"].ToString(); //杞﹂棿鍚嶇О
+                    rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //杞﹂棿缂栫爜
+                    rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //杞﹂棿鍚嶇О
                     rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
                     rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
                     rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
@@ -86,7 +86,7 @@
                     {
                         rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//涓嬮亾宸ュ簭缂栫爜
                         rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//涓嬮亾宸ュ簭鍚嶇О
-                        rt.nextstepprice = data.Rows[0]["NEXTSTEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
+                        rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
                     }
                     if (isend == "Y")  //褰撳墠宸ュ簭鏄湯閬撳伐搴�
                     {
@@ -419,20 +419,20 @@
                 }
 
                 //1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
-                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.stepprice,A.status,A.plan_qty,A.isbott,A.isend,L.org_code,L.org_name   
+                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.stepprice,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name   
                         from TK_Wrk_Step A
                         left join  TStep T on A.step_code=T.stepcode
                         left join  TK_Wrk_Man M on A.wo_code=M.wo_code
                         left join  TMateriel_Info P on M.materiel_code=P.partcode
-                        left join  TOrganization L on M.wkshp_code=L.org_code
+                        left join  TOrganization L on M.wkshp_code=L.torg_code
                         where A.wo_code=@ordercode and A.step_code=@stepcode";
                 dynamicParams.Add("@ordercode", ordercode);
                 dynamicParams.Add("@stepcode", stepcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 if (data.Rows.Count > 0)
                 {
-                    rt.wkshopcode = data.Rows[0]["org_code"].ToString(); //杞﹂棿缂栫爜
-                    rt.wkshopname = data.Rows[0]["org_name"].ToString(); //杞﹂棿鍚嶇О
+                    rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //杞﹂棿缂栫爜
+                    rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //杞﹂棿鍚嶇О
                     rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
                     rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
                     rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
@@ -458,7 +458,7 @@
                     {
                         rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//涓嬮亾宸ュ簭缂栫爜
                         rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//涓嬮亾宸ュ簭鍚嶇О
-                        rt.nextstepprice = data.Rows[0]["NEXTSTEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
+                        rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
                     }
                     if (isend == "Y")  //褰撳墠宸ュ簭鏄湯閬撳伐搴�
                     {
@@ -786,7 +786,7 @@
                                 {
                                     //1.棣栭亾宸ュ簭鏃讹紝鍒ゆ柇鏄惁鏈夊彂鏂欒褰�
                                     sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
-                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty   
+                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty   
                                             from TK_Wrk_OutRecord R
                                             left join TCustomer C on R.wx_code=C.code
                                             where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'
@@ -798,7 +798,7 @@
                                     {
                                         //1.棣栭亾宸ュ簭鏃讹紝鍒ゆ柇鏄惁鏈夋敹鏂欒褰�
                                         sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
-                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty     
+                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty      
                                                 from TK_Wrk_OutRecord R
                                                 left join TCustomer C on R.wx_code=C.code
                                                 where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='S'
@@ -845,7 +845,8 @@
                                                     fqty = g.Sum(i => (decimal)i["fqty"]),
                                                     sqty = g.Sum(i => (decimal)i["sqty"]),
                                                     ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
-                                                    bad_qty = g.Sum(i => (decimal)i["bad_qty"])
+                                                    laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+                                                    materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                                 }).ToList();
 
                                                 mes.code = "200";
@@ -877,7 +878,8 @@
                                                 fqty = g.Sum(i => (decimal)i["fqty"]),
                                                 sqty = g.Sum(i => (decimal)i["sqty"]),
                                                 ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
-                                                bad_qty = g.Sum(i => (decimal)i["bad_qty"])
+                                                laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+                                                materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                             }).ToList();
 
                                             mes.code = "200";
@@ -908,7 +910,7 @@
                                     {
                                         //1.闈為閬撳伐搴忔椂锛屽垽鏂湰閬撴槸鍚︽湁鍙戞枡璁板綍
                                         sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
-                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty   
+                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty   
                                             from TK_Wrk_OutRecord R
                                             left join TCustomer C on R.wx_code=C.code
                                             where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'
@@ -920,7 +922,7 @@
                                         {
                                             //2.闈為閬撳伐搴忔椂锛屽垽鏂湰閬撴槸鍚︽湁鏀舵枡璁板綍
                                             sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
-                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.bad_qty),0) as bad_qty     
+                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty       
                                                 from TK_Wrk_OutRecord R
                                                 left join TCustomer C on R.wx_code=C.code
                                                 where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='S'
@@ -966,7 +968,8 @@
                                                         fqty = g.Sum(i => (decimal)i["fqty"]),
                                                         sqty = g.Sum(i => (decimal)i["sqty"]),
                                                         ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
-                                                        bad_qty = g.Sum(i => (decimal)i["bad_qty"])
+                                                        laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+                                                        materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                                     }).ToList();
 
                                                     mes.code = "200";
@@ -996,7 +999,8 @@
                                                     fqty = g.Sum(i => (decimal)i["fqty"]),
                                                     sqty = g.Sum(i => (decimal)i["sqty"]),
                                                     ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
-                                                    bad_qty = g.Sum(i => (decimal)i["bad_qty"])
+                                                    laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+                                                    materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
                                                 }).ToList();
                                                 mes.code = "200";
                                                 mes.count = 3;

--
Gitblit v1.9.3