//
        // GET: /EnvironmentManagement/AvailabilityDataEdit/
        public ActionResult Index(string environmentDate = "", Constants.EnvMode envMode = Constants.EnvMode.ControlLine,
                                  string machine         = "")
        {
            ViewBag.ListLocation = _environmentBaseDomain.GetLocationItemByType("2").Select(x => new SelectListItem
            {
                Text     = x.F80_Name,
                Value    = string.Format("{0}~{1}", x.F80_Id.ToString(), x.F80_Name.Trim()),
                Selected = string.Format("{0}~{1}", x.F80_Id.ToString(), x.F80_Name.Trim()).Equals(machine.Trim())
            });

            DateTime dt1;

            if (DateTime.TryParseExact(environmentDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None,
                                       out dt1))
            {
                var model = new AvailabilityDataEditViewModel()
                {
                    EnvironmentDate = dt1.ToString("dd/MM/yyyy"),
                    EnvMode         = envMode,
                    //Machine = machine
                };
                return(View(model));
            }
            else
            {
                var model = new AvailabilityDataEditViewModel()
                {
                    EnvironmentDate = DateTime.Now.ToString("dd/MM/yyyy"),
                    EnvMode         = envMode
                };
                return(View(model));
            }
        }
        //
        // GET: /EnvironmentManagement/EnvironmentDataOneDay/
        public ActionResult Index(string environmentDate = "", Constants.EnvMode envMode = Constants.EnvMode.ControlLine, string location = "")
        {
            ViewBag.ListLocation = _environmentBaseDomain.GetLocationItemByType("1").Select(x => new SelectListItem
            {
                Text     = x.F80_Name,
                Selected = x.F80_Name == location,
                Value    = x.F80_Id.ToString()
            });
            DateTime dt1;

            if (DateTime.TryParseExact(environmentDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt1))
            {
                var model = new EnvironmentDataOneDayViewModel()
                {
                    EnvironmentDate = dt1.ToString("dd/MM/yyyy"),
                    EnvMode         = envMode
                };
                return(View(model));
            }
            else
            {
                var model = new EnvironmentDataOneDayViewModel()
                {
                    EnvironmentDate = DateTime.Now.ToString("dd/MM/yyyy"),
                    EnvMode         = envMode
                };
                return(View(model));
            }
        }
