From 9cc2532bbb97d435fd1b135a0c9d23b1ea621b3b Mon Sep 17 00:00:00 2001
From: yl <ykxkd@outlook.com>
Date: 星期四, 01 十二月 2022 21:01:19 +0800
Subject: [PATCH] 生产报工自制改为存储过程

---
 VueWebApi/DLL/DAL/ProductionManagementDAL.cs |  683 +++++++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 565 insertions(+), 118 deletions(-)

diff --git a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
index fee23a3..83b0609 100644
--- a/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
+++ b/VueWebApi/DLL/DAL/ProductionManagementDAL.cs
@@ -534,6 +534,13 @@
                             CreateDate = DateTime.Now.ToString()
                         }
                     });
+                    //if (is_aps == "Y")  //鏄惁鎺掔▼
+                    //{
+                    //    string sql1 = "select id from TBom_Main  where materiel_code='" + PartNumber + "' and status='Y' and version='" + VsionId + "'";
+                    //    DataTable dt1 = DBHelper.GetTable(sql1);
+                    //}
+
+                    //澧炲姞宸ュ崟鐢ㄦ枡琛紙瀛愪欢锛�  
 
                     bool aa = DapperHelper.DoTransaction(list);
                     if (aa)
@@ -631,7 +638,7 @@
             try
             {
                 //鍒ゆ柇宸ュ崟鏄惁涓烘湭寮�濮嬬姸鎬佹垨鑰呭凡娲惧彂鐘舵��(婊¤冻鍏朵腑涓�绉嶉兘鍙垹闄わ紝鍚﹀垯涓嶅厑璁稿垹闄�)
-                sql = @"select *  from TK_Wrk_Man where wo_code=@wocode and status='NEW' or status='ALLO'";
+                sql = @"select *  from TK_Wrk_Man where wo_code=@wocode and status in('NEW','ALLO')";
                 dynamicParams.Add("@wocode", wocode);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 if (data.Rows.Count > 0)
@@ -752,7 +759,7 @@
                          left join TStep B on A.step_code=B.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
-                        where A.wo_code=@wo_code";
+                        where A.wo_code=@wo_code order by A.seq";
                 dynamicParams.Add("@wo_code", wo_code);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
                 mes.code = "200";
@@ -1561,6 +1568,7 @@
             string[] arra1 = new string[] { };
             List<object> list = new List<object>();
             var dynamicParams = new DynamicParameters();
+            var dynamicParamsTran = new DynamicParameters();
             try
             {
                 string date = DateTime.Now.ToString(); //鑾峰彇绯荤粺鏃堕棿
@@ -1593,114 +1601,75 @@
                     mes.data = null;
                     return mes;
                 }
+                
                 if (data.Rows.Count > 0)
                 {
-                    //鑾峰彇涓昏〃鏈�澶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) 
-                                values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date)";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = username, lm_date = date } });
-
-                    //鍐欏叆瀛愯〃
-                    for (int i = 0; i < arra.Length; i++)
+                    //瀛樺偍杩囩▼鍚�
+                    sql = @"h_p_MES_ProductionReport_ZZ";
+                    dynamicParamsTran.Add("@mesordercode", mesordercode);
+                    dynamicParamsTran.Add("@partcode", partcode);
+                    dynamicParamsTran.Add("@stepseq", stepseq);
+                    dynamicParamsTran.Add("@stepcode", stepcode);
+                    dynamicParamsTran.Add("@eqpcode", eqpcode);
+                    dynamicParamsTran.Add("@usergroupcode", usergroupcode);
+                    dynamicParamsTran.Add("@reportuser", reportuser);
+                    dynamicParamsTran.Add("@taskqty", taskqty);
+                    dynamicParamsTran.Add("@startqty", startqty);
+                    dynamicParamsTran.Add("@reportqty", reportqty);
+                    dynamicParamsTran.Add("@ngqty", ngqty);
+                    dynamicParamsTran.Add("@badcode", badcode);
+                    dynamicParamsTran.Add("@remarks", remarks);
+                    dynamicParamsTran.Add("@username", username);
+                    bool a = DapperHelper.IsProcedure(sql, dynamicParamsTran);
+                    if (a)
                     {
-                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date) 
-                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
-                        list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
-
+                        mes.code = "200";
+                        mes.count = 0;
+                        mes.Message = "鎿嶄綔鎴愬姛!";
+                        mes.data = null;
                     }
-                    if (badcode != "" && ngqty != "0")
+                    else
                     {
-                        //鍐欏叆缂洪櫡璁板綍琛�
-                        for (int i = 0; i < arra1.Length; 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 } });
-
-                        }
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "鎿嶄綔澶辫触!";
+                        mes.data = null;
                     }
