geboshi_V1/LeatherProject/LeatherApp/Page/PartitionFrm.cs

294 lines
13 KiB
C#
Raw Normal View History

2024-12-18 10:44:17 +08:00
using DocumentFormat.OpenXml.EMMA;
using DocumentFormat.OpenXml.Office2010.ExcelAc;
using DocumentFormat.OpenXml.Office2021.DocumentTasks;
2024-12-18 10:44:17 +08:00
using DocumentFormat.OpenXml.Spreadsheet;
using Models;
using OpenCvSharp;
using S7.Net.Types;
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
2024-12-18 10:44:17 +08:00
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace LeatherApp.Page
{
public partial class PartitionFrm : Form
{
public string BathReelID;
public string PartReelID;
public string NextPartReelID;
2024-12-18 10:44:17 +08:00
public double WeightParam;
Records model = null;
double LastSplitLength;
2024-12-18 10:44:17 +08:00
public PartitionFrm(Records m, double dis, double wd)
{
InitializeComponent();
label2.Visible = false;
//加载分卷信息
2024-12-18 10:44:17 +08:00
WeightParam = wd;
LastSplitLength = dis;
model = m;
2024-12-18 10:44:17 +08:00
ShowDefectRecordInfo(true);
}
private void ShowDefectRecordInfo(bool isLoad)
{
if (model != null)
{
//第一卷可以设置批卷号和当前分卷号
2024-12-18 10:44:17 +08:00
if (model.ReelNo == 0)
{
textBox1.ReadOnly = false;
textBox2.ReadOnly = false;
}
2024-12-18 10:44:17 +08:00
textBox1.Text = string.IsNullOrWhiteSpace(model.PartReelId) ? (model.ReelNo + 1).ToString() : model.PartReelId;
textBox2.Text = $"{model.BatchId}@{model.ReelId}";
textBox5.Text = (model.ReelNo + 2).ToString();
2024-12-18 10:44:17 +08:00
textBox4.Text = $"{model.BatchId}@{model.ReelId}";
if (model.Len == 0 && (model.DefectInfoList == null || model.DefectInfoList.Count == 0))
{
label2.Visible = true;
2024-12-18 10:44:17 +08:00
label2.Text = $"小于1米不记录";
}
2024-12-18 10:44:17 +08:00
//显示色差
if(!string.IsNullOrEmpty(model.PartReelNote))
txtR2.Text = model.PartReelNote2.Replace("色差:", "");
//model.PartReelNote2 = $"色差:{txtR2.Text}";
//分卷长度
double len = 0;
len = model.Len - LastSplitLength - Config.CutDis;//分卷,补差距
2024-12-18 10:44:17 +08:00
if (isLoad)
{
//卷长显示
numericUpDown1.Value = (decimal)len;
//显示重量
if(WeightParam > 0)
numericUpDown3.Value = (decimal)((double)numericUpDown1.Value * WeightParam);
}
//分卷数据分解卷
int cnt = 0;
string str = "";
string strCut = "";
2024-12-18 10:44:17 +08:00
double rmCnt = 0;
//让码计算
if (isLoad)
{
if (model.FMInformation != null && model.FMInformation.Count > 0)
{
//分卷长度
var rmList = model.FMInformation.Where(x => double.Parse(x[3]) < (model.Len - Config.CutDis)).ToList();
foreach (var dit in rmList)
{
rmCnt += double.Parse(dit[2].Split(',')[0]);
}
//总让码计数
RMCnt.Value = (decimal)rmCnt;
}
}
//显示净长
double jLen = ((double)numericUpDown1.Value - (double)RMCnt.Value) > 0 ? ((double)numericUpDown1.Value - (double)RMCnt.Value) : 0;
numericUpDown2.Value = (decimal)jLen;
//总缺陷显示统计
List<DefectInfo> deflist = new List<DefectInfo>();
if (model.DefectInfoList != null && len > 0)
{
2024-12-18 10:44:17 +08:00
//显示缺陷信息
object[] obj1 = new object[1];
object[] obj2 = new object[1];
object[] obj3 = new object[1];
deflist = model.DefectInfoList.FindAll(x => x.Y < ((model.Len - Config.CutDis) * 100));
foreach (var item in deflist)
{
item.Name = Config.getDefectName(model.ProductInfo.ModelName, item.Code);
}
List<JDefectTotal> DefectTotal = deflist.GroupBy(x => x.Name).Select(g => new JDefectTotal { Name = g.Key, Count = g.Count() }).ToList();
2024-12-18 10:44:17 +08:00
if (DefectTotal != null && DefectTotal.Count > 0)
{
2024-12-18 10:44:17 +08:00
obj1 = new object[DefectTotal.Count + 1];
obj2 = new object[DefectTotal.Count + 1];
obj3 = new object[DefectTotal.Count + 1];
obj1[0] = "缺陷";
2024-12-18 10:44:17 +08:00
obj2[0] = "个数";
obj3[0] = "米数";
int index = 1;
dataGridView1.Columns.Clear();
DataTable dt = new DataTable(); //建立个数据表
2024-12-18 10:44:17 +08:00
dt.Columns.Add(new DataColumn("让码序号", typeof(string)));//在表中添加string类型的列
foreach (var dit in DefectTotal)
{
2024-12-18 10:44:17 +08:00
obj1[index] = dit.Name;
obj2[index] = dit.Count;
obj3[index++] = Math.Round(deflist.Where(x => x.Name == dit.Name).ToList().Select(t => t.Height).Sum() / 100.0, 2);
dt.Columns.Add(new DataColumn((index - 1).ToString(), typeof(string)));//在表中添加string类型的列
cnt += dit.Count;
str += $"{dit.Name}{dit.Count}个,";
}
dataGridView1.DataSource = dt;
dt.Rows.Add(obj1);
dt.Rows.Add(obj2);
2024-12-18 10:44:17 +08:00
dt.Rows.Add(obj3);
//隐藏列头
dataGridView1.ColumnHeadersVisible = false;
}
//总缺陷计数
defectCnt.Text = cnt.ToString();
}
//厚度显示
if (model.ThicknessList != null && model.ThicknessList.Count > 0)
{
this.dataGridView2.Rows.Clear();
//分卷长度分开
var thList = model.ThicknessList.Where(x => (x.Y_Dis / 100) < (model.Len - Config.CutDis)).ToList();
for (int i = 0; i < thList.Count; i++)
{
double ave = Math.Round((thList[i].Value1 + thList[i].Value2 + thList[i].Value3)/3, 2);
var rowItem = new object[]{ (thList[i].Y_Dis /100).ToString("0.00"),
thList[i].Value1.ToString(),thList[i].Value2.ToString(),thList[i].Value3.ToString(), ave.ToString()};
this.dataGridView2.Rows.Insert(i, rowItem);
}
2024-12-18 10:44:17 +08:00
}
2024-12-18 10:44:17 +08:00
//裁切记录
if (model.DowngradeInformation != null && model.DowngradeInformation.Count > 0)
{
foreach (var item in model.DowngradeInformation)
{
2024-12-18 10:44:17 +08:00
strCut += $"裁切{item[0]}米,原因{item[1]},等级{item[2]},";
}
}
//分段信息
string fdStr = "";
if (model.FDInfor != null && model.FDInfor.Count > 0)
{
//分卷长度分开
var fdList = model.FDInfor.Where(x => x[1] < (model.Len - Config.CutDis)).ToList();
double last = (len - fdList.Select(x => x[0]).Sum()) > 0 ? (len - fdList.Select(x => x[0]).Sum()) : 0;
fdList.Add(new double[2] { Math.Round(last, 2), len });
fdStr += $"本卷分{fdList.Count()}段,分别";
for (int i = 0; i < fdList.Count; i++)
{
fdStr += $"{Math.Round(fdList[i][0], 2)}米,";
}
}
//总结
2024-12-18 10:44:17 +08:00
double tLen = Math.Round((double)numericUpDown1.Value,2);
double kg = Math.Round((double)numericUpDown3.Value, 2);
textBox3.Text = $"本卷共计{tLen}米,各类缺陷共计{cnt}个,让码{RMCnt.Value},重量{kg}kg";
if (!string.IsNullOrEmpty(str))
textBox3.Text += $",{str.Remove(str.Length - 1, 1)}";
if (!string.IsNullOrEmpty(fdStr))
textBox3.Text += $",{fdStr.Remove(fdStr.Length - 1, 1)}";
if (!string.IsNullOrEmpty(strCut))
textBox3.Text += $",{strCut.Remove(strCut.Length - 1, 1)}";
//else if (string.IsNullOrEmpty(fdStr))
// textBox3.Text = $"本卷共计{len}米,各类缺陷共计{cnt}个,让码{RMCnt.Value},{strCut.Remove(strCut.Length - 1, 1)}";
//else if (string.IsNullOrEmpty(strCut))
// textBox3.Text = $"本卷共计{len}米,各类缺陷共计{cnt}个,让码{RMCnt.Value},{str.Remove(str.Length - 1, 1)},{fdStr.Remove(str.Length - 1, 1)}";
//else
// textBox3.Text = $"本卷共计{len}米,各类缺陷共计{cnt}个,让码{RMCnt.Value},{str.Remove(str.Length - 1, 1)},{fdStr.Remove(str.Length - 1, 1)},{strCut.Remove(strCut.Length - 1, 1)}";
}
else
{
label2.Visible = true;
label2.Text = $"无数据!";
}
}
/// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void skinButton2_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
this.Close();
}
private void skinButton1_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBox1.Text) || string.IsNullOrEmpty(textBox5.Text) || string.IsNullOrEmpty(textBox2.Text))
{
label2.Text = "请输入[卷号]或者[分卷号]!";
label2.Visible = true;
return;
}
if(textBox1.Text == textBox5.Text)
{
label2.Text = "[分卷号]与下一卷相同!";
label2.Visible = true;
return;
}
label2.Visible = false;
PartReelID = textBox1.Text;
BathReelID = textBox2.Text;
NextPartReelID = textBox5.Text;
2024-12-18 10:44:17 +08:00
//计算重量参数
if (Math.Round((double)numericUpDown1.Value, 2) > 0)
WeightParam = Math.Round((double)numericUpDown3.Value, 2) / Math.Round((double)numericUpDown1.Value, 2);
else
WeightParam = 0;
if (model != null)
{
model.PartReelNote = textBox3.Text;
2024-12-18 10:44:17 +08:00
//model.PartReelNote2 = $"厚度:{txtR1.Text},色差:{txtR2.Text},花纹对比:{txtR3.Text}";
model.PartReelNote2 = $"色差:{txtR2.Text}";
//分段信息信息 0卷长 1让码 2净长 3重量
model.LengthWeightInfor = new double[4] {Math.Round((double)numericUpDown1.Value ,2), Math.Round((double)RMCnt.Value, 2), Math.Round((double)numericUpDown2.Value, 2), Math.Round((double)numericUpDown3.Value, 2) } ;
}
this.DialogResult = DialogResult.OK;
this.Close();
}
public class JDefectTotal
{
[Description("疵点名")]
public string Name { get; set; }
[Description("疵点数")]
public int Count { get; set; }
}
2024-12-18 10:44:17 +08:00
private void RMCnt_ValueChanged(object sender, EventArgs e)
{
ShowDefectRecordInfo(false);
this.Refresh();
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
ShowDefectRecordInfo(false);
this.Refresh();
}
private void numericUpDown3_ValueChanged(object sender, EventArgs e)
{
ShowDefectRecordInfo(false);
this.Refresh();
}
}
}