private void btnUpdate_Click(object sender, EventArgs e)
        {
            if (!CheckSelectedRow() || !CheckDataItem())
            {
                return;
            }

            string prompt = string.Format("您确定要更新【{0}】下的【{1}】零件吗?",
                                          dataGridView1.SelectedRows[0].Cells["父总成名称"].Value.ToString(),
                                          dataGridView1.SelectedRows[0].Cells["零件名称"].Value.ToString());

            if (MessageDialog.ShowEnquiryMessage(prompt) == DialogResult.No)
            {
                return;
            }

            int             id   = (int)dataGridView1.SelectedRows[0].Cells["序号"].Value;
            P_AssemblingBom info = CreateAssemblingBom();

            if (!m_assemblingBom.Update(id, info, out m_err))
            {
                MessageDialog.ShowErrorMessage(m_err);
                return;
            }

            m_lstAssemblingBom = m_assemblingBom.GetAssemblingBom(cmbProductType.Text);

            InitViewData(m_lstAssemblingBom);

            PositioningRecord(info.ParentCode);
        }
Exemple #2
0
        /// <summary>
        /// 更新分总成下所有零件工位号
        /// </summary>
        /// <param name="surEdition">源装配BOM版本号</param>
        /// <param name="parentName">分总成名称</param>
        /// <param name="workBench">要设置的工位号</param>
        /// <param name="updateParentPart">是否更新时一并更新分总成零件的工位号</param>
        /// <param name="error">操作错误时返回的错误信息</param>
        /// <returns>更新成功返回True,更新失败返回False</returns>
        public bool UpdateWorkBench(string surEdition, string parentName,
                                    string workBench, bool updateParentPart, out string error)
        {
            DepotManagementDataContext ctx = CommentParameter.DepotDataContext;

            error = null;

            try
            {
                if (updateParentPart)
                {
                    P_AssemblingBom data = (from r in ctx.P_AssemblingBom
                                            where r.ProductCode == surEdition && r.PartName == parentName
                                            select r).Single();

                    data.UserCode  = BasicInfo.LoginID;
                    data.Date      = ServerTime.Time;
                    data.Workbench = workBench;
                }

                UpdateWorkBench(ctx, surEdition, parentName, workBench);

                ctx.SubmitChanges();

                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
        private void btnAdd_Click(object sender, EventArgs e)
        {
            if (!CheckDataItem())
            {
                return;
            }

            if (dataGridView1.Rows.Count > 0)
            {
                for (int i = 0; i < dataGridView1.Rows.Count; i++)
                {
                    DataGridViewCellCollection cells = dataGridView1.Rows[i].Cells;

                    if (cells["父总成编码"].Value.ToString() == txtParentCode.Text && cells["零件编码"].Value.ToString() == txtCode.Text &&
                        cells["规格"].Value.ToString() == txtSpec.Text && cells["工位"].Value.ToString() == cmbWorkBench.Text)
                    {
                        MessageDialog.ShowPromptMessage("不允许进行此操作,当前装配BOM信息中已经存在父总成编码、零件编码、规格、工位完全相同的信息!");
                        return;
                    }
                }
            }

            P_AssemblingBom info = CreateAssemblingBom();

            if (!m_assemblingBom.Add(info, out m_err))
            {
                MessageDialog.ShowErrorMessage(m_err);
                return;
            }

            m_lstAssemblingBom = m_assemblingBom.GetAssemblingBom(cmbProductType.Text);
            InitViewData(m_lstAssemblingBom);
            PositioningRecord(info.ParentCode);
        }
        private void  制ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count == 0)
            {
                MessageDialog.ShowPromptMessage("请选择表格中的零件后再进行此操作");
                return;
            }

            FormProductType form = new FormProductType();

            if (form.ShowDialog() == DialogResult.OK)
            {
                List <View_P_ProductInfo> productList = form.SelectedProduct;

                foreach (View_P_ProductInfo item in productList)
                {
                    if (item.产品类型编码 == dataGridView1.CurrentRow.Cells["产品编码"].Value.ToString())
                    {
                        continue;
                    }

                    if (m_assemblingBom.IsExistGoodsWorkbench(item.产品类型编码,
                                                              dataGridView1.CurrentRow.Cells["零件编码"].Value.ToString(),
                                                              dataGridView1.CurrentRow.Cells["工位"].Value.ToString()))
                    {
                        continue;
                    }

                    P_AssemblingBom assembile = new P_AssemblingBom();

                    assembile.AssemblyFlag   = (bool)dataGridView1.CurrentRow.Cells["是否总成"].Value;
                    assembile.Date           = ServerTime.Time;
                    assembile.FittingCounts  = Convert.ToInt32(dataGridView1.CurrentRow.Cells["装配数量"].Value);
                    assembile.IsAdaptingPart = (bool)dataGridView1.CurrentRow.Cells["是否选配零件"].Value;
                    assembile.NeedToClean    = (bool)dataGridView1.CurrentRow.Cells["是否清洗"].Value;
                    assembile.OrderNo        = (int)dataGridView1.CurrentRow.Cells["装配顺序"].Value;
                    assembile.ParentCode     = (string)dataGridView1.CurrentRow.Cells["父总成编码"].Value;
                    assembile.ParentName     = (string)dataGridView1.CurrentRow.Cells["父总成名称"].Value;
                    assembile.PartCode       = (string)dataGridView1.CurrentRow.Cells["零件编码"].Value;
                    assembile.PartName       = (string)dataGridView1.CurrentRow.Cells["零件名称"].Value;
                    assembile.ProductCode    = item.产品类型编码;
                    assembile.RasterProofing = (bool)dataGridView1.CurrentRow.Cells["需光栅防错"].Value;
                    assembile.Remarks        = (string)dataGridView1.CurrentRow.Cells["备注"].Value;
                    assembile.Spec           = (string)dataGridView1.CurrentRow.Cells["规格"].Value;
                    assembile.UserCode       = BasicInfo.LoginID;
                    assembile.Workbench      = (string)dataGridView1.CurrentRow.Cells["工位"].Value;

                    if (!m_assemblingBom.Add(assembile, out m_err))
                    {
                        MessageDialog.ShowErrorMessage(m_err);
                        return;
                    }
                }

                InitViewData(m_lstAssemblingBom);
            }
        }
