baotian
2024-06-04 b959135a1139fb66646523d92e5bd20c5910f283
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
134
using Furion.DatabaseAccessor;
using Furion.DatabaseAccessor.Extensions;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
using Furion.FriendlyException;
using iWare.Wms.Core;
using Mapster;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using System.Linq.Dynamic.Core;
 
namespace iWare.Wms.Application
{
    /// <summary>
    /// 设备刀具实时监控信息服务
    /// </summary>
    [ApiDescriptionSettings("刀具相关", Name = "KnifeToolEquipmentMonitor", Order = 102)]
    [Route("api/[Controller]")]
    public class KnifeToolEquipmentMonitorService : IKnifeToolEquipmentMonitorService, IDynamicApiController, ITransient
    {
        private readonly IRepository<KnifeToolEquipmentMonitor,MasterDbContextLocator> _knifeToolEquipmentMonitorRep;
        private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
        private readonly IRepository<KnifeToolEquipmentInfo, MasterDbContextLocator> _knifeToolEquipmentInfoRep;
 
 
        public KnifeToolEquipmentMonitorService(
            IRepository<KnifeToolEquipmentMonitor,MasterDbContextLocator> knifeToolEquipmentMonitorRep,
IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
            IRepository<KnifeToolEquipmentInfo, MasterDbContextLocator> knifeToolEquipmentInfoRep
        )
        {
            _knifeToolEquipmentMonitorRep = knifeToolEquipmentMonitorRep;
            _equipmentBaseInfoRep = equipmentBaseInfoRep;
            _knifeToolEquipmentInfoRep = knifeToolEquipmentInfoRep;
        }
 
        /// <summary>
        /// 分页查询设备刀具实时监控信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("page")]
        public async Task<PageResult<KnifeToolEquipmentMonitorOutput>> Page([FromQuery] KnifeToolEquipmentMonitorSearch input)
        {
            var knifeToolEquipmentMonitors = await (from knife in _knifeToolEquipmentMonitorRep.DetachedEntities
                                                    join eqbaseinfo in _equipmentBaseInfoRep.DetachedEntities on knife.EquipmentID equals eqbaseinfo.EquipmentId into eqjoinEmpty
                                                    from eqbaseinfo2 in eqjoinEmpty.DefaultIfEmpty()
                                                    join info in _knifeToolEquipmentInfoRep.DetachedEntities on knife.EquipmentID equals info.EquipmentID into infoempty
                                                    from infoempty2 in infoempty.DefaultIfEmpty()
                                                    where knife.EquipmentID ==  (string.IsNullOrEmpty(input.EquipmentID)? knife.EquipmentID: input.EquipmentID)
                                                    where knife.WorkingProcedure == (string.IsNullOrEmpty(input.WorkingProcedure) ? knife.WorkingProcedure : input.WorkingProcedure)
                                                    where infoempty2.KnifeToolID == (string.IsNullOrEmpty(input.KnifeToolID) ? infoempty2.KnifeToolID : input.KnifeToolID)
                                                    select new KnifeToolEquipmentMonitorOutput
                                                    {
                                                        EquipmentID= knife.EquipmentID,
                                                        EquipmentName= eqbaseinfo2.EquipmentName,
                                                        WorkingProcedure = knife.WorkingProcedure,
                                                        Remarks1 = knife.Remarks1,
                                                        Remarks2 = knife.Remarks2,
                                                        Remarks3 = knife.Remarks3,
                                                        Id = knife.Id,
                                                    }).Distinct()
                                     .OrderBy(PageInputOrder.OrderBuilder<KnifeToolEquipmentMonitorSearch>(input))
                                     .ProjectToType<KnifeToolEquipmentMonitorOutput>()
                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
            return knifeToolEquipmentMonitors;
 
        }
 
        /// <summary>
        /// 增加设备刀具实时监控信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("add")]
        public async Task Add(AddKnifeToolEquipmentMonitorInput input)
        {
            var isExist = await _knifeToolEquipmentMonitorRep.AnyAsync(u => u.EquipmentID == input.EquipmentID&&u.WorkingProcedure==input.WorkingProcedure, false);
            if (isExist) throw Oops.Oh($"设备[{input.EquipmentID}]工序[{input.WorkingProcedure}]在系统中已存在,不允许重复添加!");
            var knifeToolEquipmentMonitor = input.Adapt<KnifeToolEquipmentMonitor>();
            await _knifeToolEquipmentMonitorRep.InsertAsync(knifeToolEquipmentMonitor);
        }
 
        /// <summary>
        /// 删除设备刀具实时监控信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("delete")]
        public async Task Delete(DeleteKnifeToolEquipmentMonitorInput input)
        {
            var knifeToolEquipmentMonitor = await _knifeToolEquipmentMonitorRep.FirstOrDefaultAsync(u => u.Id == input.Id);
            await _knifeToolEquipmentMonitorRep.DeleteAsync(knifeToolEquipmentMonitor);
        }
 
        /// <summary>
        /// 更新设备刀具实时监控信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("edit")]
        public async Task Update(UpdateKnifeToolEquipmentMonitorInput input)
        {
            var isExist = await _knifeToolEquipmentMonitorRep.AnyAsync(u => u.Id == input.Id, false);
            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
 
            var knifeToolEquipmentMonitor = input.Adapt<KnifeToolEquipmentMonitor>();
            await _knifeToolEquipmentMonitorRep.UpdateAsync(knifeToolEquipmentMonitor,ignoreNullValues:true);
        }
 
        /// <summary>
        /// 获取设备刀具实时监控信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("detail")]
        public async Task<KnifeToolEquipmentMonitorOutput> Get([FromQuery] QueryeKnifeToolEquipmentMonitorInput input)
        {
            return (await _knifeToolEquipmentMonitorRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<KnifeToolEquipmentMonitorOutput>();
        }
 
        /// <summary>
        /// 获取设备刀具实时监控信息列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("list")]
        public async Task<List<KnifeToolEquipmentMonitorOutput>> List([FromQuery] KnifeToolEquipmentMonitorInput input)
        {
            return await _knifeToolEquipmentMonitorRep.DetachedEntities.ProjectToType<KnifeToolEquipmentMonitorOutput>().ToListAsync();
        }    
 
    }
}