// 获取参数定义 private Dictionary <int, FormulaParam> GetFormulaParamDict() { var formulaParamDict = new Dictionary <int, FormulaParam>(); using (DataSet ds = this._helper.Query(@" SELECT P.FormulaID fid, P.[Order] , P.FormulaParaID pid, N.ParaName name, N.ParaAlias alias FROM T_DIM_FORMULA_PARA P,T_DIM_FORMULA_PARA_NAME N where P.ParaNameID = N.ParaNameID order by FormulaID, P.[Order]")) { foreach (DataRow row in ds.Tables[0].Rows) { FormulaParam pi = new FormulaParam { PID = Convert.ToInt32(row["pid"]), FID = Convert.ToInt32(row["fid"]), Index = Convert.ToInt32(row["Order"]), Name = Convert.ToString(row["name"]), Alias = Convert.ToString(row["alias"]) }; formulaParamDict[pi.PID] = pi; } } return(formulaParamDict); }
// 获取传感器参数定义。 private void GetParameters(DataTable table, Sensor sensor, Dictionary <int, FormulaParam> formulaParamDict) { var sr = from r in table.AsEnumerable() where r.Field <int>("SENSOR_ID") == sensor.SensorID select r; if (!sr.Any()) { return; } foreach (DataRow row in sr) { for (int i = 1; i < 7; i++) { string pName = string.Format("FormulaParaID{0}", i); string pValue = string.Format("Parameter{0}", i); if (row.IsNull(pName)) { break; } int pid = Convert.ToInt32(row[pName]); FormulaParam temp = this.GetFormulaParam(pid, formulaParamDict); var pi = new SensorParam(temp); if (row.IsNull(pValue)) { Console.WriteLine("Sensor: {0}'s param: {1}-{2} 's value is NULL!", sensor.SensorID, i, temp.Name); } pi.Value = row.IsNull(pValue) ? 0 : Convert.ToDouble(row[pValue]); sensor.AddParameter(pi); } } }
private FormulaParam GetFormulaParam(int paramId) { FormulaParam fp = null; _formulaParamDict.TryGetValue(paramId, out fp); return(fp); }
//获取参数定义 private void GetFormulaParamDict() { _formulaParamDict = new Dictionary <int, FormulaParam>(); DataSet ds = _cfgHelper.Query(@" SELECT P.FORMULA_ID fid, P.Formula_Para_ID pid, N.Para_Name name, N.Para_Alias alias FROM C_FORMULA_PARA P,C_FORMULA_PARA_NAME N where P.Para_Name_ID = N.Para_Name_ID order by fid, pid"); foreach (DataRow row in ds.Tables[0].Rows) { FormulaParam pi = new FormulaParam { PID = Convert.ToInt32(row["pid"]), FID = Convert.ToInt32(row["fid"]), Index = 0, // 表中未定义. Name = Convert.ToString(row["name"]), Alias = Convert.ToString(row["alias"]) }; _formulaParamDict[pi.PID] = pi; } }
// 获取传感器参数定义。 private void GetParameters(DataTable table, Sensor sensor) { var sr = from r in table.AsEnumerable() where r.Field <int>("SENSOR_SET_ID") == sensor.SensorID select r; if (!sr.Any()) { return; } foreach (DataRow row in sr) { ushort paraCount = Convert.ToUInt16(row["ParaCount"]); for (int i = 1; i <= paraCount; i++) { string pName = string.Format("PARA_NAME_ID{0}", i); string pValue = string.Format("PARAMETER{0}", i); if (row.IsNull(pName)) { break; } int pid = Convert.ToInt32(row[pName]); FormulaParam temp = GetFormulaParam(pid); SensorParam pi = new SensorParam(temp); if (row.IsNull(pValue)) { // TODO write Log. Console.WriteLine("Sensor: {0}'s param: {1}-{2} 's value is NULL!", sensor.SensorID, i, temp.Name); } pi.Value = row.IsNull(pValue) ? 0 : Convert.ToDouble(row[pValue]); sensor.AddParameter(pi); } } }
public List <FormulaInfo> FormulaList = new List <FormulaInfo>(); //升段公式列表 public void Load(BinaryHelper helper) { ID = helper.ReadInt(); GradeUpTime = helper.ReadInt(); LevelLimitUp = helper.ReadInt(); HpUp = helper.ReadInt(); AttackUp = helper.ReadInt(); MagicAttackUp = helper.ReadInt(); Formula1_Cost = helper.ReadInt(); FormulaNum = helper.ReadInt(); for (int index = 1; index <= (FormulaNum - 1); ++index) { FormulaInfo formulainfo = new FormulaInfo(); formulainfo.Formula_Cost = helper.ReadInt(); formulainfo.Param_Num = helper.ReadInt(); for (int temp = 1; temp <= 5; ++temp) { FormulaParam formulaParam = new FormulaParam(); formulaParam.paramType = helper.ReadInt(); //if (ID == 29) //{ // int aaa = 0; //} formulaParam.paramId = helper.ReadInt(); formulaParam.paramLevel = helper.ReadInt(); formulaParam.paramRarity = helper.ReadInt(); formulaParam.paramOccu = helper.ReadInt(); formulaParam.paramRingNum = helper.ReadInt(); formulainfo.ParamList.Add(formulaParam); } FormulaList.Add(formulainfo); } }
//添加指定卡牌素材 void AddAppointCard(UISprite sprite, FormulaParam param, int index) { UICardHead tempHead = UICardHead.Create(); m_materialList.Add(tempHead);//加入到素材列表 tempHead.SetParent(sprite.transform); tempHead.SetLocalPosition(Vector3.zero); tempHead.RegisterCallBack(null, PressCardHead); CSItem tempCard = new CSItem(); tempCard.m_id = (short)param.paramId; tempHead.SetCardInfo(tempCard); tempHead.ShowCard(); tempHead.SetCardLoveShow(false); //获得这张ID的卡牌在背包中有多少张 int cardCount = User.Singleton.ItemBag.GetCardNumById(param.paramId); tempHead.m_cardInfo.text = string.Format(Localization.Get("WithTheMaterial"), cardCount); int tempCardCount = cardCount; foreach (UICardHead item in m_materialList) { if (item != tempHead && tempHead.m_showCard.m_id == param.paramId) { tempCardCount--; } if (item == tempHead) { if (tempCardCount > 0) { tempHead.m_cardInfo.color = Color.green; } else { tempHead.m_cardInfo.color = Color.red; tempHead.SetCardMask(true); } } } }
//添加非指定素材 void AddUnAppoint(UISprite sprite, FormulaParam param) { Transform texure = sprite.transform.Find("Sprite"); Transform starTexure = sprite.transform.Find("Texture"); WorldParamInfo worldInfo = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enCardDivisionUnAppointIcon); IconInfomation imageInfo = GameTable.IconInfoTableAsset.Lookup(worldInfo.IntTypeValue); texure.GetComponent <UITexture>().mainTexture = PoolManager.Singleton.LoadIcon <Texture>(imageInfo.dirName); Transform label = sprite.transform.Find("MateriaLabel"); int level = param.paramLevel; int occ = param.paramOccu; int star = param.paramRarity; OccupationInfo occTable = GameTable.OccupationInfoAsset.LookUp(occ); if (null == occTable) { return; } label.GetComponent <UILabel>().text = string.Format(Localization.Get("Occupation"), occTable.m_name, level); label.GetComponent <UILabel>().color = Color.red; label.gameObject.SetActive(true); //设置星级图标 RarityRelativeInfo rarityInfo = GameTable.RarityRelativeAsset.LookUp(star); if (null == rarityInfo) { Debug.Log("RarityRelativeInfo rarityInfo == null info.RarityId:" + star); return; } IconInfomation rarityIcon = GameTable.IconInfoTableAsset.Lookup(rarityInfo.m_iconId); if (null == rarityIcon) { Debug.Log("IconInfomation rarityIcon == null rarityInfo.m_iconId:" + rarityInfo.m_iconId); return; } starTexure.GetComponent <UITexture>().mainTexture = PoolManager.Singleton.LoadIcon <Texture>(rarityIcon.dirName); starTexure.gameObject.SetActive(true); }
//点击已经选择的素材卡牌头像 显示素材卡牌界面 void OnClickCardHeadChooseMaterial(CSItem temp, int materialId) { CSItem card = CardBag.Singleton.GetCardByGuid(CardDivisionUpdateProp.Singleton.m_curDivisionCardGuid); //设置素材卡牌 GradeUpRequireInfo gradeInfo = GameTable.gradeUpRequireAsset.Lookup(card.m_id); if (null == gradeInfo) { return; } int curtFormula = CardDivisionUpdateProp.Singleton.m_curtFormula; FormulaInfo tempFormula = gradeInfo.FormulaList[curtFormula - 2]; if (null == tempFormula) { return; } FormulaParam param = tempFormula.ParamList[materialId]; OperateCardList.Singleton.OnShowDivisionCard(param.paramOccu, param.paramLevel, param.paramRarity, materialId); MainUIManager.Singleton.OnSwitchSingelUI(MainUIManager.EDUITYPE.enOperaterCardList); }
//添加荣誉戒指素材 void AddRingOfHonor(UISprite sprite, FormulaParam param) { Transform texure = sprite.transform.Find("Sprite"); WorldParamInfo worldInfo = GameTable.WorldParamTableAsset.Lookup((int)ENWorldParamIndex.enCardDivisionRingHonorIcon); IconInfomation imageInfo = GameTable.IconInfoTableAsset.Lookup(worldInfo.IntTypeValue); texure.GetComponent <UITexture>().mainTexture = PoolManager.Singleton.LoadIcon <Texture>(imageInfo.dirName); Transform label = sprite.transform.Find("MateriaLabel"); int ringNum = User.Singleton.UserProps.GetProperty_Int32(UserProperty.ring); label.GetComponent <UILabel>().text = string.Format(Localization.Get("WithTheMaterial"), ringNum); if (ringNum < param.paramRingNum) { label.GetComponent <UILabel>().color = Color.red; } else { sprite.GetComponent <Parma>().m_type = 1; label.GetComponent <UILabel>().color = Color.green; } label.gameObject.SetActive(true); }
static public void AddParamToGroupBox(GroupBox gbParam, ImageList ilFormula, FormulaBase fb, EventHandler ehLeave) { gbParam.Controls.Clear(); if (fb != null) { int x = 10; int y = 20; int h = 30; int w = 0; for (int i = 0; i < fb.Params.Count; i++) { Label l = new Label(); l.AutoSize = true; l.Text = fb.Params[i].Name + "="; l.Left = x; l.Top = y + 3; l.Parent = gbParam; w = Math.Max(w, l.Width); y += h; } y = 20; x += w + 6; for (int i = 0; i < fb.Params.Count; i++) { FormulaParam fp = fb.Params[i]; TextBox tb = new TextBox(); tb.Left = x; tb.Top = y; tb.Text = fp.Value; tb.Parent = gbParam; tb.Leave += ehLeave; int k = x + tb.Width + 6; if (fp.ParamType == FormulaParamType.Double) { Label l = new Label(); l.AutoSize = true; l.Text = "(" + fp.MinValue + "--" + fp.MaxValue + ")"; l.Left = k; l.Top = y + 3; l.Parent = gbParam; k += l.Right; } switch (fb.Params[i].ParamType) { case FormulaParamType.Indicator: CreateSelectButton(gbParam, ilFormula, k + 6, y, 1, tb, new EventHandler(SelectFormula_Click)); break; case FormulaParamType.Symbol: CreateSelectButton(gbParam, ilFormula, k + 6, y, 2, tb, new EventHandler(SelectSymbol_Click)); break; } y += h; } } }
/// <summary> /// 获取sensor实例 /// </summary> /// <param name="sensor"></param> /// <returns></returns> private Entity.Config.Sensor GetSensor(T_DIM_SENSOR sensor) { using (var db = new SecureCloud_Entities()) { if (sensor == null) { return(null); } var sensinfo = (from p in db.T_DIM_SENSOR_PRODUCT from s in db.T_DIM_PROTOCOL_TYPE from f in db.T_DIM_SAFETY_FACTOR_TYPE where p.PROTOCOL_ID == s.PROTOCOL_ID && p.PRODUCT_ID == sensor.PRODUCT_SENSOR_ID && f.SAFETY_FACTOR_TYPE_ID == sensor.SAFETY_FACTOR_TYPE_ID select new { p.PRODUCT_ID, p.PRODUCT_CODE, p.FORMAULAID, s.PROTOCOL_CODE, f.THEMES_TABLE_NAME, f.THEMES_COLUMNS }) .FirstOrDefault(); string dtucode = (from d in db.T_DIM_REMOTE_DTU where d.ID == sensor.DTU_ID select d.REMOTE_DTU_NUMBER).FirstOrDefault(); if (sensinfo == null) { return(null); } var sensorinfo = new Entity.Config.Sensor { SensorID = (uint)sensor.SENSOR_ID, StructId = sensor.STRUCT_ID == null ? 0 : (uint)sensor.STRUCT_ID, DtuID = sensor.DTU_ID == null ? 0 : (uint)sensor.DTU_ID, DtuCode = dtucode, ModuleNo = sensor.MODULE_NO == null ? 0 : (uint)sensor.MODULE_NO, ChannelNo = sensor.DAI_CHANNEL_NUMBER == null ? 0 : (uint)sensor.DAI_CHANNEL_NUMBER, Name = sensor.SENSOR_LOCATION_DESCRIPTION, ProtocolType = Convert.ToUInt32(sensinfo.PROTOCOL_CODE), FormulaID = sensinfo.FORMAULAID == null ? 0 : (uint)sensinfo.FORMAULAID, FactorType = sensor.SAFETY_FACTOR_TYPE_ID == null ? 0 : (uint)sensor.SAFETY_FACTOR_TYPE_ID, FactorTypeTable = sensinfo.THEMES_TABLE_NAME, TableColums = sensinfo.THEMES_COLUMNS, ProductCode = sensinfo.PRODUCT_CODE, ProductId = sensinfo.PRODUCT_ID, SensorType = (SensorType)sensor.Identification, //TODO 3-3 UnEnable = sensor.Enable }; if (sensinfo.FORMAULAID != null) { var pname = (from pf in db.T_DIM_FORMULA_PARA from pn in db.T_DIM_FORMULA_PARA_NAME where pf.ParaNameID == pn.ParaNameID && pf.FormulaID == sensinfo.FORMAULAID orderby pf.Order select new { pf.FormulaID, pf.FormulaParaID, pn.ParaName, pn.ParaAlias, pf.Order } ).ToList(); //sensorinfo.ParamCount = (ushort)pname.Count; T_DIM_FORMULAID_SET param0 = (from pf in db.T_DIM_FORMULAID_SET where pf.SENSOR_ID == sensor.SENSOR_ID select pf).ToList().FirstOrDefault(); if (param0 == null) { return(sensorinfo); } for (int i = 0; i < pname.Count; i++) { var f = new FormulaParam { FID = (int)pname[i].FormulaID, PID = pname[i].FormulaParaID, Index = (int)pname[i].Order, Name = pname[i].ParaName, Alias = pname[i].ParaAlias }; var sp = new SensorParam(f) { Value = Convert.ToDouble(param0.GetType() .GetProperty("Parameter" + (i + 1)) .GetValue(param0, null)) }; sensorinfo.AddParameter(sp); } } //else //{ // sensorinfo.ParamCount = 0; //} return(sensorinfo); } }
/// <summary> /// Набор расчетных параметров для обсчета формулы /// </summary> /// <param name="formulaParams"></param> /// <param name="resultTi"></param> /// <param name="resultIntegral"></param> /// <param name="resultTp"></param> /// <param name="resultSection"></param> public void BuildVariableParams(IFormulaParam formulaParams, string msTimeZoneId = null, bool isArchTech = false) { if (_recursionCallStack.Contains(formulaParams.FormulaID)) { throw new FormulaParseException("Обнаружена рекурсия формулы\n[" + GetOperNameFromDB(formulaParams.FormulaID, F_OPERATOR.F_OPERAND_TYPE.Formula, null) + "]"); } _recursionCallStack.Add(formulaParams.FormulaID); _formulasTable = formulaParams.FormulasTable; int?tpId = null; if (formulaParams.tP_CH_ID != null) { tpId = formulaParams.tP_CH_ID.TP_ID; } if (Archives == null) { Archives = new FormulaArchives(isArchTech, tpId); } //Часовой пояс в котором запрашиваем данные //var tz = (string.IsNullOrEmpty(msTimeZoneId) ? formulaParams.MsTimeZoneId : msTimeZoneId); var f = GetFormulaByID(formulaParams.FormulaID); if (f == null) { //Ф-ла не описана, либо не входит в наш диапазон _recursionCallStack.Remove(formulaParams.FormulaID); return; } foreach (var operators in f.F_OPERATORS) { var operIdInt = 0; if (string.IsNullOrEmpty(operators.OPER_ID)) { continue; } if (operators.OPER_TYPE != F_OPERATOR.F_OPERAND_TYPE.Formula && operators.OPER_TYPE != F_OPERATOR.F_OPERAND_TYPE.FormulaConstant) { if (int.TryParse(operators.OPER_ID, out operIdInt) == false) { throw new FormulaParseException("Идентификатор ТИ [" + operators.OPER_ID + "] должен быть целочисленным!"); } if (!operators.TI_CHANNEL.HasValue) { throw new FormulaParseException("В формуле не указан канал измерения!"); } } switch (operators.OPER_TYPE) { case F_OPERATOR.F_OPERAND_TYPE.UANode: Archives.FormulaUaNodeVariableDataTypeList.Add(new TUANodeDataId { UANodeId = operIdInt, DataType = (UANodeDataIdDataTypeEnum)operators.TI_CHANNEL.GetValueOrDefault() }); break; case F_OPERATOR.F_OPERAND_TYPE.Section: Archives.SectionSorted.Add(new TSectionChannel { Section_ID = operIdInt, ChannelType = operators.TI_CHANNEL.Value }); break; case F_OPERATOR.F_OPERAND_TYPE.TP_channel: HashSet <TP_ChanelType> tpChannelTypes; if (!Archives.TPChanelTypeList.TryGetValue(operIdInt, out tpChannelTypes) || tpChannelTypes == null) { Archives.TPChanelTypeList[operIdInt] = tpChannelTypes = new HashSet <TP_ChanelType>(new TP_ChanelComparer()); } tpChannelTypes.Add(new TP_ChanelType { TP_ID = operIdInt, ChannelType = operators.TI_CHANNEL.Value, ClosedPeriod_ID = formulaParams.ClosedPeriod_ID, }); break; case F_OPERATOR.F_OPERAND_TYPE.Integral_Channel: HashSet <TI_ChanelType> integralChannelTypes; if (!Archives.IntegralChanelTypeList.TryGetValue(operIdInt, out integralChannelTypes) || integralChannelTypes == null) { Archives.IntegralChanelTypeList[operIdInt] = integralChannelTypes = new HashSet <TI_ChanelType>(new ITI_ChanelComparer()); } integralChannelTypes.Add(new TI_ChanelType { TI_ID = operIdInt, ChannelType = operators.TI_CHANNEL.Value, IsCA = operators.OPER_TYPE == F_OPERATOR.F_OPERAND_TYPE.ContrTI_Chanel, TP_ID = tpId, DataSourceType = InterpretatorParams.DataSourceType, ClosedPeriod_ID = formulaParams.ClosedPeriod_ID, //MsTimeZone = tz, }); break; case F_OPERATOR.F_OPERAND_TYPE.ContrTI_Chanel: case F_OPERATOR.F_OPERAND_TYPE.TI_channel: HashSet <TI_ChanelType> tiChannelTypes; if (!Archives.TIChanelTypeList.TryGetValue(operIdInt, out tiChannelTypes) || tiChannelTypes == null) { Archives.TIChanelTypeList[operIdInt] = tiChannelTypes = new HashSet <TI_ChanelType>(new ITI_ChanelComparer()); } tiChannelTypes.Add(new TI_ChanelType { TI_ID = operIdInt, ChannelType = operators.TI_CHANNEL.Value, IsCA = operators.OPER_TYPE == F_OPERATOR.F_OPERAND_TYPE.ContrTI_Chanel, TP_ID = tpId, DataSourceType = InterpretatorParams.DataSourceType, ClosedPeriod_ID = formulaParams.ClosedPeriod_ID, //MsTimeZone = tz, }); break; case F_OPERATOR.F_OPERAND_TYPE.FormulaConstant: Archives.FormulaConstantIds.Add(operators.OPER_ID); break; case F_OPERATOR.F_OPERAND_TYPE.Formula: IFormulaParam fId = new FormulaParam { FormulaID = operators.OPER_ID, FormulasTable = _formulasTable, tP_CH_ID = formulaParams.tP_CH_ID, MsTimeZoneId = formulaParams.MsTimeZoneId }; //Собираем переменные из вложенной формулы BuildVariableParams(fId, msTimeZoneId); break; } } _recursionCallStack.Remove(formulaParams.FormulaID); }
private void LoadToTree(TreeNode tn, FormulaParam fp) { tn.Text = fp.Name; }
public SensorParam(FormulaParam temp) { this.FormulaParam = temp; }