Beispiel #1
0
        /// <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));
        }