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

            if (Add(ctx, data, out error))
            {
                ctx.SubmitChanges();
                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <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 #3
0
        /// <summary>
        /// 批量提交
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (dataGridView1.Rows.Count == 0)
            {
                MessageDialog.ShowPromptMessage("没有数据需要提交");
                return;
            }

            txtReason.Text = txtReason.Text.Trim();

            if (txtReason.Text.Trim() == "")
            {
                MessageDialog.ShowPromptMessage("请录入变更原因后在进行此操作");
                txtReason.Focus();
                return;
            }

            // 手动模式变更的信息
            List <ZPX_ConvertedCVTNumber> lstManualMode = new List <ZPX_ConvertedCVTNumber>();

            // 自动动模式变更的信息
            List <ZPX_ConvertedCVTNumber> lstAutoMode = new List <ZPX_ConvertedCVTNumber>();

            DateTime date = ServerTime.Time;

            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                DataGridViewCellCollection cells = dataGridView1.Rows[i].Cells;
                string newCVTNumber = cells["新箱箱号"].Value.ToString();
                string oldCVTNumber = cells["旧箱箱号"].Value.ToString();

                #region 2013-09-18 夏石友,新箱未入库型号变更
                //if (m_convertCVTServer.IsNewCVT(cmbOldCVTType.Text, oldCVTNumber))
                //{
                //    MessageDialog.ShowErrorMessage(string.Format("旧箱箱号 {0} 还没有进行营销业务,不允许进行此操作", oldCVTNumber));
                //    dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];
                //    return;
                //}
                #endregion

                if (m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查旧箱信息, cmbOldCVTType.Text, oldCVTNumber))
                {
                    MessageDialog.ShowErrorMessage(string.Format("旧箱箱号 {0} 已经变更过,不允许进行此操作", oldCVTNumber));

                    dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

                    return;
                }

                if (!m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查旧箱档案信息, cmbOldCVTType.Text, oldCVTNumber))
                {
                    MessageDialog.ShowErrorMessage(string.Format("电子档案中不存在旧箱箱号 {0} 的信息,不允许进行此操作", oldCVTNumber));

                    dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

                    return;
                }

                if (cells["变更模式"].Value.ToString() == "手动模式")
                {
                    if (!m_convertCVTServer.IsNewCVT(cmbNewCVTType.Text, newCVTNumber))
                    {
                        MessageDialog.ShowErrorMessage(string.Format("新箱箱号 {0} 已经被使用过,不允许进行此操作", newCVTNumber));

                        dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

                        return;
                    }

                    if (m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查新箱档案信息, cmbNewCVTType.Text, newCVTNumber))
                    {
                        MessageDialog.ShowErrorMessage("新箱号电子档案中已经存在,不允许再进行此操作");

                        dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

                        return;
                    }

                    if (m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查新旧箱信息, cmbNewCVTType.Text, newCVTNumber))
                    {
                        MessageDialog.ShowErrorMessage(string.Format("新箱箱号 {0} 已经变更过,不允许进行此操作", newCVTNumber));

                        dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

                        return;
                    }

                    if (!ServerModuleFactory.GetServerModule <IPrintProductBarcodeInfo>().IsExists(cmbNewCVTType.Text + " " + newCVTNumber))
                    {
                        MessageDialog.ShowErrorMessage(string.Format("新箱箱号 {0} 还未分配,手动模式时新箱箱号必须是已经打过条形码的,否则不允许进行此操作",
                                                                     newCVTNumber));

                        dataGridView1.CurrentCell = dataGridView1.Rows[i].Cells[0];

                        return;
                    }
                }
                else
                {
                    MessageDialog.ShowPromptMessage("当前不允许存在“自动模式”变更方式,必须手动变更,人为设置新箱箱号(可打印条形码分配箱号)");
                    return;
                }

                ZPX_ConvertedCVTNumber data = new ZPX_ConvertedCVTNumber();

                data.Date             = date;
                data.IsZeroKilometre  = chkIsNewCVT.Checked;
                data.NewProductNumber = newCVTNumber;
                data.NewProductType   = cmbNewCVTType.Text + (chkIsNewCVT.Checked ? "" : " FX");
                data.OldProductNumber = cells["旧箱箱号"].Value.ToString();
                data.OldProductType   = cmbOldCVTType.Text;
                data.UserCode         = BasicInfo.LoginID;
                data.Remark           = string.Format("批量变更:{0}", txtReason.Text);

                if (cells["变更模式"].Value.ToString() == "手动模式")
                {
                    lstManualMode.Add(data);
                }
                else
                {
                    lstAutoMode.Add(data);
                }
            }

            if (MessageDialog.ShowEnquiryMessage("变更箱号时将会为新箱号创建电子档案,复制旧箱号数据。是否继续?") == DialogResult.No)
            {
                return;
            }

            if (!m_convertCVTServer.BatchConvertCVTNumber("手动模式", lstManualMode, out m_error))
            {
                MessageDialog.ShowErrorMessage(m_error);
                return;
            }

            if (!m_convertCVTServer.BatchConvertCVTNumber("自动模式", lstAutoMode, out m_error))
            {
                MessageDialog.ShowErrorMessage(m_error);
                return;
            }

            MessageDialog.ShowPromptMessage("批量变更箱号成功");

            txtNewCVTNumber.Text = "";

            btnSave.Enabled = false;

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

                if (cells["变更模式"].Value.ToString() == "自动模式")
                {
                    cells["新箱箱号"].Value  = lstAutoMode[i].NewProductNumber;
                    cells["变更模式"].Value += " 已分配箱号";

                    dataGridView1.Rows[i].DefaultCellStyle.ForeColor = Color.Blue;
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// 生成新箱电子档案
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnGenerateNewCVT_Click(object sender, EventArgs e)
        {
            if (txtRemark.Text.Trim() == "")
            {
                txtRemark.Focus();
                MessageDialog.ShowErrorMessage("说明不允许为空");
                return;
            }

            string oldProductCode = cmbOldCVTType.Text + " " + txtOldCVTNumber.Text;
            string newProductCode = cmbNewCVTType.Text + " " + txtNewCVTNumber.Text;

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

            if (m_electronFileServer.IsExists(newProductCode))
            {
                MessageDialog.ShowErrorMessage("电子档案中已经存在新箱信息,检查操作是否有误,无法继续");
                return;
            }

            // 检测录入的新箱箱号格式是否正确
            if (!m_productCodeServer.VerifyProductCodesInfo(
                    cmbNewCVTType.Text, txtNewCVTNumber.Text, GlobalObject.CE_BarCodeType.内部钢印码, out error))
            {
                MessageDialog.ShowErrorMessage(error);

                txtNewCVTNumber.SelectAll();
                txtNewCVTNumber.Focus();

                return;
            }

            #region 2013-09-22 夏石友

            //if (m_convertCVTServer.IsNewCVT(cmbOldCVTType.Text, txtOldCVTNumber.Text))
            //{
            //    MessageDialog.ShowErrorMessage("旧箱箱号还没有进行营销业务,不允许进行此操作");

            //    txtOldCVTNumber.SelectAll();
            //    txtOldCVTNumber.Focus();

            //    return;
            //}

            #endregion

            if (!m_convertCVTServer.IsNewCVT(cmbNewCVTType.Text, txtNewCVTNumber.Text))
            {
                MessageDialog.ShowErrorMessage("新箱号已经被使用过,不允许再进行此操作");

                txtNewCVTNumber.SelectAll();
                txtNewCVTNumber.Focus();

                return;
            }

            if (m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查旧箱信息, cmbOldCVTType.Text, txtOldCVTNumber.Text))
            {
                MessageDialog.ShowErrorMessage("旧箱号已经变更过,不允许再进行此操作");

                txtOldCVTNumber.SelectAll();
                txtOldCVTNumber.Focus();

                return;
            }

            if (m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查新旧箱信息, cmbNewCVTType.Text, txtNewCVTNumber.Text))
            {
                MessageDialog.ShowErrorMessage("新箱号已经变更过,不允许再进行此操作");

                txtNewCVTNumber.SelectAll();
                txtNewCVTNumber.Focus();

                return;
            }

            if (m_convertCVTServer.IsExists(ConvertCVTNumber_CheckEnum.检查新箱档案信息, cmbNewCVTType.Text, txtNewCVTNumber.Text))
            {
                MessageDialog.ShowErrorMessage("新箱号电子档案中已经存在,不允许再进行此操作");

                txtNewCVTNumber.SelectAll();
                txtNewCVTNumber.Focus();

                return;
            }

            if (!ServerModuleFactory.GetServerModule <IPrintProductBarcodeInfo>().IsExists(newProductCode))
            {
                MessageDialog.ShowErrorMessage("新箱号还未分配,不允许进行此操作");

                txtNewCVTNumber.SelectAll();
                txtNewCVTNumber.Focus();

                return;
            }

            ZPX_ConvertedCVTNumber data = new ZPX_ConvertedCVTNumber();

            data.OldProductType   = cmbOldCVTType.Text;
            data.OldProductNumber = txtOldCVTNumber.Text;
            data.NewProductType   = cmbNewCVTType.Text;
            data.NewProductNumber = txtNewCVTNumber.Text;

            data.IsZeroKilometre = chkReturnZeroDistance.Checked;
            data.UserCode        = GlobalObject.BasicInfo.LoginID;
            data.Date            = ServerTime.Time;
            data.Remark          = "单个变更:" + txtRemark.Text;

            if (!m_convertCVTServer.Add(data, out error))
            {
                MessageDialog.ShowErrorMessage(error);
            }
            else
            {
                MessageDialog.ShowPromptMessage("成功添加返修信息, 并在电子档案中生成新箱信息");

                RefreshDataGridViewOfRepairInfo();
            }
        }