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