コード例 #1
0
ファイル: DefcetHoldRule.cs プロジェクト: wra222/testgit
        public void InsertDefectHoldRule(DefectHoldRuleInfo item)
        {
            logger.Debug("(DefectHoldRule)InsertDefectHoldRule starts");
            try
            {
                DefectHoldRuleInfo checkInfo = new DefectHoldRuleInfo();
                if (item.Line != "")
                {
                    checkInfo.Line = item.Line;
                }
                if (item.Family != "")
                {
                    checkInfo.Family = item.Family;
                }
                if (item.DefectCode != "")
                {
                    checkInfo.DefectCode = item.DefectCode;
                }
                if (item.CheckInStation != "")
                {
                    checkInfo.CheckInStation = item.CheckInStation;
                }

                
                checkInfo.EqualSameDefectCount = item.EqualSameDefectCount;
           
                //checkInfo.OverDefectCount = item.OverDefectCount;
                
                IList<DefectHoldRuleInfo> checkInfoList = iHoldRepository.GetDefectHoldRule(checkInfo);

                if (checkInfoList != null && checkInfoList.Count != 0)
                {
                    IList<DefectHoldRuleInfo> checkcount = new List<DefectHoldRuleInfo>();
                    
                    if (item.OverDefectCount != 0)
                    {
                        checkcount = (from q in checkInfoList
                                      where q.OverDefectCount != 0
                                      select q).ToList<DefectHoldRuleInfo>();
                        if (checkcount != null && checkcount.Count != 0)
                        {
                            throw new Exception("This OverDefectCode is Exists, Please check it.");
                        }
                    }
                    throw new Exception("This Info is Exists");
                }
                iHoldRepository.InsertDefectHoldRule(item);
            }
            catch (FisException e)
            {
                logger.Error(e.mErrmsg, e);
                throw new Exception(e.mErrmsg);
            }
            catch (Exception e)
            {
                logger.Error(e.Message, e);
                throw new SystemException(e.Message);
            }
            finally
            {
                logger.Debug("(DefectHoldRule)InsertDefectHoldRule end");
            }
        }
コード例 #2
0
ファイル: DefcetHoldRule.cs プロジェクト: wra222/testgit
 public void UpdateDefectHoldRule(DefectHoldRuleInfo item)
 {
     logger.Debug("(DefectHoldRule)UpdateDefectHoldRule starts");
     try
     {
         iHoldRepository.UpdateDefectHoldRule(item);
     }
     catch (FisException e)
     {
         logger.Error(e.mErrmsg, e);
         throw new Exception(e.mErrmsg);
     }
     catch (Exception e)
     {
         logger.Error(e.Message, e);
         throw new SystemException(e.Message);
     }
     finally
     {
         logger.Debug("(DefectHoldRule)UpdateDefectHoldRule end");
     }
 }
