コード例 #1
0
 private static void changeInspetionTypeForUi(JournalInspection journalInspection)
 {
     if (journalInspection.OwnerBrigadeType != null)
     {
         //30 - Приёмка поезда ПР
         if (journalInspection.OwnerBrigadeType == BrigadeType.Receiver && journalInspection.TypeId == 2)
         {
             journalInspection.TypeId = 30;
         }
         //31 - Выпуск поезда ПР
         if (journalInspection.OwnerBrigadeType == BrigadeType.Receiver && journalInspection.TypeId == 3)
         {
             journalInspection.TypeId = 31;
         }
         //32 - Приёмка поезда ЛБ
         if (journalInspection.OwnerBrigadeType == BrigadeType.Locomotiv && journalInspection.TypeId == 2)
         {
             journalInspection.TypeId = 32;
         }
         //33 - Сдача поезда ЛБ
         if (journalInspection.OwnerBrigadeType == BrigadeType.Locomotiv && journalInspection.TypeId == 3)
         {
             journalInspection.TypeId = 33;
         }
     }
 }
コード例 #2
0
        private static async Task <bool> InspectionFilter(string filter, TaskRepository sqlRTask, Inspection fromSqlsInspection, JournalInspection journalInspection)
        {
            var isFiltered = false;

            if (filter != null)
            {
                var filters = JsonConvert.DeserializeObject <TaskCommon.FilterBody[]>(filter);
                foreach (var item in filters)
                {
                    switch (item.Filter)
                    {
                    case "DateFrom":
                        DateTime.TryParse(item.Value, out var dateStart);
                        if (fromSqlsInspection.DateStart < dateStart)
                        {
                            isFiltered = true;
                        }
                        break;

                    case "DateTo":
                        DateTime.TryParse(item.Value, out var dateEnd);
                        dateEnd = dateEnd.AddDays(1);
                        if (fromSqlsInspection.DateStart > dateEnd)
                        {
                            isFiltered = true;
                        }
                        break;

                    case "InspectionId":
                        int.TryParse(item.Value, out var filterId);
                        if (fromSqlsInspection.Id != filterId)
                        {
                            isFiltered = true;
                        }
                        break;

                    case "TrainName":
                        if (!journalInspection.TrainName.ToLower().Contains(item.Value.ToLower()))
                        {
                            isFiltered = true;
                        }
                        break;

                    case "TrainId":
                        int.TryParse(item.Value, out var trainid);
                        if (journalInspection.TrainId != trainid)
                        {
                            isFiltered = true;
                        }
                        break;

                    //Нет вагонов у инспекций
                    case "CarriageId":
                        isFiltered = true;
                        break;

                    //Инициатор
                    case "OwnerId":
                        if (!journalInspection.UserName.ToLower().Contains(item.Value.ToLower()))
                        {
                            isFiltered = true;
                        }
                        break;

                    //TODO узнать про статусы инспекций
                    //Статус инспекции, ахуеть
                    case "StatusId":
                        int.TryParse(item.Value, out var intResult);
                        if (journalInspection.StatusId != intResult)
                        {
                            isFiltered = true;
                        }
                        break;

                    //нет у инспекций исполнителя
                    case "BrigadeId":
                        isFiltered = true;
                        break;

                    //Мероприятие блядь или тип инспекции в UI
                    case "TypeId":
                        int.TryParse(item.Value, out var intResultT);
                        if (journalInspection.TypeId != intResultT)
                        {
                            isFiltered = true;
                        }
                        break;

                    case "TaskOrInspectionId":
                        if (!journalInspection.Id.ToString().Equals(item.Value.ToLower()))
                        {
                            isFiltered = true;
                        }
                        break;

                    case "Equipment":
                        var internalFilters = new List <FilterBody>
                        {
                            new FilterBody {
                                Filter = "Equipment", Value = item.Value
                            },
                            new FilterBody {
                                Filter = "InspectionId", Value = journalInspection.Id.ToString()
                            },
                        };
                        var tasksFiltered = await sqlRTask.GetAll(0, 9999999, internalFilters.ToArray().ToJson());

                        bool foreachFiltered = false;
                        foreach (var task in tasksFiltered.Data)
                        {
                            if (task.EquipmentName.ToLower().Contains(item.Value.ToLower()))
                            {
                                foreachFiltered = true;
                            }
                        }
                        if (!foreachFiltered)
                        {
                            isFiltered = true;
                        }
                        break;
                    }
                }
            }

            return(isFiltered);
        }
