liuying
2025-09-24 6efa5f6ca7536a37e3af3592bb42db63bcb8371d
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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;
using System.Linq.Dynamic.Core;
 
namespace iWare.Wms.Application
{
    /// <summary>
    /// 设备刀具操作日志表服务
    /// </summary>
    [ApiDescriptionSettings("刀具相关", Name = "KnifeToolEquipmentUpdateLog", Order = 103)]
    [Route("api/[Controller]")]
    public class KnifeToolEquipmentUpdateLogService : IKnifeToolEquipmentUpdateLogService, IDynamicApiController, ITransient
    {
        private readonly IRepository<KnifeToolEquipmentUpdateLog,MasterDbContextLocator> _knifeToolEquipmentUpdateLogRep;
        private readonly IRepository<KnifeToolBaseInfo, MasterDbContextLocator> _knifeToolBaseInfoRep;
 
 
        public KnifeToolEquipmentUpdateLogService(
            IRepository<KnifeToolEquipmentUpdateLog,MasterDbContextLocator> knifeToolEquipmentUpdateLogRep
            , IRepository<KnifeToolBaseInfo, MasterDbContextLocator> knifeToolBaseInfoRep)
        {
            _knifeToolEquipmentUpdateLogRep = knifeToolEquipmentUpdateLogRep;
            _knifeToolBaseInfoRep = knifeToolBaseInfoRep;
        }
 
        /// <summary>
        /// 分页查询设备刀具操作日志表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("page")]
        public async Task<PageResult<KnifeToolEquipmentUpdateLogOutput>> Page([FromQuery] KnifeToolEquipmentUpdateLogSearch input)
        {
            var knifeToolEquipmentUpdateLogs = await (from log in _knifeToolEquipmentUpdateLogRep.DetachedEntities
                     join baseinfo in _knifeToolBaseInfoRep.DetachedEntities on log.KnifeToolID equals baseinfo.KnifeToolID into baseinfo2
                     from baseinfo3 in baseinfo2.DefaultIfEmpty()
                     select new KnifeToolEquipmentUpdateLogOutput
                     {
                         EquipmentID = log.EquipmentID,
                         WorkingProcedure = log.WorkingProcedure,
                         Station = log.Station,
                         KnifeToolID = log.KnifeToolID,
                         KnifeToolName = log.KnifeToolName,
                         KnifeToolLife = (baseinfo3 == null ? 0 : baseinfo3.KnifeToolLife),
                         KnifeToolChangeAlertThreshold= (baseinfo3 == null ? 0 : baseinfo3.KnifeToolChangeAlertThreshold),
                         StartLife = log.StartLife.Value,
                         CurrentLife = log.CurrentLife.Value,
                         ResidueLife = log.ResidueLife.Value,
                         ChangeStartTime = log.ChangeStartTime,
                         ChangeEndTime = log.ChangeEndTime,
                         OperateDesc = log.OperateDesc,
                         OperateType = log.OperateType,
                         Remarks1 = log.Remarks1,
                         Remarks2 = log.Remarks2,
                         Remarks3 = log.Remarks3,
                         Id = log.Id
 
                     })
                   .ProjectToType<KnifeToolEquipmentUpdateLogOutput>()
                   .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.EquipmentID == input.EquipmentID)
                                     .ToADPagedListAsync(input.PageNo, input.PageSize);
            //var knifeToolEquipmentUpdateLogs = await _knifeToolEquipmentUpdateLogRep.DetachedEntities
            //    .GroupJoin(_knifeToolBaseInfoRep.DetachedEntities, a => a.KnifeToolID, b => b.KnifeToolID, (a, b) => new { a,b})
            //     .SelectMany(ab => ab.b.DefaultIfEmpty(), (ab, b) => new { ab.a, b.KnifeToolLife })
            //    .Where(!string.IsNullOrEmpty(input.EquipmentID), u => u.a.EquipmentID == input.EquipmentID)
            //                         //.Where(!string.IsNullOrEmpty(input.WorkingProcedure), u => u.WorkingProcedure == input.WorkingProcedure)
            //                         //.Where(!string.IsNullOrEmpty(input.Station), u => u.Station == input.Station)
            //                         .Where(!string.IsNullOrEmpty(input.KnifeToolID), u => u.a.KnifeToolID == input.KnifeToolID)
            //                         .Where(!string.IsNullOrEmpty(input.OperateType), u => u.a.OperateType == input.OperateType)
            //                         .Where(!string.IsNullOrEmpty(input.KnifeToolName), u => u.a.KnifeToolName == input.KnifeToolName)
            //                         ////.Where(input.StartLife != null, u => u.StartLife == input.StartLife)
            //                         ////.Where(input.CurrentLife != null, u => u.CurrentLife == input.CurrentLife)
            //                         ////.Where(input.ResidueLife, u => u.ResidueLife == input.ResidueLife)
            //                         .Where(input.ChangeStartTimeStart != null, u => u.a.ChangeStartTime >= input.ChangeStartTimeStart)
            //                         .Where(input.ChangeStartTimeEnd != null, u => u.a.ChangeStartTime < input.ChangeStartTimeEnd.Value.AddDays(1))//用日期查询
            //                                                                                                                                       //.Where(input.ChangeEndTime != null, u => u.ChangeEndTime == input.ChangeEndTime)
            //                                                                                                                                       //.Where(!string.IsNullOrEmpty(input.OperateDesc), u => u.OperateDesc == input.OperateDesc)
            //                                                                                                                                       //.Where(!string.IsNullOrEmpty(input.OperateType), u => u.OperateType == input.OperateType)
            //                                                                                                                                       //.Where(!string.IsNullOrEmpty(input.Remarks1), u => u.Remarks1 == input.Remarks1)
            //                                                                                                                                       //.Where(!string.IsNullOrEmpty(input.Remarks2), u => u.Remarks2 == input.Remarks2)
            //                                                                                                                                       //.Where(!string.IsNullOrEmpty(input.Remarks3), u => u.Remarks3 == input.Remarks3)
            //                         .OrderBy(PageInputOrder.OrderBuilder<KnifeToolEquipmentUpdateLogSearch>(input))
            //                         //.ProjectToType<KnifeToolEquipmentUpdateLogOutput>()
            //                         .ToADPagedListAsync(input.PageNo, input.PageSize);
            ////return knifeToolEquipmentUpdateLogs;
            return knifeToolEquipmentUpdateLogs;
        }
 
