/// <summary> /// Get Running Balance /// </summary> /// <param name="data"></param> /// <returns></returns> public CommonResponse GetRunningBalance(GetRunningQuantityCustom data) { CommonResponse obj = new CommonResponse(); CommonFunction commonFunction = new CommonFunction(); string correctedDate = commonFunction.GetCorrectedDate(); DateTime correctedDate1 = Convert.ToDateTime(correctedDate); DateTime currentDateTime = DateTime.Now; //DateTime currentDateTime = Convert.ToDateTime("11-09-2020 09:00:00"); string shift = commonFunction.GetCurrentShift(); //string shift = "A"; var shiftStartTime = db.UnitworkccsTblshiftMstr.Where(m => m.ShiftName == shift).Select(m => m.StartTime).FirstOrDefault(); //var shiftStartTime = "06:00:00"; var shiftStartDateTime = correctedDate + " " + shiftStartTime; DateTime shiftDateTime = Convert.ToDateTime(shiftStartDateTime); int Actual2 = 0; int TotalActualPart = 0; try { var check = db.UnitworkccsTblfgpartnodet.Where(wf => wf.CorrectedDate == correctedDate && wf.FgPartNo == data.partNo && wf.WorkOrderNo == data.woNo && wf.OperationNo == data.operation && wf.Shift == shift && wf.IsClosed != 1).Distinct().ToList(); if (check.Count > 0) { foreach (var item in check) { var machine = db.UnitworkccsTblmachinedetails.Where(m => m.MachineId == item.MachineId && m.IsPcb == 1).FirstOrDefault(); if (machine == null) { var parametermasterlistAll = db.UnitworkccsParametersMaster.Where(m => m.CorrectedDate == correctedDate1 && m.InsertedOn >= shiftDateTime && m.InsertedOn <= currentDateTime).ToList(); var parametermasterlist = parametermasterlistAll.Where(m => m.MachineId == item.MachineId && m.CorrectedDate == correctedDate1 && m.InsertedOn >= shiftDateTime && m.InsertedOn <= currentDateTime).ToList(); var TopRow = parametermasterlist.OrderByDescending(m => m.ParameterId).FirstOrDefault(); var LastRow = parametermasterlist.OrderBy(m => m.ParameterId).FirstOrDefault(); if (TopRow != null && LastRow != null) { Actual2 = Convert.ToInt32(TopRow.PartsTotal - LastRow.PartsTotal); } Actual2 = Actual2 * Convert.ToInt32(item.NoOfPartsPerCycle); TotalActualPart += Actual2; } else { var parametermasterlistLast = db.UnitworkccsTblpartscountandcutting.Where(m => m.MachineId == item.MachineId && m.CorrectedDate == correctedDate1 && m.StartTime >= shiftDateTime && m.EndTime <= currentDateTime).ToList().Sum(m => m.PartCount); Actual2 = parametermasterlistLast; TotalActualPart += Actual2; } } var dbCheck = db.UnitworkccsTblfgpartnodet.Where(wf => wf.CorrectedDate == correctedDate && wf.FgPartNo == data.partNo && wf.WorkOrderNo == data.woNo && wf.OperationNo == data.operation && wf.Shift == shift && wf.IsClosed != 1).FirstOrDefault(); GetRunningBalanceQuantityDetails getRunningBalanceQuantityDetails = new GetRunningBalanceQuantityDetails(); if (dbCheck != null) { if (TotalActualPart != 0) { getRunningBalanceQuantityDetails.idealCycleTime = dbCheck.IdealCycleTime; getRunningBalanceQuantityDetails.unit = dbCheck.Unit; decimal woBalanceQ = Convert.ToDecimal(dbCheck.PartCountMethod); int wo = Convert.ToInt32(woBalanceQ); getRunningBalanceQuantityDetails.runningBalance = wo - TotalActualPart; } else { getRunningBalanceQuantityDetails.idealCycleTime = dbCheck.IdealCycleTime; getRunningBalanceQuantityDetails.unit = dbCheck.Unit; decimal woBalanceQ = Convert.ToDecimal(dbCheck.PartCountMethod); int wo = Convert.ToInt32(woBalanceQ); getRunningBalanceQuantityDetails.runningBalance = wo; } } obj.isStatus = true; obj.response = getRunningBalanceQuantityDetails; } else { var planVisageData = db.UnitworkccsTblplanlinkagemaster.Where(m => m.FgPartNo == data.partNo && m.ProductionOrder == data.woNo && m.Operation == data.operation).FirstOrDefault(); GetRunningBalanceQuantityDetails getRunningBalanceQuantityDetails = new GetRunningBalanceQuantityDetails(); if (planVisageData != null) { getRunningBalanceQuantityDetails.idealCycleTime = planVisageData.IdealCycleTime; getRunningBalanceQuantityDetails.unit = planVisageData.Unit; getRunningBalanceQuantityDetails.runningBalance = Convert.ToInt32(planVisageData.WorkOrderQty - planVisageData.WorkOrderCompletedQty); } obj.isStatus = true; obj.response = getRunningBalanceQuantityDetails; } } catch (Exception e) { log.Error(e); if (e.InnerException != null) { log.Error(e.InnerException.ToString()); } obj.isStatus = false; obj.response = ResourceResponse.FailureMessage; } return(obj); }
public async Task <IActionResult> GetRunningBalance(GetRunningQuantityCustom data) { CommonResponse response = wimarasys.GetRunningBalance(data); return(Ok(response)); }