コード例 #3
0
        /// <summary>
        /// 檢查DefectHoldRule 及設定DefectHoldRule Action
        /// </summary>        
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            IProductRepository prodRep = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>();
            IHoldRepository holdRep = RepositoryFactory.GetInstance().GetRepository<IHoldRepository>();
            ILineRepository lineRep = RepositoryFactory.GetInstance().GetRepository<ILineRepository, Line>();
            
            IProduct prod = (Product)CurrentSession.GetValue(Session.SessionKeys.Product);
            //if (prod.Repairs.Count == 0)
            //{
            //    return base.DoExecute(executionContext);
            //}

            DefectHoldRuleInfo condition = new DefectHoldRuleInfo() {
                                                                                        CheckInStation=this.Station};

            IList<DefectHoldRuleInfo> holdRuleList= holdRep.GetDefectHoldRule(condition);
            if (holdRuleList == null || holdRuleList.Count == 0)
            {
                return base.DoExecute(executionContext);
            }

            IList<string> defectList = (IList<string>)CurrentSession.GetValue(Session.SessionKeys.DefectList);

            if (defectList == null )
            {
                //return base.DoExecute(executionContext);
                defectList = new List<string>();
            }

            string line ="";
            string pdLine = "";
            if (string.IsNullOrEmpty(this.Line))
            {
                pdLine =prod.Status.Line.Substring(0,1);
                line = prod.Status.Line.Substring(0,1);
            }else{
                line = this.Line.Substring(0,1);
                pdLine = this.Line;
            }
            IList<DefectHoldRuleInfo>  defectCodeEqualDefectCountList=null;
            IList<DefectHoldRuleInfo>  defectCodeOverDefectCountList=null;
            IList<DefectHoldRuleInfo> equalDefectCountList=null;
            IList<DefectHoldRuleInfo> overDefectCountList=null;

            getHighPriorityDefectHoldRule(holdRuleList, 
                                                            line, 
                                                            new List<string>() { prod.Model, prod.Family },
                                                            out defectCodeEqualDefectCountList,
                                                            out defectCodeOverDefectCountList,
                                                            out equalDefectCountList,
                                                            out overDefectCountList);
            DefectHoldRuleInfo matchHoldRule = null;

            #region DefectCode 不為空白且EqualSameDefectCount>0
            if (defectCodeEqualDefectCountList.Count > 0 && matchHoldRule==null)
            {
                var defectCodeList = defectCodeEqualDefectCountList.Select(x => x.DefectCode).Distinct().OrderByDescending(x=>x);
                foreach (string defectCode in defectCodeList)
                {
                    var defectHoldList = defectCodeEqualDefectCountList.Where(x => x.DefectCode == defectCode).ToList();
                    foreach (DefectHoldRuleInfo rule in defectHoldList)
                    {
                        matchHoldRule = matchDefectCodeEqualRule(prod, rule, defectList);
                         if (matchHoldRule != null)
                        {
                               break;
                        }
                    }
                    if (matchHoldRule != null)
                    {
                        break;
                    }
                }                
            }
            #endregion

            #region DefectCode 不為空白且OverDefectCount>0
            if (defectCodeOverDefectCountList.Count > 0 && 
                 matchHoldRule==null)
            {               
                var defectCodeList = defectCodeOverDefectCountList.Select(x => x.DefectCode).Distinct().OrderByDescending(x=>x);
                foreach (string defectCode in defectCodeList)
                {
                    var defectHoldList = defectCodeOverDefectCountList.Where(x => x.DefectCode == defectCode).ToList();
                    matchHoldRule = matchOverRule(prod, defectHoldList, defectList);
                    if (matchHoldRule != null)
                    {
                        break;
                    }
                }                
            }
            #endregion

            #region DefectCode 空白且EqualSameDefectCount>0
            if (equalDefectCountList.Count > 0 && 
                defectList.Count>0 && 
                matchHoldRule==null)
            {
                foreach(string code in  defectList)
                {
                    foreach (DefectHoldRuleInfo item in equalDefectCountList )
                    {
                        matchHoldRule=matchEqualRule(prod,item,code);
                         if (matchHoldRule != null)
                        {
                            break;
                        }
                    }
                     if (matchHoldRule != null)
                    {
                        break;
                    }
                }               
            }
            #endregion

            #region DefectCode 空白且OverDefectCount>0
             if (overDefectCountList.Count > 0 && 
                 matchHoldRule==null)
            {     
               matchHoldRule= matchOverRule(prod,overDefectCountList,defectList);
            }
            #endregion

            if (matchHoldRule != null)
            {
                #region write Hold
                string preStation = prod.Status.StationId;

                ActivityCommonImpl.Instance.FutureHold.writeHoldStation(null,
                                        prod,
                                        pdLine,
                                        "DefectHold",
                                         matchHoldRule.HoldStation,
                                         matchHoldRule.HoldCode,
                                         "Descr:" + matchHoldRule.HoldDescr + "~PreStation:" + preStation + "~CurStation:" + matchHoldRule.CheckInStation + "~DefectHold ID:" + matchHoldRule.ID.ToString() ,
                                         this.Editor);

                //throw error message
                int sameDefectCount=matchHoldRule.EqualSameDefectCount??0;
                int overDefectCount=matchHoldRule.OverDefectCount??0;
                int defectCount=sameDefectCount==0?overDefectCount: sameDefectCount;
                string code=string.IsNullOrEmpty( matchHoldRule.DefectCode) ? string.Join(",", defectList.ToArray()):matchHoldRule.DefectCode;
                throw new FisException("CQCHK0036", new string[] { prod.ProId, 
                                                                                                prod.CUSTSN, 
                                                                                                matchHoldRule.ID.ToString(), 
                                                                                                matchHoldRule.HoldDescr,
                                                                                                code,
                                                                                                defectCount.ToString()});
                #endregion
            }      

          

            return base.DoExecute(executionContext);
        }
