コード例 #1
0
        /// <summary>
        /// 通过制程序号获取
        /// </summary>
        public List <ProductLocationItem> GetPDInputLocationByProSeqAPI(PDByProSeqSearch search, Page page)
        {
            List <ProductLocationItem> resultList = new List <ProductLocationItem>();

            using (var context = new SPPContext())
            {
                if (search.Time_Interval == "全天" || search.Time_Interval == "ALL")
                {
                    var strSql     = @"        
                                  SELECT
	                                    p.Good_QTY,
	                                    p.Picking_QTY,
	                                    p.WH_Picking_QTY,
	                                    p.NG_QTY,
	                                    p.WH_QTY,
	                                    p.WIP_QTY,
	                                    p.Place,
                                        p.Color,
	                                    p.Time_Interval
                                    FROM
	                                    Product_Input_Location p
                                    JOIN dbo.FlowChart_Detail f ON f.FlowChart_Detail_UID = p.FlowChart_Detail_UID
                                   
                                  ";
                    var paramWhere =
                        $" WHERE  Is_Comfirm = 1 AND p.Project = N'{search.project}' AND p.Product_Phase = N'{search.Product_Phase}'  AND p.Customer = N'{search.customer}'   AND p.Part_Types = N'{search.part_types}' AND p.Process = N'{search.Process_Seq}' AND p.Product_Date = '{search.input_date}'";
                    strSql = strSql + paramWhere;
                    var result = DataContext.Database.SqlQuery <ProductLocationItem>(strSql).ToList();
                    var timeInterValModelList = GetMaxTimeInterVal(search.optype);
                    //1 按楼栋分组
                    var PlaceDic = result.GroupBy(p => p.Place).ToDictionary(p => p.Key, q => q);
                    foreach (var pdItems in PlaceDic)
                    {
                        //2 按颜色分组
                        var colorDic = pdItems.Value.GroupBy(p => p.Color).ToDictionary(p => p.Key, q => q);

                        int?WIP_QTY = 0;
                        foreach (var coloritem in colorDic)
                        {
                            var timeIntervalDic = new Dictionary <int, int?>();
                            foreach (var itemVal in coloritem.Value)
                            {
                                var timeInterModel =
                                    timeInterValModelList.FirstOrDefault(p => p.Enum_Value == itemVal.Time_Interval);
                                if (timeInterModel != null)
                                {
                                    timeIntervalDic.Add(int.Parse(timeInterModel.Enum_Name), itemVal.WIP_QTY);
                                }
                            }
                            WIP_QTY += timeIntervalDic.OrderByDescending(p => p.Key).FirstOrDefault().Value;
                        }

                        var resultModel = new ProductLocationItem()
                        {
                            Good_QTY       = pdItems.Value.Sum(p => p.Good_QTY),
                            Picking_QTY    = pdItems.Value.Sum(p => p.Picking_QTY),
                            WH_Picking_QTY = pdItems.Value.Sum(p => p.WH_Picking_QTY),
                            NG_QTY         = pdItems.Value.Sum(p => p.NG_QTY),
                            WH_QTY         = pdItems.Value.Sum(p => p.WH_QTY),
                            Place          = pdItems.Key,
                            WIP_QTY        = WIP_QTY,
                        };

                        resultList.Add(resultModel);
                    }
                }
                else
                {
                    var strSql = @"        
                                    SELECT
	                                SUM ([Good_QTY]) AS Good_QTY,
	                                SUM ([Picking_QTY]) AS Picking_QTY,
	                                SUM ([WH_Picking_QTY]) AS WH_Picking_QTY,
	                                SUM ([NG_QTY]) AS NG_QTY,
	                                SUM ([WH_QTY]) AS WH_QTY,
	                                sum (p.WIP_QTY) AS WIP_QTY,
	                                p.Place
                                FROM
	                                Product_Input_Location p
                                JOIN dbo.FlowChart_Detail f ON f.FlowChart_Detail_UID = p.FlowChart_Detail_UID
                                WHERE
	                                Is_Comfirm = 1
                                AND p.Project =N'{0}'
                                AND p.Product_Phase = N'{1}'
                                AND p.Customer = N'{2}'
                                AND p.Part_Types = N'{3}'
                                AND p.Process = N'{4}'
                                AND p.Product_Date = '{5}'
                                AND p.Time_Interval = '{6}'
                                GROUP BY
	                                p.Place
                                  ";
                    strSql = string.Format(strSql, search.project, search.Product_Phase, search.customer,
                                           search.part_types, search.Process_Seq, search.input_date, search.Time_Interval);
                    var query = DataContext.Database.SqlQuery <ProductLocationItem>(strSql).ToList();

                    if (page != null)
                    {
                        query = query.Skip(page.Skip).Take(page.PageSize).ToList();
                    }
                    resultList = query;
                }

                return(resultList);
            }
        }
