示例#1
0
        public Result PutSet([FromBody] WarningSetWithItems set)
        {
            var oldSet = WarningSetHelper.Instance.Get <WarningSet>(set.Id);

            if (oldSet == null)
            {
                return(Result.GenError <Result>(Error.WarningSetNotExist));
            }

            if (set.Name.IsNullOrEmpty())
            {
                return(Result.GenError <Result>(Error.WarningSetNotEmpty));
            }

            if (set.DataType == WarningDataType.生产数据 && set.StepId == set.BindId)
            {
                return(Result.GenError <Result>(Error.WarningSetStepBindDuplicate));
            }
            var names = new List <string> {
                set.Name
            };
            var ids = new List <int> {
                set.Id
            };

            if (WarningSetHelper.GetHaveSame(1, names, ids))
            {
                return(Result.GenError <Result>(Error.WarningSetIsExist));
            }
            var createUserId   = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            if (set.Items != null)
            {
                if (set.Items.Any())
                {
                    switch (set.DataType)
                    {
                    case WarningDataType.设备数据:
                        set.Items = set.Items.Where(x => x.DictionaryId != 0).ToList();
                        foreach (var item in set.Items)
                        {
                            item.Item = "";
                        }
                        break;

                    case WarningDataType.生产数据:
                        set.Items = set.Items.Where(x => x.ItemType != WarningItemType.Default).ToList();
                        foreach (var item in set.Items)
                        {
                            if (HWarningHelper.生产数据单设备加工信息字段.All(x => x.Item2 != item.ItemType))
                            {
                                item.DeviceIds = set.DeviceIds;
                            }
                        }
                        break;

                    case WarningDataType.故障数据:
                        set.Items = set.Items; break;

                    case WarningDataType.流程卡数据:
                        set.Items = set.Items.Where(x => x.ItemType != WarningItemType.Default).ToList();
                        break;

                    default:
                        set.Items.Clear(); break;
                    }

                    //if (set.Items.Any(x => !x.ValidDataType()))
                    //{
                    //    return Result.GenError<Result>(Error.WarningSetItemDataTypeError);
                    //}
                    foreach (var item in set.Items)
                    {
                        item.MarkedDateTime = markedDateTime;
                        item.SetId          = set.Id;
                    }
                    if (set.Items.Any(x => x.ItemType == WarningItemType.SpecifyStepTimeOut && x.StepId == 0))
                    {
                        return(Result.GenError <Result>(Error.WarningSetItemFlowCardStepError));
                    }
                    if (set.Items.Any(x => !x.ValidFrequency()))
                    {
                        return(Result.GenError <Result>(Error.WarningSetItemFrequencyError));
                    }
                    if (set.Items.Any(x => !x.ValidCondition()))
                    {
                        return(Result.GenError <Result>(Error.WarningSetItemConditionError));
                    }

                    var oldWarningSetItems = WarningSetItemHelper.GetWarningSetItemsBySetId(set.Id);

                    var delItems = oldWarningSetItems.Where(x => set.Items.All(y => y.Id != x.Id));
                    if (delItems.Any())
                    {
                        WarningSetItemHelper.Instance.Delete(delItems.Select(x => x.Id));
                    }

                    var updateItems = set.Items.Where(x => x.Id != 0);
                    if (updateItems.Any())
                    {
                        var uIds = new List <int>();
                        foreach (var item in updateItems)
                        {
                            var oldItem = oldWarningSetItems.FirstOrDefault(x => x.Id == item.Id);
                            if (oldItem != null && ClassExtension.HaveChange(oldItem, item))
                            {
                                if (HWarningHelper.生产数据单设备加工信息字段.All(x => x.Item2 != item.ItemType))
                                {
                                    item.DeviceIds = set.DeviceIds;
                                }
                                uIds.Add(item.Id);
                            }
                        }
                        WarningSetItemHelper.Instance.Update(updateItems.Where(x => uIds.Contains(x.Id)));
                    }
                    var newItems = set.Items.Where(x => x.Id == 0);
                    if (newItems.Any())
                    {
                        foreach (var item in newItems)
                        {
                            item.CreateUserId = createUserId;
                        }
                        WarningSetItemHelper.Instance.Add(newItems);
                    }
                }
                else
                {
                    WarningSetItemHelper.Instance.DeleteFromParent(set.Id);
                }
            }

            if (ClassExtension.HaveChange(oldSet, set))
            {
                set.MarkedDateTime = markedDateTime;
                WarningSetHelper.Instance.Update(set);
            }

            HWarningHelper.UpdateConfig();
            return(Result.GenError <Result>(Error.Success));
        }
