12 changed files with 16823 additions and 27 deletions
-
19src/Shentun.Peis.Application.Contracts/AsbitemMutualExclusions/GetAsbitemIsMutualExclusionDto.cs
-
11src/Shentun.Peis.Application.Contracts/AsbitemMutualExclusions/GetAsbitemIsMutualExclusionInputDto.cs
-
38src/Shentun.Peis.Application.Contracts/AsbitemMutualExclusions/GetAsbitemMutualExclusionByAsbitemIdDto.cs
-
19src/Shentun.Peis.Application.Contracts/AsbitemMutualExclusions/UpdateAsbitemMutualExclusionInputDto.cs
-
155src/Shentun.Peis.Application/AsbitemMutualExclusions/AsbitemMutualExclusionAppService.cs
-
51src/Shentun.Peis.Application/ChargeReports/ChargeReportAppService.cs
-
38src/Shentun.Peis.Domain/AsbitemMutualExclusions/AsbitemMutualExclusion.cs
-
35src/Shentun.Peis.EntityFrameworkCore/DbMapping/AsbitemMutualExclusions/AsbitemMutualExclusionDbMapping.cs
-
4src/Shentun.Peis.EntityFrameworkCore/EntityFrameworkCore/PeisDbContext.cs
-
16419src/Shentun.Peis.EntityFrameworkCore/Migrations/20251121025756_create_table_asbitem_mutual_exclusion.Designer.cs
-
33src/Shentun.Peis.EntityFrameworkCore/Migrations/20251121025756_create_table_asbitem_mutual_exclusion.cs
-
28src/Shentun.Peis.EntityFrameworkCore/Migrations/PeisDbContextModelSnapshot.cs
@ -0,0 +1,19 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace Shentun.Peis.AsbitemMutualExclusions |
|||
{ |
|||
public class GetAsbitemIsMutualExclusionDto |
|||
{ |
|||
/// <summary>
|
|||
/// 是否有互斥项目
|
|||
/// </summary>
|
|||
public char IsMutualExclusion { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 互斥信息
|
|||
/// </summary>
|
|||
public string Message { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,11 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace Shentun.Peis.AsbitemMutualExclusions |
|||
{ |
|||
public class GetAsbitemIsMutualExclusionInputDto |
|||
{ |
|||
public List<Guid> AsbitemIds { get; set; } = new List<Guid>(); |
|||
} |
|||
} |
|||
@ -0,0 +1,38 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace Shentun.Peis.AsbitemMutualExclusions |
|||
{ |
|||
public class GetAsbitemMutualExclusionByAsbitemIdDto |
|||
{ |
|||
/// <summary>
|
|||
/// 组合项目id
|
|||
/// </summary>
|
|||
public Guid AsbitemId { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 组合项目名称
|
|||
/// </summary>
|
|||
public string AsbitemName { get; set; } |
|||
|
|||
|
|||
/// <summary>
|
|||
/// 互斥的项目集合
|
|||
/// </summary>
|
|||
public List<GetAsbitemMutualExclusionByAsbitemIdDtoDetail> Details { get; set; } = new List<GetAsbitemMutualExclusionByAsbitemIdDtoDetail>(); |
|||
} |
|||
|
|||
public class GetAsbitemMutualExclusionByAsbitemIdDtoDetail |
|||
{ |
|||
/// <summary>
|
|||
/// 互斥的组合项目id
|
|||
/// </summary>
|
|||
public Guid MutualExclusionAsbitemId { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 互斥组合项目名称
|
|||
/// </summary>
|
|||
public string MutualExclusionAsbitemName { get; set; } |
|||
} |
|||
} |
|||
@ -0,0 +1,19 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
|
|||
namespace Shentun.Peis.AsbitemMutualExclusions |
|||
{ |
|||
public class UpdateAsbitemMutualExclusionInputDto |
|||
{ |
|||
/// <summary>
|
|||
/// 当前组合项目id
|
|||
/// </summary>
|
|||
public Guid AsbitemId { get; set; } |
|||
|
|||
/// <summary>
|
|||
/// 互斥的组合项目id 集合 传所有,不是增加的id
|
|||
/// </summary>
|
|||
public List<Guid> MutualExclusionAsbitemIds { get; set; } = new List<Guid>(); |
|||
} |
|||
} |
|||
@ -0,0 +1,155 @@ |
|||
using Microsoft.AspNetCore.Authorization; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using NPOI.DDF; |
|||
using Shentun.Peis.Asbitems; |
|||
using Shentun.Peis.Models; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.Abp.Domain.Repositories; |
|||
|
|||
namespace Shentun.Peis.AsbitemMutualExclusions |
|||
{ |
|||
/// <summary>
|
|||
/// 组合项目对应的互斥项目
|
|||
/// </summary>
|
|||
[ApiExplorerSettings(GroupName = "Work")] |
|||
[Authorize] |
|||
public class AsbitemMutualExclusionAppService : ApplicationService |
|||
{ |
|||
private readonly IRepository<AsbitemMutualExclusion> _asbitemMutualExclusionRepository; |
|||
private readonly IRepository<Asbitem, Guid> _asbitemRepository; |
|||
|
|||
public AsbitemMutualExclusionAppService( |
|||
IRepository<AsbitemMutualExclusion> asbitemMutualExclusionRepository, |
|||
IRepository<Asbitem, Guid> asbitemRepository) |
|||
{ |
|||
_asbitemMutualExclusionRepository = asbitemMutualExclusionRepository; |
|||
_asbitemRepository = asbitemRepository; |
|||
} |
|||
|
|||
/// <summary>
|
|||
/// 查询项目是否有互斥关系
|
|||
/// </summary>
|
|||
/// <param name="input"></param>
|
|||
/// <returns></returns>
|
|||
[HttpPost("api/app/AsbitemMutualExclusion/GetAsbitemIsMutualExclusion")] |
|||
public async Task<GetAsbitemIsMutualExclusionDto> GetAsbitemIsMutualExclusionAsync(GetAsbitemIsMutualExclusionInputDto input) |
|||
{ |
|||
var result = new GetAsbitemIsMutualExclusionDto |
|||
{ |
|||
IsMutualExclusion = 'N', |
|||
Message = "" |
|||
}; |
|||
|
|||
|
|||
if (!input.AsbitemIds.Any()) |
|||
throw new UserFriendlyException("项目不能为空"); |
|||
|
|||
var query = from asbitemMutualExclusion in await _asbitemMutualExclusionRepository.GetQueryableAsync() |
|||
join asbitem in await _asbitemRepository.GetQueryableAsync() on asbitemMutualExclusion.AsbitemId equals asbitem.Id |
|||
join mutualExclusionAsbitem in await _asbitemRepository.GetQueryableAsync() on asbitemMutualExclusion.MutualExclusionAsbitemId equals mutualExclusionAsbitem.Id |
|||
select new |
|||
{ |
|||
asbitemMutualExclusion, |
|||
asbitemName = asbitem.DisplayName, |
|||
mutualExclusionAsbitemName = mutualExclusionAsbitem.DisplayName |
|||
}; |
|||
|
|||
List<string> mutualExclusionMessageList = new List<string>(); |
|||
|
|||
foreach (var asbitemId in input.AsbitemIds) |
|||
{ |
|||
var mutualExclusionList = query.Where(m => m.asbitemMutualExclusion.AsbitemId == asbitemId).ToList(); |
|||
if (mutualExclusionList.Any()) |
|||
{ |
|||
foreach (var mutualExclusionItem in mutualExclusionList) |
|||
{ |
|||
if (input.AsbitemIds.Contains(mutualExclusionItem.asbitemMutualExclusion.MutualExclusionAsbitemId)) |
|||
{ |
|||
mutualExclusionMessageList.Add($"项目:【{mutualExclusionItem.mutualExclusionAsbitemName}】跟【{mutualExclusionItem.asbitemName}】互斥"); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
if (mutualExclusionMessageList.Any()) |
|||
{ |
|||
result.IsMutualExclusion = 'Y'; |
|||
result.Message = string.Join("__", mutualExclusionMessageList); |
|||
} |
|||
|
|||
return result; |
|||
} |
|||
|
|||
|
|||
/// <summary>
|
|||
/// 更新互斥项目
|
|||
/// </summary>
|
|||
/// <returns></returns>
|
|||
[HttpPost("api/app/AsbitemMutualExclusion/UpdateAsbitemMutualExclusion")] |
|||
public async Task UpdateAsbitemMutualExclusionAsync(UpdateAsbitemMutualExclusionInputDto input) |
|||
{ |
|||
//删除
|
|||
await _asbitemMutualExclusionRepository.DeleteAsync(d => d.AsbitemId == input.AsbitemId); |
|||
if (input.MutualExclusionAsbitemIds.Any()) |
|||
{ |
|||
List<AsbitemMutualExclusion> asbitemMutualExclusionList = new List<AsbitemMutualExclusion>(); |
|||
|
|||
foreach (var item in input.MutualExclusionAsbitemIds) |
|||
{ |
|||
asbitemMutualExclusionList.Add(new AsbitemMutualExclusion |
|||
{ |
|||
AsbitemId = input.AsbitemId, |
|||
MutualExclusionAsbitemId = item |
|||
}); |
|||
} |
|||
|
|||
await _asbitemMutualExclusionRepository.InsertManyAsync(asbitemMutualExclusionList); |
|||
} |
|||
} |
|||
|
|||
|
|||
/// <summary>
|
|||
/// 查询当前组合项目的互斥项目
|
|||
/// </summary>
|
|||
/// <returns></returns>
|
|||
[HttpPost("api/app/AsbitemMutualExclusion/GetAsbitemMutualExclusionByAsbitemId")] |
|||
public async Task<GetAsbitemMutualExclusionByAsbitemIdDto> GetAsbitemMutualExclusionByAsbitemIdAsync(AsbitemIdInputDto input) |
|||
{ |
|||
var result = new GetAsbitemMutualExclusionByAsbitemIdDto(); |
|||
|
|||
var query = (from asbitemMutualExclusion in await _asbitemMutualExclusionRepository.GetQueryableAsync() |
|||
join asbitem in await _asbitemRepository.GetQueryableAsync() on asbitemMutualExclusion.AsbitemId equals asbitem.Id |
|||
join mutualExclusionAsbitem in await _asbitemRepository.GetQueryableAsync() on asbitemMutualExclusion.MutualExclusionAsbitemId equals mutualExclusionAsbitem.Id |
|||
where asbitemMutualExclusion.AsbitemId == input.AsbitemId |
|||
select new |
|||
{ |
|||
asbitemMutualExclusion, |
|||
asbitemName = asbitem.DisplayName, |
|||
mutualExclusionAsbitemName = mutualExclusionAsbitem.DisplayName |
|||
}).ToList(); |
|||
|
|||
if (query.Any()) |
|||
{ |
|||
result.AsbitemId = query.FirstOrDefault().asbitemMutualExclusion.AsbitemId; |
|||
result.AsbitemName = query.FirstOrDefault().asbitemName; |
|||
result.Details = query.Select(s => new GetAsbitemMutualExclusionByAsbitemIdDtoDetail |
|||
{ |
|||
MutualExclusionAsbitemId = s.asbitemMutualExclusion.MutualExclusionAsbitemId, |
|||
MutualExclusionAsbitemName = s.mutualExclusionAsbitemName |
|||
}).ToList(); |
|||
} |
|||
else |
|||
{ |
|||
return null; |
|||
} |
|||
|
|||
return result; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,38 @@ |
|||
using Shentun.Peis.Models; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.ComponentModel.DataAnnotations.Schema; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Domain.Entities; |
|||
|
|||
namespace Shentun.Peis.Models |
|||
{ |
|||
/// <summary>
|
|||
/// 组合项目对应的互斥项目
|
|||
/// </summary>
|
|||
[Table("asbitem_mutual_exclusion")] |
|||
public class AsbitemMutualExclusion : Entity, IHasConcurrencyStamp |
|||
{ |
|||
[Key] |
|||
[Column("asbitem_id")] |
|||
public Guid AsbitemId { get; set; } |
|||
/// <summary>
|
|||
/// 项目编码
|
|||
/// </summary>
|
|||
[Key] |
|||
[Column("mutual_exclusion_asbitem_id")] |
|||
public Guid MutualExclusionAsbitemId { get; set; } |
|||
|
|||
[Column("concurrency_stamp")] |
|||
public string ConcurrencyStamp { get; set; } |
|||
|
|||
|
|||
public override object[] GetKeys() |
|||
{ |
|||
return new object[] { AsbitemId, MutualExclusionAsbitemId }; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
using Microsoft.EntityFrameworkCore.Metadata.Builders; |
|||
using Microsoft.EntityFrameworkCore; |
|||
using Shentun.Peis.Models; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using System.Threading.Tasks; |
|||
using Shentun.Peis.EntityFrameworkCore; |
|||
|
|||
namespace Shentun.Peis.DbMapping |
|||
{ |
|||
|
|||
internal class AsbitemMutualExclusionDbMapping : IEntityTypeConfiguration<AsbitemMutualExclusion> |
|||
{ |
|||
public void Configure(EntityTypeBuilder<AsbitemMutualExclusion> entity) |
|||
{ |
|||
|
|||
entity.HasKey(e => new { e.AsbitemId, e.MutualExclusionAsbitemId }) |
|||
.HasName("pk_asbitem_mutual_exclusion_asbitem_id_mutual_exclusion_asbitem_id"); |
|||
|
|||
entity.HasComment("组合项目对应的互斥项目"); |
|||
|
|||
entity.Property(t => t.AsbitemId).HasComment("组合项目id").IsRequired().IsFixedLength(); ; |
|||
|
|||
entity.Property(e => e.MutualExclusionAsbitemId).HasComment("互斥的组合项目id").IsFixedLength().IsRequired(); |
|||
|
|||
|
|||
|
|||
entity.ConfigureByConvention(); |
|||
|
|||
|
|||
} |
|||
} |
|||
} |
|||
16419
src/Shentun.Peis.EntityFrameworkCore/Migrations/20251121025756_create_table_asbitem_mutual_exclusion.Designer.cs
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,33 @@ |
|||
using System; |
|||
using Microsoft.EntityFrameworkCore.Migrations; |
|||
|
|||
#nullable disable |
|||
|
|||
namespace Shentun.Peis.Migrations |
|||
{ |
|||
public partial class create_table_asbitem_mutual_exclusion : Migration |
|||
{ |
|||
protected override void Up(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.CreateTable( |
|||
name: "asbitem_mutual_exclusion", |
|||
columns: table => new |
|||
{ |
|||
asbitem_id = table.Column<Guid>(type: "uuid", fixedLength: true, nullable: false, comment: "组合项目id"), |
|||
mutual_exclusion_asbitem_id = table.Column<Guid>(type: "uuid", fixedLength: true, nullable: false, comment: "互斥的组合项目id"), |
|||
concurrency_stamp = table.Column<string>(type: "character varying(40)", maxLength: 40, nullable: true) |
|||
}, |
|||
constraints: table => |
|||
{ |
|||
table.PrimaryKey("pk_asbitem_mutual_exclusion_asbitem_id_mutual_exclusion_asbitem_id", x => new { x.asbitem_id, x.mutual_exclusion_asbitem_id }); |
|||
}, |
|||
comment: "组合项目对应的互斥项目"); |
|||
} |
|||
|
|||
protected override void Down(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.DropTable( |
|||
name: "asbitem_mutual_exclusion"); |
|||
} |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue