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); }
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() + "}"; }
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); }