历史记录第三方接口

This commit is contained in:
Hinse 2022-07-12 17:53:04 +08:00
parent 343d28f3b4
commit 3af1b42a5c
9 changed files with 390 additions and 8 deletions

View File

@ -23,6 +23,13 @@ namespace Waste.Application
config.ForType<SendThirdMessageSubscribeS2SDto, SendThirdMessageSubscriDto>()
.Map(dest => dest.Time, src => src.Time.GetTimeStamp())
;
config.ForType<SendThirdMessageSubscribeS2SDto, SendThirdMessageSubscriDto>()
.Map(dest => dest.Time, src => src.Time.GetTimeStamp())
;
config.ForType<ResultListByEquS2SDto, ResultListByEquS2CDto>()
.Map(dest => dest.Time, src => src.CreateTime.GetTimeStamp())
.Map(dest => dest.Weight, src => src.GrossWeight.ToDecimal())
;
}
}
}

View File

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@ -7,33 +8,146 @@ using Waste.Domain;
namespace Waste.Application
{
/// <summary>
/// 投放记录列表
/// </summary>
public class ResultListByEquS2CDto
{
/// <summary>
/// 垃圾类别
/// </summary>
public string WasteType { get; set; }
/// <summary>
/// 物品小类别
/// </summary>
public string WasteSType { get; set; } = "";
/// <summary>
/// 重量,单位KG
/// </summary>
public string Weight { get; set; }
/// <summary>
/// 垃圾桶编号
/// </summary>
public string TrashCode { get; set; }
/// <summary>
/// 上报时间
/// </summary>
public long Time { get; set; }
}
/// <summary>
/// 投放记录列表
/// </summary>
public class ResultListByEquS2SDto : ResultListByEquS2CDto
{
/// <summary>
/// 上报时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 测量记录ID
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// 毛重
/// </summary>
public decimal GrossWeight { get; set; }
}
/// <summary>
/// 查询投放记录
/// </summary>
public class ResultListByEquC2SDto : IValidatableObject
{
/// <summary>
/// 当前页
/// </summary>
public int offset { get; set; } = 1;
/// <summary>
/// 每页显示的数量
/// </summary>
public int limit { get; set; } = 10;
/// <summary>
/// 开始时间
/// </summary>
public DateTime? StartTime { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime? EndTime { get; set; }
/// <summary>
/// 设备ID
/// </summary>
public Guid DeviceId { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (DeviceId == Guid.Empty)
{
yield return new ValidationResult("设备ID不可为空", new[] { nameof(DeviceId) });
}
if (limit > 100)
{
yield return new ValidationResult("一次最多100条记录", new[] { nameof(limit) });
}
if (offset <= 0)
{
yield return new ValidationResult("页码需从1开始", new[] { nameof(offset) });
}
if (StartTime.HasValue && StartTime.Value.Date > DateTime.Now.Date)
{
yield return new ValidationResult("开始时间不可超过当天", new[] { nameof(StartTime) });
}
if (EndTime.HasValue && EndTime.Value.Date > DateTime.Now.Date)
{
yield return new ValidationResult("结束时间不可超过当天", new[] { nameof(StartTime) });
}
}
}
public class ResultList : W_Result
{
/// <summary>
/// 商户名称
/// </summary>
public string BusinessName { get; set; }
/// <summary>
/// 设备名称
/// </summary>
public string DeviceName { get; set; }
/// <summary>
/// 设备地址
/// </summary>
public string DeviceAddress { get; set; }
/// <summary>
/// 设备出厂序列号
/// </summary>
public string DeviceFacEcode { get; set; }
/// <summary>
/// 设备编号
/// </summary>
public string DeviceEcode { get; set; }
/// <summary>
/// 上报是否成功,1-成功,0-失败
/// </summary>
public int PostStatus { get; set; }
}
/// <summary>
/// 上传的数据包体
/// </summary>
@ -43,70 +157,87 @@ namespace Waste.Application
/// 固定头
/// </summary>
public string Key { get; set; } = "";
/// <summary>
/// 数据体长度
/// </summary>
public int Len { get; set; } = 0;
/// <summary>
/// IMEI
/// </summary>
public string IMEI { get; set; } = "";
/// <summary>
/// ICCID
/// </summary>
public string ICCID { get; set; } = "";
/// <summary>
/// IMSI
/// </summary>
public string IMSI { get; set; } = "";
/// <summary>
/// 信号强度
/// </summary>
public string GSLQ { get; set; } = "";
/// <summary>
/// 时间
/// </summary>
public string Time { get; set; }
/// <summary>
/// 经度
/// </summary>
public string Longitude { get; set; } = "";
/// <summary>
/// 纬度
/// </summary>
public string Latitude { get; set; } = "";
/// <summary>
/// 设备地区
/// </summary>
public string City { get; set; } = "";
/// <summary>
/// 设备详细地点
/// </summary>
public string Area { get; set; } = "";
/// <summary>
/// 垃圾类别
/// </summary>
public string WasteType { get; set; } = "";
/// <summary>
/// 重量,KG
/// </summary>
public string Weight { get; set; } = "0";
/// <summary>
/// 内容
/// </summary>
public string Body { get; set; } = "";
/// <summary>
/// 字符串结果
/// </summary>
public string Str { get; set; } = "";
/// <summary>
/// 是否是否通过校检,true-是,false-否
/// </summary>
public bool IsChecked { get; set; } = true;
/// <summary>
/// 是否为心跳包数据
/// </summary>
public bool IsHeart { get; set; } = false;
/// <summary>
/// 是否为有效测量
/// </summary>
@ -122,24 +253,29 @@ namespace Waste.Application
/// 垃圾类别小类
/// </summary>
public string WasteSType { get; set; } = "";
/// <summary>
/// 消息ID
/// </summary>
public string UUID { get; set; } = "";
/// <summary>
/// 上报时间
/// </summary>
public string UploadTime { get; set; } = "";
/// <summary>
/// 价格
/// </summary>
public string Price { get; set; } = "";
/// <summary>
/// 金额
/// </summary>
public string Amount { get; set; } = "";
/// <summary>
/// 操作员
/// 操作员
/// </summary>
public string OpUser { get; set; } = "";
}
@ -147,76 +283,93 @@ namespace Waste.Application
/// <summary>
/// A8协议模块上传的数据包体
/// </summary>
public class A8MyPackage:A8Package
public class A8MyPackage : A8Package
{
/// <summary>
/// 固定头
/// </summary>
public string Key { get; set; } = "";
/// <summary>
/// 数据体长度
/// </summary>
public int Len { get; set; } = 0;
/// <summary>
/// IMEI
/// </summary>
public string IMEI { get; set; } = "";
/// <summary>
/// ICCID
/// </summary>
public string ICCID { get; set; } = "";
/// <summary>
/// IMSI
/// </summary>
public string IMSI { get; set; } = "";
/// <summary>
/// 信号强度
/// </summary>
public string GSLQ { get; set; } = "";
/// <summary>
/// 时间
/// </summary>
public string Time { get; set; }
/// <summary>
/// 经度
/// </summary>
public string Longitude { get; set; } = "";
/// <summary>
/// 纬度
/// </summary>
public string Latitude { get; set; } = "";
/// <summary>
/// 桶大小
/// </summary>
public string size { get; set; } = "";
/// <summary>
/// 垃圾桶编号
/// </summary>
public string trashcode { get; set; } = "";
/// <summary>
/// 垃圾类别
/// </summary>
public string WasteType { get; set; } = "";
/// <summary>
/// 重量,KG
/// </summary>
public string Weight { get; set; } = "0";
/// <summary>
/// 内容
/// </summary>
public string Body { get; set; } = "";
/// <summary>
/// 字符串结果
/// </summary>
public string Str { get; set; } = "";
/// <summary>
/// 是否是否通过校检,true-是,false-否
/// </summary>
public bool IsChecked { get; set; } = true;
/// <summary>
/// 是否为心跳包数据
/// </summary>
public bool IsHeart { get; set; } = false;
/// <summary>
/// 是否为有效测量
/// </summary>
@ -232,75 +385,93 @@ namespace Waste.Application
/// 固定头
/// </summary>
public string Key { get; set; } = "";
/// <summary>
/// 数据体长度
/// </summary>
public int Len { get; set; } = 0;
/// <summary>
/// IMEI
/// </summary>
public string IMEI { get; set; } = "";
/// <summary>
/// ICCID
/// </summary>
public string ICCID { get; set; } = "";
/// <summary>
/// IMSI
/// </summary>
public string IMSI { get; set; } = "";
/// <summary>
/// 信号强度
/// </summary>
public string GSLQ { get; set; } = "";
/// <summary>
/// 时间
/// </summary>
public string Time { get; set; }
/// <summary>
/// 经度
/// </summary>
public string Longitude { get; set; } = "";
/// <summary>
/// 纬度
/// </summary>
public string Latitude { get; set; } = "";
/// <summary>
/// 桶大小
/// </summary>
public string size { get; set; } = "";
/// <summary>
/// 垃圾桶编号
/// </summary>
public string trashcode { get; set; } = "";
/// <summary>
/// 垃圾类别
/// </summary>
public string WasteType { get; set; } = "";
/// <summary>
/// 重量,KG
/// </summary>
public string Weight { get; set; } = "0";
/// <summary>
/// 内容
/// </summary>
public string Body { get; set; } = "";
/// <summary>
/// 字符串结果
/// </summary>
public string Str { get; set; } = "";
/// <summary>
/// 是否是否通过校检,true-是,false-否
/// </summary>
public bool IsChecked { get; set; } = true;
/// <summary>
/// 是否为心跳包数据
/// </summary>
public bool IsHeart { get; set; } = false;
/// <summary>
/// 是否为有效测量
/// </summary>
public bool IsWeight { get; set; } = false;
}
/// <summary>
/// wifi模块上传的数据包体
/// </summary>
@ -310,25 +481,30 @@ namespace Waste.Application
/// 设备机器码
/// </summary>
public string sn { get; set; }
/// <summary>
/// 桶大小
/// </summary>
public string size { get; set; } = "";
/// <summary>
/// 垃圾桶编号
/// </summary>
public string trashcode { get; set; } = "";
/// <summary>
/// 垃圾类别
/// </summary>
public string WasteType { get; set; } = "";
/// <summary>
/// 重量,KG
/// </summary>
public string Weight { get; set; } = "0";
/// <summary>
/// 是否为心跳包
/// </summary>
public bool IsHeart { get; set; } = false;
}
}
}

