示例#1
0
文件: JhBillDAL.cs 项目: wpmyj/HS-M60
        ///// <summary>
        ///// 获取指定采购单明细
        ///// </summary>
        ///// <param name="code"></param>
        ///// <param name="PackUnit"></param>
        ///// <param name="PackQty"></param>
        ///// <param name="bill"></param>
        ///// <param name="msg"></param>
        ///// <returns></returns>
        //public static bool GetBill(int  ToSerialNo, out DBJhBill bill, out string msg)
        //{
        //    SQLiteDataReader rd;
        //    if (!DBTool.Select(" ToSerialNo=@ToSerialNo ", new DBJhBill() { ToSerialNo = ToSerialNo }, string.Empty, out rd, out msg))
        //    {
        //        bill = null;
        //        return false;
        //    }
        //    if (rd.Read())
        //    {
        //        int i;
        //        if(!GetMaxSerialNo(out i,out msg))
        //        {
        //            //取SerialNo失败
        //            rd.Close();
        //            bill = null;
        //            return false;
        //        }
        //        bill = new DBJhBill();
        //        bill.ID = new Guid(Convert.ToString(rd["ID"]));
        //        bill.Barcode = Convert.ToString(rd["Barcode"]);
        //        bill.BillNo = Convert.ToString(rd["BillNo"]);
        //        bill.CgCount = Convert.ToDecimal(rd["CgCount"]);
        //        bill.Checked = Convert.ToString(rd["Checked"]);
        //        bill.LrDate = Convert.ToDateTime(rd["LrDate"]);
        //        bill.LrUser = Convert.ToString(rd["LrUser"]);
        //        bill.CgPackCount = Convert.ToDecimal(rd["CgPackCount"]);
        //        bill.SsPackCount = Convert.ToDecimal(rd["SsPackCount"]);
        //        bill.PackQty = Convert.ToDecimal(rd["PackQty"]);
        //        bill.PackUnit = Convert.ToString(rd["PackUnit"]);
        //        bill.PluCode = Convert.ToString(rd["PluCode"]);
        //        bill.PluID = Convert.ToString(rd["PluID"]);
        //        bill.PluName = Convert.ToString(rd["PluName"]);
        //        bill.SerialNo = i++;
        //        bill.ToSerialNo = Convert.ToInt16(rd["ToSerialNo"]);
        //        bill.CgSGLCount = Convert.ToDecimal(rd["CgSGLCount"]);
        //        bill.SsSGLCount = Convert.ToDecimal(rd["SsSGLCount"]);
        //        bill.Spec = Convert.ToString(rd["Spec"]);
        //        bill.SsCount = Convert.ToDecimal(rd["SsCount"]);
        //        bill.Unit = Convert.ToString(rd["Unit"]);
        //        return true;
        //    }
        //    else
        //    {
        //        msg = "未查询到采购信息";
        //        bill = null;
        //        return false;
        //    }

        //}

        /// <summary>
        /// 获取指定采购单明细
        /// </summary>
        /// <param name="packet"></param>
        /// <param name="bill"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static bool GetBill(string Code, TPacket packet, out DBJhBill bill, out string msg)
        {
            SQLiteDataReader rd;

            if (!DBTool.Select("PluCode=@PluCode And PackQty=@PackQty And PackUnit=@PackUnit", new DBJhBill()
            {
                PluCode = Code, PackQty = decimal.Parse(packet.PACKQTY), PackUnit = packet.PACKUNIT
            }, string.Empty, out rd, out msg))
            {
                bill = null;
                return(false);
            }
            ICollection <DBJhBill> list = ObjTool.BuildObject <DBJhBill>(rd);

            rd.Close();
            if (list.Count > 0)
            {
                bill = list.First();
                return(true);
            }
            else
            {
                msg  = "未查询到采购信息";
                bill = null;
                return(false);
            }
        }
示例#2
0
        public TPacket Receive <TPacket>() where TPacket : APacket, new()
        {
            TPacket packet = new TPacket();

            Receive(packet);
            return(packet);
        }
        protected IObservable <TPacket> Filter <TPacket>()
            where TPacket : IPacketV2 <IPayload>, new()
        {
            var id = new TPacket().MessageId;

            return(FilterVehiclePackets.Where(_ => _.MessageId == id).Cast <TPacket>());
        }
示例#4
0
        public async Task <TPacket> ReceiveAsync <TPacket>() where TPacket : APacket, new()
        {
            TPacket packet = new TPacket();

            await ReceiveAsync(packet);

            return(packet);
        }
示例#5
0
        protected void PaintTracking(Graphics g)
        {
            TPacket   p  = _tPacket;
            TPacketM1 p1 = p as TPacketM1;
            TPacketM2 p2 = p as TPacketM2;

            if (p == null)
            {
                return;
            }

            // coordinates depend on the resolution mode of the camera, but also require doubling in the X-axis

            Rectangle r = FrameRectangle;

            // Tracking box
            g.DrawRectangle(SystemPens.ControlDarkDark, r);

            Brush objectBrush = new SolidBrush(TrackColor);
            Brush centreBrush = TrackColor.GetBrightness() > 0.5 ? Brushes.Black : Brushes.White;

            Rectangle trackingRectangle = TransformRect(p.Rectangle);
            Point     centroid          = TransformPoint(p.Centroid);

            g.FillRectangle(objectBrush, trackingRectangle);
            g.FillRectangle(centreBrush, centroid.X - 1, centroid.Y - 1, 3, 3);

            //////////////////////////////////////////////

            if (p2 != null)
            {
                int y = 0;
                foreach (TPacketM2Row row in p2.Rows)
                {
                    Rectangle line = TransformRect(new Rectangle(row.Min, y, row.Max - row.Min, 1));
                    Rectangle avg  = TransformRect(new Rectangle(row.Mean, y, 1, 1));

                    g.FillRectangle(Brushes.Orange, line);
                    g.FillRectangle(Brushes.White, avg);

                    // TODO: display confidence and pixel count?

                    y++;
                }
            }
            else if (p1 != null)
            {
                using (Bitmap bmp = p1.ToBitmap()) {
                    g.DrawImage(bmp, FrameRectangle);
                }
            }

            String text = String.Format("Confidence: {0}\nPixel Count: {1}", p.Confidence, p.PixelCount);

            g.DrawString(text, SystemFonts.IconTitleFont, SystemBrushes.ControlText, 5, r.Y + r.Height + 5);
        }
示例#6
0
        public virtual TPacket Get <TPacket>() where TPacket : APacket, new()
        {
            int length = 0;

            foreach (byte b in Read(_size).Span)
            {
                length <<= 8;
                length  |= b;
            }
            TPacket packet = new TPacket();

            packet.Write(Read(length));
            return(packet);
        }
示例#7
0
文件: JhBillDAL.cs 项目: wpmyj/HS-M60
        /// <summary>
        /// 从单据中获取Plu信息
        /// </summary>
        /// <param name="code"></param>
        /// <param name="plus"></param>
        /// <param name="msg"></param>
        /// <returns></returns>
        public static bool QueryPluFromBill(string code, out List <TRFQueryPlu> plus, out string msg)
        {
            SQLiteDataReader rd;

            if (!DBTool.Select(" Barcode=@Barcode Or PluCode=@PluCode ", new DBJhBill()
            {
                Barcode = code, PluCode = code
            }, string.Empty, out rd, out msg))
            {
                plus = null;
                return(false);
            }
            plus = new List <TRFQueryPlu>();
            while (rd.Read())
            {
                if (plus.Count == 0)
                {
                    //添加当前商品
                    TRFQueryPlu plu = new TRFQueryPlu();
                    plu.BARCODE = Convert.ToString(rd["Barcode"]);
                    plu.PLUCODE = Convert.ToString(rd["PluCode"]);
                    plu.PLUID   = Convert.ToString(rd["PluID"]);;
                    plu.PLUNAME = Convert.ToString(rd["PluName"]);
                    plu.SPEC    = Convert.ToString(rd["Spec"]);
                    plu.UNIT    = Convert.ToString(rd["Unit"]);
                    plu.Packets = new List <TPacket>();
                    plus.Add(plu);
                }
                if (Convert.ToDecimal(rd["PackQty"]) != 0)
                {
                    TPacket packet = new TPacket();
                    packet.PACKETID = Convert.ToInt16(rd["ToSerialNo"]).ToString();//将SerialNo当作包装ID
                    packet.PACKQTY  = Convert.ToDecimal(rd["PackQty"]).ToString("F2");
                    packet.PACKUNIT = Convert.ToString(rd["PackUnit"]);
                    plus[0].Packets.Add(packet);
                }
            }
            rd.Close();
            if (plus.Count > 0)
            {
                return(true);
            }
            else
            {
                msg  = "采购单中未找到该商品。";
                plus = null;
                return(false);
            }
        }
