15 changed files with 1005 additions and 8 deletions
-
55src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateDto.cs
-
14src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/AppointScheduleTemplateIdInputDto.cs
-
50src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/CreateAppointScheduleTemplateDto.cs
-
55src/Shentun.WebPeis.Application.Contracts/AppointScheduleTemplates/UpdateAppointScheduleTemplateDto.cs
-
20src/Shentun.WebPeis.Application.Contracts/AuditedEntityDtoName.cs
-
19src/Shentun.WebPeis.Application.Contracts/UpdateManySortInputDto.cs
-
20src/Shentun.WebPeis.Application.Contracts/Users/UpdatePassWordDto.cs
-
107src/Shentun.WebPeis.Application/AppointScheduleTemplates/AppointScheduleTemplateAppService.cs
-
41src/Shentun.WebPeis.Application/Users/UserAppService.cs
-
131src/Shentun.WebPeis.Domain/AppointScheduleTemplates/AppointScheduleTemplateManager.cs
-
345src/Shentun.WebPeis.Domain/DataHelper.cs
-
117src/Shentun.WebPeis.Domain/EntityHelper.cs
-
13src/Shentun.WebPeis.Domain/IDisplayOrder.cs
-
7src/Shentun.WebPeis.Domain/Models/AppointScheduleTemplate.cs
-
19src/Shentun.WebPeis.Domain/UpdateSortManyDto.cs
@ -0,0 +1,55 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace Shentun.WebPeis.AppointScheduleTemplates |
||||
|
{ |
||||
|
public class AppointScheduleTemplateDto : AuditedEntityDtoName |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 主键
|
||||
|
/// </summary>
|
||||
|
public Guid AppointScheduleTemplateId { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 星期
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int WeekId { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午数量限制
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int AmNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午数量限制
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int PmNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 个人体检数量限制
|
||||
|
/// </summary>
|
||||
|
public int SingleNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午上班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? AmStartTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午下班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? AmStopTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午上班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? PmStartTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午下班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? PmStopTime { get; set; } |
||||
|
|
||||
|
public int DisplayOrder { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace Shentun.WebPeis.AppointScheduleTemplates |
||||
|
{ |
||||
|
public class AppointScheduleTemplateIdInputDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 主键
|
||||
|
/// </summary>
|
||||
|
public Guid AppointScheduleTemplateId { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,50 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace Shentun.WebPeis.AppointScheduleTemplates |
||||
|
{ |
||||
|
public class CreateAppointScheduleTemplateDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 星期
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int WeekId { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午数量限制
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int AmNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午数量限制
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int PmNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 个人体检数量限制
|
||||
|
/// </summary>
|
||||
|
public int SingleNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午上班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? AmStartTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午下班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? AmStopTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午上班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? PmStartTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午下班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? PmStopTime { get; set; } |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,55 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace Shentun.WebPeis.AppointScheduleTemplates |
||||
|
{ |
||||
|
public class UpdateAppointScheduleTemplateDto |
||||
|
{ |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 主键
|
||||
|
/// </summary>
|
||||
|
public Guid AppointScheduleTemplateId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 星期
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int WeekId { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午数量限制
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int AmNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午数量限制
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public int PmNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 个人体检数量限制
|
||||
|
/// </summary>
|
||||
|
public int SingleNumberLimit { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午上班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? AmStartTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 上午下班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? AmStopTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午上班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? PmStartTime { get; set; } |
||||
|
/// <summary>
|
||||
|
/// 下午下班时间
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public string? PmStopTime { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
using Volo.Abp.Application.Dtos; |
||||
|
|
||||
|
namespace Shentun.WebPeis |
||||
|
{ |
||||
|
public class AuditedEntityDtoName: AuditedEntityDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 创建者
|
||||
|
/// </summary>
|
||||
|
public string CreatorName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 最后修改者
|
||||
|
/// </summary>
|
||||
|
public string LastModifierName { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace Shentun.WebPeis |
||||
|
{ |
||||
|
public class UpdateManySortInputDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 需要修改的ID
|
||||
|
/// </summary>
|
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改方式:1 置顶 2 置底
|
||||
|
/// </summary>
|
||||
|
public int SortType { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Text; |
||||
|
|
||||
|
namespace Shentun.WebPeis.Users |
||||
|
{ |
||||
|
public class UpdatePassWordDto |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 旧密码
|
||||
|
/// </summary>
|
||||
|
public string OldPassWord { get; set; } |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 新密码
|
||||
|
/// </summary>
|
||||
|
public string NewPassWord { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,107 @@ |
|||||
|
using Microsoft.AspNetCore.Authorization; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; |
||||
|
using Shentun.WebPeis.Models; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Application.Services; |
||||
|
using Volo.Abp.Domain.Repositories; |
||||
|
|
||||
|
namespace Shentun.WebPeis.AppointScheduleTemplates |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 预约计划模板
|
||||
|
/// </summary>
|
||||
|
[Authorize] |
||||
|
[ApiExplorerSettings(GroupName = "Work")] |
||||
|
public class AppointScheduleTemplateAppService : ApplicationService |
||||
|
{ |
||||
|
|
||||
|
private readonly IRepository<AppointScheduleTemplate> _appointScheduleTemplateRepository; |
||||
|
private readonly AppointScheduleTemplateManager _appointScheduleTemplateManager; |
||||
|
private readonly CacheService _cacheService; |
||||
|
public AppointScheduleTemplateAppService( |
||||
|
IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository, |
||||
|
AppointScheduleTemplateManager appointScheduleTemplateManager, |
||||
|
CacheService cacheService) |
||||
|
{ |
||||
|
_appointScheduleTemplateRepository = appointScheduleTemplateRepository; |
||||
|
_appointScheduleTemplateManager = appointScheduleTemplateManager; |
||||
|
_cacheService = cacheService; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 创建
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("api/app/AppointScheduleTemplate/Create")] |
||||
|
public async Task<AppointScheduleTemplateDto> CreateAsync(CreateAppointScheduleTemplateDto input) |
||||
|
{ |
||||
|
var createEntity = ObjectMapper.Map<CreateAppointScheduleTemplateDto, AppointScheduleTemplate>(input); |
||||
|
var entity = await _appointScheduleTemplateManager.CreateAsync(createEntity); |
||||
|
entity = await _appointScheduleTemplateRepository.InsertAsync(entity); |
||||
|
var dto = ObjectMapper.Map<AppointScheduleTemplate, AppointScheduleTemplateDto>(entity); |
||||
|
dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId); |
||||
|
dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId); |
||||
|
return dto; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("api/app/AppointScheduleTemplate/Update")] |
||||
|
public async Task<AppointScheduleTemplateDto> UpdateAsync(UpdateAppointScheduleTemplateDto input) |
||||
|
{ |
||||
|
var entity = await _appointScheduleTemplateRepository.GetAsync(g => g.AppointScheduleTemplateId == input.AppointScheduleTemplateId); |
||||
|
var sourceEntity = ObjectMapper.Map<UpdateAppointScheduleTemplateDto, AppointScheduleTemplate>(input); |
||||
|
await _appointScheduleTemplateManager.UpdateAsync(sourceEntity, entity); |
||||
|
entity = await _appointScheduleTemplateRepository.UpdateAsync(entity); |
||||
|
var dto = ObjectMapper.Map<AppointScheduleTemplate, AppointScheduleTemplateDto>(entity); |
||||
|
dto.CreatorName = await _cacheService.GetSurnameAsync(dto.CreatorId); |
||||
|
dto.LastModifierName = await _cacheService.GetSurnameAsync(dto.LastModifierId); |
||||
|
return dto; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("api/app/AppointScheduleTemplate/Delete")] |
||||
|
public async Task DeleteAsync(AppointScheduleTemplateIdInputDto input) |
||||
|
{ |
||||
|
await _appointScheduleTemplateManager.CheckAndDeleteAsync(input.AppointScheduleTemplateId); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改排序 置顶,置底
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("api/app/AppointScheduleTemplate/UpdateManySort")] |
||||
|
public async Task UpdateManySortAsync(UpdateManySortInputDto input) |
||||
|
{ |
||||
|
await _appointScheduleTemplateManager.UpdateManySortAsync(input.Id, input.SortType); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改排序 拖拽
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[HttpPost("api/app/AppointScheduleTemplate/UpdateSortMany")] |
||||
|
public async Task UpdateSortManyAsync(UpdateSortManyDto input) |
||||
|
{ |
||||
|
await _appointScheduleTemplateManager.UpdateSortManyAsync(input); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,131 @@ |
|||||
|
using Microsoft.Extensions.Configuration.UserSecrets; |
||||
|
using NPOI.SS.Formula.Functions; |
||||
|
using Shentun.Utilities; |
||||
|
using Shentun.WebPeis.Models; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Domain.Entities; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Domain.Repositories; |
||||
|
using NPOI.POIFS.FileSystem; |
||||
|
|
||||
|
namespace Shentun.WebPeis.AppointScheduleTemplates |
||||
|
{ |
||||
|
public class AppointScheduleTemplateManager |
||||
|
{ |
||||
|
|
||||
|
private readonly IRepository<AppointScheduleTemplate> _appointScheduleTemplateRepository; |
||||
|
|
||||
|
public AppointScheduleTemplateManager( |
||||
|
IRepository<AppointScheduleTemplate> appointScheduleTemplateRepository |
||||
|
) |
||||
|
{ |
||||
|
_appointScheduleTemplateRepository = appointScheduleTemplateRepository; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 创建
|
||||
|
/// </summary>
|
||||
|
/// <param name="entity"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task<AppointScheduleTemplate> CreateAsync( |
||||
|
AppointScheduleTemplate entity |
||||
|
) |
||||
|
{ |
||||
|
DataHelper.CheckEntityIsNull(entity); |
||||
|
|
||||
|
var isWeekId = await _appointScheduleTemplateRepository.FirstOrDefaultAsync(f => f.WeekId == entity.WeekId); |
||||
|
if (isWeekId != null) |
||||
|
throw new UserFriendlyException($"WeekId数据已存在,不能重复"); |
||||
|
return new AppointScheduleTemplate |
||||
|
{ |
||||
|
AppointScheduleTemplateId = entity.AppointScheduleTemplateId, |
||||
|
DisplayOrder = await EntityHelper.CreateMaxDisplayOrder<AppointScheduleTemplate>(_appointScheduleTemplateRepository), |
||||
|
AmNumberLimit = entity.AmNumberLimit, |
||||
|
AmStartTime = entity.AmStartTime, |
||||
|
AmStopTime = entity.AmStopTime, |
||||
|
PmNumberLimit = entity.PmNumberLimit, |
||||
|
PmStartTime = entity.PmStartTime, |
||||
|
PmStopTime = entity.PmStopTime, |
||||
|
SingleNumberLimit = entity.SingleNumberLimit, |
||||
|
WeekId = entity.WeekId |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新
|
||||
|
/// </summary>
|
||||
|
/// <param name="sourceEntity"></param>
|
||||
|
/// <param name="targetEntity"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task UpdateAsync( |
||||
|
AppointScheduleTemplate sourceEntity, |
||||
|
AppointScheduleTemplate targetEntity |
||||
|
) |
||||
|
{ |
||||
|
DataHelper.CheckEntityIsNull(sourceEntity); |
||||
|
DataHelper.CheckEntityIsNull(targetEntity); |
||||
|
|
||||
|
var isWeekId = await _appointScheduleTemplateRepository.FirstOrDefaultAsync(f => f.WeekId == sourceEntity.WeekId |
||||
|
&& f.AppointScheduleTemplateId != targetEntity.AppointScheduleTemplateId); |
||||
|
if (isWeekId != null) |
||||
|
throw new UserFriendlyException($"WeekId数据已存在,不能重复"); |
||||
|
|
||||
|
targetEntity.AmNumberLimit = sourceEntity.AmNumberLimit; |
||||
|
targetEntity.AmStartTime = sourceEntity.AmStartTime; |
||||
|
targetEntity.AmStopTime = sourceEntity.AmStopTime; |
||||
|
targetEntity.PmNumberLimit = sourceEntity.PmNumberLimit; |
||||
|
targetEntity.PmStartTime = sourceEntity.PmStartTime; |
||||
|
targetEntity.PmStopTime = sourceEntity.PmStopTime; |
||||
|
targetEntity.SingleNumberLimit = sourceEntity.SingleNumberLimit; |
||||
|
targetEntity.WeekId = sourceEntity.WeekId; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除
|
||||
|
/// </summary>
|
||||
|
/// <param name="id"></param>
|
||||
|
/// <returns></returns>
|
||||
|
/// <exception cref="UserFriendlyException"></exception>
|
||||
|
public async Task CheckAndDeleteAsync(Guid appointScheduleTemplateId) |
||||
|
{ |
||||
|
await _appointScheduleTemplateRepository.DeleteAsync(d => d.AppointScheduleTemplateId == appointScheduleTemplateId); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改排序 置顶,置底
|
||||
|
/// </summary>
|
||||
|
/// <param name="id">需要修改的ID</param>
|
||||
|
/// <param name="SortType">修改方式:1 置顶 2 置底</param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task UpdateManySortAsync(Guid appointScheduleTemplateId, int SortType) |
||||
|
{ |
||||
|
var entity = await _appointScheduleTemplateRepository.GetAsync(f => f.AppointScheduleTemplateId == appointScheduleTemplateId); |
||||
|
await EntityHelper.UpdateManySortAsync(_appointScheduleTemplateRepository, entity, SortType); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改排序 拖拽
|
||||
|
/// </summary>
|
||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||
|
/// <param name="repository"></param>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task UpdateSortManyAsync(UpdateSortManyDto input) |
||||
|
{ |
||||
|
|
||||
|
var entitylist = await _appointScheduleTemplateRepository.GetListAsync(o => input.ItemList.Select(s => s.Id).Contains(o.AppointScheduleTemplateId)); |
||||
|
|
||||
|
await EntityHelper.UpdateSortManyAsync(_appointScheduleTemplateRepository, entitylist, input); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,345 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp; |
||||
|
|
||||
|
namespace Shentun.WebPeis |
||||
|
{ |
||||
|
public class DataHelper |
||||
|
{ |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 统一转换日期为字符串格式
|
||||
|
/// </summary>
|
||||
|
/// <param name="dateTime"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public static string ConversionDateToString(DateTime? dateTime) |
||||
|
{ |
||||
|
if (dateTime == null) |
||||
|
{ |
||||
|
return ""; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
return dateTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 转换 只保留年月日
|
||||
|
/// </summary>
|
||||
|
/// <param name="dateTime"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public static string ConversionDateShortToString(DateTime? dateTime) |
||||
|
{ |
||||
|
if (dateTime == null) |
||||
|
{ |
||||
|
return ""; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
return dateTime.Value.ToString("yyyy-MM-dd"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 转换人民币大小金额
|
||||
|
/// </summary>
|
||||
|
/// <param name="num">金额</param>
|
||||
|
/// <returns>返回大写形式</returns>
|
||||
|
public static string CmycurD(decimal num) |
||||
|
{ |
||||
|
string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字
|
||||
|
string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字
|
||||
|
string str3 = ""; //从原num值中取出的值
|
||||
|
string str4 = ""; //数字的字符串形式
|
||||
|
string str5 = ""; //人民币大写金额形式
|
||||
|
int i; //循环变量
|
||||
|
int j; //num的值乘以100的字符串长度
|
||||
|
string ch1 = ""; //数字的汉语读法
|
||||
|
string ch2 = ""; //数字位的汉字读法
|
||||
|
int nzero = 0; //用来计算连续的零值是几个
|
||||
|
int temp; //从原num值中取出的值
|
||||
|
|
||||
|
num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数
|
||||
|
str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式
|
||||
|
j = str4.Length; //找出最高位
|
||||
|
if (j > 15) { return "溢出"; } |
||||
|
str2 = str2.Substring(15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分
|
||||
|
|
||||
|
//循环取出每一位需要转换的值
|
||||
|
for (i = 0; i < j; i++) |
||||
|
{ |
||||
|
str3 = str4.Substring(i, 1); //取出需转换的某一位的值
|
||||
|
temp = Convert.ToInt32(str3); //转换为数字
|
||||
|
if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) |
||||
|
{ |
||||
|
//当所取位数不为元、万、亿、万亿上的数字时
|
||||
|
if (str3 == "0") |
||||
|
{ |
||||
|
ch1 = ""; |
||||
|
ch2 = ""; |
||||
|
nzero = nzero + 1; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
if (str3 != "0" && nzero != 0) |
||||
|
{ |
||||
|
ch1 = "零" + str1.Substring(temp * 1, 1); |
||||
|
ch2 = str2.Substring(i, 1); |
||||
|
nzero = 0; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
ch1 = str1.Substring(temp * 1, 1); |
||||
|
ch2 = str2.Substring(i, 1); |
||||
|
nzero = 0; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
//该位是万亿,亿,万,元位等关键位
|
||||
|
if (str3 != "0" && nzero != 0) |
||||
|
{ |
||||
|
ch1 = "零" + str1.Substring(temp * 1, 1); |
||||
|
ch2 = str2.Substring(i, 1); |
||||
|
nzero = 0; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
if (str3 != "0" && nzero == 0) |
||||
|
{ |
||||
|
ch1 = str1.Substring(temp * 1, 1); |
||||
|
ch2 = str2.Substring(i, 1); |
||||
|
nzero = 0; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
if (str3 == "0" && nzero >= 3) |
||||
|
{ |
||||
|
ch1 = ""; |
||||
|
ch2 = ""; |
||||
|
nzero = nzero + 1; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
if (j >= 11) |
||||
|
{ |
||||
|
ch1 = ""; |
||||
|
nzero = nzero + 1; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
ch1 = ""; |
||||
|
ch2 = str2.Substring(i, 1); |
||||
|
nzero = nzero + 1; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if (i == (j - 11) || i == (j - 3)) |
||||
|
{ |
||||
|
//如果该位是亿位或元位,则必须写上
|
||||
|
ch2 = str2.Substring(i, 1); |
||||
|
} |
||||
|
str5 = str5 + ch1 + ch2; |
||||
|
|
||||
|
if (i == j - 1 && str3 == "0") |
||||
|
{ |
||||
|
//最后一位(分)为0时,加上“整”
|
||||
|
str5 = str5 + '整'; |
||||
|
} |
||||
|
} |
||||
|
if (num == 0) |
||||
|
{ |
||||
|
str5 = "零元整"; |
||||
|
} |
||||
|
return str5; |
||||
|
} |
||||
|
|
||||
|
#region 数据检查
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 数据检查 对象
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的对象</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckEntityIsNull(object value, string parameterName = "对象", string ExceptionMessage = "不能为空") |
||||
|
{ |
||||
|
if (value == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 数据检查 字符串
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckStringIsNull(string value, string parameterName, string ExceptionMessage = "不能为空") |
||||
|
{ |
||||
|
if (string.IsNullOrWhiteSpace(value)) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#region 验证char类型参数
|
||||
|
/// <summary>
|
||||
|
/// 验证char类型参数是否为null
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckCharIsNull(char? value, string parameterName, string ExceptionMessage = "不能为空") |
||||
|
{ |
||||
|
if (value == null) |
||||
|
{ |
||||
|
throw new ArgumentException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 验证char类型参数是否为0
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckCharIsZero(char value, string parameterName, string ExceptionMessage = "不能为0") |
||||
|
{ |
||||
|
if (value == '0') |
||||
|
{ |
||||
|
throw new ArgumentException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 验证char类型参数是否为Y、N
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckCharIsYOrN(char value, string parameterName) |
||||
|
{ |
||||
|
if (value != 'Y' && value != 'N') |
||||
|
{ |
||||
|
throw new ArgumentException($"{parameterName}参数为:{value},是无效值,只能为Y跟N"); |
||||
|
} |
||||
|
} |
||||
|
#endregion
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 验证Int类型数据是否>0
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckIntIsGeaterThanZero(int value, string parameterName, string ExceptionMessage = "只能为大于0的值") |
||||
|
{ |
||||
|
if (value <= 0) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 验证Guid数据是否为null
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckGuidIsNull(Guid? value, string parameterName, string ExceptionMessage = "不能为空") |
||||
|
{ |
||||
|
if (value == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 验证Guid数据是否为默认值00000000-0000-0000-0000-000000000000
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckGuidIsDefaultValue(Guid value, string parameterName, string ExceptionMessage = "不能为默认值00000000-0000-0000-0000-000000000000") |
||||
|
{ |
||||
|
if (value == Guid.Empty || value == default(Guid)) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
///验证decimal类型数据大于0
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckDecimalIsGeaterThanZero(decimal value, string parameterName, string ExceptionMessage = "值只能大于0") |
||||
|
{ |
||||
|
if (value <= 0) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 数据检查 decimal
|
||||
|
/// </summary>
|
||||
|
/// <param name="value">需要验证的值</param>
|
||||
|
/// <param name="parameterName">字段名称</param>
|
||||
|
/// <param name="ExceptionMessage">异常提示后缀</param>
|
||||
|
/// <exception cref="ArgumentException"></exception>
|
||||
|
public static void CheckDecimalIsNull(decimal? value, string parameterName, string ExceptionMessage = "不能为空") |
||||
|
{ |
||||
|
if (value == null) |
||||
|
{ |
||||
|
throw new UserFriendlyException($"{parameterName}{ExceptionMessage}"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
public static void CheckIdNo(string idNo) |
||||
|
{ |
||||
|
if (string.IsNullOrWhiteSpace(idNo)) |
||||
|
{ |
||||
|
throw new Exception("身份证号不能是空值"); |
||||
|
} |
||||
|
if (idNo.Length != 18) |
||||
|
throw new Exception("身份证号长度必须为18位"); |
||||
|
|
||||
|
var birthDate = Convert.ToDateTime(idNo.Substring(6, 4) + "-" + |
||||
|
idNo.Substring(10, 2) + "-" + |
||||
|
idNo.Substring(12, 2)); |
||||
|
if (birthDate < new DateTime(1880, 1, 1) || birthDate > DateTime.Now.Date) |
||||
|
{ |
||||
|
throw new Exception("身份证号中的出生日期不正确"); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
#endregion
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,117 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
using Volo.Abp.Domain.Entities; |
||||
|
using Volo.Abp.Domain.Repositories; |
||||
|
|
||||
|
namespace Shentun.WebPeis |
||||
|
{ |
||||
|
public class EntityHelper |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 创建最大显示顺序
|
||||
|
/// </summary>
|
||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||
|
/// <param name="repository"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public static async Task<int> CreateMaxDisplayOrder<TEntity>(IRepository<TEntity> repository) |
||||
|
where TEntity : class, IEntity, IDisplayOrder |
||||
|
{ |
||||
|
int? maxDisplayOrder = await repository.MaxAsync(o => (int?)o.DisplayOrder); |
||||
|
return (maxDisplayOrder ?? 0) + 1; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改排序 置顶,置底
|
||||
|
/// </summary>
|
||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||
|
/// <param name="repository"></param>
|
||||
|
/// <param name="id">需要修改的ID</param>
|
||||
|
/// <param name="SortType">修改方式:1 置顶 2 置底</param>
|
||||
|
/// <param name="orderby">排序规则 0、升序 1、降序 (默认降序)</param>
|
||||
|
/// <returns></returns>
|
||||
|
public static async Task UpdateManySortAsync<TEntity>(IRepository<TEntity> repository, TEntity entity, int SortType) |
||||
|
where TEntity : class, IEntity, IDisplayOrder |
||||
|
{ |
||||
|
|
||||
|
List<TEntity> UptList = new List<TEntity>(); |
||||
|
|
||||
|
if (SortType == 2) |
||||
|
{ |
||||
|
UptList = (await repository.GetListAsync(o => o.DisplayOrder > entity.DisplayOrder)).OrderBy(o => o.DisplayOrder).ToList(); |
||||
|
|
||||
|
if (UptList.Count > 0) |
||||
|
{ |
||||
|
|
||||
|
int indexnum = entity.DisplayOrder; //原有值
|
||||
|
|
||||
|
entity.DisplayOrder = UptList[UptList.Count - 1].DisplayOrder; //修改当前排序值为最大
|
||||
|
|
||||
|
//置顶操作,往上一行开始,逐渐替换
|
||||
|
foreach (var item in UptList) |
||||
|
{ |
||||
|
int dqnum = item.DisplayOrder; |
||||
|
item.DisplayOrder = indexnum; |
||||
|
indexnum = dqnum; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
UptList = (await repository.GetListAsync(o => o.DisplayOrder < entity.DisplayOrder)).OrderByDescending(o => o.DisplayOrder).ToList(); ; |
||||
|
|
||||
|
if (UptList.Count > 0) |
||||
|
{ |
||||
|
int indexnum = entity.DisplayOrder; //原有值
|
||||
|
|
||||
|
entity.DisplayOrder = UptList[UptList.Count - 1].DisplayOrder; //修改当前排序值为最小
|
||||
|
|
||||
|
//置底操作,往下一行开始,逐渐替换
|
||||
|
foreach (var item in UptList) |
||||
|
{ |
||||
|
int dqnum = item.DisplayOrder; |
||||
|
item.DisplayOrder = indexnum; |
||||
|
indexnum = dqnum; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
UptList.Add(entity); |
||||
|
|
||||
|
|
||||
|
await repository.UpdateManyAsync(UptList); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改排序 拖拽
|
||||
|
/// </summary>
|
||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||
|
/// <param name="repository"></param>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public static async Task UpdateSortManyAsync<TEntity>(IRepository<TEntity> repository, List<TEntity> entitylist, UpdateSortManyDto input) |
||||
|
where TEntity : class, IEntity, IDisplayOrder |
||||
|
{ |
||||
|
|
||||
|
foreach (var entity in entitylist) |
||||
|
{ |
||||
|
foreach (var item in input.ItemList) |
||||
|
{ |
||||
|
if (item.Id == Guid.Parse(entity.GetKeys().FirstOrDefault().ToString())) |
||||
|
entity.DisplayOrder = item.DisplayOrder; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
await repository.UpdateManyAsync(entitylist); |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Shentun.WebPeis |
||||
|
{ |
||||
|
public interface IDisplayOrder |
||||
|
{ |
||||
|
int DisplayOrder { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Shentun.WebPeis |
||||
|
{ |
||||
|
public class UpdateSortManyDto |
||||
|
{ |
||||
|
public List<UpdateSortMany> ItemList { get; set; } |
||||
|
} |
||||
|
|
||||
|
public class UpdateSortMany |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
public int DisplayOrder { get; set; } |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue