From 5b84275a7ce63b83c778c5ac050b8c039cd4fac8 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期二, 06 八月 2024 17:46:25 +0800
Subject: [PATCH] 1.修改接口:UpdateMesOrderStepSearch   --工单派发 2.修改接口:MesOrderNewStepContent   --工单派发 3.修改接口:RouteSelectStep--工单派发 4.新增组织架构类型接口:TOrganTypeDate 5.新增组织架构车间接口:TorgWkshop 6.新增车间查找设备接口:WkshopEqpPermissions 7.新增往来单位基础资料接口:CustomerTypePermissions 8.新增往来单位类型查找往来单位资料接口:CustomerTypeSearchPermissions 9.新增工序关联工作站接口 10.修改工序工价提交接口(增加了设备)

---
 VueWebCoreApi/Controllers/BasicSettingController.cs     |   58 +
 VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs                   |  163 +++++-
 VueWebCoreApi/Models/WorkData/WorkRouteStepEqp.cs       |  103 ++++
 VueWebCoreApi/Tools/ImportExcelData.cs                  |   91 +++
 VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs            |  126 +++++
 VueWebCoreApi/Tools/SchedulingMethod.cs                 |    2 
 VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs            |   34 +
 VueWebCoreApi/Tools/ExcelList.cs                        |    2 
 VueWebCoreApi/DLL/DAL/ProductModelDAL.cs                |   10 
 VueWebCoreApi/wwwroot/Excel/工序设置.xls                    |    0 
 VueWebCoreApi/Controllers/GeneralBasicDataController.cs |   72 ++
 VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs                |   26 
 VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs                |  635 ++++++++++++++++++++++--
 VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs        |    6 
 VueWebCoreApi/Models/MaterialCraftsSave.cs              |   73 ++
 VueWebCoreApi/Models/TFlw_Rteqp.cs                      |   54 ++
 16 files changed, 1,317 insertions(+), 138 deletions(-)

diff --git a/VueWebCoreApi/Controllers/BasicSettingController.cs b/VueWebCoreApi/Controllers/BasicSettingController.cs
index 004da7c..cfc18a6 100644
--- a/VueWebCoreApi/Controllers/BasicSettingController.cs
+++ b/VueWebCoreApi/Controllers/BasicSettingController.cs
@@ -31,14 +31,15 @@
         /// </summary>
         /// <param name="storg_code">缁勭粐缂栫爜</param>
         /// <param name="storg_name">缁勭粐鍚嶇О</param>
+        /// <param name="torgtype_code">缁勭粐绫诲瀷缂栫爜</param>
         /// <returns></returns>
         [Route(template: "STorgData")]
         [HttpGet]
-        public JsonResult STorgData(string storg_code, string storg_name)
+        public JsonResult STorgData(string storg_code, string storg_name,string torgtype_code)
         {
             var token = HttpContext.Request.Headers["Token"].ToString();
             User us = JwtTools.Denocode(token.ToString());
-            mes = BasicSettingBLL.STorgData(storg_code, storg_name);
+            mes = BasicSettingBLL.STorgData(storg_code, storg_name, torgtype_code);
             return Json(mes);
         }
         #endregion
@@ -60,10 +61,11 @@
             string leve = obj["leve"].ToString(); //灞傜骇缂栫爜
             string parent_id = obj["parent_id"].ToString(); //parent_id
             string storgcode = obj["storgcode"].ToString(); //鎵�灞炵粍缁囩紪鐮�
+            string torgtype_code = obj["torgtype_code"].ToString(); //缁勭粐绫诲瀷缂栫爜
             string torg_seq = obj["torg_seq"].ToString(); //鎺掑簭搴忓彿
             string status = obj["status"].ToString(); //鐘舵��
             string OperType = obj["OperType"].ToString();  //鎿嶄綔绫诲瀷
-            mes = BasicSettingBLL.AddUpdateOrganization(OrganCode, OrganName, leve, parent_id, storgcode, torg_seq, status, OperType, us);
+            mes = BasicSettingBLL.AddUpdateOrganization(OrganCode, OrganName, leve, parent_id, storgcode, torgtype_code, torg_seq, status, OperType, us);
             return Json(mes);
         }
         #endregion
@@ -881,22 +883,16 @@
         /// <summary>
         /// 宸ュ簭鏂板缂栬緫
         /// </summary>
-        /// <param name="obj">鎻愪氦鏁版嵁瀵硅薄</param>
+        /// <param name="OperType">鎿嶄綔绫诲瀷:Add/Update</param>
+        /// <param name="tflw_rteqp">鎻愪氦鏁版嵁</param>
         /// <returns></returns>
         [Route(template: "AddUpdateStep")]
         [HttpPost]
-        public JsonResult AddUpdateStep([FromBody] JObject obj)
+        public JsonResult AddUpdateStep(string OperType, TFlw_Rteqp tflw_rteqp)
         {
             var token = HttpContext.Request.Headers["Token"].ToString();
             User us = JwtTools.Denocode(token.ToString());
-            string stepid = obj["id"].ToString();    //宸ュ簭id(涓婚敭)
-            string stepcode = obj["stepcode"].ToString(); //宸ュ簭缂栫爜
-            string stepname = obj["stepname"].ToString(); //宸ュ簭鍚嶇О
-            string steptypecode = obj["steptypecode"].ToString(); //宸ュ簭绫诲瀷缂栫爜
-            string enable = obj["enable"].ToString();           //鍚敤鐘舵��
-            string description = obj["description"].ToString(); //宸ュ簭鎻忚堪
-            string OperType = obj["OperType"].ToString();  //鎿嶄綔绫诲瀷
-            mes = BasicSettingBLL.AddUpdateStep(stepid, stepcode, stepname, steptypecode, enable, description, us, OperType);
+            mes = BasicSettingBLL.AddUpdateStep(OperType, us, tflw_rteqp);
             return Json(mes);
         }
         #endregion
@@ -914,6 +910,41 @@
             var token = HttpContext.Request.Headers["Token"].ToString();
             User us = JwtTools.Denocode(token.ToString());
             mes = BasicSettingBLL.DeleteStep(stepcode, us);
+            return Json(mes);
+        }
+        #endregion
+
+        #region[宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐煡璇
+        /// <summary>
+        /// 宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐煡璇�
+        /// </summary>
+        /// <param name="stepcode">宸ュ簭缂栫爜</param>
+        /// <returns></returns>
+        [Route(template: "StepAssociationEqp")]
+        [HttpGet]
+        public JsonResult StepAssociationEqp(string stepcode)
+        {
+            var token = HttpContext.Request.Headers["Token"].ToString();
+            User us = JwtTools.Denocode(token.ToString());
+            mes = BasicSettingBLL.StepAssociationEqp(stepcode, us);
+            return Json(mes);
+        }
+        #endregion
+
+        #region [宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐彁浜
+        /// <summary>
+        /// 宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐彁浜�
+        /// </summary>
+        /// <param name="stepcode">宸ュ簭缂栫爜</param>
+        /// <param name="json">鎻愪氦鏁版嵁</param>
+        /// <returns></returns>
+        [Route(template: "SaveStepAssociationEqp")]
+        [HttpPost]
+        public JsonResult SaveStepAssociationEqp(string stepcode, List<ObjectData> json)
+        {
+            var token = HttpContext.Request.Headers["Token"].ToString();
+            User us = JwtTools.Denocode(token.ToString());
+            mes = BasicSettingBLL.SaveStepAssociationEqp(stepcode, us, json);
             return Json(mes);
         }
         #endregion
@@ -961,7 +992,6 @@
         [HttpGet]
         public JsonResult RouteSelectStep(string partcode,string routecode)
         {
-
             mes = BasicSettingBLL.RouteSelectStep(partcode, routecode);
             return Json(mes);
         }
diff --git a/VueWebCoreApi/Controllers/GeneralBasicDataController.cs b/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
index 0c183c1..21132a2 100644
--- a/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
+++ b/VueWebCoreApi/Controllers/GeneralBasicDataController.cs
@@ -17,6 +17,20 @@
         ToMessage mes = new ToMessage();
         RedisCommon redis = new RedisCommon();
 
+        #region[缁勭粐鏋舵瀯绫诲瀷璧勬枡]
+        /// <summary>
+        /// 缁勭粐鏋舵瀯绫诲瀷璧勬枡
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "TOrganTypeDate")]
+        [HttpGet]
+        public JsonResult TOrganTypeDate()
+        {
+            mes = GeneralBasicDataBLL.TOrganTypeDate();
+            return Json(mes);
+        }
+        #endregion
+
         #region[缁勭粐鏋舵瀯鍩虹璧勬枡]
         /// <summary>
         /// 缁勭粐鏋舵瀯鍩虹璧勬枡
@@ -41,6 +55,20 @@
         public JsonResult PrentOrganizationNoCompany()
         {
             mes = GeneralBasicDataBLL.PrentOrganizationNoCompany();
+            return Json(mes);
+        }
+        #endregion
+
+        #region[缁勭粐鏋舵瀯杞﹂棿鍩虹璧勬枡]
+        /// <summary>
+        /// 缁勭粐鏋舵瀯杞﹂棿鍩虹璧勬枡
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "TorgWkshop")]
+        [HttpGet]
+        public JsonResult TorgWkshop()
+        {
+            mes = GeneralBasicDataBLL.TorgWkshop();
             return Json(mes);
         }
         #endregion
@@ -183,6 +211,21 @@
         }
         #endregion
 
+        #region[杞﹂棿鏌ユ壘璁惧鍩虹璧勬枡]
+        /// <summary>
+        /// 杞﹂棿鏌ユ壘璁惧鍩虹璧勬枡
+        /// </summary>
+        /// <param name="wkshopcode">杞﹂棿缂栫爜瀛楃涓查泦鍚�</param>
+        /// <returns></returns>
+        [Route(template: "WkshopEqpPermissions")]
+        [HttpGet]
+        public JsonResult WkshopEqpPermissions(string wkshopcode)
+        {
+            mes = GeneralBasicDataBLL.WkshopEqpPermissions(wkshopcode);
+            return Json(mes);
+        }
+        #endregion
+
         #region[璁惧绫诲瀷缂栫爜鏌ユ壘璁惧淇℃伅]
         /// <summary>
         /// 璁惧绫诲瀷缂栫爜鏌ユ壘璁惧淇℃伅
@@ -265,6 +308,20 @@
         }
         #endregion
 
+        #region[寰�鏉ュ崟浣嶇被鍨嬪熀纭�璧勬枡]
+        /// <summary>
+        /// 寰�鏉ュ崟浣嶇被鍨嬪熀纭�璧勬枡
+        /// </summary>
+        /// <returns></returns>
+        [Route(template: "CustomerTypePermissions")]
+        [HttpGet]
+        public JsonResult CustomerTypePermissions()
+        {
+            mes = GeneralBasicDataBLL.CustomerTypePermissions();
+            return Json(mes);
+        }
+        #endregion
+
         #region[寰�鏉ュ崟浣嶅熀纭�璧勬枡]
         /// <summary>
         /// 寰�鏉ュ崟浣嶅熀纭�璧勬枡
@@ -279,6 +336,21 @@
         }
         #endregion
 
+        #region[寰�鏉ュ崟浣嶇被鍨嬫煡鎵惧線鏉ュ崟浣嶅熀纭�璧勬枡]
+        /// <summary>
+        /// 寰�鏉ュ崟浣嶇被鍨嬫煡鎵惧線鏉ュ崟浣嶅熀纭�璧勬枡
+        /// </summary>
+        /// <param name="customertypecode">寰�鏉ュ崟浣嶇被鍨嬬紪鐮佸瓧绗︿覆闆�</param>
+        /// <returns></returns>
+        [Route(template: "CustomerTypeSearchPermissions")]
+        [HttpGet]
+        public JsonResult CustomerTypeSearchPermissions(string customertypecode)
+        {
+            mes = GeneralBasicDataBLL.CustomerTypeSearchPermissions(customertypecode);
+            return Json(mes);
+        }
+        #endregion
+
         #region[瀛樿揣鏍戝瀷鍩虹璧勬枡]
         /// <summary>
         /// 瀛樿揣鏍戝瀷鍩虹璧勬枡
diff --git a/VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs b/VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs
index 25d9447..29891fb 100644
--- a/VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs
+++ b/VueWebCoreApi/DLL/BLL/BasicSettingBLL.cs
@@ -49,16 +49,16 @@
 
 
         #region[缁勭粐鏋舵瀯,鏌ヨ缁勭粐淇℃伅]
-        public static ToMessage STorgData(string storg_code, string storg_name)
+        public static ToMessage STorgData(string storg_code, string storg_name,string torgtype_code)
         {
-            return BasicSettingDAL.STorgData(storg_code, storg_name);
+            return BasicSettingDAL.STorgData(storg_code, storg_name, torgtype_code);
         }
         #endregion
 
         #region [缁勭粐鏋舵瀯鏂板缂栬緫]