示例#2
0
        public Result PostSet([FromBody] WarningSetWithItems set)
        {
            if (set.Name.IsNullOrEmpty())
            {
                return(Result.GenError <Result>(Error.WarningSetNotEmpty));
            }

            if (set.DataType == WarningDataType.生产数据 && set.StepId == set.BindId)
            {
                return(Result.GenError <Result>(Error.WarningSetStepBindDuplicate));
            }
            var names = new List <string> {
                set.Name
            };

            if (WarningSetHelper.GetHaveSame(1, names))
            {
                return(Result.GenError <Result>(Error.WarningSetIsExist));
            }

            var createUserId   = Request.GetIdentityInformation();
            var markedDateTime = DateTime.Now;

            if (set.Items != null && set.Items.Any())
            {
                //if (set.Items.Any(x => !x.ValidDataType()))
                //{
                //    return Result.GenError<Result>(Error.WarningSetItemDataTypeError);
                //}
                if (set.Items.Any(x => !x.ValidFrequency()))
                {
                    return(Result.GenError <Result>(Error.WarningSetItemFrequencyError));
                }
                if (set.Items.Any(x => !x.ValidCondition()))
                {
                    return(Result.GenError <Result>(Error.WarningSetItemConditionError));
                }
            }

            set.CreateUserId   = createUserId;
            set.MarkedDateTime = markedDateTime;
            var id = WarningSetHelper.Instance.AddBackId(set);

            if (set.Items != null && set.Items.Any())
            {
                var dic = new List <DataNameDictionary>();
                if (set.DataType == WarningDataType.设备数据)
                {
                    var dIds = set.Items.Select(x => x.DictionaryId).Where(x => x != 0);
                    dic.AddRange(DataNameDictionaryHelper.Instance.GetAllByIds <DataNameDictionary>(dIds));
                }
                foreach (var item in set.Items)
                {
                    item.CreateUserId   = createUserId;
                    item.MarkedDateTime = markedDateTime;
                    item.SetId          = id;
                    item.Item           = set.DataType == WarningDataType.设备数据 ? dic.FirstOrDefault(x => x.Id == item.DictionaryId)?.VariableName ?? "" : item.Item;
                }
                WarningSetItemHelper.Instance.Add <WarningSetItem>(set.Items);
            }
            HWarningHelper.UpdateConfig();
            return(Result.GenError <Result>(Error.Success));
        }
示例#3
0
        public DataResult GetSetItem([FromQuery] int sId, WarningDataType dataType, bool isNew = false)
        {
            var result = new DataResult();
            WarningSetWithItems set = null;

            if (!isNew)
            {
                set = WarningSetHelper.Instance.Get <WarningSetWithItems>(sId);
                if (set == null)
                {
                    return(Result.GenError <DataResult>(Error.WarningSetNotExist));
                }
            }

            var scriptId = -1;
            var sql      = "";

            switch (dataType)
            {
            case WarningDataType.设备数据:
                sql = "SELECT ScriptId, VariableName Item, PointerAddress, VariableTypeId, Id DictionaryId FROM `data_name_dictionary` WHERE ScriptId = @sId AND MarkedDelete = 0 ORDER BY VariableTypeId, PointerAddress;";
                if (!isNew)
                {
                    scriptId = set.ScriptId;
                    sql      = "SELECT a.VariableName Item, a.PointerAddress, a.VariableTypeId, b.*, a.Id DictionaryId " +
                               "FROM (SELECT * FROM `data_name_dictionary` WHERE ScriptId = @scriptId AND MarkedDelete = 0) a " +
                               "LEFT JOIN (SELECT * FROM `warning_set_item` WHERE SetId = @setId AND MarkedDelete = 0) b " +
                               "ON a.Id = b.DictionaryId ORDER BY a.VariableTypeId, a.PointerAddress;";
                }

                result.datas.AddRange(ServerConfig.ApiDb.Query <WarningSetItemDetail>(sql, new { sId, scriptId }));
                break;

            case WarningDataType.生产数据:
                if (isNew)
                {
                    result.datas.AddRange(HWarningHelper.生产数据字段汇总.Select(x => new WarningSetItem
                    {
                        Item     = x.Item1,
                        ItemType = x.Item2
                    }));
                }
                else
                {
                    var d = WarningSetItemHelper.GetWarningSetItemsBySetId(sId).ToList();
                    foreach (var val in HWarningHelper.生产数据字段汇总)
                    {
                        if (d.All(x => x.Item != val.Item1))
                        {
                            result.datas.Add(new WarningSetItem
                            {
                                Item     = val.Item1,
                                ItemType = val.Item2
                            });
                        }
                        else
                        {
                            result.datas.Add(d.First(x => x.Item == val.Item1));
                        }
                    }
                }
                break;

            case WarningDataType.故障数据:
                //sql = "SELECT * FROM `warning_set_item` WHERE MarkedDelete = 0 AND SetId = @setId;";
                break;

            case WarningDataType.流程卡数据:
                if (isNew)
                {
                    result.datas.AddRange(HWarningHelper.流程卡数据字段汇总.Select(x => new WarningSetItem
                    {
                        Item     = x.Item1,
                        ItemType = x.Item2,
                        IsRepeat = x.Item3,
                        IsConfig = true
                    }));
                }
                else
                {
                    var d = WarningSetItemHelper.GetWarningSetItemsBySetId(sId).ToList();
                    foreach (var val in HWarningHelper.流程卡数据字段汇总)
                    {
                        if (d.All(x => x.Item != val.Item1))
                        {
                            d.Add(new WarningSetItem
                            {
                                Item     = val.Item1,
                                ItemType = val.Item2,
                                IsRepeat = val.Item3,
                                IsConfig = true
                            });
                        }
                        else
                        {
                            foreach (var dd in d.Where(x => x.ItemType == val.Item2))
                            {
                                dd.Item     = val.Item1;
                                dd.IsRepeat = val.Item3;
                            }
                        }
                    }
                    d = d.OrderBy(x => x.IsRepeat).ThenBy(x => x.ItemType).ThenBy(x => x.Id).ToList();
                    result.datas.AddRange(d);
                }
                break;
            }
            return(result);
        }