From 8fdbaa96f141543fe9f6210975734809a209a0c8 Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期五, 07 六月 2024 15:03:16 +0800
Subject: [PATCH] 1.报工增加按序和不按序报工操作,工序调整增加按序和不按序报工调整 2.增加SOP管理:设备SOP管理、工艺SOP管理功能

---
 VueWebCoreApi/Tools/ScanStartReport.cs |  485 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 468 insertions(+), 17 deletions(-)

diff --git a/VueWebCoreApi/Tools/ScanStartReport.cs b/VueWebCoreApi/Tools/ScanStartReport.cs
index 779e32b..8cdd831 100644
--- a/VueWebCoreApi/Tools/ScanStartReport.cs
+++ b/VueWebCoreApi/Tools/ScanStartReport.cs
@@ -13,7 +13,7 @@
         public static ToMessage mes = new ToMessage(); //瀹氫箟鍏ㄥ眬杩斿洖淇℃伅瀵硅薄
 
 
-        #region[鐢熶骇寮�鎶ュ伐:鑷埗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇锛氬伐鍗�+宸ュ簭鏉$爜]
+        #region[鐢熶骇寮�鎶ュ伐:鑷埗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇锛氬伐鍗�+宸ュ簭鏉$爜,鎸夊簭鐢熶骇]
         /// <summary>
         /// 鎵爜淇℃伅涓哄伐鍗�+宸ュ簭鏉$爜
         /// </summary>
@@ -67,7 +67,7 @@
                     rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //宸ュ簭缂栫爜
                     rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //宸ュ簭鍚嶇О
                     rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //宸ュ簭鎻忚堪
-                    rt.stepprice= data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
+                    rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
                     rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
 
                     flwtype = data.Rows[0]["FLWTYPE"].ToString();//鑾峰彇宸ュ簭灞炴��
@@ -133,7 +133,7 @@
                                 {
                                     rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
                                     rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - good_qty - ng_qty - laborbad_qty - materielbad_qty;  //鏈姤鏁伴噺=浠诲姟鏁伴噺-宸叉姤鏁伴噺-涓嶈壇鏁伴噺-宸ュ簾鏁伴噺-鏂欏簾鏁伴噺
-                                    rt.reportqty = good_qty + ng_qty + laborbad_qty+ materielbad_qty;             //宸叉姤鏁伴噺=鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺
+                                    rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty;             //宸叉姤鏁伴噺=鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺
                                     mes.code = "200";
                                     mes.count = 1;
                                     mes.message = "鏌ユ壘鎴愬姛!";
@@ -185,7 +185,7 @@
                                             decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾鎬诲伐搴熸暟閲�
                                             decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鎬绘枡搴熸暟閲�
                                             //鏈亾鍓╀綑鍙姤鏁伴噺=涓婇亾鎶ュ伐鎬绘暟閲�-鏈亾鎶ュ伐鎬绘暟閲�-鏈亾涓嶈壇鎬绘暟閲�-鏈亾宸ュ簾鎬绘暟-鏈亾鏂欏簾鎬绘暟
-                                            decimal sybqty = sgood_qty - good_qty - ng_qty - laborbad_qty- materielbad_qty;
+                                            decimal sybqty = sgood_qty - good_qty - ng_qty - laborbad_qty - materielbad_qty;
                                             if (sybqty <= 0)
                                             {
                                                 mes.code = "300";
@@ -206,7 +206,7 @@
                                                 }
                                                 rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
                                                 rt.noreportqty = sybqty;                                         //鏈姤鏁伴噺=鏈亾鍓╀綑鍙姤鏁伴噺
-                                                rt.reportqty = good_qty + ng_qty + laborbad_qty+ materielbad_qty;//宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾宸ュ簾鎬绘暟+鏈亾鏂欏簾鎬绘暟
+                                                rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty;//宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾宸ュ簾鎬绘暟+鏈亾鏂欏簾鎬绘暟
                                                 mes.code = "200";
                                                 mes.count = 1;
                                                 mes.message = "寮圭獥鎶ュ伐鐣岄潰!";
@@ -237,7 +237,7 @@
                                             decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾鎬诲伐搴熸暟閲�
                                             decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鎬绘枡搴熸暟閲�
                                             //鏈亾鍓╀綑鍙姤鏁伴噺=涓婇亾鏀舵枡鎬绘暟閲�-鏈亾鎶ュ伐鎬绘暟閲�-鏈亾涓嶈壇鎬绘暟閲�-鏈亾鎬诲伐搴熸暟閲�-鏈亾鎬绘枡搴熸暟閲�
-                                            decimal sybqty = sqty - good_qty - ng_qty - laborbad_qty- materielbad_qty;
+                                            decimal sybqty = sqty - good_qty - ng_qty - laborbad_qty - materielbad_qty;
                                             if (sybqty <= 0)
                                             {
                                                 mes.code = "300";
@@ -258,7 +258,7 @@
                                                 }
                                                 rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
                                                 rt.noreportqty = sybqty;                                         //鏈姤鏁伴噺=鏈亾鍓╀綑鍙姤鏁伴噺
-                                                rt.reportqty = good_qty + ng_qty + laborbad_qty+materielbad_qty; //宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾鎬诲伐搴熸暟+鏈亾鎬绘枡搴熸暟
+                                                rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty; //宸叉姤鏁伴噺=鏈亾鎶ュ伐鎬绘暟閲�+鏈亾鎶ュ伐鎬讳笉鑹�+鏈亾鎬诲伐搴熸暟+鏈亾鎬绘枡搴熸暟
                                                 mes.code = "200";
                                                 mes.count = 1;
                                                 mes.message = "鏌ユ壘鎴愬姛!";
@@ -385,7 +385,7 @@
         }
         #endregion
 