-        public static ToMessage AddUpdateOrganization(string OrganCode, string OrganName, string leve, string parent_id,string storgcode, string torg_seq, string status, string OperType, User us)
+        public static ToMessage AddUpdateOrganization(string OrganCode, string OrganName, string leve, string parent_id,string storgcode,string torgtype_code, string torg_seq, string status, string OperType, User us)
         {
-            return BasicSettingDAL.AddUpdateOrganization(OrganCode, OrganName, leve, parent_id, storgcode, torg_seq, status, OperType, us);
+            return BasicSettingDAL.AddUpdateOrganization(OrganCode, OrganName, leve, parent_id, storgcode, torgtype_code, torg_seq, status, OperType, us);
         }
         #endregion
 
@@ -350,9 +350,9 @@
         #endregion
 
         #region[宸ュ簭鏂板缂栬緫]
-        public static ToMessage AddUpdateStep(string stepid, string stepcode, string stepname, string steptypecode, string enable, string description, User us, string operType)
+        public static ToMessage AddUpdateStep(string operType, User us, TFlw_Rteqp tflw_rteqp)
         {
-            return BasicSettingDAL.AddUpdateStep(stepid,stepcode, stepname, steptypecode, enable, description, us, operType);
+            return BasicSettingDAL.AddUpdateStep(operType,us, tflw_rteqp);
         }
         #endregion
 
@@ -363,6 +363,20 @@
         }
         #endregion
 
+        #region[宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐煡璇
+        public static ToMessage StepAssociationEqp(string stepcode,User us)
+        {
+            return BasicSettingDAL.StepAssociationEqp(stepcode, us);
+        }
+        #endregion
+
+        #region [宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐彁浜
+        public static ToMessage SaveStepAssociationEqp(string stepcode, User us, List<ObjectData> json)
+        {
+            return BasicSettingDAL.SaveStepAssociationEqp(stepcode, us, json);
+        }
+        #endregion
+
 
         #region[鑺傛媿宸ヤ环,浜у搧淇℃伅鏌ヨ]
         public static ToMessage PartSelect()