コード例 #3
0
        private static async Task getInspectionLabels(MeterageRepository mR, Inspection fromSqlsInspection, JournalInspection journalInspection)
        {
            var labels        = new List <JournalInspectionLabel>();
            var labelsFromSql = await mR.GetLabels(fromSqlsInspection.Id);

            foreach (var labelFromSql in labelsFromSql)
            {
                labels.Add(new JournalInspectionLabel
                {
                    CarriageName  = CreateCarriageName(labelFromSql.Label.Carriage.Train.Name, labelFromSql.Label.Carriage.Number),
                    EquipmentName = labelFromSql.Label.EquipmentModel.Equipment.Name,
                    LabelSerial   = labelFromSql.Label.Rfid,
                    TimeStamp     = labelFromSql.Date
                });
            }
            journalInspection.Tabs.Labels = labels.ToArray();
        }
コード例 #4
0
        private static async Task getInspectionMeterage(MeterageRepository mR, Inspection fromSqlsInspection, JournalInspection journalInspection)
        {
            var temps        = new List <JournalInspectionTemp>();
            var tempsFromSql = await mR.GetMeterages(fromSqlsInspection.Id);

            foreach (var tempFromSql in tempsFromSql)
            {
                temps.Add(new JournalInspectionTemp
                {
                    Value     = tempFromSql.Value,
                    TimeStamp = tempFromSql.Date
                });
            }
            journalInspection.Tabs.Temps = temps.ToArray();
        }
コード例 #5
0
        private async Task GetInspectionCouters(InspectionDataRepository inspdatarep, Inspection fromSqlsInspection, JournalInspection journalInspection)
        {
            var countersFromSql = await inspdatarep.GetByInspectionId(fromSqlsInspection.Id);

            if (countersFromSql.Any())
            {
                journalInspection.Tabs.Description.KmPerShift = String.Join(", ",
                                                                            countersFromSql.Where(o => o.Type == InspectionDataType.KmPerShift)
                                                                            .Select(o => o.Value));
                journalInspection.Tabs.Description.KmTotal = String.Join(", ",
                                                                         countersFromSql.Where(o => o.Type == InspectionDataType.KmTotal)
                                                                         .Select(o => o.Value));
                journalInspection.Tabs.Description.KwHours = String.Join(", ",
                                                                         countersFromSql.Where(o => o.Type == InspectionDataType.KwHours)
                                                                         .Select(o => _GetCarriageNumCanBeNull(o.Carriage) + ":" + o.Value));
                var brakeShoes = String.Join(", ",
                                             countersFromSql.Where(o => o.Type == InspectionDataType.BrakeShoes)
                                             .Select(o => o.Text));
                journalInspection.Tabs.BrakeShoesSerial = brakeShoes;
            }
        }
