示例#1
0
 byte[] Serialize(PhieuCanEntity body)
 {
     using (var stream = new MemoryStream())
     {
         Serializer.Serialize(stream, body);
         stream.Position = 0;
         return(stream.ToArray());
     }
 }
示例#2
0
 public void PushMessage(PhieuCanEntity message)
 {
     if (!_model.IsOpen)
     {
         this.ExchangeName = ConfigAccess.GetExchange();
         this.RoutingKey   = ConfigAccess.GetRoutingKey();
         _model            = Factory.CreateConnection().CreateModel();
     }
     _model.BasicPublish(ExchangeName, RoutingKey, null, Serialize(message));
 }
示例#3
0
        private static PhieuCanEntity prepareData(int logcanxeId, ref bool isDone)
        {
            PhieuCanEntity phieuCanObj = new PhieuCanEntity();

            MySqlConnection conn2 = DBUtils.GetDBConnection();

            try
            {
                log.Debug("Openning Connection 2...");
                conn2.Open();
                log.Debug("Connection 2 successful!");

                //Query logcanxe
                MySqlCommand logcanxeCmd = conn2.CreateCommand();
                string       logcanxeSql =
                    " SELECT logcanxe_id, logcanxe_thoidiem, logcanxe_V, logcanxe_bienso, " +
                    "   logcanxe_lanxe, logcanxe_imglanxe, logcanxe_imgbienso, " +
                    "   logcanxe_W, logcanxe_ghichu, logcanxe_biensoSMRM " +
                    " FROM tbl_logcanxe " +
                    " WHERE logcanxe_id = @logcanxeId ";
                logcanxeCmd.CommandText = logcanxeSql;

                MySqlParameter logcanxeIdParam = new MySqlParameter("@logcanxeId", SqlDbType.Int);
                logcanxeIdParam.Value = logcanxeId;
                logcanxeCmd.Parameters.Add(logcanxeIdParam);

                DbDataReader reader = logcanxeCmd.ExecuteReader();
                if (reader.HasRows && reader.Read())
                {
                    DateTime thoidiem = reader.GetDateTime(1);
                    double   tocdo    = reader.GetDouble(2);

                    string bienso = "";
                    if (!reader.IsDBNull(3))
                    {
                        bienso = reader.GetString(3).Replace("-", "").Replace(".", "");
                    }

                    int    lanxe           = reader.GetInt32(4);
                    string imgUrlLanxe     = reader.GetString(5);
                    string imgUrlBienso    = reader.GetString(6);
                    double khoiluongThucte = reader.GetDouble(7);
                    string ghichu          = reader.GetString(8);

                    string biensoSMRM = "";
                    if (!reader.IsDBNull(9))
                    {
                        biensoSMRM = reader.GetString(9).Replace("-", "").Replace(".", "");
                    }

                    string[] arrGhichu       = ghichu.Split('|');
                    string   saiso           = arrGhichu.Last().Split(',')[3].Split('=')[1];
                    string   taitrongchophep = arrGhichu.Last().Split(',')[5].Split('=')[1];



                    //fill data to phieuCanEntity
                    String maPhieuCan = ConfigAccess.GetTramCanID() + "." + thoidiem.ToString("yyyyMMddHHmmss") + lanxe;
                    phieuCanObj.MaPhieuCan = maPhieuCan;                  //"TC341.20150131233009" - Mã phiếu theo format: MaTramCan.NamThangNgayGioPhutGiay để đảm bảo tính duy nhất cho toàn hệ thống. Nếu trạm có nhiều làn cân thì thêm số làn ở cuối.
                    phieuCanObj.MaTramCan  = ConfigAccess.GetTramCanID(); //"TC341" - Liên hệ để được admin hệ thống cung cấp mã
                    phieuCanObj.BienSoXe   = bienso;                      //"12C03435" - Biển số xe

                    /*----------------------- BẮT ĐẦU ADD THÔNG TIN ẢNH CHỤP CỦA XE --------------------------*/
                    //List đối tượng ảnh chụp xe (thông thường là 2 ảnh: Ảnh 1 là ảnh chụp làn xe từ camera trước + biển số trước; Ảnh 2 là ảnh chụp làn xe từ camera sau + biển số sau. Định dạnh jpg hoặc png dung lượng khoảng 200-300kb)
                    PhieuCanEntity.AnhPhieuCan imgObj1 = new PhieuCanEntity.AnhPhieuCan();
                    PhieuCanEntity.AnhPhieuCan imgObj2 = new PhieuCanEntity.AnhPhieuCan();
                    try
                    {
                        imgObj1.Anh = Common.FileToBase64(downloadImg(imgUrlLanxe));  //Biểu diễn ảnh dưới dạng chuỗi base64. Lưu ý dùng hàm convert ảnh sang base64 string trong class Common như ở ví dụ này
                                                                                      //"E:\\Pictures\\20151026102552203_1.jpg"
                        imgObj2.Anh = Common.FileToBase64(downloadImg(imgUrlBienso)); //Biểu diễn ảnh dưới dạng chuỗi base64. Lưu ý dùng hàm convert ảnh sang base64 string trong class Common như ở ví dụ này
                                                                                      //Add các ảnh vào trong list
                        phieuCanObj.ImagesList.Add(imgObj1);
                        phieuCanObj.ImagesList.Add(imgObj2);
                    }
                    catch (Exception ex)
                    {
                        log.Info("Error: " + ex.Message);
                    }
                    /*----------------------KẾT THÚC VIỆC ADD THÔNG TIN ẢNH CHỤP CỦA XE --------------------------*/

                    phieuCanObj.TocDoXe            = tocdo;                                    //3.1 - Tốc độ xe đi qua trạm tính theo đơn vị km/h (Ví dụ này xe chạy qua trạm với tốc độ 3.1 km/h)
                    phieuCanObj.ThoiGianXeVaoTram  = thoidiem.ToString("dd/MM/yyyy HH:mm:ss"); //Thời gian xe bắt đầu vào trạm cân. Ví dụ: 11/11/2015 23:29:01
                    phieuCanObj.NgayCan            = thoidiem.ToString("dd/MM/yyyy");          //Ngày cân phiếu này. Ví dụ: 11/11/2015
                    phieuCanObj.HinhThucCan        = 3;                                        //1: Hình thức cân theo tải trọng cầu đường; 2: Hình thức cân theo tải trọng hàng hóa; 3: Hình thức cân tổng hợp (mặc định là 3 - theo thông tư 46)
                    phieuCanObj.KhoiLuongXeThucTe  = khoiluongThucte;                          //49260 - Khối lượng cả xe cân được thực tế (tính bằng kg)
                    phieuCanObj.KhoiLuongXeSaiSo   = double.Parse(saiso);                      //1970 - Khối lượng sai số cả xe cho phép (tính bằng kg)
                    phieuCanObj.KhoiLuongXeChoPhep = double.Parse(taitrongchophep);            //48000 - Khối lượng xe cho phép chở tối đa (tính bằng kg)

                    /*---------------------- BẮT ĐẦU ADD THÔNG TIN CÁC BỘ TRỤC CỦA XE --------------------------*/
                    for (int i = 0; i < arrGhichu.Length - 1; i++)
                    {
                        string[] arrBotruc = arrGhichu[i].Split(',');
                        int      loaitruc  = Int32.Parse(arrBotruc[0].Split('=')[1]);

                        if (loaitruc == 1)
                        {
                            //Bộ trục đơn
                            PhieuCanEntity.BoTruc boTrucDonObj = new PhieuCanEntity.BoTruc();
                            boTrucDonObj.KhoangCachTruc      = "d=0m";                                   //với bộ trục đơn thì khoảng cách trục luôn bằng 0: "d=0m"
                            boTrucDonObj.KhoiLuongChoPhep    = double.Parse(arrBotruc[5].Split('=')[1]); //10000 - Khối lượng cho phép của trục này tính bằng đơn vị kg (ví dụ này trục cho phép chở 10 tấn)
                            boTrucDonObj.KhoiLuongTrucThucTe = double.Parse(arrBotruc[2].Split('=')[1]); //6150 - Khối lượng trục cân được thực tế (ví dụ này khối lượng trục cân được 6.15 tấn)
                            boTrucDonObj.KhoiLuongSaiSo      = double.Parse(arrBotruc[3].Split('=')[1]); //250 - Khối lượng sai số tính bằng kg (ví dụ này thì trục này cho phép sai số 0.25 tấn)
                            boTrucDonObj.LoaiBoTruc          = 1;                                        //Bộ trục đơn ký hiệu là 1, bộ trục đôi là 2, bộ trục 3 là 3.
                            //Add các trục vào bộ trục
                            phieuCanObj.BoTrucs.Add(boTrucDonObj);
                        }
                        else if (loaitruc == 2)
                        {
                            //Bộ trục đôi
                            PhieuCanEntity.BoTruc boTrucDoiObj = new PhieuCanEntity.BoTruc();
                            boTrucDoiObj.KhoangCachTruc      = "d>=1.3m";
                            boTrucDoiObj.KhoiLuongChoPhep    = double.Parse(arrBotruc[5].Split('=')[1]); //Khối lượng cho phép của trục này tính bằng đơn vị kg (ví dụ này trục cho phép chở 18 tấn)
                            boTrucDoiObj.KhoiLuongTrucThucTe = double.Parse(arrBotruc[2].Split('=')[1]); //Khối lượng trục cân được thực tế (ví dụ này khối lượng trục cân được 21.22 tấn)
                            boTrucDoiObj.KhoiLuongSaiSo      = double.Parse(arrBotruc[3].Split('=')[1]); //Khối lượng sai số tính bằng kg (ví dụ này thì trục này cho phép sai số 0.85 tấn)
                            boTrucDoiObj.LoaiBoTruc          = 2;                                        //Bộ trục đơn ký hiệu là 1, bộ trục đôi là 2, bộ trục 3 là 3.
                            //Add các trục vào bộ trục
                            phieuCanObj.BoTrucs.Add(boTrucDoiObj);
                        }
                        else if (loaitruc == 3)
                        {
                            //Bộ trục ba
                            PhieuCanEntity.BoTruc boTrucBaObj = new PhieuCanEntity.BoTruc();
                            boTrucBaObj.KhoangCachTruc      = "d>1.3m";
                            boTrucBaObj.KhoiLuongChoPhep    = double.Parse(arrBotruc[5].Split('=')[1]); //Khối lượng cho phép của trục này tính bằng đơn vị kg (ví dụ này trục cho phép chở 24 tấn)
                            boTrucBaObj.KhoiLuongTrucThucTe = double.Parse(arrBotruc[2].Split('=')[1]); //Khối lượng trục cân được thực tế (ví dụ này khối lượng trục cân được 21.89 tấn)
                            boTrucBaObj.KhoiLuongSaiSo      = double.Parse(arrBotruc[3].Split('=')[1]); //Khối lượng sai số tính bằng kg (ví dụ này thì trục này cho phép sai số 0.87 tấn)
                            boTrucBaObj.LoaiBoTruc          = 3;                                        //Bộ trục đơn ký hiệu là 1, bộ trục đôi là 2, bộ trục 3 là 3.
                            //Add các trục vào bộ trục
                            phieuCanObj.BoTrucs.Add(boTrucBaObj);
                        }
                    }
                    /*----------------------KẾT THÚC VIỆC ADD THÔNG TIN CÁC BỘ TRỤC VÀO PHIẾU CÂN --------------------------*/

                    //Thêm các thông tin bổ sung
                    phieuCanObj.LanCan              = lanxe.ToString(); //"P2" - Làn cân xe (P1,P2,P3,T1,T2,T3...)
                    phieuCanObj.LanCanXe            = "1";              // Lần cân xe
                    phieuCanObj.BienSoRM            = biensoSMRM;       //"15R10886" - Biển số SMRM/RM
                    phieuCanObj.LaXeXiTec           = 0;                // Là xe xi téc chở chất lỏng: 1; Nếu không phải : 0;
                    phieuCanObj.HoTenLaiXe          = "";               // Nguyễn Văn A - Họ tên lái xe
                    phieuCanObj.SoGPLHX             = "";               // GPLHX số
                    phieuCanObj.GhiChu              = "";               // Ghi chú
                    phieuCanObj.NguoiLapPhieu       = "";               //Hoàng Văn B - Người lập phiếu
                    phieuCanObj.MauXe               = "";               //Mầu xe
                    phieuCanObj.GPLX                = "";               //GPLX
                    phieuCanObj.KichThuocBaoVuotD   = 0;                //(Chiều dài kích thước bao vượt – đơn vị mm)
                    phieuCanObj.KichThuocBaoVuotR   = 0;                //(Chiều rộng kích thước bao vượt – đơn vị mm)
                    phieuCanObj.KichThuocBaoVuotC   = 0;                //550 - (Chiều cao kích thước bao vượt – đơn vị mm)
                    phieuCanObj.KichThuocThungVuotD = 0;                //(Chiều dài kích thước thùng vượt – đơn vị mm)
                    phieuCanObj.KichThuocThungVuotR = 0;                //(Chiều rộng kích thước thùng vượt – đơn vị mm)
                    phieuCanObj.KichThuocThungVuotC = 0;                //650 - (Chiều cao kích thước thùng vượt – đơn vị mm)
                }
                isDone = true;
            }
            catch (Exception e)
            {
                isDone = false;
                log.Info("Error: " + e.Message);
            }
            finally
            {
                log.Debug("Closing Connection 2...");
                conn2.Close();
                log.Debug("Connection 2 is closed!");
            }

            return(phieuCanObj);
        }
