public List <List <C_Company> > GetCompanyLists(string SysID) { List <List <C_Company> > NewCompanyList = new List <List <C_Company> >(); IList <C_Target> TargetList = C_TargetOperator.Instance.GetTargetList(Guid.Parse(SysID), DateTime.Now).ToList(); foreach (C_Target item in TargetList) { if (item.HaveDetail == true) { NewCompanyList.Add(C_CompanyOperator.Instance.GetCompanyTargetList(item.ID, item.SystemID)); } else { List <XElement> listHaveNotDetailCompany = item.Configuration.Elements("HavenotDetail").Elements("Company").ToList(); List <C_Company> listCom = new List <C_Company>(); foreach (XElement xml in listHaveNotDetailCompany) { C_Company TempCompany = StaticResource.Instance.GetCompanyModel(xml.GetAttributeValue("CompanyID", "").ToGuid()); if (TempCompany != null) { listCom.Add(TempCompany); } } NewCompanyList.Add(listCom); } } return(NewCompanyList); }
public int GetCompanyExceptionTarget(C_Company company) { DateTime CurrentDate = DateTime.Now; C_System SysModel = StaticResource.Instance[company.SystemID, CurrentDate]; int result = 0; //代表是在项目系统里 if (SysModel.Category == 2) { if (company.CompanyProperty1 == "尾盘") { result = 1; } else { result = 0; } } else { //上报不考核 if (company.CompanyProperty1 == "筹备门店") { result = 1; } else { result = 0; } } return(result); }
public DictionaryVmodel(string Names, object Values, C_Company Company, string Marks) { this.Name = Names; this.ObjValue = Values; this._Company = Company; this.Mark = Marks; }
/// <summary> /// 获取公司 /// </summary> /// <param name="CompanyID"></param> /// <returns></returns> public C_Company GetCompanyModel(Guid CompanyID) { C_Company _Model = ALLCompanyList.Where(X => X.ID == CompanyID).First(); // C_Company _Model = C_CompanyOperator.Instance.GetCompany(CompanyID); if (_Model != null || !string.IsNullOrEmpty(_Model.CompanyName)) { return(_Model); } return(null); }
Guid SysDescriptionID = WebConfigurationManager.AppSettings["MonthDescription"].ToGuid();//百货系统ID /// <summary> /// 新的方法 /// </summary> /// <param name="c"></param> /// <param name="LastMonthReportDetails"></param> /// <param name="CurrentMonthReportDetails"></param> /// <param name="itemt"></param> /// <param name="IsCurrentMonth"></param> /// <returns></returns> public MonthlyReportDetail GetMonthlyReportDetail(C_Company c, List <MonthlyReportDetail> LastMonthReportDetails, List <MonthlyReportDetail> CurrentMonthReportDetails, C_Target itemt, bool IsCurrentMonth) { MonthlyReportDetail ReportDetailModel = new MonthlyReportDetail(); if (IsCurrentMonth) { ReportDetailModel = CurrentMonthReportDetails.SingleOrDefault(t => t.TargetID == itemt.ID && t.CompanyID == c.ID); } else { ReportDetailModel = LastMonthReportDetails.SingleOrDefault(t => t.TargetID == itemt.ID && t.CompanyID == c.ID); } return(ReportDetailModel); }
/// <summary> /// 项目公司的指标 /// </summary> /// <param name="companyModel"></param> /// <param name="_isPlan">是获取计划指标分解表</param> /// <param name="_ReportDetail">明细数据</param> /// <param name="_TargetPlanList">指标分解表</param> /// <returns></returns> private List <V_ProjectTarget> ProTargetLists(C_Company companyModel, string _isPlan, List <MonthlyReportDetail> _ReportDetail, List <A_TargetPlanDetail> _TargetPlanList) { List <V_ProjectTarget> _ProTargetLists = new List <V_ProjectTarget>(); List <C_Target> targetList = StaticResource.Instance.TargetList[_SystemID].ToList(); //获取当前的系统指标 List <A_TargetPlanDetail> TargetPlanListByYear = StaticResource.Instance.GetTargetPlanList(_System.ID, FinYear); //循环指标 if (_isPlan == "ProPlan") //计划指标分解表 { foreach (C_Target itemTarget in targetList.OrderBy(o => o.Sequence)) { V_ProjectTarget VModel = new V_ProjectTarget(); A_TargetPlanDetail targetModel = null; if (_TargetPlanList.Count > 0) { targetModel = _TargetPlanList.Find(f => f.TargetID == itemTarget.ID); } else { continue; } if (targetModel != null && targetModel.ID != Guid.Empty) { VModel.ProTargetID = itemTarget.ID; VModel.ProTargetName = itemTarget.TargetName; VModel.ProTargetSequence = itemTarget.Sequence; VModel.ProCompayID = companyModel.ID; VModel.IsMissTarget = false; VModel.IsMissTargetCurrent = false; VModel.Counter = 0; VModel.NPlanAmmount = targetModel.Target; VModel.NActualAmmount = 0; VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? VModel.NAccumulativeActualAmmount = 0; _ProTargetLists.Add(VModel); } } } else //上报过,在明细表中了 { foreach (C_Target itemTarget in targetList.OrderBy(o => o.Sequence)) { V_ProjectTarget VModel = new V_ProjectTarget(); MonthlyReportDetail tempModel = null; if (_ReportDetail.Count > 0) { tempModel = _ReportDetail.Find(f => f.TargetID == itemTarget.ID); } else { continue; } if (tempModel != null && tempModel.ID != Guid.Empty) { VModel.ProMonthlyReportDetailID = tempModel.ID; VModel.ProTargetID = itemTarget.ID; VModel.ProTargetName = tempModel.TargetName; VModel.ProTargetSequence = itemTarget.Sequence; VModel.ProCompayID = companyModel.ID; VModel.IsMissTarget = tempModel.IsMissTarget; VModel.IsMissTargetCurrent = tempModel.IsMissTargetCurrent; VModel.Counter = tempModel.Counter; VModel.FirstMissTargetDate = tempModel.FirstMissTargetDate; VModel.NPlanAmmount = tempModel.NPlanAmmount; VModel.NActualAmmount = tempModel.NActualAmmount; VModel.NActualRate = tempModel.NActualRate; VModel.NDisplayRate = tempModel.NDisplayRate; VModel.NAccumulativePlanAmmount = tempModel.NAccumulativePlanAmmount; VModel.NAccumulativeActualAmmount = tempModel.NAccumulativeActualAmmount; VModel.NAccumulativeActualRate = tempModel.NAccumulativeActualRate; VModel.NAccumulativeDisplayRate = tempModel.NAccumulativeDisplayRate; VModel.NActualAmmountByYear = 0; //年度计划值 VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); if (VModel.NPlanAmmountByYear != 0) { VModel.NDisplayRateByYear = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NPlanAmmountByYear), 5, MidpointRounding.AwayFromZero).ToString("P1"); } else { VModel.NPlanAmmountByYear = 0; VModel.NDisplayRateByYear = "/"; } VModel.NActualRateByYear = ""; _ProTargetLists.Add(VModel); } } } return(_ProTargetLists); }
public List <Guid> SaveExceptionReplace(string IDlist, string Type, string SelectType, string TargetID) { List <Guid> result = new List <Guid>(); string[] arr = IDlist.Split('|'); if (Type == "C") //数据本身是不存在于异常表中 { if (SelectType == "A") //在异常表中添加数据,类型给1 { for (int i = 0; i < arr.Length; i++) { C_Company Company = C_CompanyOperator.Instance.GetCompany(Guid.Parse(arr[i])); C_ExceptionTarget model = new C_ExceptionTarget(); model.CompanyID = Company.ID; model.TargetID = Guid.Parse(TargetID); model.ExceptionType = (int)ExceptionTargetType.HaveDeTailNONeedEvaluation; Guid ID = C_ExceptiontargetOperator.Instance.AddExceptiontarget(model); result.Add(ID); } } else { for (int i = 0; i < arr.Length; i++) { C_Company Company = C_CompanyOperator.Instance.GetCompany(Guid.Parse(arr[i])); C_ExceptionTarget model = new C_ExceptionTarget(); model.CompanyID = Company.ID; model.TargetID = Guid.Parse(TargetID); model.ExceptionType = (int)ExceptionTargetType.HaveDetailNONeedReport; Guid ID = C_ExceptiontargetOperator.Instance.AddExceptiontarget(model); result.Add(ID); } } } else//数据本身存在于异常表中 { if (SelectType == "C")//用户选择了上报审批,即从异常表中删除 { for (int i = 0; i < arr.Length; i++) { //取到异常数据 //C_ExceptionTarget model = C_ExceptiontargetOperator.Instance.GetExceptiontarget(Guid.Parse(arr[i])); //取到该公司数据 加版本暂时不用 //C_Company Commodel = C_CompanyOperator.Instance.GetCompany(model.CompanyID); //C_CompanyOperator.Instance.RemoveCompany(model.CompanyID); //C_Company NewModel = Commodel; //NewModel.VersionStart = DateTime.Now; //NewModel.VersionEnd = Commodel.VersionStart; //C_CompanyOperator.Instance.AddCompany(NewModel); Guid ID = C_ExceptiontargetOperator.Instance.RemoveExceptiontarget(Guid.Parse(arr[i])); result.Add(ID); } } else { if (SelectType == "B") { for (int i = 0; i < arr.Length; i++) { C_ExceptionTarget model = C_ExceptiontargetOperator.Instance.GetExceptiontarget(Guid.Parse(arr[i])); model.ExceptionType = EnumHelper.GetEnumValue(typeof(ExceptionTargetType), "不上报不考核"); Guid ID = C_ExceptiontargetOperator.Instance.UpdateExceptiontarget(model); result.Add(ID); } } else { for (int i = 0; i < arr.Length; i++) { C_ExceptionTarget model = C_ExceptiontargetOperator.Instance.GetExceptiontarget(Guid.Parse(arr[i])); model.ExceptionType = EnumHelper.GetEnumValue(typeof(ExceptionTargetType), "上报不考核"); Guid ID = C_ExceptiontargetOperator.Instance.UpdateExceptiontarget(model); result.Add(ID); } } } } return(result); }
public int UpdateCompany(string info, string TargetIDList, string SelTargetIDList) { int result = 0; C_Company detail = JsonHelper.Deserialize <C_Company>(info); //取出该公司异常type=1的指标名称 List <ExceptionTargetVModel> list = C_ExceptiontargetOperator.Instance.GetExctargetListByComList(detail.ID).ToList(); C_CompanyOperator.Instance.UpdateCompany(detail); if (TargetIDList != null) { //取出页面传来的所有没有勾中的指标 string[] arr = TargetIDList.Split('|'); //获取页面选中的指标 string[] selArr = SelTargetIDList.Split('|'); //位选中的值中循环 for (int i = 0; i < arr.Length; i++) { //循环所有传过来的ID int arrl = 0; for (int j = 0; j < list.Count; j++) { if (arr[i] == list[j].TargetID.ToString()) { arrl++; } } if (arrl == 0) { //若arrl==0,说明该指标在原本的异常表里不存在,添加操作 C_ExceptionTarget model = new C_ExceptionTarget(); model.CompanyID = detail.ID; model.TargetID = Guid.Parse(arr[i]); model.ExceptionType = 2; C_ExceptiontargetOperator.Instance.AddExceptiontarget(model); } } //选中值里循环异常表的数据 for (int i = 0; i < list.Count; i++) { //int arrl = 0; for (int j = 0; j < selArr.Length; j++) { if (list[i].TargetID.ToString() != selArr[j]) { #region 对于存在异常指标里的数据 int flag = CompanyExceptionTargetEngine.CompanyExceptionTargetEngineService.GetCompanyExceptionTarget(detail); if (flag == 1) //flag: 0 的时候表示正常的数据,不用像异常表里添加数据, 而 flag: 1的时候需要像异常表中添加数据 { C_ExceptionTarget newModel = new C_ExceptionTarget(); newModel.CompanyID = detail.ID; newModel.TargetID = Guid.Parse(selArr[j]); newModel.ExceptionType = (int)ExceptionTargetType.HaveDeTailNONeedEvaluation;; C_ExceptiontargetOperator.Instance.AddExceptiontarget(newModel); } else if (flag == 0) { List <C_ExceptionTarget> ExcList = C_ExceptiontargetOperator.Instance.GetExceptiontargetList(detail.ID, selArr[j].ToGuid()).ToList(); if (ExcList != null && ExcList.Count() > 0) { ExcList.ForEach(p => { p.IsDeleted = true; C_ExceptiontargetOperator.Instance.UpdateExceptiontarget(p); }); } } #endregion } } } } else { //若TargetIDList为空 说明页面全部勾中 //获取页面选中的指标 string[] selArr = SelTargetIDList.Split('|'); for (int j = 0; j < selArr.Length; j++) { #region 对于存在异常指标里的数据 int flag = CompanyExceptionTargetEngine.CompanyExceptionTargetEngineService.GetCompanyExceptionTarget(detail); if (flag == 1) //flag: 0 的时候表示正常的数据,不用像异常表里添加数据, 而 flag: 1的时候需要像异常表中添加数据 { C_ExceptionTarget newModel = new C_ExceptionTarget(); newModel.CompanyID = detail.ID; newModel.TargetID = Guid.Parse(selArr[j]); newModel.ExceptionType = (int)ExceptionTargetType.HaveDeTailNONeedEvaluation;; C_ExceptiontargetOperator.Instance.AddExceptiontarget(newModel); } else if (flag == 0) { List <C_ExceptionTarget> ExcList = C_ExceptiontargetOperator.Instance.GetExceptiontargetList(detail.ID, selArr[j].ToGuid()).ToList(); if (ExcList != null && ExcList.Count() > 0) { ExcList.ForEach(p => { p.IsDeleted = true; C_ExceptiontargetOperator.Instance.UpdateExceptiontarget(p); }); } } #endregion } } return(result); }
public int AddCompany(string info, string SysID, string SelTargetIDList) { int a = 0; string[] brr; C_System model = new C_System(); model = StaticResource.Instance[Guid.Parse(SysID), DateTime.Now]; List <string> TargetList = new List <string>(); C_Company detail = new C_Company(); string[] arr = info.Split('|'); for (int i = 0; i < arr.Length; i++) { brr = arr[i].Split(':'); #region//解析info if (brr[0] == "CompanyProperty1") { detail.CompanyProperty1 = brr[1]; } else if (brr[0] == "CompanyProperty2") { detail.CompanyProperty2 = brr[1]; } else if (brr[0] == "CompanyProperty3") { detail.CompanyProperty3 = brr[1]; } else if (brr[0] == "CompanyProperty4") { detail.CompanyProperty4 = brr[1]; } else if (brr[0] == "CompanyProperty5") { detail.CompanyProperty5 = brr[1]; } else if (brr[0] == "CompanyProperty6") { detail.CompanyProperty6 = brr[1]; } else if (brr[0] == "CompanyProperty7") { detail.CompanyProperty7 = brr[1]; } else if (brr[0] == "CompanyProperty8") { detail.CompanyProperty8 = brr[1]; } else if (brr[0] == "CompanyProperty9") { detail.CompanyProperty9 = brr[1]; } else if (brr[0] == "Sequence") { detail.Sequence = int.Parse(brr[1]); } else if (brr[0] == "CompanyName") { detail.CompanyName = brr[1]; } else if (brr[0] == "SystemID") { detail.SystemID = Guid.Parse(brr[1]); } else if (brr[0] == "OpeningTime") { detail.OpeningTime = DateTime.Parse(brr[1]); } else if (brr[0] == "ExTargetList") { if (brr[1] != "") { TargetList = new List <string>(brr[1].Split(',')); } } #endregion } Guid Id = C_CompanyOperator.Instance.AddCompany(detail); #region 对筹备门店和尾盘做处理操作 if (SelTargetIDList != null) { string[] selArr = SelTargetIDList.Split('|'); //选中的指标 for (int j = 0; j < selArr.Length; j++) { int flag = CompanyExceptionTargetEngine.CompanyExceptionTargetEngineService.GetCompanyExceptionTarget(detail); if (flag == 1) //flag: 0 的时候表示正常的数据,不用像异常表里添加数据, 而 flag: 1的时候需要像异常表中添加数据 { C_ExceptionTarget newModel = new C_ExceptionTarget(); newModel.CompanyID = Id; newModel.TargetID = Guid.Parse(selArr[j]); newModel.ExceptionType = (int)ExceptionTargetType.HaveDeTailNONeedEvaluation;; C_ExceptiontargetOperator.Instance.AddExceptiontarget(newModel); } } } #endregion if (TargetList.Count > 0) { C_ExceptiontargetOperator.Instance.AddExceptiontargetList(TargetList, Id); } return(a); }
public int GetCompanyExceptionTarget(C_Company Model) { string InterfaceName = "*"; return(this[InterfaceName].GetCompanyExceptionTarget(Model)); }
public List <DictionaryVmodel> GetTargetPlanDetail(Guid SystemID, int FinYear, Guid TargetPlanID, bool IsLatestVersion) { List <DictionaryVmodel> lstDictionaryVmodel = new List <DictionaryVmodel>(); List <C_Company> listCompany = StaticResource.Instance.CompanyList[SystemID]; List <C_Target> lstTarget = StaticResource.Instance.GetTargetList(SystemID, DateTime.Now).ToList(); C_System _cSystem = StaticResource.Instance[SystemID, DateTime.Now]; object listBTargetPlanDetail = FormatData(SystemID, FinYear, TargetPlanID, IsLatestVersion); List <DictionaryVmodel> lstCompanyVmodel; foreach (C_Target _cTarget in lstTarget.OrderBy(p => p.Sequence)) { lstCompanyVmodel = new List <DictionaryVmodel>(); if (_cTarget.HaveDetail == true) { foreach (C_Company company in listCompany) { if (ExceptionTargetEvaluationEngine.ExceptionTargetEvaluationService.Calculation(SystemID, _cTarget.ID, company.ID, "")) { continue; } else { if (listBTargetPlanDetail != null) { if (listBTargetPlanDetail is List <B_TargetPlanDetail> ) { List <B_TargetPlanDetail> list = ((List <B_TargetPlanDetail>)listBTargetPlanDetail).Where(p => p.TargetID == _cTarget.ID && p.CompanyID == company.ID).OrderBy(p => p.FinMonth).ToList(); lstCompanyVmodel.Add(new DictionaryVmodel(company.CompanyName, list, company, list.Sum(p => p.Target).ToString())); } else { List <A_TargetPlanDetail> list = ((List <A_TargetPlanDetail>)listBTargetPlanDetail).Where(p => p.TargetID == _cTarget.ID && p.CompanyID == company.ID).OrderBy(p => p.FinMonth).ToList(); lstCompanyVmodel.Add(new DictionaryVmodel(company.CompanyName, list, company, list.Sum(p => p.Target).ToString())); } } else { lstCompanyVmodel.Add(new DictionaryVmodel(company.CompanyName, null, company, "0")); } } } } else { List <XElement> listHaveNotDetailCompany = _cTarget.Configuration.Elements("HavenotDetail").Elements("Company").ToList(); List <C_Company> listCom = new List <C_Company>(); foreach (XElement xml in listHaveNotDetailCompany) { C_Company TempCompany = StaticResource.Instance.GetCompanyModel(xml.GetAttributeValue("CompanyID", "").ToGuid()); if (TempCompany != null) { listCom.Add(TempCompany); } } if (listHaveNotDetailCompany.Count() > 0) { if (ConfigurationManager.AppSettings["HavenotDetailTargetCompanyName"] != null) { } } if (listCom.Count() > 0) { foreach (C_Company company in listCom) { if (listBTargetPlanDetail != null) { if (listBTargetPlanDetail is List <B_TargetPlanDetail> ) { List <B_TargetPlanDetail> list = ((List <B_TargetPlanDetail>)listBTargetPlanDetail).Where(p => p.TargetID == _cTarget.ID && p.CompanyID == company.ID).OrderBy(p => p.FinMonth).ToList(); lstCompanyVmodel.Add(new DictionaryVmodel(company.CompanyName, list, company, list.Sum(p => p.Target).ToString())); } else { List <A_TargetPlanDetail> list = ((List <A_TargetPlanDetail>)listBTargetPlanDetail).Where(p => p.TargetID == _cTarget.ID && p.CompanyID == company.ID).OrderBy(p => p.FinMonth).ToList(); lstCompanyVmodel.Add(new DictionaryVmodel(company.CompanyName, list, company, list.Sum(p => p.Target).ToString())); } } else { lstCompanyVmodel.Add(new DictionaryVmodel(company.CompanyName, null, company, "0")); } } } } string strTmpl = string.Empty; if (_cTarget.Configuration.Elements("TargetPlanDetailReported").Elements("TableTemplate").ToList().Count > 0) { strTmpl = GetTargetPlanDetailReportedTemplate(_cTarget.Configuration); } else { strTmpl = GetTargetPlanDetailReportedTemplate(_cSystem.Configuration); } lstDictionaryVmodel.Add(new DictionaryVmodel(_cTarget.TargetName, lstCompanyVmodel, "", strTmpl)); } return(lstDictionaryVmodel); }
public static MonthlyReportDetail ToVModel(this A_MonthlyReportDetail value) { //这是为了前台显示,美观强制去掉“\n” string tempMIssTargetReason = value.MIssTargetReason.TrimStart('\n').TrimStart('\r').TrimEnd('\n').TrimEnd('\r'); if (string.IsNullOrEmpty(tempMIssTargetReason)) { tempMIssTargetReason = ""; } else { tempMIssTargetReason = "\n" + tempMIssTargetReason; } string tempMIssTargetDescription = value.MIssTargetDescription.TrimStart('\n').TrimStart('\r').TrimEnd('\n').TrimEnd('\r'); if (string.IsNullOrEmpty(tempMIssTargetDescription)) { tempMIssTargetDescription = ""; } else { tempMIssTargetDescription = "\n" + tempMIssTargetDescription; } string tempCurrentMIssTargetReason = value.CurrentMIssTargetReason.TrimStart('\n').TrimStart('\r').TrimEnd('\n').TrimEnd('\r'); if (string.IsNullOrEmpty(tempCurrentMIssTargetReason)) { tempCurrentMIssTargetReason = ""; } else { tempCurrentMIssTargetReason = "\n" + tempCurrentMIssTargetReason; } string tempCurrentMIssTargetDescription = value.CurrentMIssTargetDescription.TrimStart('\n').TrimStart('\r').TrimEnd('\n').TrimEnd('\r'); if (string.IsNullOrEmpty(tempCurrentMIssTargetDescription)) { tempCurrentMIssTargetDescription = ""; } else { tempCurrentMIssTargetDescription = "\n" + tempCurrentMIssTargetDescription; } string tempReturnDescription = value.ReturnDescription.TrimStart('\n').TrimStart('\r').TrimEnd('\n').TrimEnd('\r'); if (string.IsNullOrEmpty(tempReturnDescription)) { tempReturnDescription = ""; } string tempCommitReason = value.CommitReason.TrimStart('\n').TrimStart('\r').TrimEnd('\n').TrimEnd('\r'); if (string.IsNullOrEmpty(tempCommitReason)) { tempCommitReason = ""; } string strSystemName = string.Empty; C_System _cSystem = StaticResource.Instance[value.SystemID, DateTime.Now]; if (_cSystem != null) { strSystemName = _cSystem.SystemName; } string strCompanyName = string.Empty; C_Company _cCompany = StaticResource.Instance.GetCompanyModel(value.CompanyID); if (_cCompany != null) { strCompanyName = _cCompany.CompanyName; } string strTargetName = string.Empty; C_Target _cTarget = StaticResource.Instance.TargetList[value.SystemID].Where(p => p.ID == value.TargetID).FirstOrDefault(); if (_cTarget != null) { strTargetName = _cTarget.TargetName; } MonthlyReportDetail result = new MonthlyReportDetail { ID = value.ID, SystemID = value.SystemID, IsDeleted = value.IsDeleted, FinMonth = value.FinMonth, FinYear = value.FinYear, CreateTime = value.CreateTime, CreatorName = value.CreatorName, ModifierName = value.ModifierName, ModifyTime = value.ModifyTime, TargetID = value.TargetID, CompanyID = value.CompanyID, TargetPlanID = value.TargetPlanID, OPlanAmmount = value.OPlanAmmount, OActualAmmount = value.OActualAmmount, OActualRate = value.OActualRate, ODisplayRate = value.ODisplayRate, NPlanAmmount = value.NPlanAmmount, NActualAmmount = value.NActualAmmount, NActualRate = value.NActualRate, NDisplayRate = value.NDisplayRate, OAccumulativePlanAmmount = value.OAccumulativePlanAmmount, OAccumulativeActualAmmount = value.OAccumulativeActualAmmount, OAccumulativeActualRate = value.OAccumulativeActualRate, OAcccumulativeDisplayRate = value.OAcccumulativeDisplayRate, NAccumulativePlanAmmount = value.NAccumulativePlanAmmount, NAccumulativeActualAmmount = value.NAccumulativeActualAmmount, NAccumulativeActualRate = value.NAccumulativeActualRate, NAccumulativeDisplayRate = value.NAccumulativeDisplayRate, IsMissTarget = value.IsMissTarget, IsMissTargetCurrent = value.IsMissTargetCurrent, Counter = value.Counter, FirstMissTargetDate = value.FirstMissTargetDate, PromissDate = value.PromissDate, CommitDate = value.CommitDate, MIssTargetReason = tempMIssTargetReason, MIssTargetDescription = tempMIssTargetDescription, CurrentMIssTargetDescription = tempCurrentMIssTargetDescription, CurrentMIssTargetReason = tempCurrentMIssTargetReason, ReturnType = value.ReturnType, NAccumulativeDifference = value.NAccumulativeDifference, NDifference = value.NDifference, OAccumulativeDifference = value.OAccumulativeDifference, ODifference = value.ODifference, Title = value.Title, GroupTile = value.GroupTile, MonthlyReportID = value.MonthlyReportID, MeasureRate = value.MeasureRate, ReturnDescription = tempReturnDescription, SystemName = strSystemName, Company = _cCompany, CompanyName = strCompanyName, TargetName = strTargetName, Display = value.Display, CompanyProperty1 = value.CompanyProperty1, IsCommitDate = value.IsCommitDate, CommitReason = tempCommitReason, IsDelayComplete = value.IsDelayComplete, CurrentMonthCommitDate = value.CurrentMonthCommitDate, CurrentMonthCommitReason = value.CurrentMonthCommitReason, ReturnType_Sub = value.ReturnType_Sub, NewCounter = value.NewCounter, CompanyProperty = value.CompanyProperty }; return(result); }
/// <summary> /// 获取累计指标汇总数据(移动端) /// </summary> /// <param name="FinYear"></param> /// <param name="SystemID"></param> /// <returns></returns> public List <TargetDetail> GetSumMonthTargetDetail(int FinYear, Guid SystemID, B_TargetPlan Tp) { List <TargetDetail> result = new List <TargetDetail>(); DateTime t = DateTime.Now; t = Tp.CreateTime; C_System Sys = StaticResource.Instance[SystemID, t]; for (int Month = 1; Month <= 12; Month++) { TargetDetail model = new TargetDetail(); List <TargetDetailList> TargetDetailList = new List <TargetDetailList>(); model.FinMonth = Month; DataTable ds = new DataTable(); if (Sys.Category != 2) { ds = _bTargetplandetailAdapter.GetSumMonthTargetDetailJY(FinYear, Month, SystemID, Tp.ID, t); } else { C_Company com = C_CompanyOperator.Instance.ProCompanyAll(SystemID); ds = _bTargetplandetailAdapter.GetSumMonthTargetDetailPro(FinYear, Month, com.ID, Tp.ID, t); } if (ds != null && ds.Rows.Count > 0) { for (int i = 0; i < ds.Rows.Count; i++) { TargetDetailList view = new TargetDetailList() { Target = 0, SumTarget = 0 }; view.TargetName = ds.Rows[i]["TargetName"].ToString(); view.TargetID = ds.Rows[i]["TargetID"].ToString().ToGuid(); if (!string.IsNullOrEmpty(ds.Rows[i]["target"].ToString())) { view.Target = decimal.Parse(ds.Rows[i]["target"].ToString()); } if (!string.IsNullOrEmpty(ds.Rows[i]["SumTarget"].ToString())) { view.SumTarget = decimal.Parse(ds.Rows[i]["SumTarget"].ToString()); } TargetDetailList.Add(view); } } else { List <C_Target> TargetList = C_TargetOperator.Instance.GetTargetList(SystemID, DateTime.Now).ToList(); foreach (C_Target item in TargetList) { TargetDetailList view = new TargetDetailList() { Target = null, SumTarget = null }; view.TargetName = item.TargetName; view.TargetID = item.ID; TargetDetailList.Add(view); } } model.TargetDetailList = TargetDetailList; result.Add(model); } return(result); }
public void UpLoadExcel(out string error, HttpContext context, string filePathName) { string templetePath = filePathName; error = "保存成功"; ExcelEngine excel = new ExcelEngine(); Workbook book = new Workbook(templetePath); CompanyList = C_CompanyOperator.Instance.GetCompanyList(SysId).ToList(); //获取该系统中公司的所有属性 List <XElement> xelement = C_SystemOperator.Instance.GetSystem(SysId).Configuration.Elements("ListCompanyProperty").Elements("CompanyProperty").ToList(); if (xelement.Count > 0) { foreach (XElement item in xelement) { string ColumnName = (string)item.Attribute("ColumnName"); if (ColumnName == "CompanyProperty1") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty1.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty2") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty2.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty3") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty3.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty4") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty4.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty5") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty5.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty6") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty6.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty7") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty7.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty8") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty8.Add((string)itom.Attribute("ItemPropertyValue")); } } else if (ColumnName == "CompanyProperty9") { List <XElement> CompanyPropertyList = item.Elements("ItemProperty").ToList(); foreach (XElement itom in CompanyPropertyList) { CompanyProperty9.Add((string)itom.Attribute("ItemPropertyValue")); } } } } int count = book.Worksheets.Count; for (int i = 0; i < count; i++) { if (excel.GetStringCustomProperty(book.Worksheets[i], "SystemID") != SysId.ToString()) { error = "请上传当前系统的公司列表!"; return; } Worksheet workSheet = book.Worksheets[i]; Cells cells = workSheet.Cells; if (cells.MaxDataRow - 2 > 0 && cells.MaxDataColumn == 14) { DataTable dt = cells.ExportDataTableAsString(3, 1, cells.MaxDataRow - 2, cells.MaxDataColumn); { foreach (DataRow item in dt.Rows) { if (item[13].ToString() != "" && item[13].ToString() != null) { CompanyModel = C_CompanyOperator.Instance.GetCompany(item[13].ToString().ToGuid()); try//获取时间 { if (item[11].ToString().Replace(" ", "") == "--" || item[11].ToString().Replace(" ", "") == "") { CompanyModel.OpeningTime = DateTime.MinValue; } else { DateTime time = DateTime.Parse(item[11].ToString().Replace(" ", "")); CompanyModel.OpeningTime = time; } } catch (Exception) { error = CompanyModel.CompanyName + "的开店时间格式填写错误!"; return; } if (item[1].ToString().Replace(" ", "") == null || item[1].ToString().Replace(" ", "") == "") { error = "公司名称不能为空!"; return; } else { CompanyModel.CompanyName = item[1].ToString().Replace(" ", ""); } if (CompanyProperty1.Count == 0) { CompanyModel.CompanyProperty1 = null; } else { if (item[2].ToString().Replace(" ", "") != null && item[2].ToString().Replace(" ", "") != "") { if (SystemModel.Category != 2) { if (CompanyProperty1.Contains(item[2].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty1 = item[2].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { if (item[2].ToString().Replace(" ", "") == "尾盘") { CompanyModel.CompanyProperty1 = "尾盘"; } else { CompanyModel.CompanyProperty1 = null; } } } else { CompanyModel.CompanyProperty1 = null; } } //CompanyProperty2 if (SystemModel.Category != 2) { if (CompanyProperty2.Count == 0) { CompanyModel.CompanyProperty2 = null; } else { if (item[3].ToString().Replace(" ", "") != null && item[3].ToString().Replace(" ", "") != "") { if (CompanyProperty2.Contains(item[3].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty2 = item[3].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty2 = null; } } } else { if (item[3].ToString().Replace(" ", "") != null && item[3].ToString().Replace(" ", "") != "") { CompanyModel.CompanyProperty2 = item[3].ToString().Replace(" ", ""); } else { CompanyModel.CompanyProperty2 = null; } } //CompanyProperty3 if (CompanyProperty3.Count == 0) { CompanyModel.CompanyProperty3 = null; } else { if (item[4].ToString().Replace(" ", "") != null && item[4].ToString().Replace(" ", "") != "") { if (CompanyProperty3.Contains(item[4].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty3 = item[4].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty3 = null; } } //CompanyProperty4 if (CompanyProperty4.Count == 0) { CompanyModel.CompanyProperty4 = null; } else { if (item[5].ToString().Replace(" ", "") != null && item[5].ToString().Replace(" ", "") != "") { if (CompanyProperty4.Contains(item[5].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty4 = item[5].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty4 = null; } } //CompanyProperty5 if (CompanyProperty5.Count == 0) { CompanyModel.CompanyProperty5 = null; } else { if (item[6].ToString().Replace(" ", "") != null && item[6].ToString().Replace(" ", "") != "") { if (CompanyProperty5.Contains(item[6].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty5 = item[6].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty5 = null; } } //CompanyProperty6 if (CompanyProperty6.Count == 0) { CompanyModel.CompanyProperty6 = null; } else { if (item[7].ToString().Replace(" ", "") != null && item[7].ToString().Replace(" ", "") != "") { if (CompanyProperty6.Contains(item[7].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty6 = item[7].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty6 = null; } } //CompanyProperty7 if (CompanyProperty7.Count == 0) { CompanyModel.CompanyProperty7 = null; } else { if (item[8].ToString().Replace(" ", "") != null && item[8].ToString().Replace(" ", "") != "") { if (CompanyProperty7.Contains(item[8].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty7 = item[8].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty7 = null; } } //CompanyProperty8 if (CompanyProperty8.Count == 0) { CompanyModel.CompanyProperty8 = null; } else { if (item[9].ToString().Replace(" ", "") != null && item[9].ToString().Replace(" ", "") != "") { if (CompanyProperty8.Contains(item[9].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty8 = item[9].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty8 = null; } } //CompanyProperty9 if (CompanyProperty9.Count == 0) { CompanyModel.CompanyProperty9 = null; } else { if (item[10].ToString().Replace(" ", "") != null && item[10].ToString().Replace(" ", "") != "") { if (CompanyProperty9.Contains(item[10].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty9 = item[10].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty9 = null; } } if (item[12].ToString().Replace(" ", "") == null || item[12].ToString().Replace(" ", "") == "") { error = CompanyModel.CompanyName + "的排序值不能为空!"; } else { CompanyModel.Sequence = int.Parse(item[12].ToString().Replace(" ", "")); } CompanyList.Add(CompanyModel); } else { CompanyModel = new C_Company(); CompanyModel.SystemID = SysId; try//获取时间 { if (item[11].ToString().Replace(" ", "") == "--" || item[11].ToString().Replace(" ", "") == "") { CompanyModel.OpeningTime = DateTime.MinValue; } else { DateTime time = DateTime.Parse(item[11].ToString().Replace(" ", "")); CompanyModel.OpeningTime = time; } ; } catch (Exception) { error = CompanyModel.CompanyName + "的开店时间格式填写错误!"; return; } if (item[1].ToString().Replace(" ", "") == null || item[1].ToString().Replace(" ", "") == "") { error = "公司名称不能为空!"; return; } else { CompanyModel.CompanyName = item[1].ToString().Replace(" ", ""); } //CompanyProperty1 if (CompanyProperty1.Count == 0) { CompanyModel.CompanyProperty1 = null; } else { if (item[2].ToString().Replace(" ", "") != null && item[2].ToString().Replace(" ", "") != "") { if (SystemModel.Category != 2) { if (CompanyProperty1.Contains(item[2].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty1 = item[2].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { if (item[2].ToString().Replace(" ", "") == "尾盘") { CompanyModel.CompanyProperty1 = "尾盘"; } else { CompanyModel.CompanyProperty1 = null; } } } else { CompanyModel.CompanyProperty1 = null; } } //CompanyProperty2 if (SystemModel.Category != 2) { if (CompanyProperty2.Count == 0) { CompanyModel.CompanyProperty2 = null; } else { if (item[3].ToString().Replace(" ", "") != null && item[3].ToString().Replace(" ", "") != "") { if (CompanyProperty2.Contains(item[3].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty2 = item[3].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty2 = null; } } } else { if (item[3].ToString().Replace(" ", "") != null && item[3].ToString().Replace(" ", "") != "") { CompanyModel.CompanyProperty2 = item[3].ToString().Replace(" ", ""); } else { CompanyModel.CompanyProperty2 = null; } } //CompanyProperty3 if (CompanyProperty3.Count == 0) { CompanyModel.CompanyProperty3 = null; } else { if (item[4].ToString().Replace(" ", "") != null && item[4].ToString().Replace(" ", "") != "") { if (CompanyProperty3.Contains(item[4].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty3 = item[4].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty3 = null; } } //CompanyProperty4 if (CompanyProperty4.Count == 0) { CompanyModel.CompanyProperty4 = null; } else { if (item[5].ToString().Replace(" ", "") != null && item[5].ToString().Replace(" ", "") != "") { if (CompanyProperty4.Contains(item[5].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty4 = item[5].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty4 = null; } } //CompanyProperty5 if (CompanyProperty5.Count == 0) { CompanyModel.CompanyProperty5 = null; } else { if (item[6].ToString().Replace(" ", "") != null && item[6].ToString().Replace(" ", "") != "") { if (CompanyProperty5.Contains(item[6].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty5 = item[6].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty5 = null; } } //CompanyProperty6 if (CompanyProperty6.Count == 0) { CompanyModel.CompanyProperty6 = null; } else { if (item[7].ToString().Replace(" ", "") != null && item[7].ToString().Replace(" ", "") != "") { if (CompanyProperty6.Contains(item[7].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty6 = item[7].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty6 = null; } } //CompanyProperty7 if (CompanyProperty7.Count == 0) { CompanyModel.CompanyProperty7 = null; } else { if (item[8].ToString().Replace(" ", "") != null && item[8].ToString().Replace(" ", "") != "") { if (CompanyProperty7.Contains(item[8].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty7 = item[8].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty7 = null; } } //CompanyProperty8 if (CompanyProperty8.Count == 0) { CompanyModel.CompanyProperty8 = null; } else { if (item[9].ToString().Replace(" ", "") != null && item[9].ToString().Replace(" ", "") != "") { if (CompanyProperty8.Contains(item[9].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty8 = item[9].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty8 = null; } } //CompanyProperty9 if (CompanyProperty9.Count == 0) { CompanyModel.CompanyProperty9 = null; } else { if (item[10].ToString().Replace(" ", "") != null && item[10].ToString().Replace(" ", "") != "") { if (CompanyProperty9.Contains(item[10].ToString().Replace(" ", ""))) { CompanyModel.CompanyProperty9 = item[10].ToString().Replace(" ", ""); } else { error = "公司属性填写错误,请重新填写"; return; } } else { CompanyModel.CompanyProperty9 = null; } } if (item[12].ToString().Replace(" ", "") == null || item[12].ToString().Replace(" ", "") == "") { error = CompanyModel.CompanyName + "的排序值不能为空!"; } else { CompanyModel.Sequence = int.Parse(item[12].ToString().Replace(" ", "")); } AddCompanyList.Add(CompanyModel); } } } } } C_CompanyOperator.Instance.UpdateCompanyList(CompanyList); if (AddCompanyList.Count > 0) { C_CompanyOperator.Instance.AddCompanyList(AddCompanyList); } }
/// <summary> /// 获取区域公司总计的实体(第一步) /// </summary> /// <param name="ProCounter"></param> /// <returns></returns> private List <V_ProjectCompany> GetProjectModel(ProjectCounter ProCounter) { Guid SysId = Guid.Empty; //从XML中获取的系统ID Guid _CompanyId = Guid.Empty; if (!string.IsNullOrEmpty(ProCounter.CompanyID)) { _CompanyId = Guid.Parse(ProCounter.CompanyID); } //公司,区域小计的ID,从XML中获取的 C_Company itemCompany = C_CompanyOperator.Instance.GetCompany(_CompanyId); SysId = itemCompany.SystemID; //指标List List <C_Target> targetList = StaticResource.Instance.TargetList[SysId].ToList(); //项目公司 List <V_ProjectCompany> ProCompanyList = new List <V_ProjectCompany>(); ReportInstance rpt = null; //获取批次ID,如果_MonthReportID 不是为Guid.Empty ,表示:是从上报页面过来的 //反之,则代表是从查询页面传递过来的 if (currRptModel._MonthReportID != Guid.Empty) { //上报页面 ExceptionHelper.TrueThrow(currRptModel.LastestMonthlyReport == null, "B_MonthlyReport表为Null"); if (currRptModel.LastestMonthlyReport.SystemBatchID != Guid.Empty) { B_SystemBatch _BatchModel = B_SystemBatchOperator.Instance.GetSystemBatch(currRptModel.LastestMonthlyReport.SystemBatchID); List <V_SubReport> subRptList = JsonHelper.Deserialize <List <V_SubReport> >(_BatchModel.SubReport); subRptList.ForEach(p => { if (p.SystemID == SysId) { rpt = new ReportInstance(p.ReportID, true);// 从B表中获取根据ReportID获取 } }); } else { rpt = currRptModel; } } else { //查询页面, 通过系统倒序查找相应的项目系统 rpt = new ReportInstance(SysId, FinYear, FinMonth, IsLatestVersion); } ProjectCompanyDetails = rpt.ReportDetails; //计划指标,包含了 区域小计的指标 List <A_TargetPlanDetail> TargetPlanList = new List <A_TargetPlanDetail>(); if (currRptModel._MonthReportID != Guid.Empty) { //上报的时候总是获取最新的指标。 TargetPlanList = StaticResource.Instance.GetTargetPlanList(SysId, FinYear, FinMonth); } else { //查询的时候按照版本查询,从B表中查出后转换成A表的数据 List <B_TargetPlanDetail> _bTargetPlanList = new List <B_TargetPlanDetail>(); _bTargetPlanList = B_TargetplandetailOperator.Instance.GetTargetplandetailList(rpt.ReportDetails[0].TargetPlanID).ToList(); //将B 表数据添加到 A表中 _bTargetPlanList.ForEach(tp => TargetPlanList.Add(tp.ToAModel())); } List <V_ProjectTarget> ProTargetList = new List <V_ProjectTarget>(); V_ProjectCompany tempProCompany = new V_ProjectCompany(); tempProCompany.ProCompanySequence = itemCompany.Sequence; tempProCompany.SystemID = itemCompany.SystemID; tempProCompany.ProCompayName = itemCompany.CompanyName; tempProCompany.ProCompayID = itemCompany.ID; tempProCompany.ProCompanyProperty1 = itemCompany.CompanyProperty1; tempProCompany.FinYear = FinYear; tempProCompany.FinMonth = FinMonth; tempProCompany.CompayModel = itemCompany; tempProCompany.ProRowSpan = 0; tempProCompany.ProCompanyNumber = 0; //获取批次ID,如果_MonthReportID 不是为Guid.Empty ,表示:是从上报页面过来的 //反之,则代表是从查询页面传递过来的 if (currRptModel._MonthReportID != Guid.Empty) { tempProCompany.ProjectTargets = SingleProTargetLists(targetList, rpt.ReportDetails, TargetPlanList, itemCompany, false); } else { tempProCompany.ProjectTargets = SingleProTargetLists(targetList, rpt.ReportDetails, TargetPlanList, itemCompany, true); } tempProCompany.ProDataType = "XML"; ProCompanyList.Add(tempProCompany); return(ProCompanyList); }
/// <summary> /// 项目公司的总数(第一步:1) /// </summary> /// <param name="_TargetList">指标基础表</param> /// <param name="_ReportDetail">明细数据</param> /// <param name="_TargetPlanList">计划指标表</param> /// <param name="companyModel">公司实体</param> /// <param name="IsQuery">上报:false ,查询:true (因有历史版本,所以需要区分)</param> /// <returns></returns> private List <V_ProjectTarget> SingleProTargetLists(List <C_Target> _TargetList, List <MonthlyReportDetail> _ReportDetail, List <A_TargetPlanDetail> _TargetPlanList, C_Company companyModel, bool IsQuery) { /* 此段代码的解释: * 这里计算项目系统的合计数据,因计划数都是从指标计划表中获取,而实际数都是从人员上报得到的,导致不同的数据源 * 这里考虑到以后计算方便,只在基础表C_Company表中添加了每个系统的“南区合计”的公司,但是在B_MonthlyReportDetail表中不存储数据 * 同时在指标计划表中,也做了“南区合计”的指标按月分解数据,这样便于取数和计算。 * 本方法主要就是将这些数据拼装成一条新的List,追加到现有的明细表上,好用于前台的展示 */ List <V_ProjectTarget> _ProTargetLists = new List <V_ProjectTarget>(); List <A_TargetPlanDetail> TargetPlanListByYear = new List <A_TargetPlanDetail>(); //如果从查询页面进入 if (IsQuery) { //查询的时候按照版本查询,从B表中查出后转换成A表的数据 List <B_TargetPlanDetail> _bTargetPlanList = new List <B_TargetPlanDetail>(); _bTargetPlanList = B_TargetplandetailOperator.Instance.GetTargetplandetailList(_ReportDetail[0].TargetPlanID).ToList(); _bTargetPlanList.ForEach(tp => TargetPlanListByYear.Add(tp.ToAModel())); } else { //获取当前的系统指标 TargetPlanListByYear = StaticResource.Instance.GetTargetPlanList(companyModel.SystemID, FinYear); } foreach (C_Target itemTarget in _TargetList.OrderBy(g => g.Sequence)) { V_ProjectTarget VModel = new V_ProjectTarget(); //从明细表中获取数据 MonthlyReportDetail tempModel = null; if (_ReportDetail.Count > 0) { tempModel = _ReportDetail.Find(f => f.TargetID == itemTarget.ID); } if (tempModel == null) { tempModel = new MonthlyReportDetail(); VModel.ProMonthlyReportDetailID = Guid.Empty; } VModel.ProMonthlyReportDetailID = tempModel.ID; VModel.ProTargetID = itemTarget.ID; VModel.ProTargetName = itemTarget.TargetName; VModel.ProTargetSequence = itemTarget.Sequence; VModel.ProCompayID = companyModel.ID; VModel.IsMissTarget = false; VModel.IsMissTargetCurrent = false; VModel.Counter = 0; //VModel.FirstMissTargetDate = tempModel.FirstMissTargetDate; //去指标分解表中找到 区域合计的指标 A_TargetPlanDetail targetModel = null; if (_TargetPlanList.Count > 0) { targetModel = _TargetPlanList.Find(f => f.TargetID == itemTarget.ID && f.FinMonth == FinMonth && f.FinYear == FinYear && f.CompanyID == companyModel.ID); if (targetModel != null) { //区域:当月计划数 ,这个从指标计划中获取 VModel.NPlanAmmount = targetModel.Target; //区域:当月计划数 ,这个从指标计划中获取 //区域:当月累计计划数 VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? //年度计划值 VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); } else { VModel.NPlanAmmount = 0; //区域:当月计划数 ,这个从指标计划中获取 //区域:当月累计计划数 VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? //年度计划值 VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); } } else { //没有给计划指标 VModel.NPlanAmmount = 0; VModel.NAccumulativePlanAmmount = 0; VModel.NPlanAmmountByYear = 0; // continue; } if (_ReportDetail.Count > 0) { VModel.NActualAmmount = _ReportDetail.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID).Sum(p => p.NActualAmmount); //区域:从B表明细数据中汇总当月的实际数 } else { VModel.NActualAmmount = 0; } if (VModel.NPlanAmmount == 0) { VModel.NActualRate = ""; VModel.NDisplayRate = "/"; } else { VModel.NActualRate = ""; VModel.NDisplayRate = Math.Round((VModel.NActualAmmount / VModel.NPlanAmmount), 5, MidpointRounding.AwayFromZero).ToString("P1");; } //区域:当月累计计划数 // VModel.NAccumulativePlanAmmount = TargetPlanListByYear.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID && p.CompanyID == companyModel.ID).Sum(s => s.Target); // ?累计的指标怎么算? if (_ReportDetail.Count > 0) { VModel.NAccumulativeActualAmmount = _ReportDetail.Where(p => p.FinMonth <= FinMonth && p.TargetID == itemTarget.ID).Sum(p => p.NAccumulativeActualAmmount); } else { VModel.NAccumulativeActualAmmount = 0; } if (VModel.NAccumulativePlanAmmount == 0) { VModel.NAccumulativeActualRate = ""; VModel.NAccumulativeDisplayRate = "/"; } else { VModel.NAccumulativeActualRate = ""; VModel.NAccumulativeDisplayRate = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NAccumulativePlanAmmount), 5, MidpointRounding.AwayFromZero).ToString("P1");; } VModel.NActualAmmountByYear = 0; ////年度计划值 //VModel.NPlanAmmountByYear = TargetPlanListByYear.Where(t => t.CompanyID == companyModel.ID && t.TargetID == itemTarget.ID).Sum(s => s.Target); //年度指标完成比例 if (VModel.NPlanAmmountByYear != 0) { VModel.NDisplayRateByYear = Math.Round((VModel.NAccumulativeActualAmmount / VModel.NPlanAmmountByYear), 5, MidpointRounding.AwayFromZero).ToString("P1"); } else { VModel.NPlanAmmountByYear = 0; VModel.NDisplayRateByYear = "/"; } VModel.NActualRateByYear = ""; _ProTargetLists.Add(VModel); } return(_ProTargetLists); }
public List <DSTargetReturnDataCompany> GetDSTargetAddMissDataList(int Year, int Month, bool IsLatestVersion) { List <DSTargetReturnDataCompany> Showlist = new List <DSTargetReturnDataCompany>(); C_System SystemModel = C_SystemOperator.Instance.GetSystem(SysDescriptionID); if (SystemModel != null) { List <C_Target> TargetList = C_TargetOperator.Instance.GetTargetList(SystemModel.ID, DateTime.Now).Where(t => t.NeedReport == true && t.TargetName != "总部管理费用").ToList(); //上一个月以及当前月的信息 ReportInstance LastMonthReport = new ReportInstance(); List <MonthlyReportDetail> LastMonthReportDetails = null; if (Month > 1) { LastMonthReport = new ReportInstance(SystemModel.ID, Year, Month - 1, IsLatestVersion); LastMonthReportDetails = LastMonthReport.ReportDetails; } ReportInstance CurrentMonthReport = new ReportInstance(SystemModel.ID, Year, Month, IsLatestVersion); List <MonthlyReportDetail> CurrentMonthReportDetails = CurrentMonthReport.ReportDetails; //新建百货系统新增经营指标未完成情况的集合 int i = 1; foreach (C_Target titem in TargetList.OrderBy(t => t.Sequence)) { List <C_Company> CompanyList = new List <C_Company>(); if (Month == 1) { CompanyList = C_CompanyOperator.Instance.GetCompanyListBySystemIDAndTargetID(Year, Month, SystemModel.ID, 1, titem.ID, IsLatestVersion).ToList(); } else { List <C_Company> LastCompanyList = C_CompanyOperator.Instance.GetCompanyListBySystemIDAndTargetID(Year, Month - 1, SystemModel.ID, 0, titem.ID, IsLatestVersion).ToList(); List <C_Company> CurrentCompanyList = C_CompanyOperator.Instance.GetCompanyListBySystemIDAndTargetID(Year, Month, SystemModel.ID, 1, titem.ID, IsLatestVersion).ToList(); foreach (C_Company cc in LastCompanyList) { C_Company cModel = CurrentCompanyList.SingleOrDefault(t => t.ID == cc.ID); if (cModel != null && cModel.ID != Guid.Empty) { CompanyList.Add(cModel); } } } #region 添加公司 if (CompanyList != null && CompanyList.Count > 0) { foreach (C_Company c in CompanyList) { DSTargetReturnDataCompany DSCompany = new DSTargetReturnDataCompany(); DSCompany.ID = i; DSCompany.CompanyName = c.CompanyName; DSCompany.AddTargetName = titem.TargetName; List <DSTargetReturnData> dataList = new List <DSTargetReturnData>(); #region 根据指标 foreach (C_Target ct in TargetList.OrderBy(t => t.Sequence)) { DSTargetReturnData DSReturnData = new DSTargetReturnData(); DSReturnData.CompanyID = i; DSReturnData.ReturnTargetName = ct.TargetName; MonthlyReportDetail LastDetail = null; if (Month == 1) { LastDetail = GetMonthlyReportDetail(c, LastMonthReportDetails, CurrentMonthReportDetails, ct, true); } else { LastDetail = GetMonthlyReportDetail(c, LastMonthReportDetails, CurrentMonthReportDetails, ct, false); } if (LastDetail != null && LastDetail.ID != Guid.Empty) { DSReturnData.LastAccumulativePlan = Convert.ToDecimal(LastDetail.NAccumulativePlanAmmount.ToString("N2")); DSReturnData.LastAccumulativeActual = Convert.ToDecimal(LastDetail.NAccumulativeActualAmmount.ToString("N2")); DSReturnData.LastAccumulativeDifference = Convert.ToDecimal((LastDetail.NAccumulativeDifference).ToString("N2")); } MonthlyReportDetail CurrentDetail = GetMonthlyReportDetail(c, LastMonthReportDetails, CurrentMonthReportDetails, ct, true); if (CurrentDetail != null && CurrentDetail.ID != Guid.Empty) { DSReturnData.CurrentReturnAmount = Convert.ToDecimal((CurrentDetail.NAccumulativeDifference - LastDetail.NAccumulativeDifference).ToString("N2")); DSReturnData.CurrentAccumulativePlan = Convert.ToDecimal(CurrentDetail.NAccumulativePlanAmmount.ToString("N2")); DSReturnData.CurrentAccumulativeActual = Convert.ToDecimal(CurrentDetail.NAccumulativeActualAmmount.ToString("N2")); DSReturnData.CurrentAccumulativeDifference = Convert.ToDecimal((CurrentDetail.NAccumulativeDifference).ToString("N2")); DSReturnData.CurrentAccumulativeRate = CurrentDetail.NAccumulativeDisplayRate.ToString(); DSReturnData.CommitDate = string.Format("{0:yyyy-MM-dd}", CurrentDetail.CommitDate); DSReturnData.ReturnType = CurrentDetail.ReturnType; if (!string.IsNullOrEmpty(CurrentDetail.ReturnType.ToString()) && CurrentDetail.ReturnType > 0) { DSReturnData.ReturnTypeDescrible = EnumUtil.GetEnumDescription(typeof(EnumReturnType), CurrentDetail.ReturnType); } else { DSReturnData.ReturnTypeDescrible = "--"; } DSReturnData.Counter = CurrentDetail.Counter; } else { DSReturnData.CurrentAccumulativeRate = "--"; DSReturnData.ReturnTypeDescrible = "--"; DSReturnData.CommitDate = "--"; DSReturnData.Counter = 0; } dataList.Add(DSReturnData); } #endregion if (dataList.Where(p => p.ReturnType == (int)EnumReturnType.New).ToList().Count > 0) { DSCompany.ReturnDataList = dataList; Showlist.Add(DSCompany); } i++; } } #endregion } } return(Showlist); }