From d570cdca55f34f8860f48bb30c5bea5b1f61390c Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期二, 10 十月 2023 07:37:48 +0800
Subject: [PATCH] nothing

---
 VueWebApi/DLL/DAL/ProductionManagementDAL.cs |  536 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 427 insertions(+), 109 deletions(-)

diff --git a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
index 567d12b..6a7c8d6 100644
--- a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -22,12 +22,27 @@
 
 
         #region[ERP璁㈠崟鏌ヨ]
-        public static ToMessage ErpOrderSearch(string erporderstus, string erpordercode, string partcode, string partname, string partspec, int startNum, string paydatestartdate, string paydateenddate, string paydatestartdate1, string paydateenddate2, string creatuser, int endNum, string prop, string order)
+        public static ToMessage ErpOrderSearch(string stu_torgcode,string stu_torgtypecode,string erporderstus, string erpordercode,string saleordercode, string partcode, string partname, string partspec, int startNum, string paydatestartdate, string paydateenddate, string paydatestartdate1, string paydateenddate2, string creatuser, int endNum, string prop, string order)
         {
             var dynamicParams = new DynamicParameters();
             string search = "";
             try
             {
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and C.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
                 if (erporderstus != "" && erporderstus != null)
                 {
                     search += "and A.status=@erporderstus ";
@@ -37,6 +52,11 @@
                 {
                     search += "and A.wo like '%'+@erpordercode+'%' ";
                     dynamicParams.Add("@erpordercode", erpordercode);
+                }
+                if (saleordercode != "" && saleordercode != null)
+                {
+                    search += "and A.saleOrderCode like '%'+@saleordercode+'%' ";
+                    dynamicParams.Add("@saleordercode", saleordercode);
                 }
                 if (partcode != "" && partcode != null)
                 {
@@ -78,12 +98,13 @@
                 // --------------鏌ヨ鎸囧畾鏁版嵁--------------
                 var total = 0; //鎬绘潯鏁�
                 var sql = @"select A.id, A.status,A.wo,A.materiel_code as partcode,B.partname,B.partspec,A.qty,A.relse_qty,A.wkshp_code,C.org_name as wkshp_name,
-                            A.stck_code,D.name as stck_name,saleOrderDeliveryDate,A.planstartdate,A.planenddate,U.username as createuser,A.createdate 
+                            A.stck_code,D.name as stck_name,A.saleOrderCode,A.saleOrderDeliveryDate,A.planstartdate,A.planenddate,U.username as createuser,A.createdate,A.sbid 
                             from TKimp_Ewo A
                             left join TMateriel_Info B on A.materiel_code=B.partcode
                             left join TOrganization C on A.wkshp_code=C.org_code
                             left join T_Sec_Stck D on A.stck_code=D.code 
                             left join TUser U on A.createuser=U.usercode 
+                            left join TOrganization L on  C.parent_id=L.id
                             where A.is_delete<>'1' " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 mes.code = "200";
@@ -103,7 +124,7 @@
         #endregion
 
         #region[ERP璁㈠崟涓嬭揪]
-        public static ToMessage MarkSaveErpOrder(string erporderid, string erpordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string saleOrderDeliveryDate, string username)
+        public static ToMessage MarkSaveErpOrder(string erporderid, string erpordercode,string saleordercode, string partcode, string wkshopcode, string warehousecode, string erpqty, string markqty, string ordernum, string relse_qty, string saleOrderDeliveryDate, string username)
         {
             var sql = "";
             List<object> list = new List<object>();
@@ -128,7 +149,7 @@
                     if (i == 1)  //棣栧崟鑾峰彇宸ュ崟鍙�
                     {
                         sql = @"select isnull(max(cast(substring(wo_code,charindex('_',wo_code)+1,len(wo_code)-charindex('_',wo_code)) as numeric)),0)+1 as worknumb   
-                                from TK_Wrk_Man where m_po=@erpordercode";
+                                from TK_Wrk_Man where  m_po=@erpordercode";
                         dynamicParams.Add("@erpordercode", erpordercode);
                         var data = DapperHelper.selectdata(sql, dynamicParams);
                         num = Convert.ToInt32(data.Rows[0]["WORKNUMB"].ToString());
@@ -141,7 +162,7 @@
                     }
                     if (i == Convert.ToInt32(ordernum))  //鏈�鍚庝竴鍗曟椂
                     {
-                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderDeliveryDate)";
+                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderCode,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderCode,@saleOrderDeliveryDate)";
                         list.Add(new
                         {
                             str = sql,
@@ -158,6 +179,7 @@
                                 m_po = erpordercode,
                                 username = username,
                                 CreateDate = DateTime.Now.ToString(),
+                                saleOrderCode=saleordercode,
                                 saleOrderDeliveryDate = Convert.ToDateTime(saleOrderDeliveryDate)
                             }
                         });
@@ -166,7 +188,7 @@
                     else
                     {
 
-                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderDeliveryDate)";
+                        sql = @"insert into TK_Wrk_Man(wo_code,wotype,status,wkshp_code,plan_qty,stck_code,materiel_code,sourceid,m_po,lm_user,lm_date,saleOrderCode,saleOrderDeliveryDate) values(@wo_code,@wotype,@status,@wkshp_code,@plan_qty,@stck_code,@materiel_code,@sourceid,@m_po,@username,@CreateDate,@saleOrderCode,@saleOrderDeliveryDate)";
                         list.Add(new
                         {
                             str = sql,
@@ -183,6 +205,7 @@
                                 m_po = erpordercode,
                                 username = username,
                                 CreateDate = DateTime.Now.ToString(),
+                                saleOrderCode=saleordercode,
                                 saleOrderDeliveryDate = Convert.ToDateTime(saleOrderDeliveryDate)
                             }
                         });
@@ -304,15 +327,103 @@
         }
         #endregion
 
+        #region[ERP璁㈠崟鍒犻櫎]
+        public static ToMessage DeleteErpOrder(string erporderid, string erpordercode, string username)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                sql = @"select *  from TK_Wrk_Man where m_po=@erpordercode and sourceid=@erporderid and status<>'NEW'";
+                dynamicParams.Add("@erpordercode", erpordercode);
+                dynamicParams.Add("@erporderid", erporderid);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "褰撳墠璁㈠崟涓嬫湁宸ュ崟宸叉淳鍙戞垨宸插紑宸ユ垨宸插畬宸�(鍏抽棴),涓嶅厑璁稿垹闄�!";
+                    mes.data = null;
+                    return mes;
+                }
+                else
+                {
+                    //鍒犻櫎宸ュ崟
+                    sql = @"delete  TK_Wrk_Man  where m_po=@wo and sourceid=@erporderid";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            wo = erpordercode,
+                            erporderid = erporderid
+                        }
+                    });
+                    //鍒犻櫎璁㈠崟
+                    sql = @"delete  TKimp_Ewo  where wo=@wo and id=@erporderid";
+                    list.Add(new
+                    {
+                        str = sql,
+                        parm = new
+                        {
+                            wo = erpordercode,
+                            erporderid = erporderid
+                        }
+                    });
+                }
+                bool aa = DapperHelper.DoTransaction(list);
+                LogHelper.WriteLogData(aa.ToString());
+                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[MES宸ュ崟鏌ヨ]
-        public static ToMessage MesOrderSearch(string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+        public static ToMessage MesOrderSearch(string stu_torgcode,string stu_torgtypecode,string mesorderstus, string mesordercode, string sourceorder,string saleordercode, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
         {
             var dynamicParams = new DynamicParameters();
             string search = "";
             try
             {
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and C.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
                 if (mesorderstus != "" && mesorderstus != null)
                 {
                     search += "and A.status=@mesorderstus ";
@@ -327,6 +438,11 @@
                 {
                     search += "and A.m_po like '%'+@sourceorder+'%' ";
                     dynamicParams.Add("@sourceorder", sourceorder);
+                }
+                if (saleordercode != "" && saleordercode != null)
+                {
+                    search += "and W.saleOrderCode like '%'+@saleordercode+'%' ";
+                    dynamicParams.Add("@saleordercode", saleordercode);
                 }
                 if (ordertype != "" && ordertype != null)
                 {
@@ -366,14 +482,16 @@
                 // --------------鏌ヨ鎸囧畾鏁版嵁--------------
                 var total = 0; //鎬绘潯鏁�
                 var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
-                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date
+                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,W.saleOrderCode,U.username as lm_user,A.lm_date
                             from TK_Wrk_Man A
+                            left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code
                             left join TMateriel_Info B on A.materiel_code=B.partcode
                             left join TOrganization C on A.wkshp_code=C.org_code
                             left join T_Sec_Stck D on A.stck_code=D.code 
                             left join TFlw_Rout E on A.route_code=E.code
                             left join T_Sec_Stck F on A.stck_code=F.code 
                             left join TUser U on A.lm_user=U.usercode 
+                            left join TOrganization L on  C.parent_id=L.id
                             where A.is_delete<>'1' " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 mes.code = "200";
@@ -393,7 +511,7 @@
         #endregion
 
         #region[MES鎶ュ簾琛ュ崟宸ュ崟鏌ヨ]
-        public static ToMessage MesBadOrderSearch(string mesordercode, string sourceorder, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+        public static ToMessage MesBadOrderSearch(string mesordercode, string sourceorder,string saleordercode, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
         {
             var dynamicParams = new DynamicParameters();
             string search = "";
@@ -408,6 +526,11 @@
                 {
                     search += "and A.m_po like '%'+@sourceorder+'%' ";
                     dynamicParams.Add("@sourceorder", sourceorder);
+                }
+                if (saleordercode != "" && saleordercode != null)
+                {
+                    search += "and W.saleOrderCode like '%'+@saleordercode+'%' ";
+                    dynamicParams.Add("@saleordercode", saleordercode);
                 }
                 if (partcode != "" && partcode != null)
                 {
@@ -442,8 +565,9 @@
                 // --------------鏌ヨ鎸囧畾鏁版嵁--------------
                 var total = 0; //鎬绘潯鏁�
                 var sql = @"select A.id, A.status,A.wotype,A.wo_code,A.materiel_code as partcode,B.partname,B.partspec,A.plan_qty,A.wkshp_code,C.org_name as wkshp_name,
-                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,U.username as lm_user,A.lm_date,S.bad_qty
+                            A.route_code,E.name as route_name,A.stck_code,F.name as stck_name,A.plan_startdate,A.plan_enddate,A.piroque,A.sourceid,A.m_po,W.saleOrderCode,U.username as lm_user,A.lm_date,S.bad_qty
                             from TK_Wrk_Man A
+                            left join TKimp_Ewo W on A.m_po=W.wo and A.materiel_code=W.materiel_code
                             left join (select wo_code,sum(bad_qty) as bad_qty from  TK_Wrk_Step where bad_qty>0 group by wo_code) S on A.wo_code=S.wo_code
                             left join TMateriel_Info B on A.materiel_code=B.partcode
                             left join TOrganization C on A.wkshp_code=C.org_code
@@ -470,7 +594,7 @@
         #endregion
 
         #region[浜у搧缂栫爜鏌ユ壘宸ヨ壓璺嚎涓嬫媺鎺ュ彛]
-        public static ToMessage PartSelectRoute(string partcode)
+        public static ToMessage PartSelectRoute(string partcode,string wkshopcode)
         {
             string sql = "";
             var dynamicParams = new DynamicParameters();
@@ -480,8 +604,9 @@
                 sql = @"select R.code,R.name,A.default_route  from TMateriel_Info A
                         inner join  TMateriel_Route M on A.partcode=M.materiel_code
                         inner join  TFlw_Rout R on M.route_code=R.code
-                        where A.partcode=@partcode ";
+                        where A.partcode=@partcode and M.torg_code=@torg_code";
                 dynamicParams.Add("@partcode", partcode);
+                dynamicParams.Add("@torg_code", wkshopcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -499,23 +624,38 @@
         #endregion
 
         #region[宸ヨ壓璺嚎鏌ユ壘杞﹂棿涓嬫媺鎺ュ彛]
-        public static ToMessage RouteSelectWkshop(string partcode, string routecode)
+        public static ToMessage RouteSelectWkshop(string stu_torgcode,string stu_torgtypecode,string partcode)
         {
             string sql = "";
+            string search = "";
             var dynamicParams = new DynamicParameters();
             try
             {
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and F.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
                 //鑾峰彇杞﹂棿涓嬫媺妗嗘暟鎹�
-                sql = @"select distinct F.org_code,F.org_name  from TFlw_Rout A
-                        inner join  TMateriel_Route M on A.code=M.route_code
-                        inner join   TFlw_Rtdt B on A.code=B.rout_code
+                sql = @"select distinct F.org_code,F.org_name   from TMateriel_Route M
+                        inner join   TFlw_Rtdt B on M.route_code=B.rout_code
                         inner join TStep C on B.step_code=C.stepcode
                         inner join TFlw_Rteqp D on C.stepcode=D.step_code
                         inner join TEqpInfo  E on D.eqp_code=E.code
                         left join TOrganization F on E.wksp_code=F.org_code
-                        where A.code=@routecode and M.materiel_code=@partcode and E.enable='Y'";
+                        left join TOrganization L on  F.parent_id=L.id
+                        where M.materiel_code=@partcode and E.enable='Y' "+search;
                 dynamicParams.Add("@partcode", partcode);
-                dynamicParams.Add("@routecode", routecode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -599,7 +739,8 @@
                 sql = @"select B.step_code,C.eqp_code from TFlw_Rout A
                         inner join TFlw_Rtdt B on A.code=B.rout_code
                         left join TFlw_Rteqp C on B.step_code=C.step_code
-                        where A.code=@routecode";
+                        where A.code=@routecode and A.torg_code=@wkshopcode";
+                dynamicParams.Add("@wkshopcode", wkshopcode);
                 dynamicParams.Add("@routecode", routecode);
                 var dtck = DapperHelper.selectdata(sql, dynamicParams);
                 for (int i = 0; i < dtck.Rows.Count; i++)
@@ -616,7 +757,8 @@
                 //鍒ゆ柇宸ヤ綔绔�(璁惧)鏄惁鍙敤
                 sql = @"select B.step_code  from TFlw_Rout  A
 						inner join TFlw_Rtdt B on A.code=B.rout_code
-						where A.code=@routecode";
+						where A.code=@routecode and A.torg_code=@wkshopcode";
+                dynamicParams.Add("@wkshopcode", wkshopcode);
                 dynamicParams.Add("@routecode", routecode);
                 var dtck1 = DapperHelper.selectdata(sql, dynamicParams);
                 for (int i = 0; i < dtck1.Rows.Count; i++)
@@ -625,7 +767,8 @@
                     sql = @"select E.code,E.name,E.enable  
 						from  TFlw_Rteqp C
 						left join TEqpInfo E on C.eqp_code=E.code 
-						where C.step_code=@step_code";
+						where C.step_code=@step_code and C.torg_code=@wkshopcode";
+                    dynamicParams.Add("@wkshopcode", wkshopcode);
                     dynamicParams.Add("@step_code", dtck1.Rows[i]["step_code"].ToString());
                     var dtck2 = DapperHelper.selectdata(sql, dynamicParams);
                     int query = dtck2.AsEnumerable().Where<DataRow>(a => a["enable"].ToString() == "N").Count();
@@ -644,12 +787,13 @@
                         inner join TFlw_Rtdt B on A.code=B.rout_code
                         left join TFlw_Rteqp C on B.step_code=C.step_code
                         left join TStep S on B.step_code=S.stepcode
-                        where A.code=@route_code
+                        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) as S on
+                        left join (select * from TPrteEqp_Stad   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);
+                dynamicParams.Add("@wkshopcode", wkshopcode);
                 var dtc = DapperHelper.selectdata(sql, dynamicParams);
                 for (int i = 0; i < dtc.Rows.Count; i++)
                 {
@@ -1296,7 +1440,7 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(鑷埗)]
-        public static ToMessage MesOrderStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
+        public static ToMessage MesOrderStepSearch(string stu_torgcode,string stu_torgtypecode, string orderstepqrcode, int startNum, int endNum, string prop, string order)
         {
             var sql = "";
             string search = "";
@@ -1324,7 +1468,7 @@
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
 
-                    if (ordercode != "" && ordercode != null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+                    if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
                     {
                         search += "and A.wo_code=@ordercode ";
                         dynamicParams.Add("@ordercode", ordercode);
@@ -1363,14 +1507,31 @@
                         }
                     }
                 }
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and F.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
                 //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(鑷埗宸ュ簭)
                 sql = @"select A.status,A.wo_code,B.route_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
-                            S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
-                            from TK_Wrk_Step A
-                            left join TK_Wrk_Man B on A.wo_code=B.wo_code
-                            left join TMateriel_Info M on B.materiel_code=M.partcode
-                            left join TStep S on A.step_code=S.stepcode
-                            where A.status in('ALLO','START') and S.flwtype='Z'  " + search;
+                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
+                        from TK_Wrk_Step A
+                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
+                        left join TMateriel_Info M on B.materiel_code=M.partcode
+                        left join TStep S on A.step_code=S.stepcode
+                        left join TOrganization F on B.wkshp_code=F.org_code
+                        left join TOrganization L on  F.parent_id=L.id
+                        where A.status in('ALLO','START') and S.flwtype='Z'  " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 if (data.ToList().Count > 0)
                 {
@@ -1401,7 +1562,7 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(澶栧崗)]
-        public static ToMessage MesOrderWxStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
+        public static ToMessage MesOrderWxStepSearch(string stu_torgcode,string stu_torgtypecode,string orderstepqrcode, int startNum, int endNum, string prop, string order)
         {
             var sql = "";
             string search = "";
@@ -1428,7 +1589,7 @@
                         ordercode = arra[0]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
-                    if (ordercode != "" && ordercode != null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+                    if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
                     {
                         search += "and A.wo_code=@ordercode ";
                         dynamicParams.Add("@ordercode", ordercode);
@@ -1467,13 +1628,30 @@
                         }
                     }
                 }
-                //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(鑷埗宸ュ簭)
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and F.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
+                //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟(澶栧崗宸ュ簭)
                 sql = @"select A.status,A.wo_code,B.route_code,M.partcode,M.partname,M.partspec,A.seq,A.isbott,A.isend,
                             S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,A.plan_startdate,A.plan_enddate,B.lm_date
                             from TK_Wrk_Step A
                             left join TK_Wrk_Man B on A.wo_code=B.wo_code
                             left join TMateriel_Info M on B.materiel_code=M.partcode
                             left join TStep S on A.step_code=S.stepcode
+                            left join TOrganization F on B.wkshp_code=F.org_code
+                            left join TOrganization L on  F.parent_id=L.id
                             where A.status in('ALLO','START') and S.flwtype='W'  " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 if (data.ToList().Count > 0)
@@ -1505,7 +1683,7 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇)]
-        public static ToMessage MesOrderNgStepSearch(string orderstepqrcode, int startNum, int endNum, string prop, string order)
+        public static ToMessage MesOrderNgStepSearch(string stu_torgcode,string stu_torgtypecode,string orderstepqrcode, int startNum, int endNum, string prop, string order)
         {
             var sql = "";
             string search = "";
@@ -1532,7 +1710,7 @@
                         ordercode = arra[0]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
-                    if (ordercode != "" && ordercode != null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
+                    if (ordercode != "" && stepcode == null) //宸ュ崟鍙蜂笉涓虹┖,宸ュ簭鍙蜂负绌�
                     {
                         search += "and A.wo_code=@ordercode ";
                         dynamicParams.Add("@ordercode", ordercode);
@@ -1561,14 +1739,31 @@
                         return mes;
                     }
                 }
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and F.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
                 //鏍规嵁鏉′欢鏌ヨ宸ュ崟宸ュ簭浠诲姟,涓斾笉鑹暟閲忓ぇ浜�0
                 sql = @"select A.wo_code,M.partcode,M.partname,M.partspec,A.seq,A.isend,
-                            S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,B.lm_date
-                            from TK_Wrk_Step A
-                            left join TK_Wrk_Man B on A.wo_code=B.wo_code
-                            left join TMateriel_Info M on B.materiel_code=M.partcode
-                            left join TStep S on A.step_code=S.stepcode
-                            where A.status in('ALLO','START') and A.ng_qty>0 " + search;
+                        S.stepcode,S.stepname,S.descr,A.plan_qty,A.good_qty,A.ng_qty,A.bad_qty,B.lm_date
+                        from TK_Wrk_Step A
+                        left join TK_Wrk_Man B on A.wo_code=B.wo_code
+                        left join TMateriel_Info M on B.materiel_code=M.partcode
+                        left join TStep S on A.step_code=S.stepcode
+                        left join TOrganization F on B.wkshp_code=F.org_code
+                        left join TOrganization L on  F.parent_id=L.id
+                        where A.status in('ALLO','START') and A.ng_qty>0 " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 if (data.ToList().Count > 0)
                 {
@@ -1716,7 +1911,7 @@
         #endregion
 
         #region [鐢熶骇寮�鎶ュ伐锛氬紑宸�(寮�濮�/鎶ュ伐)/澶栧崗鍙戞枡鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛]
-        public static ToMessage MesOrderStepStart(string OperType, string SelectType, string orderstepqrcode)
+        public static ToMessage MesOrderStepStart(string OperType,string stu_torgcode, string SelectType, string orderstepqrcode)
         {
             var sql = "";
             string search = "";
@@ -1745,10 +1940,10 @@
                     switch (OperType)
                     {
                         case "ZZ":
-                            mes = ScanStartReport.ZZEncodingSeach(ordercode, stepcode);
+                            mes = ScanStartReport.ZZEncodingSeach(stu_torgcode, SelectType,ordercode, stepcode);
                             break;
                         case "WX":
-                            mes = ScanStartReport.WXEncodingSeach(SelectType, ordercode, stepcode);
+                            mes = ScanStartReport.WXEncodingSeach(stu_torgcode,SelectType, ordercode, stepcode);
                             break;
                         default:
                             break;
@@ -1806,9 +2001,11 @@
                     return mes;
                 }
                 //鑾峰彇宸ュ簭鍏宠仈鐨勮澶�
-                sql = @"select B.code,B.name from TFlw_Rteqp A
+                sql = @"select B.code,B.name  from TK_Wrk_Man M
+                        inner join TFlw_Rtdt R on M.route_code=R.rout_code
+                        inner join TFlw_Rteqp A on R.step_code=A.step_code
                         left join TEqpInfo B on A.eqp_code=B.code
-                        where A.style='E' and A.step_code=@stepcode and B.enable='Y'";
+                        where A.style='E' and M.wo_code=@wo_code and A.step_code=@stepcode and B.enable='Y'";
                 dynamicParams.Add("@wo_code", ordercode);
                 dynamicParams.Add("@stepcode", stepcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
@@ -1828,14 +2025,38 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐锛氭姤宸ユ椂鑾峰彇鐢熶骇鐝粍涓嬫媺妗哴
-        public static ToMessage MesOrderStepReportSelectUserGroup()
+        public static ToMessage MesOrderStepReportSelectUserGroup(string stu_torgcode,string stu_torgtypecode,string wkshopcode)
         {
             string sql = "";
+            string search = "";
+            var dynamicParams = new DynamicParameters();
             try
             {
+                if (wkshopcode != "" && wkshopcode != null)
+                {
+                    search += "and A.torg_code=@workShop ";
+                    dynamicParams.Add("@workShop", wkshopcode);
+                }
+                else
+                {
+                    switch (stu_torgtypecode)
+                    {
+                        case "":
+                            search += "and T.description=@description ";
+                            dynamicParams.Add("@description", "W");
+                            break;
+                        case "D":
+                            search += "and  L.org_code=@stu_torgcode ";
+                            dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                            break;
+                    }
+                }
                 //鑾峰彇鐢ㄦ埛缁�
-                sql = @"select group_code,group_name from TGroup";
-                var data = DapperHelper.selecttable(sql);
+                sql = @"select group_code,group_name from TGroup  A
+                        left join TOrganization T on A.torg_code=T.org_code 
+                        left join TOrganization as L on T.parent_id=L.id 
+                        where 1=1 "+search;
+                var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
                 mes.data = data;
@@ -1852,14 +2073,19 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐锛氭牴鎹敓浜х彮缁勬煡鎵句汉鍛樺垪琛╙
-        public static ToMessage MesOrderGroupSelectUser(string usergroupcode)
+        public static ToMessage MesOrderGroupSelectUser(string stu_torgcode, string usergroupcode)
         {
             string sql = "";
             var dynamicParams = new DynamicParameters();
             try
             {
                 //鐝粍鑾峰彇浜哄憳鍒楄〃
-                sql = @"select usercode,username  from TUser where usergroup_code=@usergroupcode and is_delete<>'1'";
+                sql = @"select U.usercode,U.username   
+                        from TGroup G
+                        inner join TGroupUser T on G.group_code=T.group_code
+                        left join  TUser U on T.user_code=U.usercode
+                        where G.torg_code=@stu_torgcode and G.group_code=@usergroupcode";
+                dynamicParams.Add("@stu_torgcode", stu_torgcode);
                 dynamicParams.Add("@usergroupcode", usergroupcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
@@ -2022,15 +2248,16 @@
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
                 list.Clear();
                 //鍒ゆ柇鏄惁鏈夊紑宸ヨ褰�
-                sql = @"select *  from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code  and style='S'";
+                sql = @"select *  from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code  and eqp_code=@eqpcode and style='S'";
                 dynamicParams.Add("@wo_code", mesordercode);
                 dynamicParams.Add("@step_code", stepcode);
+                dynamicParams.Add("@eqpcode", eqpcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 if (data.Rows.Count > 0)
                 {
                     mes.code = "300";
                     mes.count = 0;
-                    mes.Message = "褰撳墠宸ュ簭浠诲姟宸插紑宸�!";
+                    mes.Message = "褰撳墠宸ュ簭浠诲姟璁惧宸插紑宸�!";
                     mes.data = null;
                     return mes;
                 }
@@ -2078,10 +2305,10 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦]
-        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, string ngqty, string badcode, string remarks, string username)
+        public static ToMessage SavaMesOrderStepReport(string mesordercode, string partcode, string stepseq, string stepcode, string eqpcode, string inbarcode, string reckway, string usergroupcode, string reportuser, string taskqty, string startqty, string reportqty, List<ReportDefectList> defectobjs, string remarks, string username)
         {
             var sql = "";
-            //string[] arra = new string[] { };
+            decimal ngqty = 0;
             string[] arra1 = new string[] { };
             List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
@@ -2090,12 +2317,18 @@
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
                 //鑾峰彇鎶ュ伐浜哄憳銆佸垎閰嶆瘮渚�
                 JArray arra = (JArray)Newtonsoft.Json.JsonConvert.DeserializeObject(reportuser);
-                if (ngqty != "" || ngqty != "0")
+                //鍒ゆ柇鏄惁鏈変笉鑹暟鎹�
+                var groupedItems = defectobjs.GroupBy(item => item.defect_code) // 鎸夌紪鐮乧ode鍒嗙粍
+                        .Select(group => new { defect_code = group.Key, badqty = group.Sum(item =>Convert.ToDecimal(item.badqty)) }).ToList(); // 姹囨�绘暟閲弎ty
+                if (groupedItems.Count <= 0)
                 {
-                    //鎴彇涓嶈壇鍘熷洜
-                    arra1 = badcode.Split(';');
+                    ngqty = 0;
                 }
-
+                else
+                {
+                    //姹囨�讳笉鑹暟閲�
+                    ngqty = groupedItems.Sum(item => Convert.ToDecimal(item.badqty));
+                }
                 list.Clear();
                 //鍒ゆ柇鏄惁鏈夋姤宸ヨ褰�(鏈夛細淇敼 鏃狅細鏂板)
                 sql = @"select *  from TK_Wrk_Record where wo_code=@wo_code and step_code=@step_code and style='B'";
@@ -2105,9 +2338,10 @@
                 //鑾峰彇寮�宸ヨ褰曠殑榛樿閫変腑鐨勮澶�(浜х嚎)涓庢姤宸ユ椂鐨勮澶囦骇绾垮仛瀵规瘮鍒ゆ柇
                 sql = @"select A.eqp_code,B.name  from TK_Wrk_Record A
                         inner join TEqpInfo B on A.eqp_code=B.code
-                        where A.wo_code=@wo_code and A.step_code=@step_code and A.style='S'";
+                        where A.wo_code=@wo_code and A.step_code=@step_code and eqp_code=@eqpcode  and A.style='S'";
                 dynamicParams.Add("@wo_code", mesordercode);
                 dynamicParams.Add("@step_code", stepcode);
+                dynamicParams.Add("@eqpcode", eqpcode);
                 var da = DapperHelper.selectdata(sql, dynamicParams);
                 if (da.Rows[0]["EQP_CODE"].ToString() != eqpcode)
                 {
@@ -2122,6 +2356,7 @@
                     //鑾峰彇涓昏〃鏈�澶D
                     sql = @"select ISNULL(IDENT_CURRENT('TK_Wrk_Record')+1,1) as id";
                     var dt = DapperHelper.selecttable(sql);
+
                     //鍐欏叆寮�鎶ュ伐璁板綍琛�
                     sql = @"insert into  TK_Wrk_Record(wo_code,step_seq,step_code,eqp_code,materiel_code,task_qty,start_qty,good_qty,ng_qty,style,lm_user,lm_date,inbarcode) 
                                 values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date,@inbarcode)";
@@ -2153,14 +2388,14 @@
                         });
 
                     }
-                    if (badcode != "" && ngqty != "0")
+                    if (groupedItems.Count>0)
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
-                        for (int i = 0; i < arra1.Length; i++)
+                        for (int i = 0; i < groupedItems.Count; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "B", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty= groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "B", lm_user = username, lm_date = date } });
 
                         }
                     }
@@ -2224,14 +2459,14 @@
                         });
 
                     }
-                    if (badcode != "" && ngqty != "0")
+                    if (groupedItems.Count > 0)
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
-                        for (int i = 0; i < arra1.Length; i++)
+                        for (int i = 0; i < groupedItems.Count; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "B", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty= groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "B", lm_user = username, lm_date = date } });
 
                         }
                     }
@@ -2355,20 +2590,27 @@
         #endregion
 
         #region[鐢熶骇寮�鎶ュ伐, 鏀舵枡鎻愪氦]
-        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inbarcode, string inuser, string taskqty, string sqty, string ngqty, string badcode, string remarks, string username)
+        public static ToMessage SavaMesOrderStepIn(string mesordercode, string partcode, string stepseq, string stepcode, string wxcode, string inbarcode, string inuser, string taskqty, string sqty, List<ReportDefectList> defectobjs, string remarks, string username)
         {
             var sql = "";
             string[] arra1 = new string[] { };
+            decimal ngqty = 0;
             List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
             try
             {
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
-                //鎴彇涓嶈壇鍘熷洜
-                if (ngqty != "" || ngqty != "0")
+                //鍒ゆ柇鏄惁鏈変笉鑹暟鎹�
+                var groupedItems = defectobjs.GroupBy(item => item.defect_code) // 鎸夌紪鐮乧ode鍒嗙粍
+                        .Select(group => new { defect_code = group.Key, badqty = group.Sum(item => Convert.ToDecimal(item.badqty)) }).ToList(); // 姹囨�绘暟閲弎ty
+                if (groupedItems.Count <= 0)
                 {
-                    //鎴彇涓嶈壇鍘熷洜
-                    arra1 = badcode.Split(';');
+                    ngqty = 0;
+                }
+                else
+                {
+                    //姹囨�讳笉鑹暟閲�
+                    ngqty = groupedItems.Sum(item => Convert.ToDecimal(item.badqty));
                 }
 
                 list.Clear();
@@ -2402,7 +2644,7 @@
                     mes.data = null;
                     return mes;
                 }
-                if ((decimal.Parse(sqty) + decimal.Parse(ngqty)) > decimal.Parse(da.Rows[0]["FQTY"].ToString()))  //鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鍙戞枡鏁伴噺
+                if ((decimal.Parse(sqty) + ngqty) > decimal.Parse(da.Rows[0]["FQTY"].ToString()))  //鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鍙戞枡鏁伴噺
                 {
                     mes.code = "300";
                     mes.count = 0;
@@ -2422,7 +2664,7 @@
                 {
                     decimal sum_sqty = data.AsEnumerable().Select(d => d.Field<decimal>("SQTY")).Sum();  //鑾峰彇鍚屽崟鍙�,鍚屽伐搴�,鍚屽鍗忎緵搴斿晢鏀舵枡鎬绘暟閲�
                     decimal sum_fqty = da.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();  //鑾峰彇鍚屽崟鍙�,鍚屽伐搴�,鍚屽鍗忎緵搴斿晢鍙戞枡鎬绘暟閲�
-                    if ((sum_sqty + decimal.Parse(sqty) + decimal.Parse(ngqty)) > sum_fqty) //宸叉敹鏂欐�绘暟+褰撳墠鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鎬诲彂鏂欐暟閲�
+                    if ((sum_sqty + decimal.Parse(sqty) + ngqty) > sum_fqty) //宸叉敹鏂欐�绘暟+褰撳墠鏀舵枡鏁伴噺+涓嶈壇鏁伴噺>鎬诲彂鏂欐暟閲�
                     {
                         mes.code = "300";
                         mes.count = 0;
@@ -2445,14 +2687,14 @@
                                 values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
                     list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
 
-                    if (badcode != "" && ngqty != "0")
+                    if (groupedItems.Count>0)
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
-                        for (int i = 0; i < arra1.Length; i++)
+                        for (int i = 0; i < groupedItems.Count; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "S", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty= groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "S", lm_user = username, lm_date = date } });
 
                         }
                     }
@@ -2494,14 +2736,14 @@
                                 values(@m_id,@wxcode,@in_person,@in_time,@sqty,@ng_qty,@style,@lm_user,@lm_date)";
                     list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), wxcode = wxcode, in_person = inuser, in_time = date, sqty = sqty, ng_qty = ngqty, style = "S", lm_user = username, lm_date = date } });
 
-                    if (badcode != "" && ngqty != "0")
+                    if (groupedItems.Count > 0)
                     {
                         //鍐欏叆缂洪櫡璁板綍琛�
-                        for (int i = 0; i < arra1.Length; i++)
+                        for (int i = 0; i < groupedItems.Count; i++)
                         {
-                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,remarks,style,lm_user,lm_date) 
-                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
-                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], remarks = remarks, style = "S", lm_user = username, lm_date = date } });
+                            sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_pendqty,defect_code,remarks,style,lm_user,lm_date) 
+                                values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_pendqty,@defect_code,@remarks,@style,@lm_user,@lm_date)";
+                            list.Add(new { str = sql, parm = new { record_id = int.Parse(dt.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = groupedItems[i].badqty, defect_pendqty= groupedItems[i].badqty, defect_code = groupedItems[i].defect_code, remarks = remarks, style = "S", lm_user = username, lm_date = date } });
 
                         }
                     }