View File

@ -18,12 +18,14 @@ namespace Waste.Application
/// <param name="param"></param>
/// <returns></returns>
Task<PageParms<ResultList>> GetListAsync(QueryParams param);
/// <summary>
/// 添加记录
/// </summary>
/// <param name="myPackage"></param>
/// <returns></returns>
Task<ResultInfo> InsertResultAsync(MyPackage myPackage);
/// <summary>
/// 新的4G模块测量结果增加
/// </summary>
@ -37,11 +39,19 @@ namespace Waste.Application
/// <param name="myPackage"></param>
/// <returns></returns>
Task InsertResultByA84GAsync(A8MyPackage myPackage);
/// <summary>
/// wifi模块测量结果增加
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
Task InsertResultByWifiAsync(WifiPackage data);
/// <summary>
/// 查询历史投放记录
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
Task<PageParms<ResultListByEquS2CDto>> GetListByEquAsync(ResultListByEquC2SDto input);
}
}
}

View File

@ -48,5 +48,18 @@ namespace Waste.Application.ResultInfos
{
await _resultService.InsertResultByWifiAsync(data);
}
/// <summary>
/// 查询历史投放记录
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
[Route("api/open/getresultlist")]
[ApiDescriptionSettings("DevApi")]
public async Task<PageParms<ResultListByEquS2CDto>> GetListByEquAsync(ResultListByEquC2SDto input)
{
return await _resultService.GetListByEquAsync(input);
}
}
}

