From 32c0daf9a78039004bb6c39d578f7734f13d54b1 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期二, 10 十月 2023 10:54:47 +0800
Subject: [PATCH] 1.工单派发校验工价,工价未提前设置或设置部分,如果开关关闭时,不校验是否未设置 或者未设置全,工价复制表中都会写入,没有设置的工价就默认0 如果开关打开就必须要设置工价

---
 VueWebApi/DLL/DAL/ProductionManagementDAL.cs |  299 ++++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 221 insertions(+), 78 deletions(-)

diff --git a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
index 32931de..21d1d67 100644
--- a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -98,7 +98,7 @@
                 // --------------鏌ヨ鎸囧畾鏁版嵁--------------
                 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,A.saleOrderCode,A.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
@@ -149,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());
@@ -313,6 +313,79 @@
                     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[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;
                 }
             }
@@ -607,7 +680,7 @@
             try
             {
                 //鑾峰彇宸ヨ壓璺嚎瀵瑰簲宸ュ簭淇℃伅
-                sql = @"select A.seq,T.stepcode,T.stepname,T.flwtype,T.descr  from TFlw_Rtdt A
+                sql = @"select A.seq,T.stepcode,T.stepname,T.flwtype,T.descr,'0' as stepprice  from TFlw_Rtdt A
                         left join  TStep T on A.step_code=T.stepcode
                         where A.rout_code=@partcode ";
                 dynamicParams.Add("@partcode", routecode);
@@ -653,7 +726,7 @@
         #endregion
 
         #region[宸ュ崟娲惧彂閫夋嫨宸ヨ壓璺嚎鎴栭�夋嫨鐢熶骇杞﹂棿鏃跺垽鏂粦瀹氭潯浠禲
-        public static ToMessage SelectRouteOrWkshop(string partcode, string routecode, string wkshopcode)
+        public static ToMessage SelectRouteOrWkshop(string partcode, string routecode, string wkshopcode,string is_steprice)
         {
             string sql = "";
             var dynamicParams = new DynamicParameters();
@@ -708,8 +781,10 @@
                         return mes;
                     }
                 }
-                //鍒ゆ柇宸ヨ壓璺嚎瀵瑰簲宸ュ簭鍏宠仈鐨勫伐浣滅珯鏄惁鏈夎缃妭鎷嶅伐浠�
-                sql = @"select AA.step_code,AA.eqp_code,AA.flwtype,S.unprice  from (
+                if (is_steprice == "Y")
+                {
+                    //鍒ゆ柇宸ヨ壓璺嚎瀵瑰簲宸ュ簭鍏宠仈鐨勫伐浣滅珯鏄惁鏈夎缃妭鎷嶅伐浠�
+                    sql = @"select AA.step_code,AA.eqp_code,AA.flwtype,S.unprice  from (
                         select A.code,B.step_code,C.eqp_code,S.flwtype 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
@@ -718,21 +793,22 @@
                         ) as AA
                         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++)
-                {
-                    if (dtc.Rows[i]["flwtype"].ToString() == "Z") //鍒ゆ柇宸ュ簭鏄惁涓鸿嚜鍒�
+                    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++)
                     {
-                        if (dtc.Rows[i].IsNull("unprice") || decimal.Parse(dtc.Rows[i]["unprice"].ToString()) == 0)
+                        if (dtc.Rows[i]["flwtype"].ToString() == "Z") //鍒ゆ柇宸ュ簭鏄惁涓鸿嚜鍒�
                         {
-                            mes.code = "300";
-                            mes.count = 0;
-                            mes.Message = "鑺傛媿宸ヤ环涓細褰撳墠浜у搧銆�" + partcode + "銆戯紝瀵瑰簲宸ヨ壓璺嚎銆�" + routecode + "銆戞湭璁剧疆(鎴栨湭璁剧疆鍏�)鎴栧伐浠峰皬浜庣瓑浜�0!";
-                            mes.data = null;
-                            return mes;
+                            if (dtc.Rows[i].IsNull("unprice") || decimal.Parse(dtc.Rows[i]["unprice"].ToString()) == 0)
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "鑺傛媿宸ヤ环涓細褰撳墠浜у搧銆�" + partcode + "銆戯紝瀵瑰簲宸ヨ壓璺嚎銆�" + routecode + "銆戞湭璁剧疆(鎴栨湭璁剧疆鍏�)鎴栧伐浠峰皬浜庣瓑浜�0!";
+                                mes.data = null;
+                                return mes;
+                            }
                         }
                     }
                 }
@@ -881,21 +957,28 @@
                             CreateDate = DateTime.Now.ToString()
                         }
                     });
+
                     //鍐欏叆宸ュ崟宸ヨ壓璺嚎宸ュ簭宸ヤ环澶嶅埗琛�
                     sql = @"insert into TWoPrteEqp_Stad(wo,materiel_code,eqp_code,stand_value,opc_conver,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,torg_code,is_delete,step_code)
