LaJiFenLei/Waste.Application/ResultInfos/ResultService.cs

672 lines
30 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DotNetCore.CAP;
using Furion.DependencyInjection;
using Furion.DistributedIDGenerator;
using Mapster;
using Nirvana.Common;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using Waste.Application.SubscribeInfo;
using Waste.Domain;
namespace Waste.Application
{
/// <summary>
/// 投放记录管理
/// </summary>
public class ResultService : BaseInfoService, IResultService, ITransient
{
private readonly ISqlSugarRepository<W_Result> repository;
private readonly SqlSugarClient dbClient;
private readonly ILoggerService _loggerService;
private readonly ICapPublisher _capBus;
public ResultService(ISqlSugarRepository<W_Result> sqlSugarRepository, ILoggerService loggerService, ICapPublisher capPublisher)
{
repository = sqlSugarRepository;
dbClient = repository.Context;
_loggerService = loggerService;
_capBus = capPublisher;
}
/// <summary>
/// 获取投放记录
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
[WasteAuthorize]
public async Task<PageParms<ResultList>> GetListAsync(QueryParams param)
{
RefAsync<int> totalnum = 0;
var temquery = dbClient.Queryable<W_Result>();
if (param.queryParam != null && param.queryParam.Count > 0)
{
List<IConditionalModel> conModels = new List<IConditionalModel>();
param.queryParam.ForEach(x =>
{
var val = x.Value.ToStrEmpty();
if (!string.IsNullOrEmpty(val))
{
if (x.Name.ToStr().ToLower() == "facecode")
{
temquery = temquery.Where(t => SqlFunc.Subqueryable<W_Device>().Where(e => e.FacEcode.Contains(val) && t.DeviceId == e.Id).Any());
}
else if (x.Name.ToStr().ToLower() == "name")
{
temquery = temquery.Where(t => SqlFunc.Subqueryable<W_Device>().Where(e => e.Name.Contains(val) && t.DeviceId == e.Id).Any());
}
else if (x.Name.Equals("poststatus", StringComparison.OrdinalIgnoreCase))
{
var status = val.ToInt();
if (status >= 0)
{
temquery = temquery.Where(t => SqlFunc.Subqueryable<W_ResultExt>().Where(e => e.Status == status && t.Id == e.ResultId).Any());
}
else
{
temquery = temquery.Where(t => SqlFunc.Subqueryable<W_ResultExt>().Where(e => t.Id == e.ResultId).NotAny());
}
}
else
{
conModels.Add(new ConditionalModel()
{
FieldName = x.Name,
ConditionalType = (ConditionalType)x.Type,
FieldValue = val
});
}
}
});
if (conModels.Count > 0)
{
temquery = temquery.Where(conModels);
}
}
//针对非平台类型,则可以查看下面所有的子账户设备
if (currentUser.AccountType != (int)AccountType.platform)
{
var sql = $"code like '{currentUser.BusinessCode}'+'%' and id = x.businessid";
temquery = temquery.Where(x => SqlFunc.Subqueryable<W_Business>().Where(sql).Any());
}
string sorts = string.Format("{0} {1}", param.sort, param.order);
var query = await temquery.OrderBy(sorts)
.Select(x => new ResultList
{
Id = x.Id,
BusinessId = x.BusinessId,
DeviceId = x.DeviceId,
WasteType = x.WasteType,
Tare = x.Tare,
GrossWeight = x.GrossWeight,
NetWeight = x.NetWeight,
Registration = x.Registration,
CreateTime = x.CreateTime,
PostStatus = -1
})
.Mapper((it, cache) =>
{
var allbus = cache.Get(list =>
{
var ids = list.Where(e => e.BusinessId != Guid.Empty).Select(e => e.BusinessId).ToList();
return dbClient.Queryable<W_Business>().Where(e => ids.Contains(e.Id)).ToList();
});
it.BusinessName = allbus.FirstOrDefault(e => e.Id == it.BusinessId)?.Name;
var alldev = cache.Get(list =>
{
var ids = list.Where(e => e.DeviceId != Guid.Empty).Select(e => e.DeviceId).ToList();
return dbClient.Queryable<W_Device>().Where(e => ids.Contains(e.Id)).ToList();
});
var dev = alldev.FirstOrDefault(e => e.Id == it.DeviceId);
if (dev != null)
{
it.DeviceName = dev.Name;
it.DeviceFacEcode = dev.FacEcode;
it.DeviceEcode = dev.Ecode;
it.DeviceAddress = dev.Address;
}
var allres = cache.Get(list =>
{
var ids = list.Select(e => e.Id).ToList();
return dbClient.Queryable<W_ResultExt>().Where(e => ids.Contains(e.ResultId)).ToList();
});
var res = allres.FirstOrDefault(e => e.ResultId == it.Id);
if (res != null)
{
it.PostStatus = res.Status;
}
var allext = cache.Get(list =>
{
var ids = list.Select(e => e.Id).ToList();
return dbClient.Queryable<W_MeasureResult>().Where(e => ids.Contains(e.ResultId)).ToList();
});
var ext = allext.FirstOrDefault(e => e.ResultId == it.Id);
it.WasteType = /*ext != null && !ext.WasteSType.IsEmpty() ? $"{ext.WasteSType}【{it.WasteType}】" :*/ it.WasteType;
it.Measure_WasteSType = ext?.WasteSType;
it.Measure_Price = ext?.Price;
it.Measure_Amount = ext?.Amount;
it.Measure_OpUser = ext?.OpUser;
it.Measure_UUID = ext?.UUID;
if (string.IsNullOrWhiteSpace(it.Registration))
{
it.Registration = ext?.Registration;
}
it.ID1 = ext?.ID1;
it.ID2 = ext?.ID2;
it.ID3 = ext?.ID3;
it.ID4 = ext?.ID4;
it.ID5 = ext?.ID5;
it.ID6 = ext?.ID6;
it.ID7 = ext?.ID7;
it.ID8 = ext?.ID8;
})
.ToPageListAsync(param.offset, param.limit, totalnum);
return new PageParms<ResultList>
{
page = param.offset,
Items = query,
totalnum = totalnum,
limit = param.limit
};
}
/// <summary>
/// 查询历史投放记录
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<PageParms<ResultListByEquS2CDto>> GetListByEquAsync(ResultListByEquC2SDto input)
{
RefAsync<int> totalnum = 0;
Expression<Func<W_Result, bool>> exp = Expressionable.Create<W_Result>().AndIF(input.StartTime.HasValue, x => x.CreateTime >= input.StartTime).AndIF(input.EndTime.HasValue, x => x.CreateTime <= input.EndTime).And(x => x.DeviceId == input.DeviceId).ToExpression();
var query = await dbClient.Queryable<W_Result>()
.Where(exp)
.OrderBy(x => x.CreateTime, OrderByType.Desc)
.Select(x => new ResultListByEquS2SDto
{
CreateTime = x.CreateTime,
Id = x.Id,
TrashCode = x.Registration,
WasteType = x.WasteType,
GrossWeight = x.GrossWeight
})
.Mapper((it, cache) =>
{
var allext = cache.Get(list =>
{
var ids = list.Select(x => x.Id).ToList();
return dbClient.Queryable<W_MeasureResult>().Where(e => ids.Contains(e.ResultId)).ToList();
});
var ext = allext.FirstOrDefault(x => x.ResultId == it.Id);
if (ext != null)
{
it.WasteSType = ext.WasteSType;
}
})
.ToPageListAsync(input.offset, input.limit, totalnum);
var list = query.Adapt<List<ResultListByEquS2CDto>>();
return new PageParms<ResultListByEquS2CDto>
{
page = input.offset,
Items = list,
totalnum = totalnum,
limit = input.limit
};
}
/// <summary>
/// wifi模块测量结果增加
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public async Task InsertResultByWifiAsync(WifiPackage data)
{
//查找设备
var device = await dbClient.Queryable<W_Device>().FirstAsync(x => data.sn == x.Ecode);
// _loggerService.AddLogger($"接收到的数据,参数:{myPackage.ToJson()}", 3);
if (device == null)
{
//记录日志
_loggerService.AddLogger($"设备未找到,参数:{data.ToJson()}", 3);
return;
}
//计算净重,毛重-皮重=净重如果净重小于等于0则不上报保存
decimal weight = (data.Weight.ToDecimal() - device.Tare).ToDecimal(2);
if (weight <= 0)
{
//记录日志
_loggerService.AddLogger($"净重为0不上报,参数:{data.ToJson()}", 3);
return;
}
var devicedata = await dbClient.Queryable<W_DeviceData>().FirstAsync(x => x.DeviceId == device.Id);
var resultid = IDGen.NextID();
DateTime time = DateTime.Now;
//检查设备是否为今天第一次上报
bool isfrist = false;
if (device.LastHeartTime.HasValue && device.LastHeartTime.Value.Date != DateTime.Now.Date)
{
isfrist = true;
}
decimal currentweight = data.Weight.IsEmpty() ? 0 : data.Weight.ToDecimal();
//记录数据
await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new
{
deviceid = device.Id,
businessid = device.Businessid,
resultid = resultid,
imei = devicedata != null ? devicedata.IMSI : "",
iccid = devicedata != null ? devicedata.ICCID : "",
imsi = devicedata != null ? devicedata.IMSI : "",
time = time,
latitude = "",
longitude = "",
sign = "",
city = "",
area = data.trashcode,
wastetype = data.WasteType,
weigth = currentweight,
isheart = data.IsHeart,
tare = device.Tare,
isfrist = isfrist
});
if (!data.IsHeart)
{
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = data.trashcode,
WasteType = data.WasteType,
Weight = currentweight,
faccode = device.FacEcode,
ecode = device.Ecode,
province = device.Province,
city = device.City,
area = device.Area,
address = device.Address
});
}
}
/// <summary>
/// 新的4G模块测量结果增加
/// </summary>
/// <param name="myPackage"></param>
/// <returns></returns>
public async Task InsertResultBy4GAsync(nMyPackage myPackage)
{
//查找设备
var device = await dbClient.Queryable<W_Device>().FirstAsync(x => myPackage.IMEI == x.Ecode);
// _loggerService.AddLogger($"接收到的数据,参数:{myPackage.ToJson()}", 3);
if (device == null)
{
//记录日志
_loggerService.AddLogger($"设备未找到,参数:{myPackage.ToJson()}", 3);
return;
}
var devicedata = await dbClient.Queryable<W_DeviceData>().FirstAsync(x => x.DeviceId == device.Id);
var resultid = IDGen.NextID();
DateTime time = DateTime.Now;
if (myPackage.IsHeart)
{
if (string.IsNullOrEmpty(myPackage.Longitude) || myPackage.Longitude.ToDecimal() == 0) myPackage.Longitude = devicedata != null ? devicedata.Longitude : "0";
if (string.IsNullOrEmpty(myPackage.Latitude) || myPackage.Latitude.ToDecimal() == 0) myPackage.Latitude = devicedata != null ? devicedata.Latitude : "0";
}
else
{
if (string.IsNullOrEmpty(myPackage.IMSI)) myPackage.IMSI = devicedata != null ? devicedata.IMSI : "";
if (string.IsNullOrEmpty(myPackage.IMEI)) myPackage.IMEI = devicedata != null ? devicedata.IMEI : "";
if (string.IsNullOrEmpty(myPackage.ICCID)) myPackage.ICCID = devicedata != null ? devicedata.ICCID : "";
if (!string.IsNullOrEmpty(myPackage.Time) && myPackage.Time.Length == 14)
{
time = $"{myPackage.Time.Substring(0, 4)}-{myPackage.Time.Substring(4, 2)}-{myPackage.Time.Substring(6, 2)} {myPackage.Time.Substring(8, 2)}:{myPackage.Time.Substring(10, 2)}:{myPackage.Time.Substring(12, 2)}".ToDate();
}
}
//检查设备是否为今天第一次上报
bool isfrist = false;
if (device.LastHeartTime.HasValue && device.LastHeartTime.Value.Date != DateTime.Now.Date)
{
isfrist = true;
}
var Weight = myPackage.Weight.IsEmpty() ? 0 : myPackage.Weight.ToDecimal();
//记录数据
await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new
{
deviceid = device.Id,
businessid = device.Businessid,
resultid = resultid,
imei = myPackage.IMEI,
iccid = myPackage.ICCID,
imsi = myPackage.IMSI,
time = time,
latitude = myPackage.Latitude,
longitude = myPackage.Longitude,
sign = myPackage.GSLQ,
city = "",
area = myPackage.trashcode,
wastetype = myPackage.WasteType,
weigth = Weight,
isheart = myPackage.IsHeart,
tare = device.Tare,
isfrist = isfrist
});
if (!myPackage.IsHeart)
{
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = myPackage.trashcode,
WasteType = myPackage.WasteType,
Weight = Weight,
faccode = device.FacEcode,
ecode = device.Ecode,
province = device.Province,
city = device.City,
area = device.Area,
address = device.Address
});
}
}
/// <summary>
/// 新的A8 4G模块测量结果增加
/// </summary>
/// <param name="myPackage"></param>
/// <returns></returns>
public async Task InsertResultByA84GAsync(A8MyPackage myPackage)
{
//如果uuid不为空,并且以存在记录,则忽略
//if (!myPackage.IsHeart && !myPackage.UUID.IsEmpty() && await dbClient.Queryable<W_MeasureResult>().AnyAsync(x => x.UUID == myPackage.UUID))
//{
// _loggerService.AddLogger($"A8记录重复,内容:{myPackage.ToJson()}", 1);
// return;
//}
//查找设备
var device = await dbClient.Queryable<W_Device>().FirstAsync(x => myPackage.IMEI == x.Ecode);
// _loggerService.AddLogger($"接收到的数据,参数:{myPackage.ToJson()}", 3);
if (device == null)
{
//记录日志
_loggerService.AddLogger($"设备未找到,参数:{myPackage.ToJson()}", 3);
return;
}
var devicedata = await dbClient.Queryable<W_DeviceData>().FirstAsync(x => x.DeviceId == device.Id);
var resultid = IDGen.NextID();
DateTime time = DateTime.Now;
if (myPackage.IsHeart)
{
if (string.IsNullOrEmpty(myPackage.Longitude) || myPackage.Longitude.ToDecimal() == 0) myPackage.Longitude = devicedata != null ? devicedata.Longitude : "0";
if (string.IsNullOrEmpty(myPackage.Latitude) || myPackage.Latitude.ToDecimal() == 0) myPackage.Latitude = devicedata != null ? devicedata.Latitude : "0";
}
else
{
if (string.IsNullOrEmpty(myPackage.IMSI)) myPackage.IMSI = devicedata != null ? devicedata.IMSI : "";
if (string.IsNullOrEmpty(myPackage.IMEI)) myPackage.IMEI = devicedata != null ? devicedata.IMEI : "";
if (string.IsNullOrEmpty(myPackage.ICCID)) myPackage.ICCID = devicedata != null ? devicedata.ICCID : "";
if (!string.IsNullOrEmpty(myPackage.Time) && myPackage.Time.Length == 14)
{
time = $"{myPackage.Time.Substring(0, 4)}-{myPackage.Time.Substring(4, 2)}-{myPackage.Time.Substring(6, 2)} {myPackage.Time.Substring(8, 2)}:{myPackage.Time.Substring(10, 2)}:{myPackage.Time.Substring(12, 2)}".ToDate();
}
}
//检查设备是否为今天第一次上报
bool isfrist = false;
if (device.LastHeartTime.HasValue && device.LastHeartTime.Value.Date != DateTime.Now.Date)
{
isfrist = true;
}
var Weight = myPackage.Weight.IsEmpty() ? 0 : myPackage.Weight.ToDecimal();
decimal price = myPackage.Price.IsEmpty() ? 0 : myPackage.Price.ToDecimal();
decimal amount = myPackage.Amount.IsEmpty() ? 0 : myPackage.Amount.ToDecimal();
string wastestype = myPackage.WasteSType.ToStr();
//记录数据
await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new
{
deviceid = device.Id,
businessid = device.Businessid,
resultid = resultid,
imei = myPackage.IMEI,
iccid = myPackage.ICCID,
imsi = myPackage.IMSI,
time = time,
latitude = myPackage.Latitude,
longitude = myPackage.Longitude,
sign = myPackage.GSLQ,
city = "",
area = myPackage.trashcode,
wastetype = myPackage.WasteType,
weigth = Weight,
isheart = myPackage.IsHeart,
tare = device.Tare,
isfrist = isfrist
});
if (!myPackage.IsHeart)
{
//记录价格数据
if (!myPackage.UUID.IsEmpty())
{
await dbClient.Insertable(new W_MeasureResult
{
ResultId = resultid,
WasteSType = wastestype,
Amount = amount,
OpUser = myPackage.OpUser.ToStr(),
Price = price,
UUID = myPackage.UUID,
DeviceFacEcode = myPackage.DeviceFacEcode,
Registration = myPackage.Registration,
GrossWeight = myPackage.GrossWeight,
Tare = myPackage.Tare,
NetWeight = myPackage.NetWeight,
ID1 = myPackage.ID1,
ID2 = myPackage.ID2,
ID3 = myPackage.ID3,
ID4 = myPackage.ID4,
ID5 = myPackage.ID5,
ID6 = myPackage.ID6,
ID7 = myPackage.ID7,
ID8 = myPackage.ID8,
CreatedTime = DateTime.Now,
DataHash = myPackage.DataHash
}).ExecuteCommandAsync();
}
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = myPackage.trashcode,
WasteType = myPackage.WasteType,
Weight = Weight,
WasteSType = wastestype,
faccode = device.FacEcode,
ecode = device.Ecode,
province = device.Province,
city = device.City,
area = device.Area,
address = device.Address
});
}
}
/// <summary>
/// 给第三方推送消息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task SendMessageToThird(SendThirdMessageSubscribeS2SDto input)
{
if (input.Weight <= 0)
{
return;
}
var configdata = await dbClient.Queryable<W_DeviceConfig>().Where(x => x.DeviceId == input.DeviceId).Select(x => new W_DeviceConfig
{
Body = x.Body,
Url = x.Url
}).FirstAsync();
if (configdata != null && !configdata.Url.IsEmpty())
{
var senddata = input.Adapt<SendThirdMessageSubscriDto>();
senddata.Body = configdata.Body.ToStr();
senddata.Url = configdata.Url.ToStr();
await _capBus.PublishAsync("third.service.sendmessage", senddata);
}
}
/// <summary>
/// 增加测量记录
/// </summary>
/// <param name="myPackage"></param>
/// <returns></returns>
public async Task<ResultInfo> InsertResultAsync(MyPackage myPackage)
{
//查找设备
var device = await dbClient.Queryable<W_Device>().FirstAsync(x => myPackage.IMEI == x.Ecode);
// _loggerService.AddLogger($"接收到的数据,参数:{myPackage.ToJson()}", 3);
if (device == null)
{
//记录日志
_loggerService.AddLogger($"设备未找到,参数:{myPackage.ToJson()}", 3);
return new ResultInfo(ResultState.FAIL, "设备未找到");
}
var devicedata = await dbClient.Queryable<W_DeviceData>().FirstAsync(x => x.DeviceId == device.Id);
var resultid = IDGen.NextID();
DateTime time = DateTime.Now;
if (myPackage.IsHeart)
{
if (string.IsNullOrEmpty(myPackage.Longitude) || myPackage.Longitude.ToDecimal() == 0) myPackage.Longitude = devicedata != null ? devicedata.Longitude : "0";
if (string.IsNullOrEmpty(myPackage.Latitude) || myPackage.Latitude.ToDecimal() == 0) myPackage.Latitude = devicedata != null ? devicedata.Latitude : "0";
}
else
{
if (string.IsNullOrEmpty(myPackage.IMSI)) myPackage.IMSI = devicedata != null ? devicedata.IMSI : "";
if (string.IsNullOrEmpty(myPackage.IMEI)) myPackage.IMEI = devicedata != null ? devicedata.IMEI : "";
if (string.IsNullOrEmpty(myPackage.ICCID)) myPackage.ICCID = devicedata != null ? devicedata.ICCID : "";
if (!string.IsNullOrEmpty(myPackage.Time) && myPackage.Time.Length == 14)
{
time = $"{myPackage.Time.Substring(0, 4)}-{myPackage.Time.Substring(4, 2)}-{myPackage.Time.Substring(6, 2)} {myPackage.Time.Substring(8, 2)}:{myPackage.Time.Substring(10, 2)}:{myPackage.Time.Substring(12, 2)}".ToDate();
}
}
//检查设备是否为今天第一次上报
bool isfrist = false;
if (device.LastHeartTime.HasValue && device.LastHeartTime.Value.Date != DateTime.Now.Date)
{
isfrist = true;
}
if (myPackage.IsChecked && !string.IsNullOrEmpty(myPackage.Area) && myPackage.Area.Length > 0)
{
//新的协议中此字段为垃圾桶编号
var areaBytes = Encoding.Default.GetBytes(myPackage.Area);
//长度为5个字节,后三位为垃圾桶编号(16进制)
if (areaBytes.Length == 5)
{
var typeBytes = new byte[3];
for (var i = 0; i < 3; i++)
{
typeBytes[i] = areaBytes[i + 2];
}
var typeHex = Convert.ToHexString(typeBytes);
myPackage.Area = Convert.ToInt32(typeHex, 16).ToString();
}
//000F000002.16进制
// var areaHex = Convert.ToHexString(areaBytes);
}
decimal weight = myPackage.Weight.IsEmpty() ? 0 : myPackage.Weight.ToDecimal();
//记录数据
await dbClient.Ado.UseStoredProcedure().ExecuteCommandAsync("Proc_InsertResult", new
{
deviceid = device.Id,
businessid = device.Businessid,
resultid = resultid,
imei = myPackage.IMEI,
iccid = myPackage.ICCID,
imsi = myPackage.IMSI,
time = time,
latitude = myPackage.Latitude,
longitude = myPackage.Longitude,
sign = myPackage.GSLQ,
city = myPackage.City,
area = myPackage.Area,
wastetype = myPackage.WasteType,
weigth = weight,
isheart = myPackage.IsHeart,
tare = device.Tare,
isfrist = isfrist
});
//上传垃圾数据
//if (myPackage.IsWeight && myPackage.Weight.ToDecimal() > 0)
//{
// var devicesecret = await repository.Change<W_SZDevice>().Context.Queryable<W_SZDevice>().FirstAsync(x => x.DeviceId == device.Id);
// if (devicesecret != null && !string.IsNullOrEmpty(devicesecret.Secret)
// && !string.IsNullOrEmpty(devicesecret.SecretHash)
// && !string.IsNullOrEmpty(devicesecret.DevId))
// {
// int timestamp = GetTimestamp(time);
// await _suZhouService.PostGarbagesAsync(new GarbagePltC2SDto
// {
// Weight = myPackage.Weight.ToDouble(),
// secret = devicesecret.Secret,
// secrethash = devicesecret.SecretHash,
// ScanningTime = timestamp,
// DStatus = 0,
// deviceid = devicesecret.DevId,
// Trash = myPackage.Area,
// Type = TrashType(myPackage.WasteType)
// });
// }
//}
if (!myPackage.IsHeart)
{
await SendMessageToThird(new SendThirdMessageSubscribeS2SDto
{
DeviceId = device.Id,
Time = time,
TrashCode = myPackage.Area,
WasteType = myPackage.WasteType,
Weight = weight,
faccode = device.FacEcode,
ecode = device.Ecode,
province = device.Province,
city = device.City,
area = device.Area,
address = device.Address
});
}
return new ResultInfo(ResultState.SUCCESS, "success");
}
/// <summary>
/// byte转int
/// </summary>
/// <param name="bt"></param>
/// <returns></returns>
private static int ByteToInt(byte bt)
{
return Convert.ToInt32(((int)bt).ToString("X2"), 16);
}
private static int GetTimestamp(DateTime time)
{
DateTime dateTimeStart = TimeZoneInfo.ConvertTimeToUtc(new DateTime(1970, 1, 1, 8, 0, 0));
int timestamp = Convert.ToInt32((time - dateTimeStart).TotalSeconds);
return timestamp;
}
private int TrashType(string type)
{
if (type == "厨余垃圾") return 1;
else if (type == "可回收物") return 2;
else if (type == "有害垃圾") return 3;
else if (type == "其他垃圾") return 4;
else return 0;
}
}
}