Esempio n. 1
0
        /// <summary>
        /// 新增/修改产品状态信息表
        /// </summary>
        private static bool UpdateProductStatus(Model_Bllb_productStatus_tbps obj)
        {
            string strSql = string.Format(@"UPDATE T_Bllb_productStatus_tbps SET
                                        TBTG_ID='{1}',
                                        PLCode='{2}',
                                        SfcNo='{3}',
                                        PASS_TIME=GETDATE(),WIP_TBTG_ID='{4}'
                                        where
                                        TBPS_ID='{0}'
                                        ",
                                          obj.TBPS_ID,
                                          obj.TBTG_ID,
                                          obj.PLCode,
                                          obj.SfcNo, obj.WIP_TBTG_ID);

            return(CIT.Wcf.Utils.NMS.ExecTransql(PubUtils.uContext, strSql));
        }
Esempio n. 2
0
        /// <summary>
        /// 添加产品状态表
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private static bool InsertProductStatus(Model_Bllb_productStatus_tbps obj)
        {
            string strSql = string.Format(@"INSERT INTO T_Bllb_productStatus_tbps(
                                        TBTG_ID,
                                        PLCode,
                                        SfcNo,
                                        PASS_TIME,
                                        TBPS_ID,WIP_TBTG_ID)
                                        VALUES( 
                                        '{0}',
                                        '{1}',
                                        '{2}',                                        
                                        GETDATE(),
                                        '{3}','{4}')",
                                          obj.TBTG_ID,
                                          obj.PLCode,
                                          obj.SfcNo,
                                          obj.TBPS_ID, obj.WIP_TBTG_ID);

            CIT.Wcf.Utils.NMS.ExecTransql(PubUtils.uContext, strSql);
            strSql = string.Format(@"UPDATE SFCDATPRODUCT SET InputQty=isnull(InputQty,0)+1 where SfcNo='{0}'", obj.SfcNo);
            return(CIT.Wcf.Utils.NMS.ExecTransql(PubUtils.uContext, strSql));
        }
Esempio n. 3
0
        /// <summary>
        /// 产品过站
        /// </summary>
        /// <param name="serialNumber"></param>
        /// <param name="TBS_ID"></param>
        /// <param name="TBTG_ID"></param>
        /// <param name="WIP_TBTG_ID"></param>
        /// <param name="lst_error"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static bool PassGroup(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; //员工号
            bool   newInput = false;                    //是否新投入的产品

            #region 查询产品信息
            DataTable dt_Product = QueryProductSN(serialNumber);//查询产品信息
            if (dt_Product.Rows.Count == 0)
            {
                msg = "不存在条码" + serialNumber;
                return(false);
            }
            string sfcNo          = dt_Product.Rows[0]["SFCNO"].ToString();                  //制令单
            string TBPS_ID        = dt_Product.Rows[0]["TBPS_ID"].ToString();                //产品状态ID(在产品信息表中不是唯一)
            string once_Over_Flag = dt_Product.Rows[0]["ONCE_OVER_FLAG"].ToString();         //是否曾经流程结束(Y/N)(针对流程结束又原单返工情况)
            string TBT_ID         = dt_Product.Rows[0]["TBT_ID"].ToString();                 //工艺ID
            string 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.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 = UseId;                     //打不良人
                    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.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.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.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);
        }