Example #1
0
        /// <summary>
        /// 根据制造订单号和制造订单行号查询未结生产工单
        /// </summary>
        /// <param name="moNumber"></param>
        /// <param name="moLineNo"></param>
        /// <returns></returns>
        private OpenPWOInfo FindPWOWithNumberAndNo(string moNumber, int moLineNo)
        {
            string strProcedureName =
                string.Format(
                    "{0}.{1}",
                    className,
                    MethodBase.GetCurrentMethod().Name);

            OpenPWOInfo rlt = null;

            TWaitting.Instance.ShowWaitForm("查询未结生产工单");
            WriteLog.Instance.WriteBeginSplitter(strProcedureName);
            try
            {
                int                errCode = 0;
                string             errText = "";
                List <OpenPWOInfo> pwos    = new List <OpenPWOInfo>();

                IRAPMESClient.Instance.mfn_GetInfo_OpenPWOs(
                    IRAPUser.Instance.CommunityID,
                    moNumber,
                    moLineNo,
                    ref pwos,
                    out errCode,
                    out errText);
                WriteLog.Instance.Write(
                    string.Format("({0}){1}", errCode, errText),
                    strProcedureName);

                if (errCode != 0)
                {
                    XtraMessageBox.Show(
                        errText,
                        "系统信息",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Error);
                }
                else
                {
                    if (pwos.Count > 0)
                    {
                        rlt = pwos[0].Clone();
                    }
                }
            }
            finally
            {
                WriteLog.Instance.WriteEndSplitter(strProcedureName);
                TWaitting.Instance.CloseWaitForm();
            }

            return(rlt);
        }
Example #2
0
        private void grdvOrders_ValidateRow(
            object sender,
            ValidateRowEventArgs e)
        {
            DataRow dr = grdvOrders.GetDataRow(e.RowHandle);

            if (dr != null)
            {
                try
                {
                    switch (dr.RowState)
                    {
                    case DataRowState.Modified:
                    case DataRowState.Detached:
                    case DataRowState.Added:
                        if ((int)dr["RecordStatus"] == 0)
                        {
                            dr["RecordStatus"] = 2;
                        }

                        #region 校验工单信息
                        if (dr["MONumber"] == null ||
                            ((string)dr["MONumber"]).Trim() == "")
                        {
                            dr["ErrCode"] = 99;
                            dr["ErrText"] = "订单号不能空白";
                        }
                        else
                        {
                            // 检查工单列表中是否有重复的订单号和行号
                            foreach (DataRow dataRow in dtPWOs.Rows)
                            {
                                if ((string)dr["MONumber"] == (string)dataRow["MONumber"] &&
                                    (int)dr["MOLineNo"] == (int)dataRow["MOLineNo"] &&
                                    (int)dr["Ordinal"] != (int)dataRow["Ordinal"] &&
                                    (int)dataRow["RecordStatus"] != 3)
                                {
                                    dr["ErrCode"] = 99;
                                    dr["ErrText"] = "在同一炉次中不允许有相同的订单号和行号出现";
                                    return;
                                }
                            }

                            // 校验工单信息
                            OpenPWOInfo pwo =
                                FindPWOWithNumberAndNo(
                                    (string)dr["MONumber"],
                                    (int)dr["MOLineNo"]);
                            if (pwo == null)
                            {
                                dr["ErrCode"] = 99;
                                dr["ErrText"] =
                                    string.Format(
                                        "未找到 订单号[{1}]和行号[{2}] 的制造订单",
                                        dr["ErrText"].ToString(),
                                        dr["MONumber"].ToString(),
                                        dr["MOLineNo"].ToString());
                            }
                            else
                            {
                                dr["T102Code"]     = pwo.ProductNo;
                                dr["LotNumber"]    = pwo.LotNumber;
                                dr["LinkedFactID"] = pwo.PWOIssuingFactID;
                                dr["Qty"]          = pwo.OrderQty;

                                #region 解析 T102Code
                                int    errCode = 0;
                                string errText = "";
                                Stb058 data    = new Stb058();

                                IRAPMDMClient.Instance.mfn_GetInfo_Entity058WithCode(
                                    IRAPUser.Instance.CommunityID,
                                    102,
                                    pwo.ProductNo,
                                    ref data,
                                    out errCode,
                                    out errText);
                                if (errCode == 0)
                                {
                                    string[] strTemps = data.NodeName.Split('-');
                                    if (strTemps.Length >= 1)
                                    {
                                        dr["PlateNo"] = strTemps[0];
                                    }
                                    if (strTemps.Length >= 2)
                                    {
                                        dr["T131Code"] = strTemps[1];
                                    }
                                }
                                #endregion

                                dr["ErrCode"] = 0;
                                dr["ErrText"] = "";
                            }
                        }
                        #endregion

                        #region 校验材质
                        if (dr["T131Code"] == null ||
                            ((string)dr["T131Code"]).Trim() == "")
                        {
                            dr["ErrCode"] = (int)dr["ErrCode"] + 1;
                            dr["ErrText"] = (string)dr["ErrText"] + ";材质不能空白";
                        }
                        else
                        {
                            // 校验材质
                            if (((string)dr["T131Code"]).Substring(0, 3) != infoSmeltProduct.T131Code)
                            {
                                dr["ErrCode"] = (int)dr["ErrCode"] + 1;
                                dr["ErrText"] =
                                    (string)dr["ErrText"] +
                                    string.Format(";材质必须是 [{0}] 系列的", infoSmeltProduct.T131Code);
                            }
                        }
                        #endregion

                        break;
                    }
                }
                finally
                {
                    for (int i = 0; i < dtPWOs.Rows.Count; i++)
                    {
                        dtPWOs.Rows[i]["Ordinal"] = i + 1;
                    }
                }
            }
        }