Exemple #5
0
        /// <summary>
        /// 复制子零件
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="surEdition">源装配BOM版本号</param>
        /// <param name="tarEdition">目标装配BOM产品信息</param>
        /// <param name="parentName">分总成名称</param>
        private void CopyChildPart(DepotManagementDataContext ctx, string surEdition, View_P_ProductInfo tarEdition, string parentName)
        {
            var result = from r in ctx.P_AssemblingBom
                         where r.ProductCode == surEdition && r.ParentName == parentName
                         select r;

            DateTime serverTime = ServerTime.Time;

            foreach (var item in result)
            {
                P_AssemblingBom info = new P_AssemblingBom();

                info.ProductCode        = tarEdition.产品类型编码;
                info.ParentCode         = item.ParentCode;
                info.ParentName         = item.ParentName;
                info.PartCode           = item.PartCode;
                info.PartName           = item.PartName;
                info.Spec               = item.Spec;
                info.IsMaterialShortage = item.IsMaterialShortage;
                info.IsAdaptingPart     = item.IsAdaptingPart;
                info.NeedToClean        = item.NeedToClean;
                info.AssemblyFlag       = item.AssemblyFlag;
                info.RasterProofing     = item.RasterProofing;
                info.Date               = serverTime;
                info.Remarks            = item.Remarks;
                info.UserCode           = GlobalObject.BasicInfo.LoginID;
                info.Workbench          = item.Workbench;
                info.FittingCounts      = item.FittingCounts;
                info.OrderNo            = item.OrderNo;

                if (info.ParentCode == surEdition)
                {
                    info.ParentCode = tarEdition.产品类型编码;
                    info.ParentName = tarEdition.产品类型名称;
                }
                else if (info.PartCode == surEdition)
                {
                    info.PartCode = tarEdition.产品类型编码;
                    info.PartName = tarEdition.产品类型名称;
                }

                ctx.P_AssemblingBom.InsertOnSubmit(info);

                if (item.AssemblyFlag)
                {
                    var result2 = from r in ctx.P_AssemblingBom
                                  where r.ProductCode == surEdition && r.ParentName == item.PartName
                                  select r;

                    if (result2.Count() > 0)
                    {
                        CopyChildPart(ctx, surEdition, tarEdition, item.PartName);
                    }
                }
            }
        }
