Ejemplo n.º 1
0
        public DataTable GetProInfoBySfcno(SfcDatProduct sfcDatPro)
        {
            string strSql = string.Format(@" select E.C_PartNumber, E.Version,SFC.FGuid,SFC.SfcNo,SFC.Product,SFC.ProductName,CONVERT(varchar(100), GETDATE(), 112) NOW_DATE,SFC.WOCODE,SFC.Line,SFC.TBT_ID from SfcDatProduct SFC
               LEFT JOIN dbo.T_Work_Number E ON E.WoCode = SFC.WoCode   where SFC.SfcNo ='{0}'", sfcDatPro.SfcNo);

            return(NMS.QueryDataTable(PubUtils.uContext, strSql));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 产品过站
        /// </summary>
        /// <param name="serialNumber">小板条码</param>
        /// <param name="TBS_ID">工位ID</param>
        /// <param name="TBTG_ID">工艺工序ID</param>
        /// <param name="lst_error">不良代码</param>
        /// <param name="msg">返回信息</param>
        /// <returns></returns>
        public static bool PassGroup(string sfcNo, string serialNumber, string TBS_ID, string TBTG_ID, string WIP_TBTG_ID, List <string> lst_error, ref string msg)
        {
            //获取TBPS_ID(产品状态ID)、TBG_ID(工序ID)、PLCODE(线别代码)
            //string UseId = PubUtils.uContext.UserID;//员工号
            //string UseId = UserID;//员工号
            bool   newInput       = false;        //是否新投入的产品
            string TBPS_ID        = string.Empty; //产品状态ID(在产品信息表中不是唯一)
            string once_Over_Flag = string.Empty; //是否曾经流程结束(Y/N)(针对流程结束又原单返工情况)
            string TBT_ID         = string.Empty; //工艺ID
            string PLCode         = string.Empty; //线别代码

            #region 查询产品信息
            DataTable dt_Product = QueryProductSN(serialNumber);//查询产品信息
            if (dt_Product.Rows.Count == 0)
            {
                newInput = true;
                BLL_SfcDatProduct bll       = new BLL_SfcDatProduct();
                SfcDatProduct     sfcDatPro = new SfcDatProduct();
                sfcDatPro.SfcNo = sfcNo;
                DataTable dt_sfcno = bll.SelectProBySfcno(sfcDatPro);
                if (dt_sfcno.Rows.Count > 0)
                {
                    TBT_ID = dt_sfcno.Rows[0]["TBT_ID"].ToString();
                    PLCode = dt_sfcno.Rows[0]["Line"].ToString();
                }
                else
                {
                    msg = "制令单不存在";
                    return(false);
                }
            }
            else
            {
                sfcNo          = dt_Product.Rows[0]["SFCNO"].ToString();                  //制令单
                TBPS_ID        = dt_Product.Rows[0]["TBPS_ID"].ToString();                //产品状态ID(在产品信息表中不是唯一)
                once_Over_Flag = dt_Product.Rows[0]["ONCE_OVER_FLAG"].ToString();         //是否曾经流程结束(Y/N)(针对流程结束又原单返工情况)
                TBT_ID         = dt_Product.Rows[0]["TBT_ID"].ToString();                 //工艺ID
                PLCode         = SqlInput.ChangeNullToString(dt_Product.Rows[0]["LINE"]); //线别代码
            }

            #endregion
            #region 工艺信息
            string TBG_ID = string.Empty;     //工序ID

            string inout_Type = string.Empty; //工艺工序类型
            //string TBTG_ID = string.Empty;//工艺工序ID
            //获取工艺工序ID对应的工艺工序信息
            DataTable dt_TBTG_ID = QueryTechGroup(TBT_ID, TBTG_ID);
            if (dt_TBTG_ID.Rows.Count == 0)
            {
                msg = "工位不在当前产品所在的工艺中";
                return(false);
            }
            else
            {
                inout_Type = SqlInput.ChangeNullToString(dt_TBTG_ID.Rows[0]["INOUT_TYPE"]);//投入产出标识
                //TBTG_ID = SqlInput.ChangeNullToString(dt_TBTG_ID.Rows[0]["TBTG_ID"]);//工艺工序ID

                TBG_ID = SqlInput.ChangeNullToString(dt_TBTG_ID.Rows[0]["TBG_ID"]);//工序ID
            }
            #endregion
            #region 新增/修改产品状态信息表
            //1.1、新增/修改产品状态信息表
            Model_Bllb_productStatus_tbps obj_Status = new Model_Bllb_productStatus_tbps();
            obj_Status.PLCode      = PLCode;                    //线别代码
            obj_Status.SfcNo       = sfcNo;                     //制令单
            obj_Status.TBTG_ID     = TBTG_ID;                   //工艺工序ID
            obj_Status.WIP_TBTG_ID = WIP_TBTG_ID;               //下一个工艺工序ID
            if (newInput == true)                               //新投入产品
            {
                obj_Status.TBPS_ID = Guid.NewGuid().ToString(); //产品状态ID
                TBPS_ID            = obj_Status.TBPS_ID;
                InsertProductStatus(obj_Status);                //新增产品状态信息
            }
            else//在制品
            {
                obj_Status.TBPS_ID = TBPS_ID;//产品状态ID
                UpdateProductStatus(obj_Status);
            }
            #endregion
            #region 过站记录
            Model.Model_Bllb_productPass_tbpp obj_Pass = new Model.Model_Bllb_productPass_tbpp();
            obj_Pass.TBG_ID  = TBG_ID;                    //工序ID
            obj_Pass.TBPP_ID = Guid.NewGuid().ToString(); //过站记录ID
            obj_Pass.TBPS_ID = TBPS_ID;                   //产品状态ID
            obj_Pass.PLCode  = PLCode;                    //线别代码
            obj_Pass.TBS_ID  = TBS_ID;                    //工位ID
            //1.2、添加产品过站记录表
            if (lst_error != null & lst_error.Count > 0)
            {
                obj_Pass.STATE_FLAG = "1";   //不良品
                InsertProductPass(obj_Pass); //不良品过站记录
                foreach (string str_TBEC_ID in lst_error)
                {
                    //1.3、添加不良信息
                    Model.Model_Bllb_productError_tbpe obj_pe = new Model.Model_Bllb_productError_tbpe();
                    obj_pe.ERROR_MAN = PubUtils.uContext.UserID;  //打不良人
                    obj_pe.TBEC_ID   = str_TBEC_ID;               //不良代码ID
                    obj_pe.TBPE_ID   = Guid.NewGuid().ToString(); //不良记录ID
                    obj_pe.TBPS_ID   = TBPS_ID;                   //产品状态ID
                    obj_pe.TBS_ID    = TBS_ID;                    //工位ID
                    obj_pe.TBG_ID    = TBG_ID;                    //工序ID
                    InsertProductError(obj_pe);
                }
                //1.4、产品标识为不良
                UpdateErrorFlag(serialNumber);//产品标识为不良
            }
            else
            {
                obj_Pass.STATE_FLAG = "0";   //良品
                InsertProductPass(obj_Pass); //良品过站记录
            }
            //1.4、新增产品信息
            Model.Model_Bllb_productInfo_tbpi obj_Info = new Model.Model_Bllb_productInfo_tbpi();
            obj_Info.QTY           = 1;            //数量
            obj_Info.SERIAL_NUMBER = serialNumber; //产品SN
            if (lst_error != null & lst_error.Count > 0)
            {
                obj_Info.ERROR_FLAG = "Y";//是否不良
            }
            else
            {
                obj_Info.ERROR_FLAG = "N";                       //是否不良
            }
            obj_Info.LAST_FLAG      = "Y";                       //是否最新记录
            obj_Info.OVER_FLAG      = "N";                       //是否流程结束
            obj_Info.REPAIR_FLAG    = "N";                       //是否维修过
            obj_Info.SCRAP_FLAG     = "N";                       //是否报废
            obj_Info.ONCE_OVER_FLAG = "N";                       //是否曾经流程结束过(是针对原单返工的情况)
            obj_Info.SfcNo          = sfcNo;                     //制令单
            obj_Info.TBPI_ID        = Guid.NewGuid().ToString(); //唯一码
            obj_Info.TBPS_ID        = TBPS_ID;                   //产品状态ID
            if (inout_Type == "0" || inout_Type == "3")          //主线投入或者主线投入产出标识
            {
                obj_Info.AUXILIARY_FLAG = "N";
            }
            else if (inout_Type == "2")//辅助线投入
            {
                obj_Info.SERIAL_NUMBER  = string.Empty;
                obj_Info.AUXILIARY_FLAG = "Y";
            }
            else if (inout_Type == "1")                       //产出工序
            {
                if (lst_error != null & lst_error.Count > 0)  //是否不良
                {
                    obj_Info.OVER_FLAG      = "N";            //是否流程结束
                    obj_Info.ONCE_OVER_FLAG = once_Over_Flag; //是否曾经流程结束(Y/N)(针对流程结束又原单返工情况)
                }
                else
                {
                    obj_Info.OVER_FLAG      = "Y"; //是否流程结束
                    obj_Info.ONCE_OVER_FLAG = "Y"; //是否曾经流程结束(Y/N)(针对流程结束又原单返工情况)
                }
            }
            if (inout_Type == "0")    //投入工序(注意考虑回流情况)
            {
                if (newInput == true) //新投入产品
                {
                    //1.4、新增产品信息
                    InsertProdcutInfo(obj_Info);
                }
            }
            else if (inout_Type == "1")//1:产出工序
            {
                //1.4、修改产品信息表()
                UpdateOverTech(obj_Info);                                //新增产品信息
                if (once_Over_Flag == "N" || obj_Info.ERROR_FLAG == "N") //是否是流程结束后又原单返工
                {
                    //1.5、修改制令单的产出数(是否流程结束过,若是则不增加制令单产出数)(注意流程结束后隔天返工情况)
                    UpdateSfcNo_ActQty(sfcNo, 1);
                }
            }
            else if (inout_Type == "2")//辅助投入工序
            {
                //1.4、修改产品信息表
                if (newInput == true)            //新投入产品
                {
                    InsertProdcutInfo(obj_Info); //辅助投入时,产品SN设置为空,可用于验证辅助产品是否被组合到主线产品上,为空是还没被组合,组合后为空的辅助产品条码赋值为主线产品条码
                }
            }
            else if (inout_Type == "3")//投入产出工序
            {
                //1.4、新增产品信息表
                if (newInput == true)//新投入产品
                {
                    InsertProdcutInfo(obj_Info);
                }
                if (once_Over_Flag == "N")//是否是流程结束后又原单返工
                {
                    //1.5、修改制令单的产出数(是否流程结束过,若是则不增加制令单产出数)(注意流程结束后隔天返工情况)
                    UpdateSfcNo_ActQty(sfcNo, 1);
                }
            }
            #endregion
            //if (lst_error.Count == 0)
            //{
            //    AUTO_QA();
            //}

            #region 数据统计
            Model_Bllb_groupStatistics_tbgs obj = new Model_Bllb_groupStatistics_tbgs();
            if (lst_error != null & lst_error.Count > 0)
            {
                obj.ERROR_NUM = 1;//打不良次数
            }
            else
            {
                obj.ERROR_NUM = 0;              //打不良次数
            }
            obj.PASS_NUM = 1;                   //过站次数
            obj.SfcNo    = sfcNo;               //制令单
            obj.TBTG_ID  = TBTG_ID;             //工艺工序ID
            InsertOrUpdateGroupStatistics(obj); //统计过站次数和打不良次数
            if (WIP_TBTG_ID != string.Empty)    //下一个工序的统计信息
            {
                obj.PASS_NUM  = 0;
                obj.TBTG_ID   = WIP_TBTG_ID;
                obj.ERROR_NUM = 0;
                InsertOrUpdateWipGroupStatistics(obj);//判断下一个工序是否有统计数据,若是没有则新增一个
            }
            #endregion
            return(true);
        }
Ejemplo n.º 3
0
        public DataTable GetProInfoBySfcno(SfcDatProduct sfcDatPro)
        {
            string strSql = string.Format(" select FGuid,SfcNo,Product,ProductName,CONVERT(varchar(100), GETDATE(), 112) NOW_DATE,WOCODE,Line,TBT_ID from SfcDatProduct where SfcNo ='{0}'", sfcDatPro.SfcNo);

            return(NMS.QueryDataTable(PubUtils.uContext, strSql));
        }
Ejemplo n.º 4
0
 /// <summary>
 /// 根据制令单号查询产品信息
 /// </summary>
 /// <returns></returns>
 public DataTable SelectProBySfcno(SfcDatProduct sfcDatPro)
 {
     return(sfcDatProduct_DAL.GetProInfoBySfcno(sfcDatPro));
 }