コード例 #2
0
        public List <ProductLocationItem> QueryProductInputLocation(ProductInputLocationSearch search, Page page)
        {
            List <ProductLocationItem> resultList = new List <ProductLocationItem>();

            using (var context = new SPPContext())
            {
                if (search.Time_Interval == "全天" || search.Time_Interval == "ALL")
                {
                    var strSql = @"        
                                  SELECT
	                                    p.Good_QTY,
	                                    p.Picking_QTY,
	                                    p.WH_Picking_QTY,
	                                    p.NG_QTY,
	                                    p.WH_QTY,
	                                    p.WIP_QTY,
	                                    p.Place,
	                                    p.Time_Interval,
                                        p.Unacommpolished_Reason

                                    FROM
	                                    Product_Input_Location p
                                    JOIN dbo.FlowChart_Detail f ON f.FlowChart_Detail_UID = p.FlowChart_Detail_UID
                                    
                                  ";

                    var date = Convert.ToDateTime(search.Product_Date);

                    var paramwhere =
                        $" WHERE Is_Comfirm = 1  AND p.FlowChart_Master_UID ={search.FlowChart_Master_UID}  AND p.Process = N'{search.Process}'   AND p.Color = N'{search.Color}' AND Product_Date = '{date}'";
                    strSql = strSql + paramwhere;

                    var result = DataContext.Database.SqlQuery <ProductLocationItem>(strSql).ToList();
                    var timeInterValModelList = GetMaxTimeInterVal(search.opType);
                    var PlaceDic = result.GroupBy(p => p.Place).ToDictionary(p => p.Key, q => q);

                    foreach (var pdItems in PlaceDic)
                    {
                        var timeIntervalDic = new Dictionary <int, int?>();
                        foreach (var item in pdItems.Value)
                        {
                            var timeInterModel = timeInterValModelList.Where(p => p.Enum_Value == item.Time_Interval).FirstOrDefault();
                            timeIntervalDic.Add(int.Parse(timeInterModel.Enum_Name), item.WIP_QTY);
                        }
                        var WIP_QTY     = timeIntervalDic.OrderByDescending(p => p.Key).FirstOrDefault().Value;
                        var resultModel = new ProductLocationItem()
                        {
                            Good_QTY       = pdItems.Value.Sum(p => p.Good_QTY),
                            Picking_QTY    = pdItems.Value.Sum(p => p.Picking_QTY),
                            WH_Picking_QTY = pdItems.Value.Sum(p => p.WH_Picking_QTY),
                            NG_QTY         = pdItems.Value.Sum(p => p.NG_QTY),
                            WH_QTY         = pdItems.Value.Sum(p => p.WH_QTY),
                            Place          = pdItems.Key,
                            WIP_QTY        = WIP_QTY
                        };
                        resultList.Add(resultModel);
                    }
                }
                else
                {
                    var query = from l in context.Product_Input_Location
                                where l.FlowChart_Master_UID == search.FlowChart_Master_UID &&
                                l.Color == search.Color && l.Process == search.Process &&
                                l.Product_Date == search.Product_Date && l.Time_Interval == search.Time_Interval
                                select new ProductLocationItem
                    {
                        Place                  = l.Place,
                        Picking_QTY            = l.Picking_QTY,
                        Good_QTY               = l.Good_QTY,
                        NG_QTY                 = l.NG_QTY,
                        WH_Picking_QTY         = l.WH_Picking_QTY,
                        WH_QTY                 = l.WH_QTY,
                        Adjust_QTY             = l.Adjust_QTY,
                        WIP_QTY                = l.WIP_QTY,
                        Unacommpolished_Reason = l.Unacommpolished_Reason
                    };

                    if (page != null)
                    {
                        query = query.Skip(page.Skip).Take(page.PageSize);
                    }
                    resultList = query.ToList();
                }
                return(resultList);
            }
        }