public JsonResult FetchGridInfo(int productionLineId, DateTime week)
        {
            List <ProductionLineScheduleWeekly> items = new List <ProductionLineScheduleWeekly>();
            List <ProductionLineScheduleDto>    entities;

            List <ProductionShiftDto> shifts;

            using (ProductionShiftService service = new ProductionShiftService())
                shifts = service.GetAllByPlantId(CurrentPlantId);

            foreach (ProductionShiftDto shift in shifts)
            {
                using (ProductionLineScheduleService service = new ProductionLineScheduleService())
                    entities = service.GetWeekly(CurrentPlantId, shift.ID, productionLineId, GetFirstDayOfWeek(week));

                if (entities.Count == 0)
                {
                    items.Add(CreateWeeklyInfo(shift));
                }
                else
                {
                    items.Add(PopulateWeeklyInfo(shift, entities));
                }
            }



            return(Json(items, JsonRequestBehavior.AllowGet));
        }
        public JsonResult ResetAllDefaultShift()
        {
            TPO.Web.Core.ResponseMessage responseMessage;

            try
            {
                using (ProductionLineScheduleService service = new ProductionLineScheduleService())
                {
                    var dtos = service.GetAllByPlantId(CurrentPlantId);
                    foreach (var dto in dtos)
                    {
                        service.ResetShiftDefaults(dto);
                    }
                }

                responseMessage = SetResponseMesssage(ActionTypeMessage.SuccessfulSave);
            }
            catch (Exception exc)
            {
                responseMessage = SetResponseMesssage(ActionTypeMessage.FailedSave, exc.Message);
            }

            return(Json(responseMessage, JsonRequestBehavior.AllowGet));
        }