-                    ////淇敼鎶ュ伐璁板綍
-                    //sql = @"update TK_Wrk_Record set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty,
-                    //            lm_user=@username,lm_date=@CreateDate where wo_code=@mesordercode and step_code=@stepcode and style='B'";
-                    //list.Add(new { str = sql, parm = new { reportqty = decimal.Parse(reportqty), ngqty = decimal.Parse(ngqty), mesordercode = mesordercode, stepcode = stepcode, username = username, CreateDate = date } });
-                    ////鍐欏叆瀛愯〃
-                    //for (int i = 0; i < arra.Length; i++)
-                    //{
-                    //    sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date) 
-                    //            values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
-                    //    list.Add(new { str = sql, parm = new { m_id = int.Parse(data.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
-
-                    //}
-                    //if (badcode != "" && ngqty != "0")
-                    //{
-                    //    //鍐欏叆缂洪櫡璁板綍琛�
-                    //    for (int i = 0; i < arra1.Length; i++)
-                    //    {
-                    //        sql = @"insert into  CSR_WorkRecord_Defect(record_id,wo_code,partnumber,step_seq,step_code,defect_qty,defect_code,style,lm_user,lm_date) 
-                    //            values(@record_id,@wo_code,@partcode,@stepseq,@stepcode,@ngqty,@defect_code,@style,@lm_user,@lm_date)";
-                    //        list.Add(new { str = sql, parm = new { record_id = int.Parse(data.Rows[0]["ID"].ToString()), wo_code = mesordercode, partcode = partcode, stepseq = stepseq, stepcode = stepcode, ngqty = ngqty, defect_code = arra1[i], style = "B", lm_user = username, lm_date = date } });
-
-                    //    }
-                    //}
                 }
                 else
                 {
-                    //鑾峰彇涓昏〃鏈�澶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) 
-                                values(@mesordercode,@stepseq,@stepcode,@eqpcode,@partcode,@taskqty,@startqty,@reportqty,@ngqty,@style,@lm_user,@lm_date)";
-                    list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepseq = stepseq, stepcode = stepcode, eqpcode = eqpcode, partcode = partcode, taskqty = taskqty, startqty = startqty, reportqty = reportqty, ngqty = ngqty, style = "B", lm_user = username, lm_date = date } });
-
-                    //鍐欏叆瀛愯〃
-                    for (int i = 0; i < arra.Length; i++)
+                    //瀛樺偍杩囩▼鍚�
+                    sql = @"h_p_MES_ProductionReport_ZZ";
+                    dynamicParamsTran.Add("@mesordercode", mesordercode);
+                    dynamicParamsTran.Add("@partcode", partcode);
+                    dynamicParamsTran.Add("@stepseq", stepseq);
+                    dynamicParamsTran.Add("@stepcode", stepcode);
+                    dynamicParamsTran.Add("@eqpcode", eqpcode);
+                    dynamicParamsTran.Add("@usergroupcode", usergroupcode);
+                    dynamicParamsTran.Add("@reportuser", reportuser);
+                    dynamicParamsTran.Add("@taskqty", taskqty);
+                    dynamicParamsTran.Add("@startqty", startqty);
+                    dynamicParamsTran.Add("@reportqty", reportqty);
+                    dynamicParamsTran.Add("@ngqty", ngqty);
+                    dynamicParamsTran.Add("@badcode", badcode);
+                    dynamicParamsTran.Add("@remarks", remarks);
+                    dynamicParamsTran.Add("@username", username);
+                    bool a = DapperHelper.IsProcedure(sql, dynamicParamsTran);
+                    if (a)
                     {
-                        sql = @"insert into  TK_Wrk_RecordSub(m_id,eqp_code,report_person,report_date,report_qty,usergroup_code,ng_qty,style,lm_user,lm_date) 
-                                values(@m_id,@eqp_code,@report_person,@report_date,@report_qty,@usergroup_code,@ng_qty,@style,@lm_user,@lm_date)";
-                        list.Add(new { str = sql, parm = new { m_id = int.Parse(dt.Rows[0]["ID"].ToString()), eqp_code = eqpcode, report_person = arra[i], report_date = date, report_qty = reportqty, usergroup_code = usergroupcode, ng_qty = ngqty, style = "B", lm_user = username, lm_date = date } });
-
+                        mes.code = "200";
+                        mes.count = 0;
+                        mes.Message = "鎿嶄綔鎴愬姛!";
+                        mes.data = null;
                     }
-                    if (badcode != "" && ngqty != "0")
+                    else
                     {
-                        //鍐欏叆缂洪櫡璁板綍琛�
-                        for (int i = 0; i < arra1.Length; 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 } });
-
-                        }
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "鎿嶄綔澶辫触!";
+                        mes.data = null;
                     }
-                }
-
-
-                //鍥炲啓宸ュ崟宸ュ簭琛ㄥ悎鏍兼暟閲忋�佷笉鑹暟閲�
-                sql = @"update TK_Wrk_Step set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty  where wo_code=@mesordercode and step_code=@stepcode";
-                list.Add(new { str = sql, parm = new { mesordercode = mesordercode, stepcode = stepcode, reportqty = reportqty, ngqty = ngqty } });
-
-                //鍥炲啓宸ュ崟琛ㄥ悎鏍兼暟閲忋�佷笉鑹暟閲�
-                //sql = @"update TK_Wrk_Man set good_qty=good_qty+@reportqty,ng_qty=ng_qty+@ngqty  where wo_code=@mesordercode";
-                //list.Add(new { str = sql, parm = new { mesordercode = mesordercode, reportqty = reportqty, ngqty = ngqty } });
-
-                bool aa = DapperHelper.DoTransaction(list);
-                if (aa)
-                {
-                    mes.code = "200";
-                    mes.count = 0;
-                    mes.Message = "鎿嶄綔鎴愬姛!";
-                    mes.data = null;
-                }
-                else
-                {
-                    mes.code = "300";
-                    mes.count = 0;
-                    mes.Message = "鎿嶄綔澶辫触!";
-                    mes.data = null;
-                }
+                }           
             }
             catch (Exception e)
             {
@@ -2590,7 +2559,7 @@
                                       FROM TWkm_capac_plan_sub t0 where CONVERT(varchar(100), wkdate, 23)>=CONVERT(varchar(100),getdate(), 23) 
                                       GROUP BY t0.m_id  
                              ) E on B.id=E.m_id