示例#8
0
        Option <TPacket> TryRecvNoLock <TPacket>() where TPacket : IPacket, new()
        {
            var queue        = commonQueue;
            var dummy        = new TPacket();
            var expectedType = dummy.Type;

            for (var i = 0; i < queue.Count; i++)
            {
                var packet = queue[i];
                if (packet.Type == expectedType)
                {
                    queue.RemoveAt(i);
                    return(Option.Some((TPacket)packet));
                }
            }
            return(Option.None <TPacket>());
        }
示例#9
0
        private void cbxPackSpec_SelectedValueChanged(object sender, EventArgs e)
        {
            string  msg;
            TPacket packet = (TPacket)cbxPackSpec.SelectedItem;

            if (PubGlobal.JhBillInfo.IsCgJh)
            {
                //数据库读取Model
                if (!JhBillDAL.GetBill(PubGlobal.Cur_TRFQueryPlu[0].PLUCODE, packet, out PubGlobal.JhBillModel, out msg))
                {
                    MessageBox.Show(msg);
                }
            }
            else
            {
                //数据库读取Model
                if (!JhBillDAL.GetBill(PubGlobal.Cur_TRFQueryPlu[0].PLUCODE, packet, out PubGlobal.JhBillModel, out msg))
                {
                    //新建Model
                    if (!NewModel())
                    {
                        MessageBox.Show("新建单据明细失败");
                        return;
                    }
                }
            }
            //tbCgPackCount.Text = jhBillModel.CgPackCount.ToString();
            //tbCgSglCount.Text = jhBillModel.CgSGLCount.ToString();
            tbCgPackCount.Text = PubGlobal.JhBillModel == null ? "0" : PubGlobal.JhBillModel.CgPackCount.ToString();
            tbCgSglCount.Text  = PubGlobal.JhBillModel == null ? "0" : PubGlobal.JhBillModel.CgSGLCount.ToString();
            tbSsPackCount.Text = PubGlobal.JhBillModel == null ? "0" : PubGlobal.JhBillModel.SsPackCount.ToString();
            tbSsSglCount.Text  = PubGlobal.JhBillModel == null ? "0" : PubGlobal.JhBillModel.SsSGLCount.ToString();
            if (string.IsNullOrEmpty(PubGlobal.JhBillModel.ScDate))
            {
                cbHasProductDate.Checked = false;
            }
            else
            {
                cbHasProductDate.Checked = true;
                dpProductDate.Value      = DateTime.Parse(PubGlobal.JhBillModel.ScDate);
            }
        }
示例#10
0
        public async Task <Option <TPacket> > Recv <TPacket>() where TPacket : IPacket, new()
        {
            var tryCount = 1000;

            for (int i = 0; i < tryCount; i++)
            {
                var found = TryRecv <TPacket>();
                if (found.HasValue)
                {
                    return(found);
                }
                await Task.Delay(TimeSpan.FromMilliseconds(100));
            }

            var dummy        = new TPacket();
            var expectedType = dummy.Type;

            log.Warn($"timeout : expected packet type: {expectedType}");
            return(Option.None <TPacket>());
        }
