예제 #1
0
        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);
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        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();
        }