コード例 #1
0
        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));
            }
        }
コード例 #2
0
 //
 // GET: /RPT/WIPMove/
 public ActionResult Index(WIPMoveQueryViewModel model)
 {
     return(Query(model));
 }