-                            where C.description='W' ";
+                            where C.description='W' " + search;
                 var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
                 mes.code = "200";
                 mes.Message = "鏌ヨ鎴愬姛!";
@@ -2616,14 +2585,14 @@
             {
                 if (type == "Add")
                 {
-                    var sql = @"insert into TWkm_capac_plan(wkshop, eqp_typecode, wkshift_code, enable, lm_user, lm_time,classtype) 
-                            values(@wkshop,@eqp_typecode,@wkshift_code,@enable,@lm_user,@lm_time,@classtype)";
+                    var sql = @"insert into TWkm_capac_plan(wkshop, eqp_typecode, wkshift_code, enable, lm_user, lm_date,classtype) 
+                            values(@wkshop,@eqp_typecode,@wkshift_code,@enable,@lm_user,@lm_date,@classtype)";
                     dynamicParams.Add("@wkshop", wkshopcode);
                     dynamicParams.Add("@eqp_typecode", capunitcode);
                     dynamicParams.Add("@wkshift_code", capsetupcode);
                     dynamicParams.Add("@enable", "Y");
                     dynamicParams.Add("@lm_user", username);
-                    dynamicParams.Add("@lm_time", DateTime.Now.ToString());
+                    dynamicParams.Add("@lm_date", DateTime.Now.ToString());
                     dynamicParams.Add("@classtype", captplantype);
                     int cont = DapperHelper.SQL(sql, dynamicParams);
                     if (cont > 0)
@@ -2687,10 +2656,10 @@
                 sql = @"select CONVERT(varchar(100), wkdate, 23) DataTime,wkshift_code   from TWkm_capac_plan_sub where m_id=@captplanid";
                 dynamicParams.Add("@captplanid", captplanid);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
-                for (int i = 0; i < dt.Rows.Count; i++)
+                for (int i = 0; i < data.Rows.Count; i++)
                 {
-                    string DataTime = dt.Rows[i]["DataTime"].ToString();//鏃ユ湡
-                    string key = dt.Rows[i]["wkshift_code"].ToString(); //鏂规缂栫爜
+                    string DataTime = data.Rows[i]["DataTime"].ToString();//鏃ユ湡
+                    string key = data.Rows[i]["wkshift_code"].ToString(); //鏂规缂栫爜
                     CapaPlan cmp = new CapaPlan();
                     cmp.name = DataTime;
                     cmp.key = key;
@@ -2728,11 +2697,11 @@
                 dynamicParams.Add("@captplanid", captplanid);
                 dynamicParams.Add("@datetime", datetime);
                 var data = DapperHelper.selectdata(sql, dynamicParams);
-                for (int i = 0; i < dt.Rows.Count; i++)
+                for (int i = 0; i < data.Rows.Count; i++)
                 {
-                    string code = dt.Rows[i]["code"].ToString();//鏂规缂栫爜
-                    string name = dt.Rows[i]["name"].ToString();//鏂规鍚嶇О
-                    string flag = dt.Rows[i]["flag"].ToString();   //閫変腑鏂规鏍囪瘑
+                    string code = data.Rows[i]["code"].ToString();//鏂规缂栫爜
+                    string name = data.Rows[i]["name"].ToString();//鏂规鍚嶇О
+                    string flag = data.Rows[i]["flag"].ToString();   //閫変腑鏂规鏍囪瘑
                     CapacityPlanSect cmp = new CapacityPlanSect();
                     cmp.CapCode = code;
                     cmp.CapName = name;
@@ -2741,7 +2710,7 @@
 
                     string sql1 = @"select wktme1_start,wktme2_start,wktme3_start,wktme4_start,wktme5_start  from TBas_wkshift_info where code=@code";
                     dynamicParams.Add("@code", code);
-                    var db = DapperHelper.selectdata(sql, dynamicParams);
+                    var db = DapperHelper.selectdata(sql1, dynamicParams);
 
                     for (int j = 0; j < db.Columns.Count; j++) //鏃堕棿娈�
                     {
@@ -2855,11 +2824,10 @@
                     List<CapaPlan> list4 = ids1.Except(ids).ToList(); //琛ㄧずids1涓摢浜涘�兼槸ids涓墍涓嶅瓨鍦ㄧ殑;
                     list4 = list3.Union(list4).ToList();
                     //鏌ユ壘鍏抽敭宸ュ簭璁惧銆佸伐浣嶇兢缁勭殑鎵�鏈夎澶�
-                    string sql3 = @"select *  from(
-                                  select distinct A.code,A.name  from TEqpInfo A 
+                    string sql3 = @"select distinct A.code,A.name  from TEqpInfo A 
                                   left join TFlw_Rteqp B on A.code=B.eqp_code
                                   left join TFlw_Rtdt D on B.step_code=D.step_code                 
-                                  where A.wksp_code=@wkshopcode  and D.first_choke='Y'  order by A.code)";
+                                  where A.wksp_code=@wkshopcode  and D.first_choke='Y'  order by A.code";
                     dynamicParams.Add("@wkshopcode", wkshopcode);
                     var dt3 = DapperHelper.selectdata(sql3, dynamicParams);
                     if (list4.Count > 0)  //濡傛灉鏃ユ湡鏈夊彉鍔�
@@ -2895,17 +2863,17 @@
                         }
                     }
                     //鏇存柊鎺掍骇鐢熶骇璧勬簮涓昏〃
-                    sql = @"update gn_wkm_capac_plan set wkshift_code=@wkshift_code,classtype=@classtype,lm_user=@lm_user,lm_time=@lm_time  where id=@id";
+                    sql = @"update TWkm_capac_plan set wkshift_code=@wkshift_code,classtype=@classtype,lm_user=@lm_user,lm_date=@lm_time  where id=@id";
                     list.Add(new
                     {
                         str = sql,
                         parm = new
                         {
-                            id=captplanid,
+                            id = captplanid,
                             wkshift_code = capsetupcode,
                             classtype = captplantype,
-                            lm_user =username,
-                            lm_time= DateTime.Now.ToString()
+                            lm_user = username,
+                            lm_time = DateTime.Now.ToString()
                         }
                     });
                     //鍒犻櫎鎺掍骇鐢熶骇璧勬簮瀛愯〃
@@ -2921,7 +2889,7 @@
                     //寰幆鍐欏叆鎺掍骇鐢熶骇璧勬簮瀛愯〃
                     for (int i = 0; i < objs.Count; i++)
                     {
-                        sql = @"insert into TWkm_capac_plan_sub(m_id,wkdate,wkshift_code) values()";
+                        sql = @"insert into TWkm_capac_plan_sub(m_id,wkdate,wkshift_code) values(@m_id,@wkdate,@wkshift_code)";
                         list.Add(new
                         {
                             str = sql,
@@ -2929,7 +2897,7 @@
                             {
                                 m_id = captplanid,
                                 wkdate = objs[i].name,
-                                wkshift_code= objs[i].key
+                                wkshift_code = objs[i].key
                             }
                         });
                     }
@@ -2960,5 +2928,484 @@
             return mes;
         }
         #endregion
+
+
+
+        #region[鑷姩鎺掔▼宸ュ崟鏌ヨ]
+        public static ToMessage AdvancedSchedulingSearch(string workshop, string wocode, string partcode, string partname, int startNum, int endNum, string prop, string order)
+        {
+            var dynamicParams = new DynamicParameters();
+            string search = "";
+            try
+            {
+                if (workshop != "" && workshop != null)
+                {
+                    search += "and A.wkshp_code=@workshop ";
+                    dynamicParams.Add("@workshop", workshop);
+                }
+                if (wocode != "" && wocode != null)
+                {
+                    search += "and A.wo_code like '%'+@wocode+'%' ";
+                    dynamicParams.Add("@wocode", wocode);
+                }
+                if (partcode != "" && partcode != null)
+                {
+                    search += "and A.materiel_code like '%'+@partcode+'%' ";
+                    dynamicParams.Add("@partcode", partcode);
+                }
+                if (partname != "" && partname != null)
+                {
+                    search += "and C.partname like '%'+@partname+'%' ";
+                    dynamicParams.Add("@partname", partname);
+                }
+                if (search == "")
+                {
+                    search = "and 1=1 ";
+                }
+                // --------------鏌ヨ鎸囧畾鏁版嵁--------------
+                var total = 0; //鎬绘潯鏁�
+                var sql = @"select
+                             A.id              AdvaScheId, 
+                             A.status          AdvaScheStus,
+                             A.wo_code         AdvaScheWorkCode,
+                             A.wkshp_code      AdvaScheWorkShopid,
+                             M.org_name        AdvaScheWorkShop,
+                             A.materiel_code   AdvaSchePartNumber,
+                             C.partname        AdvaSchePartName,
+                             C.partspec        AdvaSchePartSpec,
+                             D.name            AdvaSchePartModel,
+                             A.plan_qty        AdvaScheQty,
+                             U.name            AdvaScheUom,
+                             isnull(E.sched_qty,0)       AdvaScheYPQty,
+	                         CONVERT(varchar(100), B.planenddate, 23) AdvaScheEndDate,
+	                         convert(varchar(20),isnull(E.sched_qty,0))+'/'+convert(varchar(20),isnull(A.plan_qty,0)) AdvaScheSpeed,
+                             A.route_code    AdvaScheRoutid,
+                             F.name        AdvaScheRoutName, 
+                             E.step_code   AdvaScheBotProcid,
+                             G.stepname        AdvaScheBotProcName,
+	                         CONVERT(varchar(100), H.maxtime, 23) AdvaSchePCEndDate,
+                             CONVERT(varchar(100), H.mintime, 23) AdvaSchePCStartDate,
+                            (case  when CONVERT(varchar(100), H.maxtime, 23)<=CONVERT(varchar(100), E.plan_enddate, 23) then 'Y'  when H.MAXTime is null  then 'Y'  else 'N' end) Flag,
+                            (case when A.PiroQue='1' then '鐗规��' when A.PiroQue='2' then '绱ф��' when A.PiroQue='3' then '姝e父' end) AdvaSchePiroQue 
+	                         from TK_Wrk_Man A
+	                         left join TKimp_Ewo B on A.m_po=B.wo
+	                         left join TMateriel_Info C on C.partcode= A.materiel_code
+                             left join T_Dict D on C.stocktype_code= d.code
+                             left join TK_Wrk_Step E on E.wo_code=A.wo_code
+                             left join TFlw_Rout F  on A.route_code=F.code
+                             left join TStep G  on E.step_code=G.stepcode
+                             left join (select wo_code, max(TIME_END) MAXTime,min(time_start) MINTime  from TK_Wrk_EqpAps group by wo_code) H on A.wo_code=H.wo_code
+	                         left join TUom U on C.uom_code=U.code
+                             left join TOrganization M on A.wkshp_code=M.org_code
+	                         where    E.isbott = 'Y' and A.status='NEW' and A.isaps='Y'";
+                var data = DapperHelper.GetPageList<object>(sql, dynamicParams, prop, order, startNum, endNum, out total);
+                mes.code = "200";
+                mes.Message = "鏌ヨ鎴愬姛!";
+                mes.count = total;
+                mes.data = data.ToList();
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return mes;
+        }
+        #endregion
+
+        #region[鎺掍骇璁惧淇℃伅]
+        public static List<AdvancedSchedulingDevice> OnclickAdvancedSchedulingDevice(string wocode, string wkshpcode, string partcode, string startdate, string enddate, ref ToMessage mes)
+        {
+            string sql = "", sql0 = "";
+            var dynamicParams = new DynamicParameters();
+            List<AdvancedSchedulingDevice> list = new List<AdvancedSchedulingDevice>();
+            DataTable dt, dt1;
+
+            DateTime beginDate = Convert.ToDateTime(startdate);
+            DateTime endDate = DateTime.Parse(enddate);
+            try
+            {
+                if (beginDate > endDate)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "瑕佹眰浜や粯鏃堕棿涓嶈兘灏忎簬褰撳墠绯荤粺鏃堕棿锛�";
+                    mes.data = null;
+                    return list;
+                }
+                bool IsCap = false;    //鏄惁璁剧疆浜ц兘
+                //閫氳繃宸ュ崟鏌ユ壘宸ヨ壓璺嚎瀵瑰簲鍏抽敭宸ュ簭鎵�鍏宠仈鐨勮澶囨槸鍚﹀彲鐢�
+                sql = @"select distinct C.eqp_code ,D.Enable  from TK_Wrk_Man A
+                       left join TFlw_Rout K on A.route_code=K.code
+                       left join TFlw_Rtdt B on K.code=B.rout_code and B.first_choke='Y'
+                       left join TFlw_Rteqp C on B.step_code= C.step_code
+                       left join TEqpInfo D on C.eqp_code=D.code
+                       where A.wo_code=@wocode and A.materiel_code=@partcode";
+                dynamicParams.Add("@wocode", wocode);
+                dynamicParams.Add("@partcode", partcode);
+                var dt_0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (dt_0.Rows.Count > 0)
+                {
+                    int cout = dt_0.Rows.Count;
+                    int num = 0;
+                    for (int m = 0; m < dt_0.Rows.Count; m++)
+                    {
+                        if (dt_0.Rows[m]["Enable"].ToString() == "N")
+                        {
+                            num = num + 1;
+                        }
+                    }
+                    if (num == cout)
+                    {
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "璁惧涓嶅彲鐢紒";
+                        mes.data = null;
+                        return list;
+                    }
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "宸ヨ壓璺嚎鏈叧鑱旇澶囷紒";
+                    mes.data = null;
+                    return list;
+                }
+
+                //閫氳繃宸ュ崟鏌ユ壘宸ヨ壓璺嚎瀵瑰簲鍏抽敭宸ュ簭鎵�鍏宠仈鐨勮澶囨墍灞炶溅闂�
+                sql0 = @"select distinct D.wksp_code  from TK_Wrk_Man A
+                         left join TFlw_Rout K on A.route_code=K.code
+                         left join TFlw_Rtdt B on K.code=B.rout_code and B.first_choke='Y'
+                         left join TFlw_Rteqp C on B.step_code= C.step_code
+                         left join TEqpInfo D on C.eqp_code=D.code
+                         where A.wo_code=@wocode and A.materiel_code=@partcode ";
+                dynamicParams.Add("@wocode", wocode);
+                dynamicParams.Add("@partcode", partcode);
+                var dt0 = DapperHelper.selectdata(sql0, dynamicParams);
+                if (dt0.Rows.Count > 0)
+                {
+                    string sy = "0";
+                    for (int i = 0; i < dt0.Rows.Count; i++)
+                    {
+                        if (dt0.Rows[i]["WKSHOP"].ToString() == wkshpcode)  //宸ュ崟鍒涘缓杞﹂棿鏄惁绛変簬鎺掍骇璁惧 杞﹂棿
+                        {
+                            sy = "1";
+                            break;
+                        }
+                        else
+                        {
+                            sy = "0";
+                        }
+                    }
+                    if (sy == "0")
+                    {
+                        mes.code = "300";
+                        mes.count = 0;
+                        mes.Message = "鎺掍骇璁惧杞﹂棿涓庡伐鍗曞垱寤虹殑杞﹂棿涓嶅悓锛�";
+                        mes.data = null;
+                    }
+                    else
+                    {
+                        List<APSList> listData = SchedulingMethod.SchedulingMethodTF(wocode, wkshpcode, partcode);
+                        for (DateTime date = beginDate; date <= endDate; date = date.AddDays(1))
+                        {
+                            AdvancedSchedulingDevice tbj = new AdvancedSchedulingDevice();
+                            tbj.YearDate = date.ToString("yyyy-MM-dd");
+                            tbj.children = new List<AdvancedSchedulingDeviceCont>();
+                            for (int j = 0; j < listData.Count; j++)
+                            {
+                                if (listData[j].AdvaDevicCropMob.ToString() == "0" || listData[j].AdvaDevicRhythm.ToString() == "")
+                                {
+                                    mes.code = "300";
+                                    mes.count = 0;
+                                    mes.Message = "鎺掔▼璁惧" + listData[j].eqp_id.ToString() + "绋煎姩鐜囦笉鑳戒负0鎴栦负绌猴紒";
+                                    mes.data = null;
+                                    return list;
+                                }
+                                if (listData[j].AdvaDevicRhythm.ToString() == "0" || listData[j].AdvaDevicRhythm.ToString() == "")
+                                {
+                                    mes.code = "300";
+                                    mes.count = 0;
+                                    mes.Message = "鎺掔▼璁惧" + listData[j].eqp_id.ToString() + "鏈缃妭鎷嶏紒";
+                                    mes.data = null;
+                                    return list;
+                                }
+                                string sql1 = @"select wktme1_start,wktme2_start,wktme3_start,wktme4_start,wktme5_start,G.name  
+		                                        from  TWkm_capac_plan  E 
+                                                left join TWkm_capac_plan_sub F on E.id=F.m_id
+                                                left join TBas_wkshift_info G on F.wkshift_code=G.code
+                                                where E.wkshop='CJ001'and E.eqp_typecode='SBLX001'  and E.ClassType='D'
+		                                        and CONVERT(varchar(100), F.wkdate, 23)='2022-10-11' and E.enable='Y'";
+                                dynamicParams.Add("@wkshop", wkshpcode);
+                                dynamicParams.Add("@eqp_typecode", listData[j].Style.ToString());
+                                dynamicParams.Add("@classtype", listData[j].ClassType.ToString());
+                                dynamicParams.Add("@wkdate", date.ToString("yyyy-MM-dd"));
+                                dt1 = DapperHelper.selectdata(sql1, dynamicParams);
+
+                                AdvancedSchedulingDeviceCont tbjson = new AdvancedSchedulingDeviceCont();
+                                tbjson.AdvaDevicNumber = listData[j].eqp_id.ToString();
+                                tbjson.AdvaDevicName = listData[j].name.ToString();
+                                tbjson.AdvaDevicCropMob = listData[j].AdvaDevicCropMob.ToString();  //绋煎姩鐜�
+                                tbjson.AdvaDevicRhythm = listData[j].AdvaDevicRhythm.ToString();    //鐢熶骇鑺傛媿
+                                if (dt1.Rows.Count > 0)
+                                {
+                                    tbjson.OneStartDate = dt1.Rows[0]["wktme1_start"].ToString();
+                                    tbjson.TwoStartDate = dt1.Rows[0]["wktme2_start"].ToString();
+                                    tbjson.ThreeStartDate = dt1.Rows[0]["wktme3_start"].ToString();
+                                    tbjson.FourStartDate = dt1.Rows[0]["wktme4_start"].ToString();
+                                    tbjson.FiveStartDate = dt1.Rows[0]["wktme5_start"].ToString();
+                                    tbj.children.Add(tbjson);
+                                    IsCap = true;
+                                }
+                                else
+                                {
+
+                                    tbjson.OneStartDate = "";
+                                    tbjson.TwoStartDate = "";
+                                    tbjson.ThreeStartDate = "";
+                                    tbjson.FourStartDate = "";
+                                    tbjson.FiveStartDate = "";
+                                    tbj.children.Add(tbjson);
+                                }
+                            }
+
+                            list.Add(tbj);
+                        }
+                        if (list.Select(p => p.children).ToList().Count > 0)
+                        {
+                            int one = list.Where(t => t.children.Select(s => s.OneStartDate).Any(x => x != "")).ToList().Count;
+                            int two = list.Where(t => t.children.Select(s => s.TwoStartDate).Any(x => x != "")).ToList().Count;
+                            int three = list.Where(t => t.children.Select(s => s.ThreeStartDate).Any(x => x != "")).ToList().Count;
+                            int four = list.Where(t => t.children.Select(s => s.FourStartDate).Any(x => x != "")).ToList().Count;
+                            int five = list.Where(t => t.children.Select(s => s.FiveStartDate).Any(x => x != "")).ToList().Count;
+                            if (one <= 0 && two <= 0 && three <= 0 && four <= 0 && five <= 0)
+                            {
+                                mes.code = "300";
+                                mes.count = 0;
+                                mes.Message = "鎺掔▼璁惧鏈缃骇鑳斤紒";
+                                mes.data = null;
+                            }
+                        }
+                    }
+                }
+                else
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "璁惧娌℃湁鍏宠仈杞﹂棿锛�";
+                    mes.data = null;
+                }
+                return list;
+            }
+            catch (Exception e)
+            {
+                mes.code = "300";
+                mes.count = 0;
+                mes.Message = e.Message;
+                mes.data = null;
+            }
+            return list;
+        }
+        #endregion
+
+        #region[璁惧宸叉帓绋嬩俊鎭痌
+        public static DataTable AlreadyScheduling(string wocode, string wkshpcode, string partcode, string botproccode, string startdate, string enddate)
+        {
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                List<APSList> listData = SchedulingMethod.SchedulingMethodTF(wocode, wkshpcode, partcode);
+                string[] empIds = listData.Select(a => a.eqp_id).ToArray();
+                string str = string.Join(",", empIds);
+                string s1 = string.Format("'{0}'", str.Replace(",", "','"));
+
+                string sql = @"select B.wo_code,  B.eqp_code,B.time_start,B.time_end, 'S' status , B.alloc_qty,D.partname as part_name
+	                           from TK_Wrk_EqpAps B 
+                               left join TK_Wrk_Man C on B.wo_code=C.wo_code
+                               left join  TMateriel_Info D on C.materiel_code=D.partcode
+                               where  B.eqp_code in(@s1) 
+	                           and convert(varchar(100),B.Time_Start,21)>=@startdate and convert(varchar(100),B.Time_End,21)<=@enddate order by time_end";
+                dynamicParams.Add("@s1", s1);
+                dynamicParams.Add("@startdate", startdate + " 00:00:00");
+                dynamicParams.Add("@enddate", enddate + " 23:59:59");
+                var dt_0 = DapperHelper.selectdata(sql, dynamicParams);
+                if (dt == null || dt.Rows.Count == 0)
+                {
+                    return null;
+                }
+            }
+            catch (Exception ex)
+            {
+                throw new Exception(ex.Message);
+            }
+
+            return dt;
+        }
+        #endregion
+
+        #region[鎺掔▼鏁版嵁鎻愪氦]
+        public static ToMessage SubmitAlreadyScheduling(string username, string wocode, string botprocecode, List<AlreadyScheduling> objs)
+        {
+            var sql = "";
+            List<object> list = new List<object>();
+            var dynamicParams = new DynamicParameters();
+            try
+            {
+                string maxTime = objs.Max(t => Convert.ToDateTime(t.AlreEndDate).ToString("yyyy-MM-dd HH:mm"));  //鏈�澶у��
+                string minTime = objs.Min(t => Convert.ToDateTime(t.AlreEndDate).ToString("yyyy-MM-dd HH:mm"));  //鏈�灏忓��
+                sql = @"select 
+                        A.id, A.status,
+                        '0' BottFrointv,  convert(varchar(100),B.plan_enddate-0,21) Plan_end ,
+                        convert(varchar(100),B.plan_startdate+0,21) plan_start
+                        from TK_Wrk_Step A
+                        left join TK_Wrk_Man B on A.wo_code=B.wo_code  
+                        where A.wo_code=@wocode and A.step_code=@botprocecode and A.isbott='Y'";
+                dynamicParams.Add("@wocode", wocode);
+                dynamicParams.Add("@botprocecode", botprocecode);
+                var dt = DapperHelper.selectdata(sql, dynamicParams);
+                string ID = dt.Rows[0]["ID"].ToString();     // mes_tk_wrk_step 琛� 鐡跺緞宸ュ簭琛孖D
+                string status = dt.Rows[0]["STATUS"].ToString();
+                Decimal nm = 0;                                                     //鐡跺緞宸ュ簭鐨勫墠缃ぉ鏁�
+                Decimal nn = Decimal.Parse(dt.Rows[0]["BottFrointv"].ToString());   //鐡跺緞宸ュ簭鐨勫悗缃ぉ鏁�
+                if (status != "NEW" && status != "SCHED")   //宸ュ簭浠诲姟鐨勭姸鎬佸凡缁忔淳鍙戯紙瀹℃牳锛�
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "褰撳墠鎺掔▼浠诲姟宸茬粡娲惧彂,鎻愪氦鍙栨秷锛�";
+                    mes.data = null;
+                    return mes;
+                }
+                if (status == "SCHED")   //宸ュ簭浠诲姟鐨勭姸鎬佸凡缁忔帓绋�
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "褰撳墠鎺掔▼浠诲姟宸茬粡鎺掔▼,鎻愪氦鍙栨秷锛�";
+                    mes.data = null;
+                    return mes;
+                }
+
+                list.Clear();
+                //鎸夊伐鍗曞垹闄よ澶囦换鍔¤〃(鏃ヤ换鍔¤〃锛�
+                sql = @"delete TK_Wrk_EqpAps  where wo_code=@wocode";
+                list.Add(new { str = sql, parm = new { wocode = wocode } });
+                //鎸夊伐鍗曞垹闄よ澶囦换鍔¤〃(姹囨�昏〃锛�
+                sql = @"delete TK_Wrk_EqpApsSum  where wo_code=@wocode";
+                list.Add(new { str = sql, parm = new { wocode = wocode } });
+                //鎸夊伐鍗曞垹闄よ澶囦换鍔¤〃(姹囨�昏〃锛夌墿鏂欒〃
+                sql = @"delete TK_Wrk_EqpSum_Allo  where wo_code=@wocode";
+                list.Add(new { str = sql, parm = new { wocode = wocode } });
+
+                float n = 0;  //绱鎺掍骇鎬绘暟
+
+                for (int i = 0; i < objs.Count; i++)        //寰幆娣诲姞姣忎釜璁惧鐨勬満鍙颁换鍔�
+                {
+                    sql = @"insert into TK_Wrk_EqpAps (wo_code,step_taid,eqp_code,time_start,time_end,alloc_qty,status)
+                            values(@wo_code,@step_taid,@eqp_code,@time_start,@time_end,@alloc_qty,@status)";
+                    list.Add(new { str = sql, parm = new { wo_code = wocode, step_taid = ID, eqp_code = objs[i].AlreDevicNumber, time_start = objs[i].AlreStartDate, time_end = objs[i].AlreEndDate, alloc_qty = objs[i].AlreQty, status = "NEW" } });
+                    n = n + float.Parse(objs[i].AlreQty.ToString());
+                }
+
+                bool aa = DapperHelper.DoTransaction(list); //鎻愪氦璁惧浠诲姟
+                if (!aa)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鍏堥鎺�,鍐嶇偣鍑绘彁浜わ紒";
+                    mes.data = null;
+                    return mes;
+                }
+                list.Clear();
+                //鐢熸垚璁惧浠诲姟姹囨�昏〃  锛堟牴鎹澶囨棩浠诲姟琛級
+                sql = "select distinct eqp_code from TK_Wrk_EqpAps where wo_code=@wocode";
+                dynamicParams.Add("@wocode", wocode);
+                var dt1 = DapperHelper.selectdata(sql, dynamicParams);
+
+                for (int i = 0; i < dt1.Rows.Count; i++)
+                {
+                    sql = @"insert into  TK_Wrk_EqpApsSum (wo_code,eqp_code,step_taid,p_date, t_date, qty,status)
+                           select  min(wo_code),min(eqp_code),min(step_taid),min(time_start),max(time_end),sum(Alloc_Qty),'NEW' from TK_Wrk_EqpAps  
+                           where wo_code=@wocode and eqp_code=''";
+                    list.Add(new { str = sql, parm = new { wocode = wocode, eqp_code = dt1.Rows[i]["EQP_CODE"].ToString() } });
+                }
+
+                bool aa1 = DapperHelper.DoTransaction(list); //鎻愪氦璁惧浠诲姟
+                if (!aa1)
+                {
+                    mes.code = "300";
+                    mes.count = 0;
+                    mes.Message = "鐢熸垚璁惧浠诲姟姹囨�昏〃鍑洪敊锛屾帓浜уけ璐ワ紒";
+                    mes.data = null;
+                    return mes;
+                }
+
+                list.Clear();
+                //鍐欏叆璁惧浠诲姟(姹囨�昏〃)鐢ㄦ枡  璁″垝鏁伴噺*瀛愪欢鍩烘湰鐢ㄩ噺*锛�1+鎹熻�楃巼锛�/姣嶄欢鍩烘湰鐢ㄩ噺
+                sql = @"insert into TK_Wrk_EqpSum_Allo(m_id, seq, invcode, qty,wo_code,pn_type)
+                        select A.id M_id, B.seq,B.materiel_code,(round(A.qty,2)*BE.Base_Quantity*(1+BE.LOSS_QUANTITY/100))/BM.quantity  qty,A.wo_code,B.materieltype  
+                        from TK_Wrk_EqpApsSum A 
+                        left join TK_Wrk_Allo B on A.Wo_Code= B.Wo_Code 
+                        left join TBom_Deta BE  ON B.bom_id=BE.m_id and B.materiel_code=BE.smateriel_code
+                        left join  TBom_Main BM on BE.m_Id=BM.id  where A.wo_code=@wocode";
+                list.Add(new { str = sql, parm = new { wocode = wocode } });
+
+                //鏇存柊 宸ュ簭浠诲姟鍗曠殑銆愮摱寰勫伐搴忋�� 鎺掍骇棰勫紑宸ユ棩鏈熴�佹帓浜ч瀹屽伐鏃ユ湡銆佺姸鎬侊細NEW===>SCHED 銆佸凡鎺掍骇鏁伴噺
+                sql = @"update TK_Wrk_Step   set plan_startdate =convert(varchar(100),@plan_startdate,21),  plan_enddate =convert(varchar(100),@plan_enddate,21),  status = 'SCHED', sched_qty =@sched_qty where id =@id";
+                list.Add(new { str = sql, parm = new { plan_startdate = minTime, plan_enddate = maxTime, sched_qty = n, id = ID } });
+
+                //宸ュ崟宸ュ簭鐨勨�滆鍒掑紑鏈烘棩鏈� = 鐡跺緞宸ュ簭鐨勯寮�宸ユ棩鏈� - 鐡跺緞宸ュ簭鐨勫墠缃棩鏈燂級    涓诲伐鍗曪細璁″垝瀹屽伐鏃ユ湡 = 鐡跺緞宸ュ簭鐨勯瀹屽伐鏃ユ湡 + 鐡跺緞宸ュ簭鐨勫悗缃棩鏈�
+                sql = @"update TK_Wrk_Step   set plan_startdate =convert(varchar(100),@plan_startdate,21),  plan_enddate =convert(varchar(100),@plan_enddate,21),  status = 'SCHED', sched_qty =@sched_qty where wo_code =@wocode and isbott='N'";
+                list.Add(new
+                {
+                    str = sql,
+                    parm = new
+                    {
+                        plan_startdate = Convert.ToDateTime(minTime).AddDays(Convert.ToDouble(-nm)).ToString("yyyy-MM-dd"),
+                        plan_enddate = Convert.ToDateTime(maxTime).AddDays(Convert.ToDouble(nn)).ToString("yyyy-MM-dd"),
+                        sched_qty = n,
+                        wocode = wocode
+                    }
+                });
+                //涓诲伐鍗曠殑鈥滆鍒掑紑鏈烘棩鏈� = 鐡跺緞宸ュ簭鐨勯寮�宸ユ棩鏈� - 鐡跺緞宸ュ簭鐨勫墠缃棩鏈燂級    涓诲伐鍗曪細璁″垝瀹屽伐鏃ユ湡 = 鐡跺緞宸ュ簭鐨勯瀹屽伐鏃ユ湡 + 鐡跺緞宸ュ簭鐨勫悗缃棩鏈�
+                sql = @"update mes_tk_wrk_man set status='SCHED',plan_startdate =convert(varchar(100),@plan_startdate,21),  plan_enddate =convert(varchar(100),@plan_enddate,21), exchag='Y',allocfag='N' where wo_code =@wocode";
+                list.Add(new
+                {
+                    str = sql,
+                    parm = new
+                    {
+                        plan_startdate = Convert.ToDateTime(minTime).AddDays(Convert.ToDouble(-nm)).ToString("yyyy-MM-dd"),
+                        plan_enddate = Convert.ToDateTime(maxTime).AddDays(Convert.ToDouble(nn)).ToString("yyyy-MM-dd"),
+                        sched_qty = n,
+                        wocode = wocode
+                    }
+                });
+                bool aa2 = DapperHelper.DoTransaction(list); //鎻愪氦璁惧浠诲姟
+                if (aa2)
+                {
+                    mes.code = "200";
+                    mes.count = 0;
+                    mes.Message = "鎻愪氦鎺掔▼鎴愬姛锛�";
+                }
+                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
+
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3