diff --git a/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs b/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
index f772eed..b93506e 100644
--- a/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
+++ b/VueWebCoreApi/DLL/BLL/GeneralBasicDataBLL.cs
@@ -9,6 +9,12 @@
 {
     public class GeneralBasicDataBLL
     {
+        #region[缁勭粐鏋舵瀯绫诲瀷璧勬枡]
+        public static ToMessage TOrganTypeDate()
+        {
+            return GeneralBasicDataDAL.TOrganTypeDate();
+        }
+        #endregion
 
         #region [缁勭粐鏋舵瀯鏌ユ壘]
         public static ToMessage PrentOrganization()
@@ -21,6 +27,13 @@
         public static ToMessage PrentOrganizationNoCompany()
         {
             return GeneralBasicDataDAL.PrentOrganizationNoCompany();
+        }
+        #endregion
+
+        #region[缁勭粐鏋舵瀯杞﹂棿鍩虹璧勬枡]
+        public static ToMessage TorgWkshop()
+        {
+            return GeneralBasicDataDAL.TorgWkshop();
         }
         #endregion
 
@@ -95,6 +108,13 @@
         }
         #endregion
 
+        #region[杞﹂棿鏌ユ壘璁惧鍩虹璧勬枡]
+        public static ToMessage WkshopEqpPermissions(string wkshopcode)
+        {
+            return GeneralBasicDataDAL.WkshopEqpPermissions(wkshopcode);
+        }
+        #endregion
+
         #region[璁惧绫诲瀷缂栫爜鏌ユ壘璁惧淇℃伅]
         public static ToMessage EqpTypecodeSeachEqpPermissions(string eqptypecode)
         {
@@ -137,6 +157,13 @@
         }
         #endregion
 
+        #region[寰�鏉ュ崟浣嶇被鍨嬪熀纭�璧勬枡]
+        public static ToMessage CustomerTypePermissions()
+        {
+            return GeneralBasicDataDAL.CustomerTypePermissions();
+        }
+        #endregion
+
         #region[寰�鏉ュ崟浣嶅熀纭�璧勬枡]
         public static ToMessage CustomerPermissions()
         {
@@ -144,6 +171,13 @@
         }
         #endregion
 
+        #region[寰�鏉ュ崟浣嶇被鍨嬫煡鎵惧線鏉ュ崟浣嶅熀纭�璧勬枡]
+        public static ToMessage CustomerTypeSearchPermissions(string customertypecode)
+        {
+            return GeneralBasicDataDAL.CustomerTypeSearchPermissions(customertypecode);
+        }
+        #endregion
+
         #region[瀛樿揣鏍戝瀷鍩虹璧勬枡]
         public static ToMessage InventoryTreePermissions()
         {
diff --git a/VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs b/VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs
index 5ab8f29..f92dc56 100644
--- a/VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/BasicSettingDAL.cs
@@ -249,12 +249,17 @@
 
 
         #region[缁勭粐鏋舵瀯,鏌ヨ缁勭粐淇℃伅]
-        public static ToMessage STorgData(string storg_code, string storg_name)
+        public static ToMessage STorgData(string storg_code, string storg_name,string torgtype_code)
         {
             var dynamicParams = new DynamicParameters();
             string search = "";
             try
             {
+                if (torgtype_code != "" && torgtype_code != null)
+                {
+                    search += "and T.torgtype_code=@torgtype_code ";
+                    dynamicParams.Add("@torgtype_code", torgtype_code);
+                }
                 if (storg_code != "" && storg_code != null)
                 {
                     search += "and T.torg_code like '%'+@storg_code+'%' ";
@@ -265,9 +270,10 @@
                     search += "and T.torg_name like '%'+@storg_name+'%' ";
                     dynamicParams.Add("@storg_name", storg_name);
                 }
-                var sql = @"select T.id,T.parent_id,T.torg_code,T.torg_name,T.status,T.leve,T.torg_seq,
+                var sql = @"select T.id,T.parent_id,T.torg_code,T.torg_name,T.torgtype_code,Y.torgtype_name,T.status,T.leve,T.torg_seq,
                             T.lm_user  as usercode,U.username,T.lm_date  
                             from TOrganization T
+                            left join TOrganType Y on T.torgtype_code=Y.torgtype_code
                             left join  TUser U on T.lm_user=U.usercode
                             where 1=1" + search + " order by T.lm_date desc";
                 var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -288,7 +294,7 @@
         #endregion
 
         #region[鏂板缂栬緫缁勭粐鏋舵瀯]
-        public static ToMessage AddUpdateOrganization(string OrganCode, string OrganName, string leve, string parent_id, string storgcode, string torg_seq, string status, string OperType, User us)
+        public static ToMessage AddUpdateOrganization(string OrganCode, string OrganName, string leve, string parent_id, string storgcode,string torgtype_code, string torg_seq, string status, string OperType, User us)
         {
             string sql = "";
             List<object> list = new List<object>();
@@ -309,8 +315,8 @@
                         return mes;
                     }
 
-                    sql = @"insert into TOrganization(parent_id,torg_code,torg_name,status,leve,torg_seq,lm_user,lm_date) 
-                            values(@parent_id,@torg_code,@torg_name,@status,@leve,@torg_seq,@lm_user,@lm_date)";
+                    sql = @"insert into TOrganization(parent_id,torg_code,torg_name,torgtype_code,status,leve,torg_seq,lm_user,lm_date) 
+                            values(@parent_id,@torg_code,@torg_name,@torgtype_code,@status,@leve,@torg_seq,@lm_user,@lm_date)";
                     list.Add(new
                     {
                         str = sql,
@@ -319,6 +325,7 @@
                             parent_id = storgcode,
                             torg_code = OrganCode,
                             torg_name = OrganName,
+                            torgtype_code= torgtype_code,
                             status = status,
                             leve = leve,
                             torg_seq = torg_seq,
@@ -387,7 +394,7 @@
                     }
 
                     //淇敼褰撳墠缁勭粐鏁版嵁
-                    sql = @"update TOrganization set parent_id=@parent_id,torg_name=@torg_name,leve=@leve,torg_seq=@torg_seq,lm_user=@lm_user,lm_date=@lm_date 
+                    sql = @"update TOrganization set parent_id=@parent_id,torg_name=@torg_name,torgtype_code=@torgtype_code,leve=@leve,torg_seq=@torg_seq,lm_user=@lm_user,lm_date=@lm_date 
                             where torg_code=@torg_code";
                     list.Add(new
                     {
@@ -397,6 +404,7 @@
                             parent_id = storgcode,
                             torg_code = OrganCode,
                             torg_name = OrganName,
+                            torgtype_code= torgtype_code,
                             leve = leve,
                             torg_seq = torg_seq,
                             lm_user = us.usercode,
@@ -489,7 +497,7 @@
                 if (cont > 0)
                 {
                     //鍐欏叆鎿嶄綔璁板綍琛�
-                    LogHelper.DbOperateLog(us.usercode, "鏂板", "鍒犻櫎浜嗙粍缁�:" + orgcode, us.usertype);
+                    LogHelper.DbOperateLog(us.usercode, "鍒犻櫎", "鍒犻櫎浜嗙粍缁�:" + orgcode, us.usertype);
                     mes.code = "200";
                     mes.count = 0;
                     mes.message = "鍒犻櫎鎿嶄綔鎴愬姛!";
@@ -3127,7 +3135,7 @@
                 else
                 {
                     //鍒ゆ柇褰撳墠宸ヨ壓璺嚎鏄惁鏈夎缃妭鎷嶅伐浠�(鏈夎缃紝鎻愮ず鍏堝垹闄よ妭鎷嶅伐浠疯缃�)
-                    sql = @"select *   from TPrteEqp_Stad where route_code=@routecode";
+                    sql = @"select *   from TPrteStep_Price where route_code=@routecode";
                     dynamicParams.Add("@routecode", routecode);
                     var data0 = DapperHelper.selectdata(sql, dynamicParams);
                     if (data0.Rows.Count > 0)
@@ -3218,7 +3226,7 @@
                 }
                 // --------------鏌ヨ鎸囧畾鏁版嵁--------------
                 var total = 0; //鎬绘潯鏁�
-                var sql = @"select A.id,A.stepcode,A.stepname,A.flwtype,A.enable,A.descr,U.username as lm_user,A.lm_date
+                var sql = @"select A.id,A.stepcode,A.stepname,A.flwtype,A.enable,A.is_eqp,A.descr,U.username as lm_user,A.lm_date
                             from TStep A
                             left join TUser U on A.lm_user=U.usercode
                             where A.is_delete<>'1' " + search;
@@ -3240,7 +3248,7 @@
         #endregion
 
         #region[宸ュ簭鏂板缂栬緫]
-        public static ToMessage AddUpdateStep(string stepid, string stepcode, string stepname, string steptypecode, string enable, string description, User us, string operType)
+        public static ToMessage AddUpdateStep(string operType, User us, TFlw_Rteqp tflw_rteqp)
         {
             var dynamicParams = new DynamicParameters();
             List<object> list = new List<object>();
@@ -3250,7 +3258,7 @@
                 if (operType == "Add")
                 {
                     sql = @"select *  from TStep where stepcode=@stepcode";
-                    dynamicParams.Add("@stepcode", stepcode);
+                    dynamicParams.Add("@stepcode", tflw_rteqp.stepcode);
                     var data = DapperHelper.selectdata(sql, dynamicParams);
                     if (data.Rows.Count > 0)
                     {
@@ -3260,20 +3268,52 @@
                         mes.data = null;
                         return mes;
                     }
+                    //鍐欏叆宸ュ簭琛�
                     sql = @"insert into TStep(stepcode,stepname,flwtype,enable,descr,lm_user,lm_date) 
                                values(@stepcode,@stepname,@steptypecode,@enable,@description,@username,@CreateDate)";
-                    dynamicParams.Add("@stepcode", stepcode);
-                    dynamicParams.Add("@stepname", stepname);
-                    dynamicParams.Add("@steptypecode", steptypecode);
-                    dynamicParams.Add("@enable", enable);
-                    dynamicParams.Add("@description", description);
-                    dynamicParams.Add("@username", us.usercode);
-                    dynamicParams.Add("@CreateDate", DateTime.Now.ToString());
-                    int cont = DapperHelper.SQL(sql, dynamicParams);
-                    if (cont > 0)
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            stepcode = tflw_rteqp.stepcode,
+                            stepname = tflw_rteqp.stepname,
+                            steptypecode = tflw_rteqp.steptypecode,
+                            enable = tflw_rteqp.enable,
+                            description = tflw_rteqp.description,
+                            username = us.usercode,
+                            CreateDate = DateTime.Now.ToString()
+                        }
+                    });
+                    //鍐欏叆宸ュ簭鍏宠仈璁惧琛�
+                    if (tflw_rteqp.children.Count > 0)
+                    {
+                        for (int i = 0; i < tflw_rteqp.children.Count; i++)
+                        {
+                            sql = @"insert into TFlw_Rteqp(eqp_code,step_code,style,lm_user,lm_date) 
+                               values(@eqp_code,@step_code,@style,@lm_user,@lm_date)";
+                            list.Add(new
+                            {
+                                str = sql,
+                                parm = new
+                                {
+                                    eqp_code = tflw_rteqp.children[i].eqpcode,
+                                    step_code = tflw_rteqp.children[i].stepcode,
+                                    style = tflw_rteqp.children[i].style,
+                                    lm_user = us.usercode,
+                                    lm_date = DateTime.Now.ToString()
+                                }
+                            });
+                        }
+                        //鏍囪鐗╂枡琛ㄥ叧鑱斿伐鑹鸿矾绾挎爣璇�
+                        sql = @"update TStep set is_eqp='Y' where stepcode=@stepcode";
+                        list.Add(new { str = sql, parm = new { stepcode = tflw_rteqp.stepcode } });
+                    }
+                    bool aa = DapperHelper.DoTransaction(list);
+                    if (aa)
                     {
                         //鍐欏叆鎿嶄綔璁板綍琛�
-                        LogHelper.DbOperateLog(us.usercode, "鏂板", "鏂板浜嗗伐搴�:" + stepcode, us.usertype);
+                        LogHelper.DbOperateLog(us.usercode, "鏂板", "鏂板浜嗗伐搴�:" + tflw_rteqp.stepcode, us.usertype);
                         mes.code = "200";
                         mes.count = 0;
                         mes.message = "鏂板鎿嶄綔鎴愬姛!";
@@ -3290,13 +3330,14 @@
                 if (operType == "Update")
                 {
                     list.Clear();
-                    //濡傛灉褰撳墠宸ュ簭浣跨敤鐘舵�佷綅N(鏈惎鐢�),闇�鍒ゆ柇褰撳墠宸ュ簭鏄惁琚伐鍗曞紩鐢�
-                    if (enable == "N")
+                    //濡傛灉褰撳墠宸ュ簭浣跨敤鐘舵�佷綅N(鏈惎鐢�)
+                    if (tflw_rteqp.enable == "N")
                     {
-                        var sql0 = @"select *  from TK_Wrk_Step A where A.step_code=@stepcode";
-                        dynamicParams.Add("@stepcode", stepcode);
-                        var data = DapperHelper.selectdata(sql0, dynamicParams);
-                        if (data.Rows.Count > 0)
+                        //闇�鍒ゆ柇褰撳墠宸ュ簭鏄惁琚伐鍗曞紩鐢�
+                        sql = @"select *  from TK_Wrk_Step A where A.step_code=@stepcode";
+                        dynamicParams.Add("@stepcode", tflw_rteqp.stepcode);
+                        var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                        if (data0.Rows.Count > 0)
                         {
                             mes.code = "300";
                             mes.count = 0;
@@ -3305,14 +3346,61 @@
                             return mes;
                         }
                     }
+                    //鏍规嵁宸ュ簭鏌ユ壘鍘嗗彶璁惧
+                    sql = @"select step_code as stepcode,eqp_code as eqpcode,style  from TFlw_Rteqp  where step_code=@stepcode";
+                    dynamicParams.Add("@stepcode", tflw_rteqp.stepcode);
+                    var data = DapperHelper.select<StepEqpData>(sql, dynamicParams);
+                    // 鍘嗗彶涓湁鑰屾彁浜や腑娌℃湁鐨勫厓绱�(鎵ц鍒犻櫎)  
+                    var inBNotInA = data.Where(b => !tflw_rteqp.children.Any(a => a.eqpcode == b.eqpcode)).ToList();
+                    for (int i = 0; i < inBNotInA.Count; i++)
+                    {
+                        //鍒犻櫎宸ュ簭鍏宠仈璁惧琛�
+                        sql = @"delete TFlw_Rteqp  where step_code=@step_code and eqp_code=@eqp_code";
+                        list.Add(new { str = sql, parm = new { step_code = inBNotInA[i].stepcode, eqp_code= inBNotInA[i].eqpcode } });
+                        //鍒犻櫎璁惧鑺傛媿宸ヤ环琛�
+                        sql = @"delete TPrteEqp_Stad  where step_code=@step_code and eqp_code=@eqp_code";
+                        list.Add(new { str = sql, parm = new { step_code = inBNotInA[i].stepcode, eqp_code = inBNotInA[i].eqpcode } });
+                    }
+                    // 鎻愪氦涓湁鑰屽巻鍙蹭腑娌℃湁鐨勫厓绱�(鎵ц鍐欏叆)
+                    var inANotInB = tflw_rteqp.children.Where(a => !data.Any(b => b.eqpcode == a.eqpcode)).ToList();
+                    for (int i = 0; i < inANotInB.Count; i++)
+                    {
+                        //鍐欏叆宸ュ簭鍏宠仈璁惧琛�
+                        sql = @"insert into TFlw_Rteqp(eqp_code,step_code,style,lm_user,lm_date) 
+                               values(@eqp_code,@step_code,@style,@lm_user,@lm_date)";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                eqp_code = inANotInB[i].eqpcode,
+                                step_code = inANotInB[i].stepcode,
+                                style = inANotInB[i].style,
+                                lm_user = us.usercode,
+                                lm_date = DateTime.Now.ToString()
+                            }
+                        });
+                    }
+                    if (tflw_rteqp.children.Count > 0)
+                    {
+                        //鏍囪鐗╂枡琛ㄥ叧鑱斿伐鑹鸿矾绾挎爣璇�
+                        sql = @"update TStep set is_eqp='Y' where stepcode=@stepcode";
+                        list.Add(new { str = sql, parm = new { stepcode = tflw_rteqp.stepcode } });
+                    }
+                    if (tflw_rteqp.children.Count <= 0) 
+                    {
+                        //鏍囪鐗╂枡琛ㄥ叧鑱斿伐鑹鸿矾绾挎爣璇�
+                        sql = @"update TStep set is_eqp='N' where stepcode=@stepcode";
+                        list.Add(new { str = sql, parm = new { stepcode = tflw_rteqp.stepcode } });
+                    }
                     sql = @"update TStep set stepname=@stepname,flwtype=@steptypecode,enable=@enable,descr=@description,
                                 lm_user=@username,lm_date=@CreateDate where id=@stepid";
-                    list.Add(new { str = sql, parm = new { stepid = stepid, stepname = stepname, steptypecode = steptypecode, enable = enable, description = description, username = us.usercode, CreateDate = DateTime.Now.ToString() } });
+                    list.Add(new { str = sql, parm = new { stepid = tflw_rteqp.id, stepname = tflw_rteqp.stepname, steptypecode = tflw_rteqp.steptypecode, enable = tflw_rteqp.enable, description = tflw_rteqp.description, username = us.usercode, CreateDate = DateTime.Now.ToString() } });
                     bool aa = DapperHelper.DoTransaction(list);
                     if (aa)
                     {
                         //鍐欏叆鎿嶄綔璁板綍琛�
-                        LogHelper.DbOperateLog(us.usercode, "淇敼", "淇敼浜嗗伐搴�:" + stepcode, us.usertype);
+                        LogHelper.DbOperateLog(us.usercode, "淇敼", "淇敼浜嗗伐搴�:" + tflw_rteqp.stepcode, us.usertype);
                         mes.code = "200";
                         mes.count = 0;
                         mes.message = "淇敼鎿嶄綔鎴愬姛!";
@@ -3347,6 +3435,18 @@
             try
             {
                 list.Clear();
+                //褰撳墠宸ュ簭鏄惁璁剧疆宸ヤ环
+                sql = @"select *  from TPrteStep_Price A where A.step_code=@stepcode";
+                dynamicParams.Add("@stepcode", stepcode);
+                var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (data0.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "宸ュ簭鏈夎缃伐浠�,涓嶅厑璁稿垹闄�!";
+                    mes.data = null;
+                    return mes;
+                }
                 //褰撳墠宸ュ簭鏄惁鍏宠仈宸ュ崟
                 sql = @"select *  from TK_Wrk_Step A where A.step_code=@stepcode";
                 dynamicParams.Add("@stepcode", stepcode);
@@ -3359,6 +3459,9 @@
                     mes.data = null;
                     return mes;
                 }
+                //鍒犻櫎宸ュ簭鍏宠仈宸ヤ綔绔欒〃
+                sql = @"delete TFlw_Rteqp  where step_code=@stepcode";
+                list.Add(new { str = sql, parm = new { stepcode = stepcode } });
                 //鍒犻櫎宸ュ簭
                 sql = @"delete TStep  where stepcode=@stepcode";
                 list.Add(new { str = sql, parm = new { stepcode = stepcode } });
@@ -3390,6 +3493,188 @@
             return mes;
         }
         #endregion
+
+        #region[宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐煡璇
+        public static ToMessage StepAssociationEqp(string stepcode, User us)
+        {
+            string sql = "";
+            var dynamicParams = new DynamicParameters();
+            List<StepEqp> list = new List<StepEqp>();
+            try
+            {
+                //鑾峰彇宸ヤ綔绔欓泦鍚�(杞﹂棿銆佸鍗忎緵搴斿晢,鍖呭惈宸茬粦瀹氬伐浣滅珯鏍囪瘑)
+                sql = @"select distinct T.torg_code as wksp_code,T.torg_name as wksp_name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag 
+                        from TOrganization T
+                         left join(
+                          select distinct A.eqp_code,B.torg_code as wksp_code  from TFlw_Rteqp A 
+                          inner join TEqpInfo B on A.eqp_code=B.code 
+                          where A.step_code=@stepcode   and B.enable='Y'
+                         ) B on T.torg_code=B.wksp_code where T.torgtype_code='W' 
+                         UNION ALL
+                         select distinct T.code as wksp_code,T.name as wksp_name,'W' as type,(case when B.customertype is null then 'N' else 'Y' end) flag 
+                         from TCustomerType T
+                         left join(
+                         select distinct A.eqp_code,B.customertype  from TFlw_Rteqp A 
+                         inner join TCustomer B on A.eqp_code=B.code 
+                         where A.step_code=@stepcode   
+                         ) B on T.code=B.customertype"; 
+                dynamicParams.Add("@stepcode", stepcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                for (int i = 0; i < data.Rows.Count; i++)
+                {
+                    StepEqp rout = new StepEqp();
+                    rout.code = data.Rows[i]["WKSP_CODE"].ToString();
+                    rout.name = data.Rows[i]["WKSP_NAME"].ToString();
+                    rout.type = data.Rows[i]["TYPE"].ToString();
+                    rout.flag = data.Rows[i]["FLAG"].ToString();
+                    rout.children = new List<StepEqpCn>();
+                    if (rout.type == "W") //澶栧崗渚涙柟
+                    {
+                        //鏍规嵁澶栧崗渚涙柟鏍囪瘑缂栫爜鏌ユ壘澶栧崗渚涙柟淇℃伅(鍖呭惈宸插叧鑱旀爣璇�)
+                        sql = @"select A.code,A.name,'W' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
+                                from TCustomer A
+                                left join(
+                                select distinct A.eqp_code  from TFlw_Rteqp A 
+                                inner join TCustomer B on A.eqp_code=B.code 
+                                where A.step_code=@stepcode and B.customertype=@wxcode 
+                                ) B on A.code=B.eqp_code where A.customertype=@wxcode ";
+                        dynamicParams.Add("@stepcode", stepcode);
+                        dynamicParams.Add("@wxcode", rout.code);
+                        var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                        for (int k = 0; k < data0.Rows.Count; k++)
+                        {
+                            StepEqpCn cn = new StepEqpCn();
+                            cn.code = data0.Rows[k]["CODE"].ToString();//澶栧崗渚涙柟缂栫爜
+                            cn.name = data0.Rows[k]["NAME"].ToString();//澶栧崗渚涙柟鍚嶇О
+                            cn.type = data0.Rows[k]["TYPE"].ToString();//宸ヤ綔绔欑被鍨�(E:璁惧 W:澶栧崗渚涙柟)
+                            cn.flag = data0.Rows[k]["FLAG"].ToString();//鍏宠仈鏍囪瘑
+                            rout.children.Add(cn);
+                        }
+                        list.Add(rout);
+                    }
+                    else
+                    {
+                        //鏍规嵁杞﹂棿缂栫爜鏌ユ壘璁惧(鍖呭惈宸插叧鑱旀爣璇�)
+                        sql = @"select A.code,A.name,'E' as type,(case when B.eqp_code is null then 'N' else 'Y' end) flag
+                                from TEqpInfo A
+                                left join(
+                                select distinct A.eqp_code  from TFlw_Rteqp A 
+                                inner join TEqpInfo B on A.eqp_code=B.code 
+                                where A.step_code=@stepcode  and B.enable='Y'
+                                ) B on A.code=B.eqp_code where A.torg_code=@wkspcode ";
+                        dynamicParams.Add("@stepcode", stepcode);
+                        dynamicParams.Add("@wkspcode", data.Rows[i]["WKSP_CODE"].ToString());
+                        var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                        for (int j = 0; j < data0.Rows.Count; j++)
+                        {
+                            StepEqpCn cn = new StepEqpCn();
+                            cn.code = data0.Rows[j]["CODE"].ToString();//璁惧缂栫爜
+                            cn.name = data0.Rows[j]["NAME"].ToString();//璁惧鍚嶇О
+                            cn.type = data0.Rows[j]["TYPE"].ToString();//宸ヤ綔绔欑被鍨�(E:璁惧 W:澶栧崗渚涙柟)
+                            cn.flag = data0.Rows[j]["FLAG"].ToString();//鍏宠仈鏍囪瘑
+                            rout.children.Add(cn);
+                        }
+                        list.Add(rout);
+                    }
+                }
+                mes.code = "200";
+                mes.message = "鏌ヨ鎴愬姛!";
+                mes.data = list;
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region [宸ュ簭瀹氫箟鍏宠仈宸ヤ綔绔欐彁浜
+        public static ToMessage SaveStepAssociationEqp(string stepcode, User us, List<ObjectData> json)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                list.Clear();
+                //鏍规嵁宸ュ簭鏌ユ壘鍘嗗彶璁惧
+                sql = @"select step_code as stepcode,eqp_code as eqpcode,style  from TFlw_Rteqp  where step_code=@stepcode";
+                dynamicParams.Add("@stepcode", stepcode);
+                var data = DapperHelper.select<StepEqpData>(sql, dynamicParams);
+                // 鍘嗗彶涓湁鑰屾彁浜や腑娌℃湁鐨勫厓绱�(鎵ц鍒犻櫎)  
+                var inBNotInA = data.Where(b => !json.Any(a => a.code == b.eqpcode)).ToList();
+                for (int i = 0; i < inBNotInA.Count; i++)
+                {
+                    //鍒犻櫎宸ュ簭鍏宠仈璁惧琛�
+                    sql = @"delete TFlw_Rteqp  where step_code=@step_code and eqp_code=@eqp_code";
+                    list.Add(new { str = sql, parm = new { step_code = inBNotInA[i].stepcode, eqp_code = inBNotInA[i].eqpcode } });
+                    //鍒犻櫎璁惧鑺傛媿宸ヤ环琛�
+                    sql = @"delete TPrteEqp_Stad  where step_code=@step_code and eqp_code=@eqp_code";
+                    list.Add(new { str = sql, parm = new { step_code = inBNotInA[i].stepcode, eqp_code = inBNotInA[i].eqpcode } });
+                }
+                // 鎻愪氦涓湁鑰屽巻鍙蹭腑娌℃湁鐨勫厓绱�(鎵ц鍐欏叆)
+                var inANotInB = json.Where(a => !data.Any(b => b.eqpcode == a.code)).ToList();
+                for (int i = 0; i < inANotInB.Count; i++)
+                {
+                    //鍐欏叆宸ュ簭鍏宠仈璁惧琛�
+                    sql = @"insert into TFlw_Rteqp(eqp_code,step_code,style,lm_user,lm_date) 
+                               values(@eqp_code,@step_code,@style,@lm_user,@lm_date)";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            eqp_code = inANotInB[i].code,
+                            step_code = stepcode,
+                            style = inANotInB[i].name,
+                            lm_user = us.usercode,
+                            lm_date = DateTime.Now.ToString()
+                        }
+                    });
+                }
+                if (json.Count > 0)
+                {
+                    //鏍囪鐗╂枡琛ㄥ叧鑱斿伐鑹鸿矾绾挎爣璇�
+                    sql = @"update TStep set is_eqp='Y' where stepcode=@stepcode";
+                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
+                }
+                if (json.Count <= 0)
+                {
+                    //鏍囪鐗╂枡琛ㄥ叧鑱斿伐鑹鸿矾绾挎爣璇�
+                    sql = @"update TStep set is_eqp='N' where stepcode=@stepcode";
+                    list.Add(new { str = sql, parm = new { stepcode = stepcode } });
+                }
+                bool aa = DapperHelper.DoTransaction(list);
+                if (aa)
+                {
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.message = "鎿嶄綔鎴愬姛!";
+                    mes.data = null;
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "鎿嶄綔澶辫触!";
+                    mes.data = null;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
 
 
         #region[鑺傛媿宸ヤ环,浜у搧淇℃伅鏌ヨ]
@@ -3437,28 +3722,79 @@
                         inner join TFlw_Rout B on A.route_code=B.code 
                         where A.materiel_code=@partcode and B.is_delete<>'1' and A.is_delete<>'1'";
                     dynamicParams.Add("@partcode", partcode);
+                    var data = DapperHelper.selectdata(sql, dynamicParams);
+                    mes.code = "200";
+                    mes.message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
                 }
                 else //宸ュ簭鐗�
                 {
                     //閫氳繃浜у搧缂栫爜鏌ユ壘鍏宠仈鐨勫伐搴忎俊鎭�
-                    sql = @"select A.step_seq,A.step_code,S.stepname as step_name,A.unprice,A.isbott,A.isend   
+                    sql = @"select A.step_seq as seq,A.step_code as code,S.stepname as name,A.unprice,A.isbott,A.isend,S.flwtype   
                             from (
-                            select S.materiel_code,R.step_seq,S.step_code,S.unprice,R.isbott,R.isend   from TPrteEqp_Stad S
+                            select S.materiel_code,R.step_seq,S.step_code,S.unprice,R.isbott,R.isend   from TPrteStep_Price S
                             inner join TMateriel_Step R on S.materiel_code=R.materiel_code and S.step_code=R.step_code
-                            where S.materiel_code=@partcode
+                            where S.route_code is null and S.materiel_code=@partcode
                             union all
                             select  materiel_code,step_seq,step_code,'0' as unprice,isbott,isend from TMateriel_Step 
                             where materiel_code=@partcode and materiel_code+step_code
-                            not in(select materiel_code+step_code  from TPrteEqp_Stad
-                            where materiel_code=@partcode)
+                            not in(select materiel_code+step_code  from TPrteStep_Price
+                            where route_code is null and materiel_code=@partcode)
                             ) as A
-                            left join TStep S on A.step_code=S.stepcode";
+                            left join TStep S on A.step_code=S.stepcode
+                            A.step_seq";
                     dynamicParams.Add("@partcode", partcode);
+                    var parents = DapperHelper.select<SubData>(sql, dynamicParams);
+                    for (int i = 0; i < parents.Count; i++)
+                    {
+                        if (parents[i].flwtype == "Z")
+                        {
+                            //閫氳繃浜у搧缂栫爜+宸ュ簭缂栫爜鏌ユ壘瀵瑰簲璁惧淇℃伅
+                            sql = @"select A.eqp_code,E.name as eqp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice   
+                                from (
+                                select S.eqp_code,S.eqp_value,S.stand_value,S.cavity_qty,S.unprice  from TPrteEqp_Stad S
+                                inner join TMateriel_Step R on S.materiel_code=R.materiel_code and S.step_code=R.step_code
+                                where S.materiel_code=@partcode and S.step_code=@stepcode and S.route_code is null
+                                union all
+                                select  R.eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice from TMateriel_Step S
+                                inner join TFlw_Rteqp R on S.step_code=R.step_code
+                                where S.materiel_code=@partcode and S.step_code=@stepcode and S.materiel_code+S.step_code+R.eqp_code
+                                not in(select materiel_code+step_code+eqp_code  from TPrteEqp_Stad
+                                where materiel_code=@partcode and step_code=@stepcode and route_code is null)
+                                ) as A
+                                left join TEqpInfo E on A.eqp_code=E.code";
+                            dynamicParams.Add("@partcode", partcode);
+                            dynamicParams.Add("@stepcode", parents[i].code);
+                            var children = DapperHelper.select<EqpSubData>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                        else 
+                        {
+                            //閫氳繃浜у搧缂栫爜+宸ュ簭缂栫爜鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                            sql = @"select A.eqp_code,C.name as eqp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice   
+                                from (
+                                select S.eqp_code,S.eqp_value,S.stand_value,S.cavity_qty,S.unprice  from TPrteEqp_Stad S
+                                inner join TMateriel_Step R on S.materiel_code=R.materiel_code and S.step_code=R.step_code
+                                where S.materiel_code=@partcode and S.step_code=@stepcode and S.route_code is null
+                                union all
+                                select  R.eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice from TMateriel_Step S
+                                inner join TFlw_Rteqp R on S.step_code=R.step_code
+                                where S.materiel_code=@partcode and S.step_code=@stepcode and S.materiel_code+S.step_code+R.eqp_code
+                                not in(select materiel_code+step_code+eqp_code  from TPrteEqp_Stad
+                                where materiel_code=@partcode and step_code=@stepcode and route_code is null)
+                                ) as A
+                                left join TCustomer C on A.eqp_code=C.code";
+                            dynamicParams.Add("@partcode", partcode);
+                            dynamicParams.Add("@stepcode", parents[i].code);
+                            var children = DapperHelper.select<EqpSubData>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                        
+                    }
+                    mes.code = "200";
+                    mes.message = "鏌ヨ鎴愬姛!";
+                    mes.data = parents;
                 }
-                var data = DapperHelper.selectdata(sql, dynamicParams);
-                mes.code = "200";
-                mes.message = "鏌ヨ鎴愬姛!";
-                mes.data = data;
             }
             catch (Exception e)
             {
@@ -3479,25 +3815,73 @@
             try
             {
                 //閫氳繃宸ヨ壓璺嚎缂栫爜鏌ユ壘鍏宠仈鐨勫伐搴忎俊鎭�
-                sql = @"select A.step_seq,A.step_code,S.stepname as step_name,A.unprice,A.isbott,A.isend   
+                sql = @"select A.step_seq as seq,A.step_code as code,S.stepname as name,A.unprice,A.isbott,A.isend,S.flwtype   
                         from (
-                        select S.materiel_code,R.seq as step_seq,S.step_code,S.unprice,R.first_choke as isbott,R.last_choke as isend   from TPrteEqp_Stad S
+                        select S.materiel_code,R.seq as step_seq,S.step_code,S.unprice,R.first_choke as isbott,R.last_choke as isend   from TPrteStep_Price S
                         inner join TFlw_Rtdt R on  S.route_code=R.rout_code and S.step_code=R.step_code
                         where S.materiel_code=@partcode and S.route_code=@route_code 
                         union all
                         select  @partcode as materiel_code,B.seq as step_seq,B.step_code,'0' as unprice,B.first_choke as isbott,B.last_choke as isend from TFlw_Rout A
                         inner join TFlw_Rtdt B on A.code=B.rout_code
                         where A.code=@route_code and  @partcode+A.code+B.step_code
-                        not in(select materiel_code+rout_code+step_code  from TPrteEqp_Stad
+                        not in(select materiel_code+rout_code+step_code  from TPrteStep_Price
                         where materiel_code=@partcode and route_code=@route_code)
                         ) as A
-                        left join TStep S on A.step_code=S.stepcode";
+                        left join TStep S on A.step_code=S.stepcode
+                        order by A.step_seq";
                 dynamicParams.Add("@partcode", partcode);
                 dynamicParams.Add("@route_code", routecode);
-                var data = DapperHelper.selectdata(sql, dynamicParams);
+                var parents = DapperHelper.select<SubData>(sql, dynamicParams);
+                for (int i = 0; i < parents.Count; i++)
+                {
+                    if (parents[i].flwtype == "Z")
+                    {
+                        //閫氳繃浜у搧缂栫爜+宸ヨ壓璺嚎+宸ュ簭缂栫爜鏌ユ壘瀵瑰簲璁惧淇℃伅
+                        sql = @"select A.eqp_code,E.name as eqp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice   
+                                from (
+                                select S.eqp_code,S.eqp_value,S.stand_value,S.cavity_qty,S.unprice  from TPrteEqp_Stad S
+                                where S.materiel_code=@partcode and S.route_code=@routecode and S.step_code=@stepcode
+                                union all
+                                select  R.eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice from TMateriel_Route S
+                                inner join TFlw_Rtdt T on S.route_code=T.rout_code
+                                inner join TFlw_Rteqp R on T.step_code=R.step_code
+                                where S.materiel_code=@partcode and S.route_code=@routecode and T.step_code=@stepcode and S.materiel_code+S.route_code+T.step_code+R.eqp_code
+                                not in(select materiel_code+route_code+step_code+eqp_code  from TPrteEqp_Stad
+                                where materiel_code=@partcode and route_code=@routecode  and step_code=@stepcode)
+                                ) as A
+                                left join TEqpInfo E on A.eqp_code=E.code";
+                        dynamicParams.Add("@partcode", partcode);
+                        dynamicParams.Add("@routecode", routecode);
+                        dynamicParams.Add("@stepcode", parents[i].code);
+                        var children = DapperHelper.select<EqpSubData>(sql, dynamicParams);
+                        parents[i].children = children.ToList();
+                    }
+                    else
+                    {
+                        //閫氳繃浜у搧缂栫爜+宸ヨ壓璺嚎+宸ュ簭缂栫爜鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                        sql = @"select A.eqp_code,C.name as eqp_name,A.eqp_value,A.stand_value,A.cavity_qty,A.unprice   
+                                from (
+                                select S.eqp_code,S.eqp_value,S.stand_value,S.cavity_qty,S.unprice  from TPrteEqp_Stad S
+                                where S.materiel_code=@partcode and S.route_code=@routecode and S.step_code=@stepcode
+                                union all
+                                select  R.eqp_code,'0' as eqp_value,'0' as stand_value,'0' as cavity_qty,'0' as unprice from TMateriel_Route S
+                                inner join TFlw_Rtdt T on S.route_code=T.rout_code
+                                inner join TFlw_Rteqp R on T.step_code=R.step_code
+                                where S.materiel_code=@partcode and S.route_code=@routecode and T.step_code=@stepcode and S.materiel_code+S.route_code+T.step_code+R.eqp_code
+                                not in(select materiel_code+route_code+step_code+eqp_code  from TPrteEqp_Stad
+                                where materiel_code=@partcode and route_code=@routecode  and step_code=@stepcode)
+                                ) as A
+                                left join TCustomer C on A.eqp_code=C.code";
+                        dynamicParams.Add("@partcode", partcode);
+                        dynamicParams.Add("@routecode", routecode);
+                        dynamicParams.Add("@stepcode", parents[i].code);
+                        var children = DapperHelper.select<EqpSubData>(sql, dynamicParams);
+                        parents[i].children = children.ToList();
+                    }
+                }
                 mes.code = "200";
                 mes.message = "鏌ヨ鎴愬姛!";
-                mes.data = data;
+                mes.data = parents;
             }
             catch (Exception e)
             {
@@ -3546,8 +3930,8 @@
                     total = 0; //鎬绘潯鏁�
                     sql = @"select *  from (
                             select A.id,A.materiel_code as partcode,B.partname,B.partspec,A.route_code,C.name as route_name,
-                            D.stepcode,D.stepname,A.unprice,U.username as lm_user,A.lm_date
-                            from TPrteEqp_Stad A
+                            D.stepcode,D.stepname,D.flwtype,A.unprice,U.username as lm_user,A.lm_date
+                            from TPrteStep_Price A
                             left join TMateriel_Info B on A.materiel_code=B.partcode
                             left join TFlw_Rout C on A.route_code=C.code
                             left join TStep D on A.step_code=D.stepcode
@@ -3559,8 +3943,8 @@
                     search = search.Substring(3);//鎴彇绱㈠紩2鍚庨潰鐨勫瓧绗�
                     total = 0; //鎬绘潯鏁�
                     sql = @"select *  from (
-                            select A.id,A.materiel_code as partcode,B.partname,B.partspec,D.stepcode,D.stepname,A.unprice,U.username as lm_user,A.lm_date
-                            from TPrteEqp_Stad A
+                            select A.id,A.materiel_code as partcode,B.partname,B.partspec,D.stepcode,D.stepname,D.flwtype,A.unprice,U.username as lm_user,A.lm_date
+                            from TPrteStep_Price A
                             left join TMateriel_Info B on A.materiel_code=B.partcode
                             left join TStep D on A.step_code=D.stepcode
                             left join TUser U on A.lm_user=U.usercode
@@ -3596,18 +3980,18 @@
                 bool route = dynObj.route;
                 if (route) //宸ヨ壓璺嚎鐗�
                 {
+                    //宸ュ簭淇℃伅
                     for (int i = 0; i < json[0].children.Count; i++)
                     {
-                        //褰撳墠浜у搧宸ヨ壓璺嚎瀵瑰簲宸ュ簭鏄惁宸茶缃妭鎷嶅伐浠�
-                        sql = @"select *  from TPrteEqp_Stad
-                        where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode";
+                        //褰撳墠浜у搧宸ヨ壓璺嚎瀵瑰簲宸ュ簭鏄惁宸茶缃伐浠�
+                        sql = @"select *  from TPrteStep_Price where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode";
                         dynamicParams.Add("@partcode", json[0].partcode);
                         dynamicParams.Add("@routecode", json[0].defaultroute_code);
                         dynamicParams.Add("@stepcode", json[0].children[i].code);
                         var data = DapperHelper.selectdata(sql, dynamicParams);
                         if (data.Rows.Count > 0)
                         {
-                            sql = @"update TPrteEqp_Stad set unprice=@unprice,lm_user=@username,lm_date=@userdate
+                            sql = @"update TPrteStep_Price set unprice=@unprice,lm_user=@username,lm_date=@userdate
                                     where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode";
                             list.Add(new
                             {
@@ -3625,7 +4009,7 @@
                         }
                         else 
                         {
-                            sql = @"insert into TPrteEqp_Stad(materiel_code,route_code,step_code,unprice,lm_user,lm_date) 
+                            sql = @"insert into TPrteStep_Price(materiel_code,route_code,step_code,unprice,lm_user,lm_date) 
                                     values(@partcode,@routecode,@stepcode,@unprice,@username,@userdate)";
                             list.Add(new
                             {
@@ -3641,6 +4025,61 @@
                                 }
                             });
                         }
+                        //璁惧淇℃伅
+                        for (int j = 0; j < json[0].children[i].children.Count; j++)
+                        {
+                            //褰撳墠浜у搧宸ヨ壓璺嚎瀵瑰簲宸ュ簭璁惧鏄惁宸茶缃妭鎷嶅伐浠�
+                            sql = @"select *  from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
+                            dynamicParams.Add("@partcode", json[0].partcode);
+                            dynamicParams.Add("@routecode", json[0].defaultroute_code);
+                            dynamicParams.Add("@stepcode", json[0].children[i].code);
+                            dynamicParams.Add("@eqpcode", json[0].children[i].children[j].eqp_code);
+                            var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                            if (data0.Rows.Count > 0)
+                            {
+                                sql = @"update TPrteEqp_Stad set eqp_value=@eqp_value,stand_value=@stand_value,cavity_qty=@cavity_qty,unprice=@unprice,lm_user=@username,lm_date=@userdate
+                                    where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
+                                list.Add(new
+                                {
+                                    str = sql,
+                                    parm = new
+                                    {
+                                        partcode = json[0].partcode,
+                                        routecode = json[0].defaultroute_code,
+                                        stepcode = json[0].children[i].code,
+                                        eqpcode = json[0].children[i].children[j].eqp_code,
+                                        eqp_value = json[0].children[i].children[j].eqp_value,
+                                        stand_value = json[0].children[i].children[j].stand_value,
+                                        cavity_qty = json[0].children[i].children[j].cavity_qty,
+                                        unprice = json[0].children[i].children[j].unprice,
+                                        username = us.usercode,
+                                        userdate = DateTime.Now.ToString()
+                                    }
+                                });
+                            }
+                            else
+                            {
+                                sql = @"insert into TPrteEqp_Stad(materiel_code,route_code,step_code,eqp_code,stand_value,eqp_value,cavity_qty,unprice,lm_user,lm_date) 
+                                    values(@materiel_code,@route_code,@step_code,@eqp_code,@stand_value,@eqp_value,@cavity_qty,@unprice,@lm_user,@lm_date)";
+                                list.Add(new
+                                {
+                                    str = sql,
+                                    parm = new
+                                    {
+                                        materiel_code = json[0].partcode,
+                                        route_code = json[0].defaultroute_code,
+                                        step_code = json[0].children[i].code,
+                                        eqp_code = json[0].children[i].children[j].eqp_code,
+                                        stand_value = json[0].children[i].children[j].eqp_value,
+                                        eqp_value = json[0].children[i].children[j].stand_value,
+                                        cavity_qty = json[0].children[i].children[j].cavity_qty,
+                                        unprice = json[0].children[i].children[j].unprice,
+                                        lm_user = us.usercode,
+                                        lm_date = DateTime.Now.ToString()
+                                    }
+                                });
+                            }
+                        }
                     }
                 }
                 else //宸ュ簭鐗�
@@ -3648,14 +4087,13 @@
                     for (int i = 0; i < json[0].children.Count; i++)
                     {
                         //褰撳墠浜у搧瀵瑰簲宸ュ簭鏄惁宸茶缃妭鎷嶅伐浠�
-                        sql = @"select *  from TPrteEqp_Stad
-                        where materiel_code=@partcode and step_code=@stepcode";
+                        sql = @"select *  from TPrteStep_Price where materiel_code=@partcode and step_code=@stepcode";
                         dynamicParams.Add("@partcode", json[0].partcode);
                         dynamicParams.Add("@stepcode", json[0].children[i].code);
                         var data = DapperHelper.selectdata(sql, dynamicParams);
                         if (data.Rows.Count > 0)
                         {
-                            sql = @"update TPrteEqp_Stad set unprice=@unprice,lm_user=@username,lm_date=@userdate
+                            sql = @"update TPrteStep_Price set unprice=@unprice,lm_user=@username,lm_date=@userdate
                                     where materiel_code=@partcode  and step_code=@stepcode";
                             list.Add(new
                             {
@@ -3672,7 +4110,7 @@
                         }
                         else
                         {
-                            sql = @"insert into TPrteEqp_Stad(materiel_code,step_code,unprice,lm_user,lm_date) 
+                            sql = @"insert into TPrteStep_Price(materiel_code,step_code,unprice,lm_user,lm_date) 
                                     values(@partcode,@stepcode,@unprice,@username,@userdate)";
                             list.Add(new
                             {
@@ -3687,11 +4125,63 @@
                                 }
                             });
                         }
+                        //璁惧淇℃伅
+                        for (int j = 0; j < json[0].children[i].children.Count; j++)
+                        {
+                            //褰撳墠浜у搧宸ヨ壓璺嚎瀵瑰簲宸ュ簭璁惧鏄惁宸茶缃妭鎷嶅伐浠�
+                            sql = @"select *  from TPrteEqp_Stad where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
+                            dynamicParams.Add("@partcode", json[0].partcode);
+                            dynamicParams.Add("@routecode", json[0].defaultroute_code);
+                            dynamicParams.Add("@stepcode", json[0].children[i].code);
+                            dynamicParams.Add("@eqpcode", json[0].children[i].children[j].eqp_code);
+                            var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                            if (data0.Rows.Count > 0)
+                            {
+                                sql = @"update TPrteEqp_Stad set eqp_value=@eqp_value,stand_value=@stand_value,cavity_qty=@cavity_qty,unprice=@unprice,lm_user=@username,lm_date=@userdate
+                                    where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
+                                list.Add(new
+                                {
+                                    str = sql,
+                                    parm = new
+                                    {
+                                        partcode = json[0].partcode,
+                                        routecode = json[0].defaultroute_code,
+                                        stepcode = json[0].children[i].code,
+                                        eqpcode = json[0].children[i].children[j].eqp_code,
+                                        eqp_value = json[0].children[i].children[j].eqp_value,
+                                        stand_value = json[0].children[i].children[j].stand_value,
+                                        cavity_qty = json[0].children[i].children[j].cavity_qty,
+                                        unprice = json[0].children[i].children[j].unprice,
+                                        username = us.usercode,
+                                        userdate = DateTime.Now.ToString()
+                                    }
+                                });
+                            }
+                            else
+                            {
+                                sql = @"insert into TPrteEqp_Stad(materiel_code,route_code,step_code,eqp_code,stand_value,eqp_value,cavity_qty,unprice,lm_user,lm_date) 
+                                    values(@materiel_code,@route_code,@step_code,@eqp_code,@stand_value,@eqp_value,@cavity_qty,@unprice,@lm_user,@lm_date)";
+                                list.Add(new
+                                {
+                                    str = sql,
+                                    parm = new
+                                    {
+                                        materiel_code = json[0].partcode,
+                                        route_code = json[0].defaultroute_code,
+                                        step_code = json[0].children[i].code,
+                                        eqp_code = json[0].children[i].children[j].eqp_code,
+                                        stand_value = json[0].children[i].children[j].eqp_value,
+                                        eqp_value = json[0].children[i].children[j].stand_value,
+                                        cavity_qty = json[0].children[i].children[j].cavity_qty,
+                                        unprice = json[0].children[i].children[j].unprice,
+                                        lm_user = us.usercode,
+                                        lm_date = DateTime.Now.ToString()
+                                    }
+                                });
+                            }
+                        }
                     }
                 }
-
-
-                   
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
                 {
@@ -3729,8 +4219,27 @@
             var dynamicParams = new DynamicParameters();
             try
             {
-                //鍒犻櫎鑺傛媿宸ヤ环琛�
-                sql = @"delete TPrteEqp_Stad  where id=@id";
+                //鏌ユ壘宸ュ簭宸ヤ环琛�
+                sql = @"select *  from TPrteStep_Price where id=@id";
+                dynamicParams.Add("@id", id);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    //鍒犻櫎鑺傛媿宸ヤ环琛�
+                    sql = @"delete TPrteEqp_Stad  where materiel_code=@materiel_code and route_code=@route_code and step_code=@step_code";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            materiel_code = data.Rows[0]["materiel_code"].ToString(),
+                            route_code = data.Rows[0]["route_code"].ToString(),
+                            step_code = data.Rows[0]["step_code"].ToString()
+                        }
+                    });
+                }
+                //鍒犻櫎宸ュ簭宸ヤ环琛�
+                sql = @"delete TPrteStep_Price  where id=@id";
                 list.Add(new
                 {
                     str = sql,
diff --git a/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs b/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
index ae4fc9d..07182b6 100644
--- a/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/GeneralBasicDataDAL.cs
@@ -13,7 +13,7 @@
 {
     public class GeneralBasicDataDAL
     {
-        public static DataTable dt;    //瀹氫箟鍏ㄥ眬鍙橀噺dt
+        public static DataTable dt;    //瀹氫箟鍏ㄥ眬鍙橀噺dt    
         public static bool res;       //瀹氫箟鍏ㄥ眬鍙橀噺dt
         public static ToMessage mes = new ToMessage(); //瀹氫箟鍏ㄥ眬杩斿洖淇℃伅瀵硅薄
         public static string strProcName = ""; //瀹氫箟鍏ㄥ眬sql鍙橀噺
@@ -21,7 +21,31 @@
         public static SqlParameter[] parameters; //瀹氫箟鍏ㄥ眬SqlParameter鍙傛暟鏁扮粍
         public static dynamic CompanyCode = AppSetting.GetAppSetting("CompanyCode");
         public static dynamic CompanyName = AppSetting.GetAppSetting("CompanyName");
+       
 
+        #region[缁勭粐鏋舵瀯绫诲瀷璧勬枡]
+        public static ToMessage TOrganTypeDate()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select torgtype_code,torgtype_name from TOrganType where torgtype_code<>'C'";
+                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 PrentOrganization()
@@ -57,6 +81,30 @@
             try
             {
                 sql = @"select * from TOrganization where  status='Y' and parent_id<>'0' or leve<>'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
+
+        #region[缁勭粐鏋舵瀯杞﹂棿鍩虹璧勬枡]
+        public static ToMessage TorgWkshop()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select * from TOrganization where  status='Y' and torgtype_code='W'";
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
                 mes.message = "鏌ヨ鎴愬姛!";
@@ -364,6 +412,32 @@
         }
         #endregion
 
+        #region[杞﹂棿鏌ユ壘璁惧鍩虹璧勬枡]
+        public static ToMessage WkshopEqpPermissions(string wkshopcode)
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                string[] wkshopcodelist = Array.ConvertAll<string, string>(wkshopcode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string鍒嗗壊杞瑂tring[] 
+                sql = @"select code,name from TEqpInfo where  enable='Y' and torg_code in @torg_code";
+                dynamicParams.Add("@torg_code", wkshopcodelist);
+                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 EqpTypecodeSeachEqpPermissions(string eqptypecode)
         {
@@ -534,6 +608,30 @@
         }
         #endregion
 
+        #region[寰�鏉ュ崟浣嶇被鍨嬪熀纭�璧勬枡]
+        public static ToMessage CustomerTypePermissions()
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select code,name from TCustomerType";
+                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()
         {
@@ -558,6 +656,32 @@
         }
         #endregion
 
+        #region[寰�鏉ュ崟浣嶇被鍨嬫煡鎵惧線鏉ュ崟浣嶅熀纭�璧勬枡]
+        public static ToMessage CustomerTypeSearchPermissions(string customertypecode)
+        {
+            var sql = "";
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                string[] customerTypecodelist = Array.ConvertAll<string, string>(customertypecode.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString()); //string鍒嗗壊杞瑂tring[] 
+                sql = @"select code,name  from  TCustomer where customertype in @customerTypecodelist";
+                dynamicParams.Add("@customerTypecodelist", customerTypecodelist);
+                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 InventoryTreePermissions()
         {
diff --git a/VueWebCoreApi/DLL/DAL/ProductModelDAL.cs b/VueWebCoreApi/DLL/DAL/ProductModelDAL.cs
index e041246..368e313 100644
--- a/VueWebCoreApi/DLL/DAL/ProductModelDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/ProductModelDAL.cs
@@ -513,7 +513,7 @@
                 mes.code = "200";
                 mes.message = "鏌ヨ鎴愬姛!";
                 mes.data = data;
-                LogHelper.OperateLog("999", "鏌ヨ", "瀛樿揣鍒嗙被鏌ヨ鏁版嵁涓猴細" + JsonConvert.SerializeObject(data), "PC");
+                //LogHelper.OperateLog("999", "鏌ヨ", "瀛樿揣鍒嗙被鏌ヨ鏁版嵁涓猴細" + JsonConvert.SerializeObject(data), "PC");
             }
             catch (Exception e)
             {
@@ -1144,7 +1144,7 @@
                         sql = @"update TMateriel_Info set is_retdproc='N',default_route='' where partcode=@partcode";
                         list.Add(new { str = sql, parm = new { partcode = json[0].partcode } });
                         //娓呴櫎鑺傛媿宸ヤ环琛ㄥ搴旀暟鎹�
-                        sql = @"delete TPrteEqp_Stad where materiel_code=@partcode";
+                        sql = @"delete TPrteStep_Price where materiel_code=@partcode";
                         list.Add(new { str = sql, parm = new { partcode = json[0].partcode } });
                     }
                     else
@@ -1175,7 +1175,7 @@
                         //娓呴櫎鑺傛媿宸ヤ环琛ㄥ綋鍓嶄骇鍝佸搴斿伐鑹鸿矾绾夸笉鍖呭惈姝ゆ璁剧疆鐨勫叾瀹冩暟鎹�
                         //string鍒嗗壊杞瑂tring[]
                         string[] routcode = Array.ConvertAll<string, string>(string.Join(",", json[0].children.Select(s => s.code)).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString());
-                        sql = @"delete TPrteEqp_Stad where materiel_code=@partcode and route_code not in @routecode";
+                        sql = @"delete TPrteStep_Price where materiel_code=@partcode and route_code not in @routecode";
                         list.Add(new { str = sql, parm = new { partcode = json[0].partcode, routecode= routcode } });
                     }
                 }
@@ -1190,7 +1190,7 @@
                         sql = @"update TMateriel_Info set is_retdproc='N',default_route='' where partcode=@partcode";
                         list.Add(new { str = sql, parm = new { partcode = json[0].partcode } });
                         //娓呴櫎鑺傛媿宸ヤ环琛ㄥ搴旀暟鎹�
-                        sql = @"delete TPrteEqp_Stad where materiel_code=@partcode";
+                        sql = @"delete TPrteStep_Price where materiel_code=@partcode";
                         list.Add(new { str = sql, parm = new { partcode = json[0].partcode } });
                     }
                     else
@@ -1225,7 +1225,7 @@
                         //娓呴櫎鑺傛媿宸ヤ环琛ㄥ綋鍓嶄骇鍝佸搴斿伐搴忎笉鍖呭惈姝ゆ璁剧疆鐨勫叾瀹冩暟鎹�
                         //string鍒嗗壊杞瑂tring[]
                         string[] stepcode = Array.ConvertAll<string, string>(string.Join(",", json[0].children.Select(s => s.code)).Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString());
-                        sql = @"delete TPrteEqp_Stad where materiel_code=@partcode and step_code not in @stepcode";
+                        sql = @"delete TPrteStep_Price where materiel_code=@partcode and step_code not in @stepcode";
                         list.Add(new { str = sql, parm = new { partcode = json[0].partcode, stepcode = stepcode } });
                     }
                 }
diff --git a/VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs
index dc28dba..6c29482 100644
--- a/VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/ProductionManagementDAL.cs
@@ -317,7 +317,7 @@
                         left join TStep S on B.step_code=S.stepcode
                         where A.code=@route_code and A.torg_code=@wkshopcode
                         ) as AA
-                        left join (select * from TPrteEqp_Stad   where materiel_code=@partcode and route_code=@route_code and wkspcode=@wkshopcode) as S on
+                        left join (select * from TPrteStep_Price   where materiel_code=@partcode and route_code=@route_code and wkspcode=@wkshopcode) as S on
                         AA.code=S.route_code and AA.step_code=S.step_code and AA.eqp_code=S.eqp_code";
                 dynamicParams.Add("@partcode", partcode);
                 dynamicParams.Add("@route_code", routecode);
@@ -488,7 +488,7 @@
                            S.eqp_value,S.cavity_qty,S.wkspcode,S.lm_user,S.lm_date,S.torg_code,S.is_delete,S.step_code
                            from TFlw_Rtdt A
                            inner join TFlw_Rteqp C on A.step_code=C.step_code
-                           inner join (select *   from TPrteEqp_Stad  where materiel_code=@materiel_code and route_code=@routecode) as S on C.step_code=S.step_code and C.eqp_code=S.eqp_code";
+                           inner join (select *   from TPrteStep_Price  where materiel_code=@materiel_code and route_code=@routecode) as S on C.step_code=S.step_code and C.eqp_code=S.eqp_code";
                     list.Add(new
                     {
                         str = sql,
@@ -608,7 +608,7 @@
                            S.eqp_value,S.cavity_qty,S.wkspcode,S.lm_user,S.lm_date,S.torg_code,S.is_delete,S.step_code
                            from TFlw_Rtdt A
                            inner join TFlw_Rteqp C on A.step_code=C.step_code
-                           inner join (select *   from TPrteEqp_Stad  where materiel_code=@materiel_code and route_code=@routecode) as S on C.step_code=S.step_code and C.eqp_code=S.eqp_code";
+                           inner join (select *   from TPrteStep_Price  where materiel_code=@materiel_code and route_code=@routecode) as S on C.step_code=S.step_code and C.eqp_code=S.eqp_code";
                     list.Add(new
                     {
                         str = sql,
diff --git a/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs b/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
index 9d4975e..48ae0ab 100644
--- a/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
+++ b/VueWebCoreApi/DLL/DAL/WorkOrderDAL.cs
@@ -808,17 +808,50 @@
                     }
                 }
                 //鑾峰彇宸ュ簭淇℃伅
-                sql = @"select S.wo_code,S.seq,S.step_code,T.stepname,S.stepprice,(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty,
+                sql = @"select S.id,S.wo_code,S.seq,S.step_code,T.stepname,T.flwtype,S.stepprice,(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty,
                         S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty,(isnull(S.plan_qty,0)-(isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0))) as delive_qty,S.isbott,S.isend 
                         from TK_Wrk_Step S
                         left join TStep  T on S.step_code=T.stepcode
                         where S.wo_code=@wocode order by S.seq ";
                 dynamicParams.Add("@wocode", wocode);
-                var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                var parents = DapperHelper.select<WorkRouteStepEqp>(sql, dynamicParams);
+                //鑾峰彇宸ュ簭瀵瑰簲璁惧淇℃伅
+                for (int i = 0; i < parents.Count; i++)
+                {
+                    if (parents[i].flwtype == "Z")
+                    {
+                        //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲璁惧淇℃伅
+                        sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as eqp_price,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TEqpInfo E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                        dynamicParams.Add("@m_id", parents[i].id);
+                        var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                        parents[i].children = children.ToList();
+                    }
+                    else
+                    {
+                        //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                        sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as eqp_price,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TCustomer E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                        dynamicParams.Add("@m_id", parents[i].id);
+                        var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                        parents[i].children = children.ToList();
+                    }
+
+                }
+
+
                 dir.Add("canupdate_qty", canupdate_qty);
-                dir.Add("stepdata", data1);
+                dir.Add("stepdata", parents);
                 mes.code = "200";
-                mes.count = data1.Rows.Count;
+                mes.count = parents.Count;
                 mes.message = "鏌ヨ鎴愬姛";
                 mes.data = dir;
             }
@@ -1150,35 +1183,99 @@
                 if (route) //宸ヨ壓璺嚎鐗�
                 {
                     //MES宸ュ崟鏌ユ壘鍘嗗彶寮曠敤鏈�鏂板伐搴忎俊鎭�
-                    sql = @"select S.wo_code,S.seq,S.step_code,S.stepprice,isbott,isend
-                        from TK_Wrk_Step S
-                        inner join (
-                        select top 1 A.wo_code,A.route_code   from TK_Wrk_Man A
-                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.route_code=S.route_code
-                        where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode and A.route_code=@routecode
-                        order by A.lm_date desc
-                        ) as W on S.wo_code=W.wo_code and S.route_code=W.route_code
-                        left join TStep  T on S.step_code=T.stepcode
-                        order by S.seq";
+                    sql = @"select S.id,S.wo_code,S.seq,S.step_code,T.stepname,T.flwtype,S.stepprice,'0' as produceq_qty,
+                           '0' as good_qty,'0' as ng_qty,'0' as laborbad_qty,'0' as materielbad_qty,'0' as delive_qty,isbott,isend
+                           from TK_Wrk_Step S
+                           inner join (
+                           select top 1 S.id,A.wo_code,A.route_code   from TK_Wrk_Man A
+                           inner join TK_Wrk_Step S on A.wo_code=S.wo_code and A.route_code=S.route_code
+                           where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode and A.route_code=@routecode
+                           order by A.lm_date desc
+                           ) as W on S.wo_code=W.wo_code and S.route_code=W.route_code
+                           left join TStep  T on S.step_code=T.stepcode
+                           order by S.seq";
                     dynamicParams.Add("@wkshopcode", wkshopcode);
                     dynamicParams.Add("@partcode", partcode);
                     dynamicParams.Add("@routecode", routecode);
+                    var parents = DapperHelper.select<WorkRouteStepEqp>(sql, dynamicParams);
+                    //鑾峰彇宸ュ簭瀵瑰簲璁惧淇℃伅
+                    for (int i = 0; i < parents.Count; i++)
+                    {
+                        if (parents[i].flwtype == "Z")
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲璁惧淇℃伅
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as eqp_price,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TEqpInfo E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                        else
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as eqp_price,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TCustomer E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                    }
                 }
                 else
                 {
                     //MES宸ュ崟鏌ユ壘鍘嗗彶寮曠敤鏈�鏂板伐搴忎俊鎭�
-                    sql = @"select S.wo_code,S.seq,S.step_code,S.stepprice,isbott,isend
-                        from TK_Wrk_Step S
-                        inner join (
-                        select top 1 A.wo_code   from TK_Wrk_Man A
-                        inner join TK_Wrk_Step S on A.wo_code=S.wo_code
-                        where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode
-                        order by A.lm_date desc
-                        ) as W on S.wo_code=W.wo_code
-                        left join TStep  T on S.step_code=T.stepcode
-                        order by S.seq";
+                    sql = @"select S.id,S.wo_code,S.seq,S.step_code,T.stepname,T.flwtype,S.stepprice,'0' as produceq_qty,
+                            '0' as good_qty,'0' as ng_qty,'0' as laborbad_qty,'0' as materielbad_qty,'0' as delive_qty,isbott,isend
+                            from TK_Wrk_Step S
+                            inner join (
+                            select top 1 A.wo_code   from TK_Wrk_Man A
+                            inner join TK_Wrk_Step S on A.wo_code=S.wo_code
+                            where A.materiel_code=@partcode and A.wkshp_code=@wkshopcode
+                            order by A.lm_date desc
+                            ) as W on S.wo_code=W.wo_code
+                            left join TStep  T on S.step_code=T.stepcode
+                            order by S.seq";
                     dynamicParams.Add("@wkshopcode", wkshopcode);
                     dynamicParams.Add("@partcode", partcode);
+                    var parents = DapperHelper.select<WorkRouteStepEqp>(sql, dynamicParams);
+                    //鑾峰彇宸ュ簭瀵瑰簲璁惧淇℃伅
+                    for (int i = 0; i < parents.Count; i++)
+                    {
+                        if (parents[i].flwtype == "Z")
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲璁惧淇℃伅
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as eqp_price,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TEqpInfo E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                        else
+                        {
+                            //閫氳繃宸ヨ壓璺嚎宸ュ簭琛↖D鏌ユ壘瀵瑰簲澶栧崗渚涘簲鍟嗕俊鎭�
+                            sql = @"select S.eqp_code,E.name as eqp_name,S.eqpprice as eqp_price,
+                                (isnull(S.good_qty,0)+isnull(S.ng_qty,0)+isnull(S.laborbad_qty,0)+isnull(S.materielbad_qty,0)) as produceq_qty, 
+                                S.good_qty,S.ng_qty,S.laborbad_qty,S.materielbad_qty 
+                                from TK_Wrk_StepEqp S
+                                inner join TCustomer E on S.eqp_code=E.code
+                                where S.m_id=@m_id";
+                            dynamicParams.Add("@m_id", parents[i].id);
+                            var children = DapperHelper.select<WorkRouteStepEqpSub>(sql, dynamicParams);
+                            parents[i].children = children.ToList();
+                        }
+                    }
                 }
 
                 var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -1923,7 +2020,7 @@
                         else //涓嶆寜搴忔敹鍙戞枡
                         {
                             mes = ScanStartReport.NoWXEncodingSeach(SelectType, wocode, stepcode);
-                        } 
+                        }
                         break;
                     default:
                         break;
@@ -3382,7 +3479,7 @@
                                     }
                                 }
                             }
-                        }  
+                        }
                     }
                 }
                 else //涓嶆寜搴�
@@ -3390,10 +3487,10 @@
                     //鎺у埗閫昏緫锛氬綋鍓嶅伐搴忔姤宸ヨ皟鏁�-> (鏈亾宸ュ簭褰撳墠璋冩暣鍚堟牸鏁�+鏈亾宸ュ簭闈炲綋鍓嶆姤宸ュ悎鏍兼�绘暟)<涓嬮亾宸ュ簭鎶ュ伐鎬绘暟(鍚堟牸+涓嶈壇+鎶ュ簾)   ==涓嶈兘灏忎簬涓嬮亾鎶ュ伐鎬绘暟
                     list.Clear();
                     //鍒ゆ柇褰撳墠宸ュ簭鏄嚜鍒跺伐搴忚繕鏄鍗忓伐搴�
-                    if (json[0].flw_type.ToString() == "Z") 
+                    if (json[0].flw_type.ToString() == "Z")
                     {
-                        
-                       //鏌ヨ褰撳墠鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
+
+                        //鏌ヨ褰撳墠鎶ュ伐宸ュ簭闈炴娆℃姤宸ワ細鎬绘姤宸ユ暟閲忋�佹�讳笉鑹暟閲忋�佹�诲伐搴熸暟閲忋�佹�绘枡搴熸暟閲�
                         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);
@@ -3415,7 +3512,7 @@
                             return mes;
                         }
                     }