示例#4
0
        static void Main(string[] args)
        {
            IniFile myIni = new IniFile("config.ini");

            imagePath = myIni.Read("IMG_PATH", "Application Config");

            while (true)
            {
                log.Info("--------------------------------------------------");
                log.Debug("Getting Connection ...");
                MySqlConnection conn = DBUtils.GetDBConnection();

                try
                {
                    log.Debug("Openning Connection ...");
                    conn.Open();
                    log.Debug("Connection successful!");


                    //Scan danh sách phiếu cân chưa đẩy
                    String scanSql =
                        " SELECT guiphieucan_id, guiphieucan_logcanxe " +
                        " FROM tbl_guiphieucan " +
                        " WHERE guiphieucan_trangthai = 0 " +
                        " ORDER BY guiphieucan_thoigian ASC LIMIT 1";
                    MySqlCommand scanCmd = conn.CreateCommand();
                    scanCmd.CommandText = scanSql;

                    DbDataReader reader = scanCmd.ExecuteReader();
                    if (reader.HasRows)
                    {
                        while (reader.Read())
                        {
                            int guiphieucanId = reader.GetInt32(0);
                            int logcanxeId    = reader.GetInt32(1);
                            log.Info("guiphieucanId :" + guiphieucanId);
                            log.Info("logcanxeId :" + logcanxeId);

                            bool           isFillData = true;
                            PhieuCanEntity phieuCan   = prepareData(logcanxeId, ref isFillData);

                            MySqlConnection connUpdate = DBUtils.GetDBConnection();

                            try
                            {
                                connUpdate.Open();
                                if (isFillData)
                                {
                                    //Đẩy thông tin phiếu cân lên server
                                    log.Info("Start pushing...");
                                    sendToServer.PushMessage(phieuCan);
                                    log.Info("Done");

                                    //update thông tin đã gửi phiếu cân
                                    MySqlCommand updateCmd = connUpdate.CreateCommand();
                                    updateCmd.CommandText = "UPDATE tbl_guiphieucan SET guiphieucan_trangthai = 1 WHERE guiphieucan_id =" + guiphieucanId + " AND guiphieucan_trangthai = 0";
                                    updateCmd.ExecuteNonQuery();
                                }
                                else
                                {
                                    log.Info("Data is invalid...");
                                    //update thông tin bản ghi lỗi
                                    MySqlCommand updateCmd = connUpdate.CreateCommand();
                                    updateCmd.CommandText = "UPDATE tbl_guiphieucan SET guiphieucan_trangthai = 2 WHERE guiphieucan_id =" + guiphieucanId + " AND guiphieucan_trangthai = 0";
                                    updateCmd.ExecuteNonQuery();
                                }
                            }
                            catch (Exception e)
                            {
                                log.Info("Error: " + e.Message);
                            }
                            finally
                            {
                                connUpdate.Close();
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    log.Info("Error: " + e.Message);
                }
                finally
                {
                    log.Debug("Closing Connection ...");
                    conn.Close();
                    log.Debug("Connection is closed!");
                }

                log.Info("Sleep in seconds...");
                Thread.Sleep(1000);
            }
        }