/// <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); }
/// <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); }