示例#11
0
        // TODO: 패킷 프로토콜 종류를 모은 그룹(클래스?, 구조체?) 구현
        //       수신한 데이터를 TPacket의 한 단위로 뽑아낸 후 이것을 모아 놓은 Q타입의 m_PackQueue에 담는다.
        //       수신한 패킷을 처리하는 전용 스레드에서 m_PackQueue에 담긴 패킷들을 추출하여 하나씩 처리한다.
        //       Q에 담고 이를 다시 추출하여
        // TODO: 패킷 프로토콜 종류별 처리 함수 구현(종류별로 별도 파일 생성)
        //       이런 패킷 프로토콜 처리기를 한 곳에 수집하여 처리기가 필요할 때 꺼내서 사용할 수 있도록 한다.
        // TODO: 패킷 처리기 구현
        public void ProcessPacket( TPacket Packet )
        {
            // TODO: 이하 코드를 본 프로젝트에 맞게 수정할 것(변수명도 적절히 변경할 것)
            object ProtocolObj = null;
            Type ProtocolType = null;
            IProtocolBase TargetPacket = null;

            Dictionary<int, Type> Protocols = ProtocolNoList.GetProtocolNoDict();
            if( null == Protocols )
                return;

            if( Protocols.TryGetValue( Packet.Protocol, out ProtocolType ) )
            {
                ProtocolObj = Activator.CreateInstance( ProtocolType );

                if( ProtocolObj is IProtocolBase )
                {
                    TargetPacket = ProtocolObj as IProtocolBase;
                    TargetPacket.Read( Packet );
                }
                else
                {
                    // TODO: Unknown pakcet 출력
                    //       IProtocolBase 계열과 맞지 않는 ProtocolType형 객체(ProtocolObj)다.
                }

                // TODO: 패킷을 꺼내서 처리할 곳에서 m_PackQueue를 구현한다.
                lock( m_PackQueue )
                {
                    m_PackQueue.Enqueue( TargetPacket );
                }
            }
            else
            {
                // TODO: Unknown packet 출력
                //       관리되지 않은 Packet protocol이다.
            }
        }
示例#12
0
        /// <summary>
        /// 新建Model
        /// </summary>
        private bool NewModel()
        {
            if (PubGlobal.Cur_TRFQueryPlu == null || PubGlobal.Cur_TRFQueryPlu.Count == 0)
            {
                return(false);
            }
            PubGlobal.JhBillModel         = new DBJhBill();
            PubGlobal.JhBillModel.BillNo  = string.Empty;
            PubGlobal.JhBillModel.Barcode = PubGlobal.Cur_TRFQueryPlu[0].BARCODE;
            PubGlobal.JhBillModel.Checked = "N";
            PubGlobal.JhBillModel.LrDate  = DateTime.Now;
            PubGlobal.JhBillModel.LrUser  = PubGlobal.User.UserCode;
            TPacket packet = (TPacket)(cbxPackSpec.SelectedItem);

            PubGlobal.JhBillModel.PackQty  = packet == null?0:decimal.Parse(packet.PACKQTY);
            PubGlobal.JhBillModel.PackUnit = packet == null?string.Empty:packet.PACKUNIT;
            PubGlobal.JhBillModel.PluCode  = PubGlobal.Cur_TRFQueryPlu[0].PLUCODE;
            PubGlobal.JhBillModel.PluID    = PubGlobal.Cur_TRFQueryPlu[0].PLUID;
            PubGlobal.JhBillModel.PluName  = PubGlobal.Cur_TRFQueryPlu[0].PLUNAME;
            PubGlobal.JhBillModel.Spec     = PubGlobal.Cur_TRFQueryPlu[0].SPEC;
            PubGlobal.JhBillModel.Unit     = PubGlobal.Cur_TRFQueryPlu[0].UNIT;
            return(true);
        }
示例#13
0
        /// <summary>
        /// Writes packet size, id, and content using <see cref="IPacket.Write"/> and flushes this stream.
        /// </summary>
        public TPacket ReadPacket <TPacket>() where TPacket : struct, IPacket
        {
            TPacket packet;

            lock (_stream)
            {
                int    length   = ReadVarInt();
                VarInt packetId = ReadVarInt();

                packet = new TPacket();

                if (packetId != packet.PacketID)
                {
                    var discardedRestOfPacket = new byte[length - packetId.Bytes.Length];
                    _stream.Read(discardedRestOfPacket, 0, discardedRestOfPacket.Length);

                    throw new InvalidDataException($"Expected packet 0x{packet.PacketID.Value:x2}, got 0x{packetId.Value:x2}.");
                }

                packet.Read(this);
            }

            return(packet);
        }
示例#14
0
 public void UpdateGSocket()
 {
     GSocket.OnSocketRead();
     TPacket.Handle_Commands(ref GSocket.Cmds);
 }