using DIXWeb.DAL; using DIXWeb.Entity.Statement; using DIXWeb.Entity.Workflow; using DIXWeb.Util.Helper; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DIXWeb.Business.GlobalM { public class StatementBusiness { public Receive GetICS(int OrgId,int InspectObjectTypeId, int InspectTypeId, DateTime TimeBegin, DateTime TimeEnd, int PageIndex, int PageSize) { Receive receive = new Receive(); try { using (DBContext db = new DBContext()) { System.Data.SqlClient.SqlParameter[] paramList = new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@OrgId", OrgId), new System.Data.SqlClient.SqlParameter("@IspectObjectTypeId", InspectObjectTypeId), new System.Data.SqlClient.SqlParameter("@InspectTypeId", InspectTypeId), new System.Data.SqlClient.SqlParameter("@TimeBegin", TimeBegin), new System.Data.SqlClient.SqlParameter("@TimeEnd", TimeEnd), new System.Data.SqlClient.SqlParameter("@pageIndex", PageIndex), new System.Data.SqlClient.SqlParameter("@pageSize", PageSize), new System.Data.SqlClient.SqlParameter("@Total", 0), }; int index = paramList.Length - 1; paramList[index].Direction = ParameterDirection.Output; List list = db.Database.SqlQuery("exec dbo.zp_GetICS @OrgId,@IspectObjectTypeId,@InspectTypeId,@TimeBegin,@TimeEnd,@pageIndex,@pageSize,@Total output ", paramList).ToList(); receive.rows = list; receive.total = int.Parse(paramList[index].Value.ToString()); receive.Extend = this.GetEChartsByISCList(list);//转换 receive.Code = 200; receive.Message = "SUCCESS"; } } catch (Exception ex) { receive.Code = 500; receive.Message = ex.Message; } return receive; } private ECharts GetEChartsByISCList(List list) { ECharts record = new ECharts(); record.LegendData = new string[] { "未点检", "点检OK", "现场维修OK", "维修中", "维修完成" }; List setDate = new List(); List setType = new List(); for (int i = 0; i < list.Count; i++) { if (!setDate.Contains(list[i].Attention)) { setDate.Add(list[i].Attention); } if (!setType.Contains(list[i].InspectObjectTypeName)) { setType.Add(list[i].InspectObjectTypeName); } } record.xAxisData = setDate.ToArray(); //每种类型5个 record.EChartsSeriesArr = new EChartsSeries[setType.Count * 5]; int index = 0; for (int i = 0; i < setType.Count; i++) { string InspectObjectTypeName = setType[i]; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectTypeName = InspectObjectTypeName; int[] LastCheckArr = list.Where(x => x.InspectObjectTypeName.Equals(InspectObjectTypeName)).Select(x => x.LastCheck).ToArray(); record.EChartsSeriesArr[index].name = "未点检"; record.EChartsSeriesArr[index].type = "bar"; record.EChartsSeriesArr[index].stack = InspectObjectTypeName + "-点检状态"; record.EChartsSeriesArr[index].data = LastCheckArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectTypeName = InspectObjectTypeName; int[] CheckedOKArr = list.Where(x => x.InspectObjectTypeName.Equals(InspectObjectTypeName)).Select(x => x.CheckedOK).ToArray(); record.EChartsSeriesArr[index].name = "点检OK"; record.EChartsSeriesArr[index].type = "bar"; record.EChartsSeriesArr[index].stack = InspectObjectTypeName + "-现场OK"; record.EChartsSeriesArr[index].data = CheckedOKArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectTypeName = InspectObjectTypeName; int[] CheckedNGArr = list.Where(x => x.InspectObjectTypeName.Equals(InspectObjectTypeName)).Select(x => x.CanRepair).ToArray(); record.EChartsSeriesArr[index].name = "现场维修OK"; record.EChartsSeriesArr[index].type = "bar"; record.EChartsSeriesArr[index].stack = InspectObjectTypeName + "-现场OK"; record.EChartsSeriesArr[index].data = CheckedNGArr; record.EChartsSeriesArr[index].ShowDesc = 1; index++; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectTypeName = InspectObjectTypeName; int[] DealOKArr = list.Where(x => x.InspectObjectTypeName.Equals(InspectObjectTypeName)).Select(x => x.InRepair).ToArray(); record.EChartsSeriesArr[index].name = "维修中"; record.EChartsSeriesArr[index].type = "bar"; record.EChartsSeriesArr[index].stack = InspectObjectTypeName + "-维修状态"; record.EChartsSeriesArr[index].data = DealOKArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectTypeName = InspectObjectTypeName; int[] DealNGArr = list.Where(x => x.InspectObjectTypeName.Equals(InspectObjectTypeName)).Select(x => x.OKRepair).ToArray(); record.EChartsSeriesArr[index].name = "维修完成"; record.EChartsSeriesArr[index].type = "bar"; record.EChartsSeriesArr[index].stack = InspectObjectTypeName + "-维修状态"; record.EChartsSeriesArr[index].data = DealNGArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; } return record; } public Receive GetTD(int InspectObjectId, DateTime TimeBegin, DateTime TimeEnd, int PageIndex, int PageSize) { Receive receive = new Receive(); try { using (DBContext db = new DBContext()) { string yMinTemperature = string.Empty; string yMaxTemperature = string.Empty; string yMinHumidity = string.Empty; string yMaxHumidity = string.Empty; System.Data.SqlClient.SqlParameter[] paramList = new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@IspectObjectId", InspectObjectId), new System.Data.SqlClient.SqlParameter("@TimeBegin", TimeBegin), new System.Data.SqlClient.SqlParameter("@TimeEnd", TimeEnd), new System.Data.SqlClient.SqlParameter("@pageIndex", PageIndex), new System.Data.SqlClient.SqlParameter("@pageSize", PageSize), new System.Data.SqlClient.SqlParameter("@yMinTemperature",SqlDbType.VarChar,32), new System.Data.SqlClient.SqlParameter("@yMaxTemperature",SqlDbType.VarChar,32), new System.Data.SqlClient.SqlParameter("@yMinHumidity",SqlDbType.VarChar,32), new System.Data.SqlClient.SqlParameter("@yMaxHumidity",SqlDbType.VarChar,32), new System.Data.SqlClient.SqlParameter("@Total",SqlDbType.Int,8), }; int index_yMinTemperature = paramList.Length - 5; int index_yMaxTemperature = paramList.Length - 4; int index_yMinHumidity = paramList.Length - 3; int index_yMaxHumidity = paramList.Length - 2; int index = paramList.Length - 1; paramList[index_yMinTemperature].Direction = ParameterDirection.Output; paramList[index_yMaxTemperature].Direction = ParameterDirection.Output; paramList[index_yMinHumidity].Direction = ParameterDirection.Output; paramList[index_yMaxHumidity].Direction = ParameterDirection.Output; paramList[index].Direction = ParameterDirection.Output; List list = db.Database.SqlQuery("exec dbo.zp_GetTD @IspectObjectId,@TimeBegin,@TimeEnd,@pageIndex,@pageSize,@yMinTemperature output,@yMaxTemperature output,@yMinHumidity output,@yMaxHumidity output,@Total output ", paramList).ToList(); receive.rows = list; yMinTemperature = paramList[index_yMinTemperature].Value.ToString(); yMaxTemperature = paramList[index_yMaxTemperature].Value.ToString(); yMinHumidity = paramList[index_yMinHumidity].Value.ToString(); yMaxHumidity = paramList[index_yMaxHumidity].Value.ToString(); receive.total = int.Parse(paramList[index].Value.ToString()); object[] objArr = GetTDList(list); List xAxisList = objArr[0] as List; List lineNameList = objArr[1] as List; List xAxisStrList = objArr[2] as List; receive.Extend = GetEChartsTemperature(list, xAxisList, lineNameList, xAxisStrList, yMinTemperature, yMaxTemperature);//转换 receive.Extend1 = GetEChartsHumidity(list, xAxisList, lineNameList, xAxisStrList, yMinHumidity, yMaxHumidity);//转换 receive.Code = 200; receive.Message = "SUCCESS"; } } catch (Exception ex) { receive.Code = 500; receive.Message = ex.Message; } return receive; } public Receive GetNeedCheckDetail(int InspectTypeId, int InspectObjectTypeId, string Attention, int PageIndex, int PageSize) { Receive receive = new Receive(); try { using (DBContext db = new DBContext()) { System.Data.SqlClient.SqlParameter[] paramList = new System.Data.SqlClient.SqlParameter[] { new System.Data.SqlClient.SqlParameter("@InspectObjectTypeId", InspectObjectTypeId), new System.Data.SqlClient.SqlParameter("@InspectTypeId", InspectTypeId), new System.Data.SqlClient.SqlParameter("@Attention", Attention), new System.Data.SqlClient.SqlParameter("@PageIndex", PageIndex), new System.Data.SqlClient.SqlParameter("@PageSize", PageSize), new System.Data.SqlClient.SqlParameter("@Total", 0), }; int index = paramList.Length - 1; paramList[index].Direction = ParameterDirection.Output; List list = db.Database.SqlQuery("exec dbo.zp_getLastCheckDetail @Attention,@InspectObjectTypeId,@InspectTypeId,@PageIndex,@PageSize,@Total output ", paramList).ToList(); receive.rows = list; receive.total = int.Parse(paramList[index].Value.ToString()); receive.Code = 200; receive.Message = "SUCCESS"; } } catch (Exception ex) { receive.Code = 500; receive.Message = ex.Message; } return receive; } private ECharts GetEChartsTemperature(List list, List xAxisList, List lineNameList, List xAxisStrList, string yMin, string yMax) { ECharts record = new ECharts(); record.yMin = yMin; record.yMax = yMax; record.LegendData = new string[] { "温度上限", "温度下限" }; record.xAxisData = xAxisStrList.ToArray(); //每种类型5个 record.EChartsSeriesArr = new EChartsSeries[lineNameList.Count + 2]; int index = 0; for (int i = 0; i < lineNameList.Count; i++) { string InspectObjectName = lineNameList[i]; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectName = InspectObjectName; string[] TemperatureArr = new string[xAxisList.Count]; for (int j = 0; j < xAxisList.Count; j++) { TransitionDiagram temp = list.Where(x => x.InspectObjectName.Equals(InspectObjectName) && x.RowId == xAxisList[j]).FirstOrDefault(); TemperatureArr[j] = temp == null ? "" : temp.Temperature; } record.EChartsSeriesArr[index].name = InspectObjectName + "-温度"; record.EChartsSeriesArr[index].type = "line"; record.EChartsSeriesArr[index].stack = InspectObjectName + "-温度"; record.EChartsSeriesArr[index].data = TemperatureArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; } record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectName = "温度上限"; string[] TemperatureMaxArr = list.Select(x => x.TemperatureMax).ToArray(); record.EChartsSeriesArr[index].name = "温度上限"; record.EChartsSeriesArr[index].type = "line"; record.EChartsSeriesArr[index].stack = "温度上限"; record.EChartsSeriesArr[index].data = TemperatureMaxArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectName = "温度下限"; string[] TemperatureMinArr = list.Select(x => x.TemperatureMin).ToArray(); record.EChartsSeriesArr[index].name = "温度下限"; record.EChartsSeriesArr[index].type = "line"; record.EChartsSeriesArr[index].stack = "温度下限"; record.EChartsSeriesArr[index].data = TemperatureMinArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; return record; } private ECharts GetEChartsHumidity(List list, List xAxisList, List lineNameList, List xAxisStrList, string yMin, string yMax) { ECharts record = new ECharts(); record.yMin = yMin; record.yMax = yMax; record.LegendData = new string[] { "湿度上限", "湿度下限" }; record.xAxisData = xAxisStrList.ToArray(); //每种类型5个 record.EChartsSeriesArr = new EChartsSeries[lineNameList.Count + 2]; int index = 0; for (int i = 0; i < lineNameList.Count; i++) { string InspectObjectName = lineNameList[i]; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectName = InspectObjectName; string[] HumidityArr = new string[xAxisList.Count]; for (int j = 0; j < xAxisList.Count; j++) { TransitionDiagram temp = list.Where(x => x.InspectObjectName.Equals(InspectObjectName) && x.RowId == xAxisList[j]).FirstOrDefault(); HumidityArr[j] = temp == null ? "" : temp.Humidity; } record.EChartsSeriesArr[index].name = InspectObjectName + "-湿度"; record.EChartsSeriesArr[index].type = "line"; record.EChartsSeriesArr[index].stack = InspectObjectName + "-湿度"; record.EChartsSeriesArr[index].data = HumidityArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; } record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectName = "湿度上限"; string[] HumidityMaxArr = list.Select(x => x.HumidityMax).ToArray(); record.EChartsSeriesArr[index].name = "湿度上限"; record.EChartsSeriesArr[index].type = "line"; record.EChartsSeriesArr[index].stack = "湿度上限"; record.EChartsSeriesArr[index].data = HumidityMaxArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; record.EChartsSeriesArr[index] = new EChartsSeries(); record.EChartsSeriesArr[index].InspectObjectName = "湿度下限"; string[] HumidityMinArr = list.Select(x => x.HumidityMin).ToArray(); record.EChartsSeriesArr[index].name = "湿度下限"; record.EChartsSeriesArr[index].type = "line"; record.EChartsSeriesArr[index].stack = "湿度下限"; record.EChartsSeriesArr[index].data = HumidityMinArr; record.EChartsSeriesArr[index].ShowDesc = 0; index++; return record; } private object[] GetTDList(List list) { List xAxisList = new List(); List xAxisStrList = new List(); List lineNameList = new List(); for (int i = 0; i < list.Count; i++) { if (!xAxisList.Contains(list[i].RowId)) { xAxisList.Add(list[i].RowId); xAxisStrList.Add(DateTime.Parse(list[i].Times).ToString("MM/dd HH:mm")); } if (!lineNameList.Contains(list[i].InspectObjectName)) { lineNameList.Add(list[i].InspectObjectName); } } return new object[] { xAxisList, lineNameList, xAxisStrList }; } public Receive GetItemNameByObjectCode(string InspectObjectCode) { Receive receive = new Receive(); try { Dictionary dictIn = new Dictionary(); dictIn.Add("@InspectObjectCode", InspectObjectCode); DataTable table = new DBHelper().GetDataTable("dbo.zp_GetItemNameByObjectCode", dictIn); receive.Code = 200; receive.Message = table.Rows[0][0].ToString(); } catch (Exception ex) { receive.Code = 500; receive.Message = ex.Message; } return receive; } public Receive GetObjectInspectDetail(string InspectObjectCode, DateTime TimeBegin, DateTime TimeEnd, int page = 1, int rows = 200) { Receive receive = new Receive(); try { Dictionary dictIn = new Dictionary(); List dictOutAttr = new List(); dictIn.Add("@InspectObjectCode", InspectObjectCode); dictIn.Add("@TimeBegin", TimeBegin); dictIn.Add("@TimeEnd", TimeEnd); dictIn.Add("@PageIndex", page); dictIn.Add("@PageSize", rows); dictOutAttr.Add("@Total"); dictOutAttr.Add("@colNameArrStr"); object[] result = new DBHelper("DIX").GetDataTableWithOutPut("dbo.zp_GetObjectInspectDetail", dictIn, dictOutAttr); Dictionary dictOut = result[1] as Dictionary; string totalStr = dictOut["@Total"].ToString(); if (string.IsNullOrEmpty(totalStr)) { receive.Code = 404; receive.Message = "未查询到数据"; return receive; } receive.total = int.Parse(totalStr); if (receive.total <= 0) { receive.Code = 404; receive.Message = "未查询到数据"; return receive; } receive.Code = 200; receive.rows = new DataHelper().ToDataList(result[0] as DataTable); receive.Extend = dictOut["@colNameArrStr"].ToString(); } catch (Exception ex) { receive.Code = 500; receive.Message = ex.Message; } return receive; } } }