コード例 #1
0
        private static Boolean SetWorkProcessInfo(string billNo)
        {
            Boolean     ret         = false;
            ProduceData produceData = LibProduceCache.Default.GetProduceData(billNo);

            if (produceData != null)
            {
                foreach (DataRow curRow in produceData.WorkOrder.Tables[3].Rows)
                {
                    ret = true;
                    DataRow parentRow = produceData.WorkOrder.Tables[2].Rows.Find(new object[] { curRow["BILLNO"], curRow["PARENTROWID"] });
                    if (!LibSysUtils.ToBoolean(parentRow["NEEDGATHER"]))
                    {
                        continue;
                    }
                    string workstationId = LibSysUtils.ToString(curRow["WORKSTATIONID"]);
                    if (!_ProductScheduling.WsRelWorkOrder.ContainsKey(workstationId))
                    {
                        _ProductScheduling.WsRelWorkOrder.Add(workstationId, new List <string>()
                        {
                            billNo
                        });
                    }
                    if (!_ProductScheduling.WsRelWorkOrder[workstationId].Contains(billNo))
                    {
                        _ProductScheduling.WsRelWorkOrder[workstationId].Add(billNo);
                    }
                    if (produceData.FirstWorkProcessNo.Contains(LibSysUtils.ToInt32(parentRow["WORKPROCESSNO"])) && !_ProductScheduling.FirstWs.Contains(workstationId))
                    {
                        _ProductScheduling.FirstWs.Add(workstationId);
                    }
                }
            }
            return(ret);
        }
コード例 #2
0
 protected override void AfterCommintData()
 {
     base.AfterCommintData();
     if (!this.ManagerMessage.IsThrow)
     {
         List <AxCRL.Core.Mail.LibMailParam> list = new List <AxCRL.Core.Mail.LibMailParam>();
         foreach (DataRow curRow in this.DataSet.Tables[0].Rows)
         {
             if (curRow.RowState == DataRowState.Modified)
             {
                 if (LibSysUtils.ToBoolean(curRow["ISUSE"]) && !LibSysUtils.ToBoolean(curRow["ISUSE", DataRowVersion.Original]))
                 {
                     AxCRL.Core.Mail.LibMailParam param = new AxCRL.Core.Mail.LibMailParam();
                     param.Content  = string.Format("您的账号 {0} 已开通。", curRow["USERID"]);
                     param.MailKind = AxCRL.Core.Mail.LibMailKind.Info;
                     param.Subject  = "智慧工厂账号开通";
                     param.To       = new List <string>()
                     {
                         LibSysUtils.ToString(curRow["PERSONID"])
                     };
                     list.Add(param);
                 }
             }
         }
         if (list.Count > 0)
         {
             ThreadPool.QueueUserWorkItem(LibMailHelper.SendMail, list);
         }
     }
 }
コード例 #3
0
        /// <summary>
        /// 获取用户可访问的站点
        /// </summary>
        /// <param name="userHandle"></param>
        /// <returns></returns>
        public List <LinkSiteInfo> GetLinkSites(string userHandle)
        {
            // 判断userHandle存不存在
            LibHandle handle = LibHandleCache.Default.GetCurrentHandle(userHandle);

            if (handle == null)
            {
                throw new Exception("用户句柄无效");
            }
            List <LinkSiteInfo> linkSiteInfoList = new List <LinkSiteInfo>();
            string        sql        = string.Format("select B.SITEID, B.SITENAME, B.SHORTNAME, B.SITEURL, B.SVCURL, B.ISSLAVE,B.ISSENDTO from AXPUSERSITE A join AXPLINKSITE B on A.SITEID = B.SITEID where A.USERID = {0}", LibStringBuilder.GetQuotString(handle.UserId));
            LibDataAccess dataAccess = new LibDataAccess();

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                while (reader.Read())
                {
                    var siteInfo = new LinkSiteInfo()
                    {
                        SiteId    = LibSysUtils.ToString(reader["SITEID"]),
                        SiteName  = LibSysUtils.ToString(reader["SITENAME"]),
                        ShortName = LibSysUtils.ToString(reader["SHORTNAME"]),
                        SiteUrl   = LibSysUtils.ToString(reader["SITEURL"]),
                        SvcUrl    = LibSysUtils.ToString(reader["SVCURL"]),
                        IsSlave   = LibSysUtils.ToBoolean(reader["ISSLAVE"]),
                        IsSendTo  = LibSysUtils.ToBoolean(reader["ISSENDTO"]),
                    };
                    linkSiteInfoList.Add(siteInfo);
                }
            }
            return(linkSiteInfoList);
        }
コード例 #4
0
        protected override void BeforeUpdate()
        {
            base.BeforeUpdate();
            HashSet <string> hasSet = new HashSet <string>();

            foreach (DataRow curRow in this.DataSet.Tables[1].Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                DataRow[] subRows = curRow.GetChildRows("AXPPERMISSIONGROUPDETAIL_AXPOPERATEPOWER", DataRowVersion.Current);
                int       mark    = 0;
                foreach (DataRow subRow in subRows)
                {
                    if (LibSysUtils.ToBoolean(subRow["CANUSE"]))
                    {
                        mark += LibSysUtils.ToInt32(subRow["OPERATEPOWERID"]);
                    }
                }
                curRow["OPERATEMARK"] = mark;
                string progId = LibSysUtils.ToString(curRow["PROGID"]);
                if (hasSet.Contains(progId))
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}的功能标识重复", curRow["ROWNO"]));
                }
                else
                {
                    hasSet.Add(progId);
                }
            }
        }
コード例 #5
0
        /// <summary>
        /// 获得单据业务流配置下跟当前功能单据数据相匹配的业务流配置明细
        /// </summary>
        /// <param name="billMasterRow">功能单据 主表行数据</param>
        /// <param name="billProgId">功能单据 功能标识</param>
        /// <returns>返回业务流配置明细</returns>
        private List <BusinessInfo> GetBusinessInfo(DataRow billMasterRow, string billProgId)
        {
            //传输信息字典【使用条件--业务流配置明细】
            Dictionary <string, List <BusinessInfo> > businessInfoDic = new Dictionary <string, List <BusinessInfo> >();
            //单据业务流配置:axp.BusinessFlowConfig
            SqlBuilder sqlBuilder = new SqlBuilder(this.ProgId);
            //获取单据业务流配置下当前功能单据的业务流配置明细【使用条件,接收人代码,接收人名称,微信,发微信,电话,发短信】
            string sql = sqlBuilder.GetQuerySql(0, "B.USECONDITION,C.PERSONID,C.PERSONNAME,C.WECHAT,C.SENDWECHAT,C.PHONENO,C.NEEDSMS",
                                                string.Format("A.PROGID={0}", LibStringBuilder.GetQuotString(billProgId)), "B.USECONDITION");

            using (IDataReader reader = this.DataAccess.ExecuteDataReader(sql))
            {
                while (reader.Read())
                {
                    //单据业务流配置下当前功能单据 单据业务流配置规则配置 使用条件
                    string useCondition = LibSysUtils.ToString(reader["USECONDITION"]);
                    if (!businessInfoDic.ContainsKey(useCondition))
                    {
                        businessInfoDic.Add(useCondition, new List <BusinessInfo>());
                    }
                    BusinessInfo info = new BusinessInfo();
                    info.PersonId   = LibSysUtils.ToString(reader["PERSONID"]);
                    info.PersonName = LibSysUtils.ToString(reader["PERSONNAME"]);
                    info.WeChat     = LibSysUtils.ToString(reader["WECHAT"]);
                    info.SendWeChat = LibSysUtils.ToBoolean(reader["SENDWECHAT"]);
                    info.PhoneNo    = LibSysUtils.ToString(reader["PHONENO"]);
                    info.NeedSMS    = LibSysUtils.ToBoolean(reader["NEEDSMS"]);
                    businessInfoDic[useCondition].Add(info);
                }
            }
            //遍历字典找到使用条件跟当前功能单据数据相匹配的业务流配置明细
            List <BusinessInfo> curBusinessInfo = null;

            foreach (var item in businessInfoDic)
            {
                if (string.IsNullOrEmpty(item.Key))
                {
                    continue;
                }
                if (LibParseHelper.Parse(item.Key, new List <DataRow>()
                {
                    billMasterRow
                }))
                {
                    curBusinessInfo = item.Value;
                    break;
                }
            }
            //若未找到符合当前功能单据数据相匹配的业务流配置明细,则取默认的无条件的业务流配置明细
            if (curBusinessInfo == null && businessInfoDic.ContainsKey(string.Empty))
            {
                curBusinessInfo = businessInfoDic[string.Empty];
            }
            return(curBusinessInfo);
        }
コード例 #6
0
ファイル: LibParseHelper.cs プロジェクト: liusj666/AxNew
        private static bool ParseCore(string condition, List <DataRow> dataRowList, List <Dictionary <string, object> > dataList)
        {
            bool   result = false;
            Memory memory = new Memory();
            //匹配类似表达式"[A.QTY]>=10 && ([A.MaterialId]=='13212321' || ([A.RANGEID]=='AAA' && [A.SSID]=='9999')) && (([A.DD]=='xxx' || [A.DD]=='xxx1' || [A.DD]=='xxx2') || [A.ZZ]>=0)";
            string           pattern   = @"[[][A-Z]\.\w+[]]";
            MatchCollection  matchList = Regex.Matches(condition, pattern);
            HashSet <string> temp      = new HashSet <string>();

            foreach (var item in matchList)
            {
                string field = item.ToString();
                if (temp.Contains(field))
                {
                    continue;
                }
                temp.Add(field);
                string copyField = field;
                field = field.Remove(0, 1);
                field = field.Remove(field.Length - 1, 1);
                int    tableIndex = (int)field[0] - (int)'A';
                string fieldName  = field.Substring(2, field.Length - 2);
                object value      = null;
                if (dataRowList != null)
                {
                    if (dataRowList.Count < tableIndex + 1)
                    {
                        return(result);
                    }
                    if (!dataRowList[tableIndex].Table.Columns.Contains(fieldName))
                    {
                        return(result);
                    }
                    value = dataRowList[tableIndex][fieldName];
                }
                else if (dataList != null)
                {
                    if (dataList.Count < tableIndex + 1)
                    {
                        return(result);
                    }
                    if (!dataList[tableIndex].ContainsKey(fieldName))
                    {
                        return(result);
                    }
                    value = dataList[tableIndex][fieldName];
                }
                memory.AddObject(fieldName, value);
                condition = condition.Replace(copyField, fieldName);
            }
            Script.Execute("if(" + condition + "){ret=true;}else{ret=false;}", memory);
            result = LibSysUtils.ToBoolean(memory["ret"].value);
            return(result);
        }
コード例 #7
0
ファイル: CrossSiteHelper.cs プロジェクト: liusj666/AxNew
        /// <summary>
        /// 获取用户可访问的下级站点代码列表
        /// </summary>
        /// <param name="userId"></param>
        /// <returns>站点代码与站点信息的字典</returns>
        public static Dictionary <string, LinkSiteInfo> GetCanLoginSlaveSites(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                return(null);
            }
            Dictionary <string, LinkSiteInfo> siteIds = new Dictionary <string, LinkSiteInfo>();

            try
            {
                if (ExistLinkSiteTable == false || ExistUserLinkSiteTable == false)
                {
                    return(null);
                }

                string sql = string.Format("select distinct B.* from AXPUSERSITE A " +
                                           " left join AXPLINKSITE B on A.SITEID = B.SITEID" +
                                           " where A.USERID = {0} and ISSLAVE = 1", LibStringBuilder.GetQuotString(userId));
                LibDataAccess dataAccess = new LibDataAccess();
                string        name       = string.Empty;
                string        id         = string.Empty;
                using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
                {
                    while (reader.Read())
                    {
                        id   = LibSysUtils.ToString(reader["SITEID"]);
                        name = LibSysUtils.ToString(reader["SHORTNAME"]);
                        if (string.IsNullOrEmpty(id) == false)
                        {
                            siteIds[id] = new LinkSiteInfo()
                            {
                                SiteId    = id,
                                SiteName  = LibSysUtils.ToString(reader["SITENAME"]),
                                ShortName = LibSysUtils.ToString(reader["SHORTNAME"]),
                                SiteUrl   = LibSysUtils.ToString(reader["SITEURL"]),
                                SvcUrl    = LibSysUtils.ToString(reader["SVCURL"]),
                                IsSlave   = LibSysUtils.ToBoolean(reader["ISSLAVE"]),
                                IsSendTo  = LibSysUtils.ToBoolean(reader["ISSENDTO"]),
                            };
                        }
                    }
                }
            }
            catch
            {
                //to do log
            }
            return(siteIds);
        }
