Files

138 lines
4.5 KiB
C#
Raw Permalink Normal View History

2025-12-11 09:17:16 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dao;
using Common;
using RCUHost.Protocols;
using Domain;
using CommonEntity;
using RestSharp;
namespace RCUHost.Implement
{
public class UpgradeProgressBar : GenericReceiverBase, IUpgradeProgressBar
{
private static log4net.ILog logger = log4net.LogManager.GetLogger(typeof(UpgradeProgressBar));
public IHostRepository HostRepository { get; set; }
public override void Process(ReceiverContext context)
{
string HostNumberOnly = context.SystemHeader.Value.HostNumber.ToString();
int startIndex = StructConverter.SizeOf(context.SystemHeader);
Host host = null;
string Key = CacheKey.HostInfo_Key_HostNumber + "_" + HostNumberOnly;
object obj = MemoryCacheHelper.Get(Key);
if (obj != null)
{
host = obj as Host;
var Da = context.Data;
DecodeUpdateHostPacketReply(Da, startIndex, host);
}
//if (host != null)
//{
// string dataHex = Tools.ByteToString(context.Data);
// int offset = StructConverter.SizeOf(context.SystemHeader);
// int length = context.Data.Length - offset - 2;
//}
//if (reply.HasValue)
//{
//}
}
public override CommandType CommandType
{
get { return CommandType.UpdateProgressBar; }
}
/// <summary>
/// 解码 UpdateHostPacketReply
/// </summary>
/// <param name="data"></param>
/// <param name="startIndex"></param>
/// <returns></returns>
private void DecodeUpdateHostPacketReply(byte[] data, int startIndex, Host host)
{
var DDD = data.Skip(startIndex).ToList();
var upgrade_status = DDD.Take(1).ToList().FirstOrDefault();
string Upgrade_status = "";
if (upgrade_status == 0x01)
{
Upgrade_status = "开始下载";
}
else if (upgrade_status == 0x02)
{
Upgrade_status = "下载中";
}
else if (upgrade_status == 0x03)
{
Upgrade_status = "下载完成,校验中";
}
else if (upgrade_status == 0x04)
{
Upgrade_status = "校验完成,RCU升级中";
}
else if (upgrade_status == 0x05)
{
Upgrade_status = "超时失败";
}
else
{
}
string UpgradeFileType = "";
var upgradeFileType = DDD.Skip(1).Take(1).ToList().FirstOrDefault();
if (upgradeFileType == 0x00)
{
UpgradeFileType = "固件升级";
}
else
{
UpgradeFileType = "配置升级";
}
var FileBlockTotalCount = DDD.Skip(2).Take(2);
var FileCurrentNumber = DDD.Skip(4).Take(2);
byte FileLen = DDD.Skip(6).Take(1).ToList().FirstOrDefault();
var FileName = DDD.Skip(7).Take(FileLen).ToList();
int hotelid = host.SysHotel.ID;
BarData bbb = new BarData();
bbb.HostID = host.ID;
bbb.Upgrade_status = Upgrade_status;
bbb.UpgradeFileType = UpgradeFileType;
ushort a = BitConverter.ToUInt16(FileBlockTotalCount.ToArray(), 0);
ushort b = BitConverter.ToUInt16(FileCurrentNumber.ToArray(), 0);
bbb.FileBlockTotalCount = a;
bbb.FileCurrentNumber = b;
double aa = (double)a;
double bb = (double)b;
double aaa = (bb / aa) * 100;
int roundedNumber = (int)Math.Round(aaa);
bbb.BaiFenBi = roundedNumber.ToString() + "%";
bbb.FileName = Encoding.UTF8.GetString(FileName.ToArray());
UploadCurrentVersionReceiver.UP_Grade_Json(host, bbb);
}
}
public class BarData
{
public int HostID { get; set; }
public string Upgrade_status = "";
public string Upgrade_DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
public string UpgradeFileType = "";
public ushort FileBlockTotalCount = 0;
public ushort FileCurrentNumber = 0;
public string BaiFenBi = "";
public string FileName = "";
public string Version = "";
public string ConfiguraVersion = "";
}
}