You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.8 KiB
94 lines
3.8 KiB
using Shentun.Peis.CustomerOrgGroups;
|
|
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.Domain.Repositories;
|
|
using Volo.Abp.Domain.Services;
|
|
|
|
namespace Shentun.Peis.CustomerOrgGroupDetails
|
|
{
|
|
public class CustomerOrgGroupDetailManager : DomainService
|
|
{
|
|
private readonly IRepository<CustomerOrgGroupDetail> _repository;
|
|
private readonly IRepository<CustomerOrgGroup, Guid> _customerOrgGroupRepository;
|
|
private readonly IRepository<CustomerOrgRegister, Guid> _customerOrgRegisterRepository;
|
|
private readonly IRepository<CustomerOrg, Guid> _customerOrgRepository;
|
|
public CustomerOrgGroupDetailManager(
|
|
IRepository<CustomerOrgGroupDetail> repository,
|
|
IRepository<CustomerOrg, Guid> customerOrgRepository,
|
|
IRepository<CustomerOrgGroup, Guid> customerOrgGroupRepository,
|
|
IRepository<CustomerOrgRegister, Guid> customerOrgRegisterRepository
|
|
)
|
|
{
|
|
this._repository = repository;
|
|
this._customerOrgRepository = customerOrgRepository;
|
|
this._customerOrgGroupRepository = customerOrgGroupRepository;
|
|
this._customerOrgRegisterRepository = customerOrgRegisterRepository;
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 删除单位分组明细
|
|
/// </summary>
|
|
/// <param name="CustomerOrgGroupId">单位分组ID</param>
|
|
/// <returns></returns>
|
|
/// <exception cref="UserFriendlyException"></exception>
|
|
public async Task CheckAndDeleteAsync(Guid CustomerOrgGroupId)
|
|
{
|
|
|
|
await CheckCustomerOrgStatus(CustomerOrgGroupId);
|
|
|
|
var customerOrgGroupDetailList = await _repository.GetListAsync(m => m.CustomerOrgGroupId == CustomerOrgGroupId);
|
|
if (customerOrgGroupDetailList.Any())
|
|
{
|
|
|
|
//删除单位分组明细
|
|
await _repository.DeleteManyAsync(customerOrgGroupDetailList);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 删除组合项目相关的明细
|
|
/// </summary>
|
|
/// <param name="AsbitemId">组合项目ID</param>
|
|
/// <returns></returns>
|
|
/// <exception cref="UserFriendlyException"></exception>
|
|
public async Task CheckAndDeleteInAsbitemIdAsync(Guid AsbitemId)
|
|
{
|
|
var customerOrgGroupDetailList = await _repository.GetListAsync(m => m.AsbitemId == AsbitemId);
|
|
if (customerOrgGroupDetailList.Any())
|
|
{
|
|
|
|
//删除组合项目相关的明细
|
|
await _repository.DeleteManyAsync(customerOrgGroupDetailList);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查单位状态是否可以使用 未启用和加锁和单位体检次数已完成,不允许操作
|
|
/// </summary>
|
|
/// <param name="CustomerOrgGroupId">单位分组ID</param>
|
|
/// <returns></returns>
|
|
private async Task CheckCustomerOrgStatus(Guid CustomerOrgGroupId)
|
|
{
|
|
var customerOrgGroup = (from a in await _customerOrgGroupRepository.GetQueryableAsync()
|
|
join b in await _customerOrgRegisterRepository.GetQueryableAsync() on a.CustomerOrgRegisterId equals b.Id
|
|
join c in await _customerOrgRepository.GetQueryableAsync() on b.CustomerOrgId equals c.Id
|
|
where a.Id == CustomerOrgGroupId && (c.IsLock == 'Y' || c.IsActive == 'N' || b.IsComplete == 'Y')
|
|
select c.DisplayName).FirstOrDefault();
|
|
if (!string.IsNullOrWhiteSpace(customerOrgGroup))
|
|
{
|
|
throw new UserFriendlyException($"单位{customerOrgGroup}未启用或者已锁定,无法操作!");
|
|
}
|
|
}
|
|
}
|
|
}
|