示例#3
0
        public JsonResult GetWorkOrderShiftData(int lineID, int shiftID, int workOrderID, DateTime prodDate)
        {
            WorkOrderShiftDataModel model = new WorkOrderShiftDataModel();

            //Set default units of measure
            using (UnitOfMeasureService svc = new UnitOfMeasureService())
            {
                var lengthDefault = svc.GetDefaultByTypeCode("L");
                if (lengthDefault != null)
                {
                    model.LengthUnitOfMeasure = lengthDefault.Code;
                }
                var weightDefault = svc.GetDefaultByTypeCode("W");
                if (weightDefault != null)
                {
                    model.WeightUnitOfMeasure = weightDefault.Code;
                }
            }

            //Get production line
            ProductionLinesDto lineDto = null;

            using (ProductionLineService lineSvc = new ProductionLineService())
            {
                lineDto = lineSvc.Get(lineID);
            }
            if (lineDto != null)
            {
                List <TPOCProductRollDto> rollDtos = new List <TPOCProductRollDto>();
                using (TPOCProductRollService rollSvc = new TPOCProductRollService())
                {
                    if (lineDto.TPOMorC == "M")
                    {
                        //Get master rolls
                        rollDtos.AddRange(rollSvc.GetMasterRollsByShift(lineID, shiftID, prodDate));
                    }
                    else
                    {
                        //Get child rolls
                        rollDtos.AddRange(rollSvc.GetChildRollsByShift(lineID, shiftID, prodDate));
                    }
                }
                //Filter for rolls specific to the work order
                var workOrderRolls = rollDtos.Where(r => r.WorkOrderID == workOrderID).ToList();
                model.RollCount1      = workOrderRolls.Count;
                model.Length1         = workOrderRolls.Sum(r => r.Length);
                model.Weight1         = workOrderRolls.Sum(r => r.Weight);
                model.ShiftRollWeight = rollDtos.Sum(r => r.Weight);

                //Get scraps
                List <TPOLineScrapDto> scrapDtos = new List <TPOLineScrapDto>();
                using (TPOLineScrapService scrapSvc = new TPOLineScrapService())
                {
                    scrapDtos.AddRange(scrapSvc.GetByShift(shiftID, prodDate));
                }
                //Filter for scraps specific to the work order
                var woScraps = scrapDtos.Where(s => s.WorkOrderID == workOrderID).ToList();
                for (int i = 0; i < woScraps.Count; i++)
                {
                    switch (woScraps[i].TPOLineScrapTypeDescription)
                    {
                    case "Second":
                    {
                        model.Length2 += woScraps[i].Length;
                        model.Weight2 += woScraps[i].Weight;
                    } break;

                    case "Third":
                    {
                        model.Length3 += woScraps[i].Length;
                        model.Weight3 += woScraps[i].Weight;
                    } break;

                    case "Fourth":
                    {
                        model.Length4 += woScraps[i].Length;
                        model.Weight4 += woScraps[i].Weight;
                    } break;
                    }
                }
                model.ShiftScrapWeight = scrapDtos.Sum(s => s.Weight);

                //Get downtime
                List <DownTimeDto> dtDtos = new List <DownTimeDto>();
                using (DownTimeService dtSvc = new DownTimeService())
                {
                    dtDtos.AddRange(dtSvc.GetByShift(lineID, shiftID, prodDate));
                }

                var woDowntime = dtDtos.Where(dt => dt.WorkOrderID == workOrderID).ToList();
                model.DownTimeMinutes      = woDowntime.Sum(dt => dt.DownTimeMinutes);
                model.ShiftDownTimeMinutes = dtDtos.Sum(dt => dt.DownTimeMinutes);

                //Get production line schedule
                List <ProductionLineScheduleDto> plSchedDtos = new List <ProductionLineScheduleDto>();
                using (ProductionLineScheduleService plSchedSvc = new ProductionLineScheduleService())
                {
                    plSchedDtos.AddRange(plSchedSvc.GetByShift(lineID, shiftID, prodDate));
                }

                model.ScheduledRunTime = plSchedDtos.Sum(s => s.MinutesScheduled);

                //Check if feeder entry forms need to be used
                if (lineDto.LineDescCode == "TPO")
                {
                    model.RMUse = true;
                    List <TPOFormulationLineProductDto> formDtos = new List <TPOFormulationLineProductDto>();
                    using (TPOFormulationLineProductService formSvc = new TPOFormulationLineProductService())
                    {
                        formDtos.AddRange(formSvc.GetByWorkOrder(lineID, workOrderID));
                    }
                    if (formDtos.Count > 0)
                    {
                        model.Form      = formDtos.First().TPOFormulationID;
                        model.Extruders = formDtos.First().TPOFormulationExtruders;
                    }

                    List <WorkOrderShiftDataDto> eorDtos = new List <WorkOrderShiftDataDto>();
                    using (WorkOrderShiftDataService eorSvc = new WorkOrderShiftDataService())
                    {
                        eorDtos.AddRange(eorSvc.GetByShift(lineID, shiftID, prodDate));

                        if (eorDtos.Count == 0)
                        {
                            eorSvc.Add(new WorkOrderShiftDataDto()
                            {
                                LineID         = lineID,
                                ProductionDate = prodDate,
                                ShiftID        = shiftID,
                                WorkOrderID    = workOrderID,
                                PlantID        = CurrentPlantId,
                                EnteredBy      = CurrentUser,
                                DateEntered    = DateTime.Now,
                                ModifiedBy     = CurrentUser,
                                LastModified   = DateTime.Now
                            });
                        }
                        else
                        {
                            model.ScrimA = eorDtos.First().ScrimAreaUsed;
                            model.ScrimW = eorDtos.First().ScrimWeightUsed;
                            model.Resin  = eorDtos.First().DrainedResin;
                        }
                    }
                }
            }
            return(Json(model, JsonRequestBehavior.AllowGet));
        }
        public JsonResult SaveGridInformation(int productionLineId, DateTime week, IEnumerable <ProductionLineScheduleWeekly> rows)
        {
            ResponseMessage responseMessage;

            try
            {
                //now wee need to go through each day of the of each row and save it
                foreach (ProductionLineScheduleWeekly row in rows)
                {
                    for (int idx = 0; idx <= 6; idx++)
                    {
                        ProductionLineScheduleDto item = new ProductionLineScheduleDto();
                        item.PlantID        = CurrentPlantId;
                        item.LineID         = productionLineId;
                        item.ShiftID        = row.ShiftId;
                        item.ProductionDate = week.AddDays(idx);
                        item.ModifiedBy     = CurrentUser;
                        item.LastModified   = DateTime.Now;

                        switch (idx)
                        {
                        case 0:
                            item.ID = row.Day1Id;
                            item.MinutesScheduled = row.Day1;
                            break;

                        case 1:
                            item.ID = row.Day2Id;
                            item.MinutesScheduled = row.Day2;
                            break;

                        case 2:
                            item.ID = row.Day3Id;
                            item.MinutesScheduled = row.Day3;
                            break;

                        case 3:
                            item.ID = row.Day4Id;
                            item.MinutesScheduled = row.Day4;
                            break;

                        case 4:
                            item.ID = row.Day5Id;
                            item.MinutesScheduled = row.Day5;
                            break;

                        case 5:
                            item.ID = row.Day6Id;
                            item.MinutesScheduled = row.Day6;
                            break;

                        case 6:
                            item.ID = row.Day7Id;
                            item.MinutesScheduled = row.Day7;
                            break;
                        }
                        using (ProductionLineScheduleService service = new ProductionLineScheduleService())
                        {
                            if (item.ID == 0)
                            {
                                item.EnteredBy   = CurrentUser;
                                item.DateEntered = DateTime.Now;
                                service.Add(item);
                            }
                            else
                            {
                                service.Update(item);
                            }
                        }
                    }
                }

                responseMessage = SetResponseMesssage(ActionTypeMessage.SuccessfulSave);
            }
            catch (Exception exc)
            {
                responseMessage = SetResponseMesssage(ActionTypeMessage.FailedSave, exc.Message);
            }

            return(Json(responseMessage, JsonRequestBehavior.DenyGet));
        }