/// <summary>
        /// 按时间次序获取一个下载任务
        /// </summary>
        /// <returns>一个下载任务</returns>
        public static MobileReportDownloadTask GetDownloadTask(U8LoginInfor loginInfo)
        {
            string  sql = string.Format("SELECT TOP 1 * FROM dbo.UAP_MobileReportTask WHERE Status in( 0,1) ORDER BY CreatedOn");
            DataSet ds  = SqlHelper.ExecuteDataSet(loginInfo.UfDataCnnString, sql);

            if (ds == null || ds.Tables.Count <= 0 || ds.Tables[0].Rows.Count <= 0)
            {
                return(null);
            }
            DataRow dr   = ds.Tables[0].Rows[0];
            var     task = new MobileReportDownloadTask()
            {
                TaskId      = dr["TaskID"].ToString(),
                Status      = int.Parse(dr["Status"].ToString()),
                SolutionId  = dr["SolutionID"].ToString(),
                Condition   = dr["Condition"].ToString(),
                UserId      = dr["UserID"].ToString(),
                Url         = dr["Url"].ToString(),
                CreateOn    = (DateTime)dr["CreatedOn"],
                CompletedOn = (DateTime)dr["CompletedOn"],
                Token       = dr["Token"].ToString(),
                SubId       = dr["subid"].ToString(),
                Pass        = dr["pass"].ToString(),
                AppServer   = dr["appserver"].ToString(),
                AccId       = dr["accid"].ToString(),
                DataSource  = dr["datasource"].ToString(),
                Syear       = dr["syear"].ToString(),
                Sdate       = dr["sdate"].ToString()
            };

            sql =
                string.Format("UPDATE dbo.UAP_MobileReportTask SET Status = '{0}' WHERE TaskID = '{1}'", "1", task.TaskId);
            SqlHelper.ExecuteNonQuery(loginInfo.UfDataCnnString, sql);
            return(task);
        }