-        #region[鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭]
+        #region[鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭,鎸夊簭鏀跺彂鏂橾
         /// <summary>
         /// 鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭
         /// </summary>
@@ -502,7 +502,7 @@
                                         decimal ng_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();// 涓嶈壇鏁伴噺
                                         decimal laborbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //宸ュ簾鏁伴噺
                                         decimal materielbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏂欏簾鏁伴噺
-                                        decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty-materielbad_qty; //鍓╀綑鍙彂鏁伴噺
+                                        decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty - materielbad_qty; //鍓╀綑鍙彂鏁伴噺
                                         if (kfqty <= 0)
                                         {
                                             mes.code = "300";
@@ -570,7 +570,7 @@
                                                     decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾宸ュ簾鏁伴噺
                                                     decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鏂欏簾鏁伴噺
                                                     //鏈亾鍓╀綑鍙彂鏁伴噺=涓婇亾鎶ュ伐鏁伴噺-鏈亾鍙戞枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
-                                                    decimal sybqty = sgood_qty - sqty - ng_qty - laborbad_qty- materielbad_qty;
+                                                    decimal sybqty = sgood_qty - sqty - ng_qty - laborbad_qty - materielbad_qty;
                                                     if (sybqty <= 0)
                                                     {
                                                         mes.code = "300";
@@ -591,7 +591,7 @@
                                                         }
                                                         rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
                                                         rt.noreportqty = sybqty;                                             //鏈彂鏁伴噺=鍓╀綑鍙彂鏁伴噺
-                                                        rt.reportqty = sqty + ng_qty + laborbad_qty+ materielbad_qty;       //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺                                       
+                                                        rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty;       //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺                                       
                                                         rt.startqty = sybqty;                                                //鏀舵枡鏁伴噺=鍓╀綑鍙彂鏁伴噺      
 
                                                         mes.code = "200";
@@ -624,7 +624,7 @@
                                                     decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾宸ュ簾鏁伴噺
                                                     decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鏂欏簾鏁伴噺
                                                     //鏈亾鍓╀綑鍙彂鏁伴噺=涓婇亾鏀舵枡鏁伴噺-鏈亾鍙戞枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
-                                                    decimal sybqty = ssqty - sqty - ng_qty - laborbad_qty-materielbad_qty;
+                                                    decimal sybqty = ssqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
                                                     if (sybqty <= 0)
                                                     {
                                                         mes.code = "300";
@@ -645,7 +645,7 @@
                                                         }
                                                         rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
                                                         rt.noreportqty = sybqty;                                             //鏈彂鏁伴噺=鍓╀綑鍙彂鏁伴噺
-                                                        rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty;         //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺                                      
+                                                        rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty;         //宸插彂鏁伴噺= 鏈亾鍙戞枡鏁伴噺+鏈亾涓嶈壇鏁伴噺+鏈亾宸ュ簾鏁伴噺+鏈亾鏂欏簾鏁伴噺                                      
                                                         rt.startqty = sybqty;                                                //鏀舵枡鏁伴噺=鍓╀綑鍙彂鏁伴噺      
 
                                                         mes.code = "200";
@@ -815,7 +815,7 @@
                                             decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾宸ュ簾鏁伴噺
                                             decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鏂欏簾鏁伴噺
                                             //鍓╀綑鍙彂鏁伴噺=鏈亾鍙戞枡鏁伴噺-鏈亾鏀舵枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
-                                            decimal ksqty = fqty - sqty - ng_qty - laborbad_qty-materielbad_qty;  
+                                            decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
                                             if (ksqty <= 0)
                                             {
                                                 mes.code = "300";
@@ -828,7 +828,7 @@
                                             {
                                                 rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
                                                 rt.noreportqty = ksqty;                                              //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
-                                                rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty;          //宸叉敹鏁伴噺                                   
+                                                rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty;          //宸叉敹鏁伴噺                                   
                                                 rt.startqty = ksqty;                                                  //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺      
 
                                                 data0.Merge(data1);//灏嗘寚瀹氱殑dt鍚堝苟                                                 
@@ -938,7 +938,7 @@
                                                 decimal laborbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾宸ュ簾鏁伴噺
                                                 decimal materielbad_qty = data2.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鏂欏簾鏁伴噺
                                                 //鍓╀綑鍙彂鏁伴噺=鏈亾鍙戞枡鏁伴噺-鏈亾鏀舵枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
-                                                decimal ksqty = fqty - sqty - ng_qty - laborbad_qty- materielbad_qty;
+                                                decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
                                                 if (ksqty <= 0)
                                                 {
                                                     mes.code = "300";
@@ -951,7 +951,7 @@
                                                 {
                                                     rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
                                                     rt.noreportqty = ksqty;                                              //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
-                                                    rt.reportqty = sqty + ng_qty + laborbad_qty+materielbad_qty;         //宸叉敹鏁伴噺                                   
+                                                    rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty;         //宸叉敹鏁伴噺                                   
                                                     rt.startqty = ksqty;                                                  //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺      
 
                                                     data1.Merge(data2);//灏嗘寚瀹氱殑dt鍚堝苟                                                 
@@ -1046,5 +1046,456 @@
             return mes;
         }
         #endregion
+
+
+        #region[鐢熶骇寮�鎶ュ伐:鑷埗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇锛氬伐鍗�+宸ュ簭鏉$爜,涓嶆寜搴忕敓浜
+        /// <summary>
+        /// 鎵爜淇℃伅涓哄伐鍗�+宸ュ簭鏉$爜
+        /// </summary>
+        /// <param name="ordercode">宸ュ崟缂栧彿</param>
+        /// <param name="stepcode">宸ュ簭缂栫爜</param>
+        /// <returns></returns>
+        public static ToMessage NoZZEncodingSeach(string ordercode, string stepcode)
+        {
+            var sql = "";
+            string flwtype = ""; //宸ュ簭灞炴��
+            string isbott = ""; //棣栭亾宸ュ簭
+            string isend = "";  //鏈亾宸ュ簭
+            List<object> list = new List<object>();
+            ScanStartReportData rt = new ScanStartReportData();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鍒ゆ柇褰撳墠宸ュ崟鏄惁鍏抽棴
+                sql = @"select *   from TK_Wrk_Man where wo_code=@ordercode and status='CLOSED'";
+                dynamicParams.Add("@ordercode", ordercode);
+                var da0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (da0.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "褰撳墠宸ュ崟宸插叧闂�,涓嶅厑璁稿紑鎶ュ伐鎿嶄綔!";
+                    mes.data = null;
+                    return mes;
+                }
+
+                //1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
+                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.stepprice,A.seq,T.flwtype,T.descr,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name  
+                        from TK_Wrk_Step A
+                        left join  TStep T on A.step_code=T.stepcode
+                        left join  TK_Wrk_Man M on A.wo_code=M.wo_code
+                        left join  TMateriel_Info P on M.materiel_code=P.partcode
+                        left join  TOrganization L on M.wkshp_code=L.torg_code
+                        where A.wo_code=@ordercode and A.step_code=@stepcode";
+                dynamicParams.Add("@ordercode", ordercode);
+                dynamicParams.Add("@stepcode", stepcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //杞﹂棿缂栫爜
+                    rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //杞﹂棿鍚嶇О
+                    rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
+                    rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
+                    rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
+                    rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //浜у搧瑙勬牸
+                    rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //宸ュ簭缂栫爜
+                    rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //宸ュ簭鍚嶇О
+                    rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //宸ュ簭鎻忚堪
+                    rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
+                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+
+                    flwtype = data.Rows[0]["FLWTYPE"].ToString();//鑾峰彇宸ュ簭灞炴��
+                    isbott = data.Rows[0]["ISBOTT"].ToString();//棣栭亾宸ュ簭
+                    isend = data.Rows[0]["ISEND"].ToString();//鏈亾宸ュ簭
+                    rt.seq = data.Rows[0]["SEQ"].ToString();//宸ュ簭搴忓彿
+
+                    //鑾峰彇褰撳墠宸ュ簭涓嬮亾宸ュ簭
+                    sql = @"select A.isbott,A.isend,T.stepcode,T.stepname,A.stepprice from TK_Wrk_Step A
+                            left join  TStep T on A.step_code=T.stepcode
+                            where A.wo_code=@ordercode and A.seq=@seq+1 ";
+                    dynamicParams.Add("@ordercode", ordercode);
+                    dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
+                    var dt = DapperHelper.selectdata(sql, dynamicParams);
+                    if (dt.Rows.Count > 0) //鏈変笅閬撳伐搴�
+                    {
+                        rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//涓嬮亾宸ュ簭缂栫爜
+                        rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//涓嬮亾宸ュ簭鍚嶇О
+                        rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
+                    }
+                    if (isend == "Y")  //褰撳墠宸ュ簭鏄湯閬撳伐搴�
+                    {
+                        rt.nextstepcode = "";//data.Rows[0]["STEPCODE"].ToString();//褰撳墠宸ュ簭缂栫爜
+                        rt.nextstepname = "";// data.Rows[0]["STEPNAME"].ToString();//褰撳墠宸ュ簭鍚嶇О
+                        rt.nextstepprice = "";// data.Rows[0]["STEPPRICE"].ToString();//褰撳墠宸ュ簭宸ヤ环
+                    }
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "褰撳墠宸ュ簭浠诲姟涓嶅瓨鍦�!";
+                    mes.data = null;
+                    return mes;
+                }
+                switch (flwtype)
+                {
+                    case "Z":  //鑷埗宸ュ簭
+                        //棣栭亾宸ュ簭鏃讹紝鍒ゆ柇鏄惁鏈夋姤宸ヨ褰�
+                        sql = @"select *   from TK_Wrk_Record where wo_code=@ordercode and step_code=@stepcode and style='B'";
+                        dynamicParams.Add("@ordercode", ordercode);
+                        dynamicParams.Add("@stepcode", stepcode);
+                        var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                        if (data1.Rows.Count > 0)
+                        {
+                            decimal good_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("GOOD_QTY")).Sum();  //鎶ュ伐鎬绘暟閲�
+                            decimal ng_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();  //涓嶈壇鏁伴噺
+                            decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //宸ュ簾鏁伴噺
+                            decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏂欏簾鏁伴噺
+                                                                                                                                    //鍓╀綑鍙姤宸ユ暟閲�=浠诲姟鏁伴噺-(鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾搴熸暟閲�+鏂欏簾鏁伴噺)
+                            decimal kbqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - (good_qty + ng_qty + laborbad_qty + materielbad_qty);
+                            if (kbqty <= 0)//鏃犲彲鎶ュ伐鏁伴噺
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.message = "褰撳墠宸ュ簭鏃犲彲鎶ュ伐鏁伴噺!";
+                                mes.data = null;
+                                return mes;
+                            }
+                            else
+                            {
+                                rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+                                rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - good_qty - ng_qty - laborbad_qty - materielbad_qty;  //鏈姤鏁伴噺=浠诲姟鏁伴噺-宸叉姤鏁伴噺-涓嶈壇鏁伴噺-宸ュ簾鏁伴噺-鏂欏簾鏁伴噺
+                                rt.reportqty = good_qty + ng_qty + laborbad_qty + materielbad_qty;             //宸叉姤鏁伴噺=鎶ュ伐鏁伴噺+涓嶈壇鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺
+                                mes.code = "200";
+                                mes.count = 1;
+                                mes.message = "鏌ユ壘鎴愬姛!";
+                                mes.data = rt;
+                            }
+                        }
+                        else
+                        {
+                            rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+                            rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //鏈姤鏁伴噺
+                            rt.reportqty = 0;                                                    //宸叉姤鏁伴噺
+                            mes.code = "200";
+                            mes.count = 1;
+                            mes.message = "鏌ユ壘鎴愬姛!";
+                            mes.data = rt;
+                        }
+                        break;
+                    case "W":  //澶栧崗宸ュ簭
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.message = "褰撳墠宸ュ崟宸ュ簭浠诲姟涓哄鍗�,璇峰墠寰�澶栧崗鎿嶄綔鏍囩椤垫搷浣�!";
+                        mes.data = null;
+                        break;
+                    default:   //鑷埗+澶栧崗宸ュ簭
+                        break;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+                return mes;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[鐢熶骇寮�鎶ュ伐:澶栧崗宸ュ簭浠诲姟寮�鎶ュ伐鍒ゆ柇:宸ュ崟鍙�+宸ュ簭,鎸夊簭鏀跺彂鏂橾
+        /// <summary>
+        /// 鎵爜淇℃伅涓哄伐鍗�+宸ュ簭鏉$爜
+        /// </summary>
+        /// <param name="ordercode">宸ュ崟缂栧彿</param>
+        /// <param name="stepcode">宸ュ簭缂栫爜</param>
+        /// <returns></returns>
+        public static ToMessage NoWXEncodingSeach(string SelectType, string ordercode, string stepcode)
+        {
+            var sql = "";
+            string flwtype = ""; //宸ュ簭灞炴��
+            string isbott = ""; //棣栭亾宸ュ簭
+            string isend = "";  //鏈亾宸ュ簭
+            List<object> list = new List<object>();
+            ScanStartReportDataOut rt = new ScanStartReportDataOut();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                //鍒ゆ柇褰撳墠宸ュ崟鏄惁鍏抽棴
+                sql = @"select *   from TK_Wrk_Man where wo_code=@ordercode and status='CLOSED'";
+                dynamicParams.Add("@ordercode", ordercode);
+                var da0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (da0.Rows.Count > 0)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "褰撳墠宸ュ崟宸插叧闂�,涓嶅厑璁稿紑鎶ュ伐鎿嶄綔!";
+                    mes.data = null;
+                    return mes;
+                }
+
+                //1.鏍规嵁宸ュ崟+宸ュ簭鏌ユ壘褰撳墠宸ュ簭鏄惁棣栭亾宸ュ簭
+                sql = @"select A.wo_code,P.partcode,P.partname,P.partspec, T.stepcode,T.stepname,A.seq,T.flwtype,T.descr,A.stepprice,A.status,A.plan_qty,A.isbott,A.isend,L.torg_code,L.torg_name   
+                        from TK_Wrk_Step A
+                        left join  TStep T on A.step_code=T.stepcode
+                        left join  TK_Wrk_Man M on A.wo_code=M.wo_code
+                        left join  TMateriel_Info P on M.materiel_code=P.partcode
+                        left join  TOrganization L on M.wkshp_code=L.torg_code
+                        where A.wo_code=@ordercode and A.step_code=@stepcode";
+                dynamicParams.Add("@ordercode", ordercode);
+                dynamicParams.Add("@stepcode", stepcode);
+                var data = DapperHelper.selectdata(sql, dynamicParams);
+                if (data.Rows.Count > 0)
+                {
+                    rt.wkshopcode = data.Rows[0]["torg_code"].ToString(); //杞﹂棿缂栫爜
+                    rt.wkshopname = data.Rows[0]["torg_name"].ToString(); //杞﹂棿鍚嶇О
+                    rt.wo_code = data.Rows[0]["WO_CODE"].ToString(); //宸ュ崟鍙�
+                    rt.partnumber = data.Rows[0]["PARTCODE"].ToString(); //浜у搧缂栫爜
+                    rt.partname = data.Rows[0]["PARTNAME"].ToString(); //浜у搧鍚嶇О
+                    rt.partspec = data.Rows[0]["PARTSPEC"].ToString(); //浜у搧瑙勬牸
+                    rt.stepcode = data.Rows[0]["STEPCODE"].ToString(); //宸ュ簭缂栫爜
+                    rt.stepname = data.Rows[0]["STEPNAME"].ToString(); //宸ュ簭鍚嶇О
+                    rt.stepdesc = data.Rows[0]["DESCR"].ToString(); //宸ュ簭鎻忚堪
+                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //浠诲姟鏁伴噺
+                    rt.stepprice = data.Rows[0]["STEPPRICE"].ToString(); //宸ュ簭宸ヤ环
+                    flwtype = data.Rows[0]["FLWTYPE"].ToString();//鑾峰彇宸ュ簭灞炴��
+                    isbott = data.Rows[0]["ISBOTT"].ToString();//棣栭亾宸ュ簭
+                    isend = data.Rows[0]["ISEND"].ToString();//鏈亾宸ュ簭
+                    rt.seq = data.Rows[0]["SEQ"].ToString();//宸ュ簭搴忓彿
+
+                    //鑾峰彇褰撳墠宸ュ簭涓嬮亾宸ュ簭
+                    sql = @"select A.isbott,A.isend,T.stepcode,T.stepname,A.stepprice from TK_Wrk_Step A
+                            left join  TStep T on A.step_code=T.stepcode
+                            where A.wo_code=@ordercode and A.seq=@seq+1 ";
+                    dynamicParams.Add("@ordercode", ordercode);
+                    dynamicParams.Add("@seq", decimal.Parse(data.Rows[0]["SEQ"].ToString()));
+                    var dt = DapperHelper.selectdata(sql, dynamicParams);
+                    if (dt.Rows.Count > 0) //鏈変笅閬撳伐搴�
+                    {
+                        rt.nextstepcode = dt.Rows[0]["STEPCODE"].ToString();//涓嬮亾宸ュ簭缂栫爜
+                        rt.nextstepname = dt.Rows[0]["STEPNAME"].ToString();//涓嬮亾宸ュ簭鍚嶇О
+                        rt.nextstepprice = dt.Rows[0]["STEPPRICE"].ToString(); //涓嬮亾宸ュ簭宸ヤ环
+                    }
+                    if (isend == "Y")  //褰撳墠宸ュ簭鏄湯閬撳伐搴�
+                    {
+                        rt.nextstepcode = "";// data.Rows[0]["STEPCODE"].ToString();//褰撳墠宸ュ簭缂栫爜
+                        rt.nextstepname = "";// data.Rows[0]["STEPNAME"].ToString();//褰撳墠宸ュ簭鍚嶇О
+                        rt.nextstepprice = ""; //data.Rows[0]["NEXTSTEPPRICE"].ToString();//涓嬮亾宸ュ簭宸ヤ环
+                    }
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.message = "褰撳墠鎵爜宸ュ簭浠诲姟涓嶅瓨鍦�!";
+                    mes.data = null;
+                    return mes;
+                }
+                switch (SelectType)
+                {
+                    case "OUT": //鍙戞枡
+                        switch (flwtype)
+                        {
+                            case "Z":
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.message = "褰撳墠鏍囩涓鸿嚜鍒舵爣绛�,璇峰墠寰�鑷埗鎿嶄綔鏍囩椤垫壂鐮�!";
+                                mes.data = null;
+                                break;
+                            case "W":
+                                //1.鍒ゆ柇鏄惁鏈夊彂鏂欒褰�
+                                sql = @"select *   from TK_Wrk_OutRecord R
+                                            left join TCustomer C on R.wx_code=C.code
+                                            where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'";
+                                dynamicParams.Add("@ordercode", ordercode);
+                                dynamicParams.Add("@stepcode", stepcode);
+                                var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                                if (data0.Rows.Count > 0)  //鏈夊彂鏂欒褰�
+                                {
+                                    decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();  //鍙戞枡鏁伴噺
+                                    decimal ng_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();// 涓嶈壇鏁伴噺
+                                    decimal laborbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //宸ュ簾鏁伴噺
+                                    decimal materielbad_qty = data0.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏂欏簾鏁伴噺
+                                    decimal kfqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()) - fqty - ng_qty - laborbad_qty - materielbad_qty; //鍓╀綑鍙彂鏁伴噺
+                                    if (kfqty <= 0)
+                                    {
+                                        mes.code = "300";
+                                        mes.count = 0;
+                                        mes.message = "褰撳墠宸ュ簭鏃犲彲鍙戞枡鏁伴噺!";
+                                        mes.data = null;
+                                        return mes;
+                                    }
+                                    else
+                                    {
+                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
+                                        rt.noreportqty = kfqty;                                              //鏈彂鏁伴噺=鍓╀綑鍙彂鏁伴噺
+                                        rt.reportqty = fqty;                                                 //宸插彂鏁伴噺= 鍙戞枡鏁伴噺                                       
+                                        rt.startqty = kfqty;                                                 //鍙戞枡鏁伴噺=鍓╀綑鍙彂鏁伴噺      
+                                        mes.code = "200";
+                                        mes.count = 2;
+                                        mes.message = "鏌ヨ鎴愬姛!";
+                                        mes.data = rt;
+                                    }
+                                }
+                                else
+                                {
+                                    rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
+                                    rt.noreportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString()); //鏈彂鏁伴噺=浠诲姟鏁伴噺
+                                    rt.reportqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());   //宸插彂鏁伴噺=浠诲姟鏁伴噺                                        
+                                    rt.startqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());    //鍙戞枡鏁伴噺=浠诲姟鏁伴噺      
+                                    mes.code = "200";
+                                    mes.count = 2;
+                                    mes.message = "寮圭獥鍙戞枡鐣岄潰!";
+                                    mes.data = rt;
+                                }
+                                break;
+                            default:
+                                break;
+                        }
+                        break;
+                    case "IN": //鏀舵枡
+                        switch (flwtype)
+                        {
+                            case "Z"://鑷埗
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.message = "褰撳墠鏍囩涓鸿嚜鍒舵爣绛�,璇峰墠寰�鑷埗鎿嶄綔鏍囩椤垫壂鐮�!";
+                                mes.data = null;
+                                break;
+                            case "W":
+
+                                //1.鍒ゆ柇鏄惁鏈夊彂鏂欒褰�
+                                sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
+                                            isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty   
+                                            from TK_Wrk_OutRecord R
+                                            left join TCustomer C on R.wx_code=C.code
+                                            where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='F'
+                                            group by R.wo_code,R.step_code,R.wx_code,C.name,R.materiel_code";
+                                dynamicParams.Add("@ordercode", ordercode);
+                                dynamicParams.Add("@stepcode", stepcode);
+                                var data0 = DapperHelper.selectdata(sql, dynamicParams);
+                                if (data0.Rows.Count > 0)  //鏈夊彂鏂欒褰�
+                                {
+                                    //1.鍒ゆ柇鏄惁鏈夋敹鏂欒褰�
+                                    sql = @"select R.wo_code,R.step_code,R.wx_code as code,C.name,R.materiel_code, 
+                                                isnull(sum(R.fqty),0) as fqty,isnull(sum(R.sqty),0) as sqty,isnull(sum(R.ng_qty),0) as ng_qty,isnull(sum(R.laborbad_qty),0) as laborbad_qty,isnull(sum(R.materielbad_qty),0) as materielbad_qty      
+                                                from TK_Wrk_OutRecord R
+                                                left join TCustomer C on R.wx_code=C.code
+                                                where R.wo_code=@ordercode and R.step_code=@stepcode and R.style='S'
+                                                group by R.wo_code,R.step_code,R.wx_code,C.name,R.materiel_code";
+                                    dynamicParams.Add("@ordercode", ordercode);
+                                    dynamicParams.Add("@stepcode", stepcode);
+                                    var data1 = DapperHelper.selectdata(sql, dynamicParams);
+                                    if (data1.Rows.Count > 0) //鏈夋敹鏂欒褰�
+                                    {
+                                        decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();//鏈亾鍙戞枡鏁伴噺
+                                        decimal sqty = data1.AsEnumerable().Select(d => d.Field<decimal>("SQTY")).Sum();//鏈亾鏀舵枡鏁伴噺
+                                        decimal ng_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("NG_QTY")).Sum();//鏈亾涓嶈壇鏁伴噺
+                                        decimal laborbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("LABORBAD_QTY")).Sum();  //鏈亾宸ュ簾鏁伴噺
+                                        decimal materielbad_qty = data1.AsEnumerable().Select(d => d.Field<decimal>("MATERIELBAD_QTY")).Sum();  //鏈亾鏂欏簾鏁伴噺
+                                                                                                                                                //鍓╀綑鍙彂鏁伴噺=鏈亾鍙戞枡鏁伴噺-鏈亾鏀舵枡鏁伴噺-鏈亾涓嶈壇鏁伴噺-鏈亾宸ュ簾鏁伴噺-鏈亾鏂欏簾鏁伴噺
+                                        decimal ksqty = fqty - sqty - ng_qty - laborbad_qty - materielbad_qty;
+                                        if (ksqty <= 0)
+                                        {
+                                            mes.code = "300";
+                                            mes.count = 0;
+                                            mes.message = "褰撳墠宸ュ簭锛�" + data.Rows[0]["STEPNAME"].ToString() + " 鏃犲彲鏀舵枡鏁伴噺!";
+                                            mes.data = null;
+                                            return mes;
+                                        }
+                                        else
+                                        {
+                                            rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
+                                            rt.noreportqty = ksqty;                                              //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
+                                            rt.reportqty = sqty + ng_qty + laborbad_qty + materielbad_qty;          //宸叉敹鏁伴噺                                   
+                                            rt.startqty = ksqty;                                                  //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺      
+
+                                            data0.Merge(data1);//灏嗘寚瀹氱殑dt鍚堝苟                                                 
+                                            rt.list = data0.AsEnumerable().GroupBy(r => new
+                                            {
+                                                wo_code = r["wo_code"],
+                                                step_code = r["step_code"],
+                                                code = r["code"],
+                                                name = r["name"]
+                                            }).Select(g => new
+                                            {
+                                                Name = g.Key.code,
+                                                tp = g.Key.name,
+                                                fqty = g.Sum(i => (decimal)i["fqty"]),
+                                                sqty = g.Sum(i => (decimal)i["sqty"]),
+                                                ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
+                                                laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+                                                materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
+                                            }).ToList();
+
+                                            mes.code = "200";
+                                            mes.count = 3;
+                                            mes.message = "寮圭獥鏀舵枡鐣岄潰!";
+                                            mes.data = rt;
+                                        }
+
+                                    }
+                                    else
+                                    {
+                                        decimal fqty = data0.AsEnumerable().Select(d => d.Field<decimal>("FQTY")).Sum();//鏈亾鍙戞枡鏁伴噺
+                                        rt.planqty = decimal.Parse(data.Rows[0]["PLAN_QTY"].ToString());     //浠诲姟鏁伴噺
+                                        rt.noreportqty = fqty;                                               //鏈敹鏁伴噺=鏈亾鍙戞枡鏁伴噺
+                                        rt.reportqty = 0;                                                    //宸叉敹鏁伴噺                                   
+                                        rt.startqty = fqty;                                                  //鏀舵枡鏁伴噺=鏈亾鍙戞枡鏁伴噺
+                                                                                                             //
+                                        data0.Merge(data1);//灏嗘寚瀹氱殑dt鍚堝苟                                                 
+                                        rt.list = data0.AsEnumerable().GroupBy(r => new
+                                        {
+                                            wo_code = r["wo_code"],
+                                            step_code = r["step_code"],
+                                            code = r["code"],
+                                            name = r["name"]
+                                        }).Select(g => new
+                                        {
+                                            Name = g.Key.code,
+                                            tp = g.Key.name,
+                                            fqty = g.Sum(i => (decimal)i["fqty"]),
+                                            sqty = g.Sum(i => (decimal)i["sqty"]),
+                                            ng_qty = g.Sum(i => (decimal)i["ng_qty"]),
+                                            laborbad_qty = g.Sum(i => (decimal)i["laborbad_qty"]),
+                                            materielbad_qty = g.Sum(i => (decimal)i["materielbad_qty"])
+                                        }).ToList();
+
+                                        mes.code = "200";
+                                        mes.count = 3;
+                                        mes.message = "寮圭獥鏀舵枡鐣岄潰!";
+                                        mes.data = rt;
+                                    }
+                                }
+                                else
+                                {
+                                    mes.code = "300";
+                                    mes.count = 0;
+                                    mes.message = "褰撳墠宸ュ簭锛�" + data.Rows[0]["STEPNAME"].ToString() + " 鏈彂鏂�,璇峰厛鍙戞枡!";
+                                    mes.data = null;
+                                    return mes;
+                                }
+                                break;
+                            default:
+                                break;
+                        }
+                        break;
+                    default:
+                        break;
+                }
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.message = e.Message;
+                mes.data = null;
+                return mes;
+            }
+            return mes;
+        }
+        #endregion
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3