private void CreateMainTask() { taskSimpleScheduler = new TaskSimpleScheduler(); autoResetEvent.Reset(); taskSimpleScheduler.StartNewTask("模拟业务", () => { if (!this.IsStartSimulator) { return; } // 心跳 this.EquDber.Execute("update " + EntityReflectionUtil.GetTableName <EquQCJXCYJSignal>() + " set TagValue=@TagValue where TagName=@TagName", new { TagName = GlobalVars.EquHeartbeatName, TagValue = DateTime.Now.ToString() }); // 控制命令 EquQCJXCYJSampleCmd qCJXCYJSampleCmd = this.EquDber.Entity <EquQCJXCYJSampleCmd>("where DataFlag=0 order by CreateDate desc"); if (qCJXCYJSampleCmd != null) { CmdHandle(qCJXCYJSampleCmd); autoResetEvent.WaitOne(); } // 卸样命令 EquQCJXCYJUnloadCmd qCJXCYJUnloadCmd = this.EquDber.Entity <EquQCJXCYJUnloadCmd>("where DataFlag=0 order by CreateDate desc"); if (qCJXCYJUnloadCmd != null) { CmdHandle(qCJXCYJUnloadCmd); autoResetEvent.WaitOne(); } }, 3000); }
/// <summary> /// 同步历史卸样结果 /// </summary> /// <param name="output"></param> /// <param name="MachineCode"></param> public void SyncUnloadResult(Action <string, eOutputType> output) { int res = 0; res = 0; // 第三方 > 集中管控 foreach (EquQCJXCYJUnloadResult entity in this.EquDber.Entities <EquQCJXCYJUnloadResult>("where DataFlag=0")) { InfQCJXCYJUnloadResult oldUnloadResult = commonDAO.SelfDber.Get <InfQCJXCYJUnloadResult>(entity.Id); if (oldUnloadResult == null) { // 查找采样命令 EquQCJXCYJSampleCmd qCJXCYJSampleCmd = this.EquDber.Entity <EquQCJXCYJSampleCmd>("where SampleCode=@SampleCode", new { SampleCode = entity.SampleCode }); if (qCJXCYJSampleCmd != null) { CmcsRCSampling sampling = commonDAO.SelfDber.Entity <CmcsRCSampling>("where SampleCode=:SampleCode", new { SampleCode = entity.SampleCode }); //生成采样桶记录 CmcsRCSampleBarrel rCSampleBarrel = new CmcsRCSampleBarrel() { BarrelCode = entity.BarrelCode, BarrellingTime = entity.UnloadTime, BarrelNumber = entity.BarrelCode, InFactoryBatchId = qCJXCYJSampleCmd.InFactoryBatchId, SamplerName = this.MachineCode, SampleType = eSamplingType.机械采样.ToString(), SamplingId = sampling != null ? sampling.Id : entity.SamplingId, SampleWeight = entity.SampleWeigh }; if (commonDAO.SelfDber.Insert(rCSampleBarrel) > 0) { if (commonDAO.SelfDber.Insert(new InfQCJXCYJUnloadResult { SampleCode = entity.SampleCode, BarrelCode = entity.BarrelCode, UnloadTime = entity.UnloadTime, DataFlag = entity.DataFlag }) > 0) { CmcsCYJCodeInfo codeInfo = commonDAO.SelfDber.Entity <CmcsCYJCodeInfo>("where SampleCode=:SampleCode and BarrelCode=:BarrelCode and SamplerName=:SamplerName and IsClear=0", new { SampleCode = entity.SampleCode, BarrelCode = entity.BarrelCode, SamplerName = this.MachineCode }); if (codeInfo != null) { codeInfo.ClearTime = entity.UnloadTime; codeInfo.IsClear = 1; commonDAO.SelfDber.Update(codeInfo); } entity.DataFlag = 1; this.EquDber.Update(entity); res++; } } } } } output(string.Format("{0}-同步卸样结果 {0} 条(第三方 > 集中管控)", this.MachineCode, res), eOutputType.Normal); }
/// <summary> /// 同步历史卸样结果 /// </summary> /// <param name="output"></param> /// <param name="MachineCode"></param> public void SyncUnloadResult(Action <string, eOutputType> output) { int res = 0; res = 0; // 第三方 > 集中管控 foreach (EquQCJXCYJUnloadResult entity in this.EquDber.Entities <EquQCJXCYJUnloadResult>("where DataFlag=0")) { InfQCJXCYJUnloadResult oldUnloadResult = commonDAO.SelfDber.Get <InfQCJXCYJUnloadResult>(entity.Id); if (oldUnloadResult == null) { // 查找采样命令 EquQCJXCYJSampleCmd qCJXCYJSampleCmd = this.EquDber.Entity <EquQCJXCYJSampleCmd>("where SampleCode=@SampleCode", new { SampleCode = entity.SampleCode }); if (qCJXCYJSampleCmd != null) { CmcsRCSampling sample = commonDAO.SelfDber.Entity <CmcsRCSampling>("where SamplingType='机械采样' and InFactoryBatchId=:InFactoryBatchId order by CreateDate desc", new { InFactoryBatchId = qCJXCYJSampleCmd.InFactoryBatchId }); // 生成采样桶记录 CmcsRCSampleBarrel rCSampleBarrel = new CmcsRCSampleBarrel() { BarrelCode = entity.BarrelCode, BarrellingTime = entity.UnloadTime, BarrelNumber = entity.BarrelNumber, InFactoryBatchId = qCJXCYJSampleCmd.InFactoryBatchId, SamplerName = this.MachineCode, SampleType = eSamplingType.机械采样.ToString(), SamplingId = sample != null ? sample.Id : "", SampSecondCode = entity.BarrelCode }; if (commonDAO.SelfDber.Insert(rCSampleBarrel) > 0) { if (commonDAO.SelfDber.Insert(new InfQCJXCYJUnloadResult { SampleCode = entity.SampleCode, BarrelCode = entity.BarrelCode, UnloadTime = entity.UnloadTime, SamplingId = sample != null ? sample.Id : "", DataFlag = entity.DataFlag }) > 0) { entity.DataFlag = 1; this.EquDber.Update(entity); res++; } } } } } output(string.Format("{0}同步卸样结果 {1} 条(第三方 > 集中管控)", this.MachineCode, res), eOutputType.Normal); }
/// <summary> /// 同步历史卸样结果 /// </summary> /// <param name="output"></param> /// <param name="MachineCode"></param> public void SyncUnloadResult(Action <string, eOutputType> output) { int res = 0; res = 0; // 第三方 > 集中管控 foreach (EquQCJXCYJUnloadResult entity in DcDbers.GetInstance().CarJXSampler_Dber.Entities <EquQCJXCYJUnloadResult>("where DataFlag=0")) { InfQCJXCYJUnloadResult oldUnloadResult = commonDAO.SelfDber.Get <InfQCJXCYJUnloadResult>(entity.Id); if (oldUnloadResult == null) { // 查找采样命令 EquQCJXCYJSampleCmd qCJXCYJSampleCmd = DcDbers.GetInstance().CarJXSampler_Dber.Entity <EquQCJXCYJSampleCmd>("where SampleCode=:SampleCode", new { SampleCode = entity.SampleCode }); if (qCJXCYJSampleCmd != null) { // 生成采样桶记录 CmcsRCSampleBarrel rCSampleBarrel = new CmcsRCSampleBarrel() { BarrelCode = entity.BarrelCode, BarrellingTime = entity.UnloadTime, BarrelNumber = entity.BarrelNumber, InFactoryBatchId = qCJXCYJSampleCmd.InFactoryBatchId, SamplerName = commonDAO.GetMachineNameByCode(this.MachineCode), SampleType = eSamplingType.机械采样.ToString(), SamplingId = entity.SamplingId }; if (commonDAO.SelfDber.Insert(rCSampleBarrel) > 0) { if (commonDAO.SelfDber.Insert(new InfQCJXCYJUnloadResult { SampleCode = entity.SampleCode, BarrelCode = entity.BarrelCode, UnloadTime = entity.UnloadTime, DataFlag = entity.DataFlag }) > 0) { entity.DataFlag = 1; DcDbers.GetInstance().CarJXSampler_Dber.Update(entity); res++; } } } } } output(string.Format("同步卸样结果 {0} 条(第三方 > 集中管控)", res), 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); }
private void CmdHandle(EquQCJXCYJSampleCmd input) { Task task = new Task((state) => { EquQCJXCYJSampleCmd qCJXCYJSampleCmd = state as EquQCJXCYJSampleCmd; OutputRunInfo(rtxtOutput, "处理采样命令,采样码:" + qCJXCYJSampleCmd.SampleCode); // 更新系统状态为正在运行 this.EquDber.Execute("update " + EntityReflectionUtil.GetTableName <EquQCJXCYJSignal>() + " set TagValue=@TagValue where TagName=@TagName", new { TagName = eSignalDataName.设备状态.ToString(), TagValue = eEquInfSamplerSystemStatus.正在运行.ToString() }); Thread.Sleep(3000); OutputRunInfo(rtxtOutput, "启动采样机"); qCJXCYJSampleCmd.StartTime = DateTime.Now; // 更新集样罐 this.EquDber.Execute("update " + EntityReflectionUtil.GetTableName <EquQCJXCYJBarrel>() + " set IsCurrent=0"); EquQCJXCYJBarrel qCJXCYJBarrel = this.EquDber.Entity <EquQCJXCYJBarrel>("where SampleCode=@SampleCode and SampleCount<3", new { SampleCode = qCJXCYJSampleCmd.SampleCode }); if (qCJXCYJBarrel == null) { qCJXCYJBarrel = this.EquDber.Entity <EquQCJXCYJBarrel>("where SampleCode=''"); if (qCJXCYJBarrel != null) { OutputRunInfo(rtxtOutput, "分配集样罐,罐号:" + qCJXCYJBarrel.BarrelNumber + " " + qCJXCYJBarrel.BarrelType); qCJXCYJBarrel.SampleCount = 1; qCJXCYJBarrel.SampleCode = qCJXCYJSampleCmd.SampleCode; qCJXCYJBarrel.InFactoryBatchId = qCJXCYJSampleCmd.InFactoryBatchId; qCJXCYJBarrel.IsCurrent = 1; qCJXCYJBarrel.BarrelStatus = eSampleBarrelStatus.未满.ToString(); qCJXCYJBarrel.UpdateTime = DateTime.Now; qCJXCYJBarrel.BarrelType = eEquInfGatherType.底卸式.ToString(); qCJXCYJBarrel.DataFlag = 0; this.EquDber.Update(qCJXCYJBarrel); } } else { OutputRunInfo(rtxtOutput, "分配集样罐,罐号:" + qCJXCYJBarrel.BarrelNumber + " " + qCJXCYJBarrel.BarrelType); qCJXCYJBarrel.SampleCount++; qCJXCYJBarrel.IsCurrent = 1; qCJXCYJBarrel.BarrelStatus = eSampleBarrelStatus.未满.ToString(); qCJXCYJBarrel.UpdateTime = DateTime.Now; qCJXCYJBarrel.BarrelType = eEquInfGatherType.底卸式.ToString(); qCJXCYJBarrel.DataFlag = 0; this.EquDber.Update(qCJXCYJBarrel); } // 更新命令 qCJXCYJSampleCmd.ResultCode = eEquInfCmdResultCode.成功.ToString(); qCJXCYJSampleCmd.DataFlag = 2; this.EquDber.Update(qCJXCYJSampleCmd); // 更新系统状态为就绪待机 this.EquDber.Execute("update " + EntityReflectionUtil.GetTableName <EquQCJXCYJSignal>() + " set TagValue=@TagValue where TagName=@TagName", new { TagName = eSignalDataName.设备状态.ToString(), TagValue = eEquInfSamplerSystemStatus.就绪待机.ToString() }); Thread.Sleep(2000); // 更新命令 qCJXCYJSampleCmd.SampleUser = "******"; qCJXCYJSampleCmd.EndTime = DateTime.Now; qCJXCYJSampleCmd.ResultCode = eEquInfCmdResultCode.成功.ToString(); qCJXCYJSampleCmd.DataFlag = 2; this.EquDber.Update(qCJXCYJSampleCmd); autoResetEvent.Set(); }, input); task.Start(); }