hwh
2024-08-30 47ed1ba420ed01ea50e7f9a09247abd0deb531e1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
using Microsoft.AspNetCore.SignalR;
 
namespace WCS.Application;
 
/// <summary>
/// 报警信息表服务
/// </summary>
[ApiDescriptionSettings(ApplicationConst.GroupName, Order = 100)]
public class WcsAlarmInfoService : IDynamicApiController, ITransient
{
    private readonly SqlSugarRepository<WcsAlarmInfo> _wcsAlarmInfoRep;
    private readonly IHubContext<PlcHub, IPlcHub> _plcHubContext;
 
    public WcsAlarmInfoService(SqlSugarRepository<WcsAlarmInfo> wcsAlarmInfoRep, IHubContext<PlcHub, IPlcHub> plcHubContext)
    {
        _wcsAlarmInfoRep = wcsAlarmInfoRep;
        _plcHubContext = plcHubContext;
    }
 
    /// <summary>
    /// 分页查询报警信息表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Page")]
    [DisplayName("分页查询报警信息表")]
    public async Task<SqlSugarPagedList<WcsAlarmInfoOutput>> Page(PageWcsAlarmInfoInput input)
    {
        input.SearchKey = input.SearchKey?.Trim();
        var query = _wcsAlarmInfoRep.AsQueryable()
            .WhereIF(!string.IsNullOrEmpty(input.SearchKey), u =>
                u.PlcIP.Contains(input.SearchKey)
            )
            .WhereIF(!string.IsNullOrWhiteSpace(input.PlcIP), u => u.PlcIP.Contains(input.PlcIP.Trim()))
            .WhereIF(input.Status.HasValue, u => u.Status == input.Status)
            .WhereIF(input.Type.HasValue, u => u.Type == input.Type)
            .Select<WcsAlarmInfoOutput>();
        return await query.OrderBuilder(input).ToPagedListAsync(input.Page, input.PageSize);
    }
 
 
    /// <summary>
    /// 增加报警信息表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Add")]
    [DisplayName("增加报警信息表")]
    public async Task<long> Add(AddWcsAlarmInfoInput input)
    {
        var entity = input.Adapt<WcsAlarmInfo>();
        await _wcsAlarmInfoRep.InsertAsync(entity);
        return entity.Id;
    }
 
    /// <summary>
    /// 删除报警信息表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Delete")]
    [DisplayName("删除报警信息表")]
    public async Task Delete(DeleteWcsAlarmInfoInput input)
    {
        var entity = await _wcsAlarmInfoRep.GetFirstAsync(u => u.Id == input.Id) ?? throw Oops.Oh(ErrorCodeEnum.D1002);
        await _wcsAlarmInfoRep.FakeDeleteAsync(entity);   //假删除
        //await _wcsAlarmInfoRep.DeleteAsync(entity);   //真删除
    }
 
    /// <summary>
    /// 更新报警信息表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Update")]
    [DisplayName("更新报警信息表")]
    public async Task Update(UpdateWcsAlarmInfoInput input)
    {
        var entity = input.Adapt<WcsAlarmInfo>();
        await _wcsAlarmInfoRep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
    }
 
    /// <summary>
    /// 获取报警信息表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "Detail")]
    [DisplayName("获取报警信息表")]
    public async Task<WcsAlarmInfo> Detail([FromQuery] QueryByIdWcsAlarmInfoInput input)
    {
        return await _wcsAlarmInfoRep.GetFirstAsync(u => u.Id == input.Id);
    }
 
    /// <summary>
    /// 获取报警信息表列表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpGet]
    [ApiDescriptionSettings(Name = "List")]
    [DisplayName("获取报警信息表列表")]
    public async Task<List<WcsAlarmInfoOutput>> List([FromQuery] PageWcsAlarmInfoInput input)
    {
        return await _wcsAlarmInfoRep.AsQueryable()
            //.WhereIF(!input.Status.IsNullOrEmpty(), s => s.Status == input.Status)
            .Select<WcsAlarmInfoOutput>().ToListAsync();
    }
 
 
    /// <summary>
    /// 复位报警
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    [HttpPost]
    [ApiDescriptionSettings(Name = "Reset")]
    [DisplayName("复位报警")]
    public async Task Reset()
    {
        //测试推数据用的
        await _plcHubContext.Clients.All.PublicAlarm(new WcsAlarmInfoOutput() { Id = new Random().Next(), StationNum = "205", AlarmCode = "MB102", AlarmName = "有物品遮挡", AlarmTime = DateTime.Now });
        //throw Oops.Bah("开发中");
 
    }
 
 
}