Esempio n. 1
0
        private static void InitExcelHandlers()
        {
            // 指定的多个带有controller的assembly的名称
            string handlerAssemblies = AppSettingConfig.GetSetting("ExcelHandlerAssemblies", "");  //"Wanda.HR.KPI.Web.Common";

            _excelHandlers = new Dictionary <string, ExcelCategoryHandler>();

            string[]    assemblyArray = handlerAssemblies.Split(",;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            List <Type> handlerTypes  = new List <Type>();

            foreach (var assembly in assemblyArray)
            {
                var types = (from t in Assembly.Load(assembly).GetTypes()
                             where IsSubClassOf(t, typeof(ExcelCategoryHandler))
                             select t).ToList();
                handlerTypes.AddRange(types);
            }



            foreach (Type type in handlerTypes)
            {
                string typeName = type.Name.ToLower();
                // todo alias

                ExcelCategoryHandler handler = (ExcelCategoryHandler)Activator.CreateInstance(type);

                _excelHandlers.Add(typeName, handler);
            }
        }
Esempio n. 2
0
        public static void ResetAppTime(DateTime newDate)
        {
            if (AppSettingConfig.GetSetting("UseMockDate", "false").ToLower() == "true")
            {
                DateTime newAppTime = newDate.Add(DateTime.Now.Subtract(DateTime.Now.Date));

                TimeSpan offset = newAppTime.Subtract(DateTime.Now);
                HttpContext.Current.Session[TimeSessionKey] = offset;
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 从配置文件中读取要排除的流程
        /// </summary>
        /// <returns></returns>
        private List <string> GetExcludeProcessCode()
        {
            string PAISONG_PROCESS_CODES = AppSettingConfig.GetSetting("PaiSongProcess", "");

            if (string.IsNullOrEmpty(PAISONG_PROCESS_CODES))
            {
                return(null);
            }

            return(PAISONG_PROCESS_CODES.Split(",;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList());
        }
        /// <summary>
        /// 获取上月的未完成公司
        /// </summary>
        /// <param name="Expression">未完成公式</param>
        /// <param name="TargetIDs">未完成指标ID组合</param>
        /// <returns></returns>
        private int GetLastMonthCompanyCount(string Expression, List <Guid> TargetIDs, List <MonthlyReportDetail> _LastMissTargetList)
        {
            List <Guid> Companys = new List <Guid>();

            //计算上月的
            foreach (MonthlyReportDetail d in _LastMissTargetList)
            {
                if (TargetIDs.Contains(d.TargetID)) //上月指标包含当前指标
                {
                    Hashtable        bizContext = BizContextEngine.BizContextService.GetBizContext(_LastMissTargetList.FindAll(R => R.CompanyID == d.CompanyID), "A_MonthlyReportDetail");
                    ExpressionParser _parser    = new ExpressionParser(bizContext);

                    //解析这个公式
                    //其中任何一个指标数据满足Counter的条件,此公司的数据都应该归类于该Counter
                    if (_parser.CacluateCondition(Expression))
                    {
                        if (!Companys.Contains(d.CompanyID))
                        {
                            Companys.Add(d.CompanyID);
                        }
                    }
                }
            }

            //---Update 2015-5-13  这里只有单个指标不用理会公司(商管,物管)

            string MissTargetSystemName = AppSettingConfig.GetSetting("MissTargetSystemName", "");

            if (MissTargetSystemName.Contains(_System.SystemName) == false)
            {
                if (!IsSingleTarget)
                {
                    //将补回的数据从总的数据中移除掉
                    MissTargetTextList.RemoveAll(Re => Companys.Exists(R => R == Re.CompanyID));
                }
            }
            //--Update 2015-5-13  End


            return(Companys.Count);
        }
Esempio n. 5
0
        /// <summary>
        /// 当月未完成数据导入(直管模版的)
        /// </summary>
        /// <param name="filePathName"></param>
        /// <param name="error"></param>
        /// <param name="rpt"></param>
        /// <param name="MonthRptID"></param>
        /// <returns></returns>
        private List <MonthlyReportDetail> ReadCurrentDirectlyMonthlyReportDetailExcel(string filePathName, StringBuilder error, ReportInstance rpt, Guid MonthRptID)
        {
            List <MonthlyReportDetail> list = new List <MonthlyReportDetail>();
            ExcelEngine excel = new ExcelEngine();
            Workbook    book  = new Workbook(filePathName);
            Worksheet   sheet = book.Worksheets[0];

            if (excel.GetStringCustomProperty(sheet, "SheetName") != "MissTargetRptExcel")
            {
                error.Append("请上传正确的报表文件");
                return(null);
            }

            int count = book.Worksheets.Count;// sheet个数

            if (count == 0)
            {
                error.Append("模板错误");
                return(null);
            }

            WorksheetCollection sheets = book.Worksheets;

            //当次上报的 所有未完成公司的指标
            List <MonthlyReportDetail> missTargetList = rpt.ReportDetails;

            //循环Sheet
            for (int i = 0; i < count; i++)
            {
                //当次上报的 所有未完成公司的指标
                int startRow    = 4;
                int endRow      = 0;
                int startColumn = 1;
                int endColumn   = 15;

                Cells cells = sheets[i].Cells;
                endRow    = cells.MaxDataRow;
                endColumn = cells.MaxDataColumn;

                //读取Excel中的数据
                DataTable dt = cells.ExportDataTableAsString(startRow, startColumn, endRow - startRow + 1, endColumn);

                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        DateTime PromissDate = DateTime.Now;

                        MonthlyReportDetail data = missTargetList.Where(M => M.TargetName == dr[2].ToString()).OrderBy(p => p.CreateTime).FirstOrDefault();
                        if (data == null)
                        {
                            error.Append("请重新下载Excel后,填写上报");
                            return(null);
                        }

                        if (data.TargetID.ToString().ToUpper() == AppSettingConfig.GetSetting("MonthSGRent", "").ToUpper() && data.NDifference < 0 && data.IsMissTarget == false)
                        {
                            data.CurrentMIssTargetReason      = dr[11].ToString(); //原因
                            data.CurrentMIssTargetDescription = dr[12].ToString(); //采取措施
                        }
                        else                                                       //这有当月未完成,累计完成的情况,才会填写原因以及措施
                        {
                            data.CurrentMIssTargetReason      = dr[11].ToString(); //原因
                            data.CurrentMIssTargetDescription = dr[12].ToString(); //采取措施
                        }


                        list.Add(data);
                    }
                }
            }
            return(list);
        }
Esempio n. 6
0
        /// <summary>
        /// 当月未完成数据导入
        /// </summary>
        /// <param name="filePathName"></param>
        /// <param name="error"></param>
        /// <param name="rpt"></param>
        /// <param name="MonthRptID"></param>
        /// <returns></returns>
        private List <MonthlyReportDetail> ReadCurrentMonthlyReportDetailExcel(string filePathName, StringBuilder error, ReportInstance rpt, Guid MonthRptID)
        {
            List <MonthlyReportDetail> list = new List <MonthlyReportDetail>();
            ExcelEngine excel = new ExcelEngine();
            Workbook    book  = new Workbook(filePathName);
            Worksheet   sheet = book.Worksheets[0];

            if (excel.GetStringCustomProperty(sheet, "SheetName") != "MissTargetRptExcel")
            {
                error.Append("请上传正确的报表文件");
                return(null);
            }

            int count = book.Worksheets.Count;// sheet个数

            if (count == 0)
            {
                error.Append("模板错误");
                return(null);
            }

            WorksheetCollection sheets = book.Worksheets;

            //当次上报的 所有未完成公司的指标
            List <MonthlyReportDetail> missTargetList = rpt.ReportDetails;

            //循环Sheet
            for (int i = 0; i < count; i++)
            {
                //当次上报的 所有未完成公司的指标
                int startRow    = 4;
                int endRow      = 0;
                int startColumn = 1;
                int endColumn   = 15;

                Cells cells = sheets[i].Cells;
                endRow    = cells.MaxDataRow;
                endColumn = cells.MaxDataColumn;


                DataTable dt = new DataTable();
                if (endRow >= startRow) //这里判断Excel里最大行数必须大于开始读取的行数
                {
                    //读取Excel中的数据
                    dt = cells.ExportDataTableAsString(startRow, startColumn, endRow - startRow + 1, endColumn);
                }

                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        DateTime PromissDate = DateTime.Now;
                        //Excel中公司的名称和指标名称==来确定给Model

                        if (dr[1].ToString() != "未完成合计") // 这里为了排除商管多加出来的合计项
                        {
                            MonthlyReportDetail data = missTargetList.Where(M => M.CompanyName == dr[1].ToString() && M.TargetName == dr[2].ToString()).FirstOrDefault();
                            if (data == null)
                            {
                                continue; //如果是不包含指标跳过
                            }


                            if (data.TargetID.ToString().ToUpper() == AppSettingConfig.GetSetting("MonthSGRent", "").ToUpper() && data.NDifference < 0 && data.IsMissTarget == false)
                            {
                                data.CurrentMIssTargetReason      = dr[11].ToString() + "\n"; //原因
                                data.CurrentMIssTargetDescription = dr[12].ToString();        //采取措施
                            }
                            else
                            {
                                data.CurrentMIssTargetReason      = dr[11].ToString() + "\n"; //原因
                                data.CurrentMIssTargetDescription = dr[12].ToString();        //采取措施
                            }


                            list.Add(data);
                        }
                    }
                }
            }
            return(list);
        }
Esempio n. 7
0
        public void Execute(IJobExecutionContext context)
        {
            Common.ScheduleService.Log.Instance.Info("Service GenerateQuerryJsonData  开始 execute");
            C_ReportTime RptTime = C_ReportTimeOperator.Instance.GetReportTime();

            try
            {
                bool JsonDataSwitch = false;
                bool.TryParse(AppSettingConfig.GetSetting("JsonDataSwitch", ""), out JsonDataSwitch);
                List <B_MonthlyReport> MList = new List <B_MonthlyReport>();

                //开关:true=按照当前上报月 ,查询, 关闭:false=查询所有的数据执行
                if (JsonDataSwitch)
                {
                    MList = B_MonthlyreportOperator.Instance.GetMonthlyReportByApproveList(RptTime.ReportTime.Value.Year, RptTime.ReportTime.Value.Month);
                }
                else
                {
                    MList = B_MonthlyreportOperator.Instance.GetMonthlyreportList().ToList();
                }


                //获取,需要执行的JSon数据 && p.ID == Guid.Parse("114B9692-BC9E-47F0-A6EB-C14450E25C4E")
                var GList = MList.Where(p => string.IsNullOrEmpty(p.DataOptimizationJson)).ToList();

                if (GList != null && GList.Count > 0)
                {
                    GList.ForEach(G =>
                    {
                        try
                        {
                            // 基础信息, 月度报告汇总表
                            ReportInstance rpt = new ReportInstance(G.ID, true, "");

                            List <DictionaryVmodel> listSRDS = ReportInstanceSummaryEngine.ReportInstanceSummaryService.GetSummaryRptDataSource(rpt, false);
                            StringBuilder SumStr             = new StringBuilder();
                            SumStr.Append(JsonHelper.Serialize(listSRDS)); // 追加所有的出来的数据

                            string strProp = string.Empty;

                            //判断下,直管公司里是没有属性的
                            if (rpt._System.Category != 4)
                            {
                                //公司的属性List
                                var VpropList = (List <VCompanyProperty>)listSRDS[4].ObjValue;
                                VpropList.ForEach(vp =>
                                {
                                    strProp = strProp + vp.ColumnName + ":";
                                    if (vp.listCP != null && vp.listCP.Count > 0)
                                    {
                                        vp.listCP.ForEach(v =>
                                        {
                                            strProp = strProp + v.ItemCompanyPropertyValue + ",";
                                        });
                                    }
                                    strProp = strProp + ";";
                                });
                            }

                            //月度明细数据
                            ReportInstance rpt_Detail = new ReportInstance(G.ID, true, "");

                            List <DictionaryVmodel> DetailData = ReportInstanceDetailEngine.ReportInstanceDetailService.GetDetailRptDataSource(rpt_Detail, strProp, "Detail", false);
                            StringBuilder DetailStr            = new StringBuilder();
                            DetailStr.Append(JsonHelper.Serialize(DetailData)); // 追加所有的出来的数据

                            //累计未完成
                            ReportInstance rpt_MIss          = new ReportInstance(G.ID, true, "");
                            List <DictionaryVmodel> MIssData = ReportInstanceMissTargetEngine.ReportInstanceMissTargetService.GetMissTargetRptDataSource(rpt_MIss);
                            StringBuilder MIssStr            = new StringBuilder();
                            MIssStr.Append(JsonHelper.Serialize(MIssData)); // 追加所有的出来的数据


                            //当月未完成
                            ReportInstance rpt_CurrenMIss           = new ReportInstance(G.ID, true, "");
                            List <DictionaryVmodel> CurrentMIssData = ReportInstanceCurrentMissTargetEngine.ReportInstanceMissTargetService.GetCurrentMissTargetRptDataSource(rpt_CurrenMIss);
                            StringBuilder CurrentMIssStr            = new StringBuilder();
                            CurrentMIssStr.Append(JsonHelper.Serialize(CurrentMIssData)); // 追加所有的出来的数据


                            //补回情况
                            C_System sys;
                            if (rpt.ReportDetails != null && rpt.ReportDetails.Count() > 0)
                            {
                                sys = StaticResource.Instance[rpt._System.ID, rpt.ReportDetails[0].CreateTime];
                            }
                            else
                            {
                                sys = StaticResource.Instance[rpt._System.ID, DateTime.Now];
                            }
                            ReportInstance rpt_Return          = new ReportInstance(G.ID, true, "");
                            List <DictionaryVmodel> ReturnData = ReportInstanceReturnEngine.ReportInstanceReturnService.GetReturnRptDataSource(rpt_Return, sys); //rpt.GetReturnRptDataSource();
                            StringBuilder ReturnStr            = new StringBuilder();
                            ReturnStr.Append(JsonHelper.Serialize(ReturnData));                                                                                  // 追加所有的出来的数据

                            // 序列化的Json数据保存
                            B_MonthlyReportJsonData JsonData = new B_MonthlyReportJsonData();
                            try
                            {// 获取Json数据
                                JsonData = B_MonthlyReportJsonDataOperator.Instance.GetMonthlyReportJsonData(G.ID);
                            }
                            catch (Exception)
                            {
                                JsonData = null;
                            }

                            if (JsonData != null)
                            {
                                JsonData.ModifierName              = "SysService";
                                JsonData.ModifyTime                = DateTime.Now;
                                JsonData.QuerrySumJsonData         = SumStr.ToString();
                                JsonData.QuerryDetaileJsonData     = DetailStr.ToString();
                                JsonData.QuerryMissJsonData        = MIssStr.ToString();
                                JsonData.QuerryReturnJsonData      = ReturnStr.ToString();
                                JsonData.QuerryCurrentMissJsonData = CurrentMIssStr.ToString();
                                B_MonthlyReportJsonDataOperator.Instance.UpdateMonthlyReportJsonData(JsonData);

                                G.DataOptimizationJson = "100";
                                B_MonthlyreportOperator.Instance.UpdateMonthlyreport(G);
                            }
                            else
                            {
                                JsonData                           = new B_MonthlyReportJsonData();
                                JsonData.ID                        = G.ID;
                                JsonData.FinMonth                  = rpt.FinMonth;
                                JsonData.FinYear                   = rpt.FinYear;
                                JsonData.PlanType                  = "M";
                                JsonData.SystemID                  = rpt._SystemID;
                                JsonData.ModifierName              = "SysService";
                                JsonData.ModifyTime                = DateTime.Now;
                                JsonData.QuerrySumJsonData         = SumStr.ToString();
                                JsonData.QuerryDetaileJsonData     = DetailStr.ToString();
                                JsonData.QuerryMissJsonData        = MIssStr.ToString();
                                JsonData.QuerryReturnJsonData      = ReturnStr.ToString();
                                JsonData.QuerryCurrentMissJsonData = CurrentMIssStr.ToString();
                                B_MonthlyReportJsonDataOperator.Instance.AddMonthlyReportJsonData(JsonData);

                                G.DataOptimizationJson = "100";
                                B_MonthlyreportOperator.Instance.UpdateMonthlyreport(G);
                            }
                        }
                        catch (Exception ep)
                        {
                            G.DataOptimizationJson = "-100";
                            B_MonthlyreportOperator.Instance.UpdateMonthlyreport(G);


                            Common.ScheduleService.Log.Instance.Error("Service GenerateQueryAttachments  错误:" + ep.ToString());
                        }
                    });
                }
            }
            catch (Exception ex)
            {
                Common.ScheduleService.Log.Instance.Error("Service GenerateQueryAttachments  错误:" + ex.ToString());
            }

            Common.ScheduleService.Log.Instance.Info("Service GenerateQuerryJsonData  结束 execute");
        }
Esempio n. 8
0
        /// <summary>
        /// 添加年累计
        /// </summary>
        /// <param name="approval"></param>
        /// <returns></returns>
        protected Groups InitYearRpt(B_BusinessBase approval)
        {
            var VModel = JsonConvert.DeserializeObject <List <DictionaryVmodel> >(approval.FormData);

            List <MonthReportSummaryViewModel> lstResult = JsonConvert.DeserializeObject <List <MonthReportSummaryViewModel> >(VModel[1].ObjValue.ToString());

            Groups groupYearResult = new Groups()
            {
                type     = ConstantWS.flowData_group_haveHeader,
                subTitle = "月度经营报告(累计)",
                titles   = new List <Titles>()
                {
                    new Titles()
                    {
                        content = "项目"
                    }
                    , new Titles()
                    {
                        content = "累计计划<br>(万元)"
                    }
                    , new Titles()
                    {
                        content = "累计实际<br>(万元)"
                    }
                    , new Titles()
                    {
                        content = "完成率"
                    }
                }
            };

            List <Rows> ltYearResultRows = new List <Rows>();
            Rows        rsYearResult;

            foreach (var model in lstResult)
            {
                rsYearResult       = new Rows();
                rsYearResult.cells = new List <Cells>();

                if (model.TargetID.ToString().ToUpper() == AppSettingConfig.GetSetting("MonthSGRent", "").ToUpper())
                {
                    //这里 对商管的租金收缴率,做下特殊处理
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = model.TargetName, td_style = "text-align:center"
                    });
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = model.NAccumulativePlanStr, td_style = "text-align:center"
                    });
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = model.NAccumulativeActualStr, td_style = "text-align:center"
                    });
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = model.NAccumulativeActualRate, td_style = "text-align:center"
                    });
                }
                else
                {
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = model.TargetName, td_style = "text-align:center"
                    });
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = String.Format("{0:N0}", model.NAccumulativePlanAmmount), td_style = "text-align:center"
                    });
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = String.Format("{0:N0}", model.NAccumulativeActualAmmount), td_style = "text-align:center"
                    });
                    rsYearResult.cells.Add(new Cells()
                    {
                        content = model.NAccumulativeActualRate, td_style = "text-align:center"
                    });
                }


                ltYearResultRows.Add(rsYearResult);
            }
            groupYearResult.rows = ltYearResultRows;

            return(groupYearResult);
        }
Esempio n. 9
0
        /// <summary>
        /// 写Cookie
        /// </summary>
        /// <param name="name"></param>
        /// <param name="value"></param>
        public static void SetCookieValue(string name, string value, int days)
        {
            string domain = AppSettingConfig.GetSetting("Domain", "vendor.wanda.cn");

            SetCookieValue(name, domain, value, days);
        }