Example #1
0
        public async Task <IActionResult> CompletePart(int?id)
        {
            var entity = _context.Workstations
                         .Include(w => w.CurrentUser)
                         .Include(w => w.CurrentUnit).Include(u => u.CurrentUnit.UnitType)
                         .FirstOrDefaultAsync(w => w.ID == id).Result;

            DateTime workStart = _context.UnitLogs.Where(u => u.Unit == entity.CurrentUnit).OrderByDescending(u => u.EventDate).First(u => u.Event == "CHECKIN").EventDate;
            DateTime unitStart = _context.UnitLogs.Where(u => u.Unit == entity.CurrentUnit).OrderBy(u => u.EventDate).First().EventDate;

            double valueAdd       = TimeDifference(workStart);
            double completionTime = TimeDifference(unitStart);
            double eff            = completionTime / entity.CurrentUnit.UnitType.StandardRate;

            var newLog = new UnitLog
            {
                ApplicationUser = entity.CurrentUser,
                Unit            = entity.CurrentUnit,
                Workstation     = entity,
                EventDate       = DateTime.Now,
                ValueAddedTime  = valueAdd,
                CompletionTime  = completionTime,
                Efficiency      = eff,
                Event           = "COMPLETE"
            };

            await _context.AddAsync(newLog);

            entity.CurrentUnit = null;

            _context.SaveChanges();

            return(RedirectToAction("Index"));
        }
Example #2
0
        public async Task <IActionResult> RemoveHold(WorkstationKioskViewModel model)
        {
            var userTry = _context.Users.Where(u => u.Email == model.ApplicationUser.Email).FirstOrDefault();

            if (userTry.UserRole == "QA" && userTry != null)
            {
                var entity = _context.Workstations
                             .Include(w => w.CurrentUser)
                             .Include(w => w.CurrentUnit)
                             .FirstOrDefaultAsync(w => w.ID == model.Workstation.ID).Result;

                DateTime holdStart   = _context.UnitLogs.Where(u => u.Unit == entity.CurrentUnit).OrderByDescending(u => u.EventDate).First(u => u.Event == "QA HOLD").EventDate;
                double   nonValueAdd = TimeDifference(holdStart);

                var newLog = new UnitLog
                {
                    ApplicationUser   = entity.CurrentUser,
                    Unit              = entity.CurrentUnit,
                    Workstation       = entity,
                    EventDate         = DateTime.Now,
                    NonValueAddedTime = nonValueAdd,
                    Event             = "GREEN TAG"
                };
                await _context.AddAsync(newLog);

                entity.CurrentUnit.QA = false;
                _context.SaveChanges();
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Index"));
        }
Example #3
0
        public async Task <IActionResult> HoldPart(int?id)
        {
            var entity = _context.Workstations
                         .Include(w => w.CurrentUser)
                         .Include(w => w.CurrentUnit)
                         .FirstOrDefaultAsync(w => w.ID == id).Result;

            DateTime workStart = _context.UnitLogs.Where(u => u.Unit == entity.CurrentUnit).OrderByDescending(u => u.EventDate).First(u => u.Event == "CHECKIN").EventDate;
            double   valueAdd  = TimeDifference(workStart);

            var newLog = new UnitLog
            {
                ApplicationUser = entity.CurrentUser,
                Unit            = entity.CurrentUnit,
                Workstation     = entity,
                EventDate       = DateTime.Now,
                ValueAddedTime  = valueAdd,
                Event           = "QA HOLD"
            };

            await _context.AddAsync(newLog);

            entity.CurrentUnit.QA = true;

            _context.SaveChanges();

            return(RedirectToAction("Index"));
        }
Example #4
0
        /// <summary>
        /// 记录,收到的消息会丢失换行
        /// </summary>
        /// <param name="key"></param>
        /// <param name="text"></param>
        public void UnitLog(String key, String text)
        {
            if (String.IsNullOrWhiteSpace(key) || String.IsNullOrWhiteSpace(text))
            {
                return;
            }
            UnitLog unitLog = new UnitLog {
                Time = DateTimeOffset.Now.ToUnixTimeSeconds(), Key = key, Text = text
            };

            this.UnitLogQueue.Enqueue(unitLog);
        }
Example #5
0
        public async Task <IActionResult> CheckInPart([Bind("ID,UnitNumber")] Unit unit)
        {
            var userId      = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var UnitHistory = _context.Units.Any(u => u.UnitNumber == unit.UnitNumber);

            if (UnitHistory == false)
            {
                unit.UnitType = _context.UnitTypes.Where(u => u.Prefix == unit.UnitNumber.Substring(0, 4)).FirstOrDefault();
                _context.Workstations.Where(w => w.CurrentUser.Id == userId).FirstOrDefault().CurrentUnit = unit;

                if (ModelState.IsValid)
                {
                    _context.Add(unit);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
                return(View());
            }

            var workstation = _context.Workstations
                              .Include(w => w.CurrentUser)
                              .Include(w => w.CurrentUnit)
                              .FirstOrDefaultAsync(w => w.CurrentUser.Id == userId).Result;

            var startedUnit = _context
                              .Units
                              .Include(u => u.UnitType)
                              .Where(u => u.UnitNumber == unit.UnitNumber).FirstOrDefault();


            DateTime workStart   = _context.UnitLogs.Where(u => u.Unit == startedUnit).OrderByDescending(u => u.EventDate).First(u => u.Event == "CHECKOUT").EventDate;
            double   nonValueAdd = TimeDifference(workStart);

            var newLog = new UnitLog
            {
                ApplicationUser = workstation.CurrentUser,
                Unit            = startedUnit,
                Workstation     = workstation,
                EventDate       = DateTime.Now,
                InventoryTime   = nonValueAdd,
                Event           = "CHECKIN"
            };

            _context.Workstations.Where(w => w.CurrentUser.Id == userId).FirstOrDefault().CurrentUnit = startedUnit;

            await _context.AddAsync(newLog);

            _context.SaveChanges();
            return(RedirectToAction(nameof(Index)));
        }
Example #6
0
        public async Task <IActionResult> CreateLog(WorkstationKioskViewModel model, string logEvent)
        {
            UnitLog unitLog = new UnitLog
            {
                ApplicationUser = model.ApplicationUser,
                Unit            = model.Workstation.CurrentUnit,
                Workstation     = model.Workstation,
                EventDate       = DateTime.Now,
                Event           = logEvent
            };
            await _context.AddAsync(unitLog);

            await _context.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }
Example #7
0
        public UnitLog SaveUnitLog(UnitLog unitLog)
        {
            _unitLogsRepository.SaveOrUpdate(unitLog);

            return(unitLog);
        }
Example #8
0
 public async Task <UnitLog> SaveUnitLogAsync(UnitLog unitLog, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(await _unitLogsRepository.SaveOrUpdateAsync(unitLog, cancellationToken));
 }