コード例 #8
0
        private LibBusinessTask GetBusinessTask(string taskId)
        {
            SqlBuilder sqlBuilder = new SqlBuilder("axp.ScheduleTask");
            string     sql        = sqlBuilder.GetQuerySql(0, "A.TASKID,A.PROGID,A.BUSINESSTASKID,A.CALENDARID,A.ISJUSTWORKDAY,A.INTERVALTIME,A.EXECDATE,A.REPEATDATEMARK,A.EXECCONDITION,A.TITLE,A.MAINCONTENT,B.EXECTIME",
                                                           string.Format("A.TASKID={0}", LibStringBuilder.GetQuotString(taskId)), "B.EXECTIME");
            LibDataAccess   dataAccess = new LibDataAccess();
            LibBusinessTask task       = null;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                while (reader.Read())
                {
                    if (task == null)
                    {
                        task = new LibBusinessTask();
                        task.BusinessTaskId = LibSysUtils.ToString(reader["BUSINESSTASKID"]);
                        task.CalendarId     = LibSysUtils.ToString(reader["CALENDARID"]);
                        task.ExecCondition  = LibSysUtils.ToString(reader["ExecCondition"]);
                        task.ExecDate       = LibSysUtils.ToInt32(reader["EXECDATE"]);
                        task.IntervalTime   = LibSysUtils.ToInt32(reader["INTERVALTIME"]);
                        task.IsJustWorkDay  = LibSysUtils.ToBoolean(reader["ISJUSTWORKDAY"]);
                        task.ProgId         = LibSysUtils.ToString(reader["PROGID"]);
                        task.Title          = LibSysUtils.ToString(reader["TITLE"]);
                        task.MainContent    = LibSysUtils.ToString(reader["MAINCONTENT"]);
                        task.RepeatDateMark = LibSysUtils.ToInt32(reader["REPEATDATEMARK"]);
                        task.TaskId         = taskId;
                    }
                    task.ExecTime.Add(LibSysUtils.ToInt32(reader["EXECTIME"]));
                }
            }
            sql = string.Format("select distinct A.TASKID,A.PERSONID,D.DEPTID,C.USERID from AXPSCHEDULETASKPERSON A " +
                                "inner join AXPSCHEDULETASK B on B.TASKID=A.TASKID left join COMPERSON D on D.PERSONID=A.PERSONID inner join AXPUSER C on C.PERSONID=A.PERSONID " +
                                "where B.TASKID={0}", LibStringBuilder.GetQuotString(taskId));
            using (IDataReader reader = dataAccess.ExecuteDataReader(sql, false))
            {
                while (reader.Read())
                {
                    task.Liaison.Add(new LibBusinessTaskLiaison()
                    {
                        PersonId = LibSysUtils.ToString(reader["PERSONID"]),
                        DeptId   = LibSysUtils.ToString(reader["DEPTID"]),
                        UserId   = LibSysUtils.ToString(reader["USERID"])
                    });
                }
            }
            return(task);
        }
コード例 #9
0
ファイル: AxpScheduleTaskBcf.cs プロジェクト: liusj666/AxNew
        private LibBusinessTask AddTask()
        {
            LibBusinessTask task      = new LibBusinessTask();
            DataRow         masterRow = this.DataSet.Tables[0].Rows[0];

            task.BusinessTaskId = LibSysUtils.ToString(masterRow["BUSINESSTASKID"]);
            task.CalendarId     = LibSysUtils.ToString(masterRow["CALENDARID"]);
            task.ExecCondition  = LibSysUtils.ToString(masterRow["ExecCondition"]);
            task.ExecDate       = LibSysUtils.ToInt32(masterRow["EXECDATE"]);
            task.IntervalTime   = LibSysUtils.ToInt32(masterRow["INTERVALTIME"]);
            task.IsJustWorkDay  = LibSysUtils.ToBoolean(masterRow["ISJUSTWORKDAY"]);
            task.ProgId         = LibSysUtils.ToString(masterRow["PROGID"]);
            task.Title          = LibSysUtils.ToString(masterRow["TITLE"]);
            task.MainContent    = LibSysUtils.ToString(masterRow["MAINCONTENT"]);
            task.RepeatDateMark = LibSysUtils.ToInt32(masterRow["REPEATDATEMARK"]);
            task.TaskId         = LibSysUtils.ToString(masterRow["TASKID"]);
            foreach (DataRow curRow in this.DataSet.Tables[1].Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                task.ExecTime.Add(LibSysUtils.ToInt32(curRow["EXECTIME"]));
            }
            string sql = string.Format("select distinct A.TASKID,A.PERSONID,D.DEPTID,C.USERID from AXPSCHEDULETASKPERSON A " +
                                       "inner join AXPSCHEDULETASK B on B.TASKID=A.TASKID left join COMPERSON D on D.PERSONID=A.PERSONID inner join AXPUSER C on C.PERSONID=A.PERSONID " +
                                       "where B.TASKID={0}", LibStringBuilder.GetQuotString(task.TaskId));

            using (IDataReader reader = this.DataAccess.ExecuteDataReader(sql, false))
            {
                while (reader.Read())
                {
                    task.Liaison.Add(new LibBusinessTaskLiaison()
                    {
                        PersonId = LibSysUtils.ToString(reader["PERSONID"]),
                        DeptId   = LibSysUtils.ToString(reader["DEPTID"]),
                        UserId   = LibSysUtils.ToString(reader["USERID"])
                    });
                }
            }
            LibBusinessTaskCache.Default.AddCacheItem(task);
            return(task);
        }
コード例 #10
0
 public void ExecuteDataTables(DataSet dataSet, string storedProcedureName, params object[] parameterValues)
 {
     if (this.Transaction.Running)
     {
         using (IDataReader reader = dataBase.ExecuteReader(this.Transaction.SqlTransaction, storedProcedureName, parameterValues))
         {
             bool isVirtual = false;
             int  index     = 0;
             do
             {
                 do
                 {
                     isVirtual = LibSysUtils.ToBoolean(dataSet.Tables[index].ExtendedProperties[TableProperty.IsVirtual]);
                     if (!isVirtual)
                     {
                         ReadTable(reader, dataSet.Tables[index]);
                     }
                     index++;
                 }while (isVirtual);
             } while (reader.NextResult());
         }
     }
     else
     {
         using (IDataReader reader = dataBase.ExecuteReader(storedProcedureName, parameterValues))
         {
             bool isVirtual = false;
             int  index     = 0;
             do
             {
                 do
                 {
                     isVirtual = LibSysUtils.ToBoolean(dataSet.Tables[index].ExtendedProperties[TableProperty.IsVirtual]);
                     if (!isVirtual)
                     {
                         ReadTable(reader, dataSet.Tables[index]);
                     }
                     index++;
                 }while (isVirtual);
             } while (reader.NextResult());
         }
     }
 }
コード例 #11
0
        /// <summary>
        /// 单点登录。
        /// 1.检查当前本站点系统账户中是否存在userId,如果否则不予登录
        /// 2.使用userId、loginToken等访问sso管理站点的CheckSSOLoginState方法检验是否已经SSO登录过。
        ///   如果未登录过则不予登录。
        /// 3.判断当前站点中userId是否已经登录过,如果是则使用对应的LibHandle信息返回,否则则新构造LibHande并返回。
        /// </summary>
        ///<param name="ssoInfo">单点登录信息</param>
        /// <returns></returns>
        public LoginInfo SSOLogin(SSOInfo ssoInfo)
        {
            LoginInfo loginInfo = new LoginInfo()
            {
                IsUsed = true, IsOverUser = false
            };

            SqlBuilder    builder    = new SqlBuilder("axp.User");
            string        sql        = builder.GetQuerySql(0, "A.PERSONID,A.PERSONNAME,A.ROLEID,A.WALLPAPER,A.WALLPAPERSTRETCH", string.Format("A.USERID={0} And A.ISUSE=1", LibStringBuilder.GetQuotString(ssoInfo.UserId)));
            LibDataAccess dataAccess = new LibDataAccess();
            string        roleId     = string.Empty;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                if (reader.Read())
                {
                    loginInfo.PersonId   = LibSysUtils.ToString(reader[0]);
                    loginInfo.PersonName = LibSysUtils.ToString(reader[1]);
                    roleId = LibSysUtils.ToString(reader[2]);
                    loginInfo.Wallpaper = LibSysUtils.ToString(reader[3]);
                    loginInfo.Stretch   = LibSysUtils.ToBoolean(reader[4]);
                    loginInfo.IsUsed    = false;
                }
                else
                {
                    return(loginInfo);
                }
            }
            if (CheckToken(ssoInfo))
            {
                // 授权成功
                LibHandle handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, ssoInfo.UserId);
                if (handle == null)
                {
                    handle = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.PC, ssoInfo.UserId, loginInfo.PersonId, loginInfo.PersonName, roleId);
                }
                loginInfo.Handle = handle.Handle;
                return(loginInfo);
            }
            return(loginInfo);
        }
コード例 #12
0
ファイル: CrossSiteHelper.cs プロジェクト: liusj666/AxNew
        /// <summary>
        /// 将同步数据的配置更新到数据库
        /// </summary>
        /// <param name="dt"></param>
        public static void UpdateSyncDataSetting(DataTable dt)
        {
            if (dt == null || ExistAxpSyncDataInfo == false || ExistLinkSiteTable == false)
            {
                return;
            }
            List <string> sqlList = new List <string>();
            string        setting = string.Empty;

            foreach (DataRow row in dt.Rows)
            {
                setting = LibSysUtils.ToString(row["SETTINGID"]);
                if (string.IsNullOrEmpty(setting))
                {
                    continue;
                }
                sqlList.Add(string.Format("update AXPSYNCDATASETTING set ISSYNCTO = {0} where SETTINGID = {1}",
                                          LibSysUtils.ToBoolean(row["ISSYNCTO"]) ? 1 : 0, LibStringBuilder.GetQuotString(setting)));
            }
            LibDataAccess dataAccess = new LibDataAccess();

            dataAccess.ExecuteNonQuery(sqlList);
        }
コード例 #13
0
        /// <summary>
        /// 一般站点登录SSO管理站点(SSO管理站点才有用,前端不需要访问)
        /// </summary>
        /// <param name="userId">用户名</param>
        /// <param name="pwd">密码</param>
        /// <returns></returns>
        public string GetTokenByUserId(string userId, string pwd)
        {
            if (!EnvProvider.Default.IsSSOManageSite)
            {
                return(string.Empty);
            }
            LoginInfo     loginInfo  = new LoginInfo();
            SqlBuilder    builder    = new SqlBuilder("axp.User");
            string        sql        = builder.GetQuerySql(0, "A.PERSONID,A.PERSONNAME,A.ROLEID,A.WALLPAPER,A.WALLPAPERSTRETCH", string.Format("A.USERID={0} And A.USERPASSWORD={1} And A.ISUSE=1", LibStringBuilder.GetQuotString(userId), LibStringBuilder.GetQuotString(pwd)));
            LibDataAccess dataAccess = new LibDataAccess();
            string        roleId     = string.Empty;
            bool          exists     = false;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                if (reader.Read())
                {
                    loginInfo.PersonId   = LibSysUtils.ToString(reader[0]);
                    loginInfo.PersonName = LibSysUtils.ToString(reader[1]);
                    roleId = LibSysUtils.ToString(reader[2]);
                    loginInfo.Wallpaper = LibSysUtils.ToString(reader[3]);
                    loginInfo.Stretch   = LibSysUtils.ToBoolean(reader[4]);
                    exists = true;
                }
            }
            if (exists)
            {
                LibHandle handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);
                if (handle != null)
                {
                    return(handle.GetToCheckToken());
                }
                handle = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.PC, userId, loginInfo.PersonId, loginInfo.PersonName, roleId);
                return(handle.Token);
            }
            return(string.Empty);
        }