Ejemplo n.º 2
0
        private void InitFilter(ref FilterArgs filterargs, U8LoginInfor login)
        {
            filterargs.Login       = login != null ? login.U8Login : null;
            filterargs.IsWebFilter = false;
            filterargs.ViewID      = this._viewId;
            if (login != null)
            {
                filterargs.UserID    = login.UserID;
                filterargs.LangID    = login.LocaleID;
                filterargs.AccID     = login.cAccId;
                filterargs.UserToken = login.UserToken;
            }
            filterargs.DataSource.FilterString = this._customFilterString;
            object result = SqlHelper.ExecuteDataSet(login.UfMetaCnnString,
                                                     string.Format(
                                                         "SELECT * FROM uap_report  WHERE ID = '{0}'",
                                                         this._reportId));
            var dataSet = result as DataSet;

            if (dataSet != null)
            {
                var dt = dataSet.Tables[0];
                if (dt != null)
                {
                    _className   = dt.Rows[0]["ClassName"].ToString();
                    _filterClass = dt.Rows[0]["FilterClass"].ToString();
                    _filterId    = dt.Rows[0]["FilterID"].ToString();
                    filterargs.InitClass(null, _filterId, _filterClass, _className);
                }
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 通过传入参数初始化查询报表需要参数
 /// </summary>
 private void Init(string token, string actionType, Dictionary <string, string> parameters, ref string responseXml)
 {
     this._loginInfo           = TokenTransfer.GetLoginInfo(token);
     ClientReportContext.Login = this._loginInfo;
     this._solutionId          = this.GetInformationByKey("solutionId", parameters);
     this.Init2();
 }
Ejemplo n.º 4
0
 public MobileReportEngine(U8LoginInfor login, string actionType, Dictionary <string, string> parameters,
                           ref string responseXml)
 {
     this._loginInfo  = login;
     this._solutionId = this.GetInformationByKey("solutionId", parameters);
     this.Init2();
 }
 /// <summary>
 /// 销毁当前任务
 /// </summary>
 internal void DestroyTask()
 {
     PrepairReportDataError(this._task, this._loginInfo);
     this._loginInfo    = null;
     this._mobileReport = null;
     this._task         = null;
     this.Busy          = false;
 }
Ejemplo n.º 6
0
        public string GetReportList(string token)
        {
            var result = new ActionResult()
            {
                Action      = "",
                Flag        = 1,
                Description = "调用失败",
                ResultData  = null
            };
            var time = System.DateTime.Now;

            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>GetReportList-->GetReportList TaskID: " + token + " Start:" + time.ToString());
            var ds = new DataSet();

            this._loginInfo = TokenTransfer.GetLoginInfo(token);
            //TimerTask timer = new TimerTask(1000, this._loginInfo);
            try
            {
                ds = this.GetDataFromDb(false, false);
            }
            catch (Exception ex)
            {
                result.Description = "获取模块信息失败:" + ex.Message;
                return(result.Description);//代码走查点修改
            }
            if (ds != null && ds.Tables.Count > 0)
            {
                ds.Tables[0].TableName = "ReportListInfo";
            }
            const string templateId = "getReportList";

            #region 将login缓存到MERP中
            var token1      = "";
            var xmlDocument = new XmlDocument();
            xmlDocument.LoadXml(token);
            var doc       = xmlDocument.DocumentElement;
            var tokennode = doc.SelectSingleNode("/ufsoft/data/SignedToken");
            if (tokennode != null)
            {
                token1 = tokennode.Attributes["id"].Value;
            }
            var login = new UFSoft.U8.Framework.Login.UI.clsLogin();

            var userData = login.GetLoginInfo(token);
            login.login(userData.cSubID, userData.UserId, userData.Password, userData.AppServer, userData.operDate, userData.DataSource, userData.WorkStationSerial, false);
            ContextObj context = new ContextObj();
            context.Login = login;
            //context.Login = _u8LoginCls as UFSoft.U8.Framework.Login.UI.clsLogin;
            ContextManager.SingletonInstance.Add(token1, context);
            #endregion
            var service = new SchemaServiceForNet();
            result.ResultData  = service.MakeSchema(token1, templateId, ds, null);
            result.Flag        = 0;
            result.Description = "查询报表列表信息成功!";
            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>GetReportList-->GetReportList  TaskID: " + token1 + " End:" + System.DateTime.Now.ToString());
            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>OpenReport-->GetReportList TaskID: " + token1 + "  Use Time " + (DateTime.Now - time).ToString());
            return(result.ResultData);
        }
 /// <summary>
 /// 如果在准备数据时发生异常,则将报表下载任务状态置为6,等待前端删除或者重新下载
 /// </summary>
 /// <param name="task">报表下载任务</param>
 private static void PrepairReportDataError(MobileReportDownloadTask task, U8LoginInfor login)
 {
     if (task != null && login != null)
     {
         string sql =
             string.Format("UPDATE dbo.UAP_MobileReportTask SET Status = 6 WHERE TaskID = '{0}'", task.TaskId);
         SqlHelper.ExecuteNonQuery(login.UfDataCnnString, sql);
     }
 }
Ejemplo n.º 8
0
 public FilterXmlService(
     U8LoginInfor login,
     string reportId,
     string localeId)
 {
     this._login    = login;
     this._reportId = reportId;
     this._localeId = localeId;
 }
Ejemplo n.º 9
0
 /// <summary>
 /// 初始化关注报表需要的参数信息
 /// </summary>
 /// <param name="token"></param>
 /// <param name="actionType"></param>
 /// <param name="parameters"></param>
 /// <param name="responseXml"></param>
 private void Init(string token, string actionType, Dictionary <string, string> parameters, ref string responseXml)
 {
     this._loginInfo = TokenTransfer.GetLoginInfo(token);
     this._taskId    = TokenTransfer.GetInformationByKey("taskId", parameters);
     if (string.IsNullOrEmpty(this._taskId))
     {
         this._taskId = Guid.NewGuid().ToString();
     }
     this._solutionId  = TokenTransfer.GetInformationByKey("solutionId", parameters);
     this._queryParams = TokenTransfer.GetInformationByKey("queryParams", parameters);
 }
Ejemplo n.º 10
0
 public DataHelper(U8LoginInfor login)
 {
     _login          = login;
     _year           = _login.Year;
     _month          = _login.Month;
     _day            = _login.Day;
     _date           = _login.Date;
     _time           = _login.Time;
     _accountmonth   = _login.AccountMonth;
     _accountyear    = _login.AccountYear;
     _levelexpandsrv = new LevelExpandSrv(_login);
 }
Ejemplo n.º 11
0
 //web
 public void Initialize(string reportid, ReportStates reportstate, string usertoken, string taskid, string subid, string url, string userid, string langid, string accid, string filterclass, string authstring, string ciyear, string curdate)
 {
     _usertoken       = usertoken;
     _taskid          = taskid;
     _subid           = subid;
     _login           = new U8LoginInfor();
     _login.UserToken = _usertoken;
     _login.TaskID    = _taskid;
     _login.SubID     = _subid;
     _login.LocaleID  = langid;
     Initialize(reportid, reportstate, null, true, url, userid, langid, accid, filterclass, authstring, ciyear, curdate);
 }
Ejemplo n.º 12
0
        public ClientReportContext(object vblogin) : this()
        {
            _rawlogin = vblogin;
            //if (_login == null)
            _login = new U8LoginInfor(vblogin);

            _usertoken = _login.UserToken;
            _localeid  = _login.LocaleID;
            _taskid    = _login.TaskID;
            _subid     = _login.SubID;
            //_ufDataDbString = _login.UfDataCnnString;
            //_ufMetaDbString = _login.UfMetaCnnString;
            _appServer = _login.AppServer;
            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(_localeid);
        }
Ejemplo n.º 13
0
 public int RetrieveFactDepth(U8LoginInfor login)
 {
     if (_factDepth <= 0)
     {
         string codeRule = this.RetrieveCodeRule(login);
         if (this._depth > codeRule.Length)
         {
             _factDepth = codeRule.Length;
         }
         else
         {
             _factDepth = this._depth;
         }
     }
     return(_factDepth);
 }
Ejemplo n.º 14
0
 public static ReportEngine GetRemoteEngine(U8LoginInfor login, ReportStates state)
 {
     try
     {
         object[] attrs = new object[] { new UrlAttribute(_url) };
         object[] objs  = new object[] { login, state };
         return((ReportEngine)Activator.CreateInstance(typeof(ReportEngine), objs, attrs));
     }
     catch (TargetInvocationException e)
     {
         throw new ReportException(LanError + ((e.InnerException is TargetInvocationException)?e.InnerException.InnerException.Message:e.InnerException.Message) + CheckLan);
     }
     catch (Exception e)
     {
         throw new ReportException(LanError + e.Message + CheckLan);
     }
 }
Ejemplo n.º 15
0
        public override ActionResult Execute(string token, string actionType, Dictionary <string, string> parameters,
                                             ref string responseXml)
        {
            var result = new ActionResult()
            {
                Action      = actionType,
                Flag        = 1,
                Description = "调用失败",
                ResultData  = null
            };
            var time = System.DateTime.Now;

            System.Diagnostics.Trace.Write("<<<<<<<<<<MobileReportTest>>>>>>>>>>GetReportList-->GetReportList TaskID: " + token + " Start:" + time.ToString());
            var ds = new DataSet();

            this._loginInfo = TokenTransfer.GetLoginInfo(token);
            System.Diagnostics.Trace.Write("<<<<<<<<<<MobileReportTest>>>>>>>>>>TokenTransfer处理之后-->token=: " + token);
            System.Diagnostics.Trace.Write("<<<<<<<<<<MobileReportTest>>>>>>>>>>Login.UfMetaCnnString-->" + this._loginInfo.UfMetaCnnString);
            //TimerTask timer = new TimerTask(1000, this._loginInfo);
            try
            {
                ds = this.GetDataFromDb(false, false);
            }
            catch (Exception ex)
            {
                result.Description = "获取模块信息失败:" + ex.Message;
                return(result);//代码走查点修改
            }
            if (ds != null && ds.Tables.Count > 0)
            {
                ds.Tables[0].TableName = "ReportListInfo";
            }
            const string templateId = "getReportList";
            var          service    = new SchemaServiceForNet();

            result.ResultData  = service.MakeSchema(token, templateId, ds, null);
            result.Flag        = 0;
            result.Description = "查询报表列表信息成功!";
            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>GetReportList-->GetReportList  TaskID: " + token + " End:" + System.DateTime.Now.ToString());
            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>OpenReport-->GetReportList TaskID: " + token + "  Use Time " + (DateTime.Now - time).ToString());
            return(result);
        }
 /// <summary>
 /// 启动定时任务,执行报表计算任务
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private bool GoTask(MobileReportDownloadTask task)
 {
     this._loginInfo = ConstructLogin(task);
     // 1.查询报表
     try
     {
         PrepairReportData(task);
         // 2.生成文件
         string fileName = string.Empty;
         MakeFile(ref fileName);
         // 3.更新数据库状态及URL
         UpdateDb(fileName);
     }
     catch (Exception)
     {
         // 如果在准备数据时发生异常,则将报表下载任务状态置为6,等待前端删除或者重新下载。
         PrepairReportDataError(task, this._loginInfo);
         throw;
     }
     return(true);
 }
 /// <summary>
 /// 获取报表下载任务并开始进行下载数据准备
 /// </summary>
 /// <param name="loginInfor">U8登陆对象</param>
 public void BeginTask(U8LoginInfor loginInfor = null)
 {
     try
     {
         this._task = GetDownloadTask(_loginInfo);
         if (_task != null)
         {
             if (GoTask(_task))
             {
                 Busy = false;
             }
         }
         else
         {
             Busy = false;
         }
     }
     catch (Exception)
     {
         Busy = false;
     }
 }
Ejemplo n.º 18
0
 public LevelExpandSrv(U8LoginInfor loginInfo)
 {
     this.CachePool    = new CachePool(loginInfo);
     this.u8LoginInfor = loginInfo;
 }
Ejemplo n.º 19
0
        public string GetReportList(U8LoginInfor login)
        {
            var result = new ActionResult()
            {
                Action      = "",
                Flag        = 1,
                Description = "调用失败",
                ResultData  = null
            };
            var time = System.DateTime.Now;

            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>GetReportList-->GetReportList TaskID: " + login.TaskID + " Start:" + time.ToString());
            var ds = new DataSet();

            this._loginInfo = login;
            //TimerTask timer = new TimerTask(1000, this._loginInfo);
            try
            {
                ds = this.GetDataFromDb(false, false);
            }
            catch (Exception ex)
            {
                result.Description = "获取模块信息失败:" + ex.Message;
                return(result.Description);//代码走查点修改
            }
            if (ds != null && ds.Tables.Count > 0)
            {
                ds.Tables[0].TableName = "ReportListInfo";
            }
            const string templateId  = "getReportList";
            var          token       = "";
            var          xmlDocument = new XmlDocument();

            xmlDocument.LoadXml(login.UserToken);
            var doc       = xmlDocument.DocumentElement;
            var tokennode = doc.SelectSingleNode("/ufsoft/data/SignedToken");

            if (tokennode != null)
            {
                token = tokennode.Attributes["id"].Value;
            }

            var service = new SchemaServiceForNet();

            result.ResultData  = service.MakeSchema(token, templateId, ds, null);
            result.Flag        = 0;
            result.Description = "查询报表列表信息成功!";
            //System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>GetReportList-->GetReportList  TaskID: " + token + " End:" + System.DateTime.Now.ToString());
            //System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>OpenReport-->GetReportList TaskID: " + token + "  Use Time " + (DateTime.Now - time).ToString());
            var xmlResult = result.ResultData;
            var doc1      = new XmlDocument();

            doc1.LoadXml(xmlResult);
            var    dataXML = doc1.SelectSingleNode("/struct/reportList");
            string json    = Newtonsoft.Json.JsonConvert.SerializeXmlNode(dataXML);

            result.ResultData = json;
            string finalResult = JsonTransfer.ReportListToJson(result);

            return(finalResult);
        }
Ejemplo n.º 20
0
 public CachePool(U8LoginInfor loginInfo)
 {
     dataSetObjects    = new NameDataSetCollection();
     this.U8LoginInfor = loginInfo;
 }
Ejemplo n.º 21
0
 public MobileReportEngineAdapter(U8LoginInfor login)
 {
     this._login    = login;
     _datacontainer = new SemiRowsContainerOnServer();
     _rdh           = new RemoteDataHelper();
 }
Ejemplo n.º 22
0
 public DataHelper(U8LoginInfor login, ReportStates understate)
     : this(login)
 {
     _understate = understate;
 }
 /// <summary>
 /// 创建下载计算引擎并开始下载任务
 /// </summary>
 /// <param name="loginInfor">u8登陆对象</param>
 public void CreatDownLoadEngine(U8LoginInfor loginInfor)
 {
     Busy       = true;
     _loginInfo = loginInfor;
     BeginTask();
 }
Ejemplo n.º 24
0
 /// <summary>
 /// 移动报表下载调用
 /// </summary>
 /// <param name="task">移动报表下载任务</param>
 public MobileReportEngine(MobileReportDownloadTask task, U8LoginInfor loginInfor = null)
 {
     this._loginInfo = loginInfor;
     this.Init(task);
 }
Ejemplo n.º 25
0
        public string RetrieveCodeRule(U8LoginInfor login)
        {
            if (this._codeRule == string.Empty)
            {
                string  strSQL = string.Empty;
                DataSet ds     = null;

                if (this._expandType == LevelExpandEnum.AreaClass)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cAreaClass'";
                }
                else if (this._expandType == LevelExpandEnum.CustClass)
                {
                    strSQL = "select  cValue  from  accinformation where  csysid ='aa' and cname ='cCustClass'";
                }
                else if (this._expandType == LevelExpandEnum.DepLevel)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cDepLevel'";
                }
                else if (this._expandType == LevelExpandEnum.DispLevel)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cDispLevel'";
                }
                else if (this._expandType == LevelExpandEnum.GoodClass)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cGoodClass'";
                }
                else if (this._expandType == LevelExpandEnum.GradeLevel)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cGradeLevel'";
                }
                else if (this._expandType == LevelExpandEnum.PosLevel)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cPosLevel'";
                }
                else if (this._expandType == LevelExpandEnum.ProvClass)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cProvClass'";
                }
                else if (this._expandType == LevelExpandEnum.SettleLevel)
                {
                    strSQL = "select cValue from accinformation where  csysid ='aa' and cname ='cSettleLevel'";
                }
                else if (this._expandType == LevelExpandEnum.fa_SourceClass)//资金构成分类
                {
                    strSQL = "select CODINGRULE cValue from GradeDef_base where keyword='fa_SourceClass'";
                }
                //string strConn = "user id=sa; password=1; database=UFDATA_777_2005; server=zblpwin;";
                // ds = SqlHelper.ExecuteDataSet(strConn, strSQL);
                else
                {
                    _expandProgram = new ExpandProgram(login);
                    strSQL         = _expandProgram.RetriveRuleSQL(Convert.ToInt32(_expandType));
                    if (string.IsNullOrEmpty(strSQL))
                    {
                        //throw new Exception("No Difinition!");
                        return("");
                    }
                }
                ds = SqlHelper.ExecuteDataSet(login.UfDataCnnString, strSQL);
                if (ds.Tables[0].Rows.Count == 0)//资金构成分类
                {
                    return("");
                }
                this._codeRule = ds.Tables[0].Rows[0][0].ToString();
            }
            return(this._codeRule);
        }
