private void listPackage() { if (this.dgPackage.InvokeRequired) { this.dgPackage.Invoke(new Action(listPackage)); } else { //刷新当前包列表 using (ProxyBE p = new ProxyBE()) { SearchPackageDetailArgs packageArgs = new SearchPackageDetailArgs(); packageArgs.OrderBy = "[BarcodeNo] ASC"; if (this.CurrentOrder != null) { packageArgs.OrderID = this.CurrentOrder.OrderID; } packageArgs.IsDisabled = false; if (this.CurrentPackage != null) { packageArgs.CabinetID = CurrentPackage.CabinetID; } SearchResult sr = p.Client.SearchPackageDetail(CGlobal.SenderUser, packageArgs); this.dgPackage.AutoGenerateColumns = false; this.dgPackage.DataSource = sr.DataSet.Tables[0]; this.dgPackage.Refresh(); } } }
public SearchResult SearchPackageDetail(Sender sender, SearchPackageDetailArgs args) { try { using (ObjectProxy op = new ObjectProxy()) { return(op.SearchPackageDetail(args)); } } catch (Exception ex) { PLogger.LogError(ex); throw ex; } }
private void listDetail() { if (this.dgPackage.InvokeRequired) { this.dgPackage.Invoke(new Action(listDetail)); } else { using (ProxyBE p = new ProxyBE()) { //刷新当前未分包板件列表 SearchPackageDetailArgs unpackageArgs = new SearchPackageDetailArgs(); if (!string.IsNullOrEmpty(this.txtOrderNo.Text.Trim())) { unpackageArgs.OrderNo = this.txtOrderNo.Text.Trim(); } if (!string.IsNullOrEmpty(this.txtCabinetName.Text.Trim())) { unpackageArgs.CabinetName = this.txtCabinetName.Text.Trim(); } if (this.CurrentPackage != null) { unpackageArgs.CabinetID = CurrentPackage.CabinetID; } if (!string.IsNullOrEmpty(this.txtBarcode_S.Text.Trim())) { unpackageArgs.Barcode = this.txtBarcode_S.Text.Trim(); } unpackageArgs.OrderBy = "[BarcodeNo] ASC"; if (this.CurrentOrder != null) { unpackageArgs.OrderID = this.CurrentOrder.OrderID; } unpackageArgs.IsDisabled = false; unpackageArgs.IsPakaged = false; SearchResult srUnPack = p.Client.SearchPackageDetail(CGlobal.SenderUser, unpackageArgs); this.listBarcodes.Items.Clear(); foreach (DataRow row in srUnPack.DataSet.Tables[0].Rows) { string text = string.Format("{0},{1}:{2} * {3} * {4} = 1", row["BarcodeNo"].ToString(), row["ItemName"].ToString(), decimal.Parse(row["MadeLength"].ToString()).ToString("#"), decimal.Parse(row["MadeWidth"].ToString()).ToString("#"), decimal.Parse(row["MadeHeight"].ToString()).ToString("#"), decimal.Parse(row["Qty"].ToString()).ToString("#")); this.listBarcodes.Items.Add(text); } this.gbAll.Text = string.Format("未分包板件 -- 共{0}件", srUnPack.DataSet.Tables[0].Rows.Count); } } }
/// <summary> /// 刷新当前未分包板件列表 /// </summary> private void biObjects() { using (ProxyBE p = new ProxyBE()) { //刷新当前未分包板件列表 SearchPackageDetailArgs unpackageArgs = new SearchPackageDetailArgs(); unpackageArgs.OrderBy = "[CabinetID],[PackageNum],[BarcodeNo] ASC"; if (!string.IsNullOrEmpty(this.txtOrderNo.Text.Trim())) { unpackageArgs.OrderNo = this.txtOrderNo.Text.Trim(); } if (!string.IsNullOrEmpty(this.txtCabinetName.Text.Trim())) { unpackageArgs.CabinetName = this.txtCabinetName.Text.Trim(); } if (!string.IsNullOrEmpty(this.txtBarcode_S.Text.Trim())) { unpackageArgs.Barcode = this.txtBarcode_S.Text.Trim(); } SearchResult srUnPack = p.Client.SearchPackageDetail(CGlobal.SenderUser, unpackageArgs); this.dgPackage.AutoGenerateColumns = false; this.dgPackage.DataSource = srUnPack.DataSet.Tables[0]; this.dgPackage.Refresh(); int unPackagedQty = srUnPack.DataSet.Tables[0].Select("IsPakaged=0").Length; var query = from g in srUnPack.DataSet.Tables[0].AsEnumerable() group g by new { CabinetName = g.Field <string>("CabinetName"), CabinetCode = g.Field <string>("CabinetCode"), } into lists_Package select new { CabinetName = lists_Package.Key.CabinetName, CabinetCode = lists_Package.Key.CabinetCode, }; var lists = query.ToList(); this.gbCurrent.Text = string.Format("产品合计:{2}件,板件合计:{0}件,其中未打包板件:{1}件", srUnPack.DataSet.Tables[0].Rows.Count, unPackagedQty, lists.Count()); } }
private void initTree() { try { TreeNode selected = null; if (this.tvPackage.SelectedNode != null) { selected = this.tvPackage.SelectedNode; } this.tvPackage.Nodes.Clear(); SearchPackageArgs args = new SearchPackageArgs(); if (CurrentOrder != null) { args.OrderID = CurrentOrder.OrderID; } else { return; } if (CurrentPackage != null) { args.CabinetID = CurrentPackage.CabinetID; } if (!string.IsNullOrEmpty(this.txtCabinetName.Text)) { args.CabinetName = this.txtCabinetName.Text; } args.OrderBy = "PackageNum ASC"; using (ProxyBE p = new ProxyBE()) { SearchResult sr = p.Client.SearchPackage(CGlobal.SenderUser, args); DataTable tb_cabinet = sr.DataSet.Tables[0].DefaultView.ToTable(true, "CabinetID"); foreach (DataRow cabinet_row in tb_cabinet.Rows) { Order2Cabinet cabinet = p.Client.GetOrder2Cabinet(CGlobal.SenderUser, new Guid(cabinet_row["CabinetID"].ToString())); if (cabinet == null) { return; } TreeNode rootnode = new TreeNode(); rootnode.Text = string.Format("{0}({1},{2},{3},{4})", cabinet.CabinetName, cabinet.Size, cabinet.Color, cabinet.MaterialCategory, cabinet.MaterialStyle); rootnode.Tag = "C," + cabinet.CabinetID; DataRow[] rows = sr.DataSet.Tables[0].Select("CabinetID='" + cabinet_row["CabinetID"].ToString() + "'"); foreach (DataRow row in rows) { TreeNode tn = new TreeNode(); SearchPackageDetailArgs suborderArgs = new SearchPackageDetailArgs(); suborderArgs.PackageID = new Guid(row["PackageID"].ToString()); SearchResult subSr = p.Client.SearchPackageDetail(CGlobal.SenderUser, suborderArgs); decimal weight = 0; foreach (DataRow rw in subSr.DataSet.Tables[0].Rows) { TreeNode subnode = new TreeNode(); subnode.Text = string.Format("{0},{1}:{2} * {3} * {4}", rw["BarcodeNo"].ToString(), rw["ItemName"].ToString(), decimal.Parse(rw["MadeLength"].ToString()).ToString("#"), decimal.Parse(rw["MadeWidth"].ToString()).ToString("#"), decimal.Parse(rw["MadeHeight"].ToString()).ToString("#")); subnode.Tag = "B," + rw["ItemID"].ToString(); tn.Nodes.Add(subnode); weight += weight = decimal.Parse(rw["MadeHeight"].ToString()) * decimal.Parse(rw["MadeLength"].ToString()) * decimal.Parse(rw["MadeWidth"].ToString()) * 0.000001M * Density; } tn.Text = string.Format("第{0}包,包重:{1}KG,板件数量:{2}块", row["PackageNum"].ToString(), weight.ToString("#0.00"), subSr.Total); tn.Tag = "P," + row["PackageID"].ToString(); if (selected == null && this.CurrentPackage != null) { if (row["PackageID"].ToString() == this.CurrentPackage.PackageID.ToString()) { selected = tn; } } rootnode.Nodes.Add(tn); } if (selected != null && selected.Text != "") { this.tvPackage.SelectedNode = selected; selected.Expand(); } rootnode.Expand(); this.tvPackage.Nodes.Add(rootnode); } } } catch (Exception ex) { throw new Exception("加载数据失败。原因:" + ex.Message); } }
private void ScanBarcode() { if (this.InvokeRequired) { this.Invoke(new dreadbarcode(ScanBarcode), null); } else { if (WorkFlowID == Guid.Empty) { throw new Exception("请在参数设置中设置班次和分拣对应的工序名称。"); } if (WorkShiftID == Guid.Empty) { throw new Exception("请在参数设置中设置班次和分拣对应的工序名称。"); } string ItemBarcode = this.txtBarcode.Text.Trim(); if (string.IsNullOrEmpty(ItemBarcode)) { this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = "【提示】请扫描板件条码"; PlayVoice("请扫描板件条码"); return; } #region 完成当前分包操作 if (ItemBarcode.IndexOf(FinishedBarcode) >= 0 && !string.IsNullOrEmpty(FinishedBarcode)) { try { //打印分包标签 PlayVoice("打印标签"); //PrintDocument(); StartPrint(this.CurrentPackage.PackageID); this.txtBarcode.Text = ""; this.txtBarcode.Focus(); this.CurrentPackage = null; } catch (Exception ex) { this.CurrentPackage = null; throw ex; } return; } #endregion using (ProxyBE p = new ProxyBE()) { OrderDetail subOrder = p.Client.GetOrderDetailByBarcode(CGlobal.SenderUser, ItemBarcode); if (subOrder == null) { this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = string.Format("提示:【{0}】条码无效", ItemBarcode); PlayVoice("条码错误"); return; } Order order = p.Client.GetOrder(CGlobal.SenderUser, subOrder.OrderID); //初始化订单数据:如果当前订单ID与条码的订单ID不一至时则重置订单信息 if (CurrentOrder == null) { this.CurrentOrder = order; this.txtOrderNo.Text = this.CurrentOrder.OrderNo; } //判断当前的板件是否为同一订单板件 else if (subOrder.OrderID != this.CurrentOrder.OrderID) { this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = "【错误】板件订单号不一致"; PlayVoice("订单不一致"); MessageBox.Show("板件订单号不一致"); return; } List <PackageDetail> pdsubOrder = p.Client.GetPackageDetailsByItemID(CGlobal.SenderUser, subOrder.ItemID); pdsubOrder = pdsubOrder.FindAll(li => li.IsPakaged == false); if (pdsubOrder.Count == 0) { this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = string.Format("提示:【{0}】条码重复扫描", ItemBarcode); PlayVoice("重复扫描"); return; } decimal weight = subOrder.MadeHeight * subOrder.MadeLength * subOrder.MadeWidth * 0.000001M * Density; if (this.CurrentPackage != null) { if (this.CurrentPackage.Weight + weight >= MaxWeight) { //打印分包标签 PlayVoice("打印标签"); StartPrint(this.CurrentPackage.PackageID); this.txtBarcode.Text = ""; this.txtBarcode.Focus(); this.CurrentPackage = null; } } Order2Cabinet cabinet = p.Client.GetOrder2Cabinet(CGlobal.SenderUser, subOrder.CabinetID); if (cabinet != null) { //初始化包数据 if (this.CurrentPackage == null) { Mes.Client.Service.BE.Package pack = new Mes.Client.Service.BE.Package(); pack.OrderID = this.CurrentOrder.OrderID; int pageNum = 0; pageNum = p.Client.GetMaxPackageNum(CGlobal.SenderUser, pack.OrderID, subOrder.CabinetID); pack.CabinetID = subOrder.CabinetID; pack.PackageNum = pageNum; pack.PackageID = Guid.NewGuid(); pack.PackageBarcode = string.Format("0{0}{1}", CurrentOrder.Created.ToString("yyMMddHHmmss"), pageNum.ToString("00")); pack.PackageLength = 0; pack.PackageHeight = 0; pack.PackageWidth = 0; pack.ItemsQty = 0; this.CurrentPackage = pack; this.txtCabinetName.Text = cabinet.CabinetName; } else if (CurrentPackage.CabinetID != cabinet.CabinetID) { this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = "【错误】柜体不一致!"; PlayVoice("柜体不一致"); return; } } else { lblMsg.Text = string.Format("提示:【{0}】条码所属柜体数据丢失,请查看订单是否有误!", ItemBarcode); PlayVoice("订单错误"); return; } try { p.Client.ScanBarcode(CGlobal.SenderUser, ItemBarcode, WorkShiftID, WorkFlowID); } catch (Exception ex) { PLogger.LogError(ex); this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = ex.Message; PlayVoice("扫描失败"); return; } this.CurrentPackage.Weight += weight; this.CurrentPackage.ItemsQty += 1; SavePackageArgs saveArgs = new SavePackageArgs(); saveArgs.Package = this.CurrentPackage; PackageDetail packageDetail = pdsubOrder[0]; packageDetail.IsPakaged = true; packageDetail.PakageID = this.CurrentPackage.PackageID; saveArgs.PackageDetail = packageDetail; p.Client.SavePackage(CGlobal.SenderUser, saveArgs); this.CurrentPackage = p.Client.GetPackage(CGlobal.SenderUser, this.CurrentPackage.PackageID); this.gbPackage.Text = string.Format("当前:第{0}包", this.CurrentPackage.PackageNum); //刷新列表 biForm(); this.txtBarcode.Clear(); this.txtBarcode.Focus(); lblMsg.Text = "扫描完成"; PlayVoice("OK"); //检查是否已经全部扫描完成 if (this.listBarcodes.Items.Count == 0) { //打印分包标签 PlayVoice("打印标签"); //PrintDocument(); StartPrint(this.CurrentPackage.PackageID); this.txtBarcode.Text = ""; this.txtBarcode.Focus(); this.CurrentPackage = null; cabinet.CabinetStatus = "F"; SaveOrder2CabinetArgs cabinetArgs = new SaveOrder2CabinetArgs(); cabinetArgs.Order2Cabinet = cabinet; p.Client.SaveOrder2Cabinet(CGlobal.SenderUser, cabinetArgs); SearchPackageDetailArgs p_args = new SearchPackageDetailArgs(); p_args.IsDisabled = false; p_args.OrderID = CurrentOrder.OrderID; p_args.IsPakaged = false; SearchResult p_sr = p.Client.SearchPackageDetail(CGlobal.SenderUser, p_args); if (p_sr.Total == 0) { //Order order = p.Client.GetOrder(CGlobal.SenderUser, CurrentOrder.OrderID); order.Status = "I"; //全部打包完成后,订单状态变成待入库 SaveOrderArgs saveOrderArgs = new SaveOrderArgs(); saveOrderArgs.Order = order; p.Client.SaveOrder(CGlobal.SenderUser, saveOrderArgs); } } //加载树 initTree(); } } }
public void Print(SearchResult sr) { using (ProxyBE p = new ProxyBE()) { #region :100*55的条码 /* * DataSet ds = new DataSet("DataSet1"); * DataTable tb = sr.DataSet.Tables[0].Copy(); * tb.Columns.Add(new DataColumn("Remarks", typeof(string))); * tb.Columns.Add(new DataColumn("PackageDesc", typeof(string))); * tb.Columns.Add(new DataColumn("Qty", typeof(int))); * tb.Columns.Add(new DataColumn("Barcode", typeof(byte[]))); * tb.Columns.Add(new DataColumn("Logo", typeof(byte[]))); * tb.Columns.Add(new DataColumn("Style", typeof(string))); * tb.Columns.Add(new DataColumn("PrintDate", typeof(string))); * tb.Columns.Add(new DataColumn("Color", typeof(string))); * * //重置报表数据列 * foreach (DataRow row in tb.Rows) * { * SearchPackageDetailArgs subArgs = new SearchPackageDetailArgs(); * subArgs.OrderID = (Guid)row["OrderID"]; * subArgs.PackageID = (Guid)row["PackageID"]; * SearchResult subResult = p.Client.SearchPackageDetail(null, subArgs); * * int totalQty = 0; * //string CabinetNum = ""; * string remarks = ""; * string strColor = ""; * int rowscount = 1; * * var query = from g in subResult.DataSet.Tables[0].AsEnumerable() * group g by new { * Size = g.Field<string>("Size"), * PackageNum = g.Field<int>("PackageNum"), * PackageBarcode = g.Field<string>("PackageBarcode"), * MaterialType = g.Field<string>("MaterialType"), * ItemName = g.Field<string>("ItemName"), * MadeLength = g.Field<decimal>("MadeLength"), * MadeWidth = g.Field<decimal>("MadeWidth"), * MadeHeight = g.Field<decimal>("MadeHeight") * } into lists_Package * select new { * ItemName = lists_Package.Key.ItemName, * MaterialType = lists_Package.Key.MaterialType, * Size = lists_Package.Key.Size, * PackageBarcode = lists_Package.Key.PackageBarcode, * PackageNum = lists_Package.Key.PackageNum, * MadeWidth = lists_Package.Key.MadeWidth, * MadeLength = lists_Package.Key.MadeLength, * MadeHeight = lists_Package.Key.MadeHeight, * Qty = lists_Package.Sum(n => n.Field<int>("Qty")) * }; * * if (query.ToList().Count > 0) * { * var lists = query.ToList(); * foreach( var item in lists) * { * if (rowscount > 10) * { * break; * } * totalQty += item.Qty; * if (item.ItemName.Length > 4) * { * remarks += string.Format("{0}:{1}*{2}*{3}={4}\r\n", item.ItemName.Substring(0, 4), item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); * } * else * { * remarks += string.Format("{0}:{1}*{2}*{3}={4}\r\n", item.ItemName, item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); * } * strColor = item.MaterialType; * rowscount++; * }; * } * * string size = row["Size"].ToString(); * row["Qty"] = totalQty; * row["Color"] = strColor; * row["Remarks"] = remarks; * row["Barcode"] = getQRcode(row["PackageBarcode"].ToString()); * row["PackageDesc"] = string.Format("第{0}包共 包", row["PackageNum"]); * row["Logo"] = getLogoFile(); * row["Style"] = "规格:" + size; * row["PrintDate"] = DateTime.Now.ToString("日期:yyyy-MM-dd"); * } * ds.Tables.Add(tb); * Microsoft.Reporting.WinForms.ReportDataSource rptDataSource = new Microsoft.Reporting.WinForms.ReportDataSource(); * rptDataSource.Name = "DataSet1"; * rptDataSource.Value = ds.Tables[0]; * * LocalReport report = new LocalReport(); * report.DataSources.Clear(); * //设置需要打印的报表的文件名称。 * report.ReportEmbeddedResource = "Mes.Package.Report.rptPackage.rdlc"; * report.DataSources.Add(rptDataSource); * //刷新报表中的需要呈现的数据 * report.Refresh(); * PrintStream(report); */ #endregion #region 100*70的条码 DataSet ds = new DataSet("dsPackageLabel"); DataTable tb = sr.DataSet.Tables[0].Copy(); tb.Columns.Add(new DataColumn("Remarks", typeof(string))); tb.Columns.Add(new DataColumn("PackageDesc", typeof(string))); tb.Columns.Add(new DataColumn("Qty", typeof(int))); tb.Columns.Add(new DataColumn("Barcode", typeof(byte[]))); tb.Columns.Add(new DataColumn("Logo", typeof(byte[]))); tb.Columns.Add(new DataColumn("PrintDate", typeof(string))); //重置报表数据列 foreach (DataRow row in tb.Rows) { SearchPackageDetailArgs subArgs = new SearchPackageDetailArgs(); subArgs.OrderID = (Guid)row["OrderID"]; subArgs.PackageID = (Guid)row["PackageID"]; SearchResult subResult = p.Client.SearchPackageDetail(null, subArgs); int totalQty = 0; string remarks = ""; string strColor = ""; int rowscount = 1; var query = from g in subResult.DataSet.Tables[0].AsEnumerable() group g by new { Size = g.Field <string>("Size"), PackageNum = g.Field <int>("PackageNum"), PackageBarcode = g.Field <string>("PackageBarcode"), MaterialType = g.Field <string>("MaterialType"), ItemName = g.Field <string>("ItemName"), MadeLength = g.Field <decimal>("MadeLength"), MadeWidth = g.Field <decimal>("MadeWidth"), MadeHeight = g.Field <decimal>("MadeHeight") } into lists_Package select new { ItemName = lists_Package.Key.ItemName, MaterialType = lists_Package.Key.MaterialType, Size = lists_Package.Key.Size, PackageBarcode = lists_Package.Key.PackageBarcode, PackageNum = lists_Package.Key.PackageNum, MadeWidth = lists_Package.Key.MadeWidth, MadeLength = lists_Package.Key.MadeLength, MadeHeight = lists_Package.Key.MadeHeight, Qty = lists_Package.Sum(n => n.Field <int>("Qty")) }; if (query.ToList().Count > 0) { var lists = query.ToList(); foreach (var item in lists) { if (rowscount > 10) { break; } totalQty += item.Qty; string itemName = item.ItemName; if ("A,B,C,D,E,F".Contains(itemName.Substring(0, 1))) { itemName = itemName.Substring(1); } int index = item.ItemName.LastIndexOf("mm"); if (index >= 0) { itemName = itemName.Substring(index + 2, itemName.Length - (index + 2)); } if (item.ItemName.Length > 4) { remarks += string.Format("{0}:{1}*{2}*{3}={4}\r\n", itemName.Substring(0, 4), item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); } else { remarks += string.Format("{0}:{1}*{2}*{3}={4}\r\n", itemName, item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); } strColor = item.MaterialType; rowscount++; } ; } row["Qty"] = totalQty; row["Remarks"] = remarks; row["Address"] = row["Province"].ToString() + row["City"].ToString() + row["Address"].ToString(); row["Barcode"] = getQRcode(row["PackageBarcode"].ToString()); row["PackageDesc"] = string.Format("第 {0} 包", int.Parse(row["PackageNum"].ToString()).ToString("00")); row["Logo"] = getLogoFile(); row["PrintDate"] = DateTime.Now.ToString("yyyy-MM-dd"); } ds.Tables.Add(tb); ReportDataSource rptDataSource = new ReportDataSource(); rptDataSource.Name = "dsPackageLabel"; rptDataSource.Value = ds.Tables[0]; LocalReport report = new LocalReport(); report.DataSources.Clear(); //设置需要打印的报表的文件名称。 report.ReportEmbeddedResource = "Mes.Package.Report.rptPackageLabel.rdlc"; report.DataSources.Add(rptDataSource); //刷新报表中的需要呈现的数据 report.Refresh(); PrintStream(report); #endregion } }
/// <summary> /// 补打标签 /// </summary> /// <param name="sr"></param> public void DocumentPrint(SearchResult sr) { using (ProxyBE p = new ProxyBE()) { #region 70*200mm的条码 DataSet ds = new DataSet("tbPackageDataTable"); DataTable tb = new DataTable(); tb.Columns.Add(new DataColumn("OrderNo", typeof(string))); tb.Columns.Add(new DataColumn("OutOrderNo", typeof(string))); tb.Columns.Add(new DataColumn("PurchaseNo", typeof(string))); tb.Columns.Add(new DataColumn("CustomerName", typeof(string))); tb.Columns.Add(new DataColumn("Address", typeof(string))); tb.Columns.Add(new DataColumn("LinkMan", typeof(string))); tb.Columns.Add(new DataColumn("Mobile", typeof(string))); //tb.Columns.Add(new DataColumn("ItemName", typeof(string))); tb.Columns.Add(new DataColumn("CabinetName", typeof(string))); tb.Columns.Add(new DataColumn("MaterialStyle", typeof(string))); tb.Columns.Add(new DataColumn("Size", typeof(string))); tb.Columns.Add(new DataColumn("Color", typeof(string))); tb.Columns.Add(new DataColumn("PackageNum", typeof(string))); tb.Columns.Add(new DataColumn("TotalPackage", typeof(string))); tb.Columns.Add(new DataColumn("PackageBarcode", typeof(string))); tb.Columns.Add(new DataColumn("ItemName_1", typeof(string))); tb.Columns.Add(new DataColumn("ItemName_2", typeof(string))); tb.Columns.Add(new DataColumn("ItemName_3", typeof(string))); tb.Columns.Add(new DataColumn("Barcode", typeof(byte[]))); tb.Columns.Add(new DataColumn("Logo", typeof(byte[]))); tb.Columns.Add(new DataColumn("PrintDate", typeof(string))); tb.Columns.Add(new DataColumn("PackageDesc", typeof(string))); tb.Columns.Add(new DataColumn("ItemsQty", typeof(Int32))); //重置报表数据列 foreach (DataRow row in sr.DataSet.Tables[0].Rows) { SearchPackageDetailArgs subArgs = new SearchPackageDetailArgs(); subArgs.OrderID = (Guid)row["OrderID"]; subArgs.PackageID = (Guid)row["PackageID"]; //包装明细 SearchResult subResult = p.Client.SearchPackageDetail(CGlobal.SenderUser, subArgs); var query = from g in subResult.DataSet.Tables[0].AsEnumerable() group g by new { PackageNum = g.Field <int>("PackageNum"), PackageBarcode = g.Field <string>("PackageBarcode"), ItemName = g.Field <string>("ItemName"), MadeLength = g.Field <decimal>("MadeLength"), MadeWidth = g.Field <decimal>("MadeWidth"), MadeHeight = g.Field <decimal>("MadeHeight") } into lists_Package select new { ItemName = lists_Package.Key.ItemName, PackageBarcode = lists_Package.Key.PackageBarcode, PackageNum = lists_Package.Key.PackageNum, MadeWidth = lists_Package.Key.MadeWidth, MadeLength = lists_Package.Key.MadeLength, MadeHeight = lists_Package.Key.MadeHeight, Qty = lists_Package.Sum(n => n.Field <int>("Qty")) }; var lists = query.ToList(); int rows = lists.Count / 3 + (lists.Count % 3 > 0 ? 1 : 0); int totalQty = subResult.Total; for (int i = 0; i < rows; i++) { DataRow newRow = tb.NewRow(); newRow["OrderNo"] = row["OrderNo"]; newRow["OutOrderNo"] = row["OutOrderNo"]; newRow["PurchaseNo"] = row["PurchaseNo"]; newRow["CustomerName"] = row["CustomerName"]; newRow["Address"] = row["Address"]; newRow["LinkMan"] = row["LinkMan"]; newRow["Mobile"] = row["Mobile"]; newRow["CabinetName"] = row["CabinetName"]; newRow["Size"] = row["Size"]; newRow["Color"] = row["Color"]; newRow["MaterialStyle"] = row["MaterialStyle"]; newRow["PackageNum"] = row["PackageNum"]; newRow["TotalPackage"] = "";// row["TotalPackage"].ToString(); newRow["PackageBarcode"] = row["PackageBarcode"]; newRow["Address"] = row["Province"].ToString() + row["City"].ToString() + row["Address"].ToString(); newRow["Barcode"] = getQRcode(row["PackageBarcode"].ToString()); newRow["PackageDesc"] = string.Format("第 {0} 包", int.Parse(row["PackageNum"].ToString()).ToString("00")); newRow["Logo"] = getLogoFile(); newRow["PrintDate"] = DateTime.Now.ToString("yyyy年MM月dd日"); for (int rowindex = 1; rowindex <= 3; rowindex++) { var item = lists[i * 3 + rowindex - 1]; string remarks = ""; string itemName = item.ItemName; if ("A,B,C,D,E,F".Contains(itemName.Substring(0, 1))) { itemName = itemName.Substring(1); } int index = item.ItemName.LastIndexOf("mm"); if (index >= 0) { itemName = itemName.Substring(index + 2, itemName.Length - (index + 2)); } if (item.ItemName.Length > 5) { remarks = string.Format("{0}:{1}*{2}*{3}={4}", itemName.Substring(0, 5), item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); } else { remarks = string.Format("{0}:{1}*{2}*{3}={4}", itemName, item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); } newRow["ItemName_" + rowindex] = remarks; if (i * 3 + rowindex - 1 == lists.Count - 1) { break; //最后一条数据 } } newRow["ItemsQty"] = totalQty; tb.Rows.Add(newRow); } for (int i = rows; i < 13; i++) { DataRow newRow = tb.NewRow(); newRow["OrderNo"] = row["OrderNo"]; newRow["OutOrderNo"] = row["OutOrderNo"]; newRow["PurchaseNo"] = row["PurchaseNo"]; newRow["CustomerName"] = row["CustomerName"]; newRow["Address"] = row["Address"]; newRow["LinkMan"] = row["LinkMan"]; newRow["Mobile"] = row["Mobile"]; newRow["CabinetName"] = row["CabinetName"]; newRow["Size"] = row["Size"]; newRow["Color"] = row["Color"]; newRow["MaterialStyle"] = row["MaterialStyle"]; newRow["PackageNum"] = row["PackageNum"]; newRow["TotalPackage"] = ""; newRow["PackageBarcode"] = row["PackageBarcode"]; newRow["Address"] = row["Province"].ToString() + row["City"].ToString() + row["Address"].ToString(); newRow["Barcode"] = getQRcode(row["PackageBarcode"].ToString()); newRow["PackageDesc"] = string.Format("第 {0} 包", int.Parse(row["PackageNum"].ToString()).ToString("00")); newRow["Logo"] = getLogoFile(); newRow["PrintDate"] = DateTime.Now.ToString("yyyy年MM月dd日"); newRow["ItemName_1"] = ""; newRow["ItemName_2"] = ""; newRow["ItemName_3"] = ""; newRow["ItemsQty"] = totalQty; tb.Rows.Add(newRow); } } ds.Tables.Add(tb); ReportDataSource rptDataSource = new ReportDataSource(); rptDataSource.Name = "tbPackageDataTable"; rptDataSource.Value = ds.Tables[0]; LocalReport report = new LocalReport(); report.DataSources.Clear(); //设置需要打印的报表的文件名称。 report.ReportEmbeddedResource = "Mes.Package.Report.Report1.rdlc"; report.DataSources.Add(rptDataSource); //刷新报表中的需要呈现的数据 report.Refresh(); PrintStream(report); #endregion } }
/// <summary> /// 打印预览 /// </summary> /// <param name="sourceData"></param> /// <param name="LogoFile"></param> /// <returns></returns> public DataSet GetItemLabelDataSource(DataTable sourceData, string LogoFile) { DataSet ds = new DataSet("tbPackageDataTable"); using (ProxyBE p = new ProxyBE()) { #region 70*200的条码 DataTable tb = new DataTable(); tb.Columns.Add(new DataColumn("OrderNo", typeof(string))); tb.Columns.Add(new DataColumn("OutOrderNo", typeof(string))); tb.Columns.Add(new DataColumn("PurchaseNo", typeof(string))); tb.Columns.Add(new DataColumn("CustomerName", typeof(string))); tb.Columns.Add(new DataColumn("Address", typeof(string))); tb.Columns.Add(new DataColumn("LinkMan", typeof(string))); tb.Columns.Add(new DataColumn("Mobile", typeof(string))); //tb.Columns.Add(new DataColumn("ItemName", typeof(string))); tb.Columns.Add(new DataColumn("CabinetName", typeof(string))); tb.Columns.Add(new DataColumn("MaterialStyle", typeof(string))); tb.Columns.Add(new DataColumn("Size", typeof(string))); tb.Columns.Add(new DataColumn("Color", typeof(string))); tb.Columns.Add(new DataColumn("PackageNum", typeof(string))); tb.Columns.Add(new DataColumn("TotalPackage", typeof(string))); tb.Columns.Add(new DataColumn("PackageBarcode", typeof(string))); tb.Columns.Add(new DataColumn("ItemName_1", typeof(string))); tb.Columns.Add(new DataColumn("ItemName_2", typeof(string))); tb.Columns.Add(new DataColumn("ItemName_3", typeof(string))); tb.Columns.Add(new DataColumn("Barcode", typeof(byte[]))); tb.Columns.Add(new DataColumn("Logo", typeof(byte[]))); tb.Columns.Add(new DataColumn("PrintDate", typeof(string))); tb.Columns.Add(new DataColumn("PackageDesc", typeof(string))); tb.Columns.Add(new DataColumn("ItemsQty", typeof(Int32))); //重置报表数据列 foreach (DataRow row in sourceData.Rows) { SearchPackageDetailArgs subArgs = new SearchPackageDetailArgs(); subArgs.OrderID = (Guid)row["OrderID"]; subArgs.PackageID = (Guid)row["PackageID"]; //包装明细 SearchResult subResult = p.Client.SearchPackageDetail(CGlobal.SenderUser, subArgs); var query = from g in subResult.DataSet.Tables[0].AsEnumerable() group g by new { PackageNum = g.Field <int>("PackageNum"), PackageBarcode = g.Field <string>("PackageBarcode"), ItemName = g.Field <string>("ItemName"), MadeLength = g.Field <decimal>("MadeLength"), MadeWidth = g.Field <decimal>("MadeWidth"), MadeHeight = g.Field <decimal>("MadeHeight") } into lists_Package select new { ItemName = lists_Package.Key.ItemName, PackageBarcode = lists_Package.Key.PackageBarcode, PackageNum = lists_Package.Key.PackageNum, MadeWidth = lists_Package.Key.MadeWidth, MadeLength = lists_Package.Key.MadeLength, MadeHeight = lists_Package.Key.MadeHeight, Qty = lists_Package.Sum(n => n.Field <int>("Qty")) }; var lists = query.ToList(); int rows = lists.Count / 3 + (lists.Count % 3 > 0 ? 1 : 0);//如果list.count为5行,则rows为2 int totalQty = lists.Sum(li => li.Qty); //生产行数据 for (int i = 0; i < rows; i++) { DataRow newRow = tb.NewRow(); newRow["OrderNo"] = row["OrderNo"]; newRow["OutOrderNo"] = row["OutOrderNo"]; newRow["PurchaseNo"] = row["PurchaseNo"]; newRow["CustomerName"] = row["CustomerName"]; newRow["Address"] = row["Address"]; newRow["LinkMan"] = row["LinkMan"]; newRow["Mobile"] = row["Mobile"]; newRow["CabinetName"] = row["CabinetName"]; newRow["Size"] = row["Size"]; newRow["Color"] = row["Color"]; newRow["MaterialStyle"] = row["MaterialStyle"]; newRow["PackageNum"] = row["PackageNum"]; newRow["TotalPackage"] = "";// row["TotalPackage"].ToString(); newRow["PackageBarcode"] = row["PackageBarcode"]; newRow["Address"] = row["Province"].ToString() + row["City"].ToString() + row["Address"].ToString(); newRow["Barcode"] = CommonView.getQRcode(row["PackageBarcode"].ToString()); newRow["PackageDesc"] = string.Format("第 {0} 包", int.Parse(row["PackageNum"].ToString()).ToString("00")); newRow["Logo"] = CommonView.getLogoFile(LogoFile); newRow["PrintDate"] = DateTime.Now.ToString("yyyy年MM月dd日"); //处理列数据 for (int rowindex = 1; rowindex <= 3; rowindex++) { var item = lists[i * 3 + rowindex - 1]; string remarks = ""; string itemName = item.ItemName; if ("A,B,C,D,E,F".Contains(itemName.Substring(0, 1))) { itemName = itemName.Substring(1); } int index = item.ItemName.LastIndexOf("mm"); if (index >= 0) { itemName = itemName.Substring(index + 2, itemName.Length - (index + 2)); } if (item.ItemName.Length > 5) { remarks = string.Format("{0}:{1}*{2}*{3}={4}", itemName.Substring(0, 5), item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); } else { remarks = string.Format("{0}:{1}*{2}*{3}={4}", itemName, item.MadeLength.ToString("#"), item.MadeWidth.ToString("#"), item.MadeHeight.ToString("#"), item.Qty); } newRow["ItemName_" + rowindex] = remarks; if (i * 3 + rowindex - 1 == lists.Count - 1) { break; //最后一条数据 } } newRow["ItemsQty"] = totalQty;// row["ItemsQty"]; tb.Rows.Add(newRow); } //生成右侧空数据,默认生成13行数据 for (int i = rows; i < 13; i++) { DataRow newRow = tb.NewRow(); newRow["OrderNo"] = row["OrderNo"]; newRow["OutOrderNo"] = row["OutOrderNo"]; newRow["PurchaseNo"] = row["PurchaseNo"]; newRow["CustomerName"] = row["CustomerName"]; newRow["Address"] = row["Address"]; newRow["LinkMan"] = row["LinkMan"]; newRow["Mobile"] = row["Mobile"]; newRow["CabinetName"] = row["CabinetName"]; newRow["Size"] = row["Size"]; newRow["Color"] = row["Color"]; newRow["MaterialStyle"] = row["MaterialStyle"]; newRow["PackageNum"] = row["PackageNum"]; newRow["TotalPackage"] = ""; newRow["PackageBarcode"] = row["PackageBarcode"]; newRow["Address"] = row["Province"].ToString() + row["City"].ToString() + row["Address"].ToString(); newRow["Barcode"] = CommonView.getQRcode(row["PackageBarcode"].ToString()); newRow["PackageDesc"] = string.Format("第 {0} 包", int.Parse(row["PackageNum"].ToString()).ToString("00")); newRow["Logo"] = CommonView.getLogoFile(LogoFile); newRow["PrintDate"] = DateTime.Now.ToString("yyyy年MM月dd日"); newRow["ItemName_1"] = ""; newRow["ItemName_2"] = ""; newRow["ItemName_3"] = ""; newRow["ItemsQty"] = totalQty; tb.Rows.Add(newRow); } } ds.Tables.Add(tb); #endregion } //string str = JSONHelper.Dataset2Json2(ds); return(ds); }