예제 #1
0
        public List <maintenance_report_status_system_model> FindAll(DateTime startDate, DateTime endDate)
        {
            List <maintenance_report_status_system_model> result = new List <maintenance_report_status_system_model>();
            List <sys_factory_db> LIST_DB_FACTORY = _context.sys_factorys.Where(d => d.status_del == 1).Select(d => d).ToList();

            for (int FACTORY = 0; FACTORY < LIST_DB_FACTORY.Count; FACTORY++)
            {
                List <sys_factory_line_db> LIST_DB_FACTORY_LINE = _context.sys_factory_lines.Where(d => d.id_factory == LIST_DB_FACTORY[FACTORY].id).Where(d => d.status_del == 1).Select(d => d).ToList();
                for (int FACTORY_LINE = 0; FACTORY_LINE < LIST_DB_FACTORY_LINE.Count; FACTORY_LINE++)
                {
                    List <string> LIST_ID_SYSTEM = _context.sys_factory_line_list_maintenance_systems.Where(d => d.id_factory_line == LIST_DB_FACTORY_LINE[FACTORY_LINE].id).Select(d => d.id_system).ToList();
                    List <maintenance_system_db> LIST_DB_MAINTENANCE_SYSTEM = _context.maintenance_systems.Where(d => LIST_ID_SYSTEM.Contains(d.id)).Where(d => d.status_del == 1).Select(d => d).ToList();
                    for (int MAINTENANCE_SYSTEM = 0; MAINTENANCE_SYSTEM < LIST_DB_MAINTENANCE_SYSTEM.Count; MAINTENANCE_SYSTEM++)
                    {
                        string FACTORY_NAME            = _context.sys_factorys.Where(s => s.id == LIST_DB_FACTORY[FACTORY].id).Where(d => d.status_del == 1).Select(d => d.name).SingleOrDefault();
                        string FACTORY_LINE_NAME       = _context.sys_factory_lines.Where(s => s.id == LIST_DB_FACTORY_LINE[FACTORY_LINE].id).Where(d => d.status_del == 1).Select(d => d.name).SingleOrDefault();
                        string MAINTENANCE_SYSTEM_NAME = _context.maintenance_systems.Where(s => s.id == LIST_DB_MAINTENANCE_SYSTEM[MAINTENANCE_SYSTEM].id).Where(d => d.status_del == 1).Select(d => d.name).SingleOrDefault();
                        List <maintenance_repair_process_db> LIST_DB_REPAIR_PROCESS = _context.maintenance_repair_processes.Where(s => s.id_factory == LIST_DB_FACTORY[FACTORY].id && s.id_factory_line == LIST_DB_FACTORY_LINE[FACTORY_LINE].id && s.id_maintenance_system == LIST_DB_MAINTENANCE_SYSTEM[MAINTENANCE_SYSTEM].id && s.status_del == 1).Where(d => d.create_date >= startDate && d.create_date <= endDate).Where(d => _context.Fn_check_finish_approval(_context.maintenance_repair_processes.Where(t => t.id == d.id).Select(t => t.id_approval).SingleOrDefault()) == true).Select(s => s).ToList();
                        List <long>           LIST_ID_REPAIR_PROCESS        = LIST_DB_REPAIR_PROCESS.Select(s => s.id).ToList();
                        List <error_solution> LIST_DB_REPAIR_ERROR_SOLUTION = _context.maintenance_repair_error_solutions.Where(d => LIST_ID_REPAIR_PROCESS.Contains(d.id_maintenance_repair_process)).Where(d => d.status_del == 1).Select(d => new error_solution
                        {
                            db            = d,
                            error_name    = _context.maintenance_error_lists.Where(l => l.id == d.id_error && l.status_del == 1).Select(l => l.name).SingleOrDefault(),
                            reason_name   = _context.maintenance_error_reasons.Where(l => l.id == d.id_reason && l.status_del == 1).Select(l => l.reason_name).SingleOrDefault(),
                            solution_name = _context.maintenance_error_reason_list_solutions.Where(l => l.id == d.id_solution && l.status_del == 1).Select(l => l.solution_name).SingleOrDefault(),
                        }).ToList();
                        List <repair_process_people> LIST_DB_REPAIR_PEOPLE = _context.maintenance_repair_process_peoples.Where(d => LIST_ID_REPAIR_PROCESS.Contains(d.id_maintenance_repair_process)).Where(d => d.status_del == 1).Select(m => new repair_process_people
                        {
                            db          = m,
                            people_name = _context.users.Where(t => t.Id == m.id_people).Select(t => t.FirstName + " " + t.LastName).SingleOrDefault(),
                        }).ToList();
                        List <repair_device> LIST_DB_REPAIR_REPLACED_DEVICE = _context.maintenance_repair_replaced_devices.Where(d => LIST_ID_REPAIR_PROCESS.Contains(d.id_maintenance_repair_process)).Where(d => d.status_del == 1).Select(f => new repair_device
                        {
                            sys_unit_name = _context.sys_units.Where(t => t.id == f.id_unit).Select(d => d.name).SingleOrDefault(),
                            sys_item_name = _context.sys_items.Where(t => t.id == f.id_item).Select(d => d.name).SingleOrDefault(),
                            sys_item_specification_name = _context.sys_item_specifications.Where(t => t.id == f.id_specification).Select(d => d.name).SingleOrDefault(),
                            sys_unit_main_name          = _context.sys_units.Where(t => t.id == f.id_unit_main).Select(d => d.name).SingleOrDefault(),
                            warehouse_position_name     = _context.sys_warehouse_positions.Where(techpro => techpro.id == f.id_warehouse_position).Select(d => d.name).SingleOrDefault(),
                            db = f,
                        }).ToList();

                        for (int i = 0; i < LIST_DB_REPAIR_PROCESS.Count(); i++)
                        {
                            double totalMinutes = (LIST_DB_REPAIR_PROCESS[i].end_time - LIST_DB_REPAIR_PROCESS[i].start_time).TotalMinutes;
                            result.Add(new maintenance_report_status_system_model
                            {
                                factory_line_name                          = FACTORY_LINE_NAME,
                                factory_name                               = FACTORY_NAME,
                                maintenance_repair_process_db              = LIST_DB_REPAIR_PROCESS[i],
                                maintenance_system_name                    = MAINTENANCE_SYSTEM_NAME,
                                list_maintenance_repair_process_people_db  = LIST_DB_REPAIR_PEOPLE.Where(d => d.db.id_maintenance_repair_process == LIST_DB_REPAIR_PROCESS[i].id).ToList(),
                                list_maintenance_repair_replaced_device_db = LIST_DB_REPAIR_REPLACED_DEVICE.Where(d => d.db.id_maintenance_repair_process == LIST_DB_REPAIR_PROCESS[i].id).ToList(),
                                list_maintenance_repair_error_solution_db  = LIST_DB_REPAIR_ERROR_SOLUTION.Where(d => d.db.id_maintenance_repair_process == LIST_DB_REPAIR_PROCESS[i].id).ToList(),
                                totalMinutes                               = totalMinutes,
                                approval = _context.Fn_get_sys_approval(LIST_DB_REPAIR_PROCESS[i].id_approval).FirstOrDefault()
                            });
                        }
                    }
                }
            }
            return(result);
        }