/// <summary> /// 根据条件返回单个配件对象 /// </summary> /// <param name="whereSql"></param> /// <returns></returns> public CeilingAccessory GetCeilingAccessoryByWhereSql(string whereSql) { string sql = "select CeilingAccessoryId,ClassNo,PartDescription,Quantity,PartNo,Unit,Length,Width,Height,Material,Remark,CountingRule from CeilingAccessories"; sql += whereSql; SqlDataReader objReader = SQLHelper.GetReader(sql); CeilingAccessory objCeilingAccessory = null; if (objReader.Read()) { objCeilingAccessory = new CeilingAccessory() { CeilingAccessoryId = objReader["CeilingAccessoryId"].ToString(), ClassNo = Convert.ToInt32(objReader["ClassNo"]), PartDescription = objReader["PartDescription"].ToString(), Quantity = Convert.ToInt32(objReader["Quantity"]), PartNo = objReader["PartNo"].ToString(), Unit = objReader["Unit"].ToString(), Length = objReader["Length"].ToString(), Width = objReader["Width"].ToString(), Height = objReader["Height"].ToString(), Material = objReader["Material"].ToString(), Remark = objReader["Remark"].ToString(), CountingRule = objReader["CountingRule"].ToString() }; } objReader.Close(); return(objCeilingAccessory); }
/// <summary> /// 修改发货清单 /// </summary> /// <param name="objCeilingAccessory"></param> /// <returns></returns> public int EditCeilingPackingList(CeilingAccessory objCeilingAccessory) { //编写带参数的SQL语句 StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.Append("Update CeilingPackingList set PartDescription=@PartDescription,PartNo=@PartNo,Quantity=@Quantity,"); sqlBuilder.Append("Length=@Length,Width=@Width,Height=@Height,Remark=@Remark,Location=@Location where CeilingPackingListId=@CeilingPackingListId"); //定义参数数组 SqlParameter[] param = new SqlParameter[] { new SqlParameter("@PartDescription", objCeilingAccessory.PartDescription), new SqlParameter("@PartNo", objCeilingAccessory.PartNo), new SqlParameter("@Quantity", objCeilingAccessory.Quantity), new SqlParameter("@Length", objCeilingAccessory.Length), new SqlParameter("@Width", objCeilingAccessory.Width), new SqlParameter("@Height", objCeilingAccessory.Height), new SqlParameter("@Remark", objCeilingAccessory.Remark), new SqlParameter("@Location", objCeilingAccessory.Location), new SqlParameter("@CeilingPackingListId", objCeilingAccessory.CeilingPackingListId) }; try { return(SQLHelper.Update(sqlBuilder.ToString(), param)); } catch (SqlException ex) { throw new Exception("数据库操作出现异常:" + ex.Message); } catch (Exception ex) { throw ex; } }
/// <summary> /// 添加配件信息 /// </summary> /// <param name="objCeilingAccessory"></param> /// <returns></returns> public bool AddCeilingAccessory(CeilingAccessory objCeilingAccessory) { string sql = "insert into CeilingAccessories (CeilingAccessoryId,ClassNo,PartDescription,PartNo,Unit,Length,Width,Height,Material,Remark,CountingRule)"; sql += " values('{0}',{1},'{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')"; sql = string.Format(sql, objCeilingAccessory.CeilingAccessoryId, objCeilingAccessory.ClassNo, objCeilingAccessory.PartDescription, objCeilingAccessory.PartNo, objCeilingAccessory.Unit, objCeilingAccessory.Length, objCeilingAccessory.Width, objCeilingAccessory.Height, objCeilingAccessory.Material, objCeilingAccessory.Remark, objCeilingAccessory.CountingRule); try { SQLHelper.GetSingleResult(sql); return(true); } catch (SqlException ex) { //2627 if (ex.Number == 2627) { throw new Exception("信息重复,不能添加重复的项目信息"); } else { throw new Exception("添加配件信息时数据库访问异常" + ex.Message); } } catch (Exception ex) { throw ex; } }
/// <summary> /// 选中节点后复制给配件对象,并反填数据到txt中 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tvCeilingAccessories_AfterSelect(object sender, TreeViewEventArgs e) { //先判断是二级节点才执行任务 if (e.Node.Level == 1) { //需要执行的任务 objCeilingAccessory = objCeilingAccessoryService.GetCeilingAccessoryById(e.Node.Tag.ToString()); txtPartDescription.Text = objCeilingAccessory.PartDescription; if (objCeilingAccessory.CeilingAccessoryId == "7001") { txtPartDescription.ReadOnly = false; } else { txtPartDescription.ReadOnly = true; } txtPartNo.Text = objCeilingAccessory.PartNo; txtRemark.Text = objCeilingAccessory.Remark; txtQuantity.Text = objCeilingAccessory.Quantity.ToString(); txtUnit.Text = objCeilingAccessory.Unit; txtLength.Text = objCeilingAccessory.Length; txtWidth.Text = objCeilingAccessory.Width; txtHeight.Text = objCeilingAccessory.Height; btnAddCeilingAccessory.Tag = objCeilingAccessory.CeilingAccessoryId; } }
/// <summary> /// 执行修改按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnEditCeilingAccessory_Click(object sender, EventArgs e) { if (txtPartDescription.Tag == null) { return; } int firstRowIndex = dgvCeilingPackingList.CurrentRow.Index; //封装对象 CeilingAccessory objCeilingPackingItem = new CeilingAccessory() { CeilingPackingListId = Convert.ToInt32(txtPartDescription.Tag), PartDescription = txtPartDescription.Text.Trim(), PartNo = txtPartNo.Text.Trim(), Remark = txtRemark.Text.Trim(), Quantity = Convert.ToInt32(txtQuantity.Text.Trim()), Length = txtLength.Text.Trim(), Width = txtWidth.Text.Trim(), Height = txtHeight.Text.Trim(), Location = txtLocation.Text.Trim() }; //提交修改 //调用后台方法修改对象 try { if (objCeilingAccessoryService.EditCeilingPackingList(objCeilingPackingItem) == 1) { MessageBox.Show("发货清单条目信息成功!", "提示信息"); dgvCeilingPackingList.DataSource = objCeilingAccessoryService.GetCeilingPackingListByProjectId(objProject.ProjectId.ToString()); //清空内容 txtPartDescription.Text = ""; txtPartDescription.ReadOnly = true; txtPartNo.Text = ""; txtRemark.Text = ""; txtQuantity.Text = ""; txtLength.Text = ""; txtWidth.Text = ""; txtHeight.Text = ""; //txtLocation.Text = ""; txtPartDescription.Tag = ""; } } catch (Exception ex) { MessageBox.Show(ex.Message); } btnEditCeilingAccessory.Enabled = false; dgvCeilingPackingList.Rows[firstRowIndex].Selected = true; //将刚修改的行选中 dgvCeilingPackingList.FirstDisplayedScrollingRowIndex = firstRowIndex; //将修改的行显示在第一行 }
/// <summary> /// 修改配件信息 /// </summary> /// <param name="objCeilingAccessory"></param> /// <returns></returns> public int EditCeilingAccessory(CeilingAccessory objCeilingAccessory) { string sql = "update CeilingAccessories set ClassNo={0},PartDescription='{1}',PartNo='{2}',Unit='{3}',"; sql += "Length='{4}',Width='{5}',Height='{6}',Material='{7}',Remark='{8}',CountingRule='{9}' where CeilingAccessoryId='{10}'"; sql = string.Format(sql, objCeilingAccessory.ClassNo, objCeilingAccessory.PartDescription, objCeilingAccessory.PartNo, objCeilingAccessory.Unit, objCeilingAccessory.Length, objCeilingAccessory.Width, objCeilingAccessory.Height, objCeilingAccessory.Material, objCeilingAccessory.Remark, objCeilingAccessory.CountingRule, objCeilingAccessory.CeilingAccessoryId); try { return(SQLHelper.Update(sql)); } catch (SqlException ex) { throw new Exception("数据库操作出现异常:" + ex.Message); } catch (Exception ex) { throw ex; } }
/// <summary> /// 打印标签 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPrintLabel_Click(object sender, EventArgs e) { //判断有没有数据,弹窗确定要打印选中的条目 if (dgvCeilingPackingList.RowCount == 0) { return; } DialogResult result = MessageBox.Show("确定要打印选中的多行打标签吗?", "打标签询问", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.No || dgvCeilingPackingList.SelectedRows.Count == 0) { return; } //获取选择的标签 List <CeilingAccessory> ceilingAccessories = new List <CeilingAccessory>(); foreach (DataGridViewRow row in dgvCeilingPackingList.SelectedRows) { //循环选中的行,并根据ID查询对象,判断ClassNo==4,将对象填入List CeilingAccessory objCeilingAccessory = objCeilingAccessoryService.GetCeilingPackingItemById(row.Cells["CeilingPackingListId"].Value .ToString()); if (objCeilingAccessory.ClassNo == 4) { for (int i = 1; i <= objCeilingAccessory.Quantity; i++)//根据数量添加多个标签 { ceilingAccessories.Add(objCeilingAccessory); } } } //调用打印程序 if (new PrintReports().ExecPrintCeilingLabel(objProject, ceilingAccessories)) { MessageBox.Show("标签打印完成", "打印完成"); } }
/// <summary> /// 根据where条件返回发货清单条目 /// </summary> /// <param name="whereSql"></param> /// <returns></returns> public CeilingAccessory GetCeilingPackingItemByWhereSql(string whereSql) { StringBuilder sql = new StringBuilder("select PartDescription,Quantity,PartNo,Unit,Length,Width,Height,Material,Remark,CountingRule,AddedDate,CeilingPackingList.UserId,UserAccount,ProjectId,CeilingAccessoryId,ClassNo,CeilingPackingListId,Location from CeilingPackingList"); sql.Append(" inner join Users on Users.UserId=CeilingPackingList.UserId"); sql.Append(whereSql); SqlDataReader objReader = SQLHelper.GetReader(sql.ToString()); CeilingAccessory objCeilingAccessory = null; while (objReader.Read()) { objCeilingAccessory = new CeilingAccessory() { CeilingPackingListId = Convert.ToInt32(objReader["CeilingPackingListId"]), ProjectId = Convert.ToInt32(objReader["ProjectId"]), CeilingAccessoryId = objReader["CeilingAccessoryId"].ToString(), ClassNo = Convert.ToInt32(objReader["ClassNo"]), PartDescription = objReader["PartDescription"].ToString(), Quantity = Convert.ToInt32(objReader["Quantity"]), PartNo = objReader["PartNo"].ToString(), Unit = objReader["Unit"].ToString(), Length = objReader["Length"].ToString(), Width = objReader["Width"].ToString(), Height = objReader["Height"].ToString(), Material = objReader["Material"].ToString(), Remark = objReader["Remark"].ToString(), CountingRule = objReader["CountingRule"].ToString(), AddedDate = Convert.ToDateTime(objReader["AddedDate"]), UserId = Convert.ToInt32(objReader["UserId"]), UserAccount = objReader["UserAccount"].ToString(), Location = objReader["Location"].ToString() }; } objReader.Close(); return(objCeilingAccessory); }
/// <summary> /// 按钮,增加或修改 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCeilingAccessory_Click(object sender, EventArgs e) { #region 数据验证 if (txtPartDescription.Text.Trim().Length == 0) { MessageBox.Show("请输入部件描述", "验证信息"); txtPartDescription.Focus(); return; } if (txtPartNo.Text.Trim().Length == 0) { MessageBox.Show("请输入部件编号", "验证信息"); txtPartNo.Focus(); return; } if (txtCeilingAccessoryId.Text.Trim().Length == 0) { MessageBox.Show("请输入ID,ID开头数字规则:0电/1灯/2风机/3型材/4油网/5螺丝/6控制/7水洗ANSUL/8折弯件/9焊接件", "验证信息"); txtCeilingAccessoryId.Focus(); return; } if (cobUnit.SelectedIndex == -1) { MessageBox.Show("请选择单位", "验证信息"); cobUnit.Focus(); return; } if (cobClassNo.SelectedIndex == -1) { MessageBox.Show("请选择分类号,分类号规则:0日本不要配件,1日本特有配件,2适用于所有项目的配件,3自制折弯件,4自制焊接件(打标签)", "验证信息"); cobClassNo.Focus(); return; } #endregion int firstRowIndex = dgvCeilingAccessories.CurrentRow.Index; if (btnCeilingAccessory.Tag.Equals(0)) { //提交添加 //封装对象 CeilingAccessory objCeilingAccessory = new CeilingAccessory() { CeilingAccessoryId = txtCeilingAccessoryId.Text.Trim(), ClassNo = Convert.ToInt32(cobClassNo.Text), PartDescription = txtPartDescription.Text.Trim(), PartNo = txtPartNo.Text.Trim(), Unit = cobUnit.Text, Length = txtLength.Text.Trim(), Width = txtWidth.Text.Trim(), Height = txtHeight.Text.Trim(), Material = txtMaterial.Text.Trim(), Remark = txtRemark.Text.Trim(), CountingRule = txtCountingRule.Text.Trim() }; //提交添加 try { if (objCeilingAccessoryService.AddCeilingAccessory(objCeilingAccessory)) { //提示添加成功 MessageBox.Show("配件信息添加成功", "提示信息"); //刷新显示 dgvCeilingAccessories.DataSource = objCeilingAccessoryService.GetCeilingAccessoriesByWhereSql(""); //清空内容 foreach (Control item in Controls) { if (item == txtPartNo) { continue; } if (item is TextBox) { item.Text = ""; } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { //封装对象 //封装对象 CeilingAccessory objCeilingAccessory = new CeilingAccessory() { CeilingAccessoryId = txtCeilingAccessoryId.Text.Trim(), ClassNo = Convert.ToInt32(cobClassNo.Text), PartDescription = txtPartDescription.Text.Trim(), PartNo = txtPartNo.Text.Trim(), Unit = cobUnit.Text, Length = txtLength.Text.Trim(), Width = txtWidth.Text.Trim(), Height = txtHeight.Text.Trim(), Material = txtMaterial.Text.Trim(), Remark = txtRemark.Text.Trim(), CountingRule = txtCountingRule.Text.Trim() }; //提交 //提交修改 //调用后台方法修改对象 try { if (objCeilingAccessoryService.EditCeilingAccessory(objCeilingAccessory) == 1) { MessageBox.Show("修改配件信息成功!", "提示信息"); dgvCeilingAccessories.DataSource = objCeilingAccessoryService.GetCeilingAccessoriesByWhereSql(""); //清空内容 foreach (Control item in Controls) { if (item == txtPartNo) { continue; } if (item is TextBox) { item.Text = ""; } } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { btnCeilingAccessory.Tag = 0;//0代表添加,1代表修改 btnCeilingAccessory.Text = "添加配件"; txtCeilingAccessoryId.ReadOnly = false; } } dgvCeilingAccessories.Rows[firstRowIndex].Selected = true; //将刚修改的行选中 dgvCeilingAccessories.FirstDisplayedScrollingRowIndex = firstRowIndex; //将修改的行显示在第一行 }
public void CeilingAssyToPackingList(SldWorks swApp, string assyPath, Project objProject, int userId) { swApp.CommandInProgress = true; List <CeilingAccessory> celingAccessories = new List <CeilingAccessory>(); try { //打开模型 ModelDoc2 swModel = swApp.OpenDoc6(assyPath, (int)swDocumentTypes_e.swDocASSEMBLY, (int)swOpenDocOptions_e.swOpenDocOptions_Silent, "", ref errors, ref warnings) as ModelDoc2; if (swModel == null) { MessageBox.Show("模型不存在,请认真检查", "模型不存在"); return; } swModel.ForceRebuild3(true); AssemblyDoc swAssy = swModel as AssemblyDoc; //获取所有零部件集合 var compList = swAssy.GetComponents(false); //遍历集合中的所有零部件对象 foreach (var swComp in compList) { //判断零件是否被压缩,不显示,封套,零件名称不是以sldprt或SLDPRT结尾,(导出发货清单无需判断可见,封套,无需判断钣金,只要没有被压缩就行了) if (!swComp.IsSuppressed() && (swComp.GetPathName().EndsWith(".sldprt") || swComp.GetPathName().EndsWith(".SLDPRT"))) { Component2 swParentComp = swComp.GetParent(); //总装没有父装配体 if (swParentComp == null) { ConfigurationManager swConfigMgr = swModel.ConfigurationManager; Configuration swConfig2 = swConfigMgr.ActiveConfiguration; swParentComp = swConfig2.GetRootComponent3(true); } //判断父装配体是否可视,并且不封套(导出发货清单无需判断可见,封套,无需判断钣金,只要没有被压缩就行了) if (swParentComp.Visible == 1 && !swComp.IsSuppressed()) { //过滤需要的零件,全部转换成大写 if (swComp.GetPathName().Contains("[")) { //截取关键字 string keyWord = swComp.GetPathName(); if (keyWord.Contains(")")) { keyWord = keyWord.Substring(0, keyWord.IndexOf(")") + 1); keyWord = keyWord.Substring(keyWord.IndexOf("[")).ToUpper(); } else if (keyWord.Contains("}")) { keyWord = keyWord.Substring(0, keyWord.IndexOf("}") + 1); keyWord = keyWord.Substring(keyWord.IndexOf("[")).ToUpper(); } else { keyWord = keyWord.Substring(0, keyWord.IndexOf("]") + 1); keyWord = keyWord.Substring(keyWord.IndexOf("[")).ToUpper(); } if (sheetMetaDic.ContainsKey(keyWord)) { sheetMetaDic[keyWord] += 1; } else { sheetMetaDic.Add(keyWord, 1); } } } } } //关闭装配体零件 //swApp.CloseDoc(assyPath); foreach (var item in sheetMetaDic) { //获取关键字,查找对象 string partNo = ""; string length = ""; string width = ""; if (item.Key.Contains("-")) { partNo = item.Key.Substring(1, item.Key.IndexOf("-") - 1); } else { partNo = item.Key.Substring(1, item.Key.IndexOf("]") - 1); } CeilingAccessory objCeilingAccessory = objCeilingAccessoryService.GetCeilingAccessoryByPartNo(partNo); if (objCeilingAccessory == null) { continue; } //给对象赋值 objCeilingAccessory.PartNo = item.Key.Substring(1, item.Key.IndexOf("]") - 1); objCeilingAccessory.Quantity = item.Value; objCeilingAccessory.ProjectId = objProject.ProjectId; objCeilingAccessory.UserId = userId; objCeilingAccessory.Location = objDrawingPlanService.GetDrawingPlanByProjectId(objProject.ProjectId.ToString())[0].Item; if (item.Key.Contains(")")) { width = item.Key.Substring(0, item.Key.IndexOf(")")); width = width.Substring(width.IndexOf("(") + 1); objCeilingAccessory.Width = width; } if (item.Key.Contains("}")) { length = item.Key.Substring(0, item.Key.IndexOf("}")); length = length.Substring(length.IndexOf("{") + 1); objCeilingAccessory.Length = length; } //添加list ceilingAccessories.Add(objCeilingAccessory); } } catch (Exception ex) { throw new Exception(assyPath + "装配体导出发货清单过程发生异常,详细:" + ex.Message); } finally { sheetMetaDic.Clear(); swApp.CloseDoc(assyPath); //关闭,很快 swApp.CommandInProgress = false; //及时关闭外部命令调用,否则影响SolidWorks的使用 } //基于事务ceilingCutLists提交SQLServer if (ceilingAccessories.Count == 0) { return; } try { if (objCeilingAccessoryService.ImportCeilingPackingListByTran(ceilingAccessories)) { ceilingAccessories.Clear(); } } catch (Exception ex) { throw new Exception("Cutlist导入数据库失败" + ex.Message); } }