Exemple #6
0
        /// <summary>
        /// 更新分总成下所有零件工位号
        /// </summary>
        /// <param name="ctx">数据上下文</param>
        /// <param name="surEdition">源装配BOM版本号</param>
        /// <param name="parentName">分总成名称</param>
        /// <param name="workBench">要设置的工位号</param>
        private void UpdateWorkBench(DepotManagementDataContext ctx, string surEdition, string parentName, string workBench)
        {
            List <P_AssemblingBom> result = (from r in ctx.P_AssemblingBom
                                             where r.ProductCode == surEdition && r.ParentName == parentName
                                             select r).ToList();

            DateTime serverTime = ServerTime.Time;

            for (int i = 0; i < result.Count; i++)
            {
                P_AssemblingBom item = result[i];

                List <P_AssemblingBom> result2 = (from r in ctx.P_AssemblingBom
                                                  where r.ProductCode == surEdition && r.ParentName == parentName &&
                                                  r.PartCode == item.PartCode && r.PartName == item.PartName && r.Spec == item.Spec
                                                  select r).ToList();

                // 本分总成存在多个相同的零件(仅工位不同),此时需要合并
                if (result2.Count > 1)
                {
                    int amount = (from r in ctx.P_AssemblingBom
                                  where r.ProductCode == surEdition && r.ParentName == parentName &&
                                  r.PartCode == item.PartCode && r.PartName == item.PartName && r.Spec == item.Spec
                                  select r.FittingCounts).Sum();


                    item.FittingCounts = amount;

                    for (int index = 1; index < result2.Count; index++)
                    {
                        ctx.P_AssemblingBom.DeleteOnSubmit(result2[index]);
                    }

                    i += result2.Count - 1;
                }

                item.Workbench = workBench;
                item.UserCode  = BasicInfo.LoginID;
                item.Date      = serverTime;

                if (item.AssemblyFlag)
                {
                    var result3 = from r in ctx.P_AssemblingBom
                                  where r.ProductCode == surEdition && r.ParentName == item.PartName
                                  select r;

                    if (result3.Count() > 0)
                    {
                        UpdateWorkBench(ctx, surEdition, item.PartName, workBench);
                    }
                }
            }
        }