-                    if (json[0].flw_type.ToString() == "W") 
+                    if (json[0].flw_type.ToString() == "W")
                     {
                         //鑾峰彇褰撳墠宸ュ簭銆佷緵搴斿晢瀵瑰簲鐨勬�诲彂鏂欐暟閲�
                         sql = @"select isnull(sum(fqty),0) as fqty
@@ -3437,7 +3534,7 @@
                         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;
                         //鍒ゆ柇褰撳墠宸ュ簭渚涘簲鍟嗘敹鏂欐�绘暟>褰撳墠宸ュ簭渚涘簲鍟嗗搴斿彂鏂欐暟閲�
                         if (updatereportsumqty > decimal.Parse(dt_0.Rows[0]["fqty"].ToString()))
@@ -3485,7 +3582,7 @@
                             str = sql,
                             parm = new
                             {
-                                step_price=decimal.Parse(json[0].unprice),
+                                step_price = decimal.Parse(json[0].unprice),
                                 good_qty = decimal.Parse(json[0].report_dvalue),
                                 ng_qty = this_ng_dvalue,
                                 laborbad_qty = this_laborbad_dvalue,
@@ -3588,7 +3685,7 @@
                             str = sql,
                             parm = new
                             {
-                                step_price=decimal.Parse(json[0].unprice),
+                                step_price = decimal.Parse(json[0].unprice),
                                 good_qty = decimal.Parse(json[0].report_dvalue),
                                 ng_qty = this_ng_dvalue,
                                 laborbad_qty = this_laborbad_dvalue,
diff --git a/VueWebCoreApi/Models/MaterialCraftsSave.cs b/VueWebCoreApi/Models/MaterialCraftsSave.cs
index 158dbcc..bb14314 100644
--- a/VueWebCoreApi/Models/MaterialCraftsSave.cs
+++ b/VueWebCoreApi/Models/MaterialCraftsSave.cs
@@ -7,18 +7,77 @@
 {
     public class MaterialCraftsSave
     {
+        /// <summary>
+        /// 浜у搧缂栫爜
+        /// </summary>
         public string partcode { get; set; }
+        /// <summary>
+        /// 宸ヨ壓璺嚎缂栫爜
+        /// </summary>
         public string defaultroute_code { get; set; }
+        /// <summary>
+        /// 宸ュ簭瀛愰泦
+        /// </summary>
         public List<SubData> children { get; set; }
 
     }
     public class SubData
-    { 
-       public string code { get; set; }
-       public string name { get; set; }
-       public string seq { get; set; }
-       public string isbott { get; set; }
-       public string isend { get; set; }
-       public string unprice { get; set; }
+    {
+        /// <summary>
+        /// 宸ュ簭搴忓彿
+        /// </summary>
+        public string seq { get; set; }
+        /// <summary>
+        /// 宸ュ簭缂栫爜
+        /// </summary>
+        public string code { get; set; }
+        /// <summary>
+        /// 宸ュ簭鍚嶇О
+        /// </summary>
+        public string name { get; set; }
+        /// <summary>
+        /// 宸ュ簭灞炴��:Z(鑷埗)/W(澶栧崗)
+        /// </summary>
+        public string flwtype { get; set; }
+        /// <summary>
+        /// 鏄惁棣栭亾宸ュ簭
+        /// </summary>
+        public string isbott { get; set; }
+        /// <summary>
+        /// 鏄惁鏈亾宸ュ簭
+        /// </summary>
+        public string isend { get; set; }
+        /// <summary>
+        /// 宸ュ簭宸ヤ环
+        /// </summary>
+        public string unprice { get; set; }
+        public List<EqpSubData> children { get; set; }
+    }
+    public class EqpSubData
+    {
+        /// <summary>
+        /// 璁惧缂栫爜
+        /// </summary>
+        public string eqp_code { get; set; }
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public string eqp_name { get; set; }
+        /// <summary>
+        /// 璁惧鑺傛媿
+        /// </summary>
+        public string eqp_value { get; set; }
+        /// <summary>
+        /// 鐢熶骇鑺傛媿
+        /// </summary>
+        public string stand_value { get; set; }
+        /// <summary>
+        /// 鍨嬭厰鏁�
+        /// </summary>
+        public string cavity_qty { get; set; }
+        /// <summary>
+        /// 璁′欢鍗曚环
+        /// </summary>
+        public string unprice { get; set; }
     }
 }
diff --git a/VueWebCoreApi/Models/TFlw_Rteqp.cs b/VueWebCoreApi/Models/TFlw_Rteqp.cs
new file mode 100644
index 0000000..a24db29
--- /dev/null
+++ b/VueWebCoreApi/Models/TFlw_Rteqp.cs
@@ -0,0 +1,54 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace VueWebCoreApi.Models
+{
+    public class TFlw_Rteqp
+    {
+        /// <summary>
+        /// 宸ュ簭id(涓婚敭)
+        /// </summary>
+        public string id { get; set; }
+        /// <summary>
+        /// 宸ュ簭缂栫爜
+        /// </summary>
+        public string stepcode { get; set; }
+        /// <summary>
+        /// 宸ュ簭鍚嶇О
+        /// </summary>
+        public string stepname { get; set; }
+        /// <summary>
+        /// 宸ュ簭绫诲瀷缂栫爜
+        /// </summary>
+        public string steptypecode { get; set; }
+        /// <summary>
+        /// 鍚敤鐘舵�侊細Y(鍚敤) N(鏈惎鐢�)
+        /// </summary>
+        public string enable { get; set; }
+        /// <summary>
+        /// 宸ュ簭鎻忚堪
+        /// </summary>
+        public string description { get; set; }
+        /// <summary>
+        /// 鍏宠仈宸ヤ綔绔欐暟鎹�
+        /// </summary>
+        public List<StepEqpData> children { get; set; }//瀛愯妭鐐�
+    }
+    public class StepEqpData
+    {
+        /// <summary>
+        /// 宸ュ簭缂栫爜
+        /// </summary>
+        public string stepcode { get; set; }
+        /// <summary>
+        /// 璁惧缂栫爜/澶栧崗渚涘簲鍟嗙紪鐮�
+        /// </summary>
+        public string eqpcode { get; set; }
+        /// <summary>
+        /// 鍏宠仈宸ヤ綔绔欑被鍨嬶細璁惧 (E)  濮斿(W)
+        /// </summary>
+        public string style { get; set; }
+    }
+}
diff --git a/VueWebCoreApi/Models/WorkData/WorkRouteStepEqp.cs b/VueWebCoreApi/Models/WorkData/WorkRouteStepEqp.cs
new file mode 100644
index 0000000..a921028
--- /dev/null
+++ b/VueWebCoreApi/Models/WorkData/WorkRouteStepEqp.cs
@@ -0,0 +1,103 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace VueWebCoreApi.Models.WorkData
+{
+    public class WorkRouteStepEqp
+    {
+        /// <summary>
+        /// 涓婚敭id
+        /// </summary>
+        public string id { get; set; }
+        /// <summary>
+        /// 宸ュ崟鍙�
+        /// </summary>
+        public string wo_code { get; set; }
+        /// <summary>
+        /// 宸ュ簭搴忓彿
+        /// </summary>
+        public string seq { get; set; }
+        /// <summary>
+        /// 宸ュ簭缂栫爜
+        /// </summary>
+        public string step_code { get; set; }
+        /// <summary>
+        /// 宸ュ簭鍚嶇О
+        /// </summary>
+        public string stepname { get; set; }
+        /// <summary>
+        /// 宸ュ簭灞炴��:Z(鑷埗)W(澶栧崗)
+        /// </summary>
+        public string flwtype { get; set; }
+        /// <summary>
+        /// 宸ュ簭宸ヤ环
+        /// </summary>
+        public string stepprice { get; set; }
+        /// <summary>
+        /// 宸茬敓浜ф暟閲�
+        /// </summary>
+        public string produceq_qty { get; set; }
+        /// <summary>
+        /// 鍚堟牸鏁伴噺
+        /// </summary>
+        public string good_qty { get; set; }
+        /// <summary>
+        /// 涓嶈壇鏁伴噺
+        /// </summary>
+        public string ng_qty { get; set; }
+        /// <summary>
+        /// 宸ュ簾鏁伴噺
+        /// </summary>
+        public string laborbad_qty { get; set; }
+        /// <summary>
+        /// 鏂欏簾鏁伴噺
+        /// </summary>
+        public string materielbad_qty { get; set; }
+        /// <summary>
+        /// 寰呬骇鏁伴噺
+        /// </summary>
+        public string delive_qty { get; set; }
+        /// <summary>
+        /// 棣栭亾宸ュ簭
+        /// </summary>
+        public string isbott { get; set; }
+        /// <summary>
+        /// 鏈亾宸ュ簭
+        /// </summary>
+        public string isend { get; set; }
+        public List<WorkRouteStepEqpSub> children { get; set; }
+    }
+    public class WorkRouteStepEqpSub
+    {
+        /// <summary>
+        /// 璁惧缂栫爜
+        /// </summary>
+        public string eqp_code { get; set; }
+        /// <summary>
+        /// 璁惧鍚嶇О
+        /// </summary>
+        public string eqp_name { get; set; }
+        /// <summary>
+        /// 璁惧宸ヤ环
+        /// </summary>
+        public string eqp_price { get; set; }
+        /// <summary>
+        /// 鍚堟牸鏁伴噺
+        /// </summary>
+        public string good_qty { get; set; }
+        /// <summary>
+        /// 涓嶈壇鏁伴噺
+        /// </summary>
+        public string ng_qty { get; set; }
+        /// <summary>
+        /// 宸ュ簾鏁伴噺
+        /// </summary>
+        public string laborbad_qty { get; set; }
+        /// <summary>
+        /// 鏂欏簾鏁伴噺
+        /// </summary>
+        public string materielbad_qty { get; set; }
+    }
+}
diff --git a/VueWebCoreApi/Tools/ExcelList.cs b/VueWebCoreApi/Tools/ExcelList.cs
index 3c618ce..86a9452 100644
--- a/VueWebCoreApi/Tools/ExcelList.cs
+++ b/VueWebCoreApi/Tools/ExcelList.cs
@@ -12,7 +12,7 @@
 
             List<ScoreReport> list = new List<ScoreReport>
             {
-                //new ScoreReport("0","缁勭粐鏋舵瀯"),
+                 //new ScoreReport("0","缁勭粐鏋舵瀯"),
                 new ScoreReport("1","宀椾綅绠$悊"),
                 new ScoreReport("2","鐝粍绠$悊"),
                 new ScoreReport("3","浜哄憳绠$悊"),
diff --git a/VueWebCoreApi/Tools/ImportExcelData.cs b/VueWebCoreApi/Tools/ImportExcelData.cs
index 5a7c185..015c844 100644
--- a/VueWebCoreApi/Tools/ImportExcelData.cs
+++ b/VueWebCoreApi/Tools/ImportExcelData.cs
@@ -1349,7 +1349,7 @@
                 return Message;
 
             }
-            else if (excelTable[0].Columns.Count != 5)
+            else if (excelTable[0].Columns.Count != 6)
             {
                 code = "301";
                 Message = "宸ュ簭璁剧疆妯℃澘涓嶇鍚堣鑼�,璇锋鏌ュ垪鍚嶅瓧娈垫暟";
@@ -1383,6 +1383,12 @@
             {
                 code = "301";
                 Message = "宸ュ簭璁剧疆妯℃澘锛氳〃澶翠俊鎭笉绗﹀悎瑙勮寖,绗�2鍒楀簲涓簕鎻忚堪}";
+                return Message;
+            }
+            else if (excelTable[0].Columns[5].ColumnName != "璁惧渚涙柟/缂栫爜")
+            {
+                code = "301";
+                Message = "宸ュ簭璁剧疆妯℃澘锛氳〃澶翠俊鎭笉绗﹀悎瑙勮寖,绗�2鍒楀簲涓簕璁惧渚涙柟/缂栫爜}";
                 return Message;
             }
             else
@@ -3913,6 +3919,63 @@
                         list.Add(erro);
                     }
                 }
+                if (excelTable[0].Rows[k][5].ToString().Trim() != null && excelTable[0].Rows[k][5].ToString().Trim() != "")
+                {
+                    string[] eqpcodelist = Array.ConvertAll<string, string>(excelTable[0].Rows[k][5].ToString().Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString());
+                    if (excelTable[0].Rows[k][5].ToString().Trim() == "鑷埗")
+                    {
+                        for (int i = 0; i < eqpcodelist.Length; i++)
+                        {
+                            sql = @"select *  from TEqpInfo where code=@code";
+                            dynamicParams.Add("@code", eqpcodelist[i].ToString());
+                            dt = DapperHelper.selectdata(sql, dynamicParams);
+                            if (dt.Rows.Count<=0)
+                            {
+                                ExcelErro erro = new ExcelErro();
+                                erro.RoeNumber = "/";
+                                erro.ErrorField = "{璁惧渚涙柟/缂栫爜}";
+                                erro.ErrorCont = "宸ュ簭绫诲瀷涓鸿嚜鍒舵椂,搴斿~鍐欐湁鏁堢殑璁惧缂栫爜鎴栧伐浣嶇紪鐮�,褰撳墠{*宸ュ簭缂栧彿(鍞竴)}:"+ excelTable[0].Rows[k][0].ToString().Trim() + ",瀵瑰簲鐨剓璁惧渚涙柟/缂栫爜}:"+ excelTable[0].Rows[k][5].ToString().Trim() + "瀛樺湪涓嶅悎鐞嗙殑鍊�!";
+                                list.Add(erro);
+                            }
+                        }
+                    }
+                    else 
+                    {
+                        for (int i = 0; i < eqpcodelist.Length; i++)
+                        {
+                            sql = @"select *  from TCustomer where code=@code";
+                            dynamicParams.Add("@code", eqpcodelist[i].ToString());
+                            dt = DapperHelper.selectdata(sql, dynamicParams);
+                            if (dt.Rows.Count <= 0)
+                            {
+                                ExcelErro erro = new ExcelErro();
+                                erro.RoeNumber = "/";
+                                erro.ErrorField = "{璁惧渚涙柟/缂栫爜}";
+                                erro.ErrorCont = "宸ュ簭绫诲瀷涓哄鍗忔椂,搴斿~鍐欐湁鏁堢殑澶栧崗渚涘簲鍟嗙紪鐮�,褰撳墠{*宸ュ簭缂栧彿(鍞竴)}:" + excelTable[0].Rows[k][0].ToString().Trim() + ",瀵瑰簲鐨剓璁惧渚涙柟/缂栫爜}:" + excelTable[0].Rows[k][5].ToString().Trim() + "瀛樺湪涓嶅悎鐞嗙殑鍊�!";
+                                list.Add(erro);
+                            }
+                        }
+                    }
+                }
+            }
+            // 浣跨敤鍖垮悕瀵硅薄鏉ョ粍鍚堝涓瓧娈电殑鍊硷紝骞跺鍏惰繘琛屽垎缁�  
+            var groupedRows = excelTable[0].AsEnumerable()
+                .GroupBy(row => new
+                {
+                    StepCode = row.Field<string>("*宸ュ簭缂栧彿(鍞竴)")
+                })
+                // 绛涢�夊嚭閭d簺鍖呭惈澶氫簬涓�涓厓绱犵殑缁勶紙鍗抽噸澶嶇殑缁勫悎锛�  
+                .Where(group => group.Count() > 1)
+                // 閫夋嫨姣忎釜缁勪腑鐨勬墍鏈夎锛堝嵆閲嶅鐨勮锛�  
+                .SelectMany(group => group);
+            List<DataRow> listRow = groupedRows.ToList();
+            if (listRow.Count > 0)
+            {
+                ExcelErro erro = new ExcelErro();
+                erro.RoeNumber = "/";
+                erro.ErrorField = "{*宸ュ簭缂栧彿(鍞竴)}";
+                erro.ErrorCont = "*宸ュ簭缂栧彿(鍞竴)鍦ㄥ鍏ユ枃浠朵腑瀛樺湪閲嶅鍊�";
+                list.Add(erro);
             }
             if (list.Count > 0)
             {
@@ -5706,6 +5769,8 @@
                 //瀵煎叆宸ュ簭
                 for (int i = 0; i < excelTable[0].Rows.Count; i++)
                 {
+                    string[] eqpcodelist = Array.ConvertAll<string, string>(excelTable[0].Rows[i][5].ToString().Trim().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries), s => s.ToString());
+                    //鍐欏叆宸ュ簭琛�
                     sql = @"insert into TStep(stepcode,stepname,enable,descr,flwtype,lm_user,lm_date) 
                             values(@stepcode,@stepname,@enable,@descr,@flwtype,@lm_user,@lm_date)";
                     list.Add(new
@@ -5722,6 +5787,24 @@
                             lm_date = DateTime.Now.ToString()
                         }
                     });
+                    //鍐欏叆宸ュ簭鍏宠仈宸ヤ綔绔欒〃
+                    for (int j = 0; j < eqpcodelist.Length; j++)
+                    {
+                        sql = @"insert into TFlw_Rteqp(eqp_code,step_code,style,lm_user,lm_date) 
+                            values(@eqp_code,@step_code,@style,@lm_user,@lm_date)";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                eqp_code = eqpcodelist[j].ToString(),
+                                step_code = excelTable[0].Rows[i][0].ToString().Trim(),
+                                style = excelTable[0].Rows[i][2].ToString().Trim(),
+                                lm_user = us.usercode,
+                                lm_date = DateTime.Now.ToString()
+                            }
+                        });
+                    }
                 }
                 bool aa = DapperHelper.DoTransaction(list);
                 if (aa)