Ejemplo n.º 26
0
        /// <summary>
        /// CS端有界面打开习文过滤时需要添加以下参数,这里先加上,可能没用。
        /// </summary>
        /// <param name="filterargs"></param>
        /// <param name="login"></param>
        private void InitFilter2(ref FilterArgs filterargs, U8LoginInfor login)
        {
            //if (login.Year.ToString() != null && login.Year.ToString() != "")
            //    filterargs.Args.Add("CIYear", login.Year.ToString());
            //if (!string.IsNullOrEmpty(login.Date))
            //    filterargs.Args.Add("CurDate", login.Date);
            if (!filterargs.Args.Contains("ufreportarg"))
            {
                #region init filterargs
                string metastring = null;
                string datastring = null;
                string tempstring = null;
                //RemoteDataHelper rdh = DefaultConfigs.GetRemoteHelper();
                var rdh = new RemoteDataHelper();
                ReportRelateInfor rri = rdh.GetReportInfor(ClientReportContext.Login, filterargs.ReportID, ref metastring, ref datastring, ref tempstring);

                if (rri.Views.Count == 0)
                {
                    throw new ResourceReportException("U8.UAP.Services.ReportElements.RemoteDataEngine.没有权限");
                }

                ClientReportContext.Login.UfMetaCnnString = metastring;
                ClientReportContext.Login.UfDataCnnString = datastring;
                ClientReportContext.Login.TempDBCnnString = tempstring;
                var SimpleViews = rri.Views;
                filterargs.InitClass(rri.RootReportId, rri.FilterId, rri.FilterClass, rri.ClassName);
                //_rootReportId = rri.RootReportId;

                filterargs.Args.Add("filterxml", rri.FilterXML);
                StringBuilder sb = new StringBuilder();
                SimpleView    sv = null;
                if (string.IsNullOrEmpty(rri.FilterId) && string.IsNullOrEmpty(rri.FilterClass))
                {
                    string vid = filterargs.ViewID ?? SimpleViews.DefaultView.ID;
                    //string gid = _context.Report != null ? _context.Report.CurrentSchemaID : "";
                    string gid = string.Empty;
                    sb.Append("<Data");
                    sb.Append(" ViewID=\"");
                    sb.Append(vid);
                    sb.Append("\" GroupID=\"");
                    sb.Append(gid ?? "");
                    sb.Append("\" dispdetail=\"");
                    sb.Append("1");
                    sb.Append("\">");
                }
                else
                {
                    sb.Append("<Data>");
                }
                sb.Append("<Views>");
                for (int i = 0; i < SimpleViews.Count; i++)
                {
                    sv = SimpleViews[i];
                    sb.Append("<View id=\"");
                    sb.Append(sv.ID);
                    sb.Append("\" ViewType=\"");
                    sb.Append(sv.ViewType);
                    sb.Append("\" Name=\"");
                    sb.Append(getXmlStr(sv.Name));
                    sb.Append("\" ViewClass=\"");
                    sb.Append(sv.ViewClass);
                    sb.Append("\" bShowDetail=\"");
                    sb.Append(sv.bShowDetail ? "True" : "False");
                    sb.Append("\" RowsCount=\"");
                    sb.Append(sv.RowsCount.ToString());
                    sb.Append("\" bDefault=\"");
                    sb.Append(sv.IsDefault ? "True" : "False");
                    sb.Append("\">");
                    sb.Append("</View>");
                }
                sb.Append("</Views>");
                sb.Append("</Data>");

                filterargs.Args.Add("ufreportarg", sb.ToString());

                #endregion
            }
        }
        public string SaveCrossSchemasWithLock(U8LoginInfor login, string viewID, string crossSchemas, string actionType)
        {
            //1开一个新的连接,并开事务
            SqlConnection cnn = new SqlConnection(login.UfMetaCnnString);

            cnn.Open();
            SqlTransaction tran   = cnn.BeginTransaction();
            string         result = string.Empty;

            try
            {
                //21 首先获取当前数据库的groupSchemas,并构造要保存的groupSchemas
                XmlDocument  doc = this.GetCrossSchemasWithXLock(viewID, tran); //tran
                GroupSchemas haveSaveCrossSchemas = GroupSchemas.GetSchemas(doc, "");
                GroupSchemas toSaveCrossSchemas   = GroupSchemas.GetSchemasNoSetDefaultSchema(crossSchemas, "");
                //3然后每一个groupSchema做对比
                if (toSaveCrossSchemas.Count <= 0)
                {
                    return(toSaveCrossSchemas.ToXml().InnerXml);
                }
                GroupSchema cs = toSaveCrossSchemas[0];//要更新的
                foreach (GroupSchema group in toSaveCrossSchemas)
                {
                    if (group.ID != NOGROUPID)
                    {
                        cs = group;
                    }
                }
                GroupSchema oldGs = GetGroupSchemaById(haveSaveCrossSchemas, cs.ID);//数据库中已经有的
                switch (actionType.ToLower().Trim())
                {
                case "delete":
                    if (oldGs == null)
                    {
                        throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Delete.Ex", login.LocaleID));    //"没有权限"
                        //throw new Exception(String4Report.GetString("操作失败,别人已经删除"));
                    }
                    haveSaveCrossSchemas.Remove(oldGs);
                    break;

                case "add":
                    if (HaveSameName(haveSaveCrossSchemas, cs))
                    {
                        throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Add.Ex", login.LocaleID));
                        //throw new Exception(String4Report.GetString("存在重名的分组/交叉,请再次打开报表后更改"));
                    }
                    cs.GuidVersion = Guid.NewGuid().ToString();
                    haveSaveCrossSchemas.Add(cs);
                    SetOtherSchemaBDefault(haveSaveCrossSchemas, cs);
                    break;

                case "modify":
                    if (oldGs == null)
                    {
                        throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Delete.Ex", login.LocaleID));    //"没有权限"
                        //throw new Exception(String4Report.GetString("操作失败,别人已经删除"));
                    }
                    //表明同一个用户在操作,不校验并发
                    if (string.IsNullOrEmpty(oldGs.LastUserGuid) || oldGs.LastUserGuid == cs.LastUserGuid)
                    {
                        if (HaveSameName(haveSaveCrossSchemas, cs))
                        {
                            throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Modify.Ex2", login.LocaleID));
                            //throw new Exception(String4Report.GetString("存在重名的分组/交叉,请再次打开报表后更改"));
                        }
                        haveSaveCrossSchemas.Remove(oldGs);
                        cs.GuidVersion = Guid.NewGuid().ToString();
                        haveSaveCrossSchemas.Add(cs);
                        SetOtherSchemaBDefault(haveSaveCrossSchemas, cs);
                    }
                    //表明同一个用户在操作,不校验并发
                    else
                    {
                        if (oldGs.GuidVersion == cs.GuidVersion)
                        {
                            if (HaveSameName(haveSaveCrossSchemas, cs))
                            {
                                throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Modify.Ex2", login.LocaleID));
                                //throw new Exception(String4Report.GetString("存在重名的分组/交叉,请再次打开报表后更改"));
                            }
                            haveSaveCrossSchemas.Remove(oldGs);
                            cs.GuidVersion = Guid.NewGuid().ToString();
                            haveSaveCrossSchemas.Add(cs);
                            SetOtherSchemaBDefault(haveSaveCrossSchemas, cs);
                        }
                        else
                        {
                            throw new ResourceReportException(String4Report.GetString("U8.UAP.Services.ReportData.ReportDataFacade.Modify.Ex3", login.LocaleID));
                            //throw new Exception(String4Report.GetString("操作失败,别人已经修改"));
                        }
                    }
                    break;

                default:
                    break;
                }
                result = haveSaveCrossSchemas.ToXml().InnerXml;
                string     sql     = "UPDATE UAP_ReportView SET PreservedField = @CrossSchemas WHERE ID=@ViewID";
                SqlCommand command = new SqlCommand(sql, cnn);
                command.Parameters.Add(new SqlParameter("CrossSchemas", result));
                command.Parameters.Add(new SqlParameter("ViewID", viewID));

                SqlHelper.ExecuteNonQuery(tran, command);
                tran.Commit();
            }
            catch (Exception e)
            {
                tran.Rollback();
                throw e;
            }
            finally
            {
                if (cnn.State == ConnectionState.Open)
                {
                    cnn.Close();
                }
            }
            return(result);
        }