        /// <summary>
        /// 增加设备刀具操作日志表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("add")]
        public async Task Add(AddKnifeToolEquipmentUpdateLogInput input)
        {
            var knifeToolEquipmentUpdateLog = input.Adapt<KnifeToolEquipmentUpdateLog>();
            await _knifeToolEquipmentUpdateLogRep.InsertAsync(knifeToolEquipmentUpdateLog);
        }
 
        /// <summary>
        /// 删除设备刀具操作日志表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("delete")]
        public async Task Delete(DeleteKnifeToolEquipmentUpdateLogInput input)
        {
            var knifeToolEquipmentUpdateLog = await _knifeToolEquipmentUpdateLogRep.FirstOrDefaultAsync(u => u.Id == input.Id);
            await _knifeToolEquipmentUpdateLogRep.DeleteAsync(knifeToolEquipmentUpdateLog);
        }
 
        /// <summary>
        /// 更新设备刀具操作日志表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpPost("edit")]
        public async Task Update(UpdateKnifeToolEquipmentUpdateLogInput input)
        {
            var isExist = await _knifeToolEquipmentUpdateLogRep.AnyAsync(u => u.Id == input.Id, false);
            if (!isExist) throw Oops.Oh(ErrorCode.D3000);
 
            var knifeToolEquipmentUpdateLog = input.Adapt<KnifeToolEquipmentUpdateLog>();
            await _knifeToolEquipmentUpdateLogRep.UpdateAsync(knifeToolEquipmentUpdateLog,ignoreNullValues:true);
        }
 
        /// <summary>
        /// 获取设备刀具操作日志表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("detail")]
        public async Task<KnifeToolEquipmentUpdateLogOutput> Get([FromQuery] QueryeKnifeToolEquipmentUpdateLogInput input)
        {
            return (await _knifeToolEquipmentUpdateLogRep.DetachedEntities.FirstOrDefaultAsync(u => u.Id == input.Id)).Adapt<KnifeToolEquipmentUpdateLogOutput>();
        }
 
        /// <summary>
        /// 获取设备刀具操作日志表列表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        [HttpGet("list")]
        public async Task<List<KnifeToolEquipmentUpdateLogOutput>> List([FromQuery] KnifeToolEquipmentUpdateLogInput input)
        {
            return await _knifeToolEquipmentUpdateLogRep.DetachedEntities.ProjectToType<KnifeToolEquipmentUpdateLogOutput>().ToListAsync();
        }    
 
    }
}