/// <summary> /// 获取控制命令的执行结果 /// </summary> /// <param name="cmdId">控制命令记录Id</param> /// <returns></returns> public eEquInfCmdResultCode GetSampleCmdResult(string cmdId) { eEquInfCmdResultCode res; InfQCJXCYSampleCMD qcjxcySampleCmd = Dbers.GetInstance().SelfDber.Get <InfQCJXCYSampleCMD>(cmdId); if (qcjxcySampleCmd == null) { throw new ArgumentException("未找到采样控制命令,cmdId:" + cmdId); } Enum.TryParse <eEquInfCmdResultCode>(qcjxcySampleCmd.ResultCode, out res); return(res); }
/// <summary> /// 发送制样计划 /// </summary> public bool SaveMakerPlan(InfQCJXCYSampleCMD entity, out string message) { try { message = "制样计划发送成功"; if (Dbers.GetInstance().SelfDber.Insert <InfQCJXCYSampleCMD>(entity) > 0) { return(true); } message = "制样计划发送失败"; return(false); } catch (Exception ex) { message = "制样计划发送失败!" + ex.Message; return(false); } }
/// <summary> /// 读卡、车号识别任务 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); timer1.Interval = 2000; try { // 执行远程命令 ExecAppRemoteControlCmd(); switch (this.CurrentFlowFlag) { case eFlowFlag.等待车辆: #region if (this.InductorCoil1) { // 当读卡区域地感有信号,触发读卡或者车号识别 List <string> tags = Hardwarer.Rwer1.ScanTags(); if (tags.Count > 0) { passCarQueuer.Enqueue(tags[0]); } } if (passCarQueuer.Count > 0) { this.CurrentFlowFlag = eFlowFlag.验证车辆; } #endregion break; case eFlowFlag.验证车辆: #region // 队列中无车时,等待车辆 if (passCarQueuer.Count == 0) { this.CurrentFlowFlag = eFlowFlag.等待车辆; break; } this.CurrentImperfectCar = passCarQueuer.Dequeue(); // 方式一:根据识别的车牌号查找车辆信息 this.CurrentAutotruck = carTransportDAO.GetAutotruckByCarNumber(this.CurrentImperfectCar.Voucher); if (this.CurrentAutotruck == null) { //// 方式二:根据识别的标签卡查找车辆信息 this.CurrentAutotruck = carTransportDAO.GetAutotruckByTagId(this.CurrentImperfectCar.Voucher); } if (this.CurrentAutotruck != null) { UpdateLedShow(this.CurrentAutotruck.CarNumber + "读卡成功"); this.voiceSpeaker.Speak(this.CurrentAutotruck.CarNumber + " 读卡成功", 1, false); if (this.CurrentAutotruck.IsUse == 1) { if (this.CurrentAutotruck.CarriageLength > 0 && this.CurrentAutotruck.CarriageWidth > 0 && this.CurrentAutotruck.CarriageBottomToFloor > 0) { // 未完成运输记录 CmcsUnFinishTransport unFinishTransport = carTransportDAO.GetUnFinishTransportByAutotruckId(this.CurrentAutotruck.Id, eCarType.入厂煤.ToString()); if (unFinishTransport != null) { this.CurrentBuyFuelTransport = carTransportDAO.GetBuyFuelTransportById(unFinishTransport.TransportId); if (this.CurrentBuyFuelTransport != null) { // 判断路线设置 string nextPlace; if (carTransportDAO.CheckNextTruckInFactoryWay(this.CurrentAutotruck.CarType, this.CurrentBuyFuelTransport.StepName, "采样", CommonAppConfig.GetInstance().AppIdentifier, out nextPlace)) { BackGateUp(); btnSendSamplingPlan.Enabled = true; this.CurrentFlowFlag = eFlowFlag.发送计划; UpdateLedShow(this.CurrentAutotruck.CarNumber, "采样请下车"); this.voiceSpeaker.Speak(this.CurrentAutotruck.CarNumber + " 采样请下车", 1, false); } else { UpdateLedShow("路线错误", "禁止通过"); this.voiceSpeaker.Speak("路线错误 禁止通过 " + (!string.IsNullOrEmpty(nextPlace) ? "请前往" + nextPlace : ""), 1, false); timer1.Interval = 8000; this.CurrentFlowFlag = eFlowFlag.异常重置; break; } } else { commonDAO.SelfDber.Delete <CmcsUnFinishTransport>(unFinishTransport.Id); } } else { this.UpdateLedShow(this.CurrentAutotruck.CarNumber, "未排队"); this.voiceSpeaker.Speak("车牌号 " + this.CurrentAutotruck.CarNumber + " 未找到排队记录", 1, false); timer1.Interval = 8000; this.CurrentFlowFlag = eFlowFlag.异常重置; break; } } else { this.UpdateLedShow(this.CurrentAutotruck.CarNumber, "车厢未测量"); this.voiceSpeaker.Speak("车牌号 " + this.CurrentAutotruck.CarNumber + " 车厢未测量", 1, false); timer1.Interval = 8000; this.CurrentFlowFlag = eFlowFlag.异常重置; break; } } else { UpdateLedShow(this.CurrentAutotruck.CarNumber, "已停用"); this.voiceSpeaker.Speak("车牌号 " + this.CurrentAutotruck.CarNumber + " 已停用,禁止通过", 1, false); timer1.Interval = 8000; this.CurrentFlowFlag = eFlowFlag.异常重置; break; } } else { UpdateLedShow(this.CurrentImperfectCar.Voucher, "未登记"); // 方式一:车号识别 this.voiceSpeaker.Speak("车牌号 " + this.CurrentImperfectCar.Voucher + " 未登记,禁止通过", 1, false); //// 方式二:刷卡方式 //this.voiceSpeaker.Speak("卡号未登记,禁止通过", 1, false); timer1.Interval = 8000; this.CurrentFlowFlag = eFlowFlag.异常重置; break; } #endregion break; case eFlowFlag.发送计划: #region if (this.SamplerSystemStatus == eEquInfSamplerSystemStatus.就绪待机) { CmcsRCSampling sampling = carTransportDAO.GetRCSamplingById(this.CurrentBuyFuelTransport.SamplingId); if (sampling != null) { txtSampleCode.Text = sampling.SampleCode; this.CurrentSampleCMD = new InfQCJXCYSampleCMD() { MachineCode = this.SamplerMachineCode, CarNumber = this.CurrentBuyFuelTransport.CarNumber, InFactoryBatchId = this.CurrentBuyFuelTransport.InFactoryBatchId, SampleCode = sampling.SampleCode, Mt = 0, // 根据预报 TicketWeight = 0, // 根据预报 CarCount = 0, // 采样点数根据相关逻辑计算 PointCount = 3, CarriageLength = this.CurrentAutotruck.CarriageLength, CarriageWidth = this.CurrentAutotruck.CarriageWidth, CarriageHeight = this.CurrentAutotruck.CarriageHeight, CarriageBottomToFloor = this.CurrentAutotruck.CarriageBottomToFloor, Obstacle1 = this.CurrentAutotruck.LeftObstacle1, Obstacle2 = this.CurrentAutotruck.LeftObstacle2, Obstacle3 = this.CurrentAutotruck.LeftObstacle3, Obstacle4 = this.CurrentAutotruck.LeftObstacle4, Obstacle5 = this.CurrentAutotruck.LeftObstacle5, Obstacle6 = this.CurrentAutotruck.LeftObstacle6, ResultCode = eEquInfCmdResultCode.默认.ToString(), DataFlag = 0 }; // 发送采样计划 if (commonDAO.SelfDber.Insert <InfQCJXCYSampleCMD>(CurrentSampleCMD) > 0) { this.CurrentFlowFlag = eFlowFlag.等待采样; } } else { this.UpdateLedShow("未找到采样单信息"); this.voiceSpeaker.Speak("未找到采样单信息,请联系管理员", 1, false); timer1.Interval = 5000; } } else { this.UpdateLedShow("采样机未就绪"); this.voiceSpeaker.Speak("采样机未就绪", 1, false); timer1.Interval = 5000; } #endregion break; case eFlowFlag.等待采样: #region // 判断采样是否完成 InfQCJXCYSampleCMD qCJXCYSampleCMD = commonDAO.SelfDber.Get <InfQCJXCYSampleCMD>(this.CurrentSampleCMD.Id); if (qCJXCYSampleCMD.ResultCode == eEquInfCmdResultCode.成功.ToString()) { if (jxSamplerDAO.SaveBuyFuelTransport(this.CurrentBuyFuelTransport.Id, DateTime.Now, CommonAppConfig.GetInstance().AppIdentifier)) { FrontGateUp(); this.UpdateLedShow("采样完毕", " 请离开"); this.voiceSpeaker.Speak("采样完毕,请离开", 1, false); this.CurrentFlowFlag = eFlowFlag.等待离开; } } // 降低灵敏度 timer1.Interval = 4000; #endregion break; case eFlowFlag.等待离开: BackGateUp(); // 采样区域及道闸 地感无信号 ResetBuyFuel(); // 降低灵敏度 timer1.Interval = 4000; break; } //// 所有地感无信号时重置 //if (this.AutoHandMode && !this.InductorCoil1 && !this.InductorCoil2 && !this.InductorCoil3 && !this.InductorCoil4 && this.CurrentFlowFlag != eFlowFlag.等待车辆 // && this.CurrentImperfectCar != null) ResetBuyFuel(); RefreshEquStatus(); } catch (Exception ex) { Log4Neter.Error("timer1_Tick", ex); } finally { timer1.Start(); } timer1.Start(); }
/// <summary> /// 读卡、车号识别任务 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); timer1.Interval = 2000; try { switch (this.CurrentFlowFlag) { case eFlowFlag.等待车辆: #region //if (this.InductorCoil1) //{ // // 当读卡区域地感有信号,触发读卡或者车号识别 // List<string> tags = Hardwarer.Rwer1.ScanTags(); // if (tags.Count > 0) passCarQueuer.Enqueue(tags[0]); //} //if (passCarQueuer.Count > 0) this.CurrentFlowFlag = eFlowFlag.验证车辆; #endregion break; case eFlowFlag.验证车辆: #region // 队列中无车时,等待车辆 if (passCarQueuer.Count == 0) { this.CurrentFlowFlag = eFlowFlag.等待车辆; break; } this.CurrentImperfectCar = passCarQueuer.Dequeue(); panCurrentCarNumber.Text = this.CurrentImperfectCar.Voucher; // 方式一:根据识别的车牌号查找车辆信息 this.CurrentAutotruck = carTransportDAO.GetAutotruckByCarNumber(this.CurrentImperfectCar.Voucher); if (this.CurrentAutotruck != null) { UpdateLedShow(this.CurrentAutotruck.CarNumber + "读卡成功"); this.voiceSpeaker.Speak(this.CurrentAutotruck.CarNumber + " 读卡成功", 1, false); if (this.CurrentAutotruck.IsUse == 1) { //if (this.CurrentAutotruck.CarriageLength > 0 && this.CurrentAutotruck.CarriageWidth > 0 && this.CurrentAutotruck.CarriageBottomToFloor > 0) //{ // 未完成运输记录 CmcsUnFinishTransport unFinishTransport = carTransportDAO.GetUnFinishTransportByAutotruckId(this.CurrentAutotruck.Id, eCarType.入厂煤.ToString()); if (unFinishTransport != null) { this.CurrentBuyFuelTransport = carTransportDAO.GetBuyFuelTransportById(unFinishTransport.TransportId); if (this.CurrentBuyFuelTransport != null) { CmcsNoSampler noSampler = commonDAO.SelfDber.Entity <CmcsNoSampler>("where MineId=:MineId and StartTime<=:CreateDate and EndTime>=:CreateDate order by CreateDate desc", new { MineId = this.CurrentBuyFuelTransport.MineId, CreateDate = DateTime.Now }); if (noSampler != null) { UpdateLedShow(this.CurrentAutotruck.CarNumber, "无需采样"); this.voiceSpeaker.Speak(this.CurrentAutotruck.CarNumber + " 无需采样 直接离开", 1, false); this.CurrentFlowFlag = eFlowFlag.等待离开; break; } //if (this.CurrentBuyFuelTransport.InFactoryTime.Date < DateTime.Now.Date) //{ this.CurrentBuyFuelTransport.InFactoryTime = DateTime.Now; carTransportDAO.GCQCInFactoryBatchByBuyFuelTransport(this.CurrentBuyFuelTransport); commonDAO.SelfDber.Update(this.CurrentBuyFuelTransport); //} // 判断路线设置 string nextPlace; if (carTransportDAO.CheckNextTruckInFactoryWay(this.CurrentAutotruck.CarType, this.CurrentBuyFuelTransport.StepName, "采样", CommonAppConfig.GetInstance().AppIdentifier, out nextPlace)) { btnSendSamplingPlan.Enabled = true; this.CurrentFlowFlag = eFlowFlag.发送计划; timer1.Interval = 200; UpdateLedShow(this.CurrentAutotruck.CarNumber, "等待驶入"); this.voiceSpeaker.Speak(this.CurrentAutotruck.CarNumber + " 等待驶入", 1, false); } else { UpdateLedShow("路线错误", "禁止通过"); this.voiceSpeaker.Speak("路线错误 禁止通过 " + (!string.IsNullOrEmpty(nextPlace) ? "请前往" + nextPlace : ""), 1, false); timer1.Interval = 20000; } } else { commonDAO.SelfDber.Delete <CmcsUnFinishTransport>(unFinishTransport.Id); } } else { this.UpdateLedShow(this.CurrentAutotruck.CarNumber, "未排队"); this.voiceSpeaker.Speak("车牌号 " + this.CurrentAutotruck.CarNumber + " 未找到排队记录", 1, false); timer1.Interval = 20000; } //} //else //{ // this.UpdateLedShow(this.CurrentAutotruck.CarNumber, "车厢未测量"); // this.voiceSpeaker.Speak("车牌号 " + this.CurrentAutotruck.CarNumber + " 车厢未测量", 1, false); // timer1.Interval = 20000; //} } else { UpdateLedShow(this.CurrentAutotruck.CarNumber, "已停用"); this.voiceSpeaker.Speak("车牌号 " + this.CurrentAutotruck.CarNumber + " 已停用,禁止通过", 1, false); timer1.Interval = 20000; } } else { UpdateLedShow(this.CurrentImperfectCar.Voucher, "未登记"); // 方式一:车号识别 this.voiceSpeaker.Speak("车牌号 " + this.CurrentImperfectCar.Voucher + " 未登记,禁止通过", 1, false); timer1.Interval = 20000; } #endregion break; case eFlowFlag.发送计划: #region if (this.SamplerSystemStatus == eEquInfSamplerSystemStatus.就绪待机) { CmcsRCSampling sampling = carTransportDAO.GetRCSamplingById(this.CurrentBuyFuelTransport.SamplingId); if (sampling != null) { txtSampleCode.Text = sampling.SampleCode; if (this.CurrentAutotruck.CarriageLength == 0) { this.CurrentAutotruck.CarriageTotalLength = 16000; this.CurrentAutotruck.CarriageLength = 13000; this.CurrentAutotruck.CarriageWidth = 2400; this.CurrentAutotruck.CarriageHeight = 1800; this.CurrentAutotruck.CarriageBottomToFloor = 1500; } this.CurrentSampleCMD = new InfQCJXCYSampleCMD() { MachineCode = this.SamplerMachineCode, CarNumber = this.CurrentBuyFuelTransport.CarNumber, InFactoryBatchId = this.CurrentBuyFuelTransport.InFactoryBatchId, SampleCode = sampling.SampleCode, Mt = 0, // 根据预报 TicketWeight = 0, // 根据预报 CarCount = 0, // 采样点数根据相关逻辑计算 PointCount = Convert.ToInt32(dbtxtSampleCount.Value), CarriageTotalLength = this.CurrentAutotruck.CarriageTotalLength, CarriageLength = this.CurrentAutotruck.CarriageLength, CarriageWidth = this.CurrentAutotruck.CarriageWidth, CarriageHeight = this.CurrentAutotruck.CarriageHeight, CarriageBottomToFloor = this.CurrentAutotruck.CarriageBottomToFloor, Obstacle1 = this.CurrentAutotruck.LeftObstacle1.ToString(), Obstacle2 = this.CurrentAutotruck.LeftObstacle2.ToString(), Obstacle3 = this.CurrentAutotruck.LeftObstacle3.ToString(), Obstacle4 = this.CurrentAutotruck.LeftObstacle4.ToString(), Obstacle5 = this.CurrentAutotruck.LeftObstacle5.ToString(), Obstacle6 = this.CurrentAutotruck.LeftObstacle6.ToString(), ResultCode = eEquInfCmdResultCode.默认.ToString(), DataFlag = 0 }; // 发送采样计划 if (commonDAO.SelfDber.Insert <InfQCJXCYSampleCMD>(CurrentSampleCMD) > 0) { this.CurrentFlowFlag = eFlowFlag.等待采样; this.UpdateLedShow("等待采样"); this.voiceSpeaker.Speak("等待采样", 1, false); } } else { this.UpdateLedShow("未找到采样单信息"); this.voiceSpeaker.Speak("未找到采样单信息,请联系管理员", 1, false); timer1.Interval = 5000; } } else { this.UpdateLedShow("采样机未就绪"); this.voiceSpeaker.Speak("采样机未就绪", 1, false); timer1.Interval = 5000; } #endregion break; case eFlowFlag.等待采样: #region // 判断采样是否完成 InfQCJXCYSampleCMD qCJXCYSampleCMD = commonDAO.SelfDber.Get <InfQCJXCYSampleCMD>(this.CurrentSampleCMD.Id); if (qCJXCYSampleCMD.ResultCode == eEquInfCmdResultCode.成功.ToString()) { if (jxSamplerDAO.SaveBuyFuelTransport(this.CurrentBuyFuelTransport.Id, DateTime.Now, CommonAppConfig.GetInstance().AppIdentifier)) { this.UpdateLedShow("采样完毕", " 请离开"); this.voiceSpeaker.Speak("采样完毕,请离开", 1, false); this.CurrentFlowFlag = eFlowFlag.等待离开; } } // 降低灵敏度 timer1.Interval = 4000; #endregion break; case eFlowFlag.等待离开: ResetBuyFuel(); // 降低灵敏度 timer1.Interval = 4000; break; } RefreshEquStatus(); } catch (Exception ex) { Log4Neter.Error("timer1_Tick", ex); } finally { timer1.Start(); } timer1.Start(); }
/// <summary> /// 同步采样命令 /// </summary> /// <param name="output"></param> public void SyncSampleCmd(Action <string, eOutputType> output) { string CarNumber = string.Empty; int res = 0; // 集中管控 > 第三方 foreach (InfQCJXCYSampleCMD entity in CarSamplerDAO.GetInstance().GetWaitForSyncSampleCMD(this.MachineCode)) { bool isSuccess = false; CmcsAutotruck AutoTruck = commonDAO.SelfDber.Entity <CmcsAutotruck>(" where CarNumber=:CarNumber", new { CarNumber = entity.CarNumber }); if (AutoTruck != null) { CarNumber = AutoTruck.CarNumber; //先同步车辆信息 KY_CarInfo car = this.EquDber.Get <KY_CarInfo>(entity.CarNumber); if (car == null) { car = new KY_CarInfo(); car.Car_Number = AutoTruck.CarNumber; car.Car_Long = AutoTruck.CarriageLength; car.Car_Width = AutoTruck.CarriageWidth; car.Car_Height = AutoTruck.CarriageBottomToFloor; car.LJ_Sum = SumObstacle(AutoTruck); car.LJ_0 = 0; car.LJ_1 = AutoTruck.LeftObstacle1; car.LJ_2 = AutoTruck.LeftObstacle2; car.LJ_3 = AutoTruck.LeftObstacle3; car.LJ_4 = AutoTruck.LeftObstacle4; car.LJ_5 = AutoTruck.LeftObstacle5; car.LJ_6 = AutoTruck.LeftObstacle6; car.UserName = AutoTruck.Driver; car.EditDate = DateTime.Now; this.EquDber.Insert(car); } else { car.Car_Number = AutoTruck.CarNumber; car.Car_Long = AutoTruck.CarriageLength; car.Car_Width = AutoTruck.CarriageWidth; car.Car_Height = AutoTruck.CarriageBottomToFloor; car.LJ_Sum = SumObstacle(AutoTruck); car.LJ_0 = 0; car.LJ_1 = AutoTruck.LeftObstacle1; car.LJ_2 = AutoTruck.LeftObstacle2; car.LJ_3 = AutoTruck.LeftObstacle3; car.LJ_4 = AutoTruck.LeftObstacle4; car.LJ_5 = AutoTruck.LeftObstacle5; car.LJ_6 = AutoTruck.LeftObstacle6; car.UserName = AutoTruck.Driver; car.EditDate = DateTime.Now; this.EquDber.Update(car); } //同步采样命令 KY_CYJ_OutRun outrun = this.EquDber.Entity <KY_CYJ_OutRun>(" where CYJ_Machine=@CYJ_Machine", new { CYJ_Machine = DataToKYMachine(this.MachineCode) }); if (outrun == null) { outrun = new KY_CYJ_OutRun(); outrun.CYJ_Machine = DataToKYMachine(this.MachineCode); outrun.Car_Number = AutoTruck.CarNumber; //outrun.Rcd_Code = commonDAO.SelfDber.Entity<CmcsBuyFuelTransport>(" where CarNumber=:CarNumber", new { CarNumber = AutoTruck.CarNumber }).SerialNumber; outrun.CY_Code = entity.SampleCode; outrun.CY_Type = "机械采样"; outrun.CY_Point = entity.PointCount; outrun.Batch_Number = entity.InFactoryBatchId; outrun.CY_Control = (int)eSamplingControl.采样指令; outrun.CY_State = (int)eSamplingState.等待采样; outrun.Send_Time = DateTime.Now; //outrun.Clean_Flag = 0; isSuccess = this.EquDber.Insert(outrun) > 0; } else { //outrun.CYJ_Machine = DataToKYMachine(this.MachineCode); outrun.Car_Number = AutoTruck.CarNumber; //outrun.Rcd_Code = commonDAO.SelfDber.Entity<CmcsBuyFuelTransport>(" where CarNumber=:CarNumber", new { CarNumber = AutoTruck.CarNumber }).SerialNumber; outrun.CY_Code = entity.SampleCode; outrun.CY_Type = "机械采样"; outrun.CY_Point = entity.PointCount; outrun.Batch_Number = entity.InFactoryBatchId; outrun.CY_Control = (int)eSamplingControl.采样指令; outrun.CY_State = (int)eSamplingState.等待采样; outrun.Send_Time = DateTime.Now; //outrun.Clean_Flag = 0; isSuccess = this.EquDber.Update(outrun) > 0; } } if (isSuccess) { entity.SyncFlag = 1; Dbers.GetInstance().SelfDber.Update(entity); res++; } } output(string.Format("同步采样计划 {0} 条(集中管控 > 第三方)-{1}", res, this.MachineCode), eOutputType.Normal); res = 0; // 第三方 > 集中管控 同步采样结果 foreach (KY_CYJ_Record entity in this.EquDber.Entities <KY_CYJ_Record>("where CYJ_Machine=@CYJ_Machine and datediff(dd,Begin_Date,getdate())=0", new { CYJ_Machine = DataToKYMachine(this.MachineCode) })) { InfQCJXCYSampleCMD samplecmdInf = Dbers.GetInstance().SelfDber.Entity <InfQCJXCYSampleCMD>("where MachineCode=:MachineCode and SampleCode=:SampleCode and CarNumber=:CarNumber and DataFlag=0 order by createdate desc", new { MachineCode = this.MachineCode, SampleCode = entity.CY_Code, CarNumber = entity.Car_Number }); if (samplecmdInf == null) { continue; } samplecmdInf.StartTime = entity.Begin_Date; samplecmdInf.EndTime = entity.End_Date; samplecmdInf.SampleUser = entity.CY_User; if (Dbers.GetInstance().SelfDber.Update(samplecmdInf) > 0) { res++; } } //采样结果 采样完成后采样指令为0 采样状态为采样完成 开元接收到采样命令后会把采样状态改为0 等待采样 foreach (KY_CYJ_OutRun entity in this.EquDber.Entities <KY_CYJ_OutRun>(" where CYJ_Machine=@CYJ_Machine and CY_Control=0 and CY_State!=0 and Convert(varchar(10),SEND_TIME,120)>=convert(varchar(10),GETDATE(),120)", new { CYJ_Machine = DataToKYMachine(this.MachineCode) })) { InfQCJXCYSampleCMD samplecmdInf = Dbers.GetInstance().SelfDber.Entity <InfQCJXCYSampleCMD>("where MachineCode=:MachineCode and SampleCode=:SampleCode and CarNumber=:CarNumber and DataFlag=0 order by createdate desc", new { MachineCode = this.MachineCode, SampleCode = entity.CY_Code, CarNumber = entity.Car_Number }); if (samplecmdInf == null) { continue; } if (entity.CY_State == 2)//采样完成 { samplecmdInf.ResultCode = eEquInfCmdResultCode.成功.ToString(); } else if (entity.CY_State == 3) { samplecmdInf.ResultCode = eEquInfCmdResultCode.失败.ToString(); } samplecmdInf.DataFlag = 1; if (Dbers.GetInstance().SelfDber.Update(samplecmdInf) > 0) { res++; } } output(string.Format("同步采样计划 {0} 条(第三方 > 集中管控)-{1}", res, this.MachineCode), eOutputType.Normal); }
/// <summary> /// 同步采样命令 /// </summary> /// <param name="output"></param> /// <param name="MachineCode">设备编码</param> public void SyncSampleCmd(Action <string, eOutputType> output) { int res = 0; // 集中管控 > 第三方 foreach (InfQCJXCYSampleCMD entity in CarSamplerDAO.GetInstance().GetWaitForSyncSampleCMD(this.MachineCode)) { bool isSuccess = false; // 需调整:命令中的水分等信息视接口而定 EquQCJXCYJSampleCmd samplecmdEqu = this.EquDber.Get <EquQCJXCYJSampleCmd>(entity.Id); if (samplecmdEqu == null) { isSuccess = this.EquDber.Insert(new EquQCJXCYJSampleCmd { // 保持相同的Id Id = entity.Id, CarNumber = entity.CarNumber, InFactoryBatchId = entity.InFactoryBatchId, SampleCode = entity.SampleCode, //Mt = 0, TicketWeight = entity.TicketWeight, CarCount = entity.CarCount, PointCount = entity.PointCount, Point1 = entity.Point1, Point2 = entity.Point2, Point3 = entity.Point3, Point4 = entity.Point4, Point5 = entity.Point5, Point6 = entity.Point6, CarriageTotalLength = entity.CarriageTotalLength, CarriageLength = entity.CarriageLength, CarriageWidth = entity.CarriageWidth, CarriageHeight = entity.CarriageHeight, CarriageBottomToFloor = entity.CarriageBottomToFloor, Obstacle1 = entity.Obstacle1, Obstacle2 = entity.Obstacle2, Obstacle3 = entity.Obstacle3, Obstacle4 = entity.Obstacle4, Obstacle5 = entity.Obstacle5, Obstacle6 = entity.Obstacle6, StartTime = entity.StartTime, EndTime = entity.EndTime, SampleUser = entity.SampleUser, ResultCode = entity.ResultCode, DataFlag = 0 }) > 0; } else { samplecmdEqu.CarNumber = entity.CarNumber; samplecmdEqu.InFactoryBatchId = entity.InFactoryBatchId; samplecmdEqu.SampleCode = entity.SampleCode; //samplecmdEqu.Mt = 0; samplecmdEqu.TicketWeight = entity.TicketWeight; samplecmdEqu.CarCount = entity.CarCount; samplecmdEqu.PointCount = entity.PointCount; samplecmdEqu.Point1 = entity.Point1; samplecmdEqu.Point2 = entity.Point2; samplecmdEqu.Point3 = entity.Point3; samplecmdEqu.Point4 = entity.Point4; samplecmdEqu.Point5 = entity.Point5; samplecmdEqu.Point6 = entity.Point6; samplecmdEqu.CarriageTotalLength = entity.CarriageTotalLength; samplecmdEqu.CarriageLength = entity.CarriageLength; samplecmdEqu.CarriageWidth = entity.CarriageWidth; samplecmdEqu.CarriageHeight = entity.CarriageHeight; samplecmdEqu.CarriageBottomToFloor = entity.CarriageBottomToFloor; samplecmdEqu.Obstacle1 = entity.Obstacle1; samplecmdEqu.Obstacle2 = entity.Obstacle2; samplecmdEqu.Obstacle3 = entity.Obstacle3; samplecmdEqu.Obstacle4 = entity.Obstacle4; samplecmdEqu.Obstacle5 = entity.Obstacle5; samplecmdEqu.Obstacle6 = entity.Obstacle6; samplecmdEqu.StartTime = entity.StartTime; samplecmdEqu.EndTime = entity.EndTime; samplecmdEqu.SampleUser = entity.SampleUser; samplecmdEqu.ResultCode = entity.ResultCode; samplecmdEqu.DataFlag = 0; isSuccess = this.EquDber.Update(samplecmdEqu) > 0; } if (isSuccess) { entity.SyncFlag = 1; Dbers.GetInstance().SelfDber.Update(entity); res++; } } output(string.Format("{0}同步采样计划 {1} 条(集中管控 > 第三方)", this.MachineCode, res), eOutputType.Normal); res = 0; // 第三方 > 集中管控 foreach (EquQCJXCYJSampleCmd entity in this.EquDber.Entities <EquQCJXCYJSampleCmd>("where DataFlag=2 and datediff(dd,CreateDate,getdate())=0")) { InfQCJXCYSampleCMD samplecmdInf = Dbers.GetInstance().SelfDber.Get <InfQCJXCYSampleCMD>(entity.Id); if (samplecmdInf == null) { continue; } samplecmdInf.Point1 = entity.Point1; samplecmdInf.Point2 = entity.Point2; samplecmdInf.Point3 = entity.Point3; samplecmdInf.Point4 = entity.Point4; samplecmdInf.Point5 = entity.Point5; samplecmdInf.Point6 = entity.Point6; samplecmdInf.StartTime = entity.StartTime; samplecmdInf.EndTime = entity.EndTime; samplecmdInf.SampleUser = entity.SampleUser; samplecmdInf.ResultCode = entity.ResultCode; if (Dbers.GetInstance().SelfDber.Update(samplecmdInf) > 0) { // 我方已读 entity.DataFlag = 3; this.EquDber.Update(entity); res++; } } output(string.Format("{0}同步采样计划 {1} 条(第三方 > 集中管控)", this.MachineCode, res), eOutputType.Normal); }