Ejemplo n.º 28
0
 public void Retrieve(U8LoginInfor login)
 {
     RetrieveFactDepth(login);
     RetrieveCodeRule(login);
 }
 private void Init(string token, string actionType, Dictionary <string, string> parameters, ref string responseXml)
 {
     this._loginInfo = TokenTransfer.GetLoginInfo(token);
     TokenTransfer.GetInformationByKey("taskId", parameters);
 }
        /// <summary>
        /// 新增供U易联调用的接口
        /// </summary>
        /// <param name="login"></param>
        /// <param name="actionType"></param>
        /// <param name="parameters"></param>
        /// <param name="responseXml"></param>
        /// <returns></returns>
        public string Execute(U8LoginInfor login, string actionType, Dictionary <string, string> parameters,
                              ref string responseXml)
        {
            string result   = "";
            bool   is4chart = false;

            if (parameters.ContainsKey("is4chart"))
            {
                is4chart = Boolean.Parse(parameters["is4chart"]);
            }
            this._loginInfo   = login;
            this._responseXml = responseXml;
            if (!this.CheckReportExist(parameters))
            {
                result = "该查询方案不存在,可能已经取消发布到移动端,请确认!";
                throw new Exception("该查询方案不存在,可能已经取消发布到移动端,请确认!");
            }
            try
            {
                MobileReportEngine engine = new MobileReportEngine(this._loginInfo, actionType, parameters, ref responseXml);
                int startLine             = Convert.ToInt32(this.GetInformationByKey("startline", parameters));
                this._columnsStr = this.GetInformationByKey("columnsstring", parameters);
                int pageRowCount = 25;
                if (this.GetInformationByKey("count", parameters) != null)
                {
                    pageRowCount = Convert.ToInt32(this.GetInformationByKey("count", parameters));
                }

                engine.SetReportPageRowCount(pageRowCount);
                if (startLine == 1) //请求第一页数据
                {
                    this._mobileReport  = engine.OpenReport(parameters);
                    this._pageRowsCount = engine.GetReportPageRowCount();
                    //this._mobileReport = this.OpenReport(this._loginInfo, parameters);
                    this._mobileReport.Page = 0;
                    int    totalpage         = this._mobileReport.Report.RowsCount / this._pageRowsCount + 1;
                    string reportCacheString = RetrieveRowData2Json.GetColumnsInfoString(this._mobileReport);
                    this.SetCacheInfoIntoSession(ref responseXml, "currentpage", "1");
                    this.SetCacheInfoIntoSession(ref responseXml, "totalpage", totalpage.ToString());
                    byte[] bytes = Encoding.Default.GetBytes(reportCacheString);
                    reportCacheString = Convert.ToBase64String(bytes);
                    this.SetCacheInfoIntoSession(ref responseXml, "columnsString", reportCacheString);
                    this.SetCacheInfoIntoSession(ref responseXml, "cacheid", this._mobileReport.Report.CacheID);
                }
                else
                {
                    int pageIndex = Convert.ToInt32(this.GetCacheInfoFromSession(responseXml, "currentpage"));
                    if (pageIndex == 0)
                    {
                        pageIndex = Convert.ToInt32(this.GetInformationByKey("currentpage", parameters));
                        //pageIndex = Convert.ToInt32(parameters["currentpage"].ToString());
                    }
                    int totalpage = Convert.ToInt32(this.GetCacheInfoFromSession(responseXml, "totalpage"));
                    if (totalpage == 0)
                    {
                        totalpage       = Convert.ToInt32(this.GetInformationByKey("totalpage", parameters));
                        this._totolPage = totalpage.ToString();
                    }
                    if (pageIndex + 1 > totalpage)
                    {
                        result = null;
                        return(result);
                    }
                    else
                    {
                        string cacheId = GetCacheInfoFromSession(responseXml, "cacheid");
                        if (string.IsNullOrEmpty(cacheId))
                        {
                            cacheId       = this.GetInformationByKey("cacheid", parameters);
                            this._cacheid = cacheId;
                        }
                        int lastIndex = -1;
                        //this._mobileReport = this.PageTo(cacheId, pageIndex, lastIndex);
                        this._mobileReport = engine.PageTo(cacheId, pageIndex, lastIndex);
                        this.SetCacheInfoIntoSession(ref responseXml, "currentpage", (pageIndex + 1).ToString());
                        this._mobileReport.Page = pageIndex + 1;
                    }
                }

                if (_mobileReport != null)
                {
                    int pageIndex = Convert.ToInt32(this.GetCacheInfoFromSession(responseXml, "currentpage"));
                    if (pageIndex == 0)
                    {
                        if (parameters.ContainsKey("currentpage"))
                        {
                            pageIndex = Convert.ToInt32(this.GetInformationByKey("currentpage", parameters));
                        }
                    }
                    // 由于CS端每页都需要显示总计行,这里需要将不是最后一页的总计行删除掉
                    //if (!bLastPage(pageIndex, _mobileReport.Report) && this._mobileReport.Report.Sections[SectionType.ReportSummary] != null)
                    //{
                    //    _mobileReport.SemiRows.RemoveAt(_mobileReport.SemiRows.Count - 1);
                    //}
                    // 如果是请求图表数据
                    if (is4chart)
                    {
                        var report = _mobileReport.Report;
                        engine.InitMobileReportChartSchema(report);
                        ChartService chartservice = new ChartService(report);
                        ChartSchemas css          = report.ChartSchemas;
                        if (css.CurrentGroupChart.Items != null && css.CurrentGroupChart.Items.Count > 0)
                        {
                            ChartSchemaItem groupCharts = css.CurrentGroupChart.Items[1] as ChartSchemaItem;
                            if (groupCharts != null)
                            {
                                foreach (ChartSchemaItemAmong among in groupCharts.Items.Values)
                                {
                                    UltraChart  designChart = MobileChartHelper.CreateAchartByDesignTime(among);
                                    var         dataTable1  = chartservice.GetDataSource(groupCharts.Level, among.ID, null, designChart.ChartType);
                                    MobileChart mobileChart = new MobileChart(designChart.ChartType, dataTable1);
                                    string      result1     = MobileChartHelper.TransferDataTableToString(mobileChart);
                                    MobileChartHelper.Desrialize <MobileChart>(mobileChart, result1);
                                    return(result1);
                                }
                            }
                        }
                    }
                    System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>OpenReport-->ParseReport TaskID: " + _loginInfo.TaskID + "  Start:" + System.DateTime.Now.ToString());
                    result = ULinkParse(this._mobileReport);
                    System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>OpenReport-->ParseReport TaskID: " + _loginInfo.TaskID + "  End:" + System.DateTime.Now.ToString());
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("无法将类型为“U8Login.clsLoginClass”的 COM 对象强制转换为接口类型“U8Login._clsLogin”") && !parameters.ContainsKey("AAA"))
                {
                    parameters.Add("AAA", "1");
                    return(Execute(this._loginInfo, actionType, parameters, ref responseXml));
                }
                else
                {
                    throw ex;
                }
            }
            System.Diagnostics.Trace.WriteLine("<<<<<<<<<<MobileReportTest>>>>>>>>>>OpenReport-->ExecuteOpenReport TaskID: " + this._loginInfo.UserToken + "  End:" + System.DateTime.Now.ToString());
            return(result);
        }