|
|
|
@ -99,13 +99,8 @@ namespace Myshipping.Application
|
|
|
|
|
var model = InnerGetInfo(entity.PK_ID);
|
|
|
|
|
|
|
|
|
|
_logger.LogInformation($"更新状态前,获取原始记录 JSON={JSON.Serialize(model)}");
|
|
|
|
|
/*
|
|
|
|
|
需要校验是否已有服务项目对应到服务流程,已对应的不能修改代码
|
|
|
|
|
*/
|
|
|
|
|
if (!entity.STATUS_SKU_CODE.Equals(model.STATUS_SKU_CODE, StringComparison.OrdinalIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
ValidateServiceProject(entity, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ValidateServiceStatus(entity, OperateTypeEnum.Save);
|
|
|
|
|
|
|
|
|
|
entity.UpdatedTime = DateTime.Now;
|
|
|
|
|
entity.UpdatedUserId = UserManager.UserId;
|
|
|
|
@ -153,16 +148,35 @@ namespace Myshipping.Application
|
|
|
|
|
/// 校验
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="entity">服务项目详情</param>
|
|
|
|
|
/// <param name="isCheckRelation">是否校验关系</param>
|
|
|
|
|
/// <param name="opTypeEnum">操作类型枚举</param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
private void ValidateServiceProject(StatusSkuBaseInfo entity, bool isCheckRelation = false)
|
|
|
|
|
private void ValidateServiceStatus(StatusSkuBaseInfo entity, OperateTypeEnum opTypeEnum)
|
|
|
|
|
{
|
|
|
|
|
if (isCheckRelation && _serviceWorkFlowActivitiesInfoRepository.Any(a => a.STATUS_SKU_ID == entity.PK_ID))
|
|
|
|
|
/*
|
|
|
|
|
1、状态名称不能低于2个字符。
|
|
|
|
|
2、状态修改,需要判断当前状态是否关联服务的活动。已关联的不能修改状态代码。
|
|
|
|
|
3、取消启用时,需要判断当前状态是否关联服务的活动。已关联的不能取消启用。
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
if (opTypeEnum == OperateTypeEnum.Save)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogInformation($"当前状态已关联服务流程不能修改");
|
|
|
|
|
if(_serviceWorkFlowActivitiesInfoRepository.AsQueryable().Any(a=>a.STATUS_SKU_ID == entity.PK_ID))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh($"当前状态已关联服务流程活动,不能修改", typeof(InvalidOperationException));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
throw Oops.Oh($"当前状态已关联服务流程不能修改", typeof(InvalidOperationException));
|
|
|
|
|
if (entity.STATUS_SKU_CODE.Length < 2 || entity.STATUS_SKU_NAME.Length < 2)
|
|
|
|
|
throw Oops.Oh($"状态代码和状态名称不能小于2个字符,不能修改", typeof(InvalidOperationException));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (opTypeEnum == OperateTypeEnum.SetUnEnable)
|
|
|
|
|
{
|
|
|
|
|
if (_serviceWorkFlowActivitiesInfoRepository.AsQueryable().Any(a => a.STATUS_SKU_ID == entity.PK_ID))
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh($"当前状态已关联服务流程活动,不能取消启用", typeof(InvalidOperationException));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
@ -195,28 +209,32 @@ namespace Myshipping.Application
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 启用
|
|
|
|
|
#region 处理状态内部方法
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 启用
|
|
|
|
|
/// 处理状态内部方法
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pkId">状态主键</param>
|
|
|
|
|
/// <param name="model">状态详情</param>
|
|
|
|
|
/// <param name="opTypeEnum">操作类型</param>
|
|
|
|
|
/// <returns>返回回执</returns>
|
|
|
|
|
[HttpGet("/StatusSkuBase/SetEnable")]
|
|
|
|
|
public async Task<TaskManageOrderResultDto> SetEnable([FromQuery] string pkId)
|
|
|
|
|
private async Task<TaskManageOrderResultDto> InnerExcuteServiceStatus(StatusSkuBaseInfo model, OperateTypeEnum opTypeEnum)
|
|
|
|
|
{
|
|
|
|
|
TaskManageOrderResultDto result = new TaskManageOrderResultDto();
|
|
|
|
|
|
|
|
|
|
result.bno = model?.STATUS_SKU_NAME;
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var model = InnerGetInfo(pkId);
|
|
|
|
|
if (model == null)
|
|
|
|
|
throw Oops.Oh($"状态获取失败,状态信息不存在或已作废", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
_logger.LogInformation($"更新状态前,获取原始记录 JSON={JSON.Serialize(model)}");
|
|
|
|
|
|
|
|
|
|
ValidateServiceProject(model, true);
|
|
|
|
|
|
|
|
|
|
model.UpdatedTime = DateTime.Now;
|
|
|
|
|
model.UpdatedUserId = UserManager.UserId;
|
|
|
|
|
model.UpdatedUserName = UserManager.Name;
|
|
|
|
|
|
|
|
|
|
if (opTypeEnum == OperateTypeEnum.SetEnable)
|
|
|
|
|
{
|
|
|
|
|
model.IS_ENABLE = 1;
|
|
|
|
|
|
|
|
|
|
await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
|
|
|
|
@ -227,6 +245,37 @@ namespace Myshipping.Application
|
|
|
|
|
it.UpdatedUserName
|
|
|
|
|
|
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
|
}
|
|
|
|
|
else if (opTypeEnum == OperateTypeEnum.SetUnEnable)
|
|
|
|
|
{
|
|
|
|
|
ValidateServiceStatus(model, opTypeEnum);
|
|
|
|
|
|
|
|
|
|
model.IS_ENABLE = 0;
|
|
|
|
|
|
|
|
|
|
await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
|
|
|
|
|
{
|
|
|
|
|
it.IS_ENABLE,
|
|
|
|
|
it.UpdatedTime,
|
|
|
|
|
it.UpdatedUserId,
|
|
|
|
|
it.UpdatedUserName
|
|
|
|
|
|
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
|
}
|
|
|
|
|
else if (opTypeEnum == OperateTypeEnum.Delete)
|
|
|
|
|
{
|
|
|
|
|
ValidateServiceStatus(model, opTypeEnum);
|
|
|
|
|
|
|
|
|
|
model.IsDeleted = true;
|
|
|
|
|
|
|
|
|
|
await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
|
|
|
|
|
{
|
|
|
|
|
it.IsDeleted,
|
|
|
|
|
it.UpdatedTime,
|
|
|
|
|
it.UpdatedUserId,
|
|
|
|
|
it.UpdatedUserName
|
|
|
|
|
|
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
result.succ = true;
|
|
|
|
|
result.msg = "执行成功";
|
|
|
|
@ -235,7 +284,77 @@ namespace Myshipping.Application
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
result.succ = false;
|
|
|
|
|
result.msg = $"执行启用异常,原因:{ex.Message}";
|
|
|
|
|
result.msg = $"执行状态异常,原因:{ex.Message}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
#region 启用
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 启用
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pkIds">状态主键数组</param>
|
|
|
|
|
/// <returns>返回回执</returns>
|
|
|
|
|
[HttpPost("/StatusSkuBase/SetEnable")]
|
|
|
|
|
public async Task<TaskManageOrderResultDto> SetEnable([FromBody] string[] pkIds)
|
|
|
|
|
{
|
|
|
|
|
TaskManageOrderResultDto result = new TaskManageOrderResultDto();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
if (pkIds.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh($"状态主键数组不能为空", typeof(InvalidOperationException));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var list = _statusSkuBaseInfoRepository.AsQueryable()
|
|
|
|
|
.Where(a => pkIds.Contains(a.PK_ID)).ToList();
|
|
|
|
|
|
|
|
|
|
if (list.Count == 0)
|
|
|
|
|
throw Oops.Oh($"状态获取失败,请服务项目信息是否存在", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
if (list.Count != pkIds.Length)
|
|
|
|
|
throw Oops.Oh($"部分状态获取失败,请服务项目信息是否存在", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
List<TaskManageOrderResultDto> rltList = new List<TaskManageOrderResultDto>();
|
|
|
|
|
|
|
|
|
|
list.ForEach(pr => {
|
|
|
|
|
|
|
|
|
|
rltList.Add(InnerExcuteServiceStatus(pr, OperateTypeEnum.SetEnable).GetAwaiter().GetResult());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
result.succ = true;
|
|
|
|
|
result.msg = rltList.FirstOrDefault().msg;
|
|
|
|
|
|
|
|
|
|
result.ext = rltList;
|
|
|
|
|
|
|
|
|
|
var succ = rltList.Count(x => x.succ);
|
|
|
|
|
var fail = rltList.Count(x => !x.succ);
|
|
|
|
|
|
|
|
|
|
if (succ > 0)
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal = succ.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal = "- ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (fail > 0)
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal += "/" + fail.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal += " -";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
result.succ = false;
|
|
|
|
|
result.msg = $"启用状态异常,原因:{ex.Message}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
@ -246,43 +365,66 @@ namespace Myshipping.Application
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 取消启用
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pkId">状态主键</param>
|
|
|
|
|
/// <param name="pkIds">状态主键数组</param>
|
|
|
|
|
/// <returns>返回回执</returns>
|
|
|
|
|
[HttpGet("/StatusSkuBase/SetUnEnable")]
|
|
|
|
|
public async Task<TaskManageOrderResultDto> SetUnEnable([FromQuery] string pkId)
|
|
|
|
|
[HttpPost("/StatusSkuBase/SetUnEnable")]
|
|
|
|
|
public async Task<TaskManageOrderResultDto> SetUnEnable([FromBody] string[] pkIds)
|
|
|
|
|
{
|
|
|
|
|
TaskManageOrderResultDto result = new TaskManageOrderResultDto();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var model = InnerGetInfo(pkId);
|
|
|
|
|
if (pkIds.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh($"状态主键数组不能为空", typeof(InvalidOperationException));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_logger.LogInformation($"更新状态前,获取原始记录 JSON={JSON.Serialize(model)}");
|
|
|
|
|
var list = _statusSkuBaseInfoRepository.AsQueryable()
|
|
|
|
|
.Where(a => pkIds.Contains(a.PK_ID)).ToList();
|
|
|
|
|
|
|
|
|
|
ValidateServiceProject(model, true);
|
|
|
|
|
if (list.Count == 0)
|
|
|
|
|
throw Oops.Oh($"状态获取失败,请服务项目信息是否存在", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
model.UpdatedTime = DateTime.Now;
|
|
|
|
|
model.UpdatedUserId = UserManager.UserId;
|
|
|
|
|
model.UpdatedUserName = UserManager.Name;
|
|
|
|
|
model.IS_ENABLE = 0;
|
|
|
|
|
if (list.Count != pkIds.Length)
|
|
|
|
|
throw Oops.Oh($"部分状态获取失败,请服务项目信息是否存在", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
|
|
|
|
|
{
|
|
|
|
|
it.IS_ENABLE,
|
|
|
|
|
it.UpdatedTime,
|
|
|
|
|
it.UpdatedUserId,
|
|
|
|
|
it.UpdatedUserName
|
|
|
|
|
List<TaskManageOrderResultDto> rltList = new List<TaskManageOrderResultDto>();
|
|
|
|
|
|
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
|
list.ForEach(pr => {
|
|
|
|
|
|
|
|
|
|
rltList.Add(InnerExcuteServiceStatus(pr, OperateTypeEnum.SetUnEnable).GetAwaiter().GetResult());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
result.succ = true;
|
|
|
|
|
result.msg = "执行成功";
|
|
|
|
|
result.msg = rltList.FirstOrDefault().msg;
|
|
|
|
|
|
|
|
|
|
result.ext = rltList;
|
|
|
|
|
|
|
|
|
|
var succ = rltList.Count(x => x.succ);
|
|
|
|
|
var fail = rltList.Count(x => !x.succ);
|
|
|
|
|
|
|
|
|
|
if (succ > 0)
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal = succ.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal = "- ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (fail > 0)
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal += "/" + fail.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal += " -";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
result.succ = false;
|
|
|
|
|
result.msg = $"执行启用异常,原因:{ex.Message}";
|
|
|
|
|
result.msg = $"启用服务项目异常,原因:{ex.Message}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
@ -293,43 +435,66 @@ namespace Myshipping.Application
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 删除
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="pkId">状态主键</param>
|
|
|
|
|
/// <param name="pkIds">状态主键数组</param>
|
|
|
|
|
/// <returns>返回回执</returns>
|
|
|
|
|
[HttpGet("/StatusSkuBase/Delete")]
|
|
|
|
|
public async Task<TaskManageOrderResultDto> Delete([FromQuery] string pkId)
|
|
|
|
|
[HttpPost("/StatusSkuBase/Delete")]
|
|
|
|
|
public async Task<TaskManageOrderResultDto> Delete([FromBody] string[] pkIds)
|
|
|
|
|
{
|
|
|
|
|
TaskManageOrderResultDto result = new TaskManageOrderResultDto();
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var model = InnerGetInfo(pkId);
|
|
|
|
|
if (pkIds.Length == 0)
|
|
|
|
|
{
|
|
|
|
|
throw Oops.Oh($"状态主键数组不能为空", typeof(InvalidOperationException));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_logger.LogInformation($"更新服务项目前,获取原始记录 JSON={JSON.Serialize(model)}");
|
|
|
|
|
var list = _statusSkuBaseInfoRepository.AsQueryable()
|
|
|
|
|
.Where(a => pkIds.Contains(a.PK_ID)).ToList();
|
|
|
|
|
|
|
|
|
|
if (model.IS_ENABLE == 1)
|
|
|
|
|
ValidateServiceProject(model, true);
|
|
|
|
|
if (list.Count == 0)
|
|
|
|
|
throw Oops.Oh($"状态获取失败,请服务项目信息是否存在", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
model.UpdatedTime = DateTime.Now;
|
|
|
|
|
model.UpdatedUserId = UserManager.UserId;
|
|
|
|
|
model.UpdatedUserName = UserManager.Name;
|
|
|
|
|
model.IsDeleted = true;
|
|
|
|
|
if (list.Count != pkIds.Length)
|
|
|
|
|
throw Oops.Oh($"部分状态获取失败,请服务项目信息是否存在", typeof(InvalidOperationException));
|
|
|
|
|
|
|
|
|
|
await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
|
|
|
|
|
{
|
|
|
|
|
it.IsDeleted,
|
|
|
|
|
it.UpdatedTime,
|
|
|
|
|
it.UpdatedUserId,
|
|
|
|
|
it.UpdatedUserName
|
|
|
|
|
List<TaskManageOrderResultDto> rltList = new List<TaskManageOrderResultDto>();
|
|
|
|
|
|
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
|
list.ForEach(pr => {
|
|
|
|
|
|
|
|
|
|
rltList.Add(InnerExcuteServiceStatus(pr, OperateTypeEnum.Delete).GetAwaiter().GetResult());
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
result.succ = true;
|
|
|
|
|
result.msg = "执行成功";
|
|
|
|
|
result.msg = rltList.FirstOrDefault().msg;
|
|
|
|
|
|
|
|
|
|
result.ext = rltList;
|
|
|
|
|
|
|
|
|
|
var succ = rltList.Count(x => x.succ);
|
|
|
|
|
var fail = rltList.Count(x => !x.succ);
|
|
|
|
|
|
|
|
|
|
if (succ > 0)
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal = succ.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal = "- ";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (fail > 0)
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal += "/" + fail.ToString();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
result.batchTotal += " -";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
result.succ = false;
|
|
|
|
|
result.msg = $"删除状态异常,原因:{ex.Message}";
|
|
|
|
|
result.msg = $"启用服务项目异常,原因:{ex.Message}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
@ -351,7 +516,7 @@ namespace Myshipping.Application
|
|
|
|
|
{
|
|
|
|
|
var model = InnerGetInfo(pkId);
|
|
|
|
|
|
|
|
|
|
var showModel = model.Adapt<ServiceProjectBaseShowDto>();
|
|
|
|
|
var showModel = model.Adapt<StatusSkuBaseShowDto>();
|
|
|
|
|
|
|
|
|
|
result.succ = true;
|
|
|
|
|
result.ext = showModel;
|
|
|
|
|