Beispiel #1
0
        private void DB2Oper()
        {
            DB2Helper dB2 = new DB2Helper();

            dB2.GetSomeData(sql);
            foreach (DataRow dr in dB2.dt.Rows)
            {
                T t = new T();
                // 获得此模型的公共属性
                PropertyInfo[] propertys = t.GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    if (dB2.dt.Columns.Contains(pi.Name))
                    {
                        if (!pi.CanWrite)
                        {
                            continue;
                        }
                        object value = dr[pi.Name];
                        if (value != DBNull.Value)
                        {
                            pi.SetValue(t, value, null);
                        }
                    }
                }
                entities.EntityList.Add(t);
            }

            //部分更新的表需要设定最后的一条记录时间
            if (entities.CompareTimeColumnName != "" && entities.EntityList.Count > 0)
            {
                T t = entities.EntityList.OrderBy(o => o.GetType().GetProperty(entities.CompareTimeColumnName)).LastOrDefault();
                LastRecordTime = (DateTime)t.GetType().GetProperty(entities.CompareTimeColumnName).GetValue(t, null);
            }
        }
Beispiel #2
0
        private void DB2Oper()
        {
            DB2Helper dB2 = new DB2Helper();

            dB2.GetSomeData(sql);
            foreach (DataRow dr in dB2.dt.Rows)
            {
                T t = new T();
                // 获得此模型的公共属性
                PropertyInfo[] propertys = t.GetType().GetProperties();
                foreach (PropertyInfo pi in propertys)
                {
                    if (dB2.dt.Columns.Contains(pi.Name))
                    {
                        if (!pi.CanWrite)
                        {
                            continue;
                        }
                        object value = dr[pi.Name];
                        if (value != DBNull.Value)
                        {
                            pi.SetValue(t, value, null);
                        }
                    }
                }
                entities.EntityList.Add(t);
            }
        }
        int GetCount(string eqp, string startTime)
        {
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData(string.Format("select distinct proc_time from mmview.fhcdatahs_lot where proc_eqp_id='{0}' and proc_time >'{1}'", eqp, startTime));
            return(db2.dt.Rows.Count);
        }
Beispiel #4
0
        //querycoordinate
        public JsonResult querycoordinate()
        {
            string    RecipeName = Request["RecipeName"].ToString();
            string    sql        = string.Format("select RecipeName,SiteName,Coordinate,CreateTime,Owner from ISTRPT.RPT_WAT_Recipe_coordinate where RecipeName='{0}'", RecipeName);
            DB2Helper db2        = new DB2Helper();

            db2.GetSomeData(sql);
            DataTable dt = db2.dt;

            dt.Columns.Add("COORDINATEX", Type.GetType("System.String"));
            dt.Columns.Add("COORDINATEY", Type.GetType("System.String"));
            if (dt.Rows.Count != 0)
            {
                JsonSerializerSettings setting = new JsonSerializerSettings()
                {
                    ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                };
                //JavaScriptSerializer serialize = new JavaScriptSerializer();
                string str = JsonConvert.SerializeObject(dt, setting);
                return(Json(str, JsonRequestBehavior.AllowGet));
            }
            else
            {
                //return Json("该RecipeName没有Coordinate,请先添加再查询");
                return(Json("nodata"));
            }
        }
Beispiel #5
0
        public JsonResult savecoordinate(List <ReqRpt216coordinate> savelist)
        {
            try
            {
                //首先检查该RecipeName是否有坐标存在
                string    sql = string.Format("select count(1) as num from ISTRPT.RPT_WAT_Recipe_coordinate where RecipeName='{0}'", savelist.First().RECIPENAME);
                DB2Helper db2 = new DB2Helper();
                db2.GetSomeData(sql);
                DataTable dt = db2.dt;
                if (Convert.ToInt32(dt.Rows[0][0]) > 0)
                {
                    return(Json("exist"));
                }


                List <String> list = new List <string>();
                String        sql2 = "";
                foreach (ReqRpt216coordinate o in savelist)
                {
                    sql2 = string.Format("insert into ISTRPT.RPT_WAT_Recipe_coordinate(RECIPENAME,SITENAME,COORDINATE,CREATETIME,OWNER) values('{0}','{1}','{2}','{3}','{4}') ;", o.RECIPENAME, o.SITENAME, o.COORDINATEX + ',' + o.COORDINATEY, o.CREATETIME, o.OWNER);
                    list.Add(sql2);
                }
                db2.UpdateBatchCommand(list);
                return(Json("success"));
            }
            catch (Exception)
            {
                return(Json("error"));
            }
        }
Beispiel #6
0
        public ReqRpt025Translator()
        {
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData("select max(Start_Time) from istrpt.RPT_RealTime_Lin");
            LastRecordTime = (DateTime)db2.dt.Rows[0][0];
            Translate(LastRecordTime, DateTime.Now);
        }
