1627 lines
83 KiB
C#
1627 lines
83 KiB
C#
using DB_Server;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Microsoft.EntityFrameworkCore;
|
||
using Models;
|
||
using Models.Models;
|
||
using Models.Models.LOGDB;
|
||
using SERVER;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Configuration;
|
||
using System.IO;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using WebUI.Model;
|
||
using System.Security.Cryptography;
|
||
|
||
namespace WebUI.Controllers
|
||
{
|
||
/// <summary>
|
||
///
|
||
/// </summary>
|
||
public class publicApiController : Controller
|
||
{
|
||
|
||
private readonly HotelServiceContext _db;
|
||
|
||
/// <summary>
|
||
/// 注入服务
|
||
/// </summary>
|
||
/// <param name="db"></param>
|
||
public publicApiController(HotelServiceContext db)
|
||
{
|
||
_db = db;
|
||
}
|
||
|
||
|
||
#region 通过mac地址获取房间类型 (暂无用)
|
||
|
||
///// <summary>
|
||
///// 通过mac地址获取房间类型 (暂无用)
|
||
///// </summary>
|
||
///// <param name="mac"></param>
|
||
///// <returns></returns>
|
||
//[HttpPost]
|
||
//[Route("OTApi/GetRoomType")]
|
||
//public IActionResult GetRoomType(string mac)
|
||
//{
|
||
// try
|
||
// {
|
||
// if (!string.IsNullOrEmpty(mac))
|
||
// {
|
||
// var data = (from a in _db.TBL_ROOM_BASIC_INFOS join b in _db.TBL_ROOM_TYPE_LISTS on a.ROOM_TYPE_OLD_ID equals b.ROOM_TYPE_OLD_ID
|
||
// where a.MAC == mac
|
||
// select b).FirstOrDefault();
|
||
// return Json(new
|
||
// {
|
||
// data,
|
||
// messages = "请求成功",
|
||
// Status = 200
|
||
// });
|
||
// }
|
||
// else
|
||
// return Json(new
|
||
// {
|
||
// messages = "mac为空值",
|
||
// Status = 50
|
||
// });
|
||
// }
|
||
// catch (System.Exception ex)
|
||
// {
|
||
// return Json(new
|
||
// {
|
||
// messages = ex.Message,
|
||
// Status = 404
|
||
// });
|
||
// }
|
||
//}
|
||
|
||
#endregion
|
||
|
||
|
||
#region 同步API
|
||
|
||
/// <summary>
|
||
/// 同步API
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[Route("OTApi/SyncData")]
|
||
public IActionResult SyncData(string Pwd, int stepid=0)
|
||
{
|
||
if (Pwd == "fs%sd")
|
||
{
|
||
var res = SYNC_DATA.SYNC_DATA_ALL(stepid);
|
||
string erMsg = GlobalSyncLockTest.recentErrMsg;
|
||
//return Json(res);
|
||
if (res)
|
||
{
|
||
return Json(new
|
||
{
|
||
messages = "同步成功",
|
||
Status = true
|
||
});
|
||
}
|
||
else
|
||
{
|
||
return Json(new
|
||
{
|
||
messages = erMsg,
|
||
Status = false
|
||
});
|
||
}
|
||
|
||
}
|
||
else
|
||
return Json(new
|
||
{
|
||
messages = "同步密码错误",
|
||
Status = false
|
||
});
|
||
}
|
||
|
||
|
||
#endregion
|
||
|
||
#region 通过房间类型id获取文件路径(暂不使用)
|
||
|
||
|
||
/// <summary>
|
||
/// 通过房间类型id获取文件路径
|
||
/// </summary>
|
||
/// <param name="RoomTypeid"></param>
|
||
/// <returns></returns>
|
||
|
||
//public IActionResult GainFile(int RoomTypeid)
|
||
//{
|
||
// FTPOperation operation = new FTPOperation();
|
||
// string hexPath2 = "";//App_Cfg_For_L2升级文件tfp路径
|
||
// string hexPath4 = ""; //App_Cfg_For_L4升级文件tfp路径
|
||
// string BinPath = ""; //二进制配置文件tfp路径
|
||
// try
|
||
// {
|
||
// if (RoomTypeid != 0)
|
||
// {
|
||
// //获取对应的房间类型表的中的字段
|
||
// var data = (
|
||
// from a in _db.TBL_ROOM_TYPE_LISTS
|
||
|
||
// join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
|
||
|
||
// join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
|
||
|
||
// where a.ROOM_TYPE_OLD_ID == RoomTypeid
|
||
// select new
|
||
// {
|
||
// a.CONFIG_BIN,
|
||
// a.App_Cfg_For_L2,
|
||
// a.App_Cfg_For_L4,
|
||
// a.HOTEL_OLD_ID,
|
||
// c.HOTEL_GROUP_NAME,
|
||
// b.HOTEL_NAME_CN,
|
||
// b.PROJECT_NUMBER,
|
||
// a.Hex_Code_For_L2,
|
||
// a.Hex_Code_For_L4,
|
||
// a.APPTYPE,
|
||
// a.Hex_Code_For_L2_MD5,
|
||
// a.Hex_Code_For_L4_MD5,
|
||
// a.App_Cfg_For_L2_MD5,
|
||
// a.App_Cfg_For_L4_MD5
|
||
|
||
// }).FirstOrDefault();
|
||
|
||
// //获取对应的酒店编号,酒店名称,酒店分组
|
||
// //var hotelgroup = (from a in _db.TBL_HOTEL_BASIC_INFOS join b in _db.TBL_HOTEL_GROUP_INFOS on a.HOTEL_OLD_GROUP equals b.HOTEL_GROUP_OLD_ID where a.IDOLD == data.HOTEL_OLD_ID select new { b.HOTEL_GROUP_NAME ,a.PROJECT_NUMBER ,a.HOTEL_NAME_CN }).FirstOrDefault();
|
||
|
||
// if (data == null)
|
||
// {
|
||
// return Json(new
|
||
// {
|
||
// messages = "未找到数据",
|
||
// Status = 100
|
||
// });
|
||
// }
|
||
|
||
// if (data.CONFIG_BIN != null)
|
||
// {
|
||
// //BinPath = @"BLV_Studio\Data\Config\" + data.HOTEL_GROUP_NAME + @"\" + data.PROJECT_NUMBER + "-" + data.HOTEL_NAME_CN + @"\" + data.CONFIG_BIN;
|
||
// BinPath = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Config/"+ data.HOTEL_GROUP_NAME+ @"/" + data.PROJECT_NUMBER+"-"+data.HOTEL_NAME_CN+ @"/" + data.CONFIG_BIN;
|
||
// }
|
||
// if (data.APPTYPE != "")
|
||
// {
|
||
// if (data.APPTYPE == "App_Cfg")
|
||
// {
|
||
// if (data.App_Cfg_For_L2 != null)
|
||
// {
|
||
// //校验MD5是否给修改过
|
||
// if (MD5Verify.getMD5Hash(operation.GetFile(data.App_Cfg_For_L2)) == data.App_Cfg_For_L2_MD5)
|
||
// {
|
||
// hexPath2 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.App_Cfg_For_L2;
|
||
// }
|
||
// else
|
||
// {
|
||
// hexPath2 = "文件修改过对不上MD5";
|
||
// }
|
||
// }
|
||
// if (data.App_Cfg_For_L4 != null)
|
||
// {
|
||
|
||
|
||
// if (MD5Verify.getMD5Hash(operation.GetFile(data.App_Cfg_For_L4)) == data.App_Cfg_For_L4_MD5)
|
||
// {
|
||
// hexPath4 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.App_Cfg_For_L4;
|
||
// }
|
||
// else
|
||
// {
|
||
// hexPath4 = "文件修改过对不上MD5";
|
||
// }
|
||
// }
|
||
// }
|
||
// else if (data.APPTYPE == "Hex_Code")
|
||
// {
|
||
// if (data.Hex_Code_For_L2 != null)
|
||
// {
|
||
|
||
// if (MD5Verify.getMD5Hash(operation.GetFile(data.Hex_Code_For_L2)) == data.Hex_Code_For_L2_MD5)
|
||
// {
|
||
// hexPath2 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.Hex_Code_For_L2;
|
||
// }
|
||
// else
|
||
// {
|
||
// hexPath2 = "文件修改过对不上MD5";
|
||
// }
|
||
// }
|
||
// if (data.Hex_Code_For_L4 != null)
|
||
// {
|
||
// if (MD5Verify.getMD5Hash(operation.GetFile(data.Hex_Code_For_L4)) == data.Hex_Code_For_L4_MD5)
|
||
// {
|
||
// hexPath4 = "ftp://auth.blv-oa.com:50/BLV_Studio/Data/Firmware/" + data.Hex_Code_For_L4;
|
||
// }
|
||
// else
|
||
// {
|
||
// hexPath4 = "文件修改过对不上MD5";
|
||
// }
|
||
// }
|
||
|
||
// }
|
||
// }
|
||
// var Filedata = new
|
||
// {
|
||
// BinPath = BinPath,
|
||
// hexPath2 = hexPath2,
|
||
// hexPath4 = hexPath4,
|
||
// };
|
||
|
||
// return Json(new
|
||
// {
|
||
// Filedata,
|
||
// messages = "请求成功",
|
||
// Status = 200
|
||
// });
|
||
// }
|
||
// else
|
||
// return Json(new
|
||
// {
|
||
// messages = "参数为空值",
|
||
// Status = 50
|
||
// });
|
||
// }
|
||
// catch (System.Exception ex)
|
||
// {
|
||
// return Json(new
|
||
// {
|
||
// messages = ex.Message,
|
||
// Status = 404
|
||
// });
|
||
// }
|
||
//}
|
||
#endregion
|
||
|
||
|
||
#region 获取对应的文件下发
|
||
|
||
|
||
|
||
[HttpPost]
|
||
[Route("OTApi/GainFiles")]
|
||
public IActionResult GainFile1s(int RoomTypeid,int DataType)
|
||
{
|
||
FTPOperation operation = new FTPOperation();
|
||
HexFile hexFile = new HexFile();
|
||
// Luncher版本
|
||
string LuncherVer = "";
|
||
//数据主题
|
||
string data = "";
|
||
//状态
|
||
bool Status = false;
|
||
//最后获取的文件
|
||
List<string> FileName = new List<string> ();
|
||
|
||
//错误信息
|
||
string MrrMsg = null;
|
||
//机型
|
||
string ModelName = "";
|
||
//Hex起初地址
|
||
string HexStart = "";
|
||
//总数据
|
||
List<SendFileLuncher> datalist = new List<SendFileLuncher>();
|
||
//房型名称
|
||
string RoomTypeName = "";
|
||
//项目id
|
||
int hotelId=0;
|
||
//项目名称
|
||
string hotelName = "";
|
||
//文件数量
|
||
int FileCount = 0;
|
||
int coun = 0;
|
||
//写入日志
|
||
TBL_EQUIPMENTISSUELOG eqlog = new TBL_EQUIPMENTISSUELOG();
|
||
try
|
||
{
|
||
|
||
|
||
if (RoomTypeid != 0)
|
||
{
|
||
//获取对应的房间类型表的中的字段
|
||
var selectdata = (
|
||
from a in _db.TBL_ROOM_TYPE_LISTS
|
||
|
||
join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
|
||
|
||
join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
|
||
|
||
where a.ROOM_TYPE_OLD_ID == RoomTypeid
|
||
select new
|
||
{
|
||
a.ROOM_TYPE_NAME,
|
||
a.CONFIG_BIN,
|
||
a.App_Cfg_For_L2,
|
||
a.App_Cfg_For_L4,
|
||
a.HOTEL_OLD_ID,
|
||
c.HOTEL_GROUP_NAME,
|
||
b.HOTEL_NAME_CN,
|
||
b.PROJECT_NUMBER,
|
||
a.Hex_Code_For_L2,
|
||
a.Hex_Code_For_L4,
|
||
a.APPTYPE,
|
||
a.Hex_Code_For_L2_MD5,
|
||
a.Hex_Code_For_L4_MD5,
|
||
a.App_Cfg_For_L2_MD5,
|
||
a.App_Cfg_For_L4_MD5,
|
||
a.CONFIG_BIN_MD5
|
||
}).FirstOrDefault();
|
||
if (selectdata != null)
|
||
{
|
||
//房型名称
|
||
RoomTypeName = selectdata.ROOM_TYPE_NAME;
|
||
//项目名称
|
||
hotelName = selectdata.HOTEL_NAME_CN;
|
||
//项目id
|
||
hotelId = selectdata.HOTEL_OLD_ID;
|
||
//升级文件
|
||
if (DataType == 2)
|
||
{
|
||
//发送类
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
if (selectdata.CONFIG_BIN != null)
|
||
{
|
||
//校验MD5
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
var btys= operation.ByteArrayToHexStr(sety);
|
||
var ssety= HexFile.Crc16(sety,4, sety.Length);
|
||
byte[] suz= new byte[10000];
|
||
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
|
||
|
||
HexFile.StrToHex(suz ,sety, 100);
|
||
|
||
//找到文件头
|
||
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
|
||
{
|
||
int data_len = sety[3];
|
||
data_len <<= 8;
|
||
data_len |= sety[2];
|
||
|
||
if (data_len <= 1024) //文件长度超出范围,不处理
|
||
{
|
||
byte[] vaslen = new byte[data_len];
|
||
int crc_val = 0;
|
||
int temp_crc = 0;
|
||
|
||
Array.Copy(sety, vaslen, data_len);
|
||
crc_val = sety[5];
|
||
crc_val <<= 8;
|
||
crc_val |= sety[4];
|
||
|
||
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
|
||
|
||
if (temp_crc == crc_val)
|
||
{
|
||
/*数据校验成功*/
|
||
if (vaslen[10] == 0x01)
|
||
{
|
||
var zunsons = vaslen.Skip(157).Take(64).ToArray();
|
||
var seyu = operation.ByteArrayToHexStr(zunsons);
|
||
var setysssy = operation.UnHexs(seyu);
|
||
setysssy = setysssy.Replace("\0",null);
|
||
setysssy = setysssy.Replace("_","-");
|
||
ModelName = setysssy;
|
||
data = Convert.ToBase64String(sety);
|
||
FileName.Add(selectdata.CONFIG_BIN);
|
||
send.md5 = GetMd5FromString(data);
|
||
send.Filenumber = ++coun;
|
||
send.data = data;
|
||
send.filename = selectdata.CONFIG_BIN;
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件头错误,请检查文件是否正确";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "固件(APP)文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "“获取文件”失败所选房型没上传固件(APP)文件,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
//配置文件
|
||
else if (DataType == 1)
|
||
{
|
||
//判断是代码烧录还是工具烧录
|
||
if (selectdata.APPTYPE != "")
|
||
{
|
||
if (selectdata.APPTYPE == "App_Cfg")
|
||
{
|
||
if (string.IsNullOrEmpty(selectdata.App_Cfg_For_L2) && string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
|
||
{
|
||
MrrMsg = "“获取文件”失败所选房型没上传固件(APP)或配置文件,请检查网络或联系管理员";
|
||
}
|
||
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L2))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))) == selectdata.App_Cfg_For_L2_MD5)
|
||
{
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
var btys = operation.ByteArrayToHexStr(sety);
|
||
var ssety = HexFile.Crc16(sety, 4, sety.Length);
|
||
byte[] suz = new byte[10000];
|
||
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
|
||
|
||
HexFile.StrToHex(suz, sety, 100);
|
||
|
||
//找到文件头
|
||
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
|
||
{
|
||
int data_len = sety[3];
|
||
data_len <<= 8;
|
||
data_len |= sety[2];
|
||
|
||
if (data_len <= 1024) //文件长度超出范围,不处理
|
||
{
|
||
byte[] vaslen = new byte[data_len];
|
||
int crc_val = 0;
|
||
int temp_crc = 0;
|
||
|
||
Array.Copy(sety, vaslen, data_len);
|
||
crc_val = sety[5];
|
||
crc_val <<= 8;
|
||
crc_val |= sety[4];
|
||
|
||
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
|
||
|
||
if (temp_crc == crc_val)
|
||
{
|
||
/*数据校验成功*/
|
||
if (vaslen[10] == 0x01)
|
||
{
|
||
var zunsons = vaslen.Skip(157).Take(64).ToArray();
|
||
var seyu = operation.ByteArrayToHexStr(zunsons);
|
||
var setysssy = operation.UnHexs(seyu);
|
||
setysssy = setysssy.Replace("\0", null);
|
||
setysssy = setysssy.Replace("_", "-");
|
||
ModelName = setysssy;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型错误,请检查文件是否正确";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型失败";
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
FileName.Add(selectdata.App_Cfg_For_L2);
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))));
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V02";
|
||
if (selectdata.App_Cfg_For_L2.Substring(selectdata.App_Cfg_For_L2.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L2.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L2;
|
||
}
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.Filenumber = ++coun;
|
||
send.md5 = GetMd5FromString(data);
|
||
send.data = data;
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员 ";
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
|
||
{
|
||
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))) == selectdata.App_Cfg_For_L4_MD5)
|
||
{
|
||
|
||
|
||
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
var btys = operation.ByteArrayToHexStr(sety);
|
||
var ssety = HexFile.Crc16(sety, 4, sety.Length);
|
||
byte[] suz = new byte[10000];
|
||
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
|
||
|
||
HexFile.StrToHex(suz, sety, 100);
|
||
|
||
//找到文件头
|
||
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
|
||
{
|
||
int data_len = sety[3];
|
||
data_len <<= 8;
|
||
data_len |= sety[2];
|
||
|
||
if (data_len <= 1024) //文件长度超出范围,不处理
|
||
{
|
||
byte[] vaslen = new byte[data_len];
|
||
int crc_val = 0;
|
||
int temp_crc = 0;
|
||
|
||
Array.Copy(sety, vaslen, data_len);
|
||
crc_val = sety[5];
|
||
crc_val <<= 8;
|
||
crc_val |= sety[4];
|
||
|
||
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
|
||
|
||
if (temp_crc == crc_val)
|
||
{
|
||
/*数据校验成功*/
|
||
if (vaslen[10] == 0x01)
|
||
{
|
||
var zunsons = vaslen.Skip(157).Take(64).ToArray();
|
||
var seyu = operation.ByteArrayToHexStr(zunsons);
|
||
var setysssy = operation.UnHexs(seyu);
|
||
setysssy = setysssy.Replace("\0", null);
|
||
setysssy = setysssy.Replace("_", "-");
|
||
ModelName = setysssy;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型错误,请检查文件是否正确";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型失败";
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
FileName.Add(selectdata.App_Cfg_For_L4);
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))));
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V04";
|
||
if (selectdata.App_Cfg_For_L4.Substring(selectdata.App_Cfg_For_L4.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L4.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L4;
|
||
}
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.Filenumber = ++coun;
|
||
send.data = data;
|
||
send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
}
|
||
else if (selectdata.APPTYPE == "Hex_Code")
|
||
{
|
||
if (string.IsNullOrEmpty(selectdata.Hex_Code_For_L2) && string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
|
||
{
|
||
MrrMsg = "获取文件”失败所选房型没上传固件(APP)或配置文件,请检查网络或联系管理员";
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L2))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))) == selectdata.Hex_Code_For_L2_MD5)
|
||
{
|
||
FileName.Add(selectdata.Hex_Code_For_L2);
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V02";
|
||
if (selectdata.Hex_Code_For_L2.Substring(selectdata.Hex_Code_For_L2.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L2.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L2;
|
||
}
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.Filenumber = ++coun;
|
||
send.data = data;
|
||
send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))) == selectdata.Hex_Code_For_L4_MD5)
|
||
{
|
||
FileName.Add(selectdata.Hex_Code_For_L4);
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V04";
|
||
if (selectdata.Hex_Code_For_L4.Substring(selectdata.Hex_Code_For_L4.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L4.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L4;
|
||
}
|
||
send.Filenumber = ++coun;
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.data = data;
|
||
send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无烧录模式,";
|
||
}
|
||
}
|
||
FileCount = datalist.Count;
|
||
string sum = "";
|
||
//写入日志
|
||
eqlog.CreationTime = DateTime.Now;
|
||
eqlog.Succeed = Status;
|
||
foreach (var item in FileName)
|
||
{
|
||
sum +=item+"/";
|
||
}
|
||
eqlog.Content = "房间类型id是:" + RoomTypeid + ",升级类型是:" + DataType + ",luncher版本是:" + LuncherVer + ",升级文件名:" + sum + ",机型是:" + ModelName;
|
||
_db.TBL_EQUIPMENTISSUELOGs.AddRange(eqlog);
|
||
_db.SaveChanges();
|
||
}
|
||
else
|
||
{
|
||
return Json(new
|
||
{
|
||
RoomTypeid,
|
||
RoomTypeName,
|
||
hotelId,
|
||
hotelName,
|
||
Status = false,
|
||
ModelName,
|
||
//FileName,
|
||
FileCount,
|
||
datalist,
|
||
MrrMsg = "未找到对应的房型,请检查网络或联系管理员"
|
||
});
|
||
}
|
||
}
|
||
|
||
|
||
//if (!string.IsNullOrEmpty(FileName))
|
||
//{
|
||
// if (FileName.Substring(FileName.Length - 4, 4) == ".hex")
|
||
// {
|
||
// FileName = FileName.Replace(".hex", ".bin");
|
||
// }
|
||
//}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
return Json(new
|
||
{
|
||
RoomTypeid,
|
||
RoomTypeName,
|
||
hotelId,
|
||
hotelName,
|
||
Status =false,
|
||
ModelName,
|
||
//FileName,
|
||
FileCount,
|
||
datalist,
|
||
MrrMsg = ex.Message
|
||
});
|
||
}
|
||
return Json(new
|
||
{
|
||
RoomTypeid,
|
||
RoomTypeName,
|
||
hotelId,
|
||
hotelName,
|
||
Status,
|
||
ModelName,
|
||
//FileName,
|
||
FileCount,
|
||
datalist,
|
||
MrrMsg
|
||
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取文件名
|
||
/// </summary>
|
||
/// <param name="RoomTypeid"></param>
|
||
/// <param name="DataType"></param>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[Route("OTApi/GainFileName")]
|
||
public IActionResult GainFileName(int RoomTypeid,int DataType)
|
||
{
|
||
FTPOperation operation = new FTPOperation();
|
||
HexFile hexFile = new HexFile();
|
||
// Luncher版本
|
||
string LuncherVer = "";
|
||
//数据主题
|
||
string data = "";
|
||
//状态
|
||
bool Status = false;
|
||
//最后获取的文件
|
||
List<string> FileName = new List<string> ();
|
||
|
||
//错误信息
|
||
string MrrMsg = null;
|
||
//机型
|
||
string ModelName = "";
|
||
//Hex起初地址
|
||
string HexStart = "";
|
||
//总数据
|
||
List<SendFileLuncher> datalist = new List<SendFileLuncher>();
|
||
//房型名称
|
||
string RoomTypeName = "";
|
||
//项目id
|
||
int hotelId=0;
|
||
//项目名称
|
||
string hotelName = "";
|
||
//文件数量
|
||
int FileCount = 0;
|
||
int coun = 0;
|
||
//写入日志
|
||
TBL_EQUIPMENTISSUELOG eqlog = new TBL_EQUIPMENTISSUELOG();
|
||
try
|
||
{
|
||
|
||
|
||
if (RoomTypeid != 0)
|
||
{
|
||
//获取对应的房间类型表的中的字段
|
||
var selectdata = (
|
||
from a in _db.TBL_ROOM_TYPE_LISTS
|
||
|
||
join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
|
||
|
||
join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
|
||
|
||
where a.ROOM_TYPE_OLD_ID == RoomTypeid
|
||
select new
|
||
{
|
||
a.ROOM_TYPE_NAME,
|
||
a.CONFIG_BIN,
|
||
a.App_Cfg_For_L2,
|
||
a.App_Cfg_For_L4,
|
||
a.HOTEL_OLD_ID,
|
||
c.HOTEL_GROUP_NAME,
|
||
b.HOTEL_NAME_CN,
|
||
b.PROJECT_NUMBER,
|
||
a.Hex_Code_For_L2,
|
||
a.Hex_Code_For_L4,
|
||
a.APPTYPE,
|
||
a.Hex_Code_For_L2_MD5,
|
||
a.Hex_Code_For_L4_MD5,
|
||
a.App_Cfg_For_L2_MD5,
|
||
a.App_Cfg_For_L4_MD5,
|
||
a.CONFIG_BIN_MD5
|
||
}).FirstOrDefault();
|
||
if (selectdata != null)
|
||
{
|
||
//房型名称
|
||
RoomTypeName = selectdata.ROOM_TYPE_NAME;
|
||
//项目名称
|
||
hotelName = selectdata.HOTEL_NAME_CN;
|
||
//项目id
|
||
hotelId = selectdata.HOTEL_OLD_ID;
|
||
//升级文件
|
||
if (DataType == 2)
|
||
{
|
||
//发送类
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
if (selectdata.CONFIG_BIN != null)
|
||
{
|
||
//校验MD5
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
var btys= operation.ByteArrayToHexStr(sety);
|
||
var ssety= HexFile.Crc16(sety,4, sety.Length);
|
||
byte[] suz= new byte[10000];
|
||
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
|
||
|
||
HexFile.StrToHex(suz ,sety, 100);
|
||
|
||
//找到文件头
|
||
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
|
||
{
|
||
int data_len = sety[3];
|
||
data_len <<= 8;
|
||
data_len |= sety[2];
|
||
|
||
if (data_len <= 1024) //文件长度超出范围,不处理
|
||
{
|
||
byte[] vaslen = new byte[data_len];
|
||
int crc_val = 0;
|
||
int temp_crc = 0;
|
||
|
||
Array.Copy(sety, vaslen, data_len);
|
||
crc_val = sety[5];
|
||
crc_val <<= 8;
|
||
crc_val |= sety[4];
|
||
|
||
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
|
||
|
||
if (temp_crc == crc_val)
|
||
{
|
||
/*数据校验成功*/
|
||
if (vaslen[10] == 0x01)
|
||
{
|
||
var zunsons = vaslen.Skip(157).Take(64).ToArray();
|
||
var seyu = operation.ByteArrayToHexStr(zunsons);
|
||
var setysssy = operation.UnHexs(seyu);
|
||
setysssy = setysssy.Replace("\0",null);
|
||
setysssy = setysssy.Replace("_","-");
|
||
ModelName = setysssy;
|
||
//data = Convert.ToBase64String(sety);
|
||
FileName.Add(selectdata.CONFIG_BIN);
|
||
//send.md5 = GetMd5FromString(data);
|
||
send.Filenumber = ++coun;
|
||
send.filename = selectdata.CONFIG_BIN;
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件头错误,请检查文件是否正确";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "固件(APP)文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "“获取文件”失败所选房型没上传固件(APP)文件,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
//配置文件
|
||
else if (DataType == 1)
|
||
{
|
||
//判断是代码烧录还是工具烧录
|
||
if (selectdata.APPTYPE != "")
|
||
{
|
||
if (selectdata.APPTYPE == "App_Cfg")
|
||
{
|
||
if (string.IsNullOrEmpty(selectdata.App_Cfg_For_L2) && string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
|
||
{
|
||
MrrMsg = "“获取文件”失败所选房型没上传固件(APP)或配置文件,请检查网络或联系管理员";
|
||
}
|
||
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L2))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))) == selectdata.App_Cfg_For_L2_MD5)
|
||
{
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
var btys = operation.ByteArrayToHexStr(sety);
|
||
var ssety = HexFile.Crc16(sety, 4, sety.Length);
|
||
byte[] suz = new byte[10000];
|
||
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
|
||
|
||
HexFile.StrToHex(suz, sety, 100);
|
||
|
||
//找到文件头
|
||
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
|
||
{
|
||
int data_len = sety[3];
|
||
data_len <<= 8;
|
||
data_len |= sety[2];
|
||
|
||
if (data_len <= 1024) //文件长度超出范围,不处理
|
||
{
|
||
byte[] vaslen = new byte[data_len];
|
||
int crc_val = 0;
|
||
int temp_crc = 0;
|
||
|
||
Array.Copy(sety, vaslen, data_len);
|
||
crc_val = sety[5];
|
||
crc_val <<= 8;
|
||
crc_val |= sety[4];
|
||
|
||
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
|
||
|
||
if (temp_crc == crc_val)
|
||
{
|
||
/*数据校验成功*/
|
||
if (vaslen[10] == 0x01)
|
||
{
|
||
var zunsons = vaslen.Skip(157).Take(64).ToArray();
|
||
var seyu = operation.ByteArrayToHexStr(zunsons);
|
||
var setysssy = operation.UnHexs(seyu);
|
||
setysssy = setysssy.Replace("\0", null);
|
||
setysssy = setysssy.Replace("_", "-");
|
||
ModelName = setysssy;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型错误,请检查文件是否正确";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型失败";
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
FileName.Add(selectdata.App_Cfg_For_L2);
|
||
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))));
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V02";
|
||
if (selectdata.App_Cfg_For_L2.Substring(selectdata.App_Cfg_For_L2.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L2.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L2;
|
||
}
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.Filenumber = ++coun;
|
||
//send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员 ";
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
|
||
{
|
||
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))) == selectdata.App_Cfg_For_L4_MD5)
|
||
{
|
||
|
||
|
||
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
var btys = operation.ByteArrayToHexStr(sety);
|
||
var ssety = HexFile.Crc16(sety, 4, sety.Length);
|
||
byte[] suz = new byte[10000];
|
||
var ssety2 = HexFile.NetCRC16_Data(sety, sety.Length, 4);
|
||
|
||
HexFile.StrToHex(suz, sety, 100);
|
||
|
||
//找到文件头
|
||
if ((sety[0] == 0xCC) && (sety[1] == 0xC0))
|
||
{
|
||
int data_len = sety[3];
|
||
data_len <<= 8;
|
||
data_len |= sety[2];
|
||
|
||
if (data_len <= 1024) //文件长度超出范围,不处理
|
||
{
|
||
byte[] vaslen = new byte[data_len];
|
||
int crc_val = 0;
|
||
int temp_crc = 0;
|
||
|
||
Array.Copy(sety, vaslen, data_len);
|
||
crc_val = sety[5];
|
||
crc_val <<= 8;
|
||
crc_val |= sety[4];
|
||
|
||
temp_crc = HexFile.NetCRC16_Data(vaslen, data_len, 4);
|
||
|
||
if (temp_crc == crc_val)
|
||
{
|
||
/*数据校验成功*/
|
||
if (vaslen[10] == 0x01)
|
||
{
|
||
var zunsons = vaslen.Skip(157).Take(64).ToArray();
|
||
var seyu = operation.ByteArrayToHexStr(zunsons);
|
||
var setysssy = operation.UnHexs(seyu);
|
||
setysssy = setysssy.Replace("\0", null);
|
||
setysssy = setysssy.Replace("_", "-");
|
||
ModelName = setysssy;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "文件数据CRC校验失败,请检查文件是否正确";
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型错误,请检查文件是否正确";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "获取机型失败";
|
||
}
|
||
|
||
|
||
FileName.Add(selectdata.App_Cfg_For_L4);
|
||
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))));
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V04";
|
||
if (selectdata.App_Cfg_For_L4.Substring(selectdata.App_Cfg_For_L4.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L4.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.App_Cfg_For_L4;
|
||
}
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.Filenumber = ++coun;
|
||
//send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
}
|
||
else if (selectdata.APPTYPE == "Hex_Code")
|
||
{
|
||
if (string.IsNullOrEmpty(selectdata.Hex_Code_For_L2) && string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
|
||
{
|
||
MrrMsg = "获取文件”失败所选房型没上传固件(APP)或配置文件,请检查网络或联系管理员";
|
||
}
|
||
else
|
||
{
|
||
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L2))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))) == selectdata.Hex_Code_For_L2_MD5)
|
||
{
|
||
FileName.Add(selectdata.Hex_Code_For_L2);
|
||
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V02";
|
||
if (selectdata.Hex_Code_For_L2.Substring(selectdata.Hex_Code_For_L2.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L2.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L2;
|
||
}
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
send.Filenumber = ++coun;
|
||
//send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
|
||
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))) == selectdata.Hex_Code_For_L4_MD5)
|
||
{
|
||
FileName.Add(selectdata.Hex_Code_For_L4);
|
||
//data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
SendFileLuncher send = new SendFileLuncher();
|
||
send.LuncherVer = "Launcher_C1F_V04";
|
||
if (selectdata.Hex_Code_For_L4.Substring(selectdata.Hex_Code_For_L4.Length - 4, 4) == ".hex")
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L4.Replace(".hex", ".bin");
|
||
}
|
||
else
|
||
{
|
||
send.filename = selectdata.Hex_Code_For_L4;
|
||
}
|
||
send.Filenumber = ++coun;
|
||
send.HexStart = hexFile.Get_HexStart_C1();
|
||
//send.md5 = GetMd5FromString(data);
|
||
datalist.Add(send);
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置文件校验失败,请检查网络或联系管理员";
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无烧录模式,";
|
||
}
|
||
}
|
||
FileCount = datalist.Count;
|
||
string sum = "";
|
||
//写入日志
|
||
eqlog.CreationTime = DateTime.Now;
|
||
eqlog.Succeed = Status;
|
||
foreach (var item in FileName)
|
||
{
|
||
sum +=item+"/";
|
||
}
|
||
eqlog.Content = "房间类型id是:" + RoomTypeid + ",升级类型是:" + DataType + ",luncher版本是:" + LuncherVer + ",升级文件名:" + sum + ",机型是:" + ModelName;
|
||
_db.TBL_EQUIPMENTISSUELOGs.AddRange(eqlog);
|
||
_db.SaveChanges();
|
||
}
|
||
else
|
||
{
|
||
return Json(new
|
||
{
|
||
RoomTypeid,
|
||
RoomTypeName,
|
||
hotelId,
|
||
hotelName,
|
||
Status = false,
|
||
ModelName,
|
||
FileCount,
|
||
datalist,
|
||
MrrMsg = "未找到对应的房型,请检查网络或联系管理员"
|
||
});
|
||
}
|
||
}
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
|
||
return Json(new
|
||
{
|
||
RoomTypeid,
|
||
RoomTypeName,
|
||
hotelId,
|
||
hotelName,
|
||
Status =false,
|
||
ModelName,
|
||
FileCount,
|
||
datalist,
|
||
MrrMsg = ex.Message
|
||
});
|
||
}
|
||
return Json(new
|
||
{
|
||
RoomTypeid,
|
||
RoomTypeName,
|
||
hotelId,
|
||
hotelName,
|
||
Status,
|
||
ModelName,
|
||
FileCount,
|
||
datalist,
|
||
MrrMsg
|
||
|
||
});
|
||
}
|
||
|
||
|
||
|
||
#endregion
|
||
/// <summary>
|
||
/// 生成字符串的MD5码
|
||
/// </summary>
|
||
/// <param name="sInput"></param>
|
||
/// <returns></returns>
|
||
public static string GetMd5FromString(string sInput)
|
||
{
|
||
var lstData = Encoding.GetEncoding("utf-8").GetBytes(sInput);
|
||
var lstHash = new MD5CryptoServiceProvider().ComputeHash(lstData);
|
||
var result = new StringBuilder(32);
|
||
for (int i = 0; i < lstHash.Length; i++)
|
||
{
|
||
result.Append(lstHash[i].ToString("x2").ToUpper());
|
||
}
|
||
return result.ToString();
|
||
}
|
||
#region 获取对应的文件下发
|
||
|
||
|
||
[HttpPost]
|
||
[Route("OTApi/GainFile")]
|
||
public IActionResult GainFile1(int RoomTypeid, int DataType, string LuncherVer)
|
||
{
|
||
if (string.IsNullOrEmpty(LuncherVer))
|
||
{
|
||
LuncherVer = "L02";
|
||
}
|
||
FTPOperation operation = new FTPOperation();
|
||
HexFile hexFile = new HexFile();
|
||
//数据主题
|
||
string data = "";
|
||
//状态
|
||
bool Status = false;
|
||
//最后获取的文件
|
||
string FileName = "";
|
||
//错误信息
|
||
string MrrMsg = null;
|
||
//机型
|
||
string ModelName = "";
|
||
//Hex起初地址
|
||
string HexStart = "";
|
||
//
|
||
//写入日志
|
||
TBL_EQUIPMENTISSUELOG eqlog = new TBL_EQUIPMENTISSUELOG();
|
||
try
|
||
{
|
||
|
||
|
||
if (RoomTypeid != 0)
|
||
{
|
||
//获取对应的房间类型表的中的字段
|
||
var selectdata = (
|
||
from a in _db.TBL_ROOM_TYPE_LISTS
|
||
|
||
join b in _db.TBL_HOTEL_BASIC_INFOS on a.HOTEL_OLD_ID equals b.IDOLD
|
||
|
||
join c in _db.TBL_HOTEL_GROUP_INFOS on b.HOTEL_OLD_GROUP equals c.HOTEL_GROUP_OLD_ID
|
||
|
||
where a.ROOM_TYPE_OLD_ID == RoomTypeid
|
||
select new
|
||
{
|
||
a.CONFIG_BIN,
|
||
a.App_Cfg_For_L2,
|
||
a.App_Cfg_For_L4,
|
||
a.HOTEL_OLD_ID,
|
||
c.HOTEL_GROUP_NAME,
|
||
b.HOTEL_NAME_CN,
|
||
b.PROJECT_NUMBER,
|
||
a.Hex_Code_For_L2,
|
||
a.Hex_Code_For_L4,
|
||
a.APPTYPE,
|
||
a.Hex_Code_For_L2_MD5,
|
||
a.Hex_Code_For_L4_MD5,
|
||
a.App_Cfg_For_L2_MD5,
|
||
a.App_Cfg_For_L4_MD5,
|
||
a.CONFIG_BIN_MD5
|
||
}).FirstOrDefault();
|
||
//升级文件
|
||
if (DataType == 2)
|
||
{
|
||
|
||
if (selectdata.CONFIG_BIN != null)
|
||
{
|
||
//校验MD5
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN))) == selectdata.CONFIG_BIN_MD5)
|
||
{
|
||
var sety = operation.GetFile("Config/" + selectdata.HOTEL_GROUP_NAME + @"/" + selectdata.PROJECT_NUMBER + "-" + selectdata.HOTEL_NAME_CN + @"/" + selectdata.CONFIG_BIN);
|
||
data = Convert.ToBase64String(sety);
|
||
FileName = selectdata.CONFIG_BIN;
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置dat文件校验失败";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无配置文件";
|
||
}
|
||
}
|
||
//配置文件
|
||
else if (DataType == 1)
|
||
{
|
||
string lum;
|
||
if (!string.IsNullOrEmpty(LuncherVer))
|
||
{
|
||
lum = LuncherVer.Substring(0, 1) + LuncherVer.Substring(LuncherVer.Length - 2, 2);
|
||
if (lum == "L02" || lum == "L04")
|
||
{
|
||
//判断是代码烧录还是工具烧录
|
||
if (selectdata.APPTYPE != "")
|
||
{
|
||
if (selectdata.APPTYPE == "App_Cfg")
|
||
{
|
||
switch (lum)
|
||
{
|
||
case "L02":
|
||
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L2))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))) == selectdata.App_Cfg_For_L2_MD5)
|
||
{
|
||
FileName = selectdata.App_Cfg_For_L2;
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L2))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
HexStart = hexFile.Get_HexStart_C1();
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置App_Cfg_L2文件校验失败";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无App_Cfg_L2文件";
|
||
}
|
||
|
||
break;
|
||
case "L04":
|
||
if (!string.IsNullOrEmpty(selectdata.App_Cfg_For_L4))
|
||
{
|
||
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))) == selectdata.App_Cfg_For_L4_MD5)
|
||
{
|
||
FileName = selectdata.App_Cfg_For_L4;
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.App_Cfg_For_L4))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
HexStart = hexFile.Get_HexStart_C1();
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置App_Cfg_L4文件校验失败";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无App_Cfg_L4文件";
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
else if (selectdata.APPTYPE == "Hex_Code")
|
||
{
|
||
switch (lum)
|
||
{
|
||
case "L02":
|
||
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L2))
|
||
{
|
||
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))) == selectdata.Hex_Code_For_L2_MD5)
|
||
{
|
||
FileName = selectdata.Hex_Code_For_L2;
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L2))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
HexStart = hexFile.Get_HexStart_C1();
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置Hex_Code_For_L2文件校验失败";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无Hex_Code_For_L2文件";
|
||
}
|
||
break;
|
||
case "L04":
|
||
if (!string.IsNullOrEmpty(selectdata.Hex_Code_For_L4))
|
||
{
|
||
if (MD5Verify.getMD5Hash(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))) == selectdata.Hex_Code_For_L4_MD5)
|
||
{
|
||
FileName = selectdata.Hex_Code_For_L4;
|
||
data = Convert.ToBase64String(hexFile.DealHexFile(operation.BytesToStream(operation.GetFile("Firmware/" + selectdata.Hex_Code_For_L4))));
|
||
ModelName = hexFile.GetHexInfo();
|
||
HexStart = hexFile.Get_HexStart_C1();
|
||
Status = true;
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "配置Hex_Code_For_L4文件校验失败";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无Hex_Code_For_L4文件";
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "无烧录模式";
|
||
}
|
||
}
|
||
else
|
||
{
|
||
MrrMsg = "luncher未找到对应的升级文件";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//写入日志
|
||
eqlog.CreationTime = DateTime.Now;
|
||
eqlog.Succeed = Status;
|
||
eqlog.Content = "房间类型id是:" + RoomTypeid + ",升级类型是:" + DataType + ",luncher版本是:" + LuncherVer + ",升级文件名:" + FileName + ",机型是:" + ModelName;
|
||
_db.TBL_EQUIPMENTISSUELOGs.AddRange(eqlog);
|
||
_db.SaveChanges();
|
||
|
||
if (!string.IsNullOrEmpty(FileName))
|
||
{
|
||
if (FileName.Substring(FileName.Length - 4, 4) == ".hex")
|
||
{
|
||
FileName = FileName.Replace(".hex", ".bin");
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
if (!string.IsNullOrEmpty(FileName))
|
||
{
|
||
if (FileName.Substring(FileName.Length - 4, 4) == ".hex")
|
||
{
|
||
FileName = FileName.Replace(".hex", ".bin");
|
||
}
|
||
}
|
||
return Json(new
|
||
{
|
||
data,
|
||
Status = false,
|
||
ModelName,
|
||
HexStart,
|
||
FileName,
|
||
MrrMsg = ex.Message
|
||
});
|
||
}
|
||
return Json(new
|
||
{
|
||
data,
|
||
Status,
|
||
ModelName,
|
||
HexStart,
|
||
FileName,
|
||
MrrMsg
|
||
});
|
||
}
|
||
|
||
|
||
|
||
#endregion
|
||
|
||
|
||
|
||
|
||
|
||
#region 同步选住的数据
|
||
/// <summary>
|
||
/// 同步选住的数据
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
///
|
||
|
||
[HttpPost]
|
||
[Route("OTApi/RoomChange")]
|
||
public IActionResult RoomChange(string projectCode,string roomNumber,string roomLayout,string projectName)
|
||
{
|
||
var db = new DbHelperSQL(DbHelperSQL.DBSel.BLV_RCU_DB);
|
||
if (!string.IsNullOrEmpty(projectCode)&& !string.IsNullOrEmpty(roomNumber)&& !string.IsNullOrEmpty(roomLayout)&&!string.IsNullOrEmpty(projectName))
|
||
{
|
||
var selectdata = (
|
||
from a in _db.TBL_HOTEL_BASIC_INFOS where a.HOTEL_NAME_CN == projectName
|
||
select new
|
||
{
|
||
a.HOTEL_ID
|
||
}).FirstOrDefault();
|
||
var roomdata = (
|
||
from a in _db.TBL_ROOM_TYPE_LISTS
|
||
where a.ROOM_TYPE_NAME == roomNumber
|
||
select new
|
||
{
|
||
a.ROOM_TYPE_ID
|
||
}).FirstOrDefault();
|
||
|
||
if (selectdata == null)
|
||
{
|
||
if (db.ExecuteSql($"INSERT INTO tbl_hotel_basic_info(PROJECT_NUMBER, HOTEL_NAME_CN, KEY_ID, IsApprove, HOTEL_GROUP, VALID_STATUS,`STATUS`, SORT, IDOLD, IsDel, HOTEL_OLD_GROUP, BRANDID) VALUES('{projectCode}', '{projectName}', 0, 1, 0, 0, 2, 0, 0, 0, 0, 2); ") != -1)
|
||
{
|
||
|
||
}
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
return Json(new
|
||
{
|
||
retmsg="参数不可为空",
|
||
retcode="404"
|
||
});
|
||
}
|
||
return Json("");
|
||
}
|
||
#endregion
|
||
}
|
||
}
|