Ejemplo n.º 1
0
        /// <summary>
        /// 组织机构标签(经理部)
        /// </summary>
        /// <param name="request"></param>
        /// <returns></returns>
        public List <OrgLabData> GetOrgLabDataForJLB(HomeRequest request)
        {
            var retData = new List <OrgLabData>();
            //月度计划
            var monthList = GetPlanDataList(request);

            if (!monthList.Any())
            {
                return(retData);
            }
            //供应清单
            var supplyList = GetSupplyData(monthList);
            //分部
            var branchCode = monthList.Select(p => p.BranchCode).Distinct().ToList();
            //工区
            var workAreaCode = monthList.Select(p => p.WorkAreaCode).Distinct().ToList();
            //站点标签
            var sLab = GetOrgLabDataForFactory(request);

            retData.AddRange(sLab);
            var branchLab = new List <OrgLabData>();

            workAreaCode.ForEach(x =>
            {
                var labList  = new List <OrgLab>();
                var blabList = new List <OrgLab>();
                var item     = new OrgLabData()
                {
                    OrgCode = x
                };
                var wdata = GetMonthPlanLab(monthList.Where(p => p.WorkAreaCode == x).ToList());
                bool isw  = false;
                if (wdata.TooFewCount > 0)
                {
                    isw = true;
                    labList.Add(new OrgLab("计划不足!", 0, "blue"));
                }
                else if (wdata.TooMuchCount > 0)
                {
                    isw = true;
                    labList.Add(new OrgLab("计划过多!", 0, "blue"));
                }
                else if (wdata.OverTime > 0)
                {
                    isw = true;
                    labList.Add(new OrgLab("超时未提交!", 0, "blue"));
                }
                if (isw)
                {
                    blabList.Add(new OrgLab("月度计划!", 0, "blue", 1));
                }
                var iszh = retData.Count(p => p.pCode == x);
                if (iszh > 0)
                {
                    labList.Add(new OrgLab("进度滞后!", 0, "red"));
                    blabList.Add(new OrgLab("进度滞后!", 0, "red", 2));
                    item.pCode = wdata.pCode;
                }

                var sdata = CreatSupplyRetData(supplyList.Where(p => p.WorkAreaCode == x).ToList());
                if (sdata.OverTime.Count > 0)
                {
                    labList.Add(new OrgLab("延期供货!", 0, "#FF60AF"));
                    blabList.Add(new OrgLab("材料供应!", 0, "#FF60AF"));
                }
                else if (sdata.OverTimeNoSupply.Count > 0)
                {
                    labList.Add(new OrgLab("超期未供货!", 0, "#FF60AF"));
                    blabList.Add(new OrgLab("材料供应!", 0, "#FF60AF", 3));
                }
                item.LabList = labList;
                item.LeveL   = 4;
                retData.Add(item);
                //查找分部lab
                var bl = branchLab.FirstOrDefault(p => p.OrgCode == wdata.pCode);
                if (bl != null)
                {
                    if (bl.LabList.Count < 3)
                    {
                        blabList.ForEach(j =>
                        {
                            var a = bl.LabList.FirstOrDefault(p => p.Name == j.Name);
                            if (a == null)
                            {
                                bl.LabList.Add(j);
                            }
                        });
                        bl.LabList = bl.LabList.OrderBy(p => p.Order).ToList();
                    }
                }
                else
                {
                    var bitem = new OrgLabData()
                    {
                        OrgCode = wdata.pCode,
                        LeveL   = 3,
                        LabList = blabList
                    };
                    branchLab.Add(bitem);
                }
            });
            retData.AddRange(branchLab);
            return(retData);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 组织机构标签(加工厂)
        /// </summary>
        /// <returns></returns>
        public List <OrgLabData> GetOrgLabDataForFactory(HomeRequest request)
        {
            #region 查询条件

            var where = new Where <TbOrderProgress>();
            ////组织机构
            //if (!string.IsNullOrEmpty(request.CodeList))
            //{
            //    var list = request.CodeList.Split(',').ToList();
            //    if (list.Count < 500)
            //        where.And(p => p.SiteCode.In(list));
            //}
            //组织机构
            if (!string.IsNullOrWhiteSpace(request.SiteCode))
            {
                List <string> siteCodeList = _WorkOrderLogic.GetCompanyWorkAreaOrSiteList(request.SiteCode, 5);
                if (siteCodeList.Count > 0)
                {
                    where.And(p => p.SiteCode.In(siteCodeList));
                }
            }
            if (!string.IsNullOrEmpty(request.ProcessFactoryCode))
            {
                where.And(p => p.ProcessFactoryCode == request.ProcessFactoryCode);
            }

            where.And(new WhereClip("(YEAR(DistributionTime)=" + request.DayMonth.Year + " and MONTH(DistributionTime)=" + request.DayMonth.Month + ") or (DistributionTime<'" + request.DayMonth + "' and (ProcessingState!='Finishing'))"));

            #endregion

            var retData   = new List <OrgLabData>();
            var orderList = Db.Context.From <TbOrderProgress>()
                            .Select(TbOrderProgress._.ProcessingState,
                                    TbOrderProgress._.FinishProcessingDateTime,
                                    TbOrderProgress._.DistributionTime,
                                    TbOrderProgress._.SiteCode,
                                    TbCompany._.ParentCompanyCode)
                            .LeftJoin <TbCompany>((a, c) => a.SiteCode == c.CompanyCode)
                            .Where(where).ToList();
            if (!orderList.Any())
            {
                return(retData);
            }
            //订单,未完成,滞后
            var orgList = orderList.Select(p => p.SiteCode).Distinct().ToList();
            orgList.ForEach(x =>
            {
                var oList   = orderList.Where(p => p.SiteCode == x).ToList();
                var labList = new List <OrgLab>();
                labList.Add(new OrgLab("订单", oList.Count, "blue"));
                labList.Add(new OrgLab("未完成", oList.Count(p => p.ProcessingState != "Finishing"), "#FFB90F"));
                var zh = oList.Count(p => p.ProcessingState != "Finishing" && ((p.FinishProcessingDateTime != null && p.DistributionTime < p.FinishProcessingDateTime) ||
                                                                               (p.FinishProcessingDateTime == null && p.DistributionTime < DateTime.Now.Date)));
                labList.Add(new OrgLab("滞后", zh, "red"));
                var item = new OrgLabData()
                {
                    OrgCode = x,
                    LeveL   = 5,
                    LabList = labList
                };
                if (zh > 0)
                {
                    item.pCode = oList[0].ParentCompanyCode;
                }
                retData.Add(item);
            });
            return(retData);
        }