Exemple #7
0
        /// <summary>
        /// 添加装配BOM零件信息
        /// </summary>
        /// <param name="info">装配BOM零件信息</param>
        /// <param name="error">False时返回错误信息</param>
        /// <returns>True 添加成功,False 添加失败</returns>
        public bool Add(P_AssemblingBom info, out string error)
        {
            try
            {
                error = null;

                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                info.Date = ServerTime.Time;

                dataContxt.P_AssemblingBom.InsertOnSubmit(info);
                dataContxt.SubmitChanges();

                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
Exemple #8
0
        /// <summary>
        /// 删除装配BOM零件信息
        /// </summary>
        /// <param name="id">装配BOM零件信息ID</param>
        /// <param name="error">False时返回的错误信息</param>
        /// <returns>True 删除成功,False 删除失败</returns>
        public bool Delete(int id, out string error)
        {
            try
            {
                error = null;

                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                var result = from r in dataContxt.P_AssemblingBom where r.ID == id select r;

                if (result.Count() == 0)
                {
                    error = string.Format("找不到ID为{0}的零件信息", id);
                    return(false);
                }

                P_AssemblingBom lnqInfo = result.Single();

                var childrenPart = from r in dataContxt.P_AssemblingBom
                                   where r.ProductCode == lnqInfo.ProductCode && r.ParentCode == lnqInfo.PartCode
                                   select r;

                if (childrenPart.Count() > 0)
                {
                    error = "只有删除所有子零件后才能删除总成零件";
                    return(false);
                }

                dataContxt.P_AssemblingBom.DeleteOnSubmit(lnqInfo);
                dataContxt.SubmitChanges();

                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
        /// <summary>
        /// 根据界面信息创建装配BOM数据对象
        /// </summary>
        /// <returns>返回创建的对象</returns>
        private P_AssemblingBom CreateAssemblingBom()
        {
            P_AssemblingBom info = new P_AssemblingBom();

            info.ProductCode        = cmbProductType.Text;
            info.ParentCode         = txtParentCode.Text;
            info.ParentName         = txtParentName.Text;
            info.PartCode           = txtCode.Text;
            info.PartName           = txtName.Text;
            info.Spec               = txtSpec.Text;
            info.AssemblyFlag       = chkIsAssemblyPart.Checked;
            info.IsMaterialShortage = chk缺料.Checked;
            info.NeedToClean        = chkCleanout.Checked;
            info.IsAdaptingPart     = chkIsAdapting.Checked;
            info.RasterProofing     = chkRasterProofing.Checked;
            info.FittingCounts      = Convert.ToInt32(numAssemblyCount.Value);
            info.Remarks            = txtRemark.Text;
            info.Workbench          = cmbWorkBench.Text;
            info.UserCode           = BasicInfo.LoginID;
            info.OrderNo            = Convert.ToInt32(numOrderNo.Value);

            return(info);
        }
        /// <summary>
        /// 添加维修记录(不仅变更箱号还根据旧箱电子档案生成新箱电子档案)
        /// </summary>
        /// <param name="data">要添加的数据</param>
        /// <param name="error">出错时返回的错误信息</param>
        /// <returns>操作是否成功的标志</returns>
        public bool Add(DepotManagementDataContext ctx, ZPX_ConvertedCVTNumber data, out string error)
        {
            error = null;

            try
            {
                string oldCVTNumber = data.OldProductType + " " + data.OldProductNumber;
                string newCVTNumber = data.NewProductType + " " + data.NewProductNumber;

                if (!m_electronFileServer.IsExists(oldCVTNumber))
                {
                    error = "电子档案中找不到旧箱信息,检查操作是否有误,无法继续";
                    return(false);
                }

                P_AssemblingBom oldBom = m_assemblingBom.GetRootNode(data.OldProductType);
                P_AssemblingBom newBom = m_assemblingBom.GetRootNode(data.NewProductType);

                #region Modify by cjb on 2016.10.9, reason:由于LINQ无法调用存储过程ZPX_ConvertElectronFile,为保证操作在同一事务里,故用代码实现存储过程中的功能

                string OldCode = oldCVTNumber;
                string OldName = oldBom.PartName;
                string NewCode = newCVTNumber;
                string NewName = newBom.PartName;

                var varData = from a in ctx.P_ElectronFile
                              where a.ProductCode == OldCode
                              select a;

                if (varData.Count() == 0)
                {
                    throw new Exception(string.Format("箱号{0}的变速箱电子档案已经存在,无法进行此操作!", OldCode));
                }

                foreach (P_ElectronFile item in varData)
                {
                    P_ElectronFile tempFile = item;
                    string         NewType  = NewCode.Substring(NewCode.IndexOf(' ')).Trim();

                    P_ElectronFile lnqInsert = new P_ElectronFile();

                    lnqInsert.ProductCode      = NewCode;
                    lnqInsert.ParentCode       = tempFile.ParentName == OldName ? NewType : tempFile.ParentCode;
                    lnqInsert.ParentName       = tempFile.ParentName == OldName ? NewName : tempFile.ParentName;
                    lnqInsert.ParentScanCode   = tempFile.ParentScanCode == OldCode ? NewCode : tempFile.ParentScanCode;
                    lnqInsert.GoodsCode        = tempFile.GoodsName == OldName ? NewType : tempFile.GoodsCode;
                    lnqInsert.GoodsName        = tempFile.GoodsName == OldName ? NewName : tempFile.GoodsName;
                    lnqInsert.Spec             = tempFile.Spec;
                    lnqInsert.GoodsOnlyCode    = tempFile.GoodsOnlyCode == OldCode ? NewCode : tempFile.GoodsOnlyCode;
                    lnqInsert.Counts           = tempFile.Counts;
                    lnqInsert.Provider         = tempFile.Provider;
                    lnqInsert.BatchNo          = tempFile.BatchNo;
                    lnqInsert.WorkBench        = tempFile.WorkBench;
                    lnqInsert.CheckDatas       = tempFile.CheckDatas;
                    lnqInsert.FactDatas        = tempFile.FactDatas;
                    lnqInsert.FittingPersonnel = tempFile.FittingPersonnel;
                    lnqInsert.FittingTime      = ServerTime.Time.ToString("yyyy-MM-dd HH:mm:ss");
                    lnqInsert.FinishTime       = ServerTime.Time.ToString("yyyy-MM-dd HH:mm:ss");
                    lnqInsert.FillInPersonnel  = tempFile.FillInPersonnel;
                    lnqInsert.FillInDate       = tempFile.FillInDate;
                    lnqInsert.AssemblingMode   = tempFile.AssemblingMode;

                    if (lnqInsert.ParentCode == "")
                    {
                        lnqInsert.Remark = string.Format("[旧箱箱号:{0},{1}]; {2}", OldCode, ServerTime.Time.ToString("yyyy-MM-dd HH:mm:ss"), tempFile.Remark);
                    }
                    else
                    {
                        lnqInsert.Remark = string.Format("旧箱箱号:{0}; {1}", OldCode, tempFile.Remark);
                    }

                    ctx.P_ElectronFile.InsertOnSubmit(lnqInsert);
                }


                var varUpdate1 = from a in ctx.P_ElectronFile
                                 where a.ProductCode == OldCode && a.ParentCode == ""
                                 select a;

                foreach (P_ElectronFile item in varUpdate1)
                {
                    item.Remark += string.Format("[新箱箱号:{0},{1}]", NewCode, ServerTime.Time.ToString("yyyy-MM-dd HH:mm:ss"));
                }

                #endregion

                //GlobalObject.DatabaseServer.QueryInfoPro("ZPX_ConvertElectronFile", hsTable, out error);

                //ctx.ZPX_ConvertElectronFile(oldCVTNumber, oldBom.PartName, newCVTNumber, newBom.PartName);

                //IDBOperate dbOperate = CommentParameter.GetDBOperate();

                //Hashtable paramTable = new Hashtable();

                //paramTable.Add("@OldCode", oldCVTNumber);
                //paramTable.Add("@OldName", oldBom.PartName);
                //paramTable.Add("@NewCode", newCVTNumber);
                //paramTable.Add("@NewName", newBom.PartName);

                //Dictionary<OperateCMD, object> dicOperateCMD = dbOperate.RunProc_CMD("ZPX_ConvertElectronFile", paramTable);

                //if (!Convert.ToBoolean(dicOperateCMD[OperateCMD.Return_OperateResult]))
                //{
                //    error = Convert.ToString(dicOperateCMD[OperateCMD.Return_Errmsg]);
                //    return false;
                //}

                //DateTime serverTime = ServerTime.Time;

                //P_ElectronFile item = m_electronFileServer.CreateElectronFile(newCVTNumber);

                //item.GoodsCode = rootBom.PartCode;
                //item.GoodsName = rootBom.PartName;
                //item.GoodsOnlyCode = item.ProductCode;
                //item.WorkBench = rootBom.Workbench;
                //item.Remark = string.Format("旧箱箱号 {0};", oldCVTNumber);

                //m_electronFileServer.AddElectronFile(ctx, item);

                //P_ElectronFile oldRoot = m_electronFileServer.GetRootNode(ctx, oldCVTNumber);

                //oldRoot.Remark += string.Format("新箱箱号 {0};", newCVTNumber);

                ctx.ZPX_ConvertedCVTNumber.InsertOnSubmit(data);

                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
Exemple #11
0
        /// <summary>
        /// 复制指定版本的装配BOM信息到目标版本
        /// </summary>
        /// <param name="surEdition">源装配BOM版本号</param>
        /// <param name="tarEdition">目标装配BOM版本号</param>
        /// <param name="error">操作错误时返回的错误信息</param>
        /// <returns>复制成功返回True,复制失败返回False</returns>
        public bool CopyBomData(string surEdition, string tarEdition, out string error)
        {
            try
            {
                error = null;

                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;

                bool blIsExist = (from r in dataContxt.P_AssemblingBom
                                  where r.ProductCode == tarEdition
                                  select r).Count() > 0;

                if (blIsExist)
                {
                    error = string.Format("{0}的零件信息已经存在,不允许再次复制", tarEdition);
                    return(false);
                }

                var result = from r in dataContxt.P_AssemblingBom
                             where r.ProductCode == surEdition select r;

                if (result.Count() == 0)
                {
                    error = string.Format("找不到{0}的零件信息", surEdition);
                    return(false);
                }

                View_P_ProductInfo lnqTargetProductInfo = (from r in dataContxt.View_P_ProductInfo
                                                           where r.产品类型编码 == tarEdition
                                                           select r).First();

                DateTime dtServerTime = ServerTime.Time;

                foreach (var item in result)
                {
                    P_AssemblingBom lnqInfo = new P_AssemblingBom();

                    lnqInfo.ProductCode        = tarEdition;
                    lnqInfo.ParentCode         = item.ParentCode;
                    lnqInfo.ParentName         = item.ParentName;
                    lnqInfo.PartCode           = item.PartCode;
                    lnqInfo.PartName           = item.PartName;
                    lnqInfo.Spec               = item.Spec;
                    lnqInfo.IsMaterialShortage = item.IsMaterialShortage;
                    lnqInfo.IsAdaptingPart     = item.IsAdaptingPart;
                    lnqInfo.NeedToClean        = item.NeedToClean;
                    lnqInfo.AssemblyFlag       = item.AssemblyFlag;
                    lnqInfo.RasterProofing     = item.RasterProofing;
                    lnqInfo.Date               = dtServerTime;
                    lnqInfo.Remarks            = item.Remarks;
                    lnqInfo.UserCode           = GlobalObject.BasicInfo.LoginID;
                    lnqInfo.Workbench          = item.Workbench;
                    lnqInfo.FittingCounts      = item.FittingCounts;
                    lnqInfo.OrderNo            = item.OrderNo;

                    if (lnqInfo.ParentCode == surEdition)
                    {
                        lnqInfo.ParentCode = tarEdition;
                        lnqInfo.ParentName = lnqTargetProductInfo.产品类型名称;
                    }
                    else if (lnqInfo.PartCode == surEdition)
                    {
                        lnqInfo.PartCode = tarEdition;
                        lnqInfo.PartName = lnqTargetProductInfo.产品类型名称;
                    }

                    dataContxt.P_AssemblingBom.InsertOnSubmit(lnqInfo);
                }

                dataContxt.SubmitChanges();
                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }
Exemple #12
0
        /// <summary>
        /// 更新装配BOM零件信息
        /// </summary>
        /// <param name="id">装配BOM零件信息ID</param>
        /// <param name="updateInfo">装配BOM零件更新后的信息</param>
        /// <param name="error">False时返回的错误信息</param>
        /// <returns>添加成功返回True 添加失败返回False</returns>
        public bool Update(int id, P_AssemblingBom updateInfo, out string error)
        {
            try
            {
                error = null;

                DepotManagementDataContext dataContxt = CommentParameter.DepotDataContext;
                var result = from r in dataContxt.P_AssemblingBom where r.ID == id select r;

                if (result.Count() == 0)
                {
                    error = string.Format("找不到ID为{0}的零件信息", id);
                    return(false);
                }

                P_AssemblingBom lnqInfo = result.Single();

                var childrenPart = from r in dataContxt.P_AssemblingBom
                                   where r.ProductCode == lnqInfo.ProductCode && r.ParentCode == lnqInfo.PartCode
                                   select r;

                DateTime serverTime = ServerTime.Time;

                if (childrenPart.Count() > 0)
                {
                    if (lnqInfo.AssemblyFlag && !updateInfo.AssemblyFlag)
                    {
                        error = "您要将总成零件修改成非总成零件时请确保该总成零件下无子零件";
                        return(false);
                    }

                    // 如果分总成图号改变时其子零件的父总成图号也要改变
                    if (updateInfo.PartCode != lnqInfo.PartCode)
                    {
                        foreach (var child in childrenPart)
                        {
                            child.ParentCode = updateInfo.PartCode;
                            child.ParentName = updateInfo.PartName;
                            child.Date       = serverTime;
                            child.UserCode   = updateInfo.UserCode;
                            child.Remarks   += ";修改父总成图号为:" + updateInfo.PartCode;
                        }
                    }
                }

                lnqInfo.ProductCode    = updateInfo.ProductCode;
                lnqInfo.ParentCode     = updateInfo.ParentCode;
                lnqInfo.ParentName     = updateInfo.ParentName;
                lnqInfo.PartCode       = updateInfo.PartCode;
                lnqInfo.PartName       = updateInfo.PartName;
                lnqInfo.Spec           = updateInfo.Spec;
                lnqInfo.IsAdaptingPart = updateInfo.IsAdaptingPart;
                lnqInfo.NeedToClean    = updateInfo.NeedToClean;
                lnqInfo.AssemblyFlag   = updateInfo.AssemblyFlag;

                #region 2013-09-03 夏石友
                lnqInfo.RasterProofing = updateInfo.RasterProofing;
                #endregion

                #region 2016-11-18 夏石友
                lnqInfo.IsMaterialShortage = updateInfo.IsMaterialShortage;
                #endregion

                lnqInfo.Date = serverTime;

                if (updateInfo.Remarks != "" && updateInfo.Remarks != lnqInfo.Remarks)
                {
                    lnqInfo.Remarks += ";" + updateInfo.Remarks;
                }

                lnqInfo.UserCode      = updateInfo.UserCode;
                lnqInfo.Workbench     = updateInfo.Workbench;
                lnqInfo.FittingCounts = updateInfo.FittingCounts;
                lnqInfo.OrderNo       = updateInfo.OrderNo;

                dataContxt.SubmitChanges();
                return(true);
            }
            catch (Exception exce)
            {
                error = exce.Message;
                return(false);
            }
        }