public async Task <bool> AddBaseFormulaAsync(BaseFormula baseFormula) { _context.BaseFormulas.Add(baseFormula); bool check = await _context.SaveChangesAsync() > 0; return(check); }
public int UpdateBaseFormula(BaseFormula item) { using (var context = UnitOfWork.Get(Unity.ContainerName)) { return(new BaseFormulaRepository(context).UpdateBaseFormula(item)); } }
public async Task <bool> DeleteBaseFormulaAsync(BaseFormula baseFormula) { _context.BaseFormulas.Remove(baseFormula); return(await _context.SaveChangesAsync() > 0); }
public async Task <ActionResult <CalculatonResponse> > Caculate([FromBody] List <Operand> operands, int id) { //get user input try { List <Operand> request = operands; BaseFormula baseFormula = await _context.BaseFormulas.Where(x => x.ID == id).FirstOrDefaultAsync(); List <Operand> operandT = await _context.Operands .Where(x => x.BaseFormulaID == id && x.Type != (int)OperandTypeValue.INPUT && x.OperandID == x.ID).ToListAsync(); //parse inputed value VariableSet vSetBaseFormula = new VariableSet(); var ep = new ExpressionParser(); foreach (var item in request) { //keyValuesOperand.Add(item.Name, item.Value); vSetBaseFormula.RegisterVariable(OperandType.Double, item.Name, item.Value); } //----------------------------- if (operandT != null) { foreach (var item in operandT) { if (item.Childs != null) { List <Operand> childs = item.Childs.ToList(); if (childs.Count > 0) { Console.WriteLine(item.Name + "x " + item.Value); vSetBaseFormula = await GetOperandChildsAsync(item, vSetBaseFormula); } else { var compiledExpression = ep.Parse(item.Expression); var resultStack = compiledExpression.Evaluate(vSetBaseFormula); var tmp = Convert.ToDouble(resultStack.Pop().GetValue()); if (vSetBaseFormula.Where(x => x.VariableName.Equals(item.Name)).FirstOrDefault() == null) { vSetBaseFormula.RegisterVariable(OperandType.Double, item.Name, tmp); } } } } } var ce = ep.Parse(baseFormula.Expression); foreach (var item in vSetBaseFormula) { Console.WriteLine(item.VariableName + " " + item.Value); } var resul = ce.Evaluate(vSetBaseFormula); double value = Convert.ToDouble(resul.Pop().GetValue()); operandT.AddRange(request); List <Operand> resultOp = operandT.Where(x => x.OperandID == x.ID).ToList(); CalculatonResponse calculatonResponse = new CalculatonResponse(); calculatonResponse.Operands = resultOp; calculatonResponse.Result = value; GoogleSheetData.AddEntries(baseFormula.Name); return(Ok(calculatonResponse)); } catch (Exception e) { var response = new { Message = e.Message }; //LogException(e); return(StatusCode(StatusCodes.Status500InternalServerError, response)); } }
/// <summary> /// 更新公式 /// </summary> /// <param name="item">公式实体</param> /// <returns></returns> public int UpdateBaseFormula(BaseFormula item) { return(Update <BaseFormula>(item)); }
/// <summary> /// 添加公式 /// </summary> /// <param name="item">公式实体</param> /// <returns></returns> public long AddBaseFormula(BaseFormula item) { return(Add <BaseFormula, long>(item, p => p.AttID)); }