using bizFacade; using DataLinkMesWork; using DoWhatPlc; using MesServerWork; using Newtonsoft.Json; using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MisDataSaveDate { public partial class Funtion { private static void WorkStart(ReturnValueString rv) { var ro = rv.ReturnValueToObject(); string opName = ro.OpName; DateTime arrivedTime = ro.TimeStampBefore; DateTime leavedTime = ro.TimeStamp; int TimeDiff = ro.TagKeepTime; int targetTime = 0; string isPass = ""; int QualityMark = 0; string tagValue = "0"; switch (ro.TagValue.ToString().ToLower()) { case "1": case "true": tagValue = "1"; break; default: tagValue = "0"; break; } int EngineTypeID=-1;//机型代码 int PartPalletCode=-1;//托盘编号 string EngineType="-1";//机型 string EngineID="-1";//工件编号 if (hashtable_EngineGetOver_EngineTypeID.Contains(opName)) { EngineTypeID = Convert.ToInt32( hashtable_EngineGetOver_EngineTypeID[opName]); } if (hashtable_EngineGetOver_EngineType.Contains(opName)) { EngineType = hashtable_EngineGetOver_EngineType[opName].ToString(); } if (hashtable_EngineGetOver_EngineID.Contains(opName)) { EngineID = hashtable_EngineGetOver_EngineID[opName].ToString(); } if (hashtable_PartPalletCode.Contains(opName)) { PartPalletCode = Convert.ToInt32(hashtable_PartPalletCode[opName]); } //MIS_BASE.GetEngineTypeFromPLC(opName, out EngineTypeID, out EngineType, out EngineID, out PartPallet_Code); //EngineData Enginedata = (EngineData)EngineData_Hash_Read(opName); //WorkStartInsert_AutoWorkStation(opName, EngineID, PartPalletCode, arrivedTime, leavedTime, TimeDiff, targetTime, null, isPass, 0); if (tagValue == "0") { QualityMark = Convert.ToInt32(DtWebApi.ReadWritePLC.ReadPLC("21", opName)); if (QualityMark == 1) { isPass = "1"; } else { isPass = "0"; } WorkStartInsert_V2022(opName, arrivedTime, leavedTime, TimeDiff, isPass); MIS_BASE.Write_TagTypeID(5, opName, false);//MES传递机型 MIS_BASE.Write_TagTypeID(66, opName, false);//允许工作 MIS_BASE.Write_TagTypeID(51, opName, false);//合格放行 MIS_BASE.Write_TagTypeID(8, opName, false);//不合格放行 MIS_BASE.Write_TagTypeID(7, opName, false);//工作完成 MIS_BASE.Write_TagTypeID(20, opName, false);//保存完成 //string isHaveComputer = hashtableOpName_IsHaveComputer[opName].ToString(); //if (Convert.ToInt32(isHaveComputer) == 0)//自动工位 读合格标志 //{ // if (IsEngTypeGetOver_Read(opName)) // { // //PLC未传递机型 不保存过站信息 // SaveProductLeaveData_AutoWorkStation(opName, Convert.ToInt32(DtWebApi.ReadWritePLC.ReadPLC("21", opName))); // //SaveProductLeaveData_AutoWorkStation(opName, Convert.ToInt32(MesDataFunction.OpcOperation.ReadPLC(21, opName))); // } //} ////清空信号 ////m_WorkStart_OpName[opName] = 0;//清空工件到位标志 } //通知WEB更新产量 SendActuallyCount(opName, 0); } /// /// 发送在线产量、在线节拍 /// /// /// static void SendActuallyCount(string OpName, int tagValue) { //当工件离开时,更新在线产量、在线节拍 if (tagValue == 0) { try { int opNameCount = 0;//在线产量 int opNameCountTime = 0;//在线节拍 //基本数据_工作日历_班次产量查询_New OpNameCount_New(OpName, out opNameCount, out opNameCountTime); string SendMessage; SendMessage = "MES|ActuallyCount|" + OpName + "|" + opNameCount.ToString() + "&" + opNameCountTime.ToString(); MIS_BASE.asyncSendMessage(SendMessage); } catch (Exception err) { ////ApplicationLog.WriteLog(err, "Function01:SendActuallyCount"); } } } /// /// 基本数据_工作日历_班次产量查询_New /// /// /// 在线产量 /// 在线节拍 static public void OpNameCount_New(string opName, out int opNameCount, out int opNameCountTime) { opNameCount = 0; opNameCountTime = 0; string procedureName; procedureName = "基本数据_工作日历_班次产量查询_New"; SqlParameter[] thisParms = new SqlParameter[3]; thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName); thisParms[1] = new System.Data.SqlClient.SqlParameter("@在线产量", 0); thisParms[1].Direction = ParameterDirection.Output; thisParms[2] = new System.Data.SqlClient.SqlParameter("@在线节拍", 0); thisParms[2].Direction = ParameterDirection.Output; if (DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms)) { opNameCount = Convert.ToInt32(thisParms[1].Value); opNameCountTime = Convert.ToInt32(thisParms[2].Value); } } /// /// 测量数据发动机在线状态_增加数据_自动工位 /// /// /// /// /// /// /// /// /// /// /// static public void WorkStartInsert_AutoWorkStation(string opName, string EngineID, int Pallet, DateTime arrivedTime, DateTime leavedTime, int TimeDiff, int Target, string lineType, string isPass, int OpNameUpDownType) { string procedureName; procedureName = "测量数据发动机在线状态_增加数据_自动工位"; SqlParameter[] thisParms = new SqlParameter[10]; thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName); thisParms[1] = new System.Data.SqlClient.SqlParameter("@发动机号", EngineID); thisParms[2] = new System.Data.SqlClient.SqlParameter("@托盘编号", Pallet); thisParms[3] = new System.Data.SqlClient.SqlParameter("@到达时间", arrivedTime); thisParms[4] = new System.Data.SqlClient.SqlParameter("@离开时间", leavedTime); thisParms[5] = new System.Data.SqlClient.SqlParameter("@在线时间", TimeDiff); thisParms[6] = new System.Data.SqlClient.SqlParameter("@目标时间", Target); thisParms[7] = new System.Data.SqlClient.SqlParameter("@线体类型", lineType); thisParms[8] = new System.Data.SqlClient.SqlParameter("@是否合格", isPass); thisParms[9] = new System.Data.SqlClient.SqlParameter("@工位上下线类型", OpNameUpDownType); DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms); } static public void WorkStartInsert_V2022(string opName, DateTime arrivedTime, DateTime leavedTime, int TimeDiff, string isPass) { string procedureName; procedureName = "测量数据发动机在线状态_增加数据_V2022"; SqlParameter[] thisParms = new SqlParameter[5]; thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName); thisParms[1] = new System.Data.SqlClient.SqlParameter("@到达时间", arrivedTime); thisParms[2] = new System.Data.SqlClient.SqlParameter("@离开时间", leavedTime); thisParms[3] = new System.Data.SqlClient.SqlParameter("@在线时间", TimeDiff); thisParms[4] = new System.Data.SqlClient.SqlParameter("@是否合格", isPass); DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms); } static public void WorkStartInsert(string opName, DateTime arrivedTime, DateTime leavedTime, int TimeDiff, int Target, string lineType, string isPass, int OpNameUpDownType) { string procedureName; procedureName = "测量数据发动机在线状态_增加数据"; SqlParameter[] thisParms = new SqlParameter[8]; thisParms[0] = new System.Data.SqlClient.SqlParameter("@工位号", opName); thisParms[1] = new System.Data.SqlClient.SqlParameter("@到达时间", arrivedTime); thisParms[2] = new System.Data.SqlClient.SqlParameter("@离开时间", leavedTime); thisParms[3] = new System.Data.SqlClient.SqlParameter("@在线时间", TimeDiff); thisParms[4] = new System.Data.SqlClient.SqlParameter("@目标时间", Target); thisParms[5] = new System.Data.SqlClient.SqlParameter("@线体类型", lineType); thisParms[6] = new System.Data.SqlClient.SqlParameter("@是否合格", isPass); thisParms[7] = new System.Data.SqlClient.SqlParameter("@工位上下线类型", OpNameUpDownType); DataAccess.ExecuteStoredProcedure(procedureName, ref thisParms); } } }