Beispiel #7
0
        private InlineDBEntity GetLikelyEntity(InlineDBEntity entity)
        {
            var            list         = inlineDBEntities.Where(a => a.Lot == entity.Lot && a.WaferPosition == entity.WaferPosition && a.WaferSeq != "*" && a.ItemType != "Derived").OrderBy(p => (p.ClaimTime - entity.ClaimTime).Duration());
            InlineDBEntity likelyEntity = list.FirstOrDefault();
            //如果存在不一致的情况要记录
            var testmax = list.Max(p => p.WaferSeq);
            var testmin = list.Min(p => p.WaferSeq);

            if (testmax != testmin)
            {
                LogHelper.InlineInfoLog(string.Format("testmax:{0},testmin:{1},lot:{2},claimtime:{3}", testmax, testmin, entity.Lot, entity.ClaimTime.ToString()));
            }
            //如果没找到,就到数据库中去找
            if (likelyEntity is null)
            {
                string sqlt = string.Format("(select claim_time, wafer_seq,sourcelot,techbology, product,lotype,owner,measoperator,measequipment,measrecipe,procroute,procroutever,procstep,proctime,procoperatoruser,procequipment,procrecipe from istrpt.fvace_inline_dc where claim_time >= '{0}' and wafer_seq not in ('', '*') order by claim_time FETCH FIRST 1 ROWS ONLY) " +
                                            "union (select claim_time, wafer_seq,sourcelot,techbology, product,lotype,owner,measoperator,measequipment,measrecipe,procroute,procroutever,procstep,proctime,procoperatoruser,procequipment,procrecipe from istrpt.fvace_inline_dc where claim_time <= '{0}' and wafer_seq not in ('', '*')  order by claim_time desc FETCH FIRST 1 ROWS ONLY)", entity.ClaimTime.ToString("yyyy-MM-dd-HH.mm.ss.ffffff"));
                DB2Helper dB2Helper = new DB2Helper();
                dB2Helper.GetSomeData(sqlt);
                likelyEntity = new InlineDBEntity();
                DataRow dr = dB2Helper.dt.NewRow();
                if (dB2Helper.dt.Rows.Count == 2 && dB2Helper.dt.Rows[0][1].ToString() != dB2Helper.dt.Rows[1][1].ToString())
                {
                    dr = (DateTime)dB2Helper.dt.Rows[0][0] - entity.ClaimTime < entity.ClaimTime - (DateTime)dB2Helper.dt.Rows[1][0] ? dB2Helper.dt.Rows[0] : dB2Helper.dt.Rows[1];
                }
                else if (dB2Helper.dt.Rows.Count > 0)
                {
                    dr = dB2Helper.dt.Rows[0];
                }
                likelyEntity.ClaimTime     = (DateTime)dr[0];
                likelyEntity.WaferSeq      = dr[1].ToString();
                likelyEntity.SourceLot     = dr[2].ToString();
                likelyEntity.Technology    = dr[3].ToString();
                likelyEntity.Product       = dr[4].ToString();
                likelyEntity.LotType       = dr[5].ToString();
                likelyEntity.Owner         = dr[6].ToString();
                likelyEntity.MeasOperator  = dr[7].ToString();
                likelyEntity.MeasEquipment = dr[8].ToString();
                likelyEntity.MeasRecipe    = dr[9].ToString();
                likelyEntity.ProcRoute     = dr[10].ToString();
                likelyEntity.ProcRouteVer  = dr[11].ToString();
                likelyEntity.ProcStep      = dr[12].ToString();
                if (dr[13] is null)
                {
                    likelyEntity.ProcTime = null;
                }
                else
                {
                    likelyEntity.ProcTime = (DateTime)dr[13];
                }
                likelyEntity.ProcOperatorUser = dr[14].ToString();
                likelyEntity.ProcRecipe       = dr[15].ToString();
            }

            return(likelyEntity);
        }
Beispiel #8
0
        public ReqRpt030MainViewModel()
        {
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData("select lot_id from istrpt.rpt_wip_special_lot");
            foreach (DataRow dr in db2.dt.Rows)
            {
                Lot_ID.Add(dr[0].ToString());
            }
        }