コード例 #14
0
        protected override void BeforeUpdate()
        {
            base.BeforeUpdate();
            DataRow masterRow = this.DataSet.Tables[0].Rows[0];

            #region 操作权限标识设置
            HashSet <string> hasSet = new HashSet <string>();
            foreach (DataRow curRow in this.DataSet.Tables[1].Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                DataRow[] subRows = curRow.GetChildRows(DmDirectoryBcfTemplate.PermissionDetailSubRelationName, DataRowVersion.Current);
                int       mark    = 0;
                foreach (DataRow subRow in subRows)
                {
                    if (LibSysUtils.ToBoolean(subRow["CANUSE"]))
                    {
                        mark += LibSysUtils.ToInt32(subRow["OPERATEPOWERID"]);
                    }
                }
                curRow["OPERATEMARK"] = mark;
                string type_BelongID = string.Format("{0}_{1}", LibSysUtils.ToInt32(curRow["BELONGTYPE"]), LibSysUtils.ToString(curRow["BELONGID"]));
                if (hasSet.Contains(type_BelongID))
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("权限行{0}的拥有者重复。", curRow["ROWNO"]));
                }
                else
                {
                    hasSet.Add(type_BelongID);
                }
            }
            #endregion



            try
            {
                if (masterRow.RowState == DataRowState.Added)
                {
                    //添加前设置目录文件夹对应的文件夹名称
                    string dirName = Guid.NewGuid().ToString().ToUpper(); //新的文件夹名称,用于对应新创建的文件夹
                    masterRow["DIRPATH"] = dirName;                       //保存对应的文件夹路径

                    #region 检查管理权限
                    //根据权限设置,确定是否采用前台传递的目录数据。虽然根据权限设置前端控制不显示相关页面,但需要防止前端伪造数据。
                    DirTypeEnum dirType     = (DirTypeEnum)LibSysUtils.ToInt32(masterRow["DIRTYPE"]);
                    string      parentDirId = LibSysUtils.ToString(masterRow["PARENTDIRID"]);
                    if (dirType == DirTypeEnum.Public && string.IsNullOrEmpty(parentDirId) == false)
                    {
                        //公共目录才进行检查。如果父目录为空,则应为超级管理员创建也不用检查。
                        if (DMPermissionControl.Default.HasPermission(this.Handle, parentDirId, string.Empty, DMFuncPermissionEnum.Manage) == false)
                        {
                            //新增时如果对父目录没有管理权限,则设置了目录权限也没用。
                            this.DataSet.Tables[2].RejectChanges();
                            this.DataSet.Tables[1].RejectChanges();
                        }
                    }
                    #endregion
                }
                else
                {
                    string dirId = LibSysUtils.ToString(masterRow["DIRID"]);
                    #region 检查管理权限
                    //根据权限设置,确定是否采用前台传递的目录数据。虽然根据权限设置前端控制不显示相关页面,但需要防止前端伪造数据。
                    DirTypeEnum dirType = (DirTypeEnum)LibSysUtils.ToInt32(masterRow["DIRTYPE"]);
                    if (dirType == DirTypeEnum.Public)
                    {
                        //公共目录才进行检查。
                        if (DMPermissionControl.Default.HasPermission(this.Handle, dirId, string.Empty, DMFuncPermissionEnum.Manage) == false)
                        {
                            //修改时如果对目录没有管理权限,则设置了目录权限也没用。
                            this.DataSet.Tables[2].RejectChanges();
                            this.DataSet.Tables[1].RejectChanges();
                        }
                    }
                    #endregion

                    string oldParentID     = LibSysUtils.ToString(masterRow["PARENTDIRID", DataRowVersion.Original]);
                    string currentParentID = LibSysUtils.ToString(masterRow["PARENTDIRID"]);
                    if (oldParentID.Equals(currentParentID) == false)
                    {
                        DirLinkAddress dirLink = new DirLinkAddress(LibSysUtils.ToString(masterRow["DIRID", DataRowVersion.Original]), this.DataAccess);
                        if (dirLink.SubDirIdList.Contains(currentParentID))
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, "不能将子目录设置为父目录!");
                            return;
                        }
                        _OldDirPath = string.Empty;
                        //如果是修改的,则记录修改前的SavePath
                        string path = DMCommonMethod.GetDMRootPath((DirTypeEnum)LibSysUtils.ToInt32(masterRow["DIRTYPE"]));
                        //string path = Path.Combine(EnvProvider.Default.DocumentsPath, (LibSysUtils.ToInt32(masterRow["DIRTYPE"]) == 0 ? "" : "my"));//根据是否为私有类型在路径下增加my
                        string relativePath = dirLink.DirSavePath;
                        _OldDirPath = Path.Combine(path, relativePath);
                    }
                }
            }
            catch (Exception exp)
            {
                this.ManagerMessage.AddMessage(LibMessageKind.Error, "保存目录失败,原因:" + exp.Message);
                throw exp;
            }
        }
コード例 #15
0
        public void ExportRadXMLData(string filePath, DataSet dataSet, HashSet <int> tableIndex = null, bool dbField = false)
        {
            Stopwatch watch = new Stopwatch();

            watch.Start();
            #region 文件名,路径
            string templateFile = System.IO.Path.Combine(AxCRL.Comm.Runtime.EnvProvider.Default.RuningPath, "TempData", "ExcelModel", "List.xml");
            String bodyXML      = File.ReadAllText(templateFile, Encoding.UTF8);
            #endregion
            StringBuilder names     = new StringBuilder("");
            StringBuilder Worksheet = new StringBuilder("");
            for (int index = 0; index < dataSet.Tables.Count; index++)
            {
                StringBuilder headCols = new StringBuilder("");
                StringBuilder rows     = new StringBuilder("");
                if (tableIndex != null && !tableIndex.Contains(index))
                {
                    continue;
                }
                System.Data.DataTable dt = dataSet.Tables[index];
                string tableName         = string.Empty;
                if (dbField)
                {
                    tableName = dt.TableName;
                }
                else
                {
                    if (dt.ExtendedProperties.ContainsKey(TableProperty.DisplayText))
                    {
                        tableName = LibSysUtils.ToString(dt.ExtendedProperties[TableProperty.DisplayText]);
                    }
                    else
                    {
                        tableName = dt.TableName;
                    }
                }
                names.AppendLine(String.Format("<NamedRange ss:Name=\"{0}\" ss:RefersTo=\"={0}!R1C1:R{1}C{2}\"/>", tableName, (dt.Rows.Count + 1).ToString(), dt.Columns.Count.ToString()));
                //如果存在文本列名相同时则需要此结构
                Dictionary <string, int> sameColDic = null;
                if (!dbField)
                {
                    sameColDic = new Dictionary <string, int>();
                }
                #region 填充表头
                foreach (DataColumn col in dt.Columns)
                {
                    string name = dbField ? col.ColumnName : string.IsNullOrEmpty(col.Caption) ? col.ColumnName : col.Caption;
                    if (sameColDic.ContainsKey(name))
                    {
                        sameColDic[name]++;
                        name += sameColDic[name].ToString();
                    }
                    else
                    {
                        sameColDic.Add(name, 0);
                    }
                    headCols.Append(String.Format("<Cell><Data ss:Type=\"String\">{0}</Data><NamedCell ss:Name=\"{1}\"/></Cell>\r\n", name, tableName));
                }
                #endregion
                #region 表格具体内容
                string type  = string.Empty;
                object value = string.Empty;
                foreach (DataRow curRow in dt.Rows)
                {
                    if (curRow.RowState == DataRowState.Deleted)
                    {
                        continue;
                    }
                    StringBuilder builder = new StringBuilder();
                    #region 填充行的格式
                    rows.Append("<Row>\r\n");
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        string style = string.Empty;
                        #region 填充的值和类型
                        DataColumn     col      = dt.Columns[i];
                        LibDataType    dataType = (LibDataType)col.ExtendedProperties[FieldProperty.DataType];
                        LibControlType ctrlType = (LibControlType)col.ExtendedProperties[FieldProperty.ControlType];
                        switch (dataType)
                        {
                        case LibDataType.Text:
                        case LibDataType.NText:
                        case LibDataType.Binary:
                        case LibDataType.Int64:
                            if (dataType == LibDataType.Int64 && ctrlType == LibControlType.DateTime)
                            {
                                long dateTime = LibSysUtils.ToInt64(curRow[col]);
                                if (dateTime != 0)
                                {
                                    type  = "DateTime";
                                    style = string.Format(" ss:StyleID=\"s23\"");
                                    value = LibDateUtils.LibDateToDateTime(dateTime).ToString("yyyy-MM-ddTHH:mm:ss");
                                }
                                else
                                {
                                    type  = "String";
                                    value = string.Empty;
                                }
                            }
                            else
                            {
                                type  = "String";
                                value = curRow[col];
                            }
                            break;

                        case LibDataType.Int32:
                        case LibDataType.Numeric:
                        case LibDataType.Float:
                        case LibDataType.Double:
                        case LibDataType.Byte:
                            if (dataType == LibDataType.Int32 && ctrlType == LibControlType.Date)
                            {
                                int date = LibSysUtils.ToInt32(curRow[col]);
                                if (date != 0)
                                {
                                    type  = "DateTime";
                                    value = string.Format("{0}T00:00:00.000", LibDateUtils.LibDateToDateTime(date).ToString("yyyy-MM-dd"));
                                    style = string.Format(" ss:StyleID=\"s23\"");
                                }
                                else
                                {
                                    type  = "String";
                                    value = string.Empty;
                                }
                            }
                            else if (dataType == LibDataType.Int32 && ctrlType == LibControlType.HourMinute)
                            {
                                type = "Number";
                                string time = LibSysUtils.ToString(curRow[col]);
                                switch (time.Length)
                                {
                                case 1: time = "000" + time + "00"; break;

                                case 2: time = "00" + time + "00"; break;

                                case 3: time = "0" + time + "00"; break;

                                case 4: time = time + "00"; break;

                                default: time = time + "00"; break;
                                }
                                time  = "20150101" + time;
                                value = LibStringBuilder.GetQuotObject(LibDateUtils.LibDateToDateTime(LibSysUtils.ToInt64(time)).ToString("HH:mm"));
                            }
                            else if (dataType == LibDataType.Numeric)
                            {
                                type  = "Number";
                                style = string.Format(" ss:StyleID=\"s24\"");
                                value = curRow[col];
                            }
                            else
                            {
                                type  = "Number";
                                value = curRow[col];
                            }

                            break;

                        case LibDataType.Boolean:
                            type  = "Number";
                            value = LibSysUtils.ToBoolean(curRow[col.ColumnName]) ? 1 : 0;
                            break;
                        }
                        #endregion
                        rows.Append(string.Format("<Cell{3}><Data ss:Type=\"{0}\">{1}</Data><NamedCell ss:Name=\"{2}\"/></Cell>\r\n", type, value, tableName, style));
                    }
                    rows.Append("</Row>\r\n");
                    #endregion
                }
                #endregion
                #region 构建表格模板
                Worksheet.AppendLine(string.Format("<Worksheet ss:Name=\"{0}\">\n<Table ss:ExpandedColumnCount=\"{1}\" ss:ExpandedRowCount=\"{2}\" x:FullColumns=\"1\" x:FullRows=\"1\" ss:DefaultRowHeight=\"12\">", tableName, dt.Columns.Count.ToString(), (dt.Rows.Count + 1).ToString()));
                Worksheet.AppendLine(string.Format(@"<Row>
{0}
</Row>
{1}
</Table>", headCols.ToString(), rows.ToString()));
                Worksheet.AppendLine("<WorksheetOptions xmlns=\"urn:schemas-microsoft-com:office:excel\">");
                Worksheet.AppendLine("<PageSetup>");
                Worksheet.AppendLine("<Header x:Data=\"&amp;A\"/>");
                Worksheet.AppendLine("<Footer x:Data=\"Page &amp;P\"/>");
                Worksheet.AppendLine(@"</PageSetup>
<Selected/>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>");
                #endregion
            }
            #region 将数据替换到模板中
            DateTime datetime = DateTime.Now;
            bodyXML = bodyXML.Replace("{##Author##}", "Administrator");
            bodyXML = bodyXML.Replace("{##Created##}", datetime.ToString());
            bodyXML = bodyXML.Replace("{##Names##}", names.ToString());
            bodyXML = bodyXML.Replace("{##Worksheet##}", Worksheet.ToString());
            #endregion

            try
            {
                string path = filePath;
                using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create))
                {
                    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs))
                    {
                        sw.Write(bodyXML);
                    }
                }
                watch.Stop();
                string time = watch.ElapsedMilliseconds.ToString();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #16
