|  | @@ -150,6 +150,14 @@ namespace MainForm
 | 
	
		
			
				|  |  |          //XiaomiDeviceState xmDeviceState = XiaomiDeviceState.Uninitialized;
 | 
	
		
			
				|  |  |          XiaomiDeviceStateData xmDeviceStateData = new XiaomiDeviceStateData();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        private int test_item_num = 0;//iot 过站数据序号
 | 
	
		
			
				|  |  | +        private string uuid = "";
 | 
	
		
			
				|  |  | +        private bool inpass = false;//保存进站测试状态
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  | +        public string _deviceCode="";//装备编码
 | 
	
		
			
				|  |  | +        public string _stationCode="";//工站ID
 | 
	
		
			
				|  |  | +        public string _workstation="";//工位编码
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          #endregion 变量
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          #region 窗体基础事件
 | 
	
	
		
			
				|  | @@ -181,6 +189,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  //组建plc对象字典
 | 
	
		
			
				|  |  |                  //plc1Alarm = new ModbusClientHelper(GlobalContext.Machine1Address, GlobalContext.MachinePort);
 | 
	
		
			
				|  |  |                  //plc1Alarm = new Inovance_EIP(GlobalContext.PCAddress, GlobalContext.Machine1Address);
 | 
	
		
			
				|  |  | +                //上传操作记录
 | 
	
		
			
				|  |  | +                operateToIot("startup","开启");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (GlobalContext.IsUsePLC1)
 | 
	
		
			
				|  |  |                  {
 | 
	
	
		
			
				|  | @@ -354,9 +364,9 @@ namespace MainForm
 | 
	
		
			
				|  |  |                              // 配置参数
 | 
	
		
			
				|  |  |                              XiaomiMqttLoginFunAndParam param = new XiaomiMqttLoginFunAndParam();
 | 
	
		
			
				|  |  |                              // fds
 | 
	
		
			
				|  |  | -                            param.parameter.fds.address = "http://file-cm.be.mi.com/file/x5/file/upload/mqtt";
 | 
	
		
			
				|  |  | -                            param.parameter.fds.appId = "Auto-Soft";
 | 
	
		
			
				|  |  | -                            param.parameter.fds.appKey = "d11ec2b9-0e7a-4086-a80c-a1ec716e0896";
 | 
	
		
			
				|  |  | +                            param.parameter.fds.address =  GlobalContext.address;
 | 
	
		
			
				|  |  | +                            param.parameter.fds.appId =  GlobalContext.appId;
 | 
	
		
			
				|  |  | +                            param.parameter.fds.appKey =  GlobalContext.appKey;
 | 
	
		
			
				|  |  |                              // mes
 | 
	
		
			
				|  |  |                              param.parameter.mes.address = GlobalContext.ServerIp;
 | 
	
		
			
				|  |  |                              param.parameter.mes.appId = GlobalContext.MESAppId;
 | 
	
	
		
			
				|  | @@ -372,12 +382,14 @@ namespace MainForm
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.S1_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.S1_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.S1_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (GlobalContext.IsUsePLC2)
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.S2_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.S2_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.S2_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (GlobalContext.IsUsePLC3)
 | 
	
	
		
			
				|  | @@ -390,18 +402,21 @@ namespace MainForm
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.s4_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.s4_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.s4_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (GlobalContext.IsUsePLC5)
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.s5_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.s5_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.s5_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (GlobalContext.IsUsePLC6)
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.s6_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.s6_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.s6_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (GlobalContext.IsUsePLC7)
 | 
	
	
		
			
				|  | @@ -414,43 +429,26 @@ namespace MainForm
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.s8_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.s8_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.s8_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              if (GlobalContext.IsUsePLC9)
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.deviceCode = GlobalContext.s9_device_code; // 装备编码
 | 
	
		
			
				|  |  |                                  param.parameter.equipment.stationCode = GlobalContext.s9_station; // ⼯位Id
 | 
	
		
			
				|  |  | +                                _workstation= GlobalContext.s9_work_station;//工站
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                       
 | 
	
		
			
				|  |  |                              param.parameter.equipment.project = GlobalContext.Project_Code;
 | 
	
		
			
				|  |  |                              param.parameter.equipment.productMode = "debug";
 | 
	
		
			
				|  |  |                             
 | 
	
		
			
				|  |  |                              param.parameter.other.logLevel = 0;
 | 
	
		
			
				|  |  |                              param.parameter.other.LogPath = GlobalContext.MqttLogDir;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                            //测试
 | 
	
		
			
				|  |  | -                            //param.parameter.fds.address = "http://file-cm.be.mi.com/file/x5/file/upload/mqtt";
 | 
	
		
			
				|  |  | -                            //param.parameter.fds.appId = "Auto-Soft";
 | 
	
		
			
				|  |  | -                            //param.parameter.fds.appKey = "d11ec2b9-0e7a-4086-a80c-a1ec716e0896";
 | 
	
		
			
				|  |  | -                            //param.parameter.mes.address = "cm.pre.mi.com";
 | 
	
		
			
				|  |  | -                            //param.parameter.mes.appId = "MIUAT";
 | 
	
		
			
				|  |  | -                            //param.parameter.mes.appKey = "6B3D57E2-F062-471F-932B-76C8A79E0D66";
 | 
	
		
			
				|  |  | -                            //param.parameter.mqtt.address = "staging-cnbj2-rmq-mqtt.api.xiaomi.com";
 | 
	
		
			
				|  |  | -                            //param.parameter.mqtt.port = 80;
 | 
	
		
			
				|  |  | -                            //param.parameter.mqtt.username = "AKPKTSQAS46NKE4NHY";
 | 
	
		
			
				|  |  | -                            //param.parameter.mqtt.password = "Vfr/yyxVSkCVkHFjvD2rwb3ZOoUh+75KwnfWZX3N";
 | 
	
		
			
				|  |  | -                            //param.parameter.equipment.factoryCode = "1";
 | 
	
		
			
				|  |  | -                            //param.parameter.equipment.deviceCode = "C-MBA-ADDCU-A-BZJG-0001";
 | 
	
		
			
				|  |  | -                            //param.parameter.equipment.stationCode = "Y46-ADDCU-11";
 | 
	
		
			
				|  |  | -                            //param.parameter.equipment.project = "801";
 | 
	
		
			
				|  |  | -                            //param.parameter.equipment.productMode = "debug";
 | 
	
		
			
				|  |  | -                            //param.parameter.other.logLevel = 0;
 | 
	
		
			
				|  |  | -                            //param.parameter.other.runMode = "online";
 | 
	
		
			
				|  |  | -                            //param.parameter.other.uploadDigitalTwinData = "true";
 | 
	
		
			
				|  |  | -                            //param.parameter.other.LogPath = "D:/XiaomiMqttLog";
 | 
	
		
			
				|  |  | -                            //param.parameter.other.mqttEnableService = "true";
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                            
 | 
	
		
			
				|  |  |                              XiaomiMqttClient_Extend.ParameterConfig(param);
 | 
	
		
			
				|  |  | +                            //保存全局变量
 | 
	
		
			
				|  |  | +                            _stationCode = param.parameter.equipment.deviceCode;
 | 
	
		
			
				|  |  | +                            _deviceCode = param.parameter.equipment.stationCode;
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                          else
 | 
	
		
			
				|  |  |                          {
 | 
	
	
		
			
				|  | @@ -1374,6 +1372,7 @@ namespace MainForm
 | 
	
		
			
				|  |  |          private static bool isCollectingFlagLeft;
 | 
	
		
			
				|  |  |          private static bool isCollectingFlagRight;
 | 
	
		
			
				|  |  |          private bool OpenDailogFalg = true;//是否开启扫码弹窗标识
 | 
	
		
			
				|  |  | +        
 | 
	
		
			
				|  |  |          /// <summary>
 | 
	
		
			
				|  |  |          /// float[]转为string
 | 
	
		
			
				|  |  |          /// </summary>
 | 
	
	
		
			
				|  | @@ -1544,7 +1543,7 @@ namespace MainForm
 | 
	
		
			
				|  |  |          /// <param name="items">进站数据</param>
 | 
	
		
			
				|  |  |          /// <returns>1成功;5MES报警;6上位机报警</returns>
 | 
	
		
			
				|  |  |          public int SaveStationInData(string stationNameStr, string workorder_code, string mtltmrk, string sn,
 | 
	
		
			
				|  |  | -            List<TestItem> items, string MachineId, string StationId)
 | 
	
		
			
				|  |  | +            List<TestItem> items, string MachineId, string StationId,bool pass)
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              int result = 0;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1555,6 +1554,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |              inRequest_Body.clientTime =
 | 
	
		
			
				|  |  |                  DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"); // 客⼾端请求时间,格式yyyy-MM-dd HH:mm:ss.fff
 | 
	
		
			
				|  |  |              inRequest_Body.unitSn = sn; // 产品SN
 | 
	
		
			
				|  |  | +            inRequest_Body.uuidInspection = uuid;
 | 
	
		
			
				|  |  | +            inRequest_Body.state = pass ? "PASS" : "FAIL";
 | 
	
		
			
				|  |  |              inRequest_Body.userId = GlobalContext.MESUserId; // 用户ID;
 | 
	
		
			
				|  |  |              inRequest_Body.factoryId = GlobalContext.Factory_Code; // 工厂ID;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1630,6 +1631,36 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            #region IOT
 | 
	
		
			
				|  |  | +            string slot = "01-SLOT-01";
 | 
	
		
			
				|  |  | +            //过站结果
 | 
	
		
			
				|  |  | +            if (GlobalContext.IsMqttSendProcessData)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                PassStationResultRequest request = new PassStationResultRequest();
 | 
	
		
			
				|  |  | +                request.project_code = GlobalContext.Project_Code;                  // 项⽬编码
 | 
	
		
			
				|  |  | +                request.factory_code = GlobalContext.Factory_Code;                  // ⼯⼚Id
 | 
	
		
			
				|  |  | +                request.process_section_code = GlobalContext.Process_Section_Code;  // ⼯段编码
 | 
	
		
			
				|  |  | +                request.line_code = GlobalContext.LineCode;                         // 线体编码
 | 
	
		
			
				|  |  | +                request.work_station = _workstation;  // ⼯站ID
 | 
	
		
			
				|  |  | +                request.device_code = _deviceCode;    // 装备编码
 | 
	
		
			
				|  |  | +                request.station = _stationCode;
 | 
	
		
			
				|  |  | +                request.process_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");  // 节拍发⽣时间(2022-06-01 14:27:57.283)
 | 
	
		
			
				|  |  | +                request.slot = slot;                  // 槽位编码
 | 
	
		
			
				|  |  | +                request.sn = sn;                      // 产品SN
 | 
	
		
			
				|  |  | +                // request.enter_status = inpass ? "PASS" : "FAIL";  // 进站状态
 | 
	
		
			
				|  |  | +                request.enter_status = pass ? "PASS" : "FAIL";  // 进站状态
 | 
	
		
			
				|  |  | +                request.result = ""; // 出站条件 PASS或FAIL;              // 过站结果
 | 
	
		
			
				|  |  | +                request.work_type = "OUT_STATION";        // 作业类型
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 上传过站结果
 | 
	
		
			
				|  |  | +                (int, string) iotResult = XiaomiMqttClient_Extend.Write_PassStationResult(request);
 | 
	
		
			
				|  |  | +                if (iotResult.Item1 != 0)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    OnMessage(LogType.Info, $"【IOT过站结果】上传失败!错误原因:{iotResult.Item2},过站结果;产品码[{sn}]  进站结果[{request.enter_status}]  出站结果[{request.result}]");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              return result;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1689,14 +1720,13 @@ namespace MainForm
 | 
	
		
			
				|  |  |              string sql = processData.ToStringInsert(upload);
 | 
	
		
			
				|  |  |              string ret = SQLHelper_New.ExecuteNonQuery(sql, null);
 | 
	
		
			
				|  |  |              //AddMessage_Station(stationNameStr, LogType.Info, string.Concat("[[", equipmentCode, "]", stationNameStr, "]保存本地出站数据---" + ret));
 | 
	
		
			
				|  |  | -            string uuid = "";
 | 
	
		
			
				|  |  | -            // 上传MES
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            #region MES
 | 
	
		
			
				|  |  |              if (GlobalContext.IsSendProcessData)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  try
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      string id = processData.ID.Copy();
 | 
	
		
			
				|  |  | -                    uuid = Guid.NewGuid().ToString();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      XmMES_StationOutRequest_Body outRequest_Body = new XmMES_StationOutRequest_Body();
 | 
	
		
			
				|  |  |                      outRequest_Body.uuidInspection = uuid;
 | 
	
	
		
			
				|  | @@ -1761,7 +1791,6 @@ namespace MainForm
 | 
	
		
			
				|  |  |                              }
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                      string jsonstr1 = JsonConvert.SerializeObject(outRequest_Body);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1775,8 +1804,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                              response = XiaomiMESHttp_StationOutbound.StationOut(outRequest_Body);
 | 
	
		
			
				|  |  |                              if (response != null && response.header.code == "200")
 | 
	
		
			
				|  |  |                              {
 | 
	
		
			
				|  |  | -                                OnMessage(LogType.Error,
 | 
	
		
			
				|  |  | -                                    "上传出站数据到MES服务器---成功!请求信息:" + jsonstr1 + "返回信息:" +
 | 
	
		
			
				|  |  | +                                OnMessage(LogType.Info,
 | 
	
		
			
				|  |  | +                                    $"【出站数据 SN {sn}】上传出站数据到MES服务器---成功!请求信息:" + jsonstr1 + "返回信息:" +
 | 
	
		
			
				|  |  |                                      JsonConvert.SerializeObject(response.body));
 | 
	
		
			
				|  |  |                                  break;
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -1787,7 +1816,7 @@ namespace MainForm
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                              mesRet = $"[{response?.header?.code}]{response?.header?.desc}";
 | 
	
		
			
				|  |  |                              // 记录失败原因
 | 
	
		
			
				|  |  | -                            OnMessage(LogType.Error, "上传出站数据到MES服务器---失败!正在重新上传!接口报错信息:" + mesRet + "参数:" + jsonstr1);
 | 
	
		
			
				|  |  | +                            OnMessage(LogType.Error, $"【出站数据 SN {sn}】上传出站数据到MES服务器---失败!正在重新上传!接口报错信息:" + mesRet + "参数:" + jsonstr1);
 | 
	
		
			
				|  |  |                          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                          if (response?.header?.code == "200")
 | 
	
	
		
			
				|  | @@ -1817,14 +1846,21 @@ namespace MainForm
 | 
	
		
			
				|  |  |                          str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1));
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +            #region IOT
 | 
	
		
			
				|  |  | +            string slot = "01-SLOT-01";
 | 
	
		
			
				|  |  | +            //过站明细
 | 
	
		
			
				|  |  |              if (GlobalContext.IsMqttSendProcessData)
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                test_item_num += 1;
 | 
	
		
			
				|  |  |                  PassStationDetailRequest request = new PassStationDetailRequest();
 | 
	
		
			
				|  |  |                  request.pass_station_id = uuid;
 | 
	
		
			
				|  |  |                  request.sn = sn;                      // 产品SN
 | 
	
		
			
				|  |  | -                request.slot = "";                  // 槽位编码
 | 
	
		
			
				|  |  | -                request.test_item_num = "1";
 | 
	
		
			
				|  |  | +                request.slot = slot;                  // 槽位编码
 | 
	
		
			
				|  |  | +                request.test_item_num = test_item_num.ToString();
 | 
	
		
			
				|  |  |                  request.function_name = "Machine_加⼯模块";
 | 
	
		
			
				|  |  |                  request.status = "PASS";
 | 
	
		
			
				|  |  |                  (int, string) iotResult = (0, "");
 | 
	
	
		
			
				|  | @@ -1834,10 +1870,10 @@ namespace MainForm
 | 
	
		
			
				|  |  |                      var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>(jsonParm);
 | 
	
		
			
				|  |  |                      foreach (var kvp in dictionary)
 | 
	
		
			
				|  |  |                      {
 | 
	
		
			
				|  |  | -                        request.test_item= kvp.Key.ToString();
 | 
	
		
			
				|  |  | +                        request.test_item = kvp.Key.ToString();
 | 
	
		
			
				|  |  |                          request.result_val = kvp.Value.ToString();
 | 
	
		
			
				|  |  |                          request.description = request.test_item;
 | 
	
		
			
				|  |  | -                        // 上传过站结果
 | 
	
		
			
				|  |  | +                        // 上传过站明细
 | 
	
		
			
				|  |  |                          iotResult = XiaomiMqttClient_Extend.Write_PassStationDetail(request);
 | 
	
		
			
				|  |  |                          if (iotResult.Item1 != 0)
 | 
	
		
			
				|  |  |                          {
 | 
	
	
		
			
				|  | @@ -1846,6 +1882,35 @@ namespace MainForm
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //过站结果
 | 
	
		
			
				|  |  | +            if (GlobalContext.IsMqttSendProcessData)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                PassStationResultRequest request = new PassStationResultRequest();
 | 
	
		
			
				|  |  | +                request.project_code = GlobalContext.Project_Code;                  // 项⽬编码
 | 
	
		
			
				|  |  | +                request.factory_code = GlobalContext.Factory_Code;                  // ⼯⼚Id
 | 
	
		
			
				|  |  | +                request.process_section_code = GlobalContext.Process_Section_Code;  // ⼯段编码
 | 
	
		
			
				|  |  | +                request.line_code = GlobalContext.LineCode;                         // 线体编码
 | 
	
		
			
				|  |  | +                request.work_station = _workstation;  // ⼯站ID
 | 
	
		
			
				|  |  | +                request.device_code = _deviceCode;    // 装备编码
 | 
	
		
			
				|  |  | +                request.station = _stationCode;
 | 
	
		
			
				|  |  | +                request.process_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");  // 节拍发⽣时间(2022-06-01 14:27:57.283)
 | 
	
		
			
				|  |  | +                request.slot = slot;                  // 槽位编码
 | 
	
		
			
				|  |  | +                request.sn = sn;                      // 产品SN
 | 
	
		
			
				|  |  | +                // request.enter_status = inpass ? "PASS" : "FAIL";  // 进站状态
 | 
	
		
			
				|  |  | +                request.enter_status = "";  // 进站状态
 | 
	
		
			
				|  |  | +                request.result = pass ? "PASS" : "FAIL"; // 出站条件 PASS或FAIL;              // 过站结果
 | 
	
		
			
				|  |  | +                request.work_type = "OUT_STATION";        // 作业类型
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                // 上传过站结果
 | 
	
		
			
				|  |  | +                (int, string) iotResult = XiaomiMqttClient_Extend.Write_PassStationResult(request);
 | 
	
		
			
				|  |  | +                if (iotResult.Item1 != 0)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    OnMessage(LogType.Info, $"【IOT过站结果】上传失败!错误原因:{iotResult.Item2},过站结果;产品码[{sn}]  进站结果[{request.enter_status}]  出站结果[{request.result}]");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            #endregion
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              return result;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -2638,6 +2703,25 @@ namespace MainForm
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        public void operateToIot(string action, string stationNameStr)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            OperateLogRequest request = new OperateLogRequest();
 | 
	
		
			
				|  |  | +            request.software_version = "V" + Application.ProductVersion;              // 软件版本号;如:V1.2.4
 | 
	
		
			
				|  |  | +            request.operate_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");  // 操作时间(2022-06-01 14:27:57.283)
 | 
	
		
			
				|  |  | +            request.operate_action = action;   // 操作动作(对应软件开启/关闭/重新加载项⽬;startup、shutdown、reload)
 | 
	
		
			
				|  |  | +            //request.current_process = Process.GetCurrentProcess()?.Id.ToString();  // 当前进程;进程ID
 | 
	
		
			
				|  |  | +            request.current_process = Application.ProductName;
 | 
	
		
			
				|  |  | +            request.operate_desc = stationNameStr;       // 操作描述;如:供应商软件开启/关闭/重新加载项⽬
 | 
	
		
			
				|  |  | +            request.operate_result = "success";   // 操作结果
 | 
	
		
			
				|  |  | +            request.operator_name = "default";  // 操作账号名;填当前操作⽤⼾,如⽆则填default
 | 
	
		
			
				|  |  | +            // 上传
 | 
	
		
			
				|  |  | +            (int, string) iotResult = XiaomiMqttClient_Extend.Write_OperateLog(request);
 | 
	
		
			
				|  |  | +            if (iotResult.Item1 != 0)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                AddMessage(LogType.Info, "【操作记录】上传失败!错误原因:"+ iotResult.Item2+"操作状态:"+stationNameStr);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          #endregion
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          #region S1
 | 
	
	
		
			
				|  | @@ -2727,6 +2811,7 @@ namespace MainForm
 | 
	
		
			
				|  |  |                                  {
 | 
	
		
			
				|  |  |                                      if (!ProgressState)
 | 
	
		
			
				|  |  |                                      {
 | 
	
		
			
				|  |  | +                                        uuid = Guid.NewGuid().ToString();
 | 
	
		
			
				|  |  |                                          ProgressState = true;
 | 
	
		
			
				|  |  |                                          Task.Run(() => S1进站(plcNo, stationNameStr, stPLC_MesData,
 | 
	
		
			
				|  |  |                                              tagBaseName + "." + tagMesCommName, out ProgressState));
 | 
	
	
		
			
				|  | @@ -2757,18 +2842,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |                                      {
 | 
	
		
			
				|  |  |                                          ProgressState = true;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.nThrowCount = 1;
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.fCleanAirPress = 4;
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.fCleanSpeed = 2;
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.fWindBladeHeight = 5;
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.fCleanTime = 2;
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.nCleanCount = 7;
 | 
	
		
			
				|  |  | -                                        stPLC_MesData.mesData.nRemainCount = 1;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |                                          Task.Run(() => S1出站(plcNo, stationNameStr, stPLC_MesData,
 | 
	
		
			
				|  |  |                                              tagBaseName + "." + tagMesCommName, stationCode, stationName,
 | 
	
		
			
				|  |  |                                              out ProgressState));
 | 
	
		
			
				|  |  |                                          stPLC_MesData.mesCommFrmPLC.cmd = 0; //清除入站申请
 | 
	
		
			
				|  |  | +                                        uuid = "";
 | 
	
		
			
				|  |  |                                      }
 | 
	
		
			
				|  |  |                                  }
 | 
	
		
			
				|  |  |                              }
 | 
	
	
		
			
				|  | @@ -2878,6 +2956,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string CarrierBarcode = (string)stPLC_MesData.BarcodeSet.strCarrierBarcode; // 载具条码;
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S1_MachineId; // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = GlobalContext.S1_StationId; // 工位ID(可配置)
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (string.IsNullOrEmpty(sn))
 | 
	
		
			
				|  |  |                  {
 | 
	
	
		
			
				|  | @@ -2904,12 +2984,17 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId,pass);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb==1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -2948,6 +3033,7 @@ namespace MainForm
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              Stopwatch stopwatch1 = new Stopwatch();
 | 
	
		
			
				|  |  |              Stopwatch stopwatch2 = new Stopwatch();
 | 
	
		
			
				|  |  | +            test_item_num = 0;//iot 过站明细序号
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              try
 | 
	
		
			
				|  |  |              {
 | 
	
	
		
			
				|  | @@ -3013,7 +3099,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |      , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -3290,7 +3380,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  AddMessage(LogType.Info, stationNameStr + "_进站开始");
 | 
	
		
			
				|  |  |                  string sn = (string)stPLC_MesData.BarcodeSet.strProductBarcode; // 产品SN(物料码),现在PLC只有10和50返回
 | 
	
		
			
				|  |  |                  //sn = sn.Substring(sn.Length - 11, 4) + sn.Substring(sn.Length - 5, 5);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S2_MachineId; // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = GlobalContext.S2_StationId; // 工位ID(可配置)
 | 
	
		
			
				|  |  |                  string strCarrierBarcode = (string)stPLC_MesData.BarcodeSet.strCarrierBarcode; // 产品SN(物料码)
 | 
	
	
		
			
				|  | @@ -3313,12 +3404,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId,pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -3413,7 +3508,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, PartBarcode, paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -3797,6 +3896,9 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string sn = (string)stPLC_MesData.BarcodeSet.strProductBarcode; // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S3_MachineId; // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = string.Empty;
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |                  if (direction == "Left")
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      StationId = GlobalContext.S3_StationId_1; // 工位ID(可配置)
 | 
	
	
		
			
				|  | @@ -3823,12 +3925,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId,pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -3922,17 +4028,20 @@ namespace MainForm
 | 
	
		
			
				|  |  |                      Parameter_unit = ""
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                int result1 = 1;
 | 
	
		
			
				|  |  |                  //if (direction == "Right")
 | 
	
		
			
				|  |  |                  //{ 
 | 
	
		
			
				|  |  |                  string paramJson = JsonConvert.SerializeObject(stPLC_MesData.mesData);
 | 
	
		
			
				|  |  | -                result1 = SwitctProcessData(stationNameStr, items, equipmentCode, processItem
 | 
	
		
			
				|  |  | +                int result1 = SwitctProcessData(stationNameStr, items, equipmentCode, processItem
 | 
	
		
			
				|  |  |     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson, direction);
 | 
	
		
			
				|  |  |                  //}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -4222,6 +4331,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string sn = (string)stPLC_MesData.BarcodeSet.strProductBarcode; // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S4_MachineId; // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = GlobalContext.S4_StationId; // 工位ID(可配置)
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |                  string strCarrierBarcode = (string)stPLC_MesData.BarcodeSet.strCarrierBarcode; // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  //载具码验证产品码 
 | 
	
		
			
				|  |  |                  string strProductBarcode = SQLHelper.GetProductBarcodeByCarrierCode(strCarrierBarcode);
 | 
	
	
		
			
				|  | @@ -4237,12 +4348,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId,pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -4328,7 +4443,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -4722,6 +4841,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string StationId = GlobalContext.S5_StationId;  // 工位ID(可配置)
 | 
	
		
			
				|  |  |                  string strCarrierBarcode = (string)stPLC_MesData.BarcodeSet.strCarrierBarcode;  // 载具条码
 | 
	
		
			
				|  |  |                  string pcbBarcode = (string)stPLC_MesData.BarcodeSet.strPCBBarcode;
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //绑定载具和产品
 | 
	
		
			
				|  |  |                  ResponseMessage message = new ResponseMessage();
 | 
	
	
		
			
				|  | @@ -4745,12 +4866,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId, pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -4838,7 +4963,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, PartBarcode, paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -5239,6 +5368,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string sn = (string)stPLC_MesData.BarcodeSet.strProductBarcode;  // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S6_MachineId;  // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = GlobalContext.S6_StationId;  // 工位ID(可配置)
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |                  string strCarrierBarcode = (string)stPLC_MesData.BarcodeSet.strCarrierBarcode;  // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  //strCarrierBarcode = "N801A-003";
 | 
	
		
			
				|  |  |                  //载具码验证产品码 
 | 
	
	
		
			
				|  | @@ -5274,12 +5405,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId, pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -5365,7 +5500,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |      , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -5871,6 +6010,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string sn = (string)stPLC_MesData.BarcodeSet.strProductBarcode; // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S7_MachineId; // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = string.Empty; // 工位ID(可配置)
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |                  if (direction == "Left")
 | 
	
		
			
				|  |  |                  {
 | 
	
		
			
				|  |  |                      StationId = GlobalContext.S7_StationId_1;
 | 
	
	
		
			
				|  | @@ -5908,12 +6049,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId, pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -6019,11 +6164,10 @@ namespace MainForm
 | 
	
		
			
				|  |  |                      Parameter_unit = ""
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                int result1 = 1;
 | 
	
		
			
				|  |  |                  //if (direction == "Right")
 | 
	
		
			
				|  |  |                  //{ 
 | 
	
		
			
				|  |  |                  string paramJson = JsonConvert.SerializeObject(stPLC_MesData.mesData);
 | 
	
		
			
				|  |  | -                SwitctProcessData(stationNameStr, items, equipmentCode, processItem , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode
 | 
	
		
			
				|  |  | +                int result1 = SwitctProcessData(stationNameStr, items, equipmentCode, processItem , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode
 | 
	
		
			
				|  |  |                      , sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);
 | 
	
		
			
				|  |  |                     
 | 
	
		
			
				|  |  |                  //}
 | 
	
	
		
			
				|  | @@ -6038,7 +6182,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  //}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -6447,7 +6595,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |              Stopwatch stopwatch1 = new Stopwatch();
 | 
	
		
			
				|  |  |              Stopwatch stopwatch2 = new Stopwatch();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +            int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +            bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |              try
 | 
	
		
			
				|  |  |              {
 | 
	
		
			
				|  |  |                  stopwatch1.Start();
 | 
	
	
		
			
				|  | @@ -6469,12 +6618,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId, pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -6560,7 +6713,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
	
		
			
				|  | @@ -6951,6 +7108,8 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  string sn = (string)stPLC_MesData.BarcodeSet.strProductBarcode; // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  string MachineId = GlobalContext.S9_MachineId; // 装备ID(可配置)
 | 
	
		
			
				|  |  |                  string StationId = GlobalContext.S9_StationId; // 工位ID(可配置)
 | 
	
		
			
				|  |  | +                int a1Result = (int)stPLC_MesData.iotData.testStatus; // 产品结果
 | 
	
		
			
				|  |  | +                bool pass = a1Result == 1;
 | 
	
		
			
				|  |  |                  string strCarrierBarcode = (string)stPLC_MesData.BarcodeSet.strCarrierBarcode; // 产品SN(物料码)
 | 
	
		
			
				|  |  |                  //载具码验证产品码 
 | 
	
		
			
				|  |  |                  string strProductBarcode = SQLHelper.GetProductBarcodeByCarrierCode(strCarrierBarcode);
 | 
	
	
		
			
				|  | @@ -6966,12 +7125,16 @@ namespace MainForm
 | 
	
		
			
				|  |  |                  List<TestItem> item = new List<TestItem>();
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  int result = SaveStationInData(stationNameStr, GlobalContext.WorkOrderCode, GlobalContext.Mtltmrk, sn,
 | 
	
		
			
				|  |  | -                    item, MachineId, StationId);
 | 
	
		
			
				|  |  | +                    item, MachineId, StationId, pass);
 | 
	
		
			
				|  |  |                  stopwatch2.Stop();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  //指令执行结果 1:OK   110:失败
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_进站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 | 
	
		
			
				|  |  |                  resultToPlC.cmd = 0;
 | 
	
	
		
			
				|  | @@ -7058,7 +7221,11 @@ namespace MainForm
 | 
	
		
			
				|  |  |     , workorder_code, batch_num, mtltmrk, plcDate_YMD, supplierCode, sn, pass, CarrierBarcode, "1", MachineId, StationId, "", paramJson);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  byte mesResultFrmWeb = (byte)(result1 == 1 ? 1 : 110);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                if (mesResultFrmWeb == 1)
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    mesResultFrmWeb = (byte)(a1Result == 1 ? 1 : 110); //检测NG
 | 
	
		
			
				|  |  | +                    AddMessage(LogType.Info, stationNameStr + "_出站检测结果:FAIL");
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |                  stopwatch2.Start();
 | 
	
		
			
				|  |  |                  //进站结果写入PLC
 | 
	
		
			
				|  |  |                  CommandFromPLC resultToPlC = new CommandFromPLC();
 |