| @ -0,0 +1,109 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
| <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||||
| <PropertyGroup> | |||||
| <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||||
| <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||||
| <ProjectGuid>{C5696A7D-0BEB-474A-A478-FD0543E72ABF}</ProjectGuid> | |||||
| <OutputType>Library</OutputType> | |||||
| <AppDesignerFolder>Properties</AppDesignerFolder> | |||||
| <RootNamespace>ByProductWeight</RootNamespace> | |||||
| <AssemblyName>ByProductWeight</AssemblyName> | |||||
| <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> | |||||
| <FileAlignment>512</FileAlignment> | |||||
| </PropertyGroup> | |||||
| <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||||
| <DebugSymbols>true</DebugSymbols> | |||||
| <DebugType>full</DebugType> | |||||
| <Optimize>false</Optimize> | |||||
| <OutputPath>bin\Debug\</OutputPath> | |||||
| <DefineConstants>DEBUG;TRACE</DefineConstants> | |||||
| <ErrorReport>prompt</ErrorReport> | |||||
| <WarningLevel>4</WarningLevel> | |||||
| </PropertyGroup> | |||||
| <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||||
| <DebugType>pdbonly</DebugType> | |||||
| <Optimize>true</Optimize> | |||||
| <OutputPath>bin\Release\</OutputPath> | |||||
| <DefineConstants>TRACE</DefineConstants> | |||||
| <ErrorReport>prompt</ErrorReport> | |||||
| <WarningLevel>4</WarningLevel> | |||||
| </PropertyGroup> | |||||
| <ItemGroup> | |||||
| <Reference Include="Forks.JsonRpc.Client, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7254430f49d10aae, processorArchitecture=MSIL"> | |||||
| <SpecificVersion>False</SpecificVersion> | |||||
| <HintPath>..\..\..\tsref\Debug\Forks.JsonRpc.Client.dll</HintPath> | |||||
| </Reference> | |||||
| <Reference Include="Newtonsoft.Json, Version=4.0.3.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> | |||||
| <SpecificVersion>False</SpecificVersion> | |||||
| <HintPath>..\..\..\tsref\Debug\Newtonsoft.Json.dll</HintPath> | |||||
| </Reference> | |||||
| <Reference Include="System" /> | |||||
| <Reference Include="System.Core" /> | |||||
| <Reference Include="System.Drawing" /> | |||||
| <Reference Include="System.Windows.Forms" /> | |||||
| <Reference Include="System.Xml.Linq" /> | |||||
| <Reference Include="System.Data.DataSetExtensions" /> | |||||
| <Reference Include="Microsoft.CSharp" /> | |||||
| <Reference Include="System.Data" /> | |||||
| <Reference Include="System.Net.Http" /> | |||||
| <Reference Include="System.Xml" /> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <Compile Include="ByProductWeightContext.cs" /> | |||||
| <Compile Include="ByProductWeightForm.cs"> | |||||
| <SubType>Form</SubType> | |||||
| </Compile> | |||||
| <Compile Include="ByProductWeightForm.Designer.cs"> | |||||
| <DependentUpon>ByProductWeightForm.cs</DependentUpon> | |||||
| </Compile> | |||||
| <Compile Include="ByProductWeightGoodsSet.cs" /> | |||||
| <Compile Include="ByProductWeightGoodsSetForm.cs"> | |||||
| <SubType>Form</SubType> | |||||
| </Compile> | |||||
| <Compile Include="ByProductWeightGoodsSetForm.Designer.cs"> | |||||
| <DependentUpon>ByProductWeightGoodsSetForm.cs</DependentUpon> | |||||
| </Compile> | |||||
| <Compile Include="Properties\AssemblyInfo.cs" /> | |||||
| <Compile Include="Rpc\ByProductWeightRecordRpc.cs" /> | |||||
| <Compile Include="Rpc\Dto\ByProductWeightRecord.cs" /> | |||||
| <Compile Include="WeightSettingFrom.cs"> | |||||
| <SubType>Form</SubType> | |||||
| </Compile> | |||||
| <Compile Include="WeightSettingFrom.Designer.cs"> | |||||
| <DependentUpon>WeightSettingFrom.cs</DependentUpon> | |||||
| </Compile> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <Content Include="副产品称重.txt" /> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <EmbeddedResource Include="ByProductWeightForm.resx"> | |||||
| <DependentUpon>ByProductWeightForm.cs</DependentUpon> | |||||
| </EmbeddedResource> | |||||
| <EmbeddedResource Include="ByProductWeightGoodsSetForm.resx"> | |||||
| <DependentUpon>ByProductWeightGoodsSetForm.cs</DependentUpon> | |||||
| </EmbeddedResource> | |||||
| <EmbeddedResource Include="WeightSettingFrom.resx"> | |||||
| <DependentUpon>WeightSettingFrom.cs</DependentUpon> | |||||
| </EmbeddedResource> | |||||
| </ItemGroup> | |||||
| <ItemGroup> | |||||
| <ProjectReference Include="..\BO\BO.csproj"> | |||||
| <Project>{8968f14a-c7c7-4751-96ce-b114fbfd65ef}</Project> | |||||
| <Name>BO</Name> | |||||
| </ProjectReference> | |||||
| <ProjectReference Include="..\BWP.WinFormControl\BWP.WinFormControl.csproj"> | |||||
| <Project>{a782b23e-be6d-4f51-b5cb-5cd259ba97cc}</Project> | |||||
| <Name>BWP.WinFormControl</Name> | |||||
| </ProjectReference> | |||||
| </ItemGroup> | |||||
| <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||||
| <!-- To modify your build process, add your task inside one of the targets below and uncomment it. | |||||
| Other similar extension points exist, see Microsoft.Common.targets. | |||||
| <Target Name="BeforeBuild"> | |||||
| </Target> | |||||
| <Target Name="AfterBuild"> | |||||
| </Target> | |||||
| --> | |||||
| </Project> | |||||
| @ -0,0 +1,82 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.IO; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using System.Windows.Forms; | |||||
| using BO.Utils; | |||||
| namespace ByProductWeight | |||||
| { | |||||
| public static class ByProductWeightContext | |||||
| { | |||||
| private static string loginConfigPath = Application.StartupPath + "\\ByProductWeightConfig.xml"; | |||||
| private static ByProductWeightConfig _config; | |||||
| public static ByProductWeightConfig Config | |||||
| { | |||||
| get | |||||
| { | |||||
| if (_config == null) | |||||
| _config = CreateConfig(); | |||||
| return _config; | |||||
| } | |||||
| } | |||||
| static ByProductWeightConfig CreateConfig() | |||||
| { | |||||
| var config = new ByProductWeightConfig(); | |||||
| if (!File.Exists(loginConfigPath)) | |||||
| { | |||||
| XmlUtil.SerializerObjToFile(config, loginConfigPath); | |||||
| } | |||||
| else | |||||
| config = XmlUtil.DeserializeFromFile<ByProductWeightConfig>(loginConfigPath); | |||||
| return config; | |||||
| } | |||||
| public static void Save() | |||||
| { | |||||
| if (string.IsNullOrEmpty(_config.WeightSet)) | |||||
| throw new Exception("请选择称型号"); | |||||
| if (string.IsNullOrEmpty(_config.ComSet)) | |||||
| throw new Exception("请选择Com口"); | |||||
| if (_config.RateSet == null) | |||||
| throw new Exception("请选择波特率"); | |||||
| if (_config.BitSet == null) | |||||
| throw new Exception("请选择数据位"); | |||||
| if (string.IsNullOrEmpty(_config.Format)) | |||||
| throw new Exception("请填写显示格式"); | |||||
| try | |||||
| { | |||||
| string.Format("{0:" + _config.Format + "}", 1); | |||||
| } | |||||
| catch (Exception ex) | |||||
| { | |||||
| throw new Exception("显示格式填写错误\n" + ex.Message); | |||||
| } | |||||
| XmlUtil.SerializerObjToFile(_config, loginConfigPath); | |||||
| } | |||||
| } | |||||
| public class ByProductWeightConfig | |||||
| { | |||||
| public string WeightSet { get; set; } | |||||
| public string ComSet { get; set; } | |||||
| public int? RateSet { get; set; } | |||||
| public int? BitSet { get; set; } | |||||
| public string Format { get; set; } | |||||
| public decimal? Discont { get; set; } | |||||
| public int WeightType { get; set; } | |||||
| public decimal MinWeight { get; set; } | |||||
| public decimal MaxWeight { get; set; } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,478 @@ | |||||
| namespace ByProductWeight | |||||
| { | |||||
| partial class ByProductWeightForm | |||||
| { | |||||
| /// <summary> | |||||
| /// Required designer variable. | |||||
| /// </summary> | |||||
| private System.ComponentModel.IContainer components = null; | |||||
| /// <summary> | |||||
| /// Clean up any resources being used. | |||||
| /// </summary> | |||||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||||
| protected override void Dispose(bool disposing) | |||||
| { | |||||
| if (disposing && (components != null)) | |||||
| { | |||||
| components.Dispose(); | |||||
| } | |||||
| base.Dispose(disposing); | |||||
| } | |||||
| #region Windows Form Designer generated code | |||||
| /// <summary> | |||||
| /// Required method for Designer support - do not modify | |||||
| /// the contents of this method with the code editor. | |||||
| /// </summary> | |||||
| private void InitializeComponent() | |||||
| { | |||||
| System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
| System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
| System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); | |||||
| this.label1 = new System.Windows.Forms.Label(); | |||||
| this.label2 = new System.Windows.Forms.Label(); | |||||
| this.label3 = new System.Windows.Forms.Label(); | |||||
| this.lblGoodsName = new System.Windows.Forms.Label(); | |||||
| this.lblWeight = new System.Windows.Forms.Label(); | |||||
| this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); | |||||
| this.lblNumber = new System.Windows.Forms.Label(); | |||||
| this.毛重 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.净重 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.产品 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.条码 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.序号 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.flpGoods = new System.Windows.Forms.FlowLayoutPanel(); | |||||
| this.flpClass = new System.Windows.Forms.FlowLayoutPanel(); | |||||
| this.splitContainer2 = new System.Windows.Forms.SplitContainer(); | |||||
| this.btnWeightSet = new System.Windows.Forms.Button(); | |||||
| this.lblChengZhong = new System.Windows.Forms.Label(); | |||||
| this.btnGoodsSet = new System.Windows.Forms.Button(); | |||||
| this.enableWeight = new System.Windows.Forms.CheckBox(); | |||||
| this.panel2 = new System.Windows.Forms.Panel(); | |||||
| this.splitContainer1 = new System.Windows.Forms.SplitContainer(); | |||||
| this.panel1 = new System.Windows.Forms.Panel(); | |||||
| this.uDataGridView1 = new BWP.WinFormControl.UDataGridView(); | |||||
| this.dataGridViewTextBoxColumn1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.dataGridViewTextBoxColumn2 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.dataGridViewTextBoxColumn3 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.dataGridViewTextBoxColumn4 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.dataGridViewTextBoxColumn5 = new System.Windows.Forms.DataGridViewTextBoxColumn(); | |||||
| this.tableLayoutPanel1.SuspendLayout(); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); | |||||
| this.splitContainer2.Panel1.SuspendLayout(); | |||||
| this.splitContainer2.Panel2.SuspendLayout(); | |||||
| this.splitContainer2.SuspendLayout(); | |||||
| this.panel2.SuspendLayout(); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); | |||||
| this.splitContainer1.Panel1.SuspendLayout(); | |||||
| this.splitContainer1.Panel2.SuspendLayout(); | |||||
| this.splitContainer1.SuspendLayout(); | |||||
| this.panel1.SuspendLayout(); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.uDataGridView1)).BeginInit(); | |||||
| this.SuspendLayout(); | |||||
| // | |||||
| // label1 | |||||
| // | |||||
| this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.label1.Location = new System.Drawing.Point(4, 1); | |||||
| this.label1.Name = "label1"; | |||||
| this.label1.Size = new System.Drawing.Size(274, 50); | |||||
| this.label1.TabIndex = 0; | |||||
| this.label1.Text = "产品"; | |||||
| this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
| // | |||||
| // label2 | |||||
| // | |||||
| this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.label2.Location = new System.Drawing.Point(285, 1); | |||||
| this.label2.Name = "label2"; | |||||
| this.label2.Size = new System.Drawing.Size(139, 50); | |||||
| this.label2.TabIndex = 0; | |||||
| this.label2.Text = "数量"; | |||||
| this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
| // | |||||
| // label3 | |||||
| // | |||||
| this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.label3.Location = new System.Drawing.Point(431, 1); | |||||
| this.label3.Name = "label3"; | |||||
| this.label3.Size = new System.Drawing.Size(83, 50); | |||||
| this.label3.TabIndex = 0; | |||||
| this.label3.Text = "重量"; | |||||
| this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
| // | |||||
| // lblGoodsName | |||||
| // | |||||
| this.lblGoodsName.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.lblGoodsName.Location = new System.Drawing.Point(4, 52); | |||||
| this.lblGoodsName.Name = "lblGoodsName"; | |||||
| this.lblGoodsName.Size = new System.Drawing.Size(274, 45); | |||||
| this.lblGoodsName.TabIndex = 0; | |||||
| this.lblGoodsName.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
| // | |||||
| // lblWeight | |||||
| // | |||||
| this.lblWeight.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.lblWeight.Location = new System.Drawing.Point(431, 52); | |||||
| this.lblWeight.Name = "lblWeight"; | |||||
| this.lblWeight.Size = new System.Drawing.Size(83, 45); | |||||
| this.lblWeight.TabIndex = 0; | |||||
| this.lblWeight.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
| // | |||||
| // tableLayoutPanel1 | |||||
| // | |||||
| this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.tableLayoutPanel1.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; | |||||
| this.tableLayoutPanel1.ColumnCount = 3; | |||||
| this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 65.90909F)); | |||||
| this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34.09091F)); | |||||
| this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 88F)); | |||||
| this.tableLayoutPanel1.Controls.Add(this.label1, 0, 0); | |||||
| this.tableLayoutPanel1.Controls.Add(this.label2, 1, 0); | |||||
| this.tableLayoutPanel1.Controls.Add(this.label3, 2, 0); | |||||
| this.tableLayoutPanel1.Controls.Add(this.lblGoodsName, 0, 1); | |||||
| this.tableLayoutPanel1.Controls.Add(this.lblNumber, 1, 1); | |||||
| this.tableLayoutPanel1.Controls.Add(this.lblWeight, 2, 1); | |||||
| this.tableLayoutPanel1.Location = new System.Drawing.Point(3, 4); | |||||
| this.tableLayoutPanel1.Name = "tableLayoutPanel1"; | |||||
| this.tableLayoutPanel1.RowCount = 2; | |||||
| this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 53.57143F)); | |||||
| this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 46.42857F)); | |||||
| this.tableLayoutPanel1.Size = new System.Drawing.Size(518, 98); | |||||
| this.tableLayoutPanel1.TabIndex = 0; | |||||
| // | |||||
| // lblNumber | |||||
| // | |||||
| this.lblNumber.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.lblNumber.Location = new System.Drawing.Point(285, 52); | |||||
| this.lblNumber.Name = "lblNumber"; | |||||
| this.lblNumber.Size = new System.Drawing.Size(139, 45); | |||||
| this.lblNumber.TabIndex = 0; | |||||
| this.lblNumber.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |||||
| // | |||||
| // 毛重 | |||||
| // | |||||
| this.毛重.DataPropertyName = "MaoWeight"; | |||||
| this.毛重.HeaderText = "毛重"; | |||||
| this.毛重.Name = "毛重"; | |||||
| this.毛重.ReadOnly = true; | |||||
| this.毛重.Width = 80; | |||||
| // | |||||
| // 净重 | |||||
| // | |||||
| this.净重.DataPropertyName = "JingWeight"; | |||||
| this.净重.HeaderText = "净重"; | |||||
| this.净重.Name = "净重"; | |||||
| this.净重.ReadOnly = true; | |||||
| this.净重.Width = 80; | |||||
| // | |||||
| // 产品 | |||||
| // | |||||
| this.产品.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; | |||||
| this.产品.DataPropertyName = "Goods_Name"; | |||||
| this.产品.HeaderText = "产品"; | |||||
| this.产品.MinimumWidth = 100; | |||||
| this.产品.Name = "产品"; | |||||
| this.产品.ReadOnly = true; | |||||
| // | |||||
| // 条码 | |||||
| // | |||||
| this.条码.DataPropertyName = "BarCode"; | |||||
| this.条码.HeaderText = "条码"; | |||||
| this.条码.Name = "条码"; | |||||
| this.条码.ReadOnly = true; | |||||
| // | |||||
| // 序号 | |||||
| // | |||||
| this.序号.DataPropertyName = "ID"; | |||||
| this.序号.HeaderText = "序号"; | |||||
| this.序号.Name = "序号"; | |||||
| this.序号.ReadOnly = true; | |||||
| this.序号.Width = 80; | |||||
| // | |||||
| // flpGoods | |||||
| // | |||||
| this.flpGoods.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.flpGoods.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |||||
| this.flpGoods.Location = new System.Drawing.Point(4, 87); | |||||
| this.flpGoods.Name = "flpGoods"; | |||||
| this.flpGoods.Size = new System.Drawing.Size(494, 395); | |||||
| this.flpGoods.TabIndex = 1; | |||||
| // | |||||
| // flpClass | |||||
| // | |||||
| this.flpClass.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.flpClass.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |||||
| this.flpClass.Location = new System.Drawing.Point(4, 4); | |||||
| this.flpClass.Name = "flpClass"; | |||||
| this.flpClass.Size = new System.Drawing.Size(494, 76); | |||||
| this.flpClass.TabIndex = 0; | |||||
| // | |||||
| // splitContainer2 | |||||
| // | |||||
| this.splitContainer2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |||||
| this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
| this.splitContainer2.Location = new System.Drawing.Point(0, 0); | |||||
| this.splitContainer2.Name = "splitContainer2"; | |||||
| // | |||||
| // splitContainer2.Panel1 | |||||
| // | |||||
| this.splitContainer2.Panel1.Controls.Add(this.flpGoods); | |||||
| this.splitContainer2.Panel1.Controls.Add(this.flpClass); | |||||
| // | |||||
| // splitContainer2.Panel2 | |||||
| // | |||||
| this.splitContainer2.Panel2.Controls.Add(this.uDataGridView1); | |||||
| this.splitContainer2.Panel2.Controls.Add(this.tableLayoutPanel1); | |||||
| this.splitContainer2.Size = new System.Drawing.Size(1041, 487); | |||||
| this.splitContainer2.SplitterDistance = 515; | |||||
| this.splitContainer2.SplitterWidth = 1; | |||||
| this.splitContainer2.TabIndex = 0; | |||||
| // | |||||
| // btnWeightSet | |||||
| // | |||||
| this.btnWeightSet.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
| this.btnWeightSet.Location = new System.Drawing.Point(249, 53); | |||||
| this.btnWeightSet.Name = "btnWeightSet"; | |||||
| this.btnWeightSet.Size = new System.Drawing.Size(111, 33); | |||||
| this.btnWeightSet.TabIndex = 0; | |||||
| this.btnWeightSet.Text = "称设置"; | |||||
| this.btnWeightSet.UseVisualStyleBackColor = true; | |||||
| this.btnWeightSet.Click += new System.EventHandler(this.btnWeightSet_Click); | |||||
| // | |||||
| // lblChengZhong | |||||
| // | |||||
| this.lblChengZhong.AutoSize = true; | |||||
| this.lblChengZhong.Font = new System.Drawing.Font("宋体", 30F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
| this.lblChengZhong.ForeColor = System.Drawing.Color.Red; | |||||
| this.lblChengZhong.Location = new System.Drawing.Point(15, 18); | |||||
| this.lblChengZhong.Name = "lblChengZhong"; | |||||
| this.lblChengZhong.Size = new System.Drawing.Size(97, 40); | |||||
| this.lblChengZhong.TabIndex = 0; | |||||
| this.lblChengZhong.Text = "0.00"; | |||||
| // | |||||
| // btnGoodsSet | |||||
| // | |||||
| this.btnGoodsSet.Font = new System.Drawing.Font("宋体", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
| this.btnGoodsSet.Location = new System.Drawing.Point(427, 23); | |||||
| this.btnGoodsSet.Name = "btnGoodsSet"; | |||||
| this.btnGoodsSet.Size = new System.Drawing.Size(114, 63); | |||||
| this.btnGoodsSet.TabIndex = 34; | |||||
| this.btnGoodsSet.Text = "产品设置"; | |||||
| this.btnGoodsSet.UseVisualStyleBackColor = true; | |||||
| this.btnGoodsSet.Click += new System.EventHandler(this.btnGoodsSet_Click); | |||||
| // | |||||
| // enableWeight | |||||
| // | |||||
| this.enableWeight.AutoCheck = false; | |||||
| this.enableWeight.AutoSize = true; | |||||
| this.enableWeight.Font = new System.Drawing.Font("宋体", 18F); | |||||
| this.enableWeight.Location = new System.Drawing.Point(249, 8); | |||||
| this.enableWeight.Name = "enableWeight"; | |||||
| this.enableWeight.Size = new System.Drawing.Size(125, 28); | |||||
| this.enableWeight.TabIndex = 33; | |||||
| this.enableWeight.Text = "启用称重"; | |||||
| this.enableWeight.UseVisualStyleBackColor = true; | |||||
| this.enableWeight.Click += new System.EventHandler(this.enableWeight_Click); | |||||
| // | |||||
| // panel2 | |||||
| // | |||||
| this.panel2.BackColor = System.Drawing.Color.Black; | |||||
| this.panel2.Controls.Add(this.lblChengZhong); | |||||
| this.panel2.Location = new System.Drawing.Point(3, 8); | |||||
| this.panel2.Name = "panel2"; | |||||
| this.panel2.Size = new System.Drawing.Size(237, 78); | |||||
| this.panel2.TabIndex = 32; | |||||
| // | |||||
| // splitContainer1 | |||||
| // | |||||
| this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |||||
| this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
| this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; | |||||
| this.splitContainer1.Location = new System.Drawing.Point(0, 0); | |||||
| this.splitContainer1.Name = "splitContainer1"; | |||||
| this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; | |||||
| // | |||||
| // splitContainer1.Panel1 | |||||
| // | |||||
| this.splitContainer1.Panel1.Controls.Add(this.panel1); | |||||
| // | |||||
| // splitContainer1.Panel2 | |||||
| // | |||||
| this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); | |||||
| this.splitContainer1.Size = new System.Drawing.Size(1041, 587); | |||||
| this.splitContainer1.SplitterDistance = 99; | |||||
| this.splitContainer1.SplitterWidth = 1; | |||||
| this.splitContainer1.TabIndex = 1; | |||||
| // | |||||
| // panel1 | |||||
| // | |||||
| this.panel1.Controls.Add(this.btnGoodsSet); | |||||
| this.panel1.Controls.Add(this.enableWeight); | |||||
| this.panel1.Controls.Add(this.panel2); | |||||
| this.panel1.Controls.Add(this.btnWeightSet); | |||||
| this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
| this.panel1.Location = new System.Drawing.Point(0, 0); | |||||
| this.panel1.Name = "panel1"; | |||||
| this.panel1.Size = new System.Drawing.Size(1039, 97); | |||||
| this.panel1.TabIndex = 2; | |||||
| // | |||||
| // uDataGridView1 | |||||
| // | |||||
| this.uDataGridView1.AllowUserToAddRows = false; | |||||
| this.uDataGridView1.AllowUserToDeleteRows = false; | |||||
| this.uDataGridView1.AllowUserToResizeColumns = false; | |||||
| this.uDataGridView1.AllowUserToResizeRows = false; | |||||
| dataGridViewCellStyle7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235))))); | |||||
| this.uDataGridView1.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle7; | |||||
| this.uDataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | |||||
| | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.uDataGridView1.BackgroundColor = System.Drawing.Color.White; | |||||
| dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; | |||||
| dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Control; | |||||
| dataGridViewCellStyle8.Font = new System.Drawing.Font("宋体", 12F); | |||||
| dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.WindowText; | |||||
| dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; | |||||
| dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; | |||||
| dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True; | |||||
| this.uDataGridView1.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle8; | |||||
| this.uDataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; | |||||
| this.uDataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { | |||||
| this.dataGridViewTextBoxColumn1, | |||||
| this.dataGridViewTextBoxColumn2, | |||||
| this.dataGridViewTextBoxColumn3, | |||||
| this.dataGridViewTextBoxColumn4, | |||||
| this.dataGridViewTextBoxColumn5}); | |||||
| this.uDataGridView1.Location = new System.Drawing.Point(3, 108); | |||||
| this.uDataGridView1.MultiSelect = false; | |||||
| this.uDataGridView1.Name = "uDataGridView1"; | |||||
| this.uDataGridView1.ReadOnly = true; | |||||
| this.uDataGridView1.RowHeadersVisible = false; | |||||
| dataGridViewCellStyle9.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
| dataGridViewCellStyle9.SelectionBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(66)))), ((int)(((byte)(163)))), ((int)(((byte)(218))))); | |||||
| this.uDataGridView1.RowsDefaultCellStyle = dataGridViewCellStyle9; | |||||
| this.uDataGridView1.RowTemplate.Height = 23; | |||||
| this.uDataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; | |||||
| this.uDataGridView1.Size = new System.Drawing.Size(518, 374); | |||||
| this.uDataGridView1.TabIndex = 2; | |||||
| // | |||||
| // dataGridViewTextBoxColumn1 | |||||
| // | |||||
| this.dataGridViewTextBoxColumn1.DataPropertyName = "ID"; | |||||
| this.dataGridViewTextBoxColumn1.HeaderText = "序号"; | |||||
| this.dataGridViewTextBoxColumn1.Name = "dataGridViewTextBoxColumn1"; | |||||
| this.dataGridViewTextBoxColumn1.ReadOnly = true; | |||||
| this.dataGridViewTextBoxColumn1.Width = 80; | |||||
| // | |||||
| // dataGridViewTextBoxColumn2 | |||||
| // | |||||
| this.dataGridViewTextBoxColumn2.DataPropertyName = "BarCode"; | |||||
| this.dataGridViewTextBoxColumn2.HeaderText = "条码"; | |||||
| this.dataGridViewTextBoxColumn2.Name = "dataGridViewTextBoxColumn2"; | |||||
| this.dataGridViewTextBoxColumn2.ReadOnly = true; | |||||
| // | |||||
| // dataGridViewTextBoxColumn3 | |||||
| // | |||||
| this.dataGridViewTextBoxColumn3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; | |||||
| this.dataGridViewTextBoxColumn3.DataPropertyName = "Goods_Name"; | |||||
| this.dataGridViewTextBoxColumn3.HeaderText = "产品"; | |||||
| this.dataGridViewTextBoxColumn3.MinimumWidth = 100; | |||||
| this.dataGridViewTextBoxColumn3.Name = "dataGridViewTextBoxColumn3"; | |||||
| this.dataGridViewTextBoxColumn3.ReadOnly = true; | |||||
| // | |||||
| // dataGridViewTextBoxColumn4 | |||||
| // | |||||
| this.dataGridViewTextBoxColumn4.DataPropertyName = "JingWeight"; | |||||
| this.dataGridViewTextBoxColumn4.HeaderText = "净重"; | |||||
| this.dataGridViewTextBoxColumn4.Name = "dataGridViewTextBoxColumn4"; | |||||
| this.dataGridViewTextBoxColumn4.ReadOnly = true; | |||||
| this.dataGridViewTextBoxColumn4.Width = 80; | |||||
| // | |||||
| // dataGridViewTextBoxColumn5 | |||||
| // | |||||
| this.dataGridViewTextBoxColumn5.DataPropertyName = "MaoWeight"; | |||||
| this.dataGridViewTextBoxColumn5.HeaderText = "毛重"; | |||||
| this.dataGridViewTextBoxColumn5.Name = "dataGridViewTextBoxColumn5"; | |||||
| this.dataGridViewTextBoxColumn5.ReadOnly = true; | |||||
| this.dataGridViewTextBoxColumn5.Width = 80; | |||||
| // | |||||
| // ByProductWeightForm | |||||
| // | |||||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
| this.ClientSize = new System.Drawing.Size(1041, 587); | |||||
| this.Controls.Add(this.splitContainer1); | |||||
| this.Name = "ByProductWeightForm"; | |||||
| this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
| this.Text = "副产品称重"; | |||||
| this.WindowState = System.Windows.Forms.FormWindowState.Maximized; | |||||
| this.Load += new System.EventHandler(this.ByProductWeightForm_Load); | |||||
| this.tableLayoutPanel1.ResumeLayout(false); | |||||
| this.splitContainer2.Panel1.ResumeLayout(false); | |||||
| this.splitContainer2.Panel2.ResumeLayout(false); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); | |||||
| this.splitContainer2.ResumeLayout(false); | |||||
| this.panel2.ResumeLayout(false); | |||||
| this.panel2.PerformLayout(); | |||||
| this.splitContainer1.Panel1.ResumeLayout(false); | |||||
| this.splitContainer1.Panel2.ResumeLayout(false); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); | |||||
| this.splitContainer1.ResumeLayout(false); | |||||
| this.panel1.ResumeLayout(false); | |||||
| this.panel1.PerformLayout(); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.uDataGridView1)).EndInit(); | |||||
| this.ResumeLayout(false); | |||||
| } | |||||
| #endregion | |||||
| private System.Windows.Forms.Label label1; | |||||
| private System.Windows.Forms.Label label2; | |||||
| private System.Windows.Forms.Label label3; | |||||
| private System.Windows.Forms.Label lblGoodsName; | |||||
| private System.Windows.Forms.Label lblWeight; | |||||
| private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; | |||||
| private System.Windows.Forms.Label lblNumber; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn 毛重; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn 净重; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn 产品; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn 条码; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn 序号; | |||||
| private System.Windows.Forms.FlowLayoutPanel flpGoods; | |||||
| private System.Windows.Forms.FlowLayoutPanel flpClass; | |||||
| private System.Windows.Forms.SplitContainer splitContainer2; | |||||
| private System.Windows.Forms.Button btnWeightSet; | |||||
| private System.Windows.Forms.Label lblChengZhong; | |||||
| private System.Windows.Forms.Button btnGoodsSet; | |||||
| private System.Windows.Forms.CheckBox enableWeight; | |||||
| private System.Windows.Forms.Panel panel2; | |||||
| private System.Windows.Forms.SplitContainer splitContainer1; | |||||
| private System.Windows.Forms.Panel panel1; | |||||
| private BWP.WinFormControl.UDataGridView uDataGridView1; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn1; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn2; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn3; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn4; | |||||
| private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn5; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,406 @@ | |||||
| using System; | |||||
| using System.Collections.Concurrent; | |||||
| using System.Collections.Generic; | |||||
| using System.ComponentModel; | |||||
| using System.Data; | |||||
| using System.Drawing; | |||||
| using System.IO.Ports; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading; | |||||
| using System.Threading.Tasks; | |||||
| using System.Windows.Forms; | |||||
| using BO.Utils; | |||||
| using BWP.WinFormControl.WeightDataFormat; | |||||
| using ByProductWeight.Rpc; | |||||
| using ByProductWeight.Rpc.Dto; | |||||
| namespace ByProductWeight | |||||
| { | |||||
| public partial class ByProductWeightForm : Form,IAfterLogin | |||||
| { | |||||
| public string RoleName { get { return "副产品计数"; } } | |||||
| public Form Generate() | |||||
| { | |||||
| return this; | |||||
| } | |||||
| #region weightNeed | |||||
| SerialPort weightPort; | |||||
| private IDataFormat _dataFormat; | |||||
| private Thread _inQueryThread; | |||||
| private bool _mainProcessIsRun; | |||||
| readonly StringBuilder _dataStrBuilder = new StringBuilder(); | |||||
| #endregion | |||||
| List<ByProductWeightGoodsSet> mSetList ; | |||||
| BindingList<ByProductWeightRecord> mWeightRecords; | |||||
| public ByProductWeightForm() | |||||
| { | |||||
| InitializeComponent(); | |||||
| uDataGridView1.AutoGenerateColumns = false; | |||||
| weightPort = new SerialPort(); | |||||
| this.FormClosing += delegate | |||||
| { | |||||
| if (_inQueryThread != null && _inQueryThread.IsAlive) | |||||
| DisableWeight(); | |||||
| // if (syncWork != null && syncWork.IsAlive) | |||||
| // syncWork.Abort(); | |||||
| // if (syncToServer != null && syncToServer.IsAlive) | |||||
| // syncToServer.Abort(); | |||||
| }; | |||||
| } | |||||
| #region weightNeed | |||||
| void OpenSerialPort() | |||||
| { | |||||
| if (enableWeight.Checked) | |||||
| return; | |||||
| if (ByProductWeightContext.Config.RateSet == null) | |||||
| throw new Exception("请先配置称相关信息"); | |||||
| weightPort.PortName = ByProductWeightContext.Config.ComSet; | |||||
| weightPort.BaudRate = ByProductWeightContext.Config.RateSet.Value; | |||||
| weightPort.DataBits = ByProductWeightContext.Config.BitSet.Value; | |||||
| weightPort.ReadBufferSize = 4096 * 100; | |||||
| if (!string.IsNullOrEmpty(ByProductWeightContext.Config.Format)) | |||||
| format = "{0:{format}}".Replace("{format}", ByProductWeightContext.Config.Format); | |||||
| switch (ByProductWeightContext.Config.WeightSet) | |||||
| { | |||||
| case "IND560": | |||||
| _dataFormat = new IND560DataFormat(); | |||||
| break; | |||||
| case "Xk3124": | |||||
| _dataFormat = new Xk3124DataFormat(); | |||||
| break; | |||||
| case "Xk3190A9": | |||||
| _dataFormat = new Xk3190A9DataFormat(); | |||||
| break; | |||||
| default: | |||||
| _dataFormat = new Xk3190D10DataFormat(); | |||||
| break; | |||||
| } | |||||
| if (!weightPort.IsOpen) | |||||
| { | |||||
| try | |||||
| { | |||||
| weightPort.Open(); | |||||
| } | |||||
| catch (InvalidOperationException) | |||||
| { | |||||
| MessageBox.Show(@"指定的端口已打开"); | |||||
| } | |||||
| catch (UnauthorizedAccessException) | |||||
| { | |||||
| MessageBox.Show(@"对端口的访问被拒绝"); | |||||
| } | |||||
| } | |||||
| } | |||||
| void ReadData() | |||||
| { | |||||
| _inQueryThread = new Thread(InQuery); | |||||
| _inQueryThread.Start(); | |||||
| } | |||||
| string format = "{0:0.00}"; | |||||
| private void InQuery() | |||||
| { | |||||
| while (_mainProcessIsRun) | |||||
| { | |||||
| int availableCount = weightPort.BytesToRead; | |||||
| if (availableCount == 0) | |||||
| { | |||||
| Thread.Sleep(1); | |||||
| } | |||||
| char[] buffer = new char[availableCount]; | |||||
| if (!weightPort.IsOpen) | |||||
| { | |||||
| continue; | |||||
| } | |||||
| weightPort.Read(buffer, 0, availableCount); | |||||
| foreach (var c in buffer) | |||||
| { | |||||
| if (c == _dataFormat.Beginchar) | |||||
| { | |||||
| _dataStrBuilder.Clear(); | |||||
| _dataStrBuilder.Append(c); | |||||
| } | |||||
| else if (c == _dataFormat.Endchar && _dataStrBuilder.Length == _dataFormat.DataLength - 1) | |||||
| { | |||||
| _dataStrBuilder.Append(c); | |||||
| bool isStatic; | |||||
| string str; | |||||
| if (_dataFormat.ParseAscii(_dataStrBuilder.ToString(), out str, out isStatic)) | |||||
| { | |||||
| if (ByProductWeightContext.Config.WeightType == 0) | |||||
| { | |||||
| if (string.IsNullOrEmpty(str)) | |||||
| str = "0"; | |||||
| this.Invoke(new Action(delegate () | |||||
| { | |||||
| lblChengZhong.Text = string.Format(format, decimal.Parse(str)); | |||||
| if (str != "0") | |||||
| { | |||||
| //doInsertUnSubmit("", decimal.Parse(lblChengZhong.Text)); | |||||
| //todo 这里不需要逻辑 点击存货的时候判断是否在误差范围内 | |||||
| } | |||||
| })); | |||||
| } | |||||
| else | |||||
| { | |||||
| decimal num = 0; | |||||
| if (decimal.TryParse(str, out num)) | |||||
| { | |||||
| this.Invoke(new Action(delegate () | |||||
| { | |||||
| lblChengZhong.Text = string.Format(format, num); | |||||
| })); | |||||
| // LocalGradeAndWeightBL.SaveWeightData(num); | |||||
| WeighAvgControl.Add(num, isStatic); | |||||
| } | |||||
| if (WeighAvgControl.TryGetValue(out num)) | |||||
| { | |||||
| this.Invoke(new Action(delegate () | |||||
| { | |||||
| //lblChengZhong.Text = string.Format(format, num); | |||||
| if (str != "0") | |||||
| { | |||||
| //doInsertUnSubmit("", decimal.Parse(string.Format(format, num))); | |||||
| //todo 这里不需要逻辑 点击存货的时候判断是否在误差范围内 | |||||
| } | |||||
| })); | |||||
| } | |||||
| } | |||||
| } | |||||
| _dataStrBuilder.Clear(); | |||||
| } | |||||
| else if (_dataStrBuilder.Length != 0) | |||||
| { | |||||
| _dataStrBuilder.Append(c); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| private class WeighAvgControl | |||||
| { | |||||
| public static bool TryGetValue(out decimal result) | |||||
| { | |||||
| List<Tuple<decimal, bool>> list; | |||||
| if (mWeighList.TryDequeue(out list)) | |||||
| { | |||||
| var r = list.Where(x => x.Item2).Select(x => x.Item1).GroupBy(x => x); | |||||
| var firstOrDefault = r.OrderByDescending(x => x.Count()).FirstOrDefault(); | |||||
| if (firstOrDefault != null) | |||||
| { | |||||
| result = firstOrDefault.Key; | |||||
| return true; | |||||
| } | |||||
| result = 0; | |||||
| return false; | |||||
| } | |||||
| result = 0; | |||||
| return false; | |||||
| } | |||||
| static ConcurrentQueue<List<Tuple<decimal, bool>>> mWeighList = new ConcurrentQueue<List<Tuple<decimal, bool>>>(); | |||||
| static List<Tuple<decimal, bool>> _list = new List<Tuple<decimal, bool>>(); | |||||
| public static void Add(decimal value, bool isStatic) | |||||
| { | |||||
| if (value >= ByProductWeightContext.Config.MinWeight && value <= ByProductWeightContext.Config.MaxWeight) | |||||
| { | |||||
| _list.Add(new Tuple<decimal, bool>(value, isStatic)); | |||||
| } | |||||
| else | |||||
| { | |||||
| if (_list.Count > 0) | |||||
| { | |||||
| mWeighList.Enqueue(_list); | |||||
| _list = new List<Tuple<decimal, bool>>(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| void DisableWeight() | |||||
| { | |||||
| _mainProcessIsRun = false; | |||||
| lblChengZhong.Text = string.Format(format, 0); | |||||
| format = "{0:0.00}"; | |||||
| Thread.Sleep(10); | |||||
| if (_inQueryThread.IsAlive) | |||||
| { | |||||
| _inQueryThread.Abort(); | |||||
| } | |||||
| if (weightPort.IsOpen) | |||||
| weightPort.Close(); | |||||
| } | |||||
| public void enableWeight_Click(object sender, EventArgs e) | |||||
| { | |||||
| if (!enableWeight.Checked) | |||||
| { | |||||
| OpenSerialPort(); | |||||
| _mainProcessIsRun = true; | |||||
| ReadData(); | |||||
| } | |||||
| else | |||||
| { | |||||
| DisableWeight(); | |||||
| } | |||||
| enableWeight.CheckState = enableWeight.Checked ? CheckState.Unchecked : CheckState.Checked; | |||||
| } | |||||
| #endregion | |||||
| private void ByProductWeightForm_Load(object sender, EventArgs e) | |||||
| { | |||||
| mWeightRecords = new BindingList<ByProductWeightRecord>();//以后可能取数据库中没做完的,比如做着做着突然断点 | |||||
| RefreshUi(); | |||||
| InitControl(); | |||||
| } | |||||
| private void InitControl() | |||||
| { | |||||
| mSetList = | |||||
| XmlUtil.DeserializeFromFile<List<ByProductWeightGoodsSet>>( | |||||
| ByProductWeightGoodsSetForm.ByProductWeightGoodsSetFileName).Where(x => x.IsSelected).ToList(); | |||||
| if (mSetList.Count < 1) | |||||
| { | |||||
| return; | |||||
| } | |||||
| flpClass.Controls.Clear(); | |||||
| foreach (IGrouping<string, ByProductWeightGoodsSet> grouping in mSetList.GroupBy(x => x.Name)) | |||||
| { | |||||
| var btnClass = CreateClassButton(grouping.Key); | |||||
| flpClass.Controls.Add(btnClass); | |||||
| } | |||||
| } | |||||
| private Button CreateClassButton(string text) | |||||
| { | |||||
| var btn = new Button(); | |||||
| btn.Text = text; | |||||
| btn.Click += Btn_Click; | |||||
| btn.Width = 100; | |||||
| btn.Height = 60; | |||||
| return btn; | |||||
| } | |||||
| private void Btn_Click(object sender, EventArgs e) | |||||
| { | |||||
| var text = (sender as Button).Text; | |||||
| foreach (Button cbutton in flpClass.Controls) | |||||
| { | |||||
| if (cbutton.Text == text) | |||||
| { | |||||
| cbutton.BackColor = Color.Aqua; | |||||
| } | |||||
| else | |||||
| { | |||||
| cbutton.BackColor = SystemColors.Control; | |||||
| } | |||||
| } | |||||
| flpGoods.Controls.Clear(); | |||||
| foreach (ByProductWeightGoodsSet set in mSetList.Where(x => x.Name == text)) | |||||
| { | |||||
| var btnGoods = CreateGoodsButton(set); | |||||
| flpGoods.Controls.Add(btnGoods); | |||||
| } | |||||
| } | |||||
| private Button CreateGoodsButton(ByProductWeightGoodsSet set) | |||||
| { | |||||
| var btn = new Button(); | |||||
| btn.Text = set.Goods_Name; | |||||
| btn.Tag = set; | |||||
| btn.Click += BtnGoods_Click; | |||||
| btn.Width = 100; | |||||
| btn.Height = 60; | |||||
| return btn; | |||||
| } | |||||
| private void BtnGoods_Click(object sender, EventArgs e) | |||||
| { | |||||
| var btn = sender as Button; | |||||
| var set = btn.Tag as ByProductWeightGoodsSet; | |||||
| //todo 打印条码 | |||||
| var weight = 100m; | |||||
| //添加记录 | |||||
| var record = GetRecordBySet(set, weight); | |||||
| var id = ByProductWeightRecordRpc.Insert(record); | |||||
| record.ID = id; | |||||
| mWeightRecords.Add(record); | |||||
| RefreshUi(); | |||||
| } | |||||
| private ByProductWeightRecord GetRecordBySet(ByProductWeightGoodsSet set, decimal maoWeight) | |||||
| { | |||||
| var record = new ByProductWeightRecord(); | |||||
| record.Goods_ID = set.Goods_ID; | |||||
| record.BarCode = "";//todo 条码规则 | |||||
| record.Goods_Name = set.Goods_Name; | |||||
| record.Goods_Spec = set.Goods_Spec; | |||||
| record.BiaoShi = "";//todo 标识 | |||||
| record.MaoWeight = maoWeight; | |||||
| record.PiWeight = 10; | |||||
| // record.JingWeight = record.MaoWeight - record.PiWeight; | |||||
| if (set.Goods_MainUnitRatio > 0) | |||||
| { | |||||
| record.JingWeight = set.Goods_MainUnitRatio; | |||||
| } | |||||
| else | |||||
| { | |||||
| record.JingWeight = record.MaoWeight - record.PiWeight; | |||||
| } | |||||
| record.CardBarCode = "车条码"; //todo | |||||
| return record; | |||||
| } | |||||
| void RefreshUi() | |||||
| { | |||||
| if (mWeightRecords.Count < 1) | |||||
| { | |||||
| return; | |||||
| } | |||||
| lblGoodsName.Text = mWeightRecords.First().Goods_Name; | |||||
| lblNumber.Text = mWeightRecords.Count.ToString(); | |||||
| lblWeight.Text = mWeightRecords.Sum(x => x.JingWeight).ToString(); | |||||
| uDataGridView1.DataSource = mWeightRecords; | |||||
| } | |||||
| private void btnWeightSet_Click(object sender, EventArgs e) | |||||
| { | |||||
| var form = new WeightSettingFrom(); | |||||
| form.ShowDialog(); | |||||
| } | |||||
| private void btnGoodsSet_Click(object sender, EventArgs e) | |||||
| { | |||||
| var f = new ByProductWeightGoodsSetForm(); | |||||
| if (f.ShowDialog() == DialogResult.OK) | |||||
| { | |||||
| InitControl(); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,150 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <root> | |||||
| <!-- | |||||
| Microsoft ResX Schema | |||||
| Version 2.0 | |||||
| The primary goals of this format is to allow a simple XML format | |||||
| that is mostly human readable. The generation and parsing of the | |||||
| various data types are done through the TypeConverter classes | |||||
| associated with the data types. | |||||
| Example: | |||||
| ... ado.net/XML headers & schema ... | |||||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
| <resheader name="version">2.0</resheader> | |||||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
| </data> | |||||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
| <comment>This is a comment</comment> | |||||
| </data> | |||||
| There are any number of "resheader" rows that contain simple | |||||
| name/value pairs. | |||||
| Each data row contains a name, and value. The row also contains a | |||||
| type or mimetype. Type corresponds to a .NET class that support | |||||
| text/value conversion through the TypeConverter architecture. | |||||
| Classes that don't support this are serialized and stored with the | |||||
| mimetype set. | |||||
| The mimetype is used for serialized objects, and tells the | |||||
| ResXResourceReader how to depersist the object. This is currently not | |||||
| extensible. For a given mimetype the value must be set accordingly: | |||||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
| that the ResXResourceWriter will generate, however the reader can | |||||
| read any of the formats listed below. | |||||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
| value : The object must be serialized into a byte array | |||||
| : using a System.ComponentModel.TypeConverter | |||||
| : and then encoded with base64 encoding. | |||||
| --> | |||||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||||
| <xsd:complexType> | |||||
| <xsd:choice maxOccurs="unbounded"> | |||||
| <xsd:element name="metadata"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
| <xsd:attribute name="type" type="xsd:string" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||||
| <xsd:attribute ref="xml:space" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="assembly"> | |||||
| <xsd:complexType> | |||||
| <xsd:attribute name="alias" type="xsd:string" /> | |||||
| <xsd:attribute name="name" type="xsd:string" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="data"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
| <xsd:attribute ref="xml:space" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="resheader"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:choice> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:schema> | |||||
| <resheader name="resmimetype"> | |||||
| <value>text/microsoft-resx</value> | |||||
| </resheader> | |||||
| <resheader name="version"> | |||||
| <value>2.0</value> | |||||
| </resheader> | |||||
| <resheader name="reader"> | |||||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| <resheader name="writer"> | |||||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| <metadata name="毛重.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="净重.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="产品.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="条码.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="序号.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="dataGridViewTextBoxColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="dataGridViewTextBoxColumn2.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="dataGridViewTextBoxColumn3.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="dataGridViewTextBoxColumn4.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| <metadata name="dataGridViewTextBoxColumn5.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> | |||||
| <value>True</value> | |||||
| </metadata> | |||||
| </root> | |||||
| @ -0,0 +1,14 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using BO.BO.Dtos; | |||||
| namespace ByProductWeight | |||||
| { | |||||
| public class ByProductWeightGoodsSet : ClientGoodsSetDto | |||||
| { | |||||
| public bool IsSelected { get; set; } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,118 @@ | |||||
| namespace ByProductWeight | |||||
| { | |||||
| partial class ByProductWeightGoodsSetForm | |||||
| { | |||||
| /// <summary> | |||||
| /// Required designer variable. | |||||
| /// </summary> | |||||
| private System.ComponentModel.IContainer components = null; | |||||
| /// <summary> | |||||
| /// Clean up any resources being used. | |||||
| /// </summary> | |||||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||||
| protected override void Dispose(bool disposing) | |||||
| { | |||||
| if (disposing && (components != null)) | |||||
| { | |||||
| components.Dispose(); | |||||
| } | |||||
| base.Dispose(disposing); | |||||
| } | |||||
| #region Windows Form Designer generated code | |||||
| /// <summary> | |||||
| /// Required method for Designer support - do not modify | |||||
| /// the contents of this method with the code editor. | |||||
| /// </summary> | |||||
| private void InitializeComponent() | |||||
| { | |||||
| this.flpGoods = new System.Windows.Forms.FlowLayoutPanel(); | |||||
| this.btnSave = new System.Windows.Forms.Button(); | |||||
| this.flpClass = new System.Windows.Forms.FlowLayoutPanel(); | |||||
| this.splitContainer1 = new System.Windows.Forms.SplitContainer(); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); | |||||
| this.splitContainer1.Panel1.SuspendLayout(); | |||||
| this.splitContainer1.Panel2.SuspendLayout(); | |||||
| this.splitContainer1.SuspendLayout(); | |||||
| this.SuspendLayout(); | |||||
| // | |||||
| // flpGoods | |||||
| // | |||||
| this.flpGoods.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
| this.flpGoods.Location = new System.Drawing.Point(0, 0); | |||||
| this.flpGoods.Name = "flpGoods"; | |||||
| this.flpGoods.Size = new System.Drawing.Size(1143, 525); | |||||
| this.flpGoods.TabIndex = 0; | |||||
| // | |||||
| // btnSave | |||||
| // | |||||
| this.btnSave.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.btnSave.Font = new System.Drawing.Font("宋体", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); | |||||
| this.btnSave.Location = new System.Drawing.Point(1001, 3); | |||||
| this.btnSave.Name = "btnSave"; | |||||
| this.btnSave.Size = new System.Drawing.Size(114, 64); | |||||
| this.btnSave.TabIndex = 1; | |||||
| this.btnSave.Text = "保存"; | |||||
| this.btnSave.UseVisualStyleBackColor = true; | |||||
| this.btnSave.Click += new System.EventHandler(this.btnSave_Click); | |||||
| // | |||||
| // flpClass | |||||
| // | |||||
| this.flpClass.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | |||||
| | System.Windows.Forms.AnchorStyles.Right))); | |||||
| this.flpClass.Location = new System.Drawing.Point(3, 3); | |||||
| this.flpClass.Name = "flpClass"; | |||||
| this.flpClass.Size = new System.Drawing.Size(991, 64); | |||||
| this.flpClass.TabIndex = 0; | |||||
| // | |||||
| // splitContainer1 | |||||
| // | |||||
| this.splitContainer1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |||||
| this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; | |||||
| this.splitContainer1.Location = new System.Drawing.Point(0, 0); | |||||
| this.splitContainer1.Name = "splitContainer1"; | |||||
| this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; | |||||
| // | |||||
| // splitContainer1.Panel1 | |||||
| // | |||||
| this.splitContainer1.Panel1.Controls.Add(this.btnSave); | |||||
| this.splitContainer1.Panel1.Controls.Add(this.flpClass); | |||||
| // | |||||
| // splitContainer1.Panel2 | |||||
| // | |||||
| this.splitContainer1.Panel2.Controls.Add(this.flpGoods); | |||||
| this.splitContainer1.Size = new System.Drawing.Size(1145, 600); | |||||
| this.splitContainer1.SplitterDistance = 72; | |||||
| this.splitContainer1.SplitterWidth = 1; | |||||
| this.splitContainer1.TabIndex = 1; | |||||
| // | |||||
| // ByProductWeightGoodsSetForm | |||||
| // | |||||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
| this.ClientSize = new System.Drawing.Size(1145, 600); | |||||
| this.Controls.Add(this.splitContainer1); | |||||
| this.MaximizeBox = false; | |||||
| this.MinimizeBox = false; | |||||
| this.Name = "ByProductWeightGoodsSetForm"; | |||||
| this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
| this.Text = "产品配置"; | |||||
| this.Load += new System.EventHandler(this.ByProductWeightGoodsSetForm_Load); | |||||
| this.splitContainer1.Panel1.ResumeLayout(false); | |||||
| this.splitContainer1.Panel2.ResumeLayout(false); | |||||
| ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); | |||||
| this.splitContainer1.ResumeLayout(false); | |||||
| this.ResumeLayout(false); | |||||
| } | |||||
| #endregion | |||||
| private System.Windows.Forms.FlowLayoutPanel flpGoods; | |||||
| private System.Windows.Forms.Button btnSave; | |||||
| private System.Windows.Forms.FlowLayoutPanel flpClass; | |||||
| private System.Windows.Forms.SplitContainer splitContainer1; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,142 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.ComponentModel; | |||||
| using System.Data; | |||||
| using System.Drawing; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using System.Windows.Forms; | |||||
| using BO.BO.Dtos; | |||||
| using BO.Utils; | |||||
| using BO.Utils.BillRpc; | |||||
| namespace ByProductWeight | |||||
| { | |||||
| public partial class ByProductWeightGoodsSetForm : Form | |||||
| { | |||||
| public readonly static string ByProductWeightGoodsSetFileName = "ByProductWeightGoodsSet.xml"; | |||||
| private List<ByProductWeightGoodsSet> mLocaList; | |||||
| private List<ByProductWeightGoodsSet> mWillDeleteList; | |||||
| public ByProductWeightGoodsSetForm() | |||||
| { | |||||
| InitializeComponent(); | |||||
| } | |||||
| private void ByProductWeightGoodsSetForm_Load(object sender, EventArgs e) | |||||
| { | |||||
| mLocaList = XmlUtil.DeserializeFromFile<List<ByProductWeightGoodsSet>>(ByProductWeightGoodsSetFileName); | |||||
| var fromRpclist = ClientGoodsSetRpc.GetList(); | |||||
| foreach (ClientGoodsSetDto rpcSet in fromRpclist) | |||||
| { | |||||
| var set = new ByProductWeightGoodsSet(); | |||||
| set.Name = rpcSet.Name; | |||||
| set.Goods_ID = rpcSet.Goods_ID; | |||||
| set.Goods_Name = rpcSet.Goods_Name; | |||||
| set.Goods_Code = rpcSet.Goods_Code; | |||||
| set.Goods_Spec = rpcSet.Goods_Spec; | |||||
| var fd = mLocaList.FirstOrDefault(x => x.Goods_ID == set.Goods_ID); | |||||
| if (fd != null) | |||||
| { | |||||
| fd.Name = set.Name; | |||||
| fd.Goods_Name = set.Goods_Name; | |||||
| fd.Goods_Code = set.Goods_Code; | |||||
| fd.Goods_Spec = set.Goods_Spec; | |||||
| } | |||||
| else | |||||
| { | |||||
| mLocaList.Add(set); | |||||
| } | |||||
| } | |||||
| InitControl(); | |||||
| } | |||||
| private void InitControl() | |||||
| { | |||||
| flpClass.Controls.Clear(); | |||||
| foreach (var grouping in mLocaList.GroupBy(x => x.Name)) | |||||
| { | |||||
| var btn = CreateClassButton(grouping.Key); | |||||
| flpClass.Controls.Add(btn); | |||||
| } | |||||
| } | |||||
| private Button CreateClassButton(string text) | |||||
| { | |||||
| var button = new Button(); | |||||
| button.Text = text; | |||||
| button.Click += classButton_Click; | |||||
| button.Width = 100; | |||||
| button.Height = 60; | |||||
| return button; | |||||
| } | |||||
| private void classButton_Click(object sender, EventArgs e) | |||||
| { | |||||
| var btn = sender as Button; | |||||
| foreach (Button cbutton in flpClass.Controls) | |||||
| { | |||||
| if (btn.Text == cbutton.Text) | |||||
| { | |||||
| cbutton.BackColor = Color.Aqua; | |||||
| } | |||||
| else | |||||
| { | |||||
| cbutton.BackColor = SystemColors.Control; | |||||
| } | |||||
| } | |||||
| flpGoods.Controls.Clear(); | |||||
| foreach (ByProductWeightGoodsSet set in mLocaList.Where(x => x.Name == btn.Text)) | |||||
| { | |||||
| var button = CreateGoodsButton(set); | |||||
| flpGoods.Controls.Add(button); | |||||
| } | |||||
| } | |||||
| private Button CreateGoodsButton(ByProductWeightGoodsSet set) | |||||
| { | |||||
| var btn = new Button(); | |||||
| btn.Text = set.Goods_Name; | |||||
| btn.Tag = set; | |||||
| btn.Click += GoodsBtn_Click; | |||||
| btn.Width = 100; | |||||
| btn.Height = 60; | |||||
| if (set.IsSelected) | |||||
| { | |||||
| btn.BackColor = Color.Aqua; | |||||
| } | |||||
| return btn; | |||||
| } | |||||
| private void GoodsBtn_Click(object sender, EventArgs e) | |||||
| { | |||||
| var btn = sender as Button; | |||||
| var set = btn.Tag as ByProductWeightGoodsSet; | |||||
| if (btn.BackColor == Color.Aqua) | |||||
| { | |||||
| set.IsSelected = false; | |||||
| btn.BackColor = SystemColors.Control; | |||||
| } | |||||
| else | |||||
| { | |||||
| set.IsSelected = true; | |||||
| btn.BackColor = Color.Aqua; | |||||
| } | |||||
| } | |||||
| private void btnSave_Click(object sender, EventArgs e) | |||||
| { | |||||
| if (mLocaList != null) | |||||
| { | |||||
| XmlUtil.SerializerObjToFile(mLocaList, ByProductWeightGoodsSetFileName); | |||||
| DialogResult = DialogResult.OK; | |||||
| } | |||||
| Close(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,120 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <root> | |||||
| <!-- | |||||
| Microsoft ResX Schema | |||||
| Version 2.0 | |||||
| The primary goals of this format is to allow a simple XML format | |||||
| that is mostly human readable. The generation and parsing of the | |||||
| various data types are done through the TypeConverter classes | |||||
| associated with the data types. | |||||
| Example: | |||||
| ... ado.net/XML headers & schema ... | |||||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
| <resheader name="version">2.0</resheader> | |||||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
| </data> | |||||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
| <comment>This is a comment</comment> | |||||
| </data> | |||||
| There are any number of "resheader" rows that contain simple | |||||
| name/value pairs. | |||||
| Each data row contains a name, and value. The row also contains a | |||||
| type or mimetype. Type corresponds to a .NET class that support | |||||
| text/value conversion through the TypeConverter architecture. | |||||
| Classes that don't support this are serialized and stored with the | |||||
| mimetype set. | |||||
| The mimetype is used for serialized objects, and tells the | |||||
| ResXResourceReader how to depersist the object. This is currently not | |||||
| extensible. For a given mimetype the value must be set accordingly: | |||||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
| that the ResXResourceWriter will generate, however the reader can | |||||
| read any of the formats listed below. | |||||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
| value : The object must be serialized into a byte array | |||||
| : using a System.ComponentModel.TypeConverter | |||||
| : and then encoded with base64 encoding. | |||||
| --> | |||||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||||
| <xsd:complexType> | |||||
| <xsd:choice maxOccurs="unbounded"> | |||||
| <xsd:element name="metadata"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
| <xsd:attribute name="type" type="xsd:string" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||||
| <xsd:attribute ref="xml:space" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="assembly"> | |||||
| <xsd:complexType> | |||||
| <xsd:attribute name="alias" type="xsd:string" /> | |||||
| <xsd:attribute name="name" type="xsd:string" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="data"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
| <xsd:attribute ref="xml:space" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="resheader"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:choice> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:schema> | |||||
| <resheader name="resmimetype"> | |||||
| <value>text/microsoft-resx</value> | |||||
| </resheader> | |||||
| <resheader name="version"> | |||||
| <value>2.0</value> | |||||
| </resheader> | |||||
| <resheader name="reader"> | |||||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| <resheader name="writer"> | |||||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| </root> | |||||
| @ -0,0 +1,36 @@ | |||||
| using System.Reflection; | |||||
| using System.Runtime.CompilerServices; | |||||
| using System.Runtime.InteropServices; | |||||
| // 有关程序集的一般信息由以下 | |||||
| // 控制。更改这些特性值可修改 | |||||
| // 与程序集关联的信息。 | |||||
| [assembly: AssemblyTitle("ByProductWeight")] | |||||
| [assembly: AssemblyDescription("")] | |||||
| [assembly: AssemblyConfiguration("")] | |||||
| [assembly: AssemblyCompany("")] | |||||
| [assembly: AssemblyProduct("ByProductWeight")] | |||||
| [assembly: AssemblyCopyright("Copyright © 2017")] | |||||
| [assembly: AssemblyTrademark("")] | |||||
| [assembly: AssemblyCulture("")] | |||||
| //将 ComVisible 设置为 false 将使此程序集中的类型 | |||||
| //对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型, | |||||
| //请将此类型的 ComVisible 特性设置为 true。 | |||||
| [assembly: ComVisible(false)] | |||||
| // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID | |||||
| [assembly: Guid("c5696a7d-0beb-474a-a478-fd0543e72abf")] | |||||
| // 程序集的版本信息由下列四个值组成: | |||||
| // | |||||
| // 主版本 | |||||
| // 次版本 | |||||
| // 生成号 | |||||
| // 修订号 | |||||
| // | |||||
| //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值, | |||||
| // 方法是按如下所示使用“*”: : | |||||
| // [assembly: AssemblyVersion("1.0.*")] | |||||
| [assembly: AssemblyVersion("1.0.0.0")] | |||||
| [assembly: AssemblyFileVersion("1.0.0.0")] | |||||
| @ -0,0 +1,21 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using ByProductWeight.Rpc.Dto; | |||||
| using Forks.JsonRpc.Client; | |||||
| using Newtonsoft.Json; | |||||
| namespace ByProductWeight.Rpc | |||||
| { | |||||
| public class ByProductWeightRecordRpc | |||||
| { | |||||
| public static long Insert(ByProductWeightRecord record) | |||||
| { | |||||
| var json = JsonConvert.SerializeObject(record); | |||||
| var id = RpcFacade.Call<long>("/MainSystem/B3ClientService/Rpcs/BillRpc/ByProductWeightRecordRpc/Insert", json); | |||||
| return id; | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,22 @@ | |||||
| using System; | |||||
| namespace ByProductWeight.Rpc.Dto | |||||
| { | |||||
| [Serializable] | |||||
| public class ByProductWeightRecord | |||||
| { | |||||
| public long ID { get; set; } | |||||
| public string BarCode { get; set; }//条码 | |||||
| public long Goods_ID { get; set; } | |||||
| public string Goods_Name { get; set; } | |||||
| public string Goods_Spec { get; set; } | |||||
| public decimal PiWeight { get; set; }//皮重 | |||||
| public decimal MaoWeight { get; set; }//毛重 | |||||
| public decimal JingWeight { get; set; }//净重 | |||||
| public string CardBarCode { get; set; }//放产品的车的条码 | |||||
| public string BiaoShi { get; set; }//用来记录那个工作台或者哪台触摸屏做的 | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,291 @@ | |||||
| namespace ByProductWeight | |||||
| { | |||||
| partial class WeightSettingFrom | |||||
| { | |||||
| /// <summary> | |||||
| /// Required designer variable. | |||||
| /// </summary> | |||||
| private System.ComponentModel.IContainer components = null; | |||||
| /// <summary> | |||||
| /// Clean up any resources being used. | |||||
| /// </summary> | |||||
| /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||||
| protected override void Dispose(bool disposing) | |||||
| { | |||||
| if (disposing && (components != null)) | |||||
| { | |||||
| components.Dispose(); | |||||
| } | |||||
| base.Dispose(disposing); | |||||
| } | |||||
| #region Windows Form Designer generated code | |||||
| /// <summary> | |||||
| /// Required method for Designer support - do not modify | |||||
| /// the contents of this method with the code editor. | |||||
| /// </summary> | |||||
| private void InitializeComponent() | |||||
| { | |||||
| this.maxInput = new BWP.WinFormControl.UTextBoxWithPad(); | |||||
| this.minInput = new BWP.WinFormControl.UTextBoxWithPad(); | |||||
| this.label8 = new System.Windows.Forms.Label(); | |||||
| this.weightReadType = new System.Windows.Forms.ComboBox(); | |||||
| this.label7 = new System.Windows.Forms.Label(); | |||||
| this.discont = new BWP.WinFormControl.UTextBoxWithPad(); | |||||
| this.format = new BWP.WinFormControl.UTextBoxWithPad(); | |||||
| this.label6 = new System.Windows.Forms.Label(); | |||||
| this.label5 = new System.Windows.Forms.Label(); | |||||
| this.closeBtn = new System.Windows.Forms.Button(); | |||||
| this.saveBtn = new System.Windows.Forms.Button(); | |||||
| this.bitSet = new System.Windows.Forms.ComboBox(); | |||||
| this.rateSet = new System.Windows.Forms.ComboBox(); | |||||
| this.comSet = new System.Windows.Forms.ComboBox(); | |||||
| this.weightSet = new System.Windows.Forms.ComboBox(); | |||||
| this.label4 = new System.Windows.Forms.Label(); | |||||
| this.label3 = new System.Windows.Forms.Label(); | |||||
| this.label2 = new System.Windows.Forms.Label(); | |||||
| this.label1 = new System.Windows.Forms.Label(); | |||||
| this.SuspendLayout(); | |||||
| // | |||||
| // maxInput | |||||
| // | |||||
| this.maxInput.Font = new System.Drawing.Font("宋体", 12F); | |||||
| this.maxInput.Location = new System.Drawing.Point(262, 370); | |||||
| this.maxInput.Name = "maxInput"; | |||||
| this.maxInput.Size = new System.Drawing.Size(55, 26); | |||||
| this.maxInput.TabIndex = 86; | |||||
| this.maxInput.Type = BWP.WinFormControl.UTextBoxWithPad.TextBoxType.Number; | |||||
| // | |||||
| // minInput | |||||
| // | |||||
| this.minInput.Font = new System.Drawing.Font("宋体", 12F); | |||||
| this.minInput.Location = new System.Drawing.Point(196, 370); | |||||
| this.minInput.Name = "minInput"; | |||||
| this.minInput.Size = new System.Drawing.Size(55, 26); | |||||
| this.minInput.TabIndex = 85; | |||||
| this.minInput.Type = BWP.WinFormControl.UTextBoxWithPad.TextBoxType.Number; | |||||
| // | |||||
| // label8 | |||||
| // | |||||
| this.label8.AutoSize = true; | |||||
| this.label8.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label8.Location = new System.Drawing.Point(74, 370); | |||||
| this.label8.Name = "label8"; | |||||
| this.label8.Size = new System.Drawing.Size(109, 20); | |||||
| this.label8.TabIndex = 84; | |||||
| this.label8.Text = "有效区间:"; | |||||
| // | |||||
| // weightReadType | |||||
| // | |||||
| this.weightReadType.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.weightReadType.FormattingEnabled = true; | |||||
| this.weightReadType.Location = new System.Drawing.Point(196, 323); | |||||
| this.weightReadType.Name = "weightReadType"; | |||||
| this.weightReadType.Size = new System.Drawing.Size(121, 28); | |||||
| this.weightReadType.TabIndex = 83; | |||||
| // | |||||
| // label7 | |||||
| // | |||||
| this.label7.AutoSize = true; | |||||
| this.label7.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label7.Location = new System.Drawing.Point(74, 326); | |||||
| this.label7.Name = "label7"; | |||||
| this.label7.Size = new System.Drawing.Size(109, 20); | |||||
| this.label7.TabIndex = 82; | |||||
| this.label7.Text = "读取方式:"; | |||||
| // | |||||
| // discont | |||||
| // | |||||
| this.discont.Font = new System.Drawing.Font("宋体", 14F); | |||||
| this.discont.Location = new System.Drawing.Point(196, 274); | |||||
| this.discont.Name = "discont"; | |||||
| this.discont.Size = new System.Drawing.Size(121, 29); | |||||
| this.discont.TabIndex = 81; | |||||
| this.discont.Type = BWP.WinFormControl.UTextBoxWithPad.TextBoxType.Number; | |||||
| // | |||||
| // format | |||||
| // | |||||
| this.format.Font = new System.Drawing.Font("宋体", 14F); | |||||
| this.format.Location = new System.Drawing.Point(196, 226); | |||||
| this.format.Name = "format"; | |||||
| this.format.Size = new System.Drawing.Size(121, 29); | |||||
| this.format.TabIndex = 80; | |||||
| this.format.Type = BWP.WinFormControl.UTextBoxWithPad.TextBoxType.Number; | |||||
| // | |||||
| // label6 | |||||
| // | |||||
| this.label6.AutoSize = true; | |||||
| this.label6.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label6.Location = new System.Drawing.Point(74, 283); | |||||
| this.label6.Name = "label6"; | |||||
| this.label6.Size = new System.Drawing.Size(69, 20); | |||||
| this.label6.TabIndex = 79; | |||||
| this.label6.Text = "扣重:"; | |||||
| // | |||||
| // label5 | |||||
| // | |||||
| this.label5.AutoSize = true; | |||||
| this.label5.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label5.Location = new System.Drawing.Point(74, 232); | |||||
| this.label5.Name = "label5"; | |||||
| this.label5.Size = new System.Drawing.Size(109, 20); | |||||
| this.label5.TabIndex = 78; | |||||
| this.label5.Text = "显示格式:"; | |||||
| // | |||||
| // closeBtn | |||||
| // | |||||
| this.closeBtn.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.closeBtn.Location = new System.Drawing.Point(212, 416); | |||||
| this.closeBtn.Name = "closeBtn"; | |||||
| this.closeBtn.Size = new System.Drawing.Size(75, 35); | |||||
| this.closeBtn.TabIndex = 77; | |||||
| this.closeBtn.Text = "关闭"; | |||||
| this.closeBtn.UseVisualStyleBackColor = true; | |||||
| this.closeBtn.Click += new System.EventHandler(this.closeBtn_Click); | |||||
| // | |||||
| // saveBtn | |||||
| // | |||||
| this.saveBtn.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.saveBtn.Location = new System.Drawing.Point(106, 416); | |||||
| this.saveBtn.Name = "saveBtn"; | |||||
| this.saveBtn.Size = new System.Drawing.Size(75, 35); | |||||
| this.saveBtn.TabIndex = 76; | |||||
| this.saveBtn.Text = "保存"; | |||||
| this.saveBtn.UseVisualStyleBackColor = true; | |||||
| this.saveBtn.Click += new System.EventHandler(this.saveBtn_Click); | |||||
| // | |||||
| // bitSet | |||||
| // | |||||
| this.bitSet.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.bitSet.FormattingEnabled = true; | |||||
| this.bitSet.Location = new System.Drawing.Point(196, 179); | |||||
| this.bitSet.Name = "bitSet"; | |||||
| this.bitSet.Size = new System.Drawing.Size(121, 28); | |||||
| this.bitSet.TabIndex = 73; | |||||
| // | |||||
| // rateSet | |||||
| // | |||||
| this.rateSet.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.rateSet.FormattingEnabled = true; | |||||
| this.rateSet.Location = new System.Drawing.Point(196, 127); | |||||
| this.rateSet.Name = "rateSet"; | |||||
| this.rateSet.Size = new System.Drawing.Size(121, 28); | |||||
| this.rateSet.TabIndex = 74; | |||||
| // | |||||
| // comSet | |||||
| // | |||||
| this.comSet.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.comSet.FormattingEnabled = true; | |||||
| this.comSet.Location = new System.Drawing.Point(196, 77); | |||||
| this.comSet.Name = "comSet"; | |||||
| this.comSet.Size = new System.Drawing.Size(121, 28); | |||||
| this.comSet.TabIndex = 75; | |||||
| // | |||||
| // weightSet | |||||
| // | |||||
| this.weightSet.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.weightSet.FormattingEnabled = true; | |||||
| this.weightSet.Location = new System.Drawing.Point(196, 29); | |||||
| this.weightSet.Name = "weightSet"; | |||||
| this.weightSet.Size = new System.Drawing.Size(121, 28); | |||||
| this.weightSet.TabIndex = 72; | |||||
| // | |||||
| // label4 | |||||
| // | |||||
| this.label4.AutoSize = true; | |||||
| this.label4.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label4.Location = new System.Drawing.Point(74, 182); | |||||
| this.label4.Name = "label4"; | |||||
| this.label4.Size = new System.Drawing.Size(89, 20); | |||||
| this.label4.TabIndex = 71; | |||||
| this.label4.Text = "数据位:"; | |||||
| // | |||||
| // label3 | |||||
| // | |||||
| this.label3.AutoSize = true; | |||||
| this.label3.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label3.Location = new System.Drawing.Point(74, 130); | |||||
| this.label3.Name = "label3"; | |||||
| this.label3.Size = new System.Drawing.Size(89, 20); | |||||
| this.label3.TabIndex = 70; | |||||
| this.label3.Text = "波特率:"; | |||||
| // | |||||
| // label2 | |||||
| // | |||||
| this.label2.AutoSize = true; | |||||
| this.label2.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label2.Location = new System.Drawing.Point(74, 80); | |||||
| this.label2.Name = "label2"; | |||||
| this.label2.Size = new System.Drawing.Size(89, 20); | |||||
| this.label2.TabIndex = 69; | |||||
| this.label2.Text = "端口号:"; | |||||
| // | |||||
| // label1 | |||||
| // | |||||
| this.label1.AutoSize = true; | |||||
| this.label1.Font = new System.Drawing.Font("宋体", 15F); | |||||
| this.label1.Location = new System.Drawing.Point(74, 32); | |||||
| this.label1.Name = "label1"; | |||||
| this.label1.Size = new System.Drawing.Size(89, 20); | |||||
| this.label1.TabIndex = 68; | |||||
| this.label1.Text = "称型号:"; | |||||
| // | |||||
| // WeightSettingFrom | |||||
| // | |||||
| this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||||
| this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||||
| this.ClientSize = new System.Drawing.Size(391, 481); | |||||
| this.Controls.Add(this.maxInput); | |||||
| this.Controls.Add(this.minInput); | |||||
| this.Controls.Add(this.label8); | |||||
| this.Controls.Add(this.weightReadType); | |||||
| this.Controls.Add(this.label7); | |||||
| this.Controls.Add(this.discont); | |||||
| this.Controls.Add(this.format); | |||||
| this.Controls.Add(this.label6); | |||||
| this.Controls.Add(this.label5); | |||||
| this.Controls.Add(this.closeBtn); | |||||
| this.Controls.Add(this.saveBtn); | |||||
| this.Controls.Add(this.bitSet); | |||||
| this.Controls.Add(this.rateSet); | |||||
| this.Controls.Add(this.comSet); | |||||
| this.Controls.Add(this.weightSet); | |||||
| this.Controls.Add(this.label4); | |||||
| this.Controls.Add(this.label3); | |||||
| this.Controls.Add(this.label2); | |||||
| this.Controls.Add(this.label1); | |||||
| this.MaximizeBox = false; | |||||
| this.MinimizeBox = false; | |||||
| this.Name = "WeightSettingFrom"; | |||||
| this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |||||
| this.Text = "称重设置"; | |||||
| this.ResumeLayout(false); | |||||
| this.PerformLayout(); | |||||
| } | |||||
| #endregion | |||||
| private BWP.WinFormControl.UTextBoxWithPad maxInput; | |||||
| private BWP.WinFormControl.UTextBoxWithPad minInput; | |||||
| private System.Windows.Forms.Label label8; | |||||
| private System.Windows.Forms.ComboBox weightReadType; | |||||
| private System.Windows.Forms.Label label7; | |||||
| private BWP.WinFormControl.UTextBoxWithPad discont; | |||||
| private BWP.WinFormControl.UTextBoxWithPad format; | |||||
| private System.Windows.Forms.Label label6; | |||||
| private System.Windows.Forms.Label label5; | |||||
| private System.Windows.Forms.Button closeBtn; | |||||
| private System.Windows.Forms.Button saveBtn; | |||||
| private System.Windows.Forms.ComboBox bitSet; | |||||
| private System.Windows.Forms.ComboBox rateSet; | |||||
| private System.Windows.Forms.ComboBox comSet; | |||||
| private System.Windows.Forms.ComboBox weightSet; | |||||
| private System.Windows.Forms.Label label4; | |||||
| private System.Windows.Forms.Label label3; | |||||
| private System.Windows.Forms.Label label2; | |||||
| private System.Windows.Forms.Label label1; | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,95 @@ | |||||
| using System; | |||||
| using System.Collections.Generic; | |||||
| using System.ComponentModel; | |||||
| using System.Data; | |||||
| using System.Drawing; | |||||
| using System.Linq; | |||||
| using System.Text; | |||||
| using System.Threading.Tasks; | |||||
| using System.Windows.Forms; | |||||
| namespace ByProductWeight | |||||
| { | |||||
| public partial class WeightSettingFrom : Form | |||||
| { | |||||
| List<string> weight = new List<string> { "IND560", "Xk3124", "Xk3190A9", "Xk3190D10" }; | |||||
| List<string> com = new List<string> { "COM1", "COM2", "COM3", "COM4", "COM5" }; | |||||
| List<string> rate = new List<string> { "4800", "7200", "9600" }; | |||||
| List<string> bit = new List<string> { "5", "6", "7", "8" }; | |||||
| List<string> weightRead = new List<string> { "稳定读取", "连续发送" }; | |||||
| public WeightSettingFrom() | |||||
| { | |||||
| InitializeComponent(); | |||||
| weightSet.DataSource = weight; | |||||
| comSet.DataSource = com; | |||||
| rateSet.DataSource = rate; | |||||
| bitSet.DataSource = bit; | |||||
| weightReadType.DataSource = weightRead; | |||||
| if (!string.IsNullOrEmpty(ByProductWeightContext.Config.WeightSet)) | |||||
| weightSet.SelectedIndex = weight.IndexOf(ByProductWeightContext.Config.WeightSet); | |||||
| else | |||||
| weightSet.SelectedIndex = 0; | |||||
| if (!string.IsNullOrEmpty(ByProductWeightContext.Config.ComSet)) | |||||
| comSet.SelectedIndex = com.IndexOf(ByProductWeightContext.Config.ComSet); | |||||
| else | |||||
| comSet.SelectedIndex = 0; | |||||
| if (ByProductWeightContext.Config.RateSet.HasValue) | |||||
| rateSet.SelectedIndex = rate.IndexOf(ByProductWeightContext.Config.RateSet.ToString()); | |||||
| else | |||||
| rateSet.SelectedIndex = 2; | |||||
| if (ByProductWeightContext.Config.BitSet.HasValue) | |||||
| bitSet.SelectedIndex = bit.IndexOf(ByProductWeightContext.Config.BitSet.ToString()); | |||||
| else | |||||
| bitSet.SelectedIndex = 3; | |||||
| if (string.IsNullOrEmpty(ByProductWeightContext.Config.Format)) | |||||
| format.Text = "0.00"; | |||||
| else | |||||
| format.Text = ByProductWeightContext.Config.Format; | |||||
| if (ByProductWeightContext.Config.Discont == null) | |||||
| discont.Text = "0.00"; | |||||
| else | |||||
| discont.Text = ByProductWeightContext.Config.Discont.ToString(); | |||||
| weightReadType.SelectedIndex = ByProductWeightContext.Config.WeightType; | |||||
| minInput.Text = ByProductWeightContext.Config.MinWeight.ToString(); | |||||
| maxInput.Text = ByProductWeightContext.Config.MaxWeight.ToString(); | |||||
| } | |||||
| private void saveBtn_Click(object sender, EventArgs e) | |||||
| { | |||||
| ByProductWeightContext.Config.WeightSet = weight[this.weightSet.SelectedIndex]; | |||||
| ByProductWeightContext.Config.ComSet = com[this.comSet.SelectedIndex]; | |||||
| ByProductWeightContext.Config.RateSet = int.Parse(rate[this.rateSet.SelectedIndex]); | |||||
| ByProductWeightContext.Config.BitSet = int.Parse(bit[this.bitSet.SelectedIndex]); | |||||
| ByProductWeightContext.Config.Format = format.Text; | |||||
| ByProductWeightContext.Config.WeightType = weightReadType.SelectedIndex; | |||||
| if (ByProductWeightContext.Config.WeightType == 1) | |||||
| { | |||||
| decimal min = 0; | |||||
| decimal max = 0; | |||||
| if (!decimal.TryParse(minInput.Text.Trim(), out min)) | |||||
| throw new Exception("连续发送时 必须输入有效区间"); | |||||
| if (!decimal.TryParse(maxInput.Text.Trim(), out max)) | |||||
| throw new Exception("连续发送时 必须输入有效区间"); | |||||
| ByProductWeightContext.Config.MinWeight = min; | |||||
| ByProductWeightContext.Config.MaxWeight = max; | |||||
| } | |||||
| if (!string.IsNullOrEmpty(discont.Text)) | |||||
| { | |||||
| decimal v; | |||||
| if (decimal.TryParse(discont.Text, out v)) | |||||
| ByProductWeightContext.Config.Discont = v; | |||||
| else | |||||
| throw new Exception("扣重格式输入不正确"); | |||||
| } | |||||
| else | |||||
| ByProductWeightContext.Config.Discont = 0; | |||||
| ByProductWeightContext.Save(); | |||||
| MessageBox.Show("保存成功!"); | |||||
| } | |||||
| private void closeBtn_Click(object sender, EventArgs e) | |||||
| { | |||||
| Close(); | |||||
| } | |||||
| } | |||||
| } | |||||
| @ -0,0 +1,120 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <root> | |||||
| <!-- | |||||
| Microsoft ResX Schema | |||||
| Version 2.0 | |||||
| The primary goals of this format is to allow a simple XML format | |||||
| that is mostly human readable. The generation and parsing of the | |||||
| various data types are done through the TypeConverter classes | |||||
| associated with the data types. | |||||
| Example: | |||||
| ... ado.net/XML headers & schema ... | |||||
| <resheader name="resmimetype">text/microsoft-resx</resheader> | |||||
| <resheader name="version">2.0</resheader> | |||||
| <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||||
| <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||||
| <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||||
| <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||||
| <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||||
| <value>[base64 mime encoded serialized .NET Framework object]</value> | |||||
| </data> | |||||
| <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||||
| <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||||
| <comment>This is a comment</comment> | |||||
| </data> | |||||
| There are any number of "resheader" rows that contain simple | |||||
| name/value pairs. | |||||
| Each data row contains a name, and value. The row also contains a | |||||
| type or mimetype. Type corresponds to a .NET class that support | |||||
| text/value conversion through the TypeConverter architecture. | |||||
| Classes that don't support this are serialized and stored with the | |||||
| mimetype set. | |||||
| The mimetype is used for serialized objects, and tells the | |||||
| ResXResourceReader how to depersist the object. This is currently not | |||||
| extensible. For a given mimetype the value must be set accordingly: | |||||
| Note - application/x-microsoft.net.object.binary.base64 is the format | |||||
| that the ResXResourceWriter will generate, however the reader can | |||||
| read any of the formats listed below. | |||||
| mimetype: application/x-microsoft.net.object.binary.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.soap.base64 | |||||
| value : The object must be serialized with | |||||
| : System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||||
| : and then encoded with base64 encoding. | |||||
| mimetype: application/x-microsoft.net.object.bytearray.base64 | |||||
| value : The object must be serialized into a byte array | |||||
| : using a System.ComponentModel.TypeConverter | |||||
| : and then encoded with base64 encoding. | |||||
| --> | |||||
| <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||||
| <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||||
| <xsd:element name="root" msdata:IsDataSet="true"> | |||||
| <xsd:complexType> | |||||
| <xsd:choice maxOccurs="unbounded"> | |||||
| <xsd:element name="metadata"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" use="required" type="xsd:string" /> | |||||
| <xsd:attribute name="type" type="xsd:string" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" /> | |||||
| <xsd:attribute ref="xml:space" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="assembly"> | |||||
| <xsd:complexType> | |||||
| <xsd:attribute name="alias" type="xsd:string" /> | |||||
| <xsd:attribute name="name" type="xsd:string" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="data"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||||
| <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||||
| <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||||
| <xsd:attribute ref="xml:space" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| <xsd:element name="resheader"> | |||||
| <xsd:complexType> | |||||
| <xsd:sequence> | |||||
| <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||||
| </xsd:sequence> | |||||
| <xsd:attribute name="name" type="xsd:string" use="required" /> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:choice> | |||||
| </xsd:complexType> | |||||
| </xsd:element> | |||||
| </xsd:schema> | |||||
| <resheader name="resmimetype"> | |||||
| <value>text/microsoft-resx</value> | |||||
| </resheader> | |||||
| <resheader name="version"> | |||||
| <value>2.0</value> | |||||
| </resheader> | |||||
| <resheader name="reader"> | |||||
| <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| <resheader name="writer"> | |||||
| <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||||
| </resheader> | |||||
| </root> | |||||
| @ -0,0 +1 @@ | |||||
| | |||||