Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        /// <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";
            }
        }
Esempio n. 3
0
        /// <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";
            }
        }