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)); }
/// <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); }
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)); }
/// <summary> /// 根据制令单号查询产品信息 /// </summary> /// <returns></returns> public DataTable SelectProBySfcno(SfcDatProduct sfcDatPro) { return(sfcDatProduct_DAL.GetProInfoBySfcno(sfcDatPro)); }