schangxiang@126.com
2025-05-13 25246d39da4b74b54a844b36d8a50752917b81cc
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
using CMS.Plugin.HIAWms.Domain.WmsTask; 
using CMS.Plugin.HIAWms.EntityFrameworkCore.Extensions; 
using CmsQueryExtensions.Extension; 
using Microsoft.EntityFrameworkCore; 
using System.Linq.Dynamic.Core; 
using System.Linq.Expressions; 
using Volo.Abp.Domain.Repositories.EntityFrameworkCore; 
using Volo.Abp.EntityFrameworkCore; 
 
 
namespace CMS.Plugin.HIAWms.EntityFrameworkCore.Repositories; 
 
/// <summary> 
/// Wms任务管理仓储实现 
/// </summary> 
public class EfCoreWmsTaskRepository : EfCoreRepository<ICMSPluginDbContext, WmsTask, Guid>, IWmsTaskRepository 
    /// <summary> 
    /// Initializes a new instance of the <see cref="EfCoreWmsTaskRepository"/> class. 
    /// </summary> 
    /// <param name="dbContextProvider">The database context provider.</param> 
    public EfCoreWmsTaskRepository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider) 
        : base(dbContextProvider) 
    { 
    } 
 
    /// <summary> 
    /// 按照名称查找Wms任务管理 
    /// </summary> 
    /// <param name="taskNo"></param> 
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public virtual async Task<WmsTask> FindByNameAsync(string taskNo, CancellationToken cancellationToken = default) 
    { 
        return await (await GetDbSetAsync()) 
            .IncludeDetails() 
            .Where(x => !x.IsDeleted) 
            .OrderBy(t => t.Sort) 
            .FirstOrDefaultAsync(t => t.TaskNo == taskNo, GetCancellationToken(cancellationToken)); 
    } 
 
    /// <summary> 
    /// 验证名称是否存在Wms任务管理 
    /// </summary> 
    /// <param name="taskNo">校验值</param> 
    /// <param name="id"></param> 
    /// <returns></returns> 
    public async Task<bool> NameExistAsync(string taskNo, Guid? id = null) 
    { 
        return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.TaskNo == taskNo); 
    } 
 
    /// <summary> 
    /// 获取最大排序Wms任务管理 
    /// </summary> 
    /// <returns></returns> 
    public async Task<int> GetMaxSortAsync() 
    { 
        var hasAny = await (await GetQueryableAsync()) 
            .Where(x => !x.IsDeleted).AnyAsync(); 
        if (!hasAny) 
        { 
            return 1; 
        } 
 
        var sort = await (await GetQueryableAsync()) 
            .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort); 
        return sort + 1; 
    } 
 
    /// <summary> 
    /// 获取分页列表Wms任务管理 
    /// </summary> 
    /// <param name="whereConditions"></param> 
    /// <param name="sorting"></param> 
    /// <param name="maxResultCount"></param> 
    /// <param name="skipCount"></param> 
    /// <param name="includeDetails"></param> 
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public async Task<List<WmsTask>> GetListAsync(FunReturnResultModel<Expression<Func<WmsTask, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default) 
    { 
        return await (await GetDbSetAsync()) 
            .IncludeDetails(includeDetails) 
            .WhereIf(whereConditions != null, whereConditions.data) 
            .Where(x => !x.IsDeleted) 
            .OrderByDescending(x=>x.CreationTime) 
            .PageBy(skipCount, maxResultCount) 
            .ToListAsync(GetCancellationToken(cancellationToken)); 
    } 
 
    /// <summary> 
    /// 获取总数Wms任务管理 
    /// </summary> 
    /// <param name="whereConditions"></param> 
    /// <param name="cancellationToken"></param> 
    /// <returns></returns> 
    public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<WmsTask, bool>>> whereConditions, CancellationToken cancellationToken = default) 
    { 
        return await (await GetQueryableAsync()) 
            .WhereIf(whereConditions != null, whereConditions.data) 
            .Where(x => !x.IsDeleted) 
            .CountAsync(cancellationToken: GetCancellationToken(cancellationToken)); 
    } 
 
 
    /// <inheritdoc /> 
    public override async Task<IQueryable<WmsTask>> WithDetailsAsync() 
    { 
        return (await GetQueryableAsync()) 
            .Where(x => !x.IsDeleted).IncludeDetails(); 
    } 
 
    /// <summary>
    /// 根据原料标识查询任务
    /// </summary>
    /// <param name="dataIdentifier"></param>
    /// <param name="cancellationToken"></param>
    /// <returns></returns>
    public async Task<WmsTask> QueryWmsTaskByDataIdentifierAasync(string dataIdentifier, CancellationToken cancellationToken = default)
    {
        return await (await GetDbSetAsync())
           .IncludeDetails()
           .Where(x => !x.IsDeleted)
           .OrderByDescending(x=>x.CreationTime)
           .FirstOrDefaultAsync(t => t.MutableParam2 == dataIdentifier, GetCancellationToken(cancellationToken));
    }