using AUTS.Domain.Entities; using AUTS.Domain.ViewModels; using AUTS.Services.DBUtility.Custom; using AUTS.Services.Enums; using AUTS.Services.Extensions; using AUTS.Services.Tool; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AUTS.Services.Manager { public partial class Orders { private static string TestLogTbName = "TBL_{0}_{1}_TestLog";//测试记录表名 public static ReturnResult GetOrdersPlannedSpeed(List cacheUserProject, List cacheUserOrder, List cacheUserCustomer, List cacheUserStationList) { ReturnResult result = new ReturnResult(); try { var orderNotList = cacheUserOrder.Where(x => x.OrderStatus == 1);//取出未完成订单 var minTime = orderNotList.Min(m => m.CreateTime);//订单最早日期 var maxTime = DateTime.Now;//订单最晚日期 minTime = Convert.ToDateTime(minTime.ToString("yyyy/MM/dd"));//订单最早日期 maxTime = Convert.ToDateTime(maxTime.ToString("yyyy/MM/dd"));//订单最晚日期 TimeSpan ts = maxTime - minTime; int differenceInDays = ts.Days + 1; DataTable tblDatas = new DataTable("Datas"); tblDatas.Columns.Add("ID", Type.GetType("System.String"));//新列 tblDatas.Columns.Add("单号", Type.GetType("System.String"));//新列 tblDatas.Columns.Add("机型", Type.GetType("System.String"));//新列 tblDatas.Columns.Add("客户", Type.GetType("System.String"));//新列 tblDatas.Columns.Add("数量", Type.GetType("System.String"));//新列 tblDatas.Columns.Add("已完成", Type.GetType("System.String"));//新列 for (var i = 0; i < differenceInDays; i++) { tblDatas.Columns.Add(minTime.AddDays(i).ToString("yy/MM/dd"), Type.GetType("System.String"));//新列 } var dbTableName = ""; var sumTotal = 0; var dalHelperCustom = new DALHelperCustom(); var thisDataList = new List(); string connectionString = Users.GerOnUserCofin();//当前库连接串 using (MySqlConnection connection = new MySqlConnection(connectionString)) { DataSet dataSet = new DataSet(); connection.Open(); MySqlDataAdapter command = new MySqlDataAdapter(); var strSql = ""; foreach (var item in orderNotList) { strSql = ""; dataSet.Clear(); sumTotal = 0; DataRow newRow = tblDatas.NewRow();//新行 newRow["ID"] = item.ID; newRow["单号"] = item.OrderNo; newRow["机型"] = cacheUserProject.Single(x => x.ID == item.ProductID).ProjectName; newRow["客户"] = cacheUserCustomer.Single(x => x.ID == item.CompanyID).CustomerAbbr; newRow["数量"] = item.OrderCount; var endTestStationID = cacheUserStationList.Where(x => x.ProjectID == item.ProductID && x.StationType == StationType.Test.GetEnumDesc()).Max(m => m.ID);//最大测试站 dbTableName = string.Format(TestLogTbName, item.ProductID, endTestStationID);//最大测试站表名 strSql = "select StartTime,DATE_FORMAT(StartTime,'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where OrderID=" + item.ID + " AND TestResult=1 GROUP BY DAYS;";//查询语句 command = new MySqlDataAdapter(strSql.ToString(), connection); command.Fill(dataSet, "ds"); if (dataSet.Tables[0].Rows.Count > 0) { thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]); foreach (var itemData in thisDataList) { //tblDatas.Rows[rowKey][itemData.CreateTime.ToString("yyyy/MM/dd")] = itemData.Total; newRow[itemData.StartTime.ToString("yy/MM/dd")] = itemData.Total; sumTotal += itemData.Total; } } newRow["已完成"] = sumTotal; tblDatas.Rows.Add(newRow); } } var rows = ModelHelper.TableToRow(tblDatas); result.Data = rows; result.Status = 200; } catch (MySqlException ex) { result.Message = ex.Message; Logs.WriteErrorLog(ex); } catch (Exception ex) { result.Message = "网络系统繁忙,请稍候再试!"; LogHelp.WriteExceptionLog(ex); } return result; } public static ReturnResult GetOrdersPlannedSpeedDetails(int id, List cacheUserProject, List cacheUserOrder, List cacheUserCustomer, List cacheUserStationList, string connectionString) { ReturnResult result = new ReturnResult(); try { var order = cacheUserOrder.Single(x => x.ID == id);//取出订单 var stationList = cacheUserStationList.Where(x => x.StationType != StationType.QA.GetEnumDesc() && x.ProjectID == order.ProductID);//不为该机型QA的测试站 var minTime = order.CreateTime;//订单最早日期 var maxTime = DateTime.Now;//订单最晚日期 minTime = Convert.ToDateTime(minTime.ToString("yyyy/MM/dd"));//订单最早日期 maxTime = Convert.ToDateTime(maxTime.ToString("yyyy/MM/dd"));//订单最晚日期 TimeSpan ts = maxTime - minTime; int differenceInDays = ts.Days + 1; DataTable tblDatas = new DataTable("Datas"); tblDatas.Columns.Add("测试站", Type.GetType("System.String"));//新列 tblDatas.Columns.Add("数量", Type.GetType("System.String"));//新列 for (var i = 0; i < differenceInDays; i++) { tblDatas.Columns.Add(minTime.AddDays(i).ToString("yy/MM/dd"), Type.GetType("System.String"));//新列 } var dbTableName = ""; var strSql = ""; var sumTotal = 0; var dalHelperCustom = new DALHelperCustom(); //string connectionString = Users.GerOnUserCofin();//当前库连接串 using (MySqlConnection connection = new MySqlConnection(connectionString)) { DataSet dataSet = new DataSet(); MySqlDataAdapter command = new MySqlDataAdapter(); connection.Open(); //测试站列表 foreach (var itemStation in stationList) { strSql = ""; sumTotal = 0; dataSet.Clear(); DataRow newRow = tblDatas.NewRow();//新行 newRow["测试站"] = itemStation.StationName; newRow["数量"] = "当日"; DataRow newRow2 = tblDatas.NewRow();//新行 newRow2["测试站"] = itemStation.StationName; newRow2["数量"] = "累计"; dbTableName = string.Format(TestLogTbName, itemStation.ProjectID, itemStation.ID);//测试站表名 strSql = "select StartTime,DATE_FORMAT(StartTime,'%Y%m%d') DAYS,COUNT(*) Total from `" + dbTableName + "` Where OrderID=" + id + " AND TestResult=1 GROUP BY DAYS;";//查询语句 command = new MySqlDataAdapter(strSql.ToString(), connection); command.Fill(dataSet, "ds"); if (dataSet.Tables[0].Rows.Count > 0) { var thisDataList = dalHelperCustom.DataRowToModels(dataSet.Tables[0]).OrderBy(x => x.StartTime); foreach (var itemData in thisDataList) { newRow[itemData.StartTime.ToString("yy/MM/dd")] = itemData.Total; sumTotal += itemData.Total; newRow2[itemData.StartTime.ToString("yy/MM/dd")] = sumTotal; } } tblDatas.Rows.Add(newRow); tblDatas.Rows.Add(newRow2); } } var rows = ModelHelper.TableToRow(tblDatas); result.Data = rows; result.Status = 200; } catch (MySqlException ex) { result.Message = ex.Message; Logs.WriteErrorLog(ex); } catch (Exception ex) { result.Message = "网络系统繁忙,请稍候再试!"; LogHelp.WriteExceptionLog(ex); } return result; } } }