public ActionResult Query(WIPMoveQueryViewModel model) { DataTable dtData = new DataTable(); //获取工序MOVE数据。 using (WIPMoveServiceClient client = new WIPMoveServiceClient()) { MethodReturnResult <DataSet> rst = client.Get(new WIPMoveGetParameter() { LocationName = model.LocationName, MaterialCode = model.MaterialCode, OrderNumber = model.OrderNumber, ShiftName = model.ShiftName, StartDate = model.StartDate, EndDate = model.EndDate }); if (rst.Code <= 0 && rst.Data != null && rst.Data.Tables.Count > 0) { dtData = rst.Data.Tables[0]; } } //获取工序数据。 IList <RouteOperation> lstRouteOperation = new List <RouteOperation>(); using (RouteOperationServiceClient client = new RouteOperationServiceClient()) { PagingConfig cfg = new PagingConfig() { IsPaging = false, Where = "Status=1", OrderBy = "SortSeq" }; MethodReturnResult <IList <RouteOperation> > rst = client.Get(ref cfg); if (rst.Code <= 0 && rst.Data != null) { lstRouteOperation = rst.Data; } } //获取班次数据。 IList <Shift> lstShift = new List <Shift>(); using (ShiftServiceClient client = new ShiftServiceClient()) { PagingConfig cfg = new PagingConfig() { IsPaging = false }; if (!string.IsNullOrEmpty(model.ShiftName)) { cfg.Where = string.Format("Key='{0}'", model.ShiftName); } MethodReturnResult <IList <Shift> > rst = client.Get(ref cfg); if (rst.Code <= 0) { lstShift = rst.Data; } } string [] columns = new string[] { "CUR_DAY", "SHIFT_NAME", "ACTIVITY" }; //组织新表数据结构 DataTable dtNew = new DataTable(); for (int i = 0; i < columns.Length; i++) { DataColumn dc = dtNew.Columns.Add(columns[i]); dc.Caption = dicColumn[dc.ColumnName]; } //添加工序列 for (int i = 0; i < lstRouteOperation.Count; i++) { string colName = lstRouteOperation[i].Key; DataColumn col = new DataColumn(colName); col.DataType = typeof(double); dtNew.Columns.Add(col); } //添加合计列 DataColumn dcSum = dtNew.Columns.Add("SUM_VALUE"); dcSum.DataType = typeof(double); dcSum.Caption = dicColumn[dcSum.ColumnName]; //填充数据 //添加合计行。 foreach (Shift shift in lstShift) { for (int i = 0; i < activities.Length; i++) { DataRow dr = dtNew.NewRow(); dr["CUR_DAY"] = "合计"; dr["SHIFT_NAME"] = shift.Key; dr["ACTIVITY"] = Convert.ToInt32(activities[i]); dtNew.Rows.Add(dr); } } //添加日期行。 for (DateTime start = model.StartDate; start <= model.EndDate; start = start.AddDays(1)) { foreach (Shift shift in lstShift) { for (int i = 0; i < activities.Length; i++) { DataRow dr = dtNew.NewRow(); dr["CUR_DAY"] = start; dr["SHIFT_NAME"] = shift.Key; dr["ACTIVITY"] = Convert.ToInt32(activities[i]); dtNew.Rows.Add(dr); } } } for (int i = 0; i < dtNew.Rows.Count; i++) { string curDay = Convert.ToString(dtNew.Rows[i]["CUR_DAY"]); string shiftName = Convert.ToString(dtNew.Rows[i]["SHIFT_NAME"]); int activity = Convert.ToInt32(dtNew.Rows[i]["ACTIVITY"]); double sumQty = 0; for (int j = 0; j < lstRouteOperation.Count; j++) { string colName = lstRouteOperation[j].Key; double qty = 0; if (curDay == "合计") { var lnq = from row in dtData.AsEnumerable() where Convert.ToString(row["SHIFT_NAME"]) == shiftName && Convert.ToInt32(row["ACTIVITY"]) == activity && Convert.ToString(row["ROUTE_STEP_NAME"]) == colName select Convert.ToDouble(row["QUANTITY"]); qty = lnq.Sum(); } else { var lnq = from row in dtData.AsEnumerable() where Convert.ToString(row["CUR_DAY"]) == curDay && Convert.ToString(row["SHIFT_NAME"]) == shiftName && Convert.ToInt32(row["ACTIVITY"]) == activity && Convert.ToString(row["ROUTE_STEP_NAME"]) == colName select Convert.ToDouble(row["QUANTITY"]); qty = lnq.Sum(); } dtNew.Rows[i][colName] = qty; sumQty += qty; } dtNew.Rows[i]["SUM_VALUE"] = sumQty; } //缓存数据。 string key = Convert.ToString(Session.SessionID); string routeOperationKey = string.Format("{0}_RouteOperation", key); HttpContext.Cache[key] = dtData; HttpContext.Cache[routeOperationKey] = lstRouteOperation; ViewBag.ListData = dtNew; ViewBag.Key = key; if (Request.IsAjaxRequest()) { return(PartialView("_ListPartial", model)); } else { return(View(model)); } }
// // GET: /RPT/WIPMove/ public ActionResult Index(WIPMoveQueryViewModel model) { return(Query(model)); }