using Newtonsoft.Json;
|
using System;
|
using System.Collections.Generic;
|
using System.ComponentModel;
|
using System.Data;
|
using System.Drawing;
|
using System.IO;
|
using System.Linq;
|
using System.Net.Http;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Web;
|
using System.Windows.Forms;
|
|
namespace EquipmentCollectionForm
|
{
|
public partial class EquipmentCollectionForm : Form
|
{
|
private json objJsonResult = new json();
|
DataTable dt = new DataTable();
|
public DBHelper oCN = new DBHelper();
|
public string TimeDate = "";
|
public EquipmentCollectionForm()
|
{
|
InitializeComponent();
|
}
|
|
private void EquipmentCollectionForm_Load(object sender, EventArgs e)
|
{
|
this.txtBegin.ReadOnly = true;
|
this.txtEnd.ReadOnly = true;
|
this.txtLj.ReadOnly = true;
|
this.btnSave.Enabled = false;
|
this.txtHMaterNumber.ReadOnly = true;
|
//this.btnRest.Enabled = false;
|
//制单编码只读
|
this.txtHMakerNumber.ReadOnly = true;
|
//制单人提示
|
this.txtHMaker.ForeColor = Color.LightGray;
|
this.txtHMaker.Text = "请输入用户编码!";
|
|
bindCbox();
|
|
}
|
|
private void btnBegin_Click(object sender, EventArgs e)
|
{
|
if (this.txtHBathNo.Text == "" || this.txtHBathNo.ReadOnly == false)
|
//if (false)
|
{
|
MessageBox.Show("请输入批次号进行确认!");
|
}
|
else
|
{
|
this.txtBegin.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
//this.txtBegin.Text = "2024-11-21 13:40:27";
|
this.btnBegin.Enabled = false;
|
if (cmbEquipFile.SelectedIndex == 1)
|
{
|
this.txtHBathNo.ReadOnly = true;
|
this.timer.Enabled = true;
|
}
|
}
|
}
|
|
private void btnEnd_Click(object sender, EventArgs e)
|
{
|
if (this.txtBegin.Text == "")
|
{
|
MessageBox.Show("请点击开始按钮进行开始确认!");
|
}
|
else
|
{
|
this.txtEnd.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
//this.txtEnd.Text = "2024-09-24 09:52:39";
|
this.btnEnd.Enabled = false;
|
|
if (cmbEquipFile.SelectedIndex == 1)
|
{
|
this.btnSave.Enabled = true;
|
}
|
}
|
}
|
|
private void btnLj_Click(object sender, EventArgs e)
|
{
|
if (this.txtEnd.Text == "")
|
{
|
MessageBox.Show("请点击结束按钮进行结束确认!");
|
}
|
else
|
{
|
//路径赋值给文本
|
using (OpenFileDialog openFile = new OpenFileDialog())
|
{
|
openFile.Multiselect = true; // 允许选择多个文件
|
DialogResult result = openFile.ShowDialog();
|
if (result == DialogResult.OK)
|
{
|
//保存按钮灰掉
|
this.btnSave.Enabled = true;
|
|
string selectedFolderPath = openFile.FileName;
|
this.txtLj.Text = selectedFolderPath;
|
|
objJsonResult = Xt_CSVReadText(openFile.FileNames, 1);
|
dt = objJsonResult.dataTable;
|
|
if (objJsonResult.code == "0")
|
{
|
MessageBox.Show(objJsonResult.Message);
|
}
|
else
|
{
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
ListData.Items.Add("底孔直径:" + dt.Rows[i]["BottomHoleDiameter"].ToString() +
|
",有无螺牙检测数据:" + dt.Rows[i]["TestingData"].ToString() +
|
",有无螺牙检测结果:" + dt.Rows[i]["DetectionResult"].ToString() +
|
",时间:" + dt.Rows[i]["HDate"].ToString());
|
}
|
|
}
|
}
|
}
|
}
|
}
|
|
//读取CSV文件数据 根据文件路径找到对应文件 并获取对应的数据
|
public json Xt_CSVReadText(string[] FilePath, int num)
|
{
|
try
|
{
|
DataTable dt = new DataTable(num.ToString());
|
dt.Columns.Add("BottomHoleDiameter");
|
dt.Columns.Add("TestingData");
|
dt.Columns.Add("DetectionResult");
|
dt.Columns.Add("HDate");
|
|
DataTable dt2 = new DataTable();
|
for (int u = 0; u < FilePath.Length; u++)
|
{
|
using (StreamReader sr = new StreamReader(FilePath[u], Encoding.GetEncoding("gb2312")))
|
{
|
string[] headers = sr.ReadLine()?.Split(',');
|
if (headers != null && u == 0)
|
{
|
foreach (var header in headers)
|
{
|
dt2.Columns.Add(header.Trim());
|
}
|
}
|
|
string line;
|
while ((line = sr.ReadLine()) != null)
|
{
|
var values = line.Split(',');
|
DataRow row = dt2.NewRow();
|
|
for (int i = 0; i < values.Length; i++)
|
{
|
// 这里可能需要添加类型转换和错误处理
|
row[i] = values[i].Trim();
|
}
|
|
dt2.Rows.Add(row);
|
}
|
}
|
}
|
DateTime HBegin = DateTime.Parse(this.txtBegin.Text);
|
DateTime HEnd = DateTime.Parse(this.txtEnd.Text);
|
|
for (int i = 0; i < dt2.Rows.Count; i++)
|
{
|
for (int j = 0; j < 2; j++)
|
{
|
DateTime Now = DateTime.Parse(dt2.Rows[i][dt2.Columns[6]].ToString() + " " + dt2.Rows[i][dt2.Columns[7]].ToString());
|
if (Now >= HBegin && Now <= HEnd) {
|
DataRow dr = dt.NewRow();
|
dr["BottomHoleDiameter"] = dt2.Rows[i][dt2.Columns[j]].ToString();
|
dr["TestingData"] = dt2.Rows[i][dt2.Columns[j + 2]].ToString();
|
dr["DetectionResult"] = dt2.Rows[i][dt2.Columns[j + 4]].ToString();
|
dr["HDate"] = DateTime.Parse(dt2.Rows[i][dt2.Columns[6]].ToString() + " " + dt2.Rows[i][dt2.Columns[7]].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
|
dt.Rows.Add(dr);
|
}
|
}
|
}
|
|
objJsonResult.code = "1";
|
objJsonResult.count = 1;
|
objJsonResult.Message = "";
|
objJsonResult.dataTable = dt;
|
return objJsonResult;
|
}
|
catch (Exception e)
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = e.Message;
|
objJsonResult.dataTable = null;
|
return objJsonResult;
|
}
|
}
|
|
|
private void txtHBathNo_KeyUp(object sender, KeyEventArgs e)
|
{
|
if (e.KeyCode == Keys.Enter)
|
{
|
if (this.txtHMakerNumber.Text == "")
|
{
|
MessageBox.Show("请输入制单人信息!");
|
}
|
else {
|
Get_DisplayBard();
|
}
|
//this.txtHBathNo.ReadOnly = true;
|
|
}
|
}
|
|
//查询条码数据
|
public void Get_DisplayBard() {
|
string HBarCode = this.txtHBathNo.Text;
|
DataSet ds = oCN.RunProcReturn("select HBatchNo,m.HNumber,a.HMaterID from Gy_BarCodeBill a left join Gy_Material m on a.HMaterID = m.HItemID where HBarCode='" + HBarCode + "'", "Gy_BarCodeBill");
|
|
if (ds.Tables[0].Rows.Count == 0)
|
{
|
MessageBox.Show("条码查无数据!");
|
}
|
else {
|
this.txtHBathNo.Text = ds.Tables[0].Rows[0]["HBatchNo"].ToString();
|
this.txtHMaterNumber.Text = ds.Tables[0].Rows[0]["HNumber"].ToString();
|
this.HMaterID.Text = ds.Tables[0].Rows[0]["HMaterID"].ToString();
|
}
|
|
this.txtHBathNo.ReadOnly = true;
|
}
|
|
private void btnRest_Click(object sender, EventArgs e)
|
{
|
this.txtHBathNo.Text = "";
|
this.txtHMaterNumber.Text = "";
|
this.HMaterID.Text = "0";
|
this.txtHBathNo.ReadOnly = false;
|
|
this.btnBegin.Enabled = true;
|
this.txtBegin.Text = "";
|
|
this.btnEnd.Enabled = true;
|
this.txtEnd.Text = "";
|
|
this.btnSave.Enabled = false;
|
|
this.txtLj.Text = "";
|
|
this.ListData.Items.Clear();
|
this.timer.Enabled = false;
|
}
|
|
private async void btnSave_Click(object sender, EventArgs e)
|
{
|
DialogResult dr = MessageBox.Show("确认保存?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
|
if (dr == DialogResult.Yes) {
|
|
string Url = DBHelper.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "Config/SQLAPI.config", "sUrl");
|
JsonResult jsonResult = await FindAccessToken(Url);
|
|
string EquipFile = this.cmbEquipFile.Text;
|
|
switch (EquipFile)
|
{
|
case "螺母全检":
|
SaveFullInspectionOfNuts(jsonResult.data.token, Url);
|
break;
|
case "螺母压装":
|
SaveNutPressFit(jsonResult.data.token, Url, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
break;
|
case "注塑机":
|
SaveInjectionMoldingMachine(jsonResult.data.token, Url, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
break;
|
}
|
this.btnSave.Enabled = false;
|
}
|
}
|
|
//螺母全检保存
|
public async void SaveFullInspectionOfNuts(string token,string url) {
|
try
|
{
|
|
JsonEquipmentData jsonResult =await FindDeviceList(url, token);
|
|
if (jsonResult.code != "0")
|
{
|
this.btnSave.Enabled = true;
|
MessageBox.Show("设备列表报错:" + jsonResult.message);
|
}
|
else
|
{
|
string nos = "";
|
//获取去设备编码
|
for (int i = 0; i < jsonResult.data.Count; i++)
|
{
|
if (jsonResult.data[i].no == this.cmbEquipFile.SelectedValue.ToString())
|
{
|
nos = jsonResult.data[i].no;
|
}
|
}
|
string HBegin = this.txtBegin.Text;
|
string HEnd = this.txtEnd.Text;
|
jsonResult = await FindDevicePropCalc(url, token, nos, HBegin, HEnd);
|
if (jsonResult.code != "0")
|
{
|
this.btnSave.Enabled = true;
|
MessageBox.Show("数量获取报错:" + jsonResult.message);
|
}
|
else {
|
double HInSpectQty = 0;//检验数量
|
double HRightQty = 0;//合格
|
double HUnRightQty = 0;//不合格
|
double HUnKnowQty = 0;//可疑
|
|
for (int i = 0; i < jsonResult.data.Count; i++)
|
{
|
if (jsonResult.data[i].propId == 173)
|
{
|
//HInSpectQty = jsonResult.data[i].sum;
|
}
|
else if (jsonResult.data[i].propId == 469)
|
{
|
HRightQty = jsonResult.data[i].sum;
|
}
|
else if (jsonResult.data[i].propId == 606)
|
{
|
HUnKnowQty = jsonResult.data[i].sum;
|
}
|
else if (jsonResult.data[i].propId == 470)
|
{
|
HUnRightQty = jsonResult.data[i].sum;
|
}
|
}
|
//通过双方讨论 最终采纳 检验数量=合格+不合格+可疑
|
HInSpectQty = HRightQty + HUnKnowQty + HUnRightQty;
|
|
|
string HNumber = "";
|
int HSourceID = 0;
|
string HSourceNumber = "";
|
|
switch (this.cmbEquipFile.Text)
|
{
|
case "螺母全检":
|
HNumber = "LMJC";
|
HSourceNumber = "1030";
|
break;
|
case "螺母压装":
|
HNumber = "LMYZ";
|
HSourceNumber = "1029";
|
break;
|
}
|
|
//查询生产资源
|
DataSet dsSouce = oCN.RunProcReturn("select * from Gy_Source with(nolock) where HNumber='" + HSourceNumber + "'", "Gy_Source");
|
if (dsSouce.Tables[0].Rows.Count == 0)
|
{
|
this.btnSave.Enabled = true;
|
MessageBox.Show("生产资源查无数据!");
|
}
|
else {
|
|
HSourceID = int.Parse(dsSouce.Tables[0].Rows[0]["HItemID"].ToString());
|
|
//查询检验方案
|
DataSet dataSet = oCN.RunProcReturn(@"select a.HInterID HQCSchemeID,b.HQCCheckItemID, ch.HNumber HQCCheckItemNumber,m.HNumber,HUpLimit,HDownLimit,HTargetVal,a.HProcID,b.HInspectInstruMentID
|
,b.HAnalysisMethod
|
from Gy_QCCheckProjectMain a with(nolock)
|
inner join Gy_QCCheckProjectSub b with(nolock) on a.HInterID=b.HInterID
|
left join Gy_Material m with(nolock) on a.HMaterID=m.HItemID
|
left join Gy_QCCheckItem ch with(nolock) on b.HQCCheckItemID=ch.HItemID
|
left join Gy_InspectInstruMent ment on b.HInspectInstruMentID=ment.HItemID
|
where m.HNumber='" + this.txtHMaterNumber.Text + "' and ment.HNumber='" + HNumber + "'", "Gy_QCCheckProjectMain");
|
|
//保存数据
|
if (dataSet.Tables[0].Rows.Count > 0)
|
{
|
string sExeReturnInfo = "";
|
string BillType = "7519";
|
long HInterID = oCN.CreateBillID_Prod(BillType, ref sExeReturnInfo);
|
string HBillNo = oCN.CreateBillCode(BillType, ref sExeReturnInfo, true);
|
if (dataSet.Tables[0].Rows.Count <= dt.Columns.Count - 1)
|
{
|
oCN.BeginTran();
|
|
string HProcID = dataSet.Tables[0].Rows[0]["HProcID"].ToString();
|
string HMaterID = this.HMaterID.Text;
|
string HQCSchemeID = dataSet.Tables[0].Rows[0]["HQCSchemeID"].ToString();
|
string HBatchNo = this.txtHBathNo.Text;
|
int HLastResults = 1;
|
for (int i = 0; i < dataSet.Tables[0].Rows.Count; i++)
|
{
|
int HLastResult = 1;
|
string HAnalysisMethod = dataSet.Tables[0].Rows[i]["HAnalysisMethod"].ToString();
|
decimal HUpLimit = 0;
|
decimal HDownLimit = 0;
|
|
if (HAnalysisMethod == "2")
|
{
|
HUpLimit = decimal.Parse(dataSet.Tables[0].Rows[i]["HTargetVal"].ToString()) + decimal.Parse(dataSet.Tables[0].Rows[i]["HUpLimit"].ToString());
|
HDownLimit = decimal.Parse(dataSet.Tables[0].Rows[i]["HTargetVal"].ToString()) + decimal.Parse(dataSet.Tables[0].Rows[i]["HDownLimit"].ToString());
|
}
|
|
|
for (int j = 0; j < dt.Columns.Count - 1; j++)
|
{
|
|
string HQCCheckItemName = "";
|
switch (dt.Columns[j].ColumnName)
|
{
|
case "BottomHoleDiameter":
|
HQCCheckItemName = "DKZJ";
|
break;
|
case "TestingData":
|
HQCCheckItemName = "LYJCSJ";
|
break;
|
case "DetectionResult":
|
HQCCheckItemName = "LYJCJG";
|
break;
|
}
|
//SRM@101.2@VEN00005@CGDD000167@1.02.002.002@20231129@1000
|
if (dataSet.Tables[0].Rows[i]["HQCCheckItemNumber"].ToString().Contains(HQCCheckItemName))
|
{
|
for (int k = 0; k < dt.Rows.Count; k++)
|
{
|
|
if (DateTime.Parse(dt.Rows[k]["HDate"].ToString()) >= DateTime.Parse(HBegin) && DateTime.Parse(dt.Rows[k]["HDate"].ToString()) <= DateTime.Parse(HEnd))
|
{
|
decimal HInSpectValue = decimal.Parse(dt.Rows[k][dt.Columns[j].ColumnName].ToString());
|
|
int HInSpectResult = 1;
|
if (HAnalysisMethod == "2")
|
{
|
HInSpectResult = (HInSpectValue > HUpLimit || HDownLimit > HInSpectValue) ? 0 : 1;
|
}
|
else
|
{
|
HInSpectResult = int.Parse(HInSpectValue.ToString());
|
}
|
|
|
if (HInSpectResult == 1 && HLastResult != 0)
|
{
|
HLastResult = 1;
|
}
|
else
|
{
|
HLastResult = 0;
|
}
|
|
oCN.RunProc("Insert into QC_StockCheckBillSub_ValueGrid " +
|
" (HInterID,HEntryID,HSEQ" +
|
",HInSpectResult,HInSpectValue,HInSpectValueB,HInSpectValueT)" +
|
"values(" + HInterID + "," + ((i + 1)) + "," + (k + 1) + "" +
|
"," + HInSpectResult + "," + dt.Rows[k][dt.Columns[j].ColumnName].ToString() + "," + dt.Rows[k][dt.Columns[j].ColumnName].ToString() + "," + dt.Rows[k][dt.Columns[j].ColumnName].ToString() + ") ");
|
}
|
}
|
break;
|
}
|
}
|
|
oCN.RunProc("Insert into QC_StockCheckBillSub " +
|
" (HInterID,HBillNo_bak,HEntryID,HCloseMan" +
|
",HEntryCloseDate,HCloseType,HRemark,HSourceInterID" +
|
",HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
|
",HQCCheckItemID,HQCStd,HUnit,HQCNote,HResult" +
|
",HMax,HMin,HAvg,HSampleSchemeID,HSampleQty,HSampleDamageQty,HAcceptQty" +
|
",HRejectQty,HSampleUnRightQty,HStatus,HUnitID,HInspectVal,HTargetVal" +
|
",HUpLimit,HDownLimit,HUpOffSet,HDownOffSet,HKeyInspect,HAnalysisMethod,HInspectInstruMentID,HInspectResult" +
|
") values("
|
+ HInterID + ",'" + HBillNo + "'," + (i + 1) + ",''" +
|
",getdate(),0,'',0" +
|
",0,'','',0,0" +
|
"," + dataSet.Tables[0].Rows[i]["HQCCheckItemID"].ToString() + ",'" + dataSet.Tables[0].Rows[i]["HTargetVal"].ToString() + "','','','" + HLastResult + "'" +
|
",'" + dataSet.Tables[0].Rows[i]["HUpLimit"].ToString() + "','" + dataSet.Tables[0].Rows[i]["HDownLimit"].ToString() + "','',0,0,0,0" +
|
",0,0,'',0,'','" + dataSet.Tables[0].Rows[i]["HTargetVal"].ToString() + "'" +
|
",'" + dataSet.Tables[0].Rows[i]["HUpLimit"].ToString() + "','" + dataSet.Tables[0].Rows[i]["HDownLimit"].ToString() + "','','',0,'" + HAnalysisMethod + "'," + dataSet.Tables[0].Rows[i]["HInspectInstruMentID"].ToString() + ",'" + HLastResult + "'" +
|
") ");
|
|
if (HLastResult == 1 && HLastResults != 0)
|
{
|
HLastResults = 1;
|
}
|
else
|
{
|
HLastResults = 0;
|
}
|
}
|
|
//主表
|
oCN.RunProc("Insert Into QC_StockCheckBillMain " +
|
"(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate" +
|
",HYear,HPeriod,HRemark" +
|
",HSourceID,HICMOInterID,HICMOBillNo,HICMOQty,HProcExchInterID,HProcExchEntryID" +
|
",HProcExchBillNo,HProcExchQty,HMaterID,HFirstCheckEmp,HLastResult" +
|
",HMainSourceInterID,HMainSourceEntryID,HMainSourceBillNo,HMainSourceBillType,HICMOEntryID,HQCSchemeID,HShiftsID,HErrTreatment" +
|
",HProcID,HBatchNo,HInSpectQty ,HRightQty ,HUnRightQty ,HUnKnowQty " +
|
") " +
|
" values('" + BillType + "','" + BillType + "'," + HInterID + ",'" + HBillNo + "',1,getdate(),'" + this.txtHMaker.Text + "',getdate()" +
|
"," + DateTime.Now.Year + "," + DateTime.Now.Month + ",''" +
|
"," + HSourceID + ",0,'',0,0,0" +
|
",'',0," + HMaterID + ",'" + this.labHMakerID.Text + "', " + HLastResults +
|
",0,0,'','',0," + HQCSchemeID + ",0,''" +
|
"," + HProcID + ",'" + HBatchNo + "'," + HInSpectQty + "," + HRightQty + ", " + HUnRightQty + ", " + HUnKnowQty + ") ");
|
|
|
oCN.Commit();
|
MessageBox.Show("保存成功!");
|
//this.btnRest.Enabled = true;
|
|
}
|
else
|
{
|
this.btnSave.Enabled = true;
|
MessageBox.Show("当前物料的检验方案与Excel的列不匹配!");
|
}
|
}
|
else
|
{
|
this.btnSave.Enabled = true;
|
MessageBox.Show("当前物料没有对应的检验方案!");
|
}
|
}
|
}
|
}
|
}
|
catch (Exception e)
|
{
|
this.btnSave.Enabled = true;
|
MessageBox.Show("保存失败!" + e.Message);
|
}
|
}
|
|
|
//获取登录的token
|
public async Task<JsonResult> getUrl(string url, FormUrlEncodedContent formData)
|
{
|
|
// 创建 HttpClient 实例
|
using (var client = new HttpClient())
|
{
|
// 发送 POST 请求,并等待响应
|
HttpResponseMessage response = await client.PostAsync(url, formData);
|
|
Dictionary<object, object> dic = new Dictionary<object, object>();
|
JsonResult jsonResult = new JsonResult();
|
// 检查响应是否成功
|
if (response.IsSuccessStatusCode)
|
{
|
// 处理成功响应的逻辑
|
string responseBody = await response.Content.ReadAsStringAsync();
|
jsonResult = JsonConvert.DeserializeObject<JsonResult>(responseBody);
|
}
|
else
|
{
|
// 处理失败响应的逻辑
|
MessageBox.Show("请求失败,状态码:" + response.StatusCode);
|
}
|
return jsonResult;
|
}
|
}
|
|
/// <summary>
|
/// 获取设备列表
|
/// </summary>
|
/// <param name="url"></param>
|
/// <param name="postData"></param>
|
/// <returns></returns>
|
public async Task<JsonEquipmentData> EquipmentList(string url, StringContent postData,string Type)
|
{
|
|
// 创建 HttpClient 实例
|
using (HttpClient client = new HttpClient())
|
{
|
JsonEquipmentData jsonResult = new JsonEquipmentData();
|
try
|
{
|
HttpResponseMessage response;
|
if (Type == "POST")
|
{ // 发起 POST 请求
|
response = await client.PostAsync(url, postData);
|
}
|
else
|
{
|
// 发起 get 请求
|
response = await client.GetAsync(url);
|
}
|
|
|
// 确保请求成功
|
if (response.IsSuccessStatusCode)
|
{
|
// 读取响应内容
|
string responseBody = await response.Content.ReadAsStringAsync();
|
jsonResult = JsonConvert.DeserializeObject<JsonEquipmentData>(responseBody);
|
}
|
else
|
{
|
MessageBox.Show($"请求失败,: {response.StatusCode}");
|
}
|
|
}
|
catch (Exception ex)
|
{
|
MessageBox.Show("请求报错:" + ex.Message);
|
}
|
return jsonResult;
|
}
|
}
|
|
public async Task<JsonResult> EquipResultList(string url, StringContent postData, string Type)
|
{
|
|
// 创建 HttpClient 实例
|
using (HttpClient client = new HttpClient())
|
{
|
JsonResult jsonResult = new JsonResult();
|
try
|
{
|
HttpResponseMessage response;
|
if (Type == "POST")
|
{ // 发起 POST 请求
|
response = await client.PostAsync(url, postData);
|
}
|
else
|
{
|
// 发起 get 请求
|
response = await client.GetAsync(url);
|
}
|
|
|
// 确保请求成功
|
if (response.IsSuccessStatusCode)
|
{
|
// 读取响应内容
|
string responseBody = await response.Content.ReadAsStringAsync();
|
jsonResult = JsonConvert.DeserializeObject<JsonResult>(responseBody);
|
}
|
else
|
{
|
MessageBox.Show($"请求失败,: {response.StatusCode}");
|
}
|
|
}
|
catch (Exception ex)
|
{
|
MessageBox.Show("请求报错:" + ex.Message);
|
}
|
return jsonResult;
|
}
|
}
|
|
|
//获取ID
|
public async Task<JsonResult> FindAccessToken(string url)
|
{
|
string urls = url + EquipmentType.One;
|
// 准备要发送的表单数据
|
var formData = new FormUrlEncodedContent(new[]
|
{
|
new KeyValuePair<string, string>("userName", "admin"),
|
new KeyValuePair<string, string>("password", "admin")
|
// 添加更多键值对,根据您的需要
|
});
|
JsonResult jsonResult = await getUrl(urls, formData);
|
return jsonResult;
|
}
|
|
//获取设备列表
|
public async Task<JsonEquipmentData> FindDeviceList(string url,string token) {
|
//设备列表接口
|
string urls = url + EquipmentType.Two;
|
// 准备要发送的表单数据
|
var postData = new StringContent("{\"token\":\"" + token + "\"}", System.Text.Encoding.UTF8, "application/json");
|
JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
|
return jsonResult;
|
}
|
|
//获取良品、不良品明细
|
public async Task<JsonEquipmentData> FindAllDevicePropsDetailByTimeRange(string url, string token,string nos, string HBegin, string HEnd)
|
{
|
string basePropIds = DBHelper.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "Config/SQLAPI.config", "basePropIds");
|
basePropIds = "[" + basePropIds + "]";
|
nos = nos.Replace(",", "\",\"");
|
string stringJson = "{\"token\":\"" + token + "\",\"deviceNos\":[\"" + nos + "\"],\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\",\"basePropIds\":" + basePropIds + "}";
|
//设备列表接口
|
string urls = url + EquipmentType.Nine;
|
|
// 准备要发送的表单数据
|
var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
|
JsonEquipmentData jsonEquipment = await EquipmentList(urls, postData, "POST");
|
return jsonEquipment;
|
}
|
|
//获取不良数,合数数,可疑数 总数
|
public async Task<JsonEquipmentData> FindDevicePropCalc(string url, string token,string nos,string HBegin,string HEnd)
|
{
|
string stringJson = "{\"token\":\"" + token + "\",\"deviceNo\":\"" + nos + "\",\"propIds\":[606,173,469,470],\"beginTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
|
var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
|
string urls = url + EquipmentType.Seven;
|
JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
|
return jsonResult;
|
}
|
|
|
//获取设备运行状态
|
public async Task<JsonEquipmentData> FindDeviceStatusByNos(string url, string token, string nos)
|
{
|
nos = nos.Replace(",", "\",\"");
|
nos = "\"" + nos + "\"";
|
string stringJson = "{\"token\":\"" + token + "\",\"nos\":[" + nos + "]}";
|
var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
|
string urls = url + EquipmentType.Three;
|
JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
|
return jsonResult;
|
}
|
|
//获取设备时间段产量
|
public async Task<JsonEquipmentData> FindProdByNosAndTime(string url, string token, string nos, string HBegin, string HEnd)
|
{
|
nos = nos.Replace(",", "\",\"");
|
nos = "\"" + nos + "\"";
|
string stringJson = "{\"token\":\"" + token + "\",\"nos\":[" + nos + "],\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
|
var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
|
string urls = url + EquipmentType.Four;
|
JsonEquipmentData jsonResult = await EquipmentList(urls, postData, "POST");
|
return jsonResult;
|
}
|
|
//获取设备运行时间 开机 停机 待机 关机
|
public async Task<JsonResult> FindDeviceStatusTimeByNo(string url, string token, string nos, string HBegin, string HEnd)
|
{
|
nos = nos.Replace(",", "\",\"");
|
nos = "\"" + nos + "\"";
|
string stringJson = "{\"token\":\"" + token + "\",\"no\":" + nos + ",\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
|
var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
|
string urls = url + EquipmentType.Five;
|
JsonResult jsonResult = await EquipResultList(urls, postData, "POST");
|
return jsonResult;
|
}
|
|
//获取注塑机的 开机
|
public async Task<JsonResult> FindDeviceStatusTimeByNosAndOperationMode(string url, string token, string nos, string HBegin, string HEnd)
|
{
|
nos = nos.Replace(",", "\",\"");
|
nos = "\"" + nos + "\"";
|
string stringJson = "{\"token\":\"" + token + "\",\"no\":" + nos + ",\"startTime\":\"" + HBegin + "\",\"endTime\":\"" + HEnd + "\"}";
|
var postData = new StringContent(stringJson, System.Text.Encoding.UTF8, "application/json");
|
string urls = url + EquipmentType.Ten;
|
JsonResult jsonResult = await EquipResultList(urls, postData, "POST");
|
return jsonResult;
|
}
|
|
|
//下拉框绑定数据
|
private void bindCbox()
|
{
|
IList<Info> infoList = new List<Info>();
|
Info info1 = new Info() { Id = "CMR-QC-SE-001", Name = "螺母全检" };
|
Info info2 = new Info() { Id = "CMR-ZZ-SE-001", Name = "螺母压装" };
|
Info info3 = new Info() { Id = "ZSJ07", Name = "注塑机#07" };
|
//Info info3 = new Info() { Id = "3", Name = "王五" };
|
infoList.Add(info1);
|
infoList.Add(info2);
|
infoList.Add(info3);
|
cmbEquipFile.DataSource = infoList;
|
cmbEquipFile.ValueMember = "Id";
|
cmbEquipFile.DisplayMember = "Name";
|
this.cmbEquipFile.SelectedIndex = 0;
|
this.cmbEquipFile.DropDownStyle = ComboBoxStyle.DropDownList;
|
}
|
|
//选择下拉框值更改事件
|
private void cmbEquipFile_SelectedIndexChanged(object sender, EventArgs e)
|
{
|
if (cmbEquipFile.SelectedIndex == 0)
|
{
|
this.btnLj.Enabled = true;
|
this.timer.Enabled = false;
|
}
|
else
|
{
|
this.btnLj.Enabled = false;
|
DialogResult dr = MessageBox.Show("是否确认开始采集?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
|
if (dr == DialogResult.Yes)
|
{
|
this.txtHBathNo.ReadOnly = true;
|
this.txtBegin.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");
|
//this.txtBegin.Text = "2024-11-21 13:40:27";
|
this.btnBegin.Enabled = false;
|
this.timer.Enabled = true;
|
this.Time_CLHB.Enabled = true;
|
}
|
}
|
}
|
|
//定时获取数据
|
private async void timer_Tick(object sender, EventArgs e)
|
{
|
//测试全检
|
//this.timer.Enabled = false;
|
|
string Url = DBHelper.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "Config/SQLAPI.config", "sUrl");
|
string urls = Url + EquipmentType.One;
|
// 准备要发送的表单数据
|
var formData = new FormUrlEncodedContent(new[]
|
{
|
new KeyValuePair<string, string>("userName", "admin"),
|
new KeyValuePair<string, string>("password", "admin")
|
// 添加更多键值对,根据您的需要
|
});
|
JsonResult jsonResult = await getUrl(urls, formData);
|
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");
|
|
if (cmbEquipFile.SelectedIndex == 1)
|
{
|
SaveNutPressFit(Url, jsonResult.data.token, time);
|
}
|
else if (cmbEquipFile.SelectedIndex == 2)
|
{
|
SaveInjectionMoldingMachine(jsonResult.data.token, Url, time);
|
}
|
|
|
}
|
|
//螺母压装采集数据 保存
|
public async void SaveNutPressFit(string Url , string token, string time) {
|
if (TimeDate == "")
|
{
|
TimeDate = this.txtBegin.Text;
|
}
|
this.timer.Enabled = false;
|
|
JsonEquipmentData jsonResult = await FindDeviceList(Url, token);
|
if (jsonResult.code != "0")
|
{
|
MessageBox.Show("设备列表报错:" + jsonResult.message);
|
}
|
else
|
{
|
string nos = "";
|
//获取去设备编码
|
for (int i = 0; i < jsonResult.data.Count; i++)
|
{
|
if (jsonResult.data[i].no.Contains("CMR-ZZ-SE-001"))
|
{
|
nos += jsonResult.data[i].no + ",";
|
}
|
}
|
nos = nos.Substring(0, nos.Length - 1);
|
//TimeDate = "2024-08-14 08:30:39";
|
//time = "2024-08-14 15:05:39";
|
|
JsonEquipmentData jsonEquipment = await FindAllDevicePropsDetailByTimeRange(Url, token, nos, TimeDate, time);
|
|
var JsonData = "{\"data\":[";
|
|
for (int i = 0; i < jsonEquipment.data[0].props.Count; i++)
|
{
|
for (int j = 0; j < jsonEquipment.data[0].props[i].datas.Count; j++)
|
{
|
valueData value = JsonConvert.DeserializeObject<valueData>(jsonEquipment.data[0].props[i].datas[j].value);
|
if (value.type == "良品")
|
{
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[0].props[i].datas[j].createTime + "\",\"HTechParamName\":\"螺母是否凸出\",\"HResult\":\"OK\",\"HCount\":1,\"HSourceCode\":\"" + nos + "\"},";
|
}
|
else
|
{
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[0].props[i].datas[j].createTime + "\",\"HTechParamName\":\"螺母是否凸出\",\"HResult\":\"NG\",\"HCount\":1,\"HSourceCode\":\"" + nos + "\"},";
|
}
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[0].props[i].datas[j].createTime + "\",\"HTechParamName\":\"生产周期\",\"HResult\":\"" + value.beat + "\",\"HCount\":1,\"HSourceCode\":\"" + nos + "\"},";
|
}
|
}
|
|
|
jsonEquipment = await FindDevicePropCalc(Url, token, nos, TimeDate, time);
|
|
for (int i = 0; i < jsonEquipment.data.Count; i++)
|
{
|
//合格数
|
if (jsonEquipment.data[i].propId == 469)
|
{
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"良品数\",\"HResult\":\"OK\",\"HCount\":" + jsonEquipment.data[i].sum + ",\"HSourceCode\":\""+ nos + "\"},";
|
}
|
//不良数
|
else if (jsonEquipment.data[i].propId == 470)
|
{
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"NG数量\",\"HResult\":\"NG\",\"HCount\":" + jsonEquipment.data[i].sum + ",\"HSourceCode\":\"" + nos + "\"},";
|
}
|
}
|
|
JsonData = JsonData.Substring(0, JsonData.Length - 1);
|
JsonData += "]}";
|
DataSave(JsonData);
|
if (TimeDate != "")
|
{
|
TimeDate = time;
|
}
|
}
|
}
|
|
//注塑机采集数据 保存
|
public async void SaveInjectionMoldingMachine(string token, string Url, string time)
|
{
|
ListData.Items.Clear();
|
if (TimeDate == "")
|
{
|
TimeDate = this.txtBegin.Text;
|
}
|
//this.timer.Enabled = false;
|
|
//TimeDate = "2025-02-10 13:10:50";
|
//time = "2025-02-10 13:11:50";
|
|
JsonEquipmentData jsonResult = await FindDeviceList(Url, token);
|
if (jsonResult.code != "0")
|
{
|
MessageBox.Show("设备列表报错:" + jsonResult.message);
|
}
|
else {
|
|
string nos = "";
|
//获取去设备编码
|
for (int i = 0; i < jsonResult.data.Count; i++)
|
{
|
nos += jsonResult.data[i].no + ",";
|
//if (jsonResult.data[i].no.Contains("CMR-ZS-SE"))
|
//{
|
// nos += jsonResult.data[i].no + ",";
|
//}
|
//else if (jsonResult.data[i].no.Contains("CMR_ZZ_SE_"))
|
//{
|
// nos += jsonResult.data[i].no + ",";
|
//}
|
}
|
nos = nos.Substring(0, nos.Length - 1);
|
JsonEquipmentData jsonEquipment = await FindAllDevicePropsDetailByTimeRange(Url, token, nos, TimeDate, time);
|
|
var JsonData = "{\"data\":[";
|
CustomWriteLog("01" , DateTime.Now.ToString("yyyy-MM-dd"));
|
for (int i = 0; i < jsonEquipment.data.Count; i++)
|
{
|
if (jsonEquipment.data[i].deviceNo.Contains("CMR-ZZ-SE-"))
|
{
|
for (int j = 0; j < jsonEquipment.data[i].props.Count; j++)
|
{
|
for (int k = 0; k < jsonEquipment.data[i].props[j].datas.Count; k++)
|
{
|
CustomWriteLog("1-" + k + ":" + jsonEquipment.data[i].props[j].datas[k].value, DateTime.Now.ToString("yyyy-MM-dd"));
|
valueData value = JsonConvert.DeserializeObject<valueData>(jsonEquipment.data[i].props[j].datas[k].value);
|
CustomWriteLog("2", DateTime.Now.ToString("yyyy-MM-dd"));
|
if (value.type == "良品")
|
{
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"螺母是否凸出\",\"HResult\":\"OK\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
else
|
{
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"螺母是否凸出\",\"HResult\":\"NG\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"生产周期\",\"HResult\":\"" + value.beat + "\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
}
|
|
JsonEquipmentData data = await FindDevicePropCalc(Url, token, jsonEquipment.data[i].deviceNo, TimeDate, time);
|
|
for (int j = 0; j < data.data.Count; j++)
|
{
|
//合格数
|
if (data.data[j].propId == 469)
|
{
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"良品数\",\"HResult\":\"OK\",\"HCount\":" + data.data[j].sum + ",\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
//不良数
|
else if (data.data[j].propId == 470)
|
{
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"NG数量\",\"HResult\":\"NG\",\"HCount\":" + data.data[j].sum + ",\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
}
|
}
|
else {
|
for (int j = 0; j < jsonEquipment.data[i].props.Count; j++)
|
{
|
for (int k = 0; k < jsonEquipment.data[i].props[j].datas.Count; k++)
|
{
|
JsonData += "{\"HDate\":\"" + jsonEquipment.data[i].props[j].datas[k].createTime + "\",\"HTechParamName\":\"" + jsonEquipment.data[i].props[j].propName + "\",\"HResult\":\""+ jsonEquipment.data[i].props[j].datas[k].value + "\",\"HCount\":1,\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
}
|
|
JsonEquipmentData data = await FindProdByNosAndTime(Url, token, jsonEquipment.data[i].deviceNo, TimeDate, time);
|
|
for (int j = 0; j < data.data.Count; j++)
|
{
|
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"生产数量\",\"HResult\":\"OK\",\"HCount\":" + data.data[j].prod + ",\"HSourceCode\":\"" + jsonEquipment.data[i].deviceNo + "\"},";
|
}
|
}
|
}
|
|
CustomWriteLog("02", DateTime.Now.ToString("yyyy-MM-dd"));
|
var EquipmentStaus = await FindDeviceStatusByNos(Url, token, nos);
|
|
for (int i = 0; i < EquipmentStaus.data.Count; i++)
|
{
|
//卷绕 注塑 浸渍 组装 的设备运行 开关停机时间
|
if (EquipmentStaus.data[i].no.Contains("CMR-JR-SD-") || EquipmentStaus.data[i].no.Contains("CMR-JZ-SD-") || EquipmentStaus.data[i].no.Contains("CMR-HX-SD-")
|
|| EquipmentStaus.data[i].no.Contains("CMR-ZD-SD")|| EquipmentStaus.data[i].no.Contains("CMR-ZS-SE-"))
|
{
|
string HBegDate = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
|
string HEndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:00");
|
|
if (DateTime.Parse(HEndDate).AddMinutes(1).ToString("yyyy-MM-dd") != DateTime.Parse(HEndDate).ToString("yyyy-MM-dd")) {
|
HEndDate= DateTime.Parse(HEndDate).AddMinutes(1).ToString("yyyy-MM-dd HH:mm:00");
|
}
|
|
JsonResult HEqDate = await FindDeviceStatusTimeByNo(Url, token, EquipmentStaus.data[i].no, HBegDate, HEndDate);
|
|
JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"开机时长\",\"HResult\":\"" + ((float)(HEqDate.data.onlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"关机时长\",\"HResult\":\"" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"停机时长\",\"HResult\":\"" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"运行时长\",\"HResult\":\"" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
}
|
//卷绕 注塑 浸渍 组装 的设备运行 开关停机时间
|
//if (EquipmentStaus.data[i].no.Contains("CMR-ZS-SE-"))
|
//{
|
// string HBegDate = DateTime.Now.ToString("yyyy-MM-dd 00:00:00");
|
// string HEndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
|
// JsonResult kj = await FindDeviceStatusTimeByNosAndOperationMode(Url, token, EquipmentStaus.data[i].no, HBegDate, HEndDate);
|
// JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"开机时长\",\"HResult\":\"" + ((float)(kj.data.onlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
|
// JsonResult HEqDate = await FindDeviceStatusTimeByNo(Url, token, EquipmentStaus.data[i].no, HBegDate, HEndDate);
|
|
// JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"关机时长\",\"HResult\":\"" + ((float)(HEqDate.data.offlineTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
// JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"停机时长\",\"HResult\":\"" + ((float)(HEqDate.data.standbyTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
// JsonData += "{\"HDate\":\"" + HEndDate + "\",\"HTechParamName\":\"运行时长\",\"HResult\":\"" + ((float)(HEqDate.data.runTime / 60 / 60)).ToString("0.00") + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
//}
|
|
|
string staus = "";
|
switch (EquipmentStaus.data[i].status)
|
{
|
//-1:未知,1:离线,2:待机,3:正常运行,4:告警
|
case "-1":
|
staus = "未知";
|
break;
|
case "1":
|
staus = "离线";
|
break;
|
case "2":
|
staus = "待机";
|
break;
|
case "3":
|
staus = "正常运行";
|
break;
|
case "4":
|
staus = "告警";
|
break;
|
}
|
if (jsonEquipment.data.Count > 0)
|
{
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"开关机状态\",\"HResult\":\"" + staus + "\",\"HCount\":1,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
}
|
else
|
{
|
JsonData += "{\"HDate\":\"" + time + "\",\"HTechParamName\":\"开关机状态\",\"HResult\":\"" + staus + "\",\"HCount\":0,\"HSourceCode\":\"" + EquipmentStaus.data[i].no + "\"},";
|
}
|
}
|
|
|
DataSet datable = oCN.RunProcReturn(@"select m.HNumber,eq.HEquipFileNo from Sc_ICMOBillStatus_Tmp a
|
inner join Gy_EquipFileBillMain eq on a.HSourceID = eq.HSourceID
|
inner join Gy_Material m on a.HMaterID = m.HItemID
|
where a.HICMOStatus = '1' ", "Sc_ICMOBillStatus_Tmp");
|
|
if (datable.Tables[0].Rows.Count > 0)
|
{
|
for (int i = 0; i < datable.Tables[0].Rows.Count; i++)
|
{
|
string HSourceCode = datable.Tables[0].Rows[i]["HEquipFileNo"].ToString();
|
string HNumber = datable.Tables[0].Rows[i]["HNumber"].ToString();
|
|
JsonData += "{\"HDate\":\"" + DateTime.Now.ToString() + "\",\"HTechParamName\":\"物料代码\",\"HResult\":\"" + HNumber + "\",\"HCount\":1,\"HSourceCode\":\"" + HSourceCode + "\"},";
|
}
|
}
|
|
CustomWriteLog("03", DateTime.Now.ToString("yyyy-MM-dd"));
|
JsonData = JsonData.Substring(0, JsonData.Length - 1);
|
JsonData += "]}";
|
DataSave(JsonData);
|
if (TimeDate != "")
|
{
|
TimeDate = time;
|
}
|
}
|
}
|
|
//数据保存
|
public void DataSave(string JsonData) {
|
JsonEquipmentData data = JsonConvert.DeserializeObject<JsonEquipmentData>(JsonData);
|
|
for (int i = 0; i < data.data.Count; i++)
|
{
|
oCN.RunProc(@"insert into Sb_EquipMentCollectionTechParam_Temp(HDate,HSourceCode,HTechParamID,HTechParamName,HCount
|
,HCreateTime,HResult,HProcNumber,HFlag)
|
values(getdate(),'"+ data.data[i].HSourceCode + "',0,'" + data.data[i].HTechParamName + "'," + data.data[i].HCount
|
+ ",'" + data.data[i].HDate + "','" + data.data[i].HResult + "','" + data.data[i].HProcNumber + "',0)");
|
|
ListData.Items.Add("时间:" + data.data[i].HDate +
|
",工艺参数:" + data.data[i].HTechParamName +
|
",工艺参数值:" + data.data[i].HResult);
|
}
|
}
|
|
//定时生成产量汇报单
|
private async void Time_CLHB_Tick(object sender, EventArgs e)
|
{
|
//this.Time_CLHB.Enabled = false;
|
string Url = DBHelper.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "Config/SQLAPI.config", "sUrl");
|
string urls = Url + EquipmentType.One;
|
// 准备要发送的表单数据
|
var formData = new FormUrlEncodedContent(new[]
|
{
|
new KeyValuePair<string, string>("userName", "admin"),
|
new KeyValuePair<string, string>("password", "admin")
|
// 添加更多键值对,根据您的需要
|
});
|
JsonResult jsonResult = await getUrl(urls, formData);
|
string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
string token = jsonResult.data.token;
|
JsonEquipmentData jsonEquipment = await FindDeviceList(Url, token);
|
|
if (jsonEquipment.code != "0")
|
{
|
MessageBox.Show("设备列表报错:" + jsonEquipment.message);
|
}
|
else
|
{
|
string nos = "";
|
//获取去设备编码
|
for (int i = 0; i < jsonEquipment.data.Count; i++)
|
{
|
if (jsonEquipment.data[i].no.Contains("CMR-ZS-SE"))
|
{
|
nos += "''" + jsonEquipment.data[i].no + "'',";
|
}
|
else if (jsonEquipment.data[i].no.Contains("CMR-ZZ-SE-"))
|
{
|
nos += "''" + jsonEquipment.data[i].no + "'',";
|
}
|
}
|
nos = nos.Substring(0, nos.Length - 1);
|
|
//this.Time_CLHB.Enabled = false;
|
|
DataSet ds = oCN.RunProcReturn("exec h_p_Sc_TimeICMOReporList '" + nos + "'", "h_p_Sc_TimeICMOReporList");
|
|
if (ds.Tables[0].Rows.Count > 0)
|
{
|
DataTable dt = ds.Tables[0];
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
nos = dt.Rows[i]["设备编码"].ToString();
|
string HICMInterID = dt.Rows[i]["HInterID"].ToString();
|
string HBegDate = DateTime.Parse(dt.Rows[i]["日期"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
|
string HEndDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
jsonEquipment = await FindProdByNosAndTime(Url, token, nos, HBegDate, HEndDate);
|
if (decimal.Parse(jsonEquipment.data[0].prod) > 0) {
|
oCN.RunProc("exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod+",'"+ HEndDate + "'");
|
}
|
}
|
}
|
if (ds.Tables[1].Rows.Count > 0)
|
{
|
DataTable dt = ds.Tables[1];
|
for (int i = 0; i < dt.Rows.Count; i++)
|
{
|
nos = dt.Rows[i]["设备编码"].ToString();
|
string HICMInterID = dt.Rows[i]["HInterID"].ToString();
|
string HBegDate = DateTime.Parse(dt.Rows[i]["开始日期"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
|
string HEndDate = DateTime.Parse(dt.Rows[i]["结束日期"].ToString()).ToString("yyyy-MM-dd HH:mm:ss");
|
jsonEquipment = await FindProdByNosAndTime(Url, token, nos, HBegDate, HEndDate);
|
if (decimal.Parse(jsonEquipment.data[0].prod) > 0)
|
{
|
oCN.RunProc("exec h_p_Sc_AddTimeICMORepor " + HICMInterID + "," + jsonEquipment.data[0].prod + ",'" + HEndDate + "'");
|
}
|
}
|
}
|
}
|
|
}
|
|
private void EquipmentCollectionForm_FormClosing(object sender, FormClosingEventArgs e)
|
{
|
if (MessageBox.Show("确定要关闭吗?", "确认", MessageBoxButtons.YesNo) == DialogResult.No)
|
{
|
e.Cancel = true;
|
}
|
}
|
|
private void txtHMaker_Leave(object sender, EventArgs e)
|
{
|
if (string.IsNullOrWhiteSpace(txtHMaker.Text))
|
{
|
this.txtHMaker.ForeColor = Color.LightGray;
|
txtHMaker.Text = "请输入用户编码!";
|
}
|
}
|
|
private void txtHMaker_Enter(object sender, EventArgs e)
|
{
|
if (txtHMaker.Text.Trim() == "请输入用户编码!")
|
{
|
txtHMaker.Text = "";
|
this.txtHMaker.ForeColor = Color.Black;
|
}
|
}
|
|
private void txtHMaker_KeyDown(object sender, KeyEventArgs e)
|
{
|
if (e.KeyCode == Keys.Enter)
|
{
|
SelectHMaker(this.txtHMaker.Text);
|
}
|
}
|
|
|
//查询职员信息
|
public void SelectHMaker(string txtHMaker)
|
{
|
try
|
{
|
DataSet ds = oCN.RunProcReturn("select HItemID,HName,HNumber from Gy_Employee where HNumber='" + txtHMaker + "' or HName ='" + txtHMaker + "'", "Gy_Employee");
|
if (ds.Tables[0].Rows.Count > 0)
|
{
|
string HName = ds.Tables[0].Rows[0]["HName"].ToString();
|
string HMakerID = ds.Tables[0].Rows[0]["HItemID"].ToString();
|
string HNumber = ds.Tables[0].Rows[0]["HNumber"].ToString();
|
this.txtHMaker.Text = HName;
|
this.txtHMakerNumber.Text = HNumber;
|
this.labHMakerID.Text = HMakerID;
|
this.txtHMaker.ReadOnly = true;
|
}
|
else
|
{
|
MessageBox.Show(this, "编码:" + txtHMaker + ",查无数据,可能是输入编码有误!", "提示");
|
}
|
}
|
catch (Exception e)
|
{
|
MessageBox.Show(this, e.Message, "提示");
|
}
|
}
|
|
private void EquipmentCollectionForm_Activated(object sender, EventArgs e)
|
{
|
//光标选中制单人
|
this.txtHMaker.Focus();
|
}
|
|
private static readonly object lockObj = new object();
|
//写日志
|
public static void CustomWriteLog(object obj, string FileName, string filePath = "Vlog", bool isAppend = true)
|
{
|
try
|
{
|
lock (lockObj)
|
{
|
filePath = $@"{filePath}\{FileName}.txt";
|
|
filePath = AppDomain.CurrentDomain.BaseDirectory + filePath;
|
|
if (!System.IO.Directory.Exists(Path.GetDirectoryName(filePath)))
|
{
|
System.IO.Directory.CreateDirectory(Path.GetDirectoryName(filePath));
|
}
|
|
bool fileExists = System.IO.File.Exists(filePath);
|
//不存在 则创建该文件
|
if (!fileExists)
|
{
|
System.IO.File.Create(filePath).Close();
|
}
|
|
using (StreamWriter writer = new StreamWriter(filePath, isAppend))
|
{
|
//存在的时候才写一行
|
if (fileExists && isAppend)
|
{
|
writer.WriteLine();
|
}
|
|
var content = obj is string ? obj : JsonConvert.SerializeObject(obj);
|
writer.WriteLine($"{DateTime.Now} {content}");
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
}
|
}
|
}
|
|
|
public class JsonResult {
|
public string code { get; set; }
|
public string message { get; set; }
|
public string expirationTime { get; set; }
|
public string token { get; set; }
|
public JsonData data { get; set; }
|
}
|
|
public class JsonEquipmentData
|
{
|
public string code { get; set; }
|
public string message { get; set; }
|
public string expirationTime { get; set; }
|
public string token { get; set; }
|
public string deviceNo { get; set; }
|
public string deviceName { get; set; }
|
public string deviceStatus { get; set; }
|
public List<JsonData> data { get; set; }
|
}
|
|
public class JsonData
|
{
|
public double onlineTime { get; set; }
|
public double offlineTime { get; set; }
|
public double standbyTime { get; set; }
|
public double runTime { get; set; }
|
public string expirationTime { get; set; }
|
public string token { get; set; }
|
public string deviceNo { get; set; }
|
public List<propsData> props { get; set; }
|
public string area { get; set; }
|
public string no { get; set; }
|
public string name { get; set; }
|
public string status { get; set; }
|
public string prod { get; set; }
|
public string propName { get; set; }
|
public string basePropId { get; set; }
|
public string value { get; set; }
|
public string time { get; set; }
|
public int propId { get; set; }
|
public double count { get; set; }
|
public double min { get; set; }
|
public double max { get; set; }
|
public double avg { get; set; }
|
public double sum { get; set; }
|
public string createTime { get; set; }
|
public string happenTime { get; set; }
|
public string HDate{ get; set; }
|
public string HTechParamName { get; set; }
|
public string HResult { get; set; }
|
public string HCount { get; set; }
|
public string HSourceCode { get; set; }
|
public string HProcNumber { get; set; }
|
}
|
|
public class propsData {
|
public string propName { get; set; }
|
public List<JsonData> datas { get; set; }
|
public string basePropId { get; set; }
|
}
|
|
public class valueData
|
{
|
public string beat { get; set; }
|
public string type { get; set; }
|
}
|
|
//设备接口
|
public static class EquipmentType
|
{
|
//设备 获取令牌
|
public static string One = "/api/third/findAccessToken";
|
//设备列表
|
public static string Two = "/api/third/findDeviceList";
|
//设备状态
|
public static string Three = "/api/third/findDeviceStatusByNos";
|
//设备产量
|
public static string Four = "/api/third/findProdByNosAndTime";
|
//设备时长
|
public static string Five = "/api/third/findDeviceStatusTimeByNo";
|
//属性列表
|
public static string Six = "/api/third/findPropertyListByNos";
|
//产量,不良数,合格数,可疑数 总数
|
public static string Seven = "/api/third/findDevicePropCalc";
|
//一段时间内设备状态的获取
|
public static string Eight = "/api/third/dayDeviceStatusTimeline";
|
//良品 不良品 明细 注塑机数据
|
public static string Nine = "/api/third/findAllDevicePropsDetailByTimeRange_v1";
|
//注塑机开机时长 根据 操作模式采集
|
public static string Ten = "/api/third/findDeviceStatusTimeByNosAndOperationMode";
|
//public static string Eleven = "Monday";
|
//public static string Twelve = "Monday";
|
}
|
|
public class Info
|
{
|
public string Id { get; set; }
|
public string Name { get; set; }
|
}
|
|
}
|