2024-12-18 10:44:17 +08:00
|
|
|
|
using DocumentFormat.OpenXml.EMMA;
|
|
|
|
|
using DocumentFormat.OpenXml.Office2010.ExcelAc;
|
2024-12-02 15:02:39 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Office2021.DocumentTasks;
|
2024-12-18 10:44:17 +08:00
|
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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;
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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;
|
2024-12-02 15:02:39 +08:00
|
|
|
|
Records model = null;
|
|
|
|
|
|
|
|
|
|
double LastSplitLength;
|
2024-12-18 10:44:17 +08:00
|
|
|
|
public PartitionFrm(Records m, double dis, double wd)
|
2024-12-02 15:02:39 +08:00
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
label2.Visible = false;
|
|
|
|
|
|
|
|
|
|
//加载分卷信息
|
2024-12-18 10:44:17 +08:00
|
|
|
|
WeightParam = wd;
|
2024-12-02 15:02:39 +08:00
|
|
|
|
LastSplitLength = dis;
|
|
|
|
|
model = m;
|
2024-12-18 10:44:17 +08:00
|
|
|
|
ShowDefectRecordInfo(true);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void ShowDefectRecordInfo(bool isLoad)
|
|
|
|
|
{
|
|
|
|
|
if (model != null)
|
2024-12-02 15:02:39 +08:00
|
|
|
|
{
|
|
|
|
|
//第一卷可以设置批卷号和当前分卷号
|
2024-12-18 10:44:17 +08:00
|
|
|
|
if (model.ReelNo == 0)
|
2024-12-02 15:02:39 +08:00
|
|
|
|
{
|
|
|
|
|
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}";
|
2024-12-02 15:02:39 +08:00
|
|
|
|
textBox5.Text = (model.ReelNo + 2).ToString();
|
2024-12-18 10:44:17 +08:00
|
|
|
|
textBox4.Text = $"{model.BatchId}@{model.ReelId}";
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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-02 15:02:39 +08:00
|
|
|
|
}
|
2024-12-18 10:44:17 +08:00
|
|
|
|
//显示色差
|
|
|
|
|
if(!string.IsNullOrEmpty(model.PartReelNote))
|
|
|
|
|
txtR2.Text = model.PartReelNote2.Replace("色差:", "");
|
|
|
|
|
//model.PartReelNote2 = $"色差:{txtR2.Text}";
|
|
|
|
|
|
2024-12-02 15:02:39 +08:00
|
|
|
|
//分卷长度
|
|
|
|
|
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);
|
|
|
|
|
}
|
2024-12-02 15:02:39 +08:00
|
|
|
|
//分卷数据分解卷
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
//总缺陷显示统计
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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];
|
|
|
|
|
|
|
|
|
|
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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-02 15:02:39 +08:00
|
|
|
|
{
|
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];
|
2024-12-02 15:02:39 +08:00
|
|
|
|
obj1[0] = "缺陷";
|
2024-12-18 10:44:17 +08:00
|
|
|
|
obj2[0] = "个数";
|
|
|
|
|
obj3[0] = "米数";
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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类型的列
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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类型的列
|
|
|
|
|
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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-02 15:02:39 +08:00
|
|
|
|
}
|
2024-12-18 10:44:17 +08:00
|
|
|
|
|
2024-12-02 15:02:39 +08:00
|
|
|
|
}
|
2024-12-18 10:44:17 +08:00
|
|
|
|
//裁切记录
|
|
|
|
|
if (model.DowngradeInformation != null && model.DowngradeInformation.Count > 0)
|
2024-12-02 15:02:39 +08:00
|
|
|
|
{
|
|
|
|
|
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-02 15:02:39 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//总结
|
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)}";
|
2024-12-02 15:02:39 +08:00
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
|
2024-12-02 15:02:39 +08:00
|
|
|
|
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) } ;
|
2024-12-02 15:02:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
2024-12-02 15:02:39 +08:00
|
|
|
|
}
|
|
|
|
|
}
|