@@ -5850,7 +5933,7 @@
                         message = "瀵煎叆澶辫触锛�";
                     }
                     //鏌ヨ宸ュ簭鑺傛媿琛ㄤ腑锛氫骇鍝�+宸ヨ壓璺嚎+宸ュ簭+璁惧鏄惁瀛樺湪
-                    sql = @"select *  from TPrteEqp_Stad
+                    sql = @"select *  from TPrteStep_Price
                         where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode";
                     dynamicParams.Add("@partcode", partcode);
                     dynamicParams.Add("@routecode", routecode);
@@ -5859,7 +5942,7 @@
                     var data6 = DapperHelper.selectdata(sql, dynamicParams);
                     if (data6.Rows.Count > 0)
                     {
-                        sql = @"update TPrteEqp_Stad set stand_value=@stand_value,eqp_value=@eqp_value,cavity_qty=@cavity_qty,unprice=@unprice,lm_user=@username,lm_date=@userdate
+                        sql = @"update TPrteStep_Price set stand_value=@stand_value,eqp_value=@eqp_value,cavity_qty=@cavity_qty,unprice=@unprice,lm_user=@username,lm_date=@userdate
                             where materiel_code=@partcode and route_code=@routecode and step_code=@stepcode and eqp_code=@eqpcode ";
                         list.Add(new
                         {
@@ -5881,7 +5964,7 @@
                     }
                     else
                     {
-                        sql = @"insert into TPrteEqp_Stad(materiel_code,eqp_code,stand_value,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,step_code) 
+                        sql = @"insert into TPrteStep_Price(materiel_code,eqp_code,stand_value,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,step_code) 
                               values(@partcode,@eqpcode,@stand_value,@routecode,@unprice,@eqp_value,@cavity_qty,@wkspcode,@username,@userdate,@stepcode)";
                         list.Add(new
                         {
diff --git a/VueWebCoreApi/Tools/SchedulingMethod.cs b/VueWebCoreApi/Tools/SchedulingMethod.cs
index a255abd..d84705d 100644
--- a/VueWebCoreApi/Tools/SchedulingMethod.cs
+++ b/VueWebCoreApi/Tools/SchedulingMethod.cs
@@ -42,7 +42,7 @@
                             left join TFlw_Rtdt B on K.code=B.rout_code and B.first_choke='Y'
                             left join TFlw_Rteqp C on B.step_code= C.step_code
                             left join TEqpInfo D on C.eqp_code=D.code 
-                            left join TPrteEqp_Stad H on  C.eqp_code= H.eqp_code  and  K.code=H.route_code and B.step_code=H.step_code
+                            left join TPrteStep_Price H on  C.eqp_code= H.eqp_code  and  K.code=H.route_code and B.step_code=H.step_code
                             where A.wo_code=@wocode and H.materiel_code=@partcode  and D.wksp_code=@wkshpcode  and D.enable='Y' 
                             order by C.eqp_code";
             dynamicParams.Add("@wocode", wocode);
diff --git "a/VueWebCoreApi/wwwroot/Excel/\345\267\245\345\272\217\350\256\276\347\275\256.xls" "b/VueWebCoreApi/wwwroot/Excel/\345\267\245\345\272\217\350\256\276\347\275\256.xls"
index 4d42674..2f19538 100644
--- "a/VueWebCoreApi/wwwroot/Excel/\345\267\245\345\272\217\350\256\276\347\275\256.xls"
+++ "b/VueWebCoreApi/wwwroot/Excel/\345\267\245\345\272\217\350\256\276\347\275\256.xls"
Binary files differ

--
Gitblit v1.9.3