コード例 #4
0
ファイル: DefcetHoldRule.cs プロジェクト: wra222/testgit
 public IList<DefectHoldRuleInfo> GetDefectHoldRule(DefectHoldRuleInfo condition)
 {
     logger.Debug("(DefectHoldRule)GetDefectHoldRule starts");
     try
     {
         return iHoldRepository.GetDefectHoldRule(condition);
     }
     catch (FisException e)
     {
         logger.Error(e.mErrmsg, e);
         throw new Exception(e.mErrmsg);
     }
     catch (Exception e)
     {
         logger.Error(e.Message, e);
         throw new SystemException(e.Message);
     }
     finally
     {
         logger.Debug("(DefectHoldRule)GetDefectHoldRule end");
     }
 }
コード例 #5
0
 private DefectHoldRuleInfo matchEqualRule(IProduct prod, DefectHoldRuleInfo rule, string defectCode)
 {
     int qty = getDefectCount(prod, 
                                         defectCode,
                                          string.IsNullOrEmpty(rule.ExceptCause) ? new List<string>() : rule.ExceptCause.Split(new char[] { '~' }).ToList()) + 1;
     if (qty == (rule.EqualSameDefectCount??0))
     {
         return rule;
     }
     return null;
 }
コード例 #6
0
        private DefectHoldRuleInfo matchDefectCodeEqualRule(IProduct prod, DefectHoldRuleInfo rule, IList<string> defectList)
        {
            DefectHoldRuleInfo matchHoldRule = null;

            int qty = getDefectCount(prod, 
                                                 rule.DefectCode, 
                                                 string.IsNullOrEmpty(rule.ExceptCause)? new List<string>() : rule.ExceptCause.Split(new char[] { '~' }).ToList());
            if (defectList.Contains(rule.DefectCode))
            {
                qty = qty + 1;
            }
            if (qty == (rule.EqualSameDefectCount ?? 0))
            {
                matchHoldRule= rule;
            }                 
            return matchHoldRule;
        }
コード例 #7
0
        private string judgeSequence(DefectHoldRuleInfo item)
        {
            if (!string.IsNullOrEmpty(item.DefectCode))
            {
                if (item.EqualSameDefectCount > 0)
                {
                    return "00";
                }
                else if (item.OverDefectCount > 0)
                {
                    return "01";
                }
            }
            else
            {
                if (item.EqualSameDefectCount > 0)
                {
                    return "10";
                }
                 else if (item.OverDefectCount > 0)
                {
                    return "11";
                }
            }

            return "20";
        }