@@ -2574,7 +2816,7 @@
                             str = sql,
                             parm = new
                             {
-                                m_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+                                m_id = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
                                 repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                 bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString())
                             }
@@ -2591,18 +2833,33 @@
                                 bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
                                 wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                 step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
-                                id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+                                id = int.Parse(json.Data.Rows[i]["M_ID"].ToString())
                             }
                         });
-                        //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
-                        sql = @"insert into  CSR_WorkRecord_DefectHandle(record_subid,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date) 
-                                values(@record_subid,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+                        //鍥炲啓缂洪櫡璁板綍琛ㄧ殑寰呭鐞嗘暟閲�
+                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@bad_qty,defect_pendqty=defect_pendqty-@repair_qty-@bad_qty,bad_qty=bad_qty+@bad_qty
+                        where wo_code=@wo_code and step_code=@step_code and id=@id and style='B'";
                         list.Add(new
                         {
                             str = sql,
                             parm = new
                             {
-                                record_subid = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
+                                repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+                                bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
+                                wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+                                step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
+                                id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+                            }
+                        });
+                        //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+                        sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date) 
+                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                 wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                 partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
                                 stepseq = json.Data.Rows[i]["SEQ"].ToString(),
@@ -2630,7 +2887,7 @@
                             str = sql,
                             parm = new
                             {
-                                m_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
+                                m_id = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
                                 repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
                                 bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString())
                             }
