コード例 #1
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);
        }
コード例 #2
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() + "}";
        }
コード例 #3
0
        public static LibQueryCondition MergeQueryCondition(DataTable table, LibQueryCondition condition, Dictionary <string, List <LibQueryField> > powerQueryFieldDic)
        {
            if (powerQueryFieldDic == null || powerQueryFieldDic.Count == 0)
            {
                return(condition);
            }
            if (condition == null || condition.QueryFields.Count == 0)
            {
                condition = new LibQueryCondition();
                foreach (var item in powerQueryFieldDic)
                {
                    foreach (var subItem in item.Value)
                    {
                        condition.QueryFields.Add(subItem);
                    }
                }
                return(condition);
            }
            List <LibQueryField> addList    = new List <LibQueryField>();
            List <string>        removeList = new List <string>();

            //将权限(仅存在一个权限设定,即非or的情况)合并到当前用户的选择条件中
            foreach (var powerQuery in powerQueryFieldDic)
            {
                if (powerQuery.Value.Count == 1)
                {
                    bool          exist = false;
                    LibQueryField other = powerQuery.Value[0];
                    foreach (var item in condition.QueryFields)
                    {
                        if (item.Name == powerQuery.Key)
                        {
                            exist = true;
                            DataColumn  col      = table.Columns[item.Name];
                            LibDataType dataType = (LibDataType)col.ExtendedProperties[FieldProperty.DataType];
                            switch (dataType)
                            {
                            case LibDataType.Text:
                            case LibDataType.NText:
                            case LibDataType.Binary:
                                string curStr1   = item.Value[0].ToString();
                                string otherStr1 = other.Value[0].ToString();
                                string curStr2   = string.Empty;
                                string otherStr2 = string.Empty;
                                if (item.Value.Count == 2)
                                {
                                    curStr2 = item.Value[1].ToString();
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherStr2 = other.Value[1].ToString();
                                }
                                MergeFieldQuery(addList, item, other, curStr1, otherStr1, curStr2, otherStr2);
                                break;

                            case LibDataType.Int32:
                                int curInt1   = LibSysUtils.ToInt32(item.Value[0]);
                                int otherInt1 = LibSysUtils.ToInt32(other.Value[0]);
                                int curInt2   = 0;
                                int otherInt2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curInt2 = LibSysUtils.ToInt32(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherInt2 = LibSysUtils.ToInt32(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curInt1, otherInt1, curInt2, otherInt2);
                                break;

                            case LibDataType.Int64:
                                long curLong1   = LibSysUtils.ToInt64(item.Value[0]);
                                long otherLong1 = LibSysUtils.ToInt64(other.Value[0]);
                                long curLong2   = 0;
                                long otherLong2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curLong2 = LibSysUtils.ToInt64(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherLong2 = LibSysUtils.ToInt64(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curLong1, otherLong1, curLong2, otherLong2);
                                break;

                            case LibDataType.Numeric:
                                decimal curDecimal1   = LibSysUtils.ToDecimal(item.Value[0]);
                                decimal otherDecimal1 = LibSysUtils.ToDecimal(other.Value[0]);
                                decimal curDecimal2   = 0;
                                decimal otherDecimal2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curDecimal2 = LibSysUtils.ToDecimal(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherDecimal2 = LibSysUtils.ToDecimal(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curDecimal1, otherDecimal1, curDecimal2, otherDecimal2);
                                break;

                            case LibDataType.Float:
                                float curFloat1   = LibSysUtils.ToSingle(item.Value[0]);
                                float otherFloat1 = LibSysUtils.ToSingle(other.Value[0]);
                                float curFloat2   = 0;
                                float otherFloat2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curFloat2 = LibSysUtils.ToSingle(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherFloat2 = LibSysUtils.ToSingle(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curFloat1, otherFloat1, curFloat2, otherFloat2);
                                break;

                            case LibDataType.Double:
                                double curDouble1   = LibSysUtils.ToDouble(item.Value[0]);
                                double otherDouble1 = LibSysUtils.ToDouble(other.Value[0]);
                                double curDouble2   = 0;
                                double otherDouble2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curDouble2 = LibSysUtils.ToDouble(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherDouble2 = LibSysUtils.ToDouble(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curDouble1, otherDouble1, curDouble2, otherDouble2);
                                break;

                            case LibDataType.Byte:
                                byte curByte1   = LibSysUtils.ToByte(item.Value[0]);
                                byte otherByte1 = LibSysUtils.ToByte(other.Value[0]);
                                byte curByte2   = 0;
                                byte otherByte2 = 0;
                                if (item.Value.Count == 2)
                                {
                                    curByte2 = LibSysUtils.ToByte(item.Value[1]);
                                }
                                if (other.Value.Count == 2)
                                {
                                    otherByte2 = LibSysUtils.ToByte(other.Value[1]);
                                }
                                MergeFieldQuery(addList, item, other, curByte1, otherByte1, curByte2, otherByte2);
                                break;

                            case LibDataType.Boolean:
                                item.QueryChar = other.QueryChar;
                                item.Value     = other.Value;
                                break;
                            }
                            break;
                        }
                    }
                    if (!exist)
                    {
                        condition.QueryFields.Add(other);
                        removeList.Add(powerQuery.Key);
                    }
                }
            }
            foreach (var item in addList)
            {
                condition.QueryFields.Add(item);
            }

            //仅添加合并后剩余的权限条件(仅剩下or条件的权限)
            foreach (var item in powerQueryFieldDic)
            {
                if (!removeList.Contains(item.Key))
                {
                    condition.PowerQueryFieldDic.Add(item.Key, item.Value);
                }
            }
            return(condition);
        }