0
        public void ExportToExcel(string filePath, DataSet dataSet, HashSet <int> tableIndex = null, bool dbField = false)
        {
            try
            {
                IList <string> dmlSqlList = new List <string>();
                IList <string> sqlList    = new List <string>();
                for (int index = 0; index < dataSet.Tables.Count; index++)
                {
                    if (tableIndex != null && !tableIndex.Contains(index))
                    {
                        continue;
                    }
                    System.Data.DataTable table = dataSet.Tables[index];
                    //如果存在文本列名相同时则需要此结构
                    Dictionary <string, int> sameColDic = null;
                    if (!dbField)
                    {
                        sameColDic = new Dictionary <string, int>();
                    }
                    string        columnStr           = string.Empty;
                    StringBuilder columnDefineBuilder = new StringBuilder();
                    StringBuilder columnBuilder       = new StringBuilder();
                    foreach (DataColumn col in table.Columns)
                    {
                        string name = dbField ? col.ColumnName : string.IsNullOrEmpty(col.Caption) ? col.ColumnName : col.Caption;
                        if (sameColDic.ContainsKey(name))
                        {
                            sameColDic[name]++;
                            name += sameColDic[name].ToString();
                        }
                        else
                        {
                            sameColDic.Add(name, 0);
                        }
                        columnBuilder.AppendFormat("{0},", name);
                        LibDataType dataType = (LibDataType)col.ExtendedProperties[FieldProperty.DataType];
                        switch (dataType)
                        {
                        case LibDataType.Text:
                        case LibDataType.NText:
                            //columnDefineBuilder.AppendFormat("{0} String,", name);
                            columnDefineBuilder.AppendFormat("{0} memo,", name);
                            break;

                        case LibDataType.Int32:
                            LibControlType ctrlType = (LibControlType)col.ExtendedProperties[FieldProperty.ControlType];
                            if (ctrlType == LibControlType.Date)
                            {
                                columnDefineBuilder.AppendFormat("{0} Date,", name);
                            }
                            else if (ctrlType == LibControlType.HourMinute)
                            {
                                columnDefineBuilder.AppendFormat("{0} String,", name);
                            }
                            else
                            {
                                columnDefineBuilder.AppendFormat("{0} Integer,", name);
                            }
                            break;

                        case LibDataType.Int64:
                            ctrlType = (LibControlType)col.ExtendedProperties[FieldProperty.ControlType];
                            if (ctrlType == LibControlType.DateTime)
                            {
                                columnDefineBuilder.AppendFormat("{0} DateTime,", name);
                            }
                            else
                            {
                                columnDefineBuilder.AppendFormat("{0} Long,", name);
                            }
                            break;

                        case LibDataType.Numeric:
                            columnDefineBuilder.AppendFormat("{0} Currency,", name);
                            break;

                        case LibDataType.Float:
                            columnDefineBuilder.AppendFormat("{0} Single,", name);
                            break;

                        case LibDataType.Double:
                            columnDefineBuilder.AppendFormat("{0} Double,", name);
                            break;

                        case LibDataType.Byte:
                            columnDefineBuilder.AppendFormat("{0} Integer,", name);
                            break;

                        case LibDataType.Boolean:
                            columnDefineBuilder.AppendFormat("{0} Integer,", name);
                            break;

                        case LibDataType.Binary:
                            columnDefineBuilder.AppendFormat("{0} memo,", name);
                            break;
                        }
                    }
                    if (columnBuilder.Length > 0)
                    {
                        columnBuilder.Remove(columnBuilder.Length - 1, 1);
                        columnDefineBuilder.Remove(columnDefineBuilder.Length - 1, 1);
                    }
                    columnStr = columnBuilder.ToString();
                    string tableName = string.Empty;
                    if (dbField)
                    {
                        tableName = table.TableName;
                    }
                    else
                    {
                        if (table.ExtendedProperties.ContainsKey(TableProperty.DisplayText))
                        {
                            tableName = LibSysUtils.ToString(table.ExtendedProperties[TableProperty.DisplayText]);
                        }
                        else
                        {
                            tableName = table.TableName;
                        }
                    }
                    dmlSqlList.Add(string.Format("CREATE TABLE {0} ({1})", tableName, columnDefineBuilder.ToString()));
                    foreach (DataRow curRow in table.Rows)
                    {
                        if (curRow.RowState == DataRowState.Deleted)
                        {
                            continue;
                        }
                        StringBuilder builder = new StringBuilder();
                        for (int i = 0; i < table.Columns.Count; i++)
                        {
                            DataColumn     col      = table.Columns[i];
                            LibDataType    dataType = (LibDataType)col.ExtendedProperties[FieldProperty.DataType];
                            LibControlType ctrlType = (LibControlType)col.ExtendedProperties[FieldProperty.ControlType];
                            switch (dataType)
                            {
                            case LibDataType.Text:
                            case LibDataType.NText:
                            case LibDataType.Binary:
                            case LibDataType.Int64:
                                if (dataType == LibDataType.Int64 && ctrlType == LibControlType.DateTime)
                                {
                                    long dateTime = LibSysUtils.ToInt64(curRow[col]);
                                    if (dateTime != 0)
                                    {
                                        builder.AppendFormat("{0},", LibStringBuilder.GetQuotObject(LibDateUtils.LibDateToDateTime(dateTime).ToString("yyyy-MM-dd HH:mm:ss")));
                                    }
                                    else
                                    {
                                        builder.Append("null,");
                                    }
                                }
                                else
                                {
                                    builder.AppendFormat("{0},", LibStringBuilder.GetQuotObject(curRow[col]));
                                }
                                break;

                            case LibDataType.Int32:
                            case LibDataType.Numeric:
                            case LibDataType.Float:
                            case LibDataType.Double:
                            case LibDataType.Byte:
                                if (dataType == LibDataType.Int32 && ctrlType == LibControlType.Date)
                                {
                                    int date = LibSysUtils.ToInt32(curRow[col]);
                                    if (date != 0)
                                    {
                                        builder.AppendFormat("{0},", LibStringBuilder.GetQuotObject(LibDateUtils.LibDateToDateTime(date).ToLongDateString()));
                                    }
                                    else
                                    {
                                        builder.Append("null,");
                                    }
                                }
                                else if (dataType == LibDataType.Int32 && ctrlType == LibControlType.HourMinute)
                                {
                                    string time = LibSysUtils.ToString(curRow[col]);
                                    switch (time.Length)
                                    {
                                    case 1: time = "000" + time + "00"; break;

                                    case 2: time = "00" + time + "00"; break;

                                    case 3: time = "0" + time + "00"; break;

                                    case 4: time = time + "00"; break;

                                    default: time = time + "00"; break;
                                    }
                                    time = "20150101" + time;
                                    builder.AppendFormat("{0},", LibStringBuilder.GetQuotObject(LibDateUtils.LibDateToDateTime(LibSysUtils.ToInt64(time)).ToString("HH:mm")));
                                }
                                else
                                {
                                    builder.AppendFormat("{0},", curRow[col]);
                                }
                                break;

                            case LibDataType.Boolean:
                                builder.AppendFormat("{0},", LibSysUtils.ToBoolean(curRow[col.ColumnName]) ? 1 : 0);
                                break;
                            }
                        }
                        if (builder.Length > 0)
                        {
                            builder.Remove(builder.Length - 1, 1);
                        }
                        sqlList.Add(string.Format("insert into {0}({1}) values({2})", tableName, columnBuilder, builder.ToString()));
                    }
                }

                string connStr = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}'; Extended Properties='Excel 8.0;HDR=Yes;IMEX=2,ReadOnly=False'", filePath);
                using (OleDbConnection conn = new OleDbConnection(connStr))
                {
                    conn.Open();
                    try
                    {
                        foreach (string sql in dmlSqlList)
                        {
                            using (OleDbCommand command = new OleDbCommand(sql, conn))
                            {
                                command.ExecuteNonQuery();
                            }
                        }
                        foreach (string sql in sqlList)
                        {
                            using (OleDbCommand command = new OleDbCommand(sql, conn))
                            {
                                command.ExecuteNonQuery();
                            }
                        }
                    }
                    finally
                    {
                        conn.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                string path = System.IO.Path.Combine(AxCRL.Comm.Runtime.EnvProvider.Default.MainPath, "Output", "Error", "Excel", string.Format("{0}.txt", DateTime.Now.Ticks));
                using (System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create))
                {
                    using (System.IO.StreamWriter sw = new System.IO.StreamWriter(fs))
                    {
                        sw.Write(ex);
                    }
                }
                throw;
            }
        }
コード例 #17
0
ファイル: CodingRuleHelper.cs プロジェクト: liusj666/AxNew
        public static void CheckRuleData(LibBcfData bcf)
        {
            bool    isCodingRule   = bcf.ProgId == "com.CodingRule";
            string  totalLenName   = isCodingRule ? "CODINGRULELENGTH" : "BARCODELENGTH";
            DataRow masterRow      = bcf.DataSet.Tables[0].Rows[0];
            int     barcodeLength  = 0;
            bool    hasDy          = false;
            bool    hasSerialNum   = false;
            int     maxRowNo       = 0;
            int     serialNumRowNo = 0;

            foreach (DataRow curRow in bcf.DataSet.Tables[1].Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                int rowNo = LibSysUtils.ToInt32(curRow["ROWNO"]);
                if (maxRowNo < rowNo)
                {
                    maxRowNo = rowNo;
                }
                int       sectionLength     = LibSysUtils.ToInt32(curRow["SECTIONLENGTH"]);
                DataRow[] childRows         = curRow.GetChildRows(bcf.DataSet.Relations[1]);
                bool      hasDetail         = false;
                BarcodeRuleSectionType type = (BarcodeRuleSectionType)LibSysUtils.ToInt32(curRow["SECTIONTYPE"]);
                if (type == BarcodeRuleSectionType.Dynamic)
                {
                    if (!hasDy)
                    {
                        hasDy = true;
                    }
                    if (string.IsNullOrEmpty(LibSysUtils.ToString(curRow["FIELDNAME"])))
                    {
                        bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}设定为动态段,字段名不能为空。", rowNo));
                    }
                    foreach (DataRow subRow in childRows)
                    {
                        if (subRow.RowState == DataRowState.Deleted)
                        {
                            continue;
                        }
                        if (!hasDetail)
                        {
                            hasDetail = true;
                        }
                        int sectionValueLen = LibSysUtils.ToString(subRow["SECTIONVALUE"]).Length;
                        if (sectionLength != sectionValueLen)
                        {
                            bcf.ManagerMessage.AddMessage(LibMessageKind.Error,
                                                          string.Format("行{0}的编码段长度为{1},子行{2}的编码值长度为{3}。长度须相等。",
                                                                        rowNo, sectionLength, LibSysUtils.ToInt32(subRow["ROWNO"]), sectionValueLen));
                        }
                    }
                }
                else
                {
                    if (!string.IsNullOrEmpty(LibSysUtils.ToString(curRow["FIELDNAME"])))
                    {
                        bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}非动态段,字段名不能有值。", rowNo));
                    }
                    if (LibSysUtils.ToBoolean(curRow["DYRULEDETAIL"]))
                    {
                        bcf.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("行{0}非动态段,不能有动态规则明细。", rowNo));
                    }
                }
                switch (type)
                {
                case BarcodeRuleSectionType.SerialNum:
                    if (hasSerialNum)
                    {
                        bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细里不能同时设置多笔流水号。");
                    }
                    else
                    {
                        hasSerialNum = true;
                    }
                    serialNumRowNo = rowNo;
                    if (sectionLength < 3)
                    {
                        bcf.ManagerMessage.AddMessage(LibMessageKind.Warn, "流水码的编码长度建议最少大于3");
                    }
                    break;

                case BarcodeRuleSectionType.DateL:
                    if (sectionLength != 8)
                    {
                        curRow["SECTIONLENGTH"] = 8;
                    }
                    break;

                case BarcodeRuleSectionType.DateL1:
                    if (sectionLength != 8)
                    {
                        curRow["SECTIONLENGTH"] = 4;
                    }
                    break;

                case BarcodeRuleSectionType.DateS:
                case BarcodeRuleSectionType.DateS1:
                case BarcodeRuleSectionType.DateAB:
                    if (sectionLength != 6)
                    {
                        curRow["SECTIONLENGTH"] = 6;
                    }
                    break;

                case BarcodeRuleSectionType.DateL16:
                    if (sectionLength != 7)
                    {
                        curRow["SECTIONLENGTH"] = 7;
                    }
                    break;

                case BarcodeRuleSectionType.DateS16:
                    if (sectionLength != 5)
                    {
                        curRow["SECTIONLENGTH"] = 5;
                    }
                    break;

                default:
                    break;
                }
                if (LibSysUtils.ToBoolean(curRow["DYRULEDETAIL"]) != hasDetail)
                {
                    curRow["DYRULEDETAIL"] = hasDetail;
                }
                barcodeLength += LibSysUtils.ToInt32(curRow["SECTIONLENGTH"]);
            }
            if (!hasSerialNum)
            {
                bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细里需存在一笔流水号。");
            }
            else if (serialNumRowNo != maxRowNo)
            {
                bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细里的流水号必须是最后一笔数据。");
            }
            if (hasDy && string.IsNullOrEmpty(LibSysUtils.ToString(masterRow["PROGID"])))
            {
                bcf.ManagerMessage.AddMessage(LibMessageKind.Error, "编码规则明细存在动态段,表头功能字段不能为空。");
            }
            if (LibSysUtils.ToInt32(masterRow[totalLenName]) != barcodeLength)
            {
                masterRow[totalLenName] = barcodeLength;
            }
        }