View File

@ -10,6 +10,7 @@ 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;
@ -60,6 +61,18 @@ namespace Waste.Application
{
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()
@ -146,6 +159,50 @@ namespace Waste.Application
};
}
/// <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>

View File

@ -27,12 +27,14 @@ namespace Waste.Application.ThirdApiInfo
private static IWebHostEnvironment _hostingEnvironment;
private readonly IHttpContextAccessor _httpContextAccessor;
private static readonly FormOptions _defaultFormOptions = new FormOptions();
public OpenAppService(IOpenService openService, IWebHostEnvironment webHostEnvironment, IHttpContextAccessor httpContextAccessor)
{
_openService = openService;
_hostingEnvironment = webHostEnvironment;
_httpContextAccessor = httpContextAccessor;
}
/// <summary>
/// 获取设备上报相关信息
/// </summary>
@ -54,6 +56,7 @@ namespace Waste.Application.ThirdApiInfo
{
return await _openService.PostHeartAsync(data);
}
/// <summary>
/// 获取设备注册信息,第一次开机使用
/// </summary>
@ -65,6 +68,7 @@ namespace Waste.Application.ThirdApiInfo
{
return await _openService.RegInfoAsync(ecode);
}
/// <summary>
/// 更新上报状态
/// </summary>
@ -110,7 +114,6 @@ namespace Waste.Application.ThirdApiInfo
{
if (!MultipartRequestHelper.HasFileContentDisposition(contentDisposition))
{
}
else
{
@ -207,6 +210,7 @@ namespace Waste.Application.ThirdApiInfo
}
};
}
/// <summary>
/// 正式升级
/// </summary>
@ -308,4 +312,4 @@ namespace Waste.Application.ThirdApiInfo
return await _openService.WifiPostAsync(data);
}
}
}
}