Beispiel #9
0
        //为ChamberOphsEntities赋值
        public void GetData()
        {
            DB2Helper dB2 = new DB2Helper();

            dB2.GetSomeData(Sql_chamber);
            if (dB2.dt.Rows.Count == 0)
            {
                throw new NoQueryDataException("没有新的Chamber数据产生");
            }

            foreach (DataRow dr in dB2.dt.Rows)
            {
                ChamberDBEntity chamberDB = new ChamberDBEntity()
                {
                    Eqp_ID         = dr["Eqp_ID"].ToString(),
                    Lot_ID         = dr["Lot_ID"].ToString(),
                    MainPD_ID      = dr["MainPD_ID"].ToString(),
                    Ope_No         = dr["Ope_NO"].ToString(),
                    Ope_Pass_Count = (int)dr["Ope_Pass_Count"],
                    Procrsc_ID     = dr["Procrsc_ID"].ToString(),
                    Proc_Time      = (DateTime)dr["Proc_Time"],
                    Wafer_ID       = dr["Wafer_ID"].ToString()
                };
                ChamberDBEntities.Add(chamberDB);
            }

            dB2.GetSomeData(Sql_History);
            foreach (DataRow dr in dB2.dt.Rows)
            {
                ChamberOphsEntity chamberOphs = new ChamberOphsEntity()
                {
                    Claim_Time     = (DateTime)dr["Claim_Time"],
                    Eqp_ID         = dr["Eqp_ID"].ToString(),
                    Lot_ID         = dr["Lot_ID"].ToString(),
                    MainPD_ID      = dr["MainPD_ID"].ToString(),
                    Ope_No         = dr["Ope_NO"].ToString(),
                    Ope_Pass_Count = (int)dr["Ope_Pass_Count"],
                    Recipe_ID      = dr["Recipe_ID"].ToString(),
                    PD_ID          = dr["PD_ID"].ToString()
                };
                ChamberOphsEntities.Add(chamberOphs);
            }
        }
        public ReqRpt030DeleteSpecialLotResultModel(string LotID)
        {
            LotID = LotID.Replace("'", "");
            LotID = LotID.Replace("\"", "");
            List <string> list = LotID.Split(',').ToList();
            string        sql  = string.Format("delete from ISTRPT.RPT_WIP_SPECIAL_LOT where LOT_ID in ('{0}')", string.Join("','", list));
            DB2Helper     db2  = new DB2Helper();

            db2.GetSomeData(sql);
        }
        public void ImportToDB2()
        {
            List <string> FRLots = new List <string>();
            DB2Helper     db2    = new DB2Helper();
            string        sql    = string.Format("select lot_id from mmview.frlot where lot_id in ('{0}')", FormatLotIDCondition);

            db2.GetSomeData(sql);
            foreach (DataRow dr in db2.dt.Rows)
            {
                FRLots.Add(dr[0].ToString());
            }
            foreach (string lot in LotID)
            {
                if (!FRLots.Contains(lot))
                {
                    ErrorID.Add(lot);
                }
            }
            LotID = FRLots;
            if (Mode == "OverRide")
            {
                sql = string.Format("insert into ISTRPT.RPT_WIP_SPECIAL_LOT (LOT_ID) values ('{0}')", FormatLotIDCondition2);
                sql = string.Format("delete from ISTRPT.RPT_WIP_SPECIAL_LOT;{0}", sql);
                db2.GetSomeData(sql);
            }
            else if (Mode == "AddMore")
            {
                foreach (string lot in LotID)
                {
                    try
                    {
                        sql = string.Format("insert into ISTRPT.RPT_WIP_SPECIAL_LOT (LOT_ID) values ('{0}')", lot);
                        db2.GetSomeData(sql);
                    }
                    catch (Exception)
                    {
                        RepeatID.Add(lot);
                    }
                }
            }
        }
        private void Initialize()
        {
            string sql = string.Format("select Priority_Class from mmview.fhopehs where lot_id='{0}' order by Claim_Time desc fetch first 1 rows only", LotID);
            var    db2 = new DB2Helper();

            db2.GetSomeData(sql);
            Priority = (int)db2.dt.DefaultView[0][0];
            GetDb2Datas();
            SetHistEntities();
            SetForcastEntities();
            SetQtValue();
        }
        // public string Msg { get; set; }

        //DB2DataCatcher<Rpt_Lot_Quota_Mapping> map { get; set; } = new DB2DataCatcher<Rpt_Lot_Quota_Mapping>("ISTRPT.Rpt_Lot_Quota_Mapping");

        private void Initialize()
        {
            if (string.IsNullOrEmpty(LotID))
            {
                throw new Exception("LotID是空字符");
            }
            string sql = "";
            var    db2 = new DB2Helper();

            if (string.IsNullOrEmpty(Project))
            {
                sql = string.Format("delete from ISTRPT.Rpt_Lot_Quota_Mapping where lot_id='{0}';", LotID);
                db2.GetSomeData(sql);
            }
            else
            {
                sql = string.Format("delete from ISTRPT.Rpt_Lot_Quota_Mapping where lot_id='{0}' and project_desc='{1}'", LotID, Project);
                db2.GetSomeData(sql);
                sql = string.Format("insert into ISTRPT.Rpt_Lot_Quota_Mapping (lot_id,quota_type,project_desc) values ('{0}',1,'{1}')", LotID, Project);
                db2.GetSomeData(sql);
            }
            Success = true;
        }
Beispiel #14
0
        public JsonResult GetDcitemList()
        {
            string    sql = "select distinct(dcitem_name) from ISTRPT.Report47_Proc";
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData(sql);
            List <string> list = new List <string>();

            for (var i = 0; i < db2.dt.Rows.Count; i++)
            {
                list.Add(db2.dt.Rows[i][0].ToString());
            }
            return(Json(new { success = true, DcItems = list }));
        }
        private void Initialize()
        {
            if (LotType.Count == 0)
            {
                return;
            }
            string    sql = string.Format("select distinct prodspec_id from mmview.frlot where lot_type in ('{0}') order by prodspec_id", string.Join("','", LotType));
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData(sql);
            foreach (DataRow dr in db2.dt.Rows)
            {
                Products.Add(dr[0].ToString());
            }
        }
Beispiel #16
0
        public bool UpdateKey(string project, string newKey)
        {
            string md5Key = MD5jiami.MD5Encrypt(newKey);
            string sql    = string.Format("update  istrpt.rpt_project_key set pass='******' where projectname='{1}'", md5Key, project);

            try
            {
                DB2Helper db2 = new DB2Helper();
                db2.GetSomeData(sql);
                return(true);
            }
            catch (Exception)
            {
                return(false);
            }
        }
Beispiel #17
0
        private InlineDBEntity GetLikelyEntity(InlineDBEntity entity)
        {
            string sqlt = string.Format("(select claim_time, wafer_seq,sourcelot,technology, product,lotype,owner,measoperator,measequipment,measrecipe,procroute,procroutever,procstep,proctime,procoperatoruser,procequipment,procrecipe from istrpt.fvace_inline_dc where lot='{1}' and wafer_position='{2}' and claim_time >= '{0}' and wafer_seq not in ('', '*') order by claim_time FETCH FIRST 1 ROWS ONLY) " +
                                        "union (select claim_time, wafer_seq,sourcelot,technology, product,lotype,owner,measoperator,measequipment,measrecipe,procroute,procroutever,procstep,proctime,procoperatoruser,procequipment,procrecipe from istrpt.fvace_inline_dc where lot='{1}' and wafer_position='{2}' and claim_time <= '{0}' and wafer_seq not in ('', '*')  order by claim_time desc FETCH FIRST 1 ROWS ONLY)", entity.ClaimTime.ToString("yyyy-MM-dd-HH.mm.ss.ffffff"), entity.Lot, entity.WaferPosition);
            DB2Helper dB2Helper = new DB2Helper();

            dB2Helper.GetSomeData(sqlt);
            var     likelyEntity = new InlineDBEntity();
            DataRow dr           = dB2Helper.dt.NewRow();

            if (dB2Helper.dt.Rows.Count == 2 && dB2Helper.dt.Rows[0][1].ToString() != dB2Helper.dt.Rows[1][1].ToString())
            {
                dr = (DateTime)dB2Helper.dt.Rows[0][0] - entity.ClaimTime < entity.ClaimTime - (DateTime)dB2Helper.dt.Rows[1][0] ? dB2Helper.dt.Rows[0] : dB2Helper.dt.Rows[1];
            }
            else if (dB2Helper.dt.Rows.Count > 0)
            {
                dr = dB2Helper.dt.Rows[0];
            }
            likelyEntity.ClaimTime     = (DateTime)dr[0];
            likelyEntity.WaferSeq      = dr[1].ToString();
            likelyEntity.SourceLot     = dr[2].ToString();
            likelyEntity.Technology    = dr[3].ToString();
            likelyEntity.Product       = dr[4].ToString();
            likelyEntity.LotType       = dr[5].ToString();
            likelyEntity.Owner         = dr[6].ToString();
            likelyEntity.MeasOperator  = dr[7].ToString();
            likelyEntity.MeasEquipment = dr[8].ToString();
            likelyEntity.MeasRecipe    = dr[9].ToString();
            likelyEntity.ProcRoute     = dr[10].ToString();
            likelyEntity.ProcRouteVer  = dr[11].ToString();
            //likelyEntity.ProcStep = dr[12].ToString();
            var temp = PDModels.Where(w => w.Route == entity.ProcRoute && w.OPE_NO == dr["ProcStep"].ToString()).FirstOrDefault();

            likelyEntity.ProcStep = temp == null ? dr["ProcStep"].ToString() : temp.Step;
            if (dr[13] is null)
            {
                likelyEntity.ProcTime = null;
            }
            else
            {
                likelyEntity.ProcTime = (DateTime)dr[13];
            }
            likelyEntity.ProcOperatorUser = dr[14].ToString();
            likelyEntity.ProcRecipe       = dr[15].ToString();
            return(likelyEntity);
        }
        private void Initialize()
        {
            string sql = "select prodspec_id from mmview.fvprodspec ";

            switch (type)
            {
            case 0:
                sql += "where prodcat_id='Dummy'";
                break;

            case 1:
                sql += "where prodcat_id='Equipment Monitor'";
                break;

            case 2:
                sql += "where prodcat_id='Process Monitor'";
                break;

            case 3:
                sql += "where prodcat_id='Production'";
                break;

            case 4:
                sql += "where prodcat_id='Raw'";
                break;

            case 5:
                sql += "where prodcat_id='Recycle'";
                break;

            case 6:
                sql += "where prodcat_id='Production' and prodspec_id not like 'SL%'";
                break;

            default:
                break;
            }
            DB2Helper dB2 = new DB2Helper();

            dB2.GetSomeData(sql);
            for (var i = 0; i < dB2.dt.Rows.Count; i++)
            {
                Prods.Add(dB2.dt.Rows[i][0].ToString());
            }
        }
        //public List<string> Product { get; set; } = new List<string>();

        private void Initialize()
        {
            DB2Helper db2 = new DB2Helper();
            string    sql = "select distinct lot_type from istrpt.report24_lot_wafer_qty order by lot_type ";

            db2.GetSomeData(sql);
            foreach (DataRow dr in db2.dt.Rows)
            {
                LotType.Add(dr[0].ToString());
            }

            //sql = "select distinct prodspec_id from mmview.frlot order by prodspec_id";
            //db2.GetSomeData(sql);
            //foreach (DataRow dr in db2.dt.Rows)
            //{
            //    Product.Add(dr[0].ToString());
            //}
        }
Beispiel #20
0
 public JsonResult GetAllLotType()
 {
     try
     {
         string    sql = "select lot_type from mmview.frlottype";
         DB2Helper db2 = new DB2Helper();
         db2.GetSomeData(sql);
         var           dt   = db2.dt;
         List <string> list = new List <string>();
         for (var i = 0; i < dt.Rows.Count; i++)
         {
             list.Add(dt.DefaultView[i][0].ToString());
         }
         return(Json(new { success = true, values = list }));
     }
     catch (Exception ex)
     {
         return(Json(new { success = false, msg = ex.Message }));
     }
 }
Beispiel #21
0
 public bool NeedUpdate()
 {
     if (DateTime.Now - UpdateTime < TimeSpan.FromMinutes(5))
     {
         return(false);
     }
     if (entities.CompareTimeColumnName != "")
     {
         return(true);
     }
     else if (AutoUpdate)
     {
         return(true);
     }
     else
     {
         DB2Helper dB2 = new DB2Helper();
         dB2.GetSomeData("select count(*) from " + entities.TableName);
         return(RecordCount != (int)dB2.dt.DefaultView[0][0]);
     }
 }
