public void GetMaterialList(ref QueryMessage msg) { if (programName == string.Empty) { return; } CDBConnection.SQL = "SELECT Address,CompoentNO, QTY-UsedQTY AS QTY FROM TB_QMS_ProgramList WHERE Code='" + programName + "'"; DataTable dtStack = CDBConnection._GetDTInfo(CDBConnection.SQL); foreach (DataRow drQty in dtStack.Rows) { string stackNO = drQty[0].ToString(); if (stackNO.Trim() == string.Empty) { continue; } QueryMessage.QueryItem item = new QueryMessage.QueryItem(stackNO, drQty[1].ToString()); try { item.QTY = Int32.Parse(drQty[2].ToString()); } catch (Exception) { item.QTY = 0; } msg.items.Add(item); } }
/// <summary> /// 换料防错检查过程 /// </summary> /// <param name="msg"></param> private void CheckMeterialReplace(ref QueryMessage msg) { if (msg.items.Count <= 0) { msg.respose = "NO item"; return; } QueryMessage.QueryItem item = msg.items[0]; // [1] 换料用New ReelID查询数量 string strSQL = "select QTY from TB_WH_UnitItem where ReelID='" + item.NewReelID + "'"; string strQTY = CDBConnection._GetID(strSQL); item.QTY = int.Parse(strQTY); if (item.QTY <= 0) { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Get QTY failed"; return; } // [2] 检查New ReelID是否匹配物料或替代料 bool bOK = false; strSQL = "SELECT A.ReelID, TB_PartNO.Code PartNO, TB_PartNO.Name PartName, a.QTY " + "FROM TB_WH_UnitItem A, TB_WH_MaterialAttribute_Event B, TB_Assembly_Builder TB_PartNO " + "WHERE A.ParentID=B.MainID AND B.PartNumberID=TB_PartNO.ID " + "AND TB_PartNO.ModuleID='b5e9db96-6a31-410d-a23c-6bdcb563ac53' AND A.ReelID='" + item.NewReelID + "' " + "UNION ALL " + "SELECT A.ReelID ,B.Code PartNO,B.Name PartName,A.QTY FROM TB_WH_UnitItem A, TB_Assembly_Builder B, TB_WH_PurchaseDetail C, TB_WH_UnitItem D " + "WHERE A.ParentID = D.ID AND D.ParentID =C.ID AND B.ID =C.PartID AND B.ModuleID ='b5e9db96-6a31-410d-a23c-6bdcb563ac53' " + "AND A.ReelID ='" + item.NewReelID + "' "; DataTable dtList = CDBConnection._GetDTInfo(strSQL); foreach (DataRow dr in dtList.Rows) { if (dr[0].ToString() == item.NewReelID) { if (dr[1].ToString() == item.PartNO || dr[2].ToString() == item.PartName) { bOK = true; break; } } } if (bOK == false) { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Wrong Material Replace"; return; } // [3] 检查栈位是否正确 strSQL = "SELECT D.CompoentNO FROM TB_QMS_ProgramList A, TB_Assembly_Builder B, TB_Assembly_Builder C, TB_QMS_ReplaceComponentList D " + "WHERE A.ID=D.MainID AND B.Code=A.CompoentNO AND C.Code =D.CompoentNO AND B.ModuleID =C.ModuleID " + "AND B.ModuleID = 'b5e9db96-6a31-410d-a23c-6bdcb563ac53' AND D.IsEnable=1 AND A.[Address]='" + item.StackNO + "' " + "UNION ALL " + "SELECT CompoentNO FROM TB_QMS_ProgramList WHERE Code ='" + this.programName + "' AND [Address]='" + item.StackNO + "' AND ParentID IS NOT NULL"; DataTable dtStack = CDBConnection._GetDTInfo(strSQL); bOK = false; foreach (DataRow dr in dtStack.Rows) { if (dr[0].ToString() == item.PartNO) { bOK = true; break; } } if (bOK == false) { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Wrong Stack Replace"; return; } // [4] 调用API执行存储过程 const string TransDescription = "换料 Replace the REELID Components"; DM_API.DM_SFCInterface a = new DM_API.DM_SFCInterface(); DataTable DT = a.SFC_DM_QMSReplacePDA_SetupComponents(item.ReelID, item.NewReelID, item.QTY, msg.OperatorID, TransDescription); if (DT.Rows[0][0].ToString().Trim() != "1") { UpdateStackMaterialList(item.StackNO, false); msg.respose = DT.Rows[0][1].ToString(); return; } // [5] 换料需要更新NewReelID和QTY数量 strSQL = "UPDATE TB_QMS_ProgramList SET CurrentREELID='" + item.NewReelID + "', QTY=" + item.QTY + " WHERE Code='" + this.programName + "' AND Address='" + item.StackNO + "'"; int num = CDBConnection.EXECRecord_RowsAffected(strSQL); if (num == -1) { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Update QTY failed"; } else { UpdateStackMaterialList(item.StackNO, true); UpdateMaterialWarningChart(this.programName, item.StackNO); msg.respose = "OK"; } }
/// <summary> /// 接料防错检查过程 /// </summary> /// <param name="msg"></param> private void CheckMeterialLink(ref QueryMessage msg) { if (msg.items.Count <= 0) { msg.respose = "NO item"; return; } QueryMessage.QueryItem item = msg.items[0]; if (item.QTY <= 0) //接料数量手工输入 { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Get QTY failed"; return; } // [2] 检查ReelI0D是否匹配物料或替代料 bool bOK = false; string strSQL = "SELECT A.ReelID, TB_PartNO.Code PartNO, TB_PartNO.Name PartName, a.QTY " + "FROM TB_WH_UnitItem A, TB_WH_MaterialAttribute_Event B, TB_Assembly_Builder TB_PartNO, TB_QMS_ComponentItem TB_QMS " + "WHERE TB_QMS.ReelID=A.ReelID AND " + "A.ParentID=B.MainID AND B.PartNumberID=TB_PartNO.ID AND " + "TB_PartNO.ModuleID='b5e9db96-6a31-410d-a23c-6bdcb563ac53' AND " + "A.ReelID='" + item.ReelID + "'"; DataTable dtList = CDBConnection._GetDTInfo(strSQL); foreach (DataRow dr in dtList.Rows) { if (dr[0].ToString() == item.ReelID) { if (dr[1].ToString() == item.PartNO || dr[2].ToString() == item.PartName) { bOK = true; break; } } } if (bOK == false) { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Wrong Material Link"; return; } // [3] 调用API执行存储过程 const string NewREELID = ""; const string TransDescription = "接料 Link the REELID Components"; DM_API.DM_SFCInterface a = new DM_API.DM_SFCInterface(); DataTable DT = a.SFC_DM_QMSReplacePDA_SetupComponents(item.ReelID, NewREELID, item.QTY, msg.OperatorID, TransDescription); if (DT.Rows[0][0].ToString().Trim() != "1") { UpdateStackMaterialList(item.StackNO, false); msg.respose = DT.Rows[0][1].ToString(); return; } // [4] 成功后更新QTY数量 strSQL = "UPDATE TB_QMS_ProgramList SET QTY=QTY+" + item.QTY + " WHERE Code='" + this.programName + "' AND Address='" + item.StackNO + "'"; int num = CDBConnection.EXECRecord_RowsAffected(strSQL); if (num == -1) { UpdateStackMaterialList(item.StackNO, false); msg.respose = "Update QTY failed"; } else { UpdateStackMaterialList(item.StackNO, true); UpdateMaterialWarningChart(this.programName, item.StackNO); msg.respose = "OK"; } }