Ejemplo n.º 1
0
        public ActionResult Save(LotTerminalViewModel model)
        {
            MethodReturnResult result = new MethodReturnResult();

            try
            {
                TerminalParameter p = new TerminalParameter()
                {
                    Creator                = User.Identity.Name,
                    OperateComputer        = Request.UserHostAddress,
                    Operator               = User.Identity.Name,
                    ReasonCodeCategoryName = model.ReasonCodeCategoryName,
                    ReasonCodeName         = model.ReasonCodeName,
                    Remark     = model.Description,
                    LotNumbers = new List <string>()
                };

                char splitChar = ',';
                //获取批次号值。
                string[] lotNumbers = Request["LotNumber"].ToUpper().Split(splitChar);
                p.LotNumbers = lotNumbers.ToList();

                for (int i = 0; i < p.LotNumbers.Count; i++)
                {
                    string lotNumber = p.LotNumbers[i];
                    result = GetLot(lotNumber);
                    if (result.Code > 0)
                    {
                        return(Json(result));
                    }
                }
                //终止批次。
                using (LotTerminalServiceClient client = new LotTerminalServiceClient())
                {
                    result = client.Terminal(p);
                }
                if (result.Code == 0)
                {
                    result.Message = string.Format("结束 {0} 成功。", model.LotNumber);
                }
            }
            catch (Exception ex)
            {
                result.Code    = 1000;
                result.Message = ex.Message;
                result.Detail  = ex.ToString();
            }
            // 如果我们进行到这一步时某个地方出错,则重新显示表单
            return(Json(result));
        }
Ejemplo n.º 2
0
        public ViewResult Parameters(int id, Terminal term)
        {
            _repository.UserName = User?.Identity?.Name;

            var groups   = DbHelper.GetUserGroups(_repository.UserName, Constants.RightReadName);
            var terminal = _repository.GetTerminal(id);

            if (groups == null || terminal == null || (groups.Any() && groups.All(g => g.Id != terminal.IdGroup)))
            {
                return(View("Unauthorize"));
            }

            var result = false;

            var toUpdate = new Dictionary <Tuple <int, int>, TerminalParameter>();

            foreach (var k in Request.Form.AllKeys)
            {
                if (k.StartsWith("all"))
                {
                    var keyParts    = k.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
                    int idTerminal  = int.Parse(keyParts[1]);
                    int idParameter = int.Parse(keyParts[2]);
                    var key         = new Tuple <int, int>(idTerminal, idParameter);
                    int idGroup     = int.Parse(keyParts[3]);
                    if (toUpdate.ContainsKey(key))
                    {
                        var newVal = toUpdate[key];
                        newVal.ToAllGroups = true;
                        toUpdate[key]      = newVal;
                    }
                    else
                    {
                        var newPar = new TerminalParameter
                        {
                            IdTerminal      = idTerminal,
                            IdParameter     = idParameter,
                            IdGroupTerminal = idGroup,
                            ToAllGroups     = true,
                        };
                        toUpdate.Add(key, newPar);
                    }
                }
                else if (k.StartsWith("val"))
                {
                    var keyParts    = k.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
                    int idTerminal  = int.Parse(keyParts[1]);
                    int idParameter = int.Parse(keyParts[2]);
                    var key         = new Tuple <int, int>(idTerminal, idParameter);
                    int idGroup     = int.Parse(keyParts[3]);
                    if (toUpdate.ContainsKey(key))
                    {
                        var newVal = toUpdate[key];
                        newVal.Value  = Request.Form[k];
                        toUpdate[key] = newVal;
                    }
                    else
                    {
                        var newPar = new TerminalParameter
                        {
                            IdTerminal      = idTerminal,
                            IdParameter     = idParameter,
                            IdGroupTerminal = idGroup,
                            Value           = Request.Form[k]
                        };
                        toUpdate.Add(key, newPar);
                    }
                }
            }

            if (toUpdate.Values.Any(par => par.ToAllGroups))
            {
                var terminal1      = terminal;
                var terminalsToUpd = _repository.Terminals.Where(t => t.IdGroup == terminal1.IdGroup && t.Id != id);
                var srcParams      = toUpdate.Values.Where(par => par.ToAllGroups).ToArray();
                foreach (var termToUpd in terminalsToUpd)
                {
                    foreach (var parToUpd in srcParams.Select(tp => new TerminalParameter
                    {
                        IdParameter = tp.IdParameter,
                        IdTerminal = termToUpd.Id,
                        IdGroupTerminal = termToUpd.IdGroup,
                        Value = tp.Value,
                        ToAllGroups = tp.ToAllGroups,
                    })
                             )
                    {
                        toUpdate.Add(new Tuple <int, int>(parToUpd.IdTerminal, parToUpd.IdParameter), parToUpd);
                    }
                }
                result = DbHelper.UpdateTerminalParameters(toUpdate.Values.Where(par => par.ToAllGroups), _repository.UserName);
            }
            else
            {
                result = true;
            }

            if (result && toUpdate.Values.Any(par => !par.ToAllGroups))
            {
                var terminal1 = terminal;
                result = DbHelper.UpdateTerminalParameters(
                    toUpdate.Values.Where(toUpdadePar => /*!string.IsNullOrWhiteSpace(toUpdadePar.Value) &&*/
                                          !toUpdadePar.ToAllGroups &&
                                          terminal1?.Parameters?.FirstOrDefault(
                                              termParam => termParam.Id == toUpdadePar.IdParameter)?.Value !=
                                          toUpdadePar.Value)
                    , _repository.UserName);
            }
            if (!result)
            {
                ModelState.AddModelError("Db",
                                         "Параметры терминала не были изменены! Повторите попытку или свяжитесь с администратором.");
            }

            terminal = _repository.GetTerminal(id);
            var parameters = DbHelper.GetAllParameters(terminal.IdGroup);

            var terminalsModel = new TerminalParametersViewModel
            {
                Parameters = parameters.Select(p => new Parameter
                {
                    Id           = p.Id,
                    TId          = terminal?.Id ?? 0,//terminal?.Parameters?.FirstOrDefault(tp => tp.Id == p.Id)?.TId ?? 0,
                    Name         = p.Name,
                    Path         = p.Path,
                    Value        = terminal?.Parameters?.FirstOrDefault(tp => tp.Id == p.Id)?.Value,
                    SaveTime     = terminal?.Parameters?.FirstOrDefault(tp => tp.Id == p.Id)?.SaveTime ?? DateTime.MinValue,
                    LastEditTime = terminal?.Parameters?.FirstOrDefault(tp => tp.Id == p.Id)?.LastEditTime ?? DateTime.MinValue,
                    Description  = p.Description
                }),
                Terminal = new ViewTerminal(terminal)
                {
                    GroupsIdsString   = terminal.IdGroup.ToString(),
                    GroupsNamesString = terminal.Group?.Name
                }
            };

            ViewBag.CanEdit =
                DbHelper.UserIsAdmin(User?.Identity?.Name) ||
                DbHelper.UserInRole(User?.Identity?.Name, Constants.RightWriteName, terminal.IdGroup) ||
                DbHelper.UserInRole(User?.Identity?.Name, Constants.RightWriteName, null);

            return(View(terminalsModel));
        }