コード例 #8
0
ファイル: DefectHoldRule.aspx.cs プロジェクト: wra222/testgit
    protected void Save_ServerClick(Object sender, EventArgs e)
    {
        try
        {
            IList<DefectHoldRuleInfo> defectHoldRuleList = null;
            string line = this.cmbLine.SelectedItem.Value.ToString();
            string familyandmodel = this.txtFamilyAndModel.Text.ToString().Trim().ToUpper();
            string defect = this.txtDefect.Text.ToString().Trim().ToUpper();
            string exceptcause = this.txtExceptCause.Text.ToString().Trim();
            string strequalsameDefectcount = this.txtEqualSameDefectCount.Text.ToString().Trim();
            string stroverdefectcount = this.txtOverDefectCount.Text.ToString().Trim();
            string checkinstation = this.cmbCheckINStation.SelectedItem.Value.ToString();
            string holdstation = this.cmbHoldStation.SelectedItem.Value.ToString();
            string holdcode = this.cmbHoldCode.SelectedItem.Value.ToString();
            string holdDescr = this.txtHoldDescr.Text.ToString().Trim().ToUpper();
            string id = this.hidDeleteID.Value;
            if (!string.IsNullOrEmpty(familyandmodel))
            {
                if (!iDefectHoldRule.CheckFamilyAndModel(familyandmodel))
                {
                    throw new FisException("Input Fmaily/Model is not found");
                }
            }
            int equalsameDefectcount = 0;
            int overdefectcount = 0;
            if(strequalsameDefectcount != "")
            {
                equalsameDefectcount = int.Parse(strequalsameDefectcount);
            }
            if(stroverdefectcount != "")
            {
                overdefectcount = int.Parse(stroverdefectcount);
            }
            DefectHoldRuleInfo defectHoldInfo = new DefectHoldRuleInfo();
            defectHoldInfo.Line = line;
            defectHoldInfo.Family = familyandmodel;
            defectHoldInfo.DefectCode = defect;
            defectHoldInfo.ExceptCause = exceptcause;
            defectHoldInfo.EqualSameDefectCount = equalsameDefectcount;
            defectHoldInfo.OverDefectCount = overdefectcount;
            defectHoldInfo.CheckInStation = checkinstation;
            defectHoldInfo.HoldStation = holdstation;
            defectHoldInfo.HoldCode = holdcode;
            defectHoldInfo.HoldDescr = holdDescr;
            defectHoldInfo.Editor = UserId;
            defectHoldInfo.Cdt = DateTime.Now;
            defectHoldInfo.Udt = DateTime.Now;

            if (!string.IsNullOrEmpty(id))
            {
                defectHoldInfo.ID = int.Parse(id);
                iDefectHoldRule.UpdateDefectHoldRule(defectHoldInfo);
            }
            else
            {
                iDefectHoldRule.InsertDefectHoldRule(defectHoldInfo);
            }
            defectHoldRuleList = iDefectHoldRule.GetDefectHoldRule(new DefectHoldRuleInfo{ Line = line,
                                                                                           Family = familyandmodel,
                                                                                           DefectCode = defect,
                                                                                           ExceptCause = exceptcause,
                                                                                           EqualSameDefectCount = equalsameDefectcount,
                                                                                           OverDefectCount = overdefectcount,
                                                                                           CheckInStation = checkinstation});
            int ID = defectHoldRuleList[0].ID;
            bindTable(defectHoldRuleList, DEFAULT_ROWS);
            initlineTop();
            ScriptManager.RegisterStartupScript(this.updatePanel, typeof(System.Object), "saveUpdate", "resetTableHeight();AddUpdateComplete('" + ID + "');", true);//
        }
        catch (FisException ex)
        {
            showErrorMessage(ex.mErrmsg);
        }
        catch (Exception ex)
        {
            showErrorMessage(ex.Message);
            bindTable(null, DEFAULT_ROWS);
        }
        finally
        {
            hideWait();
        }
    }
コード例 #9
0
ファイル: DefectHoldRule.aspx.cs プロジェクト: wra222/testgit
 protected void Query_ServerClick(Object sender, EventArgs e)
 {
     try
     {
         string line = this.cmbLineTop.SelectedItem.Value.ToString();
         string familyandmodel = this.txtFamilyAndModelTop.Text.Trim();
         string defect = this.txtDefectTop.Text.Trim();
         string exceptcause = this.txtExceptCause.Text.Trim();
         DefectHoldRuleInfo condition = new DefectHoldRuleInfo();
         if (line != "")
         {
             condition.Line = line; 
         }
         if (familyandmodel != "")
         {
             condition.Family = familyandmodel;
         }
         if (defect != "")
         {
             condition.DefectCode = defect;
         }
         if (exceptcause != "")
         {
             condition.ExceptCause = exceptcause;
         }
         IList<DefectHoldRuleInfo> defectHoldRuleList = iDefectHoldRule.GetDefectHoldRule(condition);
         bindTable(defectHoldRuleList, DEFAULT_ROWS);
     }
     catch (FisException ex)
     {
         showErrorMessage(ex.mErrmsg);
         bindTable(null, DEFAULT_ROWS);
         //this.hidRecordCount.Value = "0";
     }
     catch (Exception ex)
     {
         showErrorMessage(ex.Message);
         bindTable(null, DEFAULT_ROWS);
         //this.hidRecordCount.Value = "0";
     }
     finally
     {
         hideWait();
     }
 }