using Microsoft.VisualBasic.FileIO;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.IO;
|
using System.Linq;
|
using System.Runtime.InteropServices;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
|
namespace WFormReadData_SMR
|
{
|
public partial class ReadCSV : Form
|
{
|
public DBHelper oCN = new DBHelper();
|
|
public ReadCSV()
|
{
|
InitializeComponent();
|
}
|
public static int num = 0;
|
|
|
|
//更换条形码
|
private void btnGH_Click(object sender, EventArgs e)
|
{
|
this.txtHBardCode.Text = "";
|
this.txtHBath.Text = "";
|
this.txtHBardCode.ReadOnly = false;
|
}
|
|
//查询条形码
|
public void SelectHBardCode(string HBillNo)
|
{
|
try
|
{
|
DataSet ds = oCN.RunProcReturn("select * from Sc_ProcessExchangeBillMain where HBillNo='" + HBillNo + "' ", "Sc_ProcessExchangeBillMain");
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
MessageBox.Show("查无数据!");
|
}
|
else
|
{
|
DataSet dataSet= oCN.RunProcReturn("select * from Sc_ICMOBillStatus_Tmp where HSourceBillNo='" + HBillNo + "' and HICMOStatus<>'0'", "Sc_ICMOBillStatus_Tmp");
|
if (dataSet.Tables[0].Rows.Count > 0)
|
{
|
string HProjectNum = ds.Tables[0].Rows[0]["HProjectNum"].ToString();
|
this.txtHBath.Text = HProjectNum.Split('-')[0];
|
this.txtHBardCode.ReadOnly = true;
|
}
|
else {
|
MessageBox.Show(HBillNo + ",流转卡未开工!");
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show(this, e.Message, "提示");
|
}
|
}
|
|
private void txtHBardCode_KeyDown(object sender, KeyEventArgs e)
|
{
|
if (e.KeyCode == Keys.Enter)
|
{
|
SelectHBardCode(this.txtHBardCode.Text);
|
}
|
}
|
|
//员工编码回车
|
private void HEmpCode_KeyDown(object sender, KeyEventArgs e)
|
{
|
if (e.KeyCode == Keys.Enter)
|
{
|
SelectHEmpCode(this.HEmpCode.Text);
|
}
|
}
|
|
//查询员工
|
public void SelectHEmpCode(string HNumber)
|
{
|
try
|
{
|
DataSet ds = oCN.RunProcReturn("select * from Gy_Employee where HNumber='" + HNumber + "' ", "Gy_Employee");
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
MessageBox.Show("查无数据!");
|
}
|
else
|
{
|
string HEmpCodeName = ds.Tables[0].Rows[0]["HName"].ToString();
|
string HEmpCodeNumber = ds.Tables[0].Rows[0]["HNumber"].ToString();
|
this.HEmpCodeName.Text = HEmpCodeName;
|
this.HEmpCode.Text = HEmpCodeNumber;
|
this.HEmpCode.ReadOnly = true;
|
}
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show(this, e.Message, "提示");
|
}
|
}
|
|
//更换员工
|
private void btnSelect_Click(object sender, EventArgs e)
|
{
|
this.HEmpCode.ReadOnly = false;
|
this.HEmpCode.Focus();
|
this.HEmpCode.Text = "";
|
this.HEmpCodeName.Text = "";
|
|
this.HSouce.ReadOnly = false;
|
this.HSouce.Focus();
|
this.HSouce.Text = "";
|
this.HSouceName.Text = "";
|
}
|
|
//读取数据
|
private void btnReadData_Click(object sender, EventArgs e)
|
{
|
|
if (this.HEmpCode.Text == "" || this.txtHBath.Text == ""|| this.HSouceName.Text == "")
|
{
|
|
MessageBox.Show("请输入生产资源,员工编码,者条形码!");
|
}
|
else {
|
if (num == 0)
|
{
|
this.btnReadData.Text = "暂停";
|
this.timer1.Enabled = true;
|
this.btnGH.Enabled = false;
|
this.btnSelect.Enabled = false;
|
num = 1;
|
//ReadCsv();
|
}
|
else if (num == 1)
|
{
|
this.btnReadData.Text = "启动";
|
this.timer1.Enabled = false;
|
this.btnGH.Enabled = true;
|
this.btnSelect.Enabled = true;
|
num = 0;
|
}
|
}
|
}
|
|
private void timer1_Tick(object sender, EventArgs e)
|
{
|
if (this.HEmpCode.Text == ""|| this.txtHBath.Text == "")
|
{
|
MessageBox.Show("请输入员工编码或者流转卡!");
|
}
|
else
|
{
|
ReadCsv();
|
}
|
}
|
|
//读取csv格式文件
|
private void ReadCsv()
|
{
|
string Date = DateTime.Now.ToString("yyMMdd");
|
string HBath = this.txtHBath.Text;
|
|
string Year = DateTime.Now.Year.ToString();
|
Year = Year.Substring(Year.Length - 2, 2);
|
string Month = DateTime.Now.Month.ToString();
|
Month = Month.Length > 1 ? Month : "0" + Month;
|
string Day = DateTime.Now.Day.ToString();
|
Day = Day.Length > 1 ? Day : "0" + Day;
|
|
//注:斯莫尔组装3 在E盘 _332009
|
//其余在D盘 _C332001_2M
|
//string csv_file_path = $@"C:\Users\admin\Desktop\新建文件夹 (2)\20231123.csv";
|
string csv_file_path = $@"D:\THLCR_Data\{HBath}\{HBath}_{Date}_C332001_2M.csv"; //组装1 组装2路径
|
//string csv_file_path = $@"E:\THLCR_Data\{HBath}\{HBath}_{Date}_332009.csv"; //组装3路径
|
//15车间缺少路径 D:\DATA SAVE\年\年月\年月日\批次号\数据保存.csv
|
//string csv_file_path = $@"D:\DATA SAVE\{Year}\{Year + Month}\{Year + Month + Day}\{HBath}\数据保存.csv";
|
|
|
bool flag = File.Exists(csv_file_path);
|
|
if (flag)
|
{
|
DataTable dt = new DataTable();
|
string HTypeName = "无尘";
|
//string csv_file_path_Read = @"C:\Users\admin\Desktop\新建文件夹 (2)\20231123_1.csv";
|
string csv_file_path_Read = $@"D:\THLCR_Data\{HBath}\{HBath}_{Date}_C332001_2M_Read.csv"; //组装1 组装2路径
|
//string csv_file_path_Read = $@"E:\THLCR_Data\{HBath}\{HBath}_{Date}_332009_Read.csv"; //组装3路径
|
|
//string HTypeName = "15";
|
////15车间缺少路径 D:\DATA SAVE\年\年月\年月日\批次号\数据保存.csv
|
////string csv_file_path_Read = $@"C:\Users\admin\Desktop\新建文件夹 (2)\DATA SAVE\数据保存_MES读取.csv";
|
|
//string csv_file_path_Read = $@"D:\DATA SAVE\{Year}\{Year + Month}\{Year + Month + Day}\{HBath}\数据保存_MES读取.csv";
|
|
File.Copy(csv_file_path, csv_file_path_Read, true);
|
|
string contents = File.ReadAllText(csv_file_path_Read, Encoding.GetEncoding("gb2312"));
|
|
TextFieldParser parser = new TextFieldParser(new StringReader(contents));
|
|
parser.HasFieldsEnclosedInQuotes = true;
|
parser.SetDelimiters(",");
|
|
string[] fields;
|
|
while (!parser.EndOfData)
|
{
|
fields = parser.ReadFields();
|
|
if (dt.Columns.Count == 0)
|
{
|
foreach (string field in fields)
|
{
|
dt.Columns.Add(new DataColumn(string.IsNullOrWhiteSpace(field.Trim('\"')) ? null : field.Trim('\"'), typeof(string)));
|
}
|
}
|
else
|
{
|
dt.Rows.Add(fields.Select(item => string.IsNullOrWhiteSpace(item.Trim('\"')) ? null : item.Trim('\"')).ToArray());
|
}
|
}
|
parser.Close();
|
|
//获取当前时间
|
DateTime ActionTime = DateTime.Parse(DateTime.Now.AddMinutes(-120).ToString("yyyy-MM-dd HH:mm:ss"));
|
DateTime EndTime = DateTime.Parse(DateTime.Now.AddMinutes(1).ToString("yyyy-MM-dd HH:mm:00"));
|
bool flag_1 = false;
|
bool flag_2 = false;
|
foreach (DataRow item in dt.Rows)
|
{
|
if (HTypeName == "无尘")
|
{
|
DateTime NowTime = DateTime.Parse(item["测试时间"].ToString());
|
string HBadCodeSN = item["序号"].ToString();
|
|
if (((NowTime >= ActionTime && NowTime < EndTime) || dt.Rows.Count <= 20) && HBadCodeSN != "")
|
{
|
|
string HSourceCode = this.HSouce.Text; //设备编号 组装1 9994 组装2 9995 组装3 9996
|
string HEmpCode = this.HEmpCode.Text;
|
string HBarCode = item["序号"].ToString();
|
string HCreateTime = item["测试时间"].ToString();
|
string HDate = DateTime.Parse(item["测试时间"].ToString()).ToString("yyyy-MM-dd");
|
string HResult = item["分选"].ToString() == "PASS" ? "OK" : "NG";
|
string HProcNumber = "005"; //005
|
int HFlag = 0;
|
//string HEmpCode = "";
|
if (HBadCodeSN != "")
|
{
|
string HType = "";
|
int HCount = 1;
|
|
DataSet ds = oCN.RunProcReturn(@"select * from Sb_EquipMentCollection_SN where HBarCode='" + HBarCode + "' and HCreateTime='" + HCreateTime + "'", "Sb_EquipMentCollection_SN");
|
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
if (Get_AllowLoadData(HBarCode, HProcNumber, flag_1,out flag_2))
|
{
|
string sql = $@"insert into Sb_EquipMentCollection_SN(HSourceCode,HEmpCode,HType,HBarCode,HCount,HCreateTime,HDate,HResult,HProcNumber,HFlag)
|
values('{HSourceCode}','{HEmpCode}','{HType}','{HBarCode}','{HCount}','{HCreateTime}','{HDate}','{HResult}','{HProcNumber}','{HFlag}')";
|
oCN.RunProc(sql);
|
ListSelect.Items.Add("条码:" + HBarCode + ",当前日期:" + DateTime.Now.ToString() + ",日期:" + HCreateTime + ",结果:" + HResult);
|
|
for (int i = 0; i < dt.Columns.Count; i++)
|
{
|
if (dt.Columns[i].ColumnName.Contains("Hz"))
|
{
|
HType = dt.Columns[i].ColumnName;
|
string HCount_1 = item[HType].ToString();
|
|
DataSet ds1 = oCN.RunProcReturn(@"select * from Sb_EquipMentCollectionTechParam_SN where HBarCode='" + HBarCode + "' and HType='" + HType + "'", "Sb_EquipMentCollectionTechParam_SN");
|
|
if (ds1.Tables[0].Rows.Count == 0)
|
{
|
string sql1 = $@"insert into Sb_EquipMentCollectionTechParam_SN(HSourceCode,HEmpCode,HType,HBarCode,HCount,HCreateTime,HDate,HResult,HProcNumber,HFlag)
|
values('{HSourceCode}','{HEmpCode}','{HType}','{HBarCode}','{HCount_1}','{HCreateTime}','{HDate}','{HResult}','{HProcNumber}','{HFlag}')";
|
oCN.RunProc(sql1);
|
//ListSelect.Items.Add("条码:" + HBarCode + ",日期:" + HCreateTime + ",结果:" + HResult);
|
}
|
}
|
}
|
}
|
else {
|
flag_1 = flag_2;
|
}
|
}
|
}
|
}
|
}
|
|
if (HTypeName == "15")
|
{
|
DateTime NowTime = DateTime.Parse(item["CS_时间"].ToString());
|
string HBadCodeSN = item["CS_DM码"].ToString();
|
|
if (((NowTime >= ActionTime && NowTime < EndTime) || dt.Rows.Count <= 20) && HBadCodeSN != "")
|
{
|
|
string HSourceCode = this.HSouce.Text; //设备编号 组装1 9994 组装2 9995 组装3 9996
|
string HEmpCode = this.HEmpCode.Text;
|
string HBarCode = item["CS_DM码"].ToString();
|
string HCreateTime = item["CS_时间"].ToString();
|
string HDate = DateTime.Parse(item["CS_时间"].ToString()).ToString("yyyy-MM-dd");
|
string HResult = item["CS_总结果"].ToString();
|
string HProcNumber = "005";
|
int HFlag = 0;
|
|
if (HResult != "") {
|
if (HBadCodeSN != "")
|
{
|
string HType = "";
|
int HCount = 1;
|
|
DataSet ds = oCN.RunProcReturn(@"select * from Sb_EquipMentCollection_SN where HBarCode='" + HBarCode + "' and HCreateTime='" + HCreateTime + "'", "Sb_EquipMentCollection_SN");
|
|
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
if (Get_AllowLoadData(HBarCode, HProcNumber, flag_1, out flag_2))
|
{
|
string sql = $@"insert into Sb_EquipMentCollection_SN(HSourceCode,HEmpCode,HType,HBarCode,HCount,HCreateTime,HDate,HResult,HProcNumber,HFlag)
|
values('{HSourceCode}','{HEmpCode}','{HType}','{HBarCode}','{HCount}','{HCreateTime}','{HDate}','{HResult}','{HProcNumber}','{HFlag}')";
|
oCN.RunProc(sql);
|
ListSelect.Items.Add("条码:" + HBarCode + ",日期:" + HCreateTime + ",结果:" + HResult);
|
|
for (int i = 0; i < dt.Columns.Count; i++)
|
{
|
if (dt.Columns[i].ColumnName.Contains("CS_"))
|
{
|
HType = dt.Columns[i].ColumnName;
|
string HCount_1 = item[HType].ToString();
|
string HResult_TechParam = "";
|
if (HType != "CS_时间" && HType != "CS_DM码" && HType != "CS_总结果")
|
{
|
HResult_TechParam = HCount_1;
|
double number = 0;
|
if (!Double.TryParse(HCount_1, out number))
|
{
|
HCount_1 = "0";
|
}
|
|
DataSet ds1 = oCN.RunProcReturn(@"select * from Sb_EquipMentCollectionTechParam_SN where HBarCode='" + HBarCode + "' and HType='" + HType + "'", "Sb_EquipMentCollectionTechParam_SN");
|
|
if (ds1.Tables[0].Rows.Count == 0)
|
{
|
string sql1 = $@"insert into Sb_EquipMentCollectionTechParam_SN(HSourceCode,HEmpCode,HType,HBarCode,HCount,HCreateTime,HDate,HResult,HProcNumber,HFlag)
|
values('{HSourceCode}','{HEmpCode}','{HType}','{HBarCode}','{(HCount_1 == "" ? " 0" : HCount_1)}','{HCreateTime}','{HDate}','{HResult_TechParam}','{HProcNumber}','{HFlag}')";
|
oCN.RunProc(sql1);
|
//ListSelect.Items.Add("条码:" + HBarCode + ",日期:" + HCreateTime + ",结果:" + HResult);
|
}
|
}
|
}
|
}
|
}
|
else
|
{
|
flag_1 = flag_2;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
|
//根据条码 判断是否保存
|
public bool Get_AllowLoadData(string HBarCode,string HProcNumber,bool flag_1,out bool flag_2)
|
{
|
if (HBarCode.Length != 29 && HBarCode.Length != 50)
|
{
|
flag_2 = false;
|
return false;
|
}
|
|
//判断长度是否为29位 无尘车间
|
string HProcExchBillNo = "";
|
string HProcExchInterID = "";
|
if (HBarCode.Length == 29)
|
{
|
string str1 = HBarCode.Substring(18, 8);
|
string str2 = HBarCode.Substring(23, 3);
|
|
DataSet ds = oCN.RunProcReturn("select HInterID,HBillNo from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%' or HProjectNum like'" + str2 + "-1%' order by HMakeDate desc", "Sc_ProcessExchangeBillMain");
|
//判断是否能找到对应的流转卡
|
if (ds.Tables[0].Rows.Count > 0)
|
{
|
HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
|
HProcExchInterID = ds.Tables[0].Rows[0]["HInterID"].ToString();
|
}
|
else {
|
if (!flag_1)
|
{
|
MessageBox.Show(new Form { TopMost = true }, "条码:" + HBarCode + ",流转卡不存在!");
|
}
|
DBHelper.CustomWriteLog("条码:" + HBarCode + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd"));
|
flag_2 = true;
|
return false;
|
}
|
}
|
//判断长度是否为50位 15车间
|
else if (HBarCode.Length == 50)
|
{
|
string str1 = HBarCode.Substring(42, 8);
|
DataSet ds = oCN.RunProcReturn("select HBillNo from Sc_ProcessExchangeBillMain where HProjectNum like'" + str1 + "-1%'", "Sc_ProcessExchangeBillMain");
|
//判断是否能找到对应的流转卡
|
if (ds.Tables[0].Rows.Count > 0)
|
{
|
HProcExchBillNo = ds.Tables[0].Rows[0]["HBillNo"].ToString();
|
}
|
else {
|
if (!flag_1)
|
{
|
MessageBox.Show("条码:" + HBarCode + ",流转卡不存在!");
|
}
|
DBHelper.CustomWriteLog("条码:" + HBarCode + ",流转卡不存在!", DateTime.Now.ToString("yyyy-MM-dd"));
|
|
flag_2 = true;
|
return false;
|
}
|
}
|
|
|
//过站控制
|
DataSet ds1 = oCN.RunProcReturn(@"select b.HProcNo,b.HProcID,p.HName from Sc_ProcessExchangeBillMain a WITH(NOLOCK)
|
inner join Sc_ProcessExchangeBillSub b WITH(NOLOCK) on a.HInterID=b.HInterID
|
left join Gy_Process p WITH(NOLOCK) on b.HProcID=p.HItemID
|
where a.HBillNo='" + HProcExchBillNo + "' and p.HNumber='" + HProcNumber + "'", "Sc_ProcessExchangeBillMain");
|
string HProcID = "0";
|
if (ds1.Tables[0].Rows.Count > 0)
|
{
|
HProcID = ds1.Tables[0].Rows[0]["HProcID"].ToString();
|
string HProName = ds1.Tables[0].Rows[0]["HName"].ToString();
|
|
ds1 = oCN.RunProcReturn("exec h_p_Sc_SNBarcodeProcCtrl_S '" + HBarCode + "'," + HProcID, "h_v_Gy_QualifiedRecordsList");
|
|
if (ds1.Tables[0].Rows.Count == 0)
|
{
|
if (!flag_1)
|
{
|
MessageBox.Show("条码:" + HBarCode + "工序:" + HProName + ",工序控制查无数据!");
|
}
|
DBHelper.CustomWriteLog("条码:" + HBarCode + "工序:" + HProName + ",工序控制查无数据!", DateTime.Now.ToString("yyyy-MM-dd"));
|
|
flag_2 = true;
|
return false;
|
}
|
else if (ds1.Tables[0].Rows[0]["HBack"].ToString() == "2")
|
{
|
if (!flag_1)
|
{
|
MessageBox.Show("条码:" + HBarCode + "工序:" + HProcID + "," + ds1.Tables[0].Rows[0]["HBackRemark"].ToString() + "!");
|
}
|
DBHelper.CustomWriteLog("条码:" + HBarCode + "工序:" + HProcID + "," + ds1.Tables[0].Rows[0]["HBackRemark"].ToString() + "!", DateTime.Now.ToString("yyyy-MM-dd"));
|
|
flag_2 = true;
|
return false;
|
}
|
}
|
|
//查询出站数量是否超过流转卡数量
|
ds1 = oCN.RunProcReturn($@"select (b.HQty -sum(isnull(ou.HQty,0))-sum(isnull(ou.HBadCount,0))) HQty from Sc_ProcessExchangeBillSub b WITH(NOLOCK)
|
left join Sc_StationOutBillMain ou WITH(NOLOCK) on b.HInterID=ou.HProcExchInterID and b.HEntryID=ou.HProcExchEntryID
|
where b.HInterID={HProcExchInterID} and b.HProcID={HProcID}
|
group by b.HInterID,b.HEntryID,b.HQty", "Sc_ProcessExchangeBill_Out");
|
|
if (double.Parse(ds1.Tables[0].Rows[0][0].ToString()) < 0)
|
{
|
if (!flag_1)
|
{
|
MessageBox.Show("流转卡:" + HProcExchBillNo + ",出站数量超过流转卡数量!");
|
}
|
DBHelper.CustomWriteLog("流转卡:" + HProcExchBillNo + ",出站数量超过流转卡数量!", DateTime.Now.ToString("yyyy-MM-dd"));
|
flag_2 = true;
|
return false;
|
}
|
|
//增加产线组装追溯单
|
DataSet dataSet = oCN.RunProcReturn("exec h_p_Gy_BarCodeBillBomList '" + HProcExchBillNo + "'," + HProcID, "h_p_Gy_BarCodeBillBomList");
|
if (dataSet.Tables[0].Rows.Count > 0)
|
{
|
//判配件数量是否等于0
|
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
|
{
|
double SYHQty = double.Parse(dataSet.Tables[0].Rows[i]["配件数量"].ToString());
|
string HMaterNamePJ = dataSet.Tables[0].Rows[i]["配件代码"].ToString();
|
string HMaterBarCode = dataSet.Tables[0].Rows[i]["HBarCode"].ToString();
|
if (SYHQty == 0)
|
{
|
if (!flag_1)
|
{
|
MessageBox.Show("流转卡:" + HProcExchBillNo + ",配件条码:" + HMaterBarCode + ",配件代码:" + HMaterNamePJ + ",数量为0!");
|
}
|
DBHelper.CustomWriteLog("流转卡:" + HProcExchBillNo + ",配件条码:" + HMaterBarCode + ",配件代码:" + HMaterNamePJ + ",数量为0!", DateTime.Now.ToString("yyyy-MM-dd"));
|
flag_2 = true;
|
return false;
|
}
|
}
|
}
|
flag_2 = false;
|
return true;
|
}
|
|
//生产资源回车
|
private void HSouce_KeyDown(object sender, KeyEventArgs e)
|
{
|
if (e.KeyCode == Keys.Enter)
|
{
|
SelectHSouc(this.HSouce.Text);
|
}
|
}
|
|
//查询生产资源
|
public void SelectHSouc(string HNumber)
|
{
|
try
|
{
|
DataSet ds = oCN.RunProcReturn("select * from Gy_Source where HNumber='" + HNumber + "' ", "Gy_Source");
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
MessageBox.Show("查无数据!");
|
}
|
else
|
{
|
string HSouceName = ds.Tables[0].Rows[0]["HName"].ToString();
|
string HSouceNumber = ds.Tables[0].Rows[0]["HNumber"].ToString();
|
this.HSouceName.Text = HSouceName;
|
this.HSouce.Text = HSouceNumber;
|
this.HSouce.ReadOnly = true;
|
}
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show(this, e.Message, "提示");
|
}
|
}
|
|
private void ReadCSV_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
if (num == 1)
|
{
|
MessageBox.Show("当前按钮未暂停,不允许关闭!");
|
e.Cancel = true;
|
}
|
else if (MessageBox.Show("确定要关闭吗?", "确认", MessageBoxButtons.YesNo) == DialogResult.No)
|
{
|
e.Cancel = true;
|
}
|
}
|
}
|
}
|