/// <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); } }
/// <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; } } }
/// <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(); } }