Example #3
0
        //
        // GET: /EnvironmentManagement/CreepingAndRollSpeedDataEdit/
        public ActionResult Index(string environmentDate = "", Constants.EnvMode envMode = Constants.EnvMode.ControlLine,
                                  string machine         = "")
        {
            DateTime dt1;
            var      ListName = new List <SelectListItem>();

            ListName.Add(new SelectListItem
            {
                Text     = "12 Inch Mixing Roll Machine",
                Selected = machine.Equals("Roll_MC_12"),
                Value    = "Roll_MC_12"
            });
            ListName.Add(new SelectListItem
            {
                Text     = "18 Inch Mixing Roll Machine",
                Selected = machine.Equals("Roll_MC_18"),
                Value    = "Roll_MC_18"
            });

            ViewBag.ListName = ListName;
            if (DateTime.TryParseExact(environmentDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None,
                                       out dt1))
            {
                var model = new CreepingAndRollSpeedDataEditViewModel()
                {
                    EnvironmentDate = dt1.ToString("dd/MM/yyyy"),
                    EnvMode         = envMode,
                    Machine         = machine
                };
                return(View(model));
            }
            else
            {
                var model = new CreepingAndRollSpeedDataEditViewModel()
                {
                    EnvironmentDate = DateTime.Now.ToString("dd/MM/yyyy"),
                    EnvMode         = envMode
                };
                return(View(model));
            }
        }
        public ActionResult Search(string startDate, string endDate, string type, int id, string name, Constants.EnvMode envMode)
        {
            var dt1 = DateTime.ParseExact(startDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
            var dt2 = DateTime.ParseExact(endDate, "dd/MM/yyyy", CultureInfo.InvariantCulture);

            //if (dt2 > DateTime.Now)
            //{
            //    return Json(new
            //    {
            //        Success = false,
            //        ErrorCode = -2,
            //        Message = "The End Date is invalid."
            //    }, JsonRequestBehavior.AllowGet);
            //}

            //if ((dt2 - dt1).Days >= 90)
            //{
            //    return Json(new
            //    {
            //        Success = false,
            //        ErrorCode = -2,
            //        Message = "The different of dates is more than 90 days!"
            //    }, JsonRequestBehavior.AllowGet);
            //}

            //if (dt2 < dt1)
            //{
            //    return Json(new
            //    {
            //        Success = false,
            //        ErrorCode = -2,
            //        Message = "The Start date is larger than the End date!"
            //    }, JsonRequestBehavior.AllowGet);
            //}

            if (ModelState.IsValid)
            {
                var data           = new List <Graphtbl>();
                var item           = _environmentBaseDomain.GetLocationItemByName(type, id, name);
                var b_DispHumidity = false;
                var dtm1           = dt1.AddHours(8);
                var dtm2           = dt2.AddDays(1).AddHours(8);
                if (item.F80_Humidity == "0")
                {
                    b_DispHumidity = false;
                }
                else
                {
                    b_DispHumidity = true;
                }
                var envMespData = _environmentBaseDomain.GetMespVal(Constants.EnvType.TYPE_RM, item.F80_Id, envMode);

                if (!envMespData.Item1)
                {
                    return(Json(new
                    {
                        Success = false,
                        ErrorCode = -2,
                        Message = envMespData.Item2
                    }, JsonRequestBehavior.AllowGet));
                }
                var b_TEMPUSL_NULL  = false;
                var b_HUMIDUSL_NULL = false;
                if (envMespData.Item3.F80_T_Usl == null)
                {
                    envMespData.Item3.F80_T_Usl = envMespData.Item3.F80_T_Ucl;
                    b_TEMPUSL_NULL = true;
                }

                if (envMespData.Item3.F80_H_Usl == null)
                {
                    envMespData.Item3.F80_H_Usl = envMespData.Item3.F80_H_Ucl;
                    b_HUMIDUSL_NULL             = true;
                }
                if (envMespData.Item1)
                {
                    double t_ucl;
                    double t_lcl;
                    double t_usl;
                    double t_lsl;
                    double t_dis_up;
                    double h_dis_up;
                    double t_dis_lo;
                    double h_dis_lo;
                    double h_ucl;
                    double h_lcl;
                    double h_usl;
                    double h_lsl;
                    double t_cal_up;
                    double t_cal_lo;
                    double h_cal_up;
                    double h_cal_lo;
                    double rl_upper;
                    double rl_lower;
                    double rl_max;
                    double rl_min;
                    double rl_range;
                    _environmentBaseDomain.SetValueConfigFromTe80(envMespData.Item3, out t_ucl, out t_lcl, out t_usl,
                                                                  out t_lsl, out t_dis_up, out h_dis_up,
                                                                  out t_dis_lo, out h_dis_lo, out h_ucl, out h_lcl, out h_usl, out h_lsl, out t_cal_up,
                                                                  out t_cal_lo, out h_cal_up, out h_cal_lo);
                    var check    = true;
                    var dateTime = dt1;
                    do
                    {
                        var calcData = _environmentBaseDomain.CalcData(Constants.EnvType.TYPE_RM, item.F80_Id, null, dateTime, Constants.TypeOfTable.CALC_MGMT_LIMIT, 1,
                                                                       envMode, t_ucl, t_lcl, t_usl, t_lsl, t_dis_up, h_dis_up, t_dis_lo, h_dis_lo, h_ucl, h_lcl, h_usl,
                                                                       h_lsl, t_cal_up, t_cal_lo, h_cal_up, h_cal_lo, b_DispHumidity, data);
                        if (!calcData)
                        {
                            check = false;
                            break;
                        }
                        dateTime = dateTime.AddDays(1);
                    } while (dateTime <= dt2);

                    if (check)
                    {
                        var tcalcMean = _environmentBaseDomain.CalcMean(Constants.TypeOfTable.CALC_MGMT_LIMIT,
                                                                        Constants.TypeOfTable.CALC_MGMT_LIMIT_TEMP, item.F80_Id, dtm1, dtm2,
                                                                        t_cal_up, t_cal_lo, h_cal_up, h_cal_lo, data);
                        if (tcalcMean.Item1)
                        {
                            item.F80_T_Mean = Math.Round(tcalcMean.Item2, 4);
                        }
                        var tsigma = _environmentBaseDomain.CalcSigma(Constants.TypeOfTable.CALC_MGMT_LIMIT,
                                                                      Constants.TypeOfTable.CALC_MGMT_LIMIT_TEMP, item.F80_Id, dtm1, dtm2, t_cal_up, t_cal_lo,
                                                                      h_cal_up, h_cal_lo, data);
                        if (tsigma.Item1)
                        {
                            item.F80_T_Sigma = Math.Round(tsigma.Item2, 4);
                        }
                        rl_max = _environmentBaseDomain.GetMax(Constants.EnvType.TYPE_RM,
                                                               Constants.TypeOfTable.CALC_MGMT_LIMIT, Constants.TypeOfTable.CALC_MGMT_LIMIT_TEMP,
                                                               item.F80_Id, dtm1, dtm2, t_dis_up, h_dis_up, data);
                        rl_min = _environmentBaseDomain.GetMin(Constants.EnvType.TYPE_RM,
                                                               Constants.TypeOfTable.CALC_MGMT_LIMIT, Constants.TypeOfTable.CALC_MGMT_LIMIT_TEMP,
                                                               item.F80_Id,
                                                               dtm1, dtm2, t_dis_lo, h_dis_lo, data);
                        rl_range         = rl_max - rl_min;
                        item.F80_T_Range = Math.Round(rl_range, 4);
                        double rl_ucl;
                        double rl_lcl;
                        double rl_cp  = 0;
                        double rl_cpk = 0;
                        _environmentBaseDomain.CallLimit(tcalcMean.Item2, tsigma.Item2, out rl_ucl, out rl_lcl);
                        item.F80_T_Ucl = Math.Round(rl_ucl, 4);
                        item.F80_T_Lcl = Math.Round(rl_lcl, 4);
                        _environmentBaseDomain.CalcCp(Constants.TypeOfTable.CALC_TETMP_TEMP90, tcalcMean.Item2,
                                                      tsigma.Item2, rl_range, t_usl, t_lsl,
                                                      ref rl_cp, ref rl_cpk, b_TEMPUSL_NULL, b_HUMIDUSL_NULL, 0.0, 0.0);
                        item.F80_T_Cp  = Math.Round(rl_cp, 4);
                        item.F80_T_Cpk = Math.Round(rl_cpk, 4);

                        if (b_DispHumidity)
                        {
                            var hcalcMean = _environmentBaseDomain.CalcMean(Constants.TypeOfTable.CALC_MGMT_LIMIT,
                                                                            Constants.TypeOfTable.CALC_MGMT_LIMIT_HUMID, item.F80_Id, dtm1, dtm2,
                                                                            t_cal_up, t_cal_lo, h_cal_up, h_cal_lo, data);
                            if (hcalcMean.Item1)
                            {
                                item.F80_H_Mean = Math.Round(hcalcMean.Item2, 4);
                            }
                            var hsigma = _environmentBaseDomain.CalcSigma(Constants.TypeOfTable.CALC_MGMT_LIMIT,
                                                                          Constants.TypeOfTable.CALC_MGMT_LIMIT_HUMID, item.F80_Id, dtm1, dtm2, t_cal_up, t_cal_lo,
                                                                          h_cal_up, h_cal_lo, data);
                            if (hsigma.Item1)
                            {
                                item.F80_H_Sigma = Math.Round(hsigma.Item2, 4);
                            }
                            rl_max = _environmentBaseDomain.GetMax(Constants.EnvType.TYPE_RM,
                                                                   Constants.TypeOfTable.CALC_MGMT_LIMIT, Constants.TypeOfTable.CALC_MGMT_LIMIT_HUMID,
                                                                   item.F80_Id, dtm1, dtm2, t_dis_up, h_dis_up, data);
                            rl_min = _environmentBaseDomain.GetMin(Constants.EnvType.TYPE_RM,
                                                                   Constants.TypeOfTable.CALC_MGMT_LIMIT, Constants.TypeOfTable.CALC_MGMT_LIMIT_HUMID,
                                                                   item.F80_Id,
                                                                   dtm1, dtm2, t_dis_lo, h_dis_lo, data);
                            rl_range         = rl_max - rl_min;
                            item.F80_H_Range = Math.Round(rl_range, 4);

                            _environmentBaseDomain.CallLimit(hcalcMean.Item2, hsigma.Item2, out rl_ucl, out rl_lcl);
                            item.F80_H_Ucl = Math.Round(rl_ucl, 4);
                            item.F80_H_Lcl = Math.Round(rl_lcl, 4);
                            _environmentBaseDomain.CalcCp(Constants.TypeOfTable.CALC_TETMP_TEMP90, hcalcMean.Item2,
                                                          hsigma.Item2, rl_range, t_usl, t_lsl,
                                                          ref rl_cp, ref rl_cpk, b_TEMPUSL_NULL, b_HUMIDUSL_NULL, 0.0, 0.0);
                            item.F80_H_Cp  = Math.Round(rl_cp, 4);
                            item.F80_H_Cpk = Math.Round(rl_cpk, 4);
                            _environmentBaseDomain.UpdateTe80(item);
                        }
                    }
                    else
                    {
                        return(Json(new
                        {
                            Success = false,
                            ErrorCode = -1,//Nothing and continue for in grid
                        }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            return(Json(new
            {
                Success = true,
                Message = "Update Success"
            }, JsonRequestBehavior.AllowGet));
        }
Example #5
0
        public ResponseResult <LotdataSamplingItem> Search(string productCode, DateTime date, Constants.EnvMode mode, string lotNo)
        {
            var lstTable = new List <Graphtbl>();
            var lstTe85  = _unitOfWork.EnvProdRepository.GetMany(i => i.F85_Code.Trim().Equals(productCode.Trim())).Select(i => i.F85_Id);
            var te80     = _unitOfWork.EnvMespRepository.GetMany(i => lstTe85.Contains(i.F80_Id) && i.F80_Type == "1").FirstOrDefault();

            if (te80 == null)
            {
                return(new ResponseResult <LotdataSamplingItem>(null, false));
            }
            var dt1 = date.AddHours(8);
            var dt2 = date.AddDays(1).AddHours(8);
            var res = GetMespVal(Constants.EnvType.TYPE_RM, te80.F80_Id, mode);

            if (!res.Item1)
            {
                return(new ResponseResult <LotdataSamplingItem>(null, false, res.Item2));
            }
            te80 = res.Item3;
            if (!CalcData(Constants.EnvType.TYPE_RM, te80.F80_Id, null, date, Constants.TypeOfTable.CALC_TE81_TEMP, 1, mode,
                          te80.F80_T_Ucl ?? 0, te80.F80_T_Lcl ?? 0, te80.F80_T_Usl ?? 0,
                          te80.F80_T_Lsl ?? 0,
                          te80.F80_T_Dis_Up ?? 0, te80.F80_H_Dis_Up ?? 0, te80.F80_T_Dis_Lo ?? 0, te80.F80_H_Dis_Lo ?? 0,
                          te80.F80_H_Ucl ?? 0,
                          te80.F80_H_Lcl ?? 0, te80.F80_H_Usl ?? 0, te80.F80_H_Lsl ?? 0, te80.F80_T_Cal_Up ?? 0,
                          te80.F80_T_Cal_Lo ?? 0, te80.F80_H_Cal_Up ?? 0,
                          te80.F80_H_Cal_Lo ?? 0, false, lstTable))
            {
                return(new ResponseResult <LotdataSamplingItem>(null, false, res.Item2));
            }
            var result = CalcMean(Constants.TypeOfTable.CALC_BUFFER, Constants.TypeOfTable.CALC_TE81_TEMP,
                                  (int)Constants.TypeOfTable.CALC_TE81_TEMP, dt1, dt2, te80.F80_T_Cal_Up ?? 0, te80.F80_T_Cal_Lo ?? 0,
                                  te80.F80_H_Cal_Up ?? 0, te80.F80_H_Cal_Lo ?? 0, lstTable);

            if (result.Item1)
            {
                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TE81_TEMP, dt1,
                             result.Item2, Constants.EnvFieldNo.FLD_MEAN, lstTable);
            }
            else
            {
                return(new ResponseResult <LotdataSamplingItem>(null, false));
            }
            var sigma = CalcSigma(Constants.TypeOfTable.CALC_BUFFER, Constants.TypeOfTable.CALC_TE81_TEMP,
                                  (int)Constants.TypeOfTable.CALC_TE81_TEMP, dt1, dt2, te80.F80_T_Cal_Up ?? 0, te80.F80_T_Cal_Lo ?? 0,
                                  te80.F80_H_Cal_Up ?? 0, te80.F80_H_Cal_Lo ?? 0, lstTable).Item2;
            var max = GetMax(Constants.EnvType.TYPE_RM, Constants.TypeOfTable.CALC_BUFFER,
                             Constants.TypeOfTable.CALC_TE81_TEMP, (int)Constants.TypeOfTable.CALC_TE81_TEMP, dt1, dt2,
                             te80.F80_T_Dis_Up ?? 0, te80.F80_H_Dis_Up ?? 0, lstTable);
            var min = GetMin(Constants.EnvType.TYPE_RM, Constants.TypeOfTable.CALC_BUFFER,
                             Constants.TypeOfTable.CALC_TE81_TEMP, (int)Constants.TypeOfTable.CALC_TE81_TEMP, dt1, dt2,
                             te80.F80_T_Dis_Lo ?? 0, te80.F80_H_Dis_Lo ?? 0, lstTable);

            if (mode == Constants.EnvMode.ControlLine)
            {
                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TE81_TEMP, dt1,
                             te80.F80_T_Ucl ?? 0, Constants.EnvFieldNo.FLD_MEAN, lstTable);
                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TE81_TEMP, dt1,
                             te80.F80_T_Lcl ?? 0, Constants.EnvFieldNo.FLD_MEAN, lstTable);
            }
            else
            {
                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TE81_TEMP, dt1,
                             te80.F80_T_Usl ?? 0, Constants.EnvFieldNo.FLD_MEAN, lstTable);
                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TE81_TEMP, dt1,
                             te80.F80_T_Lsl ?? 0, Constants.EnvFieldNo.FLD_MEAN, lstTable);
            }
            var dataChart = GrapData(Constants.TypeOfTable.CALC_TE81_TEMP, lstTable);
            var item      = new LotdataSamplingItem
            {
                ChartName = te80.F80_Name,
                HighTemp  = Math.Round(max, 2),
                LowTemp   = Math.Round(min, 2),
                RangeTemp = Math.Round(max - min, 2),
                SigmaTemp = Math.Round(sigma, 2),
                MeanTemp  = Math.Round(result.Item2, 2),
                Dec_data  = dataChart.Item1,
                Dec_lower = dataChart.Item2,
                Dec_mean  = dataChart.Item3,
                Dec_upper = dataChart.Item4,
                dt_dtm    = dataChart.Item5,
            };

            return(new ResponseResult <LotdataSamplingItem>(item, true));
        }
        public ResponseResult <XRTemperatureItem> Search(string productCode, Constants.EnvMode envMode,
                                                         DateTime startDate, DateTime endDate)
        {
            var th85 =
                _unitOfWork.EnvProdRepository.GetMany(i => i.F85_Code.Trim().Equals(productCode.Trim()))
                .FirstOrDefault();
            var dt1 = DateTime.Now;

            var dt2           = new DateTime();
            var rl_avg        = 0.0;
            var total_rec_cnt = 0;
            var rl_cp         = 0.0;
            var rl_cpk        = 0.0;
            var lstTable      = new List <Graphtbl>();

            var res = CalcProdlot(productCode, Constants.TypeOfTable.CALC_LOT_AVG, ref dt1, ref dt2,
                                  ref lstTable);

            if (res == -1)
            {
                return(new ResponseResult <XRTemperatureItem>(null, true));
            }
            var ttlt = res;

            rl_avg = CalcMean(Constants.TypeOfTable.CALC_LOT_AVG, Constants.TypeOfTable.CALC_LOT_AVG,
                              (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0, 0.0, 0.0, lstTable).Item2;
            var resSigma = CalcSigma(Constants.TypeOfTable.CALC_LOT_AVG, Constants.TypeOfTable.CALC_LOT_AVG,
                                     (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0, 0.0, 0.0, lstTable);
            var rl_sigma = resSigma.Item2;
            var max      = GetMax(Constants.EnvType.TYPE_LT, Constants.TypeOfTable.CALC_LOT_AVG,
                                  Constants.TypeOfTable.CALC_LOT_AVG, (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0,
                                  lstTable);
            var min = GetMin(Constants.EnvType.TYPE_LT, Constants.TypeOfTable.CALC_LOT_AVG,
                             Constants.TypeOfTable.CALC_LOT_AVG, (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0,
                             lstTable);

            CalcCp(Constants.TypeOfTable.CALC_LOT_AVG, rl_avg, rl_sigma, max - min, th85.F85_M_Usl ?? 0, th85.F85_M_Lsl ?? 0,
                   ref rl_cp, ref rl_cpk, false, false, 0.0, 0.0);
            var repone = new XRTemperatureItem();
            var data   = GrapData(Constants.TypeOfTable.CALC_LOT_AVG, lstTable);

            repone.tblTemp   = data.Item1;
            repone.TimeTemp  = data.Item5;
            repone.HighTemp  = max.ToString("f");
            repone.LowTemp   = min.ToString("f");
            repone.MeanTemp  = rl_avg.ToString("f");
            repone.SigmaTemp = rl_sigma.ToString("f");
            repone.RangeTemp = (max - min).ToString("f");
            repone.UCLTemp   = (rl_avg + 3 * rl_sigma).ToString("f");
            repone.LCLTemp   = (rl_avg - 3 * rl_sigma).ToString("f");
            repone.CpTemp    = rl_cp.ToString("f");
            repone.CpkTemp   = rl_cpk.ToString("f");
            var lbl = 0;

            if (ttlt > 150)
            {
                lbl = 20;
            }
            if (ttlt > 100)
            {
                lbl = 10;
            }
            if (ttlt > 50)
            {
                lbl = 5;
            }
            if (ttlt > 10)
            {
                lbl = 2;
            }
            else
            {
                lbl = 1;
            }

            var d_min = min - 1;

            if (d_min < 0)
            {
                d_min = 0;
            }


// Update Values
            var lt_range = Math.Round(max - min, 3);
            var a_ucl    = Math.Round(rl_avg + 3 * rl_sigma, 3);
            var a_lcl    = Math.Round(rl_avg - 3 * rl_sigma, 3);
            var te85     = _unitOfWork.EnvProdRepository.Get(i => i.F85_Code == productCode);

            if (te85 != null)
            {
                te85.F85_T_High  = max;
                te85.F85_T_Low   = min;
                te85.F85_T_Ucl   = a_ucl;
                te85.F85_T_Lcl   = a_lcl;
                te85.F85_T_Cpk   = rl_cpk;
                te85.F85_T_Cp    = rl_cp;
                te85.F85_T_Range = lt_range;
                te85.F85_T_Mean  = rl_avg;
                te85.F85_T_Sigma = rl_sigma;
                te85.F85_No_Lot  = ConvertHelper.ToInteger(ttlt);
                _unitOfWork.EnvProdRepository.Update(te85);
            }

            rl_avg = CalcMean(Constants.TypeOfTable.CALC_LOT_RANGE, Constants.TypeOfTable.CALC_LOT_AVG,
                              (int)Constants.TypeOfTable.CALC_LOT_RANGE, dt1, dt2, 0.0, 0.0, 0.0, 0.0, lstTable).Item2;
            resSigma = CalcSigma(Constants.TypeOfTable.CALC_LOT_RANGE, Constants.TypeOfTable.CALC_LOT_AVG,
                                 (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0, 0.0, 0.0, lstTable);
            rl_sigma = resSigma.Item2;

// Draw for Range

            max = GetMax(Constants.EnvType.TYPE_LT, Constants.TypeOfTable.CALC_LOT_RANGE,
                         Constants.TypeOfTable.CALC_LOT_AVG, (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0,
                         lstTable);
            min = GetMin(Constants.EnvType.TYPE_LT, Constants.TypeOfTable.CALC_LOT_RANGE,
                         Constants.TypeOfTable.CALC_LOT_AVG, (int)Constants.TypeOfTable.CALC_LOT_AVG, dt1, dt2, 0.0, 0.0,
                         lstTable);
            CalcCp(Constants.TypeOfTable.CALC_LOT_RANGE, rl_avg, rl_sigma, max - min, th85.F85_M_Usl ?? 0, th85.F85_M_Lsl ?? 0,
                   ref rl_cp, ref rl_cpk, false, false, 0.0, 0.0);
            foreach (var item in lstTable)
            {
                item.buf_type = Constants.TypeOfTable.CALC_LOT_RANGE;
            }
            data              = GrapData(Constants.TypeOfTable.CALC_LOT_RANGE, lstTable);
            repone.HighHumid  = max.ToString("F");
            repone.LowHumid   = min.ToString("f");
            repone.MeanHumid  = rl_avg.ToString("F");
            repone.SigmaHumid = rl_sigma.ToString("f");
            repone.RangeHumid = (max - min).ToString("f");
            repone.UCLHumid   = (rl_avg + 3 * rl_sigma).ToString("f");
            repone.LCLHumid   = (rl_avg - 3 * rl_sigma).ToString("F");
            repone.CpHumid    = rl_cp.ToString("F");
            repone.CpkHumid   = rl_cpk.ToString("F");
            repone.tblHumid   = data.Item1;
            repone.TimeHumid  = data.Item5;
// Draw graph for average temperature
            d_min = min - 1;
            if (d_min < 0)
            {
                d_min = 0;
            }
            lt_range = Math.Round(max - min, 3);
            a_ucl    = Math.Round(rl_avg + 3 * rl_sigma, 3);
            a_lcl    = Math.Round(rl_avg - 3 * rl_sigma, 3);
            te85     = _unitOfWork.EnvProdRepository.Get(i => i.F85_Code == productCode);
            if (te85 != null)
            {
                te85.F85_R_High  = max;
                te85.F85_R_Low   = min;
                te85.F85_R_Ucl   = a_ucl;
                te85.F85_R_Lcl   = a_lcl;
                te85.F85_R_Cpk   = rl_cpk;
                te85.F85_R_Cp    = rl_cp;
                te85.F85_R_Range = lt_range;
                te85.F85_R_Mean  = rl_avg;
                te85.F85_R_Sigma = rl_sigma;
                _unitOfWork.EnvProdRepository.Update(te85);
            }
            _unitOfWork.Commit();
            return(new ResponseResult <XRTemperatureItem>(repone, true));
        }
Example #7
0
        public ResponseResult <CreepingAndRollSpeedDurationItem> Search(DateTime startDate, DateTime endDate,
                                                                        Constants.RollMachine machine, Constants.EnvMode mode)
        {
            var nlbl = 0;

            if ((endDate - startDate).TotalDays < 10)
            {
                nlbl = 0;
            }
            else if ((endDate - startDate).TotalDays < 20)
            {
                nlbl = 4;
            }
            else
            {
                nlbl = (endDate - startDate).TotalDays < 50 ? 8 : 10;
            }
            var item = new CreepingAndRollSpeedDurationItem();

            for (int i = 1; i <= 3; i++)
            {
                var id = 0;
                if (machine == Constants.RollMachine.Roll_MC_18 && i != 3)
                {
                    id = i;
                }
                else if (machine == Constants.RollMachine.Roll_MC_12 && i != 3)
                {
                    id = i + 2;
                }
                else if (machine == Constants.RollMachine.Roll_MC_18 && i == 3)
                {
                    id = 5;
                }
                else
                {
                    id = 6;
                }
                var res = GetMespVal(Constants.EnvType.TYPE_RS, id, mode);
                if (!res.Item1)
                {
                    return(new ResponseResult <CreepingAndRollSpeedDurationItem>(null, false));
                }
                var b_TEMPUSL_NULL  = false;
                var b_HUMIDUSL_NULL = false;
                if (res.Item3.F80_T_Usl == null)
                {
                    res.Item3.F80_T_Usl = res.Item3.F80_T_Ucl;
                    b_TEMPUSL_NULL      = true;
                }

                if (res.Item3.F80_H_Usl == null)
                {
                    res.Item3.F80_H_Usl = res.Item3.F80_H_Ucl;
                    b_HUMIDUSL_NULL     = true;
                }
                var te80EnvMesp = res.Item3;
                var lstTable    = new List <Graphtbl>();
                var termDate    = startDate;
                do
                {
                    var result = CalcData(Constants.EnvType.TYPE_RS, id, null, termDate,
                                          Constants.TypeOfTable.CALC_TE83_90, 1, mode, te80EnvMesp.F80_T_Ucl ?? 0, te80EnvMesp.F80_T_Lcl ?? 0,
                                          te80EnvMesp.F80_T_Usl ?? 0, te80EnvMesp.F80_T_Lsl ?? 0, te80EnvMesp.F80_T_Dis_Up ?? 0, te80EnvMesp.F80_H_Dis_Up ?? 0,
                                          te80EnvMesp.F80_T_Dis_Lo ?? 0, te80EnvMesp.F80_H_Dis_Lo ?? 0, te80EnvMesp.F80_H_Ucl ?? 0, te80EnvMesp.F80_H_Lcl ?? 0,
                                          te80EnvMesp.F80_H_Usl ?? 0, te80EnvMesp.F80_H_Lsl ?? 0, te80EnvMesp.F80_T_Cal_Up ?? 0, te80EnvMesp.F80_T_Cal_Lo ?? 0,
                                          te80EnvMesp.F80_H_Cal_Up ?? 0, te80EnvMesp.F80_H_Cal_Lo ?? 0, true, lstTable);
                    if (!result)
                    {
                        break;
                    }
                    termDate = termDate.AddDays(1);
                } while (termDate <= endDate);
                termDate = endDate.AddDays(1);
                var resultEndDate = CalcData(Constants.EnvType.TYPE_RS, id, Constants.TypeOfTable.CALC_TETMP_RLSPD, startDate,
                                             Constants.TypeOfTable.CALC_TETMP_RLSPD, (termDate - startDate).Days, mode, te80EnvMesp.F80_T_Ucl ?? 0, te80EnvMesp.F80_T_Lcl ?? 0,
                                             te80EnvMesp.F80_T_Usl ?? 0, te80EnvMesp.F80_T_Lsl ?? 0, te80EnvMesp.F80_T_Dis_Up ?? 0, te80EnvMesp.F80_H_Dis_Up ?? 0,
                                             te80EnvMesp.F80_T_Dis_Lo ?? 0, te80EnvMesp.F80_H_Dis_Lo ?? 0, te80EnvMesp.F80_H_Ucl ?? 0, te80EnvMesp.F80_H_Lcl ?? 0,
                                             te80EnvMesp.F80_H_Usl ?? 0, te80EnvMesp.F80_H_Lsl ?? 0, te80EnvMesp.F80_T_Cal_Up ?? 0, te80EnvMesp.F80_T_Cal_Lo ?? 0,
                                             te80EnvMesp.F80_H_Cal_Up ?? 0, te80EnvMesp.F80_H_Cal_Lo ?? 0, true, lstTable);
                if (!resultEndDate)
                {
                    continue;
                }
                var dt1  = startDate.AddHours(8);
                var dt2  = endDate.AddHours(8);
                var mean = CalcMean(Constants.TypeOfTable.CALC_BUFFER, Constants.TypeOfTable.CALC_TETMP_RLSPD90,
                                    id, dt1, dt2, te80EnvMesp.F80_T_Cal_Up ?? 0,
                                    te80EnvMesp.F80_T_Cal_Lo ?? 0, te80EnvMesp.F80_H_Cal_Up ?? 0, te80EnvMesp.F80_H_Cal_Lo ?? 0, lstTable);
                if (mean.Item1)
                {
                    UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TETMP_RLSPD90
                                 , dt1, mean.Item2,
                                 Constants.EnvFieldNo.FLD_MEAN, lstTable);
                }
                else
                {
                    return(new ResponseResult <CreepingAndRollSpeedDurationItem>(null, false));
                }
                var sigma = CalcSigma(Constants.TypeOfTable.CALC_BUFFER, Constants.TypeOfTable.CALC_BUFFER,
                                      (int)Constants.TypeOfTable.CALC_TETMP_RLSPD90, dt1, dt2, te80EnvMesp.F80_T_Cal_Up ?? 0,
                                      te80EnvMesp.F80_T_Cal_Lo ?? 0, te80EnvMesp.F80_H_Cal_Up ?? 0, te80EnvMesp.F80_H_Cal_Lo ?? 0, lstTable);
                var max = GetMax(Constants.EnvType.TYPE_RS, Constants.TypeOfTable.CALC_BUFFER,
                                 Constants.TypeOfTable.CALC_TETMP_RLSPD90, id, dt1, dt2, te80EnvMesp.F80_T_Dis_Up ?? 0,
                                 te80EnvMesp.F80_H_Dis_Up ?? 0, lstTable);
                var min = GetMin(Constants.EnvType.TYPE_RS, Constants.TypeOfTable.CALC_BUFFER,
                                 Constants.TypeOfTable.CALC_TETMP_RLSPD90, id, dt1, dt2, te80EnvMesp.F80_T_Dis_Lo ?? 0,
                                 te80EnvMesp.F80_H_Dis_Lo ?? 0, lstTable);
                double?rl_upper;
                double?rl_lower;
                if (mode == Constants.EnvMode.ControlLine)
                {
                    rl_upper = te80EnvMesp.F80_T_Ucl;
                    rl_lower = te80EnvMesp.F80_T_Lcl;
                }
                else
                {
                    rl_upper = te80EnvMesp.F80_T_Usl;
                    rl_lower = te80EnvMesp.F80_T_Lsl;
                }

                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TETMP_RLSPD90
                             , dt1, rl_lower ?? 0,
                             Constants.EnvFieldNo.FLD_LOWER, lstTable);
                UpdateBuffer(Constants.EnvActionBuffer.UPDATE_DB, Constants.TypeOfTable.CALC_TETMP_RLSPD90
                             , dt1, rl_upper ?? 0,
                             Constants.EnvFieldNo.FLD_UPPER, lstTable);
                double r_cp  = 0;
                double r_cpk = 0;
                CalcCp(Constants.TypeOfTable.CALC_TETMP_RLSPD, mean.Item2, sigma.Item2, max - min, te80EnvMesp.F80_T_Usl ?? 0,
                       te80EnvMesp.F80_T_Lsl ?? 0, ref r_cp, ref r_cpk, b_TEMPUSL_NULL, b_HUMIDUSL_NULL, te80EnvMesp.F80_T_Lcl ?? 0, te80EnvMesp.F80_T_Ucl ?? 0,
                       te80EnvMesp.F80_H_Lcl ?? 0, te80EnvMesp.F80_H_Ucl ?? 0);
                var dataChart = GrapData(Constants.TypeOfTable.CALC_TETMP_RLSPD90, lstTable);
                switch (id)
                {
                case 1:
                case 3:
                    item.LeftModel = new ChartModel()
                    {
                        ChartName = machine.ToString() + ": Left Creeping",
                        Cp        = r_cp.ToString("f"), Cpk = r_cpk.ToString("F"),
                        Data1     = dataChart.Item1,
                        Data2     = dataChart.Item2,
                        Data3     = dataChart.Item3,
                        Data4     = dataChart.Item4,
                        lstTime   = dataChart.Item5,
                        High      = max.ToString("f"),
                        Low       = min.ToString("f"),
                        Range     = (max - min).ToString("f"),
                        LCL       = rl_lower.Value.ToString("f"),
                        Mean      = mean.Item2.ToString("f"),
                        Sigma     = sigma.Item2.ToString("f"),
                        UCL       = rl_upper.Value.ToString("f")
                    };

                    break;

                case 2:
                case 4:
                    item.RightModel = new ChartModel()
                    {
                        ChartName = machine.ToString() + ": Right Creeping",
                        Cp        = r_cp.ToString("f"),
                        Cpk       = r_cpk.ToString("F"),
                        Data1     = dataChart.Item1,
                        Data2     = dataChart.Item2,
                        Data3     = dataChart.Item3,
                        Data4     = dataChart.Item4,
                        lstTime   = dataChart.Item5,
                        High      = max.ToString("f"),
                        Low       = min.ToString("f"),
                        Range     = (max - min).ToString("f"),
                        LCL       = rl_lower.Value.ToString("f"),
                        Mean      = mean.Item2.ToString("f"),
                        Sigma     = sigma.Item2.ToString("f"),
                        UCL       = rl_upper.Value.ToString("f")
                    };
                    break;

                case 5:
                case 6:
                    item.RollModel = new ChartModel()
                    {
                        ChartName = machine.ToString() + ": Roll Speed",
                        Cp        = r_cp.ToString("f"),
                        Cpk       = r_cpk.ToString("F"),
                        Data1     = dataChart.Item1,
                        Data2     = dataChart.Item2,
                        Data3     = dataChart.Item3,
                        Data4     = dataChart.Item4,
                        lstTime   = dataChart.Item5,
                        High      = max.ToString("f"),
                        Low       = min.ToString("f"),
                        Range     = (max - min).ToString("f"),
                        LCL       = rl_lower.Value.ToString("f"),
                        Mean      = mean.Item2.ToString("f"),
                        Sigma     = sigma.Item2.ToString("f"),
                        UCL       = rl_upper.Value.ToString("f")
                    };
                    break;
                }
            }
            return(new ResponseResult <CreepingAndRollSpeedDurationItem>(item, true));
        }