-                           select distinct @mesordercode as wo,S.materiel_code,S.eqp_code,S.stand_value,S.opc_conver,S.route_code,S.unprice,
-                           S.eqp_value,S.cavity_qty,S.wkspcode,S.lm_user,S.lm_date,S.torg_code,S.is_delete,S.step_code
+                           select distinct @mesordercode as wo,@partcode as  materiel_code,AA.eqp_code,isnull(S.stand_value,0) as stand_value,isnull(S.opc_conver,0) as opc_conver,AA.rout_code,
+                           isnull(S.unprice,0) as unprice,isnull(S.eqp_value,0) as eqp_value,isnull(S.cavity_qty,0) as cavity_qty,@wkshopcode as wkspcode,@usercode as lm_user,
+                           getdate() as lm_date,S.torg_code,isnull(S.is_delete,0) as is_delete,AA.step_code  from (
+                           select  A.rout_code,A.step_code,C.eqp_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";
+                           where A.rout_code=@routecode
+                           ) as AA
+                           left join (select *   from TPrteEqp_Stad  where materiel_code=@partcode and route_code=@routecode) as S on AA.step_code=S.step_code and AA.eqp_code=S.eqp_code";
                     list.Add(new
                     {
                         str = sql,
                         parm = new
                         {
                             mesordercode = mesordercode,
-                            materiel_code = partcode,
-                            routecode = routecode
+                            wkshopcode = wkshopcode,
+                            partcode = partcode,
+                            routecode = routecode,
+                            usercode = username
                         }
                     });
 
@@ -1003,21 +1086,28 @@
                     });
                     //鍐欏叆宸ュ崟宸ヨ壓璺嚎宸ュ簭宸ヤ环澶嶅埗琛�
                     sql = @"insert into TWoPrteEqp_Stad(wo,materiel_code,eqp_code,stand_value,opc_conver,route_code,unprice,eqp_value,cavity_qty,wkspcode,lm_user,lm_date,torg_code,is_delete,step_code)
-                           select distinct @mesordercode as wo,S.materiel_code,S.eqp_code,S.stand_value,S.opc_conver,S.route_code,S.unprice,
-                           S.eqp_value,S.cavity_qty,S.wkspcode,S.lm_user,S.lm_date,S.torg_code,S.is_delete,S.step_code
+                           select distinct @mesordercode as wo,@partcode as  materiel_code,AA.eqp_code,isnull(S.stand_value,0) as stand_value,isnull(S.opc_conver,0) as opc_conver,AA.rout_code,
+                           isnull(S.unprice,0) as unprice,isnull(S.eqp_value,0) as eqp_value,isnull(S.cavity_qty,0) as cavity_qty,@wkshopcode as wkspcode,@usercode as lm_user,
+                           getdate() as lm_date,S.torg_code,isnull(S.is_delete,0) as is_delete,AA.step_code  from (
+                           select  A.rout_code,A.step_code,C.eqp_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";
+                           where A.rout_code=@routecode
+                           ) as AA
+                           left join (select *   from TPrteEqp_Stad  where materiel_code=@partcode and route_code=@routecode) as S on AA.step_code=S.step_code and AA.eqp_code=S.eqp_code";
                     list.Add(new
                     {
                         str = sql,
                         parm = new
                         {
                             mesordercode = mesordercode,
-                            materiel_code = partcode,
-                            routecode = routecode
+                            wkshopcode = wkshopcode,
+                            partcode = partcode,
+                            routecode = routecode,
+                            usercode = username
                         }
                     });
+
 
                     bool aa = DapperHelper.DoTransaction(list);
                     if (aa)
@@ -1936,9 +2026,18 @@
                 dynamicParams.Add("@wo_code", ordercode);
                 dynamicParams.Add("@stepcode", stepcode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
-                mes.code = "200";
-                mes.Message = "鏌ヨ鎴愬姛!";
-                mes.data = data;
+                if (data.Rows.Count > 0)
+                {
+                    mes.code = "200";
+                    mes.Message = "鏌ヨ鎴愬姛!";
+                    mes.data = data;
+                }
+                else 
+                {
+                    mes.code = "300";
+                    mes.Message = "褰撳墠宸ュ簭鏈叧鑱旂敓浜ц澶�!";
+                    mes.data = null;
+                }
             }
             catch (Exception e)
             {
@@ -2007,7 +2106,7 @@
             try
             {
                 //鐝粍鑾峰彇浜哄憳鍒楄〃
-                sql = @"select U.username,U.username   
+                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
@@ -2232,10 +2331,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();
@@ -2244,12 +2343,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'";
@@ -2277,6 +2382,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)";
@@ -2308,14 +2414,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 } });
 
                         }
                     }
@@ -2379,14 +2485,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 } });
 
                         }
                     }
@@ -2510,20 +2616,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();
@@ -2557,7 +2670,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;
@@ -2577,7 +2690,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;
@@ -2600,14 +2713,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 } });
 
                         }
                     }
@@ -2649,14 +2762,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 } });
 
                         }
                     }
@@ -2729,7 +2842,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())
                             }
@@ -2746,18 +2859,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(),
@@ -2785,7 +2913,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())
                             }
@@ -2802,18 +2930,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(),

--
Gitblit v1.9.3