Beispiel #22
0
        public bool CheckKey(string project, string key)
        {
            string    res = "";
            string    sql = string.Format("select pass from istrpt.rpt_project_key where projectname ='{0}'", project);
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData(sql);
            if (db2.dt.Rows.Count <= 0)
            {
                return(false);
            }
            res = db2.dt.Rows[0][0].ToString();
            if (res == MD5jiami.MD5Encrypt(key))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Beispiel #23
0
        public JsonResult GetUserInfoByUserID(string userid)
        {
            try
            {
                string    sql = string.Format(@"select user.fullname,code.description   from  mmview.fvuser user , mmview.frcode code where
user.Department = code.code_id
and code.category_id = 'Department' and user.user_id='{0}'", userid);
                DB2Helper db2 = new DB2Helper();
                db2.GetSomeData(sql);
                if (db2.dt.DefaultView.Count > 0)
                {
                    return(Json(new { success = true, UserName = db2.dt.DefaultView[0][0].ToString(), Department = db2.dt.DefaultView[0][1].ToString() }, JsonRequestBehavior.DenyGet));
                }
                else
                {
                    return(Json(new { success = false, msg = string.Format("数据库中没有UserID:{0}", userid) }, JsonRequestBehavior.DenyGet));
                }
            }
            catch (Exception ex)
            {
                return(Json(new { success = false, msg = ex.Message }));
            }
        }
Beispiel #24
0
        public void Initialize()
        {
            string    sql = string.Format("select product,count(*) from (select t1.product,pd.pd_type from ( select product,pd_syskey from istrpt.report51_list where product in ('{0}'))t1 left join mmview.frpd pd on t1.pd_syskey=pd.d_thesystemkey where pd_type not in ('Dummy','Measurement')) group by product", string.Join("','", ProductList));
            DB2Helper db2 = new DB2Helper();

            db2.GetSomeData(sql);
            foreach (DataRow dr in db2.dt.Rows)
            {
                TableRowEntities.Add(new ReqRpt004TableGroupEntity()
                {
                    ProductID = dr[0].ToString(), EffectiveSteps = (int)dr[1]
                });
            }
            TurnCatcher.Conditions = string.Format("where start_time between '{0}' and '{1}' and Product_ID in ('{2}')", StrStartTime, StrEndTime, string.Join("','", ProductList));
            var list = TurnCatcher.GetEntities().EntityList;

            foreach (var item in TableRowEntities)
            {
                var      rawList = list.Where(w => w.Product_ID == item.ProductID);
                DateTime dt      = DFromDate;
                while (dt <= DTargetDate)
                {
                    if (!rawList.Any() || !rawList.Where(w => w.Start_Time.Date == dt).Any())
                    {
                        item.TableEntities.Add(new ReqRpt004TableEntity()
                        {
                            Date = dt,
                            Move = 0,
                            WIP  = 0
                        });
                        dt = dt.AddDays(1);
                        continue;
                    }
                    var itemList = rawList.Where(w => w.Start_Time.Date == dt);
                    var dayWIP   = itemList.Where(w => w.Start_Time.Hour == 8).Any()? itemList.Where(w => w.Start_Time.Hour == 8).First():new RPT_Turn_Daily();
                    var nightWIP = itemList.Where(w => w.Start_Time.Hour == 20).Any()? itemList.Where(w => w.Start_Time.Hour == 20).First():new RPT_Turn_Daily();
                    var nextWIP  = rawList.Where(w => w.Start_Time.Date == dt.AddDays(1) && w.Start_Time.Hour == 8).Any()? rawList.Where(w => w.Start_Time.Date == dt.AddDays(1) && w.Start_Time.Hour == 8).First():new RPT_Turn_Daily();
                    item.TableEntities.Add(new ReqRpt004TableEntity()
                    {
                        Date = dt,
                        Move = itemList.Sum(s => s.MoveQty),
                        WIP  = (dayWIP.WIP + 2 * nightWIP.WIP + nextWIP.WIP) / 4.0
                    });
                    dt = dt.AddDays(1);
                }
            }
            //Set DailyTotalTurn
            int    totalMove = 0;
            double totalWip  = 0;

            for (int i = 0; i < 31; i++)
            {
                int    move = 0;
                double wip  = 0;
                foreach (var item in TableRowEntities)
                {
                    move += item.TableEntities[i].Move;
                    wip  += item.TableEntities[i].WIP;
                }
                DailyTotalTurn.Add(wip == 0?"0.00":(move / wip).ToString("0.00"));
                totalMove += move;
                totalWip  += wip;
            }
            DailyTotalTurn.Add(totalWip == 0 ? "0.00" : (totalMove / totalWip).ToString("0.00"));
        }
Beispiel #25
0
        private void Initialize()
        {
            if (string.IsNullOrEmpty(RecivePostModel.LotTypes))
            {
                throw new Exception("没有选择LotType");
            }
            if (string.IsNullOrEmpty(RecivePostModel.Departments))
            {
                throw new Exception("没有选择Department");
            }
            if (From > To)
            {
                throw new Exception("时间范围错误");
            }
            DB2Helper db2 = new DB2Helper();
            string    sql = "select code_id, code_id || '(' || description || ')' as reason from mmview.frcode where category_id ='WaferScrap'";

            db2.GetSomeData(sql);
            foreach (DataRow dr in db2.dt.Rows)
            {
                Reason_Desc.Add(dr["code_id"].ToString(), dr["reason"].ToString());
            }

            var list = RecivePostModel.Departments.Split(',').ToList();
            ReqRpt023TableEntity BadWaferEntity = new ReqRpt023TableEntity()
            {
                Department = "BadWafer", Reasons_Pcs = GetNewReasons_Pcs()
            };

            if (list.Where(w => w.Substring(0, 2) == "WC").Count() > 0)
            {
                Entities.Add(BadWaferEntity);
            }
            dB2Data.Conditions = string.Format("where scrap_time between '{3}' and '{4}' and  bank_id in('{0}') and lot_type in ('{1}') and prodspec_id like '%{2}%'", string.Join("','", list), string.Join("','", LotTypes), Production, strFrom, strTo);
            var db2Entity = dB2Data.GetEntities();

            foreach (string item in list)
            {
                //BadWafer处理
                if (item.Substring(0, 2) == "WC")
                {
                    var Badfilter = db2Entity.EntityList.Where(w => w.Bank_ID == item);
                    foreach (string str in Reason_Desc.Keys)
                    {
                        BadWaferEntity.Reasons_Pcs[str] += Badfilter.Where(w => w.Reason_Code == str).Sum(s => s.Qty);
                    }
                    continue;
                }
                //非badwafer
                ReqRpt023TableEntity entity = new ReqRpt023TableEntity()
                {
                    Department  = ReqRpt024MainViewModel.Departments.Where(w => w.Value == item).FirstOrDefault().Key,
                    Reasons_Pcs = GetNewReasons_Pcs()
                };
                var filter = db2Entity.EntityList.Where(w => w.Bank_ID == item);
                foreach (string str in Reason_Desc.Keys)
                {
                    entity.Reasons_Pcs[str] = filter.Where(w => w.Reason_Code == str).Sum(s => s.Qty);
                }
                Entities.Add(entity);
            }

            TotalEntity.Reasons_Pcs = GetNewReasons_Pcs();
            foreach (string str in Reason_Desc.Keys)
            {
                TotalEntity.Reasons_Pcs[str] = Entities.Sum(s => s.Reasons_Pcs[str]);
            }
        }
Beispiel #26
0
        public void GetData()
        {
            DB2Helper dB2 = new DB2Helper();

            //获取PD信息,为Inline的Step赋值
            dB2.GetSomeData("select distinct mainpd_id,pd_id,ope_no from istrpt.fvace_wip_pdhis_v2 ");
            foreach (DataRow dr in dB2.dt.Rows)
            {
                try
                {
                    PDModel model = new PDModel();
                    model.MainPD_ID = dr["MainPD_ID"].ToString();
                    model.PD_ID     = dr["PD_ID"].ToString();
                    model.OPE_NO    = dr["OPE_NO"].ToString();
                    PDModels.Add(model);
                }
                catch (Exception)
                {
                }
            }

            dB2.GetSomeData(sql);
            double d = 0;

            if (dB2.dt.Rows.Count == 0)
            {
                throw new NoQueryDataException("没有新的Inline数据");
            }
            //DB2中获取的DateTable转换为类
            foreach (DataRow dr in dB2.dt.Rows)
            {
                try
                {
                    InlineDBEntity entity = new InlineDBEntity();

                    if (double.TryParse(dr["DCITEM_VALUE"].ToString(), out d))
                    {
                        entity.DCItemValue = d;
                    }
                    else
                    {
                        continue;
                    }

                    entity.ClaimTime     = (DateTime)dr["Claim_Time"];
                    entity.Lot           = dr["Lot"].ToString();
                    entity.SourceLot     = dr["SourceLot"].ToString();
                    entity.Technology    = dr["Technology"].ToString();
                    entity.Product       = dr["Product"].ToString();
                    entity.LotType       = dr["Lotype"].ToString();
                    entity.Owner         = dr["Owner"].ToString();
                    entity.MeasRoute     = dr["MeasRoute"].ToString();
                    entity.MeasRouteVer  = dr["MeasRouteVer"].ToString();
                    entity.MeasItem      = dr["MeasItem"].ToString();
                    entity.MeasTime      = (DateTime)dr["MeasTime"];
                    entity.MeasOperator  = dr["MeasOperator"].ToString();
                    entity.MeasEquipment = dr["MeasEquipment"].ToString();
                    entity.MeasRecipe    = dr["MeasRecipe"].ToString();
                    entity.ProcRoute     = dr["ProcRoute"].ToString();
                    entity.ProcRouteVer  = dr["ProcRouteVer"].ToString();
                    //entity.ProcStep = dr["ProcStep"].ToString();
                    var temp = PDModels.Where(w => w.Route == entity.MeasRoute && w.OPE_NO == dr["MeasStep"].ToString()).FirstOrDefault();
                    entity.MeasStep = temp == null ? dr["MeasStep"].ToString() : temp.Step;
                    temp            = PDModels.Where(w => w.Route == entity.ProcRoute && w.OPE_NO == dr["ProcStep"].ToString()).FirstOrDefault();
                    entity.ProcStep = temp == null ? dr["ProcStep"].ToString() : temp.Step;
                    if (dr["ProcTime"] == DBNull.Value)
                    {
                        entity.ProcTime = null;
                    }
                    else
                    {
                        entity.ProcTime = (DateTime)dr["ProcTime"];
                    }

                    entity.ProcOperatorUser = dr["PROCOPERATORUSER"].ToString();
                    entity.ProcEquipment    = dr["PROCEQUIPMENT"].ToString();
                    entity.ProcRecipe       = dr["ProcRecipe"].ToString();
                    entity.ProcReticle      = dr["ProcReticle"].ToString();
                    entity.MeasType         = dr["Meas_Type"].ToString();
                    entity.WaferSeq         = dr["Wafer_Seq"].ToString().Trim();
                    entity.WaferPosition    = dr["WAFER_POSITION"].ToString().Trim();
                    entity.SitePosition     = dr["Site_Position"].ToString();
                    entity.Target           = dr["Target"].ToString();
                    entity.SpecLow          = dr["SpecLow"].ToString();
                    entity.SpecHigh         = dr["SpecHigh"].ToString();
                    entity.CtrlLow          = dr["CtrlLow"].ToString();
                    entity.CtrlHigh         = dr["CtrlHigh"].ToString();
                    entity.ProcStepDesc     = dr["PROCSTEPDESC"].ToString().Replace("\n", "");
                    entity.MeasDcdefID      = dr["Meas_Dcdef_ID"].ToString();
                    entity.ItemType         = dr["Item_Type"].ToString();
                    inlineDBEntities.Add(entity);
                }
                catch (Exception e)
                {
                    LogHelper.ErrorLog(string.Format("InlineError InlineEntityGroup.GetData() ClaimTime:{0},Lot:{1}。", dr["Claim_Time"].ToString(), dr["Lot"].ToString()), e);
                }
            }

            //对wafer_seq为空或者为*号的数据去取相似案例的数据
            foreach (InlineDBEntity entity in inlineDBEntities)
            {
                if (entity.CollectedType == InlineDBEntity.CollectedTypes.L)
                {
                    continue;
                }
                try
                {
                    //Raw情况,暂未考虑WaferSeq为空的情况.
                    if (entity.ItemType == "Raw" && entity.WaferSeq == "*")
                    {
                        var likelyEntity = GetLikelyEntity(entity);
                        entity.WaferSeq = likelyEntity.WaferSeq;
                    }
                    //Derived情况
                    if (entity.ItemType == "Derived")
                    {
                        var likelyEntity = GetRawEntityOfDerived(entity);
                        entity.WaferSeq         = likelyEntity.WaferSeq;
                        entity.SourceLot        = likelyEntity.SourceLot;
                        entity.Technology       = likelyEntity.Technology;
                        entity.Product          = likelyEntity.Product;
                        entity.LotType          = likelyEntity.LotType;
                        entity.Owner            = likelyEntity.Owner;
                        entity.MeasOperator     = likelyEntity.MeasOperator;
                        entity.MeasRecipe       = likelyEntity.MeasRecipe;
                        entity.ProcRoute        = likelyEntity.ProcRoute;
                        entity.ProcRouteVer     = likelyEntity.ProcRouteVer;
                        entity.ProcStep         = likelyEntity.ProcStep;
                        entity.ProcTime         = likelyEntity.ProcTime;
                        entity.ProcOperatorUser = likelyEntity.ProcOperatorUser;
                        entity.ProcEquipment    = likelyEntity.ProcEquipment;
                        entity.ProcRecipe       = likelyEntity.ProcRecipe;
                    }

                    /*
                     * else if (string.IsNullOrEmpty(entity.Product) && entity.ItemType == "Derived")
                     * {
                     *  InlineDBEntity likelyEntity = GetLikelyEntity(entity);
                     *  entity.WaferSeq = likelyEntity.WaferSeq;
                     *  entity.SourceLot = likelyEntity.SourceLot;
                     *  entity.Technology = likelyEntity.Technology;
                     *  entity.Product = likelyEntity.Product;
                     *  entity.LotType = likelyEntity.LotType;
                     *  entity.Owner = likelyEntity.Owner;
                     *  entity.MeasOperator = likelyEntity.MeasOperator;
                     *  entity.MeasRecipe = likelyEntity.MeasRecipe;
                     *  entity.ProcRoute = likelyEntity.ProcRoute;
                     *  entity.ProcRouteVer = likelyEntity.ProcRouteVer;
                     *  entity.ProcStep = likelyEntity.ProcStep;
                     *  entity.ProcTime = likelyEntity.ProcTime;
                     *  entity.ProcOperatorUser = likelyEntity.ProcOperatorUser;
                     *  entity.ProcEquipment = likelyEntity.ProcEquipment;
                     *  entity.ProcRecipe = likelyEntity.ProcRecipe;
                     * }
                     *
                     * else if (entity.WaferSeq == "*")
                     * {
                     *  InlineDBEntity likelyEntity = GetLikelyEntity(entity);
                     *  entity.WaferSeq = likelyEntity.WaferSeq;
                     * }
                     */
                }
                catch (Exception e)
                {
                    LogHelper.ErrorLog("InlineEntityGroup.cs Error! ", e);
                }
            }
            //获取DCM坐标信息
            var    lotList  = inlineDBEntities.Select(s => s.Lot).Distinct();
            string conditon = lotList.Count() < 15? string.Format("where lotid in ('{0}')", string.Join("','", lotList)):"";
            string dcmSql   = string.Format("select lotid,eqpid,measuredatacount,recipe,coordinate,newdate from istrpt.fvace_inline_dcm_last {0}", conditon);

            dB2.GetSomeData(dcmSql);
            foreach (DataRow dr in dB2.dt.Rows)
            {
                try
                {
                    InlineDCMEntity dcm = new InlineDCMEntity();
                    dcm.LotID            = dr["LotID"].ToString();
                    dcm.EQPID            = dr["EQPID"].ToString();
                    dcm.MeasureDataCount = Convert.ToInt16(dr["MeasureDataCount"].ToString());
                    dcm.Recipe           = dr["Recipe"].ToString();
                    dcm.Coordinate       = dr["Coordinate"].ToString();
                    dcm.NewDate          = (DateTime)dr["NewDate"];
                    DCMEntities.Add(dcm);
                }
                catch (Exception ex)
                {
                    LogHelper.ErrorLog(string.Format("InlineError InlineEntityGroup.GetData()从DCM中获取坐标错误 NewDate:{0},LotID:{1}", dr["NewDate"].ToString(), dr["LotID"].ToString()), ex);
                }
            }
        }
Beispiel #27
0
        //取消Chamber方案
        //private string Sql_Chamber
        //{
        //    get
        //    {
        //        string sqltemp = string.Format("select *  from ISTRPT.Fvace_Chamber_Base where  MoveOutTime > '{0}' and MoveOutTime <= '{1}'", startTimeStamp, endTimeStamp);
        //        return sqltemp;
        //    }
        //}

        public void GetData()
        {
            DB2Helper dB2 = new DB2Helper();

            dB2.GetSomeData(Sql_WIP);
            if (dB2.dt.Rows.Count == 0)
            {
                throw new NoQueryDataException("没有新的WIP数据产生");
            }
            foreach (DataRow dr in dB2.dt.Rows)
            {
                WIPDbEntity wipDbEntity = new WIPDbEntity
                {
                    Lot_ID = dr["Lot_ID"].ToString(),
                    // Fab = dr["Fab"].ToString(),
                    Slot              = dr["Slot"].ToString(),
                    Technology        = dr["Technology"].ToString(),
                    Product           = dr["Product"].ToString(),
                    Lot_Type          = dr["Lot_Type"].ToString(),
                    RouteVersion      = dr["RouteVersion"].ToString(),
                    Stage_ID          = dr["Stage_ID"].ToString(),
                    Route             = dr["Route"].ToString(),
                    Step              = dr["Step"].ToString(),
                    Sequence          = dr["Sequence"].ToString(),
                    Version_ID        = dr["Version_ID"].ToString(),
                    Description       = dr["Description"].ToString(),
                    EQP_ID            = dr["Eqp_ID"].ToString(),
                    EquipmentGroup    = dr["EquipmentGroup"].ToString(),
                    MoveInTime        = (DateTime)dr["MoveInTime"],
                    MoveInWaferCount  = ((int?)dr["MoveInWaferCount"]).HasValue ? ((int?)dr["MoveInWaferCount"]).Value : 0,
                    MoveInOperator    = dr["MoveInOperator"].ToString(),
                    MoveOutTime       = (DateTime)dr["MoveOutTime"],
                    MoveOutWaferCount = dr["MoveOutWaferCount"] == DBNull.Value ? 0 : (int)dr["MoveOutWaferCount"],
                    MoveOutOperator   = dr["MoveOutOperator"].ToString(),
                    Reticle           = dr["Reticle"] == DBNull.Value ? "" : dr["Reticle"].ToString(),
                    Recipe            = dr["Recipe"].ToString(),
                    BatchID           = ((int?)dr["BatchID"]) ?? 0,
                    QueueTime         = dr["QueueTime"] == DBNull.Value ? 0 : (int)dr["QueueTime"],
                    Owner             = dr["Owner"].ToString(),
                    CustomerCode      = dr["CustomerCode"].ToString(),
                    LotStatus         = dr["LotStatus"].ToString(),
                    CarrierID         = dr["CarrierID"].ToString(),
                    WafeList          = dr["WafeList"].ToString()
                };
                WIPDbEntities.Add(wipDbEntity);
            }
            //取消Chamber的方案
            //dB2.GetSomeData(Sql_Chamber);
            //foreach (DataRow dr in dB2.dt.Rows)
            //{
            //    ChamberDBViewEntity chamberDB = new ChamberDBViewEntity()
            //    {
            //        Eqp_ID = dr["Eqp_ID"].ToString(),
            //        Lot_ID = dr["Lot_ID"].ToString(),
            //        MainPD_ID = dr["MainPD_ID"].ToString(),
            //        Stage_ID = dr["Stage_ID"].ToString(),
            //        Ope_No = dr["Ope_NO"].ToString(),
            //        Ope_Pass_Count = (int)dr["Ope_Pass_Count"],
            //        Procrsc_ID = dr["Procrsc_ID"].ToString(),
            //        Wafer_ID = dr["Wafer_ID"].ToString(),
            //        Slot=dr["Slot"].ToString(),
            //        Technology=dr["Technology"].ToString(),
            //        Product=dr["Product"].ToString(),
            //        Lot_type=dr["Lot_Type"].ToString(),
            //        PD_ID=dr["PD_ID"].ToString(),
            //        Version_ID=dr["Version_ID"].ToString(),
            //        Description=dr["Description"].ToString(),
            //        EquipmentGroup=dr["EquipmentGroup"].ToString(),
            //        MoveInTime=(DateTime)dr["MoveInTime"],
            //        MoveOutTime=(DateTime)dr["MoveOutTime"],
            //        MoveInOperator=dr["MoveInOperator"].ToString(),
            //        MoveOutOperator=dr["MoveOutOperator"].ToString(),
            //        Reticle=dr["Reticle"]==DBNull.Value?"": dr["Reticle"].ToString(),
            //        Recipe=dr["Recipe"].ToString(),
            //        Owner=dr["Owner"].ToString(),
            //        Cast_ID=dr["Cast_ID"].ToString()
            //    };
            //    ChamberDBViewEntities.Add(chamberDB);
            //}
        }