View File

@ -1594,6 +1594,86 @@
<param name="param"></param>
<returns></returns>
</member>
<member name="T:Waste.Application.ResultListByEquS2CDto">
<summary>
投放记录列表
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2CDto.WasteType">
<summary>
垃圾类别
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2CDto.WasteSType">
<summary>
物品小类别
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2CDto.Weight">
<summary>
重量,单位KG
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2CDto.TrashCode">
<summary>
垃圾桶编号
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2CDto.Time">
<summary>
上报时间
</summary>
</member>
<member name="T:Waste.Application.ResultListByEquS2SDto">
<summary>
投放记录列表
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2SDto.CreateTime">
<summary>
上报时间
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2SDto.Id">
<summary>
测量记录ID
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquS2SDto.GrossWeight">
<summary>
毛重
</summary>
</member>
<member name="T:Waste.Application.ResultListByEquC2SDto">
<summary>
查询投放记录
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquC2SDto.offset">
<summary>
当前页
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquC2SDto.limit">
<summary>
每页显示的数量
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquC2SDto.StartTime">
<summary>
开始时间
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquC2SDto.EndTime">
<summary>
结束时间
</summary>
</member>
<member name="P:Waste.Application.ResultListByEquC2SDto.DeviceId">
<summary>
设备ID
</summary>
</member>
<member name="P:Waste.Application.ResultList.BusinessName">
<summary>
商户名称
@ -1751,7 +1831,7 @@
</member>
<member name="P:Waste.Application.A8Package.OpUser">
<summary>
操作员
操作员
</summary>
</member>
<member name="T:Waste.Application.A8MyPackage">
@ -2019,6 +2099,13 @@
<param name="data"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.IResultService.GetListByEquAsync(Waste.Application.ResultListByEquC2SDto)">
<summary>
查询历史投放记录
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="T:Waste.Application.ResultInfos.ResultAppService">
<summary>
投放记录
@ -2045,6 +2132,13 @@
<param name="data"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ResultInfos.ResultAppService.GetListByEquAsync(Waste.Application.ResultListByEquC2SDto)">
<summary>
查询历史投放记录
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="T:Waste.Application.ResultService">
<summary>
投放记录管理
@ -2057,6 +2151,13 @@
<param name="param"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ResultService.GetListByEquAsync(Waste.Application.ResultListByEquC2SDto)">
<summary>
查询历史投放记录
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:Waste.Application.ResultService.InsertResultByWifiAsync(Waste.Application.WifiPackage)">
<summary>
wifi模块测量结果增加

View File

@ -21,6 +21,16 @@
<input type="text" class="layui-input" name="Name" id="Name" placeholder="请输入设备名称" />
</div>
</div>
<div class="layui-inline">
<div class="layui-input-inline">
<select id="poststatus">
<option value="">请选择状态</option>
<option value="-1">未上报</option>
<option value="0">上报失败</option>
<option value="1">上报成功</option>
</select>
</div>
</div>
<div class="layui-inline">
<button class="btn btn-primary btn-lg js-search" type="button">查询</button>
<button class="btn btn-primary btn-lg js-add" type="button">添加</button>
@ -138,6 +148,10 @@
"Name": 'Name',
"Type": QueryCond.Like,
"Value": $("#Name").val()
},{
"Name": 'poststatus',
"Type": QueryCond.Equal,
"Value": $("#poststatus").val()
}];
var starttime = $("#time").val();
if (starttime != "") {

File diff suppressed because one or more lines are too long