コード例 #6
0
        //30 - Приёмка поезда ПР
        //31 - Выпуск поезда ПР
        //32 - Приёмка поезда ЛБ
        //33 - Сдача поезда ЛБ

        public async Task <JournalPaging> GetJournalInspectionAndTasks(int skip, int limit, string filter)
        {
            var sqlr = new InspectionRepository(_logger);

            var inspdatarep  = new InspectionDataRepository(_logger);
            var sqlTrainR    = new TrainRepository(_logger);
            var sqlUserR     = new UserRepository(_logger);
            var iR           = new InspectionRepository(_logger);
            var mR           = new MeterageRepository(_logger);
            var sqlStatusR   = new TaskStatusRepository(_logger);
            var sqlExecutorR = new ExecutorRepository(_logger);
            var sqlRTask     = new TaskRepository(_logger);
            var sqlRBrigade  = new BrigadeRepository(_logger);
            var sqlRJournal  = new JournalRepository(_logger);

            var listFull = new List <JournalDateItem>();

            var fromSqlsInspections = await sqlr.GetAll();

            foreach (var fromSqlsInspection in fromSqlsInspections)
            {
                var train = (await sqlTrainR.ByIdWithStations(fromSqlsInspection.TrainId));
                var user  = await sqlUserR.ById(fromSqlsInspection.UserId);

                var journalInspection = new JournalInspection
                {
                    Id           = fromSqlsInspection.Id,
                    Type         = "inspection",
                    InspectionId = fromSqlsInspection.Id,
                    StatusId     = (int)fromSqlsInspection.Status,
                    TypeId       = (int)fromSqlsInspection.CheckListType,
                    Date         = fromSqlsInspection.DateStart,
                    TrainName    = train.Name,
                    TrainId      = train.Id,
                    Tabs         = new JournalInspectionTabs(),
                    UserName     = user.Name,
                };

                if (user.BrigadeId != null)
                {
                    journalInspection.OwnerBrigadeType = (await sqlRBrigade.ById((int)user.BrigadeId)).BrigadeType;
                }


                //дескрипшен
                var counters = await iR.GetCounters(fromSqlsInspection.Id);

                journalInspection.Tabs.Description = new JournalInspectionDescription
                {
                    TasksCount = counters.Tasks,
                    DataEnd    = fromSqlsInspection.DateEnd,
                    //Выдает количество уникальных меток
                    AllLabelCount = counters.Labels,
                    TempCount     = counters.Measurements
                };


                //лейблы
                await getInspectionLabels(mR, fromSqlsInspection, journalInspection);

                //измерения
                await getInspectionMeterage(mR, fromSqlsInspection, journalInspection);

                //счетчики
                await GetInspectionCouters(inspdatarep, fromSqlsInspection, journalInspection);

                //говнохак под ебанутые фильтры и вывод. TypeId == 2 - Приемка, 3 - сдача
                changeInspetionTypeForUi(journalInspection);


                //Фильтруем
                var isFiltered = await InspectionFilter(filter, sqlRTask, fromSqlsInspection, journalInspection);

                if (!isFiltered)
                {
                    listFull.Add(new JournalDateItem
                    {
                        Date       = journalInspection.Date,
                        Inspection = journalInspection
                    }
                                 );
                }
            }


            //Таски

            var fromSqlsT = await sqlRJournal.GetAllTaskForJournal();

            foreach (var fromSql in fromSqlsT)
            {
                var journalTask = new JournalTask
                {
                    Type                  = "Task",
                    TaskId                = fromSql.TaskId,
                    TaskType              = fromSql.TaskType,
                    TrainName             = fromSql.TrainName,
                    TrainId               = fromSql.TrainId,
                    UserName              = fromSql.UserName,
                    Date                  = fromSql.CreateDate,
                    CarriageName          = CreateCarriageName(fromSql.TrainName, fromSql.CarriageNumber),
                    CarriageNum           = fromSql.CarriageNumber,
                    CarriageId            = fromSql.CarriageId,
                    EquipmentName         = fromSql.EquipmentName,
                    FaultName             = fromSql.FaultName,
                    InspectionInfo        = _GetInspectionInfo(fromSql.InspectionId, fromSql.InspectionType),
                    CarriagesSerialNumber = fromSql.CarriagesSerialNumber,
                    TaskAttributeId       = fromSql.TaskAttributeId
                };

                var executor = (await sqlExecutorR.GetByTaskId(fromSql.TaskId)).LastOrDefault();
                if (executor != null)
                {
                    journalTask.ExecutorBrigadeType = (int)executor.BrigadeType;
                }


                var taskStatus = sqlStatusR.GetByTrainTaskId(fromSql.TaskId);
                if (taskStatus != null)
                {
                    journalTask.StatusId = (int)sqlStatusR.GetByTrainTaskId(fromSql.TaskId).Status;
                }
                //journalTask.StatusId = fromSql.TaskId;

                var isFiltered = TaskFilter(filter, fromSql, journalTask);
                if (!isFiltered)
                {
                    //response.Add(journalTask.ToJson());
                    listFull.Add(new JournalDateItem
                    {
                        Date = journalTask.Date,
                        Task = journalTask
                    }
                                 );
                }
            }



            //sort by date
            listFull.Sort((x, y) => y.Date.CompareTo(x.Date));

            //пагинация
            List <JournalDateItem> listSkiplimit = paging(skip, ref limit, listFull);

            //Делаем жсон стрингу для вывода
            var pagingList = new List <string>();

            converToJsonString(listSkiplimit, pagingList);

            var result = new JournalPaging
            {
                Data  = pagingList.ToArray(),
                Total = listFull.Count
            };

            return(result);
        }