@@ -2647,18 +2904,33 @@
                                 bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
                                 wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                 step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
-                                id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+                                id = int.Parse(json.Data.Rows[i]["M_ID"].ToString())
                             }
                         });
-                        //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
-                        sql = @"insert into  CSR_WorkRecord_DefectHandle(record_subid,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date) 
-                                values(@record_subid,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+                        //鍥炲啓缂洪櫡璁板綍琛ㄧ殑寰呭鐞嗘暟閲�
+                        sql = @"update CSR_WorkRecord_Defect set defect_qty=defect_qty-@repair_qty-@bad_qty,defect_pendqty=defect_pendqty-@repair_qty-@bad_qty,bad_qty=bad_qty+@bad_qty
+                        where wo_code=@wo_code and step_code=@step_code and id=@id and style='S'";
                         list.Add(new
                         {
                             str = sql,
                             parm = new
                             {
-                                record_subid = int.Parse(json.Data.Rows[i]["M_ID"].ToString()),
+                                repair_qty = decimal.Parse(json.Data.Rows[i]["REPAIR_QTY"].ToString()),
+                                bad_qty = decimal.Parse(json.Data.Rows[i]["BAD_QTY"].ToString()),
+                                wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
+                                step_code = json.Data.Rows[i]["STEP_CODE"].ToString(),
+                                id = int.Parse(json.Data.Rows[i]["ID"].ToString())
+                            }
+                        });
+                        //鍐欏叆鎶ュ伐缂洪櫡澶勭悊璁板綍琛�
+                        sql = @"insert into  CSR_WorkRecord_DefectHandle(defect_id,wo_code,partnumber,step_seq,step_code,repair_qty,bad_qty,defect_code,style,lm_user,lm_date) 
+                                values(@defect_id,@wo_code,@partcode,@stepseq,@stepcode,@repair_qty,@bad_qty,@defect_code,@style,@lm_user,@lm_date)";
+                        list.Add(new
+                        {
+                            str = sql,
+                            parm = new
+                            {
+                                defect_id = int.Parse(json.Data.Rows[i]["ID"].ToString()),
                                 wo_code = json.Data.Rows[i]["WO_CODE"].ToString(),
                                 partcode = json.Data.Rows[i]["MATERIEL_CODE"].ToString(),
                                 stepseq = json.Data.Rows[i]["SEQ"].ToString(),
@@ -2719,7 +2991,7 @@
 
 
         #region[宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭痌
-        public static ToMessage MesOrderStepCheckSearch(string orderstepqrcode, string checktype)
+        public static ToMessage MesOrderStepCheckSearch(string stu_torgcode, string orderstepqrcode, string checktype)
         {
             var sql = "";
             string ordercode = "";
@@ -2744,6 +3016,34 @@
                         ordercode = arra[0]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                         stepcode = arra[1]; //鑾峰彇鎸囧畾瀛楃涓插墠闈㈢殑瀛楃
                     }
+                    //鍒ゆ柇褰撳墠宸ュ崟鏄惁鍏抽棴
+                    sql = @"select *   from TK_Wrk_Man where wo_code=@ordercode and wkshp_code=@stu_torgcode and status='CLOSED'";
+                    dynamicParams.Add("@ordercode", ordercode);
+                    dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                    var da0 = DapperHelper.selectdata(sql, dynamicParams);
+                    if (da0.Rows.Count > 0)
+                    {
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "褰撳墠宸ュ崟宸插叧闂�,涓嶅厑璁告楠屾搷浣�!";
+                        mes.data = null;
+                        return mes;
+                    }
+
+                    //0.鍒ゆ柇褰撳墠宸ュ崟鎵�灞炶溅闂存槸鍚︿负褰撳墠鐧诲綍浜哄憳杞﹂棿
+                    sql = @"select *   from TK_Wrk_Man where wo_code=@ordercode and wkshp_code=@stu_torgcode";
+                    dynamicParams.Add("@ordercode", ordercode);
+                    dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                    var da1 = DapperHelper.selectdata(sql, dynamicParams);
+                    if (da1.Rows.Count <= 0)
+                    {
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "涓嶆槸鏈溅闂寸敓浜т换鍔�,涓嶅厑璁告楠屾搷浣�!";
+                        mes.data = null;
+                        return mes;
+                    }
+
                     //閫氳繃鎵弿浜岀淮鐮佷俊鎭煡鎵句换鍔′俊鎭�
                     sql = @"select A.wo_code,A.good_qty,M.partcode,M.partname,M.partspec,M.stocktype_code,S.stepcode,S.stepname  
                             from TK_Wrk_Step A
@@ -2867,7 +3167,7 @@
         #endregion
 
         #region[宸ュ簭妫�楠�,鎻愪氦]
-        public static ToMessage SaveMesOrderStepCheckItem(string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, string username)
+        public static ToMessage SaveMesOrderStepCheckItem(string stu_torgcode,string wocode, string partcode, string stepcode, string checkstandcode, string check_type, string sampmethod, string qualitystatus, string labqty, string sampleqty, string goodqty, string ngqty, string checkitemcont, string username)
         {
             var sql = "";
             string checktypename = "";
@@ -2881,8 +3181,8 @@
                 list.Clear();
 
                 //鍐欏叆妫�楠岃褰曚富琛�
-                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date) 
-                                values(@wo_code,@partcode,@step_code,@checkstaned_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date)";
+                sql = @"insert into  TStepCheckRecord(wo_code,partcode,step_code,checkstaned_code,check_user,check_type,check_typename,sampmethod,check_result,check_qty,good_qty,ng_qty,lm_user,lm_date,torg_code) 
+                                values(@wo_code,@partcode,@step_code,@checkstaned_code,@check_user,@check_type,@check_typename,@sampmethod,@check_result,@check_qty,@good_qty,@ng_qty,@lm_user,@lm_date,@torg_code)";
                 switch (check_type)
                 {
                     case "FirstCheck":
@@ -2915,14 +3215,15 @@
                         good_qty = decimal.Parse(goodqty),
                         ng_qty = decimal.Parse(ngqty),
                         lm_user = username,
-                        lm_date = datetime
+                        lm_date = datetime,
+                        torg_code = stu_torgcode
                     }
                 });
                 //鍐欏叆妫�楠岃褰曞瓙琛�
                 for (int j = 0; j < arra.Count; j++)
                 {
-                    sql = @"insert into  TStepCheckRecordSub(m_id,checknum,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_value,check_result,lm_user,lm_date) 
-                                values(CONVERT(INT,IDENT_CURRENT('TStepCheckRecord')),@checknum,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_value,@check_result,@lm_user,@lm_date)";
+                    sql = @"insert into  TStepCheckRecordSub(m_id,checknum,checkitem_seq,checkitem_code,checkitem_name,checkitem_descr,check_value,check_result,lm_user,lm_date,torg_code) 
+                                values(CONVERT(INT,IDENT_CURRENT('TStepCheckRecord')),@checknum,@checkiem_seq,@checkitem_code,@checkitem_name,@checkitem_descr,@check_value,@check_result,@lm_user,@lm_date,@torg_code)";
                     list.Add(new
                     {
                         str = sql,
@@ -2936,7 +3237,8 @@
                             check_value = arra[j]["check_value"].ToString(),
                             check_result = arra[j]["check_result"].ToString(),
                             lm_user = username,
-                            lm_date = datetime
+                            lm_date = datetime,
+                            torg_code = stu_torgcode
                         }
                     });
                 }
@@ -2972,12 +3274,27 @@
 
 
         #region[MES宸ュ崟鎵归噺鍏抽棴鏌ヨ]
-        public static ToMessage MesOrderBitchClosedSearch(string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
+        public static ToMessage MesOrderBitchClosedSearch(string stu_torgcode,string stu_torgtypecode,string mesorderstus, string mesordercode, string sourceorder, string ordertype, string partcode, string partname, string partspec, int startNum, string creatuser, string createdate, int endNum, string prop, string order)
         {
             var dynamicParams = new DynamicParameters();
             string search = "";
             try
             {
+                switch (stu_torgtypecode)
+                {
+                    case "":
+                        break;
+                    case "D":
+                        search += "and L.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    case "W":
+                        search += "and C.org_code=@stu_torgcode ";
+                        dynamicParams.Add("@stu_torgcode", stu_torgcode);
+                        break;
+                    default:
+                        break;
+                }
                 if (mesorderstus != "" && mesorderstus != null)
                 {
                     search += "and A.status=@mesorderstus ";
@@ -3042,6 +3359,7 @@
                             left join TFlw_Rout E on A.route_code=E.code
                             left join T_Sec_Stck F on A.stck_code=F.code 
                             left join TUser U on A.lm_user=U.usercode 
+                            left join TOrganization L on  C.parent_id=L.id
                             where A.is_delete<>'1' " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 mes.code = "200";

--
Gitblit v1.9.3