コード例 #18
0
        protected override void BeforeUpdate()
        {
            DataRow masterRow      = this.DataSet.Tables[0].Rows[0];
            bool    isWorkSaturday = LibSysUtils.ToBoolean(masterRow["ISWORKSATURDAY"]);
            bool    isWorkSunday   = LibSysUtils.ToBoolean(masterRow["ISWORKSUNDAY"]);

            foreach (DataRow curRow in this.DataSet.Tables[1].Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                int workMark     = 0;
                int workDayCount = 0;
                int year         = LibSysUtils.ToInt32(curRow["YEAR"]);
                int month        = LibSysUtils.ToInt32(curRow["MONTH"]);
                int days         = DateTime.DaysInMonth(year, month);
                Dictionary <int, bool> specialDic = new Dictionary <int, bool>();
                DataRow[] childRows = curRow.GetChildRows("COMCALENDARDETAIL_COMHOLIDAYDETAIL");
                foreach (DataRow subRow in childRows)
                {
                    int dayNum = LibDateUtils.LibDateToDateTime(LibSysUtils.ToInt32(subRow["HOLIDAYDATE"])).Day;
                    specialDic.Add(dayNum, LibSysUtils.ToBoolean(subRow["ISWORK"]));
                }
                for (int i = 0; i < days; i++)
                {
                    int date = i + 1;
                    if (specialDic.ContainsKey(date))
                    {
                        if (specialDic[date])
                        {
                            workMark += (int)Math.Pow(2, i);
                            workDayCount++;
                        }
                        continue;
                    }
                    DayOfWeek week = new DateTime(year, month, i + 1).DayOfWeek;
                    if (week != DayOfWeek.Saturday && week != DayOfWeek.Sunday)
                    {
                        workMark += (int)Math.Pow(2, i);
                        workDayCount++;
                    }
                    else
                    {
                        if ((week == DayOfWeek.Saturday && isWorkSaturday == true) || (week == DayOfWeek.Sunday && isWorkSunday == true))
                        {
                            workMark += (int)Math.Pow(2, i);
                            workDayCount++;
                        }
                    }
                }
                curRow.BeginEdit();
                try
                {
                    curRow["WEEKDAY"]    = workDayCount;
                    curRow["NONWORKDAY"] = days - workDayCount;
                    curRow["WORKMARK"]   = workMark;
                }
                finally
                {
                    curRow.EndEdit();
                }
            }
        }
コード例 #19
0
        /// <summary>
        /// 单据业务流配置 保存前验证【不能出现相同的功能配置;不能出现相同的使用条件;相同的使用条件中不能出现相同的人;发短信或发微信时,接收人的电话或微信须存在】
        /// </summary>
        protected override void BeforeUpdate()
        {
            DataRow masterRow = this.DataSet.Tables[0].Rows[0];
            // 不能出现相同的功能配置
            string sql = string.Format("select PROGID from AXPBUSINESSFLOWCONFIG where BUSINESSFLOWCONFIGID<>{0} and PROGID={1}", LibStringBuilder.GetQuotObject(masterRow["BUSINESSFLOWCONFIGID"]), LibStringBuilder.GetQuotObject(masterRow["PROGID"]));

            if (!string.IsNullOrEmpty(LibSysUtils.ToString(this.DataAccess.ExecuteScalar(sql))))
            {
                this.ManagerMessage.AddMessage(LibMessageKind.Error, "当前功能已存在单据业务流配置主数据,不能重复建立");
            }
            //不能出现相同的使用条件;相同的使用条件中不能出现相同的人;发短信或发微信时,接收人的电话或微信须存在
            List <string> conditionList = new List <string>();
            DataTable     subTable      = this.DataSet.Tables[1];

            foreach (DataRow curRow in subTable.Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                //不能出现相同的使用条件
                string useCondition = LibSysUtils.ToString(curRow["USECONDITION"]);
                if (conditionList.Contains(useCondition))
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("单据业务流配置规则中行标识{0}的使用条件存在重复", LibSysUtils.ToInt32(curRow["ROW_ID"])));
                }
                else
                {
                    conditionList.Add(useCondition);
                }

                #region 相同的使用条件中不能出现相同的人;发短信或发微信时,接收人的电话或微信须存在
                List <string> personList = new List <string>();
                DataRow[]     childRows  = curRow.GetChildRows(this.DataSet.Relations[1]);
                if (childRows != null)
                {
                    foreach (DataRow childRow in childRows)
                    {
                        if (childRow.RowState == DataRowState.Deleted)
                        {
                            continue;
                        }
                        //相同的使用条件中不能出现相同的人
                        string personId = LibSysUtils.ToString(childRow["PERSONID"]);
                        if (personList.Contains(personId))
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("单据业务流配置规则中行标识{0}下业务流配置明细中行标识{1}的接收人存在重复",
                                                                                               LibSysUtils.ToInt32(childRow["PARENTROWID"]), LibSysUtils.ToInt32(childRow["ROW_ID"])));
                        }
                        else
                        {
                            personList.Add(personId);
                        }
                        //发短信或发微信时,接收人的电话或微信须存在
                        string phoneNo    = LibSysUtils.ToString(childRow["PHONENO"]);
                        string weChat     = LibSysUtils.ToString(childRow["WECHAT"]);
                        bool   needSms    = LibSysUtils.ToBoolean(childRow["NEEDSMS"]);
                        bool   sendWeChat = LibSysUtils.ToBoolean(childRow["SENDWECHAT"]);
                        if (string.IsNullOrWhiteSpace(weChat) && sendWeChat)
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("单据业务流配置规则中行标识{0}下业务流配置明细中行标识{1}的接收人的微信不存在,无法发微信",
                                                                                               LibSysUtils.ToInt32(childRow["PARENTROWID"]), LibSysUtils.ToInt32(childRow["ROW_ID"])));
                        }
                        if (string.IsNullOrWhiteSpace(phoneNo) && needSms)
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("单据业务流配置规则中行标识{0}下业务流配置明细中行标识{1}的接收人的电话不存在,无法发短信",
                                                                                               LibSysUtils.ToInt32(childRow["PARENTROWID"]), LibSysUtils.ToInt32(childRow["ROW_ID"])));
                        }
                    }
                }
                #endregion
            }
        }
コード例 #20
0
        private static void InitBusinessTask()
        {
            Dictionary <string, LibBusinessTask> taskList = new Dictionary <string, LibBusinessTask>();
            int        currentDate = LibDateUtils.GetCurrentDate();
            SqlBuilder sqlBuilder  = new SqlBuilder("axp.ScheduleTask");
            string     sql         = sqlBuilder.GetQuerySql(0, "A.TASKID,A.PROGID,A.BUSINESSTASKID,A.CALENDARID,A.ISJUSTWORKDAY,A.INTERVALTIME,A.EXECDATE,A.REPEATDATEMARK,A.EXECCONDITION,A.TITLE,A.MAINCONTENT,B.EXECTIME",
                                                            string.Format("A.CURRENTSTATE=2 and (A.VALIDITYSTARTDATE <= {0} and (A.VALIDITYENDDATE>{0} or A.VALIDITYENDDATE = 0))", currentDate), "A.TASKID,B.EXECTIME");
            LibDataAccess dataAccess = new LibDataAccess();

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql, false))
            {
                while (reader.Read())
                {
                    string taskId   = LibSysUtils.ToString(reader["TASKID"]);
                    int    execTime = LibSysUtils.ToInt32(reader["EXECTIME"]);
                    if (taskList.ContainsKey(taskId))
                    {
                        if (execTime > 0)
                        {
                            taskList[taskId].ExecTime.Add(execTime);
                        }
                    }
                    else
                    {
                        LibBusinessTask task = new LibBusinessTask();
                        task.BusinessTaskId = LibSysUtils.ToString(reader["BUSINESSTASKID"]);
                        task.CalendarId     = LibSysUtils.ToString(reader["CALENDARID"]);
                        task.ExecCondition  = LibSysUtils.ToString(reader["ExecCondition"]);
                        task.ExecDate       = LibSysUtils.ToInt32(reader["EXECDATE"]);
                        task.IntervalTime   = LibSysUtils.ToInt32(reader["INTERVALTIME"]);
                        task.IsJustWorkDay  = LibSysUtils.ToBoolean(reader["ISJUSTWORKDAY"]);
                        task.ProgId         = LibSysUtils.ToString(reader["PROGID"]);
                        task.Title          = LibSysUtils.ToString(reader["TITLE"]);
                        task.MainContent    = LibSysUtils.ToString(reader["MAINCONTENT"]);
                        task.RepeatDateMark = LibSysUtils.ToInt32(reader["REPEATDATEMARK"]);
                        task.TaskId         = taskId;
                        if (execTime > 0)
                        {
                            task.ExecTime.Add(execTime);
                        }
                        taskList.Add(taskId, task);
                    }
                }
            }
            sql = string.Format("select distinct A.TASKID,A.PERSONID,D.DEPTID,C.USERID from AXPSCHEDULETASKPERSON A " +
                                "inner join AXPSCHEDULETASK B on B.TASKID=A.TASKID left join COMPERSON D on D.PERSONID=A.PERSONID inner join AXPUSER C on C.PERSONID=A.PERSONID " +
                                "where B.CURRENTSTATE=2 and (B.VALIDITYSTARTDATE <= {0} and (B.VALIDITYENDDATE>{0} or B.VALIDITYENDDATE = 0))", currentDate);
            using (IDataReader reader = dataAccess.ExecuteDataReader(sql, false))
            {
                while (reader.Read())
                {
                    string taskId = LibSysUtils.ToString(reader["TASKID"]);
                    if (taskList.ContainsKey(taskId))
                    {
                        taskList[taskId].Liaison.Add(new LibBusinessTaskLiaison()
                        {
                            PersonId = LibSysUtils.ToString(reader["PERSONID"]),
                            DeptId   = LibSysUtils.ToString(reader["DEPTID"]),
                            UserId   = LibSysUtils.ToString(reader["USERID"])
                        });
                    }
                }
            }
            foreach (var item in taskList)
            {
                _Default.Set(item.Key, item.Value);
            }
        }
コード例 #21
0
            private string GetFieldInfo(DataColumn col, bool addQuto = false)
            {
                string fieldStr   = string.Empty;
                string name       = col.ColumnName;
                int    size       = col.MaxLength;
                string defaultStr = string.Empty;
                //string constraint = string.Format("CONSTRAINT NN_{0}_{1} NOT NULL", shortTableName, name);
                LibDataType libDataType = (LibDataType)col.ExtendedProperties[FieldProperty.DataType];

                switch (libDataType)
                {
                case LibDataType.Text:
                    if (!string.IsNullOrEmpty(LibSysUtils.ToString(col.DefaultValue)))
                    {
                        defaultStr = string.Format(" DEFAULT '{0}'", addQuto ? string.Format("'{0}'", col.DefaultValue) : col.DefaultValue);     //外层execute immediate已经有一个单引号,所以这里是有2个单引号转义
                    }
                    fieldStr = string.Format("{0} {1}({2}){3}", name, LibOracleSchema.VARCHAR, size, defaultStr);
                    break;

                case LibDataType.NText:
                    if (!string.IsNullOrEmpty(LibSysUtils.ToString(col.DefaultValue)))
                    {
                        defaultStr = string.Format(" DEFAULT '{0}'", addQuto ? string.Format("'{0}'", col.DefaultValue) : col.DefaultValue);
                    }
                    fieldStr = string.Format("{0} {1}({2}){3}", name, LibOracleSchema.NVARCHAR, size, defaultStr);
                    break;

                case LibDataType.Int32:
                    defaultStr = string.Format(" DEFAULT {0}", col.DefaultValue);
                    fieldStr   = string.Format("{0} {1}{2}", name, LibOracleSchema.INT, defaultStr);
                    break;

                case LibDataType.Int64:
                    defaultStr = string.Format(" DEFAULT {0}", col.DefaultValue);
                    fieldStr   = string.Format("{0} {1}{2}", name, LibOracleSchema.BIGINT, defaultStr);
                    break;

                case LibDataType.Numeric:
                    defaultStr = string.Format(" DEFAULT {0}", col.DefaultValue);
                    fieldStr   = string.Format("{0} {1}{2}", name, LibOracleSchema.DECIMAL, defaultStr);
                    break;

                case LibDataType.Float:
                case LibDataType.Double:
                    defaultStr = string.Format(" DEFAULT {0}", col.DefaultValue);
                    fieldStr   = string.Format("{0} {1}{2}", name, LibOracleSchema.FLOAT, defaultStr);
                    break;

                case LibDataType.Byte:
                    defaultStr = string.Format(" DEFAULT {0}", col.DefaultValue);
                    fieldStr   = string.Format("{0} {1}{2}", name, LibOracleSchema.TINYINT, defaultStr);
                    break;

                case LibDataType.Boolean:
                    if (LibSysUtils.ToBoolean(col.DefaultValue))
                    {
                        defaultStr = " DEFAULT 1";
                    }
                    else
                    {
                        defaultStr = " DEFAULT 0";
                    }
                    fieldStr = string.Format("{0} {1}{2}", name, LibOracleSchema.BIT, defaultStr);
                    break;

                case LibDataType.Binary:
                    if (!string.IsNullOrEmpty(LibSysUtils.ToString(col.DefaultValue)))
                    {
                        defaultStr = string.Format(" DEFAULT '{0}'", addQuto ? string.Format("'{0}'", col.DefaultValue) : col.DefaultValue);
                    }
                    fieldStr = string.Format("{0} {1}{2}", name, LibOracleSchema.BINARY, defaultStr);
                    break;

                default:
                    break;
                }
                return(fieldStr);
            }
コード例 #22
0
ファイル: AxpScheduleTaskBcf.cs プロジェクト: liusj666/AxNew
        protected override void BeforeUpdate()
        {
            base.BeforeUpdate();
            DataRow masterRow     = this.DataSet.Tables[0].Rows[0];
            bool    isJustWorkDay = LibSysUtils.ToBoolean(masterRow["ISJUSTWORKDAY"]);

            if (isJustWorkDay && string.IsNullOrEmpty(LibSysUtils.ToString(masterRow["CALENDARID"])))
            {
                this.ManagerMessage.AddMessage(LibMessageKind.Error, "勾选仅工作日时,行事历不能为空。");
            }
            int repeatDateMark = 0;

            if (LibSysUtils.ToBoolean(masterRow["ISMONDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 0);
            }
            if (LibSysUtils.ToBoolean(masterRow["ISTUESDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 1);
            }
            if (LibSysUtils.ToBoolean(masterRow["ISWEDNESDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 2);
            }
            if (LibSysUtils.ToBoolean(masterRow["ISTHURSDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 3);
            }
            if (LibSysUtils.ToBoolean(masterRow["ISFRIDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 4);
            }
            if (LibSysUtils.ToBoolean(masterRow["ISSATURDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 5);
            }
            if (LibSysUtils.ToBoolean(masterRow["ISSUNDAY"]))
            {
                repeatDateMark += (int)Math.Pow(2, 6);
            }
            masterRow["REPEATDATEMARK"] = repeatDateMark;
            int execDate = LibSysUtils.ToInt32(masterRow["EXECDATE"]);

            if (repeatDateMark != 0 && execDate != 0)
            {
                this.ManagerMessage.AddMessage(LibMessageKind.Error, "指定执行日期,就不能勾选相关重复执行日期。");
            }
            if (isJustWorkDay && execDate != 0)
            {
                this.ManagerMessage.AddMessage(LibMessageKind.Error, "指定执行日期,就不能勾选仅工作日执行。");
            }
            if (repeatDateMark == 0 && execDate == 0)
            {
                this.ManagerMessage.AddMessage(LibMessageKind.Error, "未指定执行日期。");
            }
            HashSet <int> timeHashSet = new HashSet <int>();

            foreach (DataRow curRow in this.DataSet.Tables[1].Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                int execTime = LibSysUtils.ToInt32(curRow["EXECTIME"]);
                if (timeHashSet.Contains(execTime))
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, "存在多个相同的执行时间点。");
                    break;
                }
                else
                {
                    timeHashSet.Add(execTime);
                }
            }
            int intervalTime = LibSysUtils.ToInt32(masterRow["INTERVALTIME"]);

            if (intervalTime == 0)
            {
                if (timeHashSet.Count == 0)
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, "需指定执行时间点。");
                }
            }
            else
            {
                if (timeHashSet.Count > 0)
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, "已指定了执行时间点,不能同时指定间隔时间。");
                }
            }
        }
コード例 #23
0
ファイル: CrossSiteHelper.cs プロジェクト: liusj666/AxNew
        /// <summary>
        /// 获取站点代码对应的子站点信息。如果站点代码为空则表示获取所有子站点信息
        /// </summary>
        /// <param name="siteIds">站点代码列表</param>
        /// <param name="checkNeedSendTo"></param>
        /// <returns>站点代码与站点信息的字典</returns>
        public static Dictionary <string, LinkSiteInfo> GetLinkSites(string[] siteIds = null, bool checkNeedSendTo = false)
        {
            string siteIdStr = string.Empty;

            if (siteIds != null && siteIds.Length > 0)
            {
                foreach (string siteId in siteIds)
                {
                    if (string.IsNullOrEmpty(siteId))
                    {
                        continue;
                    }
                    siteIdStr += LibStringBuilder.GetQuotString(siteId) + ",";
                }
                if (string.IsNullOrEmpty(siteIdStr) == false)
                {
                    siteIdStr = siteIdStr.Substring(0, siteIdStr.Length - 1);
                }
            }
            Dictionary <string, LinkSiteInfo> siteInfos = new Dictionary <string, LinkSiteInfo>();

            try
            {
                if (ExistLinkSiteTable == false || ExistUserLinkSiteTable == false)
                {
                    return(null);
                }
                string sql = string.Format("select * from AXPLINKSITE ");
                if (string.IsNullOrEmpty(siteIdStr) == false)
                {
                    sql += " where SITEID in (" + siteIdStr + ")";
                }
                LibDataAccess dataAccess = new LibDataAccess();
                string        name       = string.Empty;
                string        id         = string.Empty;
                using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
                {
                    while (reader.Read())
                    {
                        id   = LibSysUtils.ToString(reader["SITEID"]);
                        name = LibSysUtils.ToString(reader["SHORTNAME"]);
                        if (string.IsNullOrEmpty(id) == false)
                        {
                            siteInfos[id] = new LinkSiteInfo()
                            {
                                SiteId    = id,
                                SiteName  = LibSysUtils.ToString(reader["SITENAME"]),
                                ShortName = LibSysUtils.ToString(reader["SHORTNAME"]),
                                SiteUrl   = LibSysUtils.ToString(reader["SITEURL"]),
                                SvcUrl    = LibSysUtils.ToString(reader["SVCURL"]),
                                IsSlave   = LibSysUtils.ToBoolean(reader["ISSLAVE"]),
                                IsSendTo  = LibSysUtils.ToBoolean(reader["ISSENDTO"]),
                            };
                        }
                    }
                }
            }
            catch
            {
                //to do log
            }
            if (checkNeedSendTo)
            {
                if (siteInfos != null && siteInfos.Count > 0)
                {
                    siteInfos = (from item in siteInfos.Values
                                 where item.IsSendTo
                                 select item).ToDictionary(t => t.SiteId, t => t);//筛选需要同步到的站点
                }
            }
            return(siteInfos);
        }
コード例 #24
0
        private void SetTableInfo(DataTable table)
        {
            if (table.ExtendedProperties.ContainsKey(TableProperty.UsingApproveRow))
            {
                UsingApproveRow = (bool)table.ExtendedProperties[TableProperty.UsingApproveRow];
            }
            if (table.ExtendedProperties.ContainsKey(TableProperty.UsingAttachment))
            {
                UsingAttachment = (bool)table.ExtendedProperties[TableProperty.UsingAttachment];
            }
            if (table.ParentRelations != null && table.ParentRelations.Count > 0)
            {
                string parentName = table.ParentRelations[0].ParentTable.TableName;
                for (int i = 0; i < table.DataSet.Tables.Count; i++)
                {
                    if (string.Compare(table.DataSet.Tables[i].TableName, parentName, true) == 0)
                    {
                        this.ParentIndex = i;
                        break;
                    }
                }
            }
            this.Pk = this.GetPk(table);
            StringBuilder builder     = new StringBuilder();
            StringBuilder newRowObj   = new StringBuilder();
            StringBuilder tempBuilder = new StringBuilder();
            int           r           = 0;

            foreach (DataColumn item in table.Columns)
            {
                if (!_UsingRowNo && item.ColumnName == "ROWNO")
                {
                    _UsingRowNo = true;
                }
                if (!_UsingRowId && item.ColumnName == "ROW_ID")
                {
                    _UsingRowId = true;
                }
                if (!this.IsDynamic)
                {
                    if (item.ExtendedProperties.ContainsKey(FieldProperty.IsDynamic))
                    {
                        this.IsDynamic = (bool)item.ExtendedProperties[FieldProperty.IsDynamic];
                    }
                }
                if (item.ExtendedProperties.ContainsKey(FieldProperty.SubTableIndex))
                {
                    SubTableMap.Add(item.ColumnName, (int)item.ExtendedProperties[FieldProperty.SubTableIndex]);
                }
                tempBuilder.AppendFormat("name:'{0}'", item.ColumnName);
                LibDataType dateType = (LibDataType)item.ExtendedProperties[FieldProperty.DataType];
                switch (dateType)
                {
                case LibDataType.Text:
                case LibDataType.NText:
                    newRowObj.AppendFormat("{0}:'{1}',", item.ColumnName, LibSysUtils.ToString(item.DefaultValue));
                    break;

                case LibDataType.Int32:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToInt32(item.DefaultValue));
                    break;

                case LibDataType.Int64:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToInt64(item.DefaultValue));
                    break;

                case LibDataType.Numeric:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToDecimal(item.DefaultValue));
                    break;

                case LibDataType.Float:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToSingle(item.DefaultValue));
                    break;

                case LibDataType.Double:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToDouble(item.DefaultValue));
                    break;

                case LibDataType.Byte:
                    tempBuilder.Append(",type:'number'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToByte(item.DefaultValue));
                    break;

                case LibDataType.Boolean:
                    tempBuilder.Append(",type:'boolean'");
                    newRowObj.AppendFormat("{0}:{1},", item.ColumnName, LibSysUtils.ToBoolean(item.DefaultValue) ? "true" : "false");
                    break;

                case LibDataType.Binary:
                    newRowObj.AppendFormat("{0}:'{1}',", item.ColumnName, LibSysUtils.ToString(item.DefaultValue));
                    break;
                }
                if (r == 0)
                {
                    builder.Append("{" + tempBuilder.ToString() + "}");
                }
                else
                {
                    builder.Append(",{" + tempBuilder.ToString() + "}");
                }
                r++;
                tempBuilder.Length = 0;
            }
            newRowObj.Remove(newRowObj.Length - 1, 1);
            this.Fields    = string.Format("[{0}]", builder.ToString());
            this.NewRowObj = "{" + newRowObj.ToString() + "}";
        }
コード例 #25
0
        public Dictionary <string, object> GetPrintTemplateJs(string billNo, string printTplNo, int printTplRowId, int printTplSubRowId)
        {
            List <LabelTemplateRule> LabelTemplateRuleList = new List <LabelTemplateRule>();
            StringBuilder            builder = new StringBuilder(), builderVal = new StringBuilder();
            SqlBuilder sqlBuilder = new SqlBuilder("axp.PrintTpl");
            string     printTplJs = string.Empty, sql = string.Empty;
            Dictionary <string, object> dic = new Dictionary <string, object>(), billValueDic = new Dictionary <string, object>();

            builder.Append(sqlBuilder.GetQuerySql(2, "C.TPLJS", string.Format(" C.PRINTTPLID = {0} AND C.PARENTROWID = {1} AND C.ROW_ID = {2} ", LibStringBuilder.GetQuotString(printTplNo), printTplRowId, printTplSubRowId)));
            using (IDataReader reader = this.DataAccess.ExecuteDataReader(builder.ToString()))
            {
                while (reader.Read())
                {
                    printTplJs = LibSysUtils.ToString(reader["TPLJS"]);
                }
            }
            builder.Clear();
            builder.Append(sqlBuilder.GetQuerySql(3, "D.FIELDNAME,D.TABLEINDEX,D.TPLPARAM", string.Format(" D.PRINTTPLID = {0} AND D.GRANDFATHERROWID = {1} AND D.PARENTROWID= {2} ", LibStringBuilder.GetQuotString(printTplNo), printTplRowId, printTplSubRowId)));
            Dictionary <string, PropertyCollection> fieldCollection = new Dictionary <string, PropertyCollection>();

            using (IDataReader reader = this.DataAccess.ExecuteDataReader(builder.ToString()))
            {
                while (reader.Read())
                {
                    LabelTemplateRule labelTemplateRule = new LabelTemplateRule();
                    labelTemplateRule.FieldName  = LibSysUtils.ToString(reader["FIELDNAME"]);
                    labelTemplateRule.TableIndex = LibSysUtils.ToInt32(reader["TABLEINDEX"]);
                    labelTemplateRule.Tplparam   = LibSysUtils.ToString(reader["TPLPARAM"]);
                    LabelTemplateRuleList.Add(labelTemplateRule);
                    builderVal.AppendFormat("{0}.{1},", (char)(labelTemplateRule.TableIndex + (int)'A'), labelTemplateRule.FieldName);
                    if (!fieldCollection.ContainsKey(labelTemplateRule.FieldName))
                    {
                        fieldCollection.Add(labelTemplateRule.FieldName, this.DataSet.Tables[labelTemplateRule.TableIndex].Columns[labelTemplateRule.FieldName].ExtendedProperties);
                    }
                }
            }
            if (builderVal.Length > 0)
            {
                builderVal.Remove(builderVal.Length - 1, 1);
                sql = new SqlBuilder(this.ProgId).GetQuerySql(0, builderVal.ToString(), string.Format(" A.BILLNO={0} ", LibStringBuilder.GetQuotString(billNo)));
                using (IDataReader reader = this.DataAccess.ExecuteDataReader(sql, true))
                {
                    if (reader.Read())
                    {
                        for (int i = 0; i < reader.FieldCount; i++)
                        {
                            string             name         = reader.GetName(i);
                            PropertyCollection propertyList = fieldCollection[name];
                            LibControlType     controlType  = (LibControlType)propertyList[FieldProperty.ControlType];
                            switch (controlType)
                            {
                            case LibControlType.TextOption:
                                billValueDic.Add(name, ((string[])propertyList[FieldProperty.Option])[LibSysUtils.ToInt32(reader[i])]);
                                break;

                            case LibControlType.YesNo:
                                if (LibSysUtils.ToBoolean(reader[i]))
                                {
                                    billValueDic.Add(name, "是");
                                }
                                else
                                {
                                    billValueDic.Add(name, "否");
                                }
                                break;

                            case LibControlType.Date:
                                int date = LibSysUtils.ToInt32(reader[i]);
                                if (date == 0)
                                {
                                    billValueDic.Add(name, string.Empty);
                                }
                                else
                                {
                                    billValueDic.Add(name, LibDateUtils.LibDateToDateTime(date).ToLongDateString());
                                }
                                break;

                            case LibControlType.DateTime:
                                long dateTime = LibSysUtils.ToInt64(reader[i]);
                                if (dateTime == 0)
                                {
                                    billValueDic.Add(name, string.Empty);
                                }
                                else
                                {
                                    billValueDic.Add(name, LibDateUtils.LibDateToDateTime(dateTime).ToLocalTime());
                                }
                                break;

                            case LibControlType.Rate:
                                double rate = LibSysUtils.ToDouble(reader[i]);
                                billValueDic.Add(name, string.Format("{0}%", rate * 100));
                                break;

                            case LibControlType.KeyValueOption:
                                billValueDic.Add(name, ((LibTextOptionCollection)propertyList[FieldProperty.KeyValueOption])[LibSysUtils.ToInt32(reader[i])].Value);
                                break;

                            default:
                                billValueDic.Add(name, reader[i]);
                                break;
                            }
                        }
                    }
                }
            }
            dic.Add("TemplateJs", printTplJs);
            dic.Add("LabelTemplateRuleList", LabelTemplateRuleList);
            dic.Add("BillValueDic", billValueDic);
            return(dic);
        }
コード例 #26
0
        public LoginInfo Login(string userId, string password, bool quitOther = false)
        {
            LoginInfo     loginInfo  = new LoginInfo();
            SqlBuilder    builder    = new SqlBuilder("axp.User");
            string        sql        = builder.GetQuerySql(0, "A.PERSONID,A.PERSONNAME,A.ROLEID,A.WALLPAPER,A.WALLPAPERSTRETCH", string.Format("A.USERID={0} And A.USERPASSWORD={1} And A.ISUSE=1", LibStringBuilder.GetQuotString(userId), LibStringBuilder.GetQuotString(password)));
            LibDataAccess dataAccess = new LibDataAccess();
            string        roleId     = string.Empty;
            bool          exists     = false;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                if (reader.Read())
                {
                    loginInfo.PersonId   = LibSysUtils.ToString(reader[0]);
                    loginInfo.PersonName = LibSysUtils.ToString(reader[1]);
                    roleId = LibSysUtils.ToString(reader[2]);
                    loginInfo.Wallpaper = LibSysUtils.ToString(reader[3]);
                    loginInfo.Stretch   = LibSysUtils.ToBoolean(reader[4]);
                    exists = true;
                }
            }
            if (exists)
            {
                LibHandle handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);
                if (handle != null)
                {
                    if (quitOther)
                    {
                        LibHandleCache.Default.RemoveHandle(handle.Handle);
                    }
                    else
                    {
                        loginInfo.IsUsed = true;
                    }
                }
                if (!loginInfo.IsUsed)
                {
                    long currentCount = LibHandleCache.Default.GetCount();
                    long maxUserCount = (long)LibHandleCache.Default.MaxUserCount;
                    if (maxUserCount != -1 && maxUserCount < currentCount)
                    {
                        loginInfo.IsOverUser = true;
                    }
                    else
                    {
                        string loginIp = string.Empty;
                        //Zhangkj20161219 增加LoginIp
                        System.ServiceModel.OperationContext context = System.ServiceModel.OperationContext.Current;
                        //对于非WCF的访问context为null
                        if (context != null)
                        {
                            System.ServiceModel.Channels.MessageProperties             properties = context.IncomingMessageProperties;
                            System.ServiceModel.Channels.RemoteEndpointMessageProperty endpoint   = properties[System.ServiceModel.Channels.RemoteEndpointMessageProperty.Name] as System.ServiceModel.Channels.RemoteEndpointMessageProperty;
                            loginIp = endpoint.Address + ":" + endpoint.Port.ToString();
                        }
                        //创建新的Handle
                        handle = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.PC, userId, loginInfo.PersonId, loginInfo.PersonName, roleId, loginIp);
                        if (handle != null)
                        {
                            loginInfo.Handle = handle.Handle;
                        }
                    }
                }
            }
            return(loginInfo);
        }
コード例 #27
0
        /// <summary>
        /// 异常报告单单据类型 保存前验证【不能出现相同的使用条件;相同的使用条件中不能出现相同的人;发短信或发微信时,接收人的电话或微信须存在;不被异常报告单引用】
        /// </summary>
        protected override void BeforeUpdate()
        {
            base.BeforeUpdate();
            #region 当异常报告单单据类型变更时,确保原始的异常报告单单据类型不被异常报告单引用
            DataRow masterRow = this.DataSet.Tables[0].Rows[0];
            if (masterRow.HasVersion(DataRowVersion.Original))
            {
                string typeId = LibSysUtils.ToString(masterRow["TYPEID", DataRowVersion.Original]);
                if (LibSysUtils.ToString(masterRow["TYPEID"]).CompareTo(typeId) != 0)
                {
                    string sql   = string.Format("SELECT COUNT(BILLNO) FROM COMABNORMALREPORT WHERE TYPEID={0}", LibStringBuilder.GetQuotString(typeId));
                    int    count = LibSysUtils.ToInt32(this.DataAccess.ExecuteScalar(sql));
                    if (count > 0)
                    {
                        this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("异常报告单单据类型{0}在异常报告单被引用,无法修改", typeId));
                    }
                }
            }
            #endregion

            #region 消息传递流程明细表中不能出现相同的使用条件;相同的使用条件中不能出现相同的人;发短信或发微信时,接收人的电话或微信须存在;
            List <string> conditionList = new List <string>();
            DataTable     subTable      = this.DataSet.Tables[1];
            foreach (DataRow curRow in subTable.Rows)
            {
                if (curRow.RowState == DataRowState.Deleted)
                {
                    continue;
                }
                //不能出现相同的使用条件
                string useCondition = LibSysUtils.ToString(curRow["USECONDITION"]);
                if (conditionList.Contains(useCondition))
                {
                    this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("消息传递流程规则配置中行标识{0}的使用条件存在重复", LibSysUtils.ToInt32(curRow["ROW_ID"])));
                }
                else
                {
                    conditionList.Add(useCondition);
                }

                #region 相同的使用条件中不能出现相同的人;发短信或发微信时,接收人的电话或微信须存在
                List <string> personList = new List <string>();
                DataRow[]     childRows  = curRow.GetChildRows(this.DataSet.Relations[1]);
                if (childRows != null)
                {
                    foreach (DataRow childRow in childRows)
                    {
                        if (childRow.RowState == DataRowState.Deleted)
                        {
                            continue;
                        }
                        //相同的使用条件中不能出现相同的人
                        string personId = LibSysUtils.ToString(childRow["PERSONID"]);
                        if (personList.Contains(personId))
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("消息传递流程规则中行标识{0}下消息传递流程明细中行标识{1}的接收人存在重复",
                                                                                               LibSysUtils.ToInt32(childRow["PARENTROWID"]), LibSysUtils.ToInt32(childRow["ROW_ID"])));
                        }
                        else
                        {
                            personList.Add(personId);
                        }
                        //发短信或发微信时,接收人的电话或微信须存在
                        string phoneNo    = LibSysUtils.ToString(childRow["PHONENO"]);
                        string weChat     = LibSysUtils.ToString(childRow["WECHAT"]);
                        bool   needSms    = LibSysUtils.ToBoolean(childRow["NEEDSMS"]);
                        bool   sendWeChat = LibSysUtils.ToBoolean(childRow["SENDWECHAT"]);
                        if (string.IsNullOrWhiteSpace(weChat) && sendWeChat)
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("消息传递流程规则中行标识{0}下消息传递流程明细中行标识{1}的接收人的微信不存在,无法发微信",
                                                                                               LibSysUtils.ToInt32(childRow["PARENTROWID"]), LibSysUtils.ToInt32(childRow["ROW_ID"])));
                        }
                        if (string.IsNullOrWhiteSpace(phoneNo) && needSms)
                        {
                            this.ManagerMessage.AddMessage(LibMessageKind.Error, string.Format("消息传递流程规则中行标识{0}下消息传递流程明细中行标识{1}的接收人的电话不存在,无法发短信",
                                                                                               LibSysUtils.ToInt32(childRow["PARENTROWID"]), LibSysUtils.ToInt32(childRow["ROW_ID"])));
                        }
                    }
                }
                #endregion
            }
            #endregion
        }
コード例 #28
0
        public UpLoadFileResult UpLoadFile1(HttpPostedFile file, string progId = "")
        {
            UpLoadFileResult upLoadFileResult = new UpLoadFileResult();

            bool isLocalHost = true;

            string fileName = LibDateUtils.Now().Ticks.ToString();

            fileName = file.FileName.Replace(file.FileName.Substring(0, file.FileName.LastIndexOf('.')), fileName);
            string filePath = Path.Combine(EnvProvider.Default.RuningPath, "TempData", "ImportData", fileName);
            string url      = Path.Combine("\\TempData", "ImportData", fileName);

            #region 对应实体图片路径
            if (!string.IsNullOrEmpty(progId))
            {
                string  sql     = string.Format(" SELECT Url,LocalHost FROM ComImagePath WHERE Progid='{0}' ", progId);
                DataSet dataSet = new LibDataAccess().ExecuteDataSet(sql);
                if (dataSet != null && dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0)
                {
                    DataRow dr = dataSet.Tables[0].Rows[0];
                    isLocalHost = LibSysUtils.ToBoolean(dr["LocalHost"]);
                    url         = LibSysUtils.Combine(LibSysUtils.ToString(dr["Url"]), fileName);
                    filePath    = LibSysUtils.Combine(EnvProvider.Default.RuningPath, url);
                }
            }
            #endregion

            #region 新增图片实体
            LibEntryParam entryParam = new LibEntryParam();

            DataSet    dataset = null;
            LibBcfData bcfData = (LibBcfData)LibBcfSystem.Default.GetBcfInstance("KanTime.Picture");
            dataset = bcfData.AddNew(entryParam);

            #region 填充数据
            dataset.EnforceConstraints = false;
            try
            {
                #region  表头
                DataRow masterRow = dataset.Tables[0].Rows[0];
                masterRow.BeginEdit();
                masterRow["Name"] = fileName;
                masterRow["Url"]  = url;
                masterRow.EndEdit();
                #endregion

                #region 明细
                //dataset.Tables[1].BeginLoadData();
                //dataset.Tables[1].EndLoadData();
                #endregion
            }
            finally
            {
                dataset.EnforceConstraints = true;
            }
            dataset = bcfData.InnerSave(BillAction.AddNew, null, dataset);
            if (bcfData.ManagerMessage.IsThrow)
            {
                StringBuilder strMsg = new StringBuilder();
                foreach (var item in bcfData.ManagerMessage.MessageList)
                {
                    strMsg.AppendFormat("{0}", item.Message);
                }
                throw new Exception(strMsg.ToString());
            }
            #endregion

            #endregion

            file.SaveAs(filePath);

            #region 返回本机或外网地址
            if (isLocalHost)
            {
                upLoadFileResult.FileName = url;
            }
            else
            {
                upLoadFileResult.FileName = LibSysUtils.Combine(EnvProvider.Default.UploadHostName, url);
            }
            #endregion

            upLoadFileResult.success = true;
            return(upLoadFileResult);
        }
コード例 #29
0
        public LibRolePermission GetCacheItem(string roleId)
        {
            LibRolePermission rolePermission = null;
            object            lockItem       = lockObjDic.GetOrAdd(roleId, new object());

            lock (lockItem)
            {
                rolePermission = this.Get <LibRolePermission>(roleId);
                if (rolePermission == null)
                {
                    rolePermission        = new LibRolePermission();
                    rolePermission.RoleId = roleId;
                    string        sql        = string.Format("select distinct A.ISUNLIMITED,B.PERMISSIONGROUPID from AXPROLE A left join AXPROLEDETAIL B on B.ROLEID=A.ROLEID where A.ROLEID={0} and ISVALIDITY=1", LibStringBuilder.GetQuotString(roleId));
                    LibDataAccess dataAccess = new LibDataAccess();
                    List <string> groupList  = new List <string>();
                    using (IDataReader reader = dataAccess.ExecuteDataReader(sql, false))
                    {
                        int count = 0;
                        while (reader.Read())
                        {
                            if (count == 0)
                            {
                                rolePermission.IsUnlimited = LibSysUtils.ToBoolean(reader["ISUNLIMITED"]);
                            }
                            string groupId = LibSysUtils.ToString(reader["PERMISSIONGROUPID"]);
                            if (!string.IsNullOrEmpty(groupId))
                            {
                                groupList.Add(groupId);
                            }
                            count++;
                        }
                    }
                    if (!rolePermission.IsUnlimited)
                    {
                        foreach (string groupId in groupList)
                        {
                            LibPermissionGroup group = LibPermissionGroupCache.Default.GetCacheItem(groupId);
                            if (group != null)
                            {
                                foreach (var item in group.PermissionDic)
                                {
                                    if (rolePermission.PermissionDic.ContainsKey(item.Key))
                                    {
                                        //进行宽松的权限控制
                                        LibPermission curPermission = rolePermission.PermissionDic[item.Key];
                                        //处理清单浏览条件
                                        if (!string.IsNullOrEmpty(curPermission.ShowCondition) && string.IsNullOrEmpty(item.Value.ShowCondition))
                                        {
                                            curPermission.ShowCondition = string.Empty;
                                        }
                                        else if (!string.IsNullOrEmpty(curPermission.ShowCondition) && !string.IsNullOrEmpty(item.Value.ShowCondition))
                                        {
                                            if (curPermission.ShowCondition.CompareTo(item.Value.ShowCondition) != 0)
                                            {
                                                curPermission.ShowCondition = string.Format("{0} or {1}", curPermission.ShowCondition, item.Value.ShowCondition);
                                                MergeQueryField(item.Key, curPermission, item.Value);
                                            }
                                        }
                                        //处理按钮权限
                                        if (curPermission.NoUseButton.Count > 0 && item.Value.NoUseButton.Count == 0)
                                        {
                                            curPermission.NoUseButton.Clear();
                                        }
                                        else if (curPermission.NoUseButton.Count > 0 && item.Value.NoUseButton.Count > 0)
                                        {
                                            List <string> removeList = new List <string>();
                                            foreach (string buttonId in curPermission.NoUseButton)
                                            {
                                                if (!item.Value.NoUseButton.Contains(buttonId))
                                                {
                                                    removeList.Add(buttonId);
                                                }
                                            }
                                            foreach (var buttonId in removeList)
                                            {
                                                curPermission.NoUseButton.Remove(buttonId);
                                            }
                                        }
                                        //处理操作权限
                                        if (curPermission.OperateMark != item.Value.OperateMark)
                                        {
                                            curPermission.OperateMark |= item.Value.OperateMark;
                                        }
                                        //处理字段权限
                                        if (curPermission.FieldPowerDic.Count > 0 && item.Value.FieldPowerDic.Count == 0)
                                        {
                                            curPermission.FieldPowerDic.Clear();
                                        }
                                        else if (curPermission.FieldPowerDic.Count > 0 && item.Value.FieldPowerDic.Count > 0)
                                        {
                                            List <int> remove = new List <int>();
                                            foreach (var subItem in curPermission.FieldPowerDic)
                                            {
                                                if (item.Value.FieldPowerDic.ContainsKey(subItem.Key))
                                                {
                                                    Dictionary <string, FieldPower> otherFieldPower = item.Value.FieldPowerDic[subItem.Key];
                                                    List <string> subRemove = new List <string>();
                                                    foreach (var fieldPowerItem in subItem.Value)
                                                    {
                                                        if (otherFieldPower.ContainsKey(fieldPowerItem.Key))
                                                        {
                                                            FieldPower other = otherFieldPower[fieldPowerItem.Key];
                                                            if (fieldPowerItem.Value.PowerOption == FieldPowerOption.CannotBrowse)
                                                            {
                                                                if (other.PowerOption == FieldPowerOption.CannotModify)
                                                                {
                                                                    fieldPowerItem.Value.PowerOption = other.PowerOption;
                                                                    fieldPowerItem.Value.Condition   = other.Condition;
                                                                }
                                                                else
                                                                {
                                                                    fieldPowerItem.Value.Condition = string.Format("{0} && {1}", fieldPowerItem.Value.Condition, other.Condition);
                                                                }
                                                            }
                                                            else if (other.PowerOption == FieldPowerOption.CannotModify)
                                                            {
                                                                fieldPowerItem.Value.Condition = string.Format("{0} && {1}", fieldPowerItem.Value.Condition, other.Condition);
                                                            }
                                                        }
                                                        else
                                                        {
                                                            subRemove.Add(fieldPowerItem.Key);
                                                        }
                                                    }
                                                    foreach (string fieldName in subRemove)
                                                    {
                                                        subItem.Value.Remove(fieldName);
                                                    }
                                                }
                                                else
                                                {
                                                    remove.Add(subItem.Key);
                                                }
                                            }
                                            foreach (var tableIndex in remove)
                                            {
                                                curPermission.FieldPowerDic.Remove(tableIndex);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        rolePermission.PermissionDic[item.Key] = (LibPermission)item.Value.Clone();
                                    }
                                }
                            }
                        }
                    }
                    //CacheItemPolicy policy = new CacheItemPolicy();
                    //policy.SlidingExpiration = new TimeSpan(0, 180, 0); //180分钟内不访问自动剔除
                    this.Set(roleId, rolePermission, new TimeSpan(0, 180, 0));
                }
            }
            return(rolePermission);
        }
コード例 #30
0
        public LoginInfo AppLogin(string userId, string password, string clientId, int clientType, bool quitOther = false)
        {
            LoginInfo loginInfo = new LoginInfo();
            //检查是否具有 AXPUSERAPP数据表,用于判定是否支持移动端App登录
            LibSqlModel sqlModel      = LibSqlModelCache.Default.GetSqlModel("axp.User");
            bool        hasAXPUSERAPP = false;

            if (sqlModel != null && sqlModel.Tables.Count > 1 && sqlModel.Tables[1].TableName.Equals("AXPUSERAPP"))
            {
                hasAXPUSERAPP = true;
            }
            if (hasAXPUSERAPP == false)
            {
                return(loginInfo);//如果没有需要的相关字段则直接返回
            }

            SqlBuilder builder = new SqlBuilder("axp.User");
            string     sql     = string.Format(@"SELECT 
                                        A.PERSONID,
                                        A.ROLEID,
                                        A.WALLPAPER,A.WALLPAPERSTRETCH,B.PERSONNAME,B.PHONENO,B.CORNET,B.HEADPORTRAIT,B.MAIL   
                                        FROM AXPUSER A LEFT JOIN COMPERSON B ON B.PERSONID=A.PERSONID   
                                        WHERE A.USERID={0} and A.USERPASSWORD={1} AND A.ISUSE=1", LibStringBuilder.GetQuotString(userId), LibStringBuilder.GetQuotString(password));
            //builder.GetQuerySql(0, "A.PERSONID,A.PERSONNAME,A.PHONENO,A.CORNET,A.HEADPORTRAIT,A.MAIL,A.ROLEID,A.WALLPAPER,A.WALLPAPERSTRETCH", string.Format("A.USERID={0} And A.USERPASSWORD={1} And A.ISUSE=1", LibStringBuilder.GetQuotString(userId), LibStringBuilder.GetQuotString(password)));
            LibDataAccess dataAccess = new LibDataAccess();
            string        roleId     = string.Empty;
            bool          exists     = false;

            using (IDataReader reader = dataAccess.ExecuteDataReader(sql))
            {
                if (reader.Read())
                {
                    loginInfo.PersonId   = LibSysUtils.ToString(reader["PERSONID"]);
                    loginInfo.PersonName = LibSysUtils.ToString(reader["PERSONNAME"]);
                    roleId = LibSysUtils.ToString(reader["ROLEID"]);
                    loginInfo.Wallpaper = LibSysUtils.ToString(reader["WALLPAPER"]);
                    loginInfo.Stretch   = LibSysUtils.ToBoolean(reader["WALLPAPERSTRETCH"]);
                    //20170214 施卢威 增加头像 Email 短号信息
                    loginInfo.Headportrait = LibSysUtils.ToString(reader["HEADPORTRAIT"]);
                    loginInfo.UserEMail    = LibSysUtils.ToString(reader["MAIL"]);
                    loginInfo.Cornet       = LibSysUtils.ToString(reader["CORNET"]);
                    loginInfo.UserPhone    = LibSysUtils.ToString(reader["PHONENO"]);
                    exists = true;
                }
            }
            if (exists)
            {
                #region 帐号与登录设备关联
                string appSql = string.Empty;
                //查询帐号是否已有设备标识
                int isAPPClient = LibSysUtils.ToInt32(dataAccess.ExecuteScalar(string.Format("SELECT COUNT(*) from AXPUSERAPP WHERE USERID = '{0}' and CLIENTTYPE={1}", userId, clientType)));
                if (isAPPClient > 0)
                {
                    //更新设备标识信息
                    appSql = string.Format("UPDATE AXPUSERAPP SET  CLIENTID={1}    WHERE USERID={0} AND CLIENTTYPE={2}", LibStringBuilder.GetQuotString(userId), LibStringBuilder.GetQuotString(clientId), clientType);
                }
                else
                {
                    int curMaxRowId = LibSysUtils.ToInt32(dataAccess.ExecuteScalar(string.Format("SELECT Max(ROW_ID) from AXPUSERAPP WHERE USERID='{0}'", userId)));
                    //插入账户对应的App设备标识信息。
                    appSql = string.Format("insert into AXPUSERAPP(USERID,ROW_ID,ROWNO,CLIENTTYPE,CLIENTID) values('{0}',{1},{2},{3},'{4}')",
                                           userId, curMaxRowId + 1, curMaxRowId + 1, clientType, clientId, 1);
                }
                dataAccess.ExecuteNonQuery(appSql);

                #endregion

                LibHandle handle = LibHandleCache.Default.IsExistsHandle(LibHandeleType.PC, userId);
                if (handle != null)
                {
                    if (quitOther)
                    {
                        LibHandleCache.Default.RemoveHandle(handle.Handle);
                    }
                    else
                    {
                        loginInfo.IsUsed = true;
                    }
                }
                if (!loginInfo.IsUsed)
                {
                    long currentCount = LibHandleCache.Default.GetCount();
                    long maxUserCount = (long)LibHandleCache.Default.MaxUserCount;
                    if (maxUserCount != -1 && maxUserCount < currentCount)
                    {
                        loginInfo.IsOverUser = true;
                    }
                    else
                    {
                        string loginIp = string.Empty;
                        //Zhangkj20161219 增加LoginIp
                        System.ServiceModel.OperationContext context = System.ServiceModel.OperationContext.Current;
                        //对于非WCF的访问context为null
                        if (context != null)
                        {
                            System.ServiceModel.Channels.MessageProperties             properties = context.IncomingMessageProperties;
                            System.ServiceModel.Channels.RemoteEndpointMessageProperty endpoint   = properties[System.ServiceModel.Channels.RemoteEndpointMessageProperty.Name] as System.ServiceModel.Channels.RemoteEndpointMessageProperty;
                            loginIp = endpoint.Address + ":" + endpoint.Port.ToString();
                            handle  = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.PC, userId, loginInfo.PersonId, loginInfo.PersonName, roleId, loginIp);
                        }
                        else
                        {
                            handle = LibHandleCache.Default.GetHandle(string.Empty, LibHandeleType.PC, userId, loginInfo.PersonId, loginInfo.PersonName, roleId);
                        }
                        //创建新的Handle

                        if (handle != null)
                        {
                            loginInfo.Handle = handle.Handle;
                        }
                    }
                }
            }
            return(loginInfo);
        }