diff --git a/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseDto.cs b/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseDto.cs
index aa15d1f9..f11c23f7 100644
--- a/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseDto.cs
+++ b/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseDto.cs
@@ -36,11 +36,6 @@ namespace Myshipping.Application
///
public int SortNo { get; set; }
- ///
- /// 是否启用
- ///
- public int IsEnable { get; set; }
-
///
/// 状态说明
///
diff --git a/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseShowDto.cs b/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseShowDto.cs
index 7aaabf9b..13729077 100644
--- a/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseShowDto.cs
+++ b/Myshipping.Application/Service/TrackingSystem/Dtos/StatusSkuBaseShowDto.cs
@@ -40,5 +40,10 @@ namespace Myshipping.Application
/// 修改人名称
///
public string UpdatedUserName { get; set; }
+
+ ///
+ /// 是否启用
+ ///
+ public int IsEnable { get; set; }
}
}
diff --git a/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingSystemMapper.cs b/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingSystemMapper.cs
index 559ac9d1..db962100 100644
--- a/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingSystemMapper.cs
+++ b/Myshipping.Application/Service/TrackingSystem/Dtos/TrackingSystemMapper.cs
@@ -61,6 +61,7 @@ namespace Myshipping.Application
.Map(dest => dest.StatusSKUCode, src => src.STATUS_SKU_CODE)
.Map(dest => dest.StatusSKUName, src => src.STATUS_SKU_NAME)
.Map(dest => dest.SortNo, src => src.SORT_NO)
+ .Map(dest => dest.IsEnable, src => src.IS_ENABLE)
.Map(dest => dest.CreatedTime, src => src.CreatedTime)
.Map(dest => dest.UpdatedTime, src => src.UpdatedTime)
.Map(dest => dest.CreatedUserId, src => src.CreatedUserId)
diff --git a/Myshipping.Application/Service/TrackingSystem/Interface/IStatusSkuBaseService.cs b/Myshipping.Application/Service/TrackingSystem/Interface/IStatusSkuBaseService.cs
index f2066dea..5e831262 100644
--- a/Myshipping.Application/Service/TrackingSystem/Interface/IStatusSkuBaseService.cs
+++ b/Myshipping.Application/Service/TrackingSystem/Interface/IStatusSkuBaseService.cs
@@ -29,23 +29,23 @@ namespace Myshipping.Application
///
/// 启用
///
- /// 状态主键
+ /// 状态主键数组
/// 返回回执
- Task SetEnable(string pkId);
+ Task SetEnable(string[] pkIds);
///
/// 取消启用
///
- /// 状态主键
+ /// 状态主键数组
/// 返回回执
- Task SetUnEnable(string pkId);
+ Task SetUnEnable(string[] pkIds);
///
/// 删除
///
- /// 状态主键
+ /// 状态主键数组
/// 返回回执
- Task Delete(string pkId);
+ Task Delete(string[] pkIds);
///
/// 获取状态详情
diff --git a/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs b/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs
new file mode 100644
index 00000000..d98eaac9
--- /dev/null
+++ b/Myshipping.Application/Service/TrackingSystem/ServiceWorkFlowManageService.cs
@@ -0,0 +1,57 @@
+using Furion.DependencyInjection;
+using Furion.DynamicApiController;
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Myshipping.Application
+{
+ ///
+ /// 服务流程管理
+ ///
+ [ApiDescriptionSettings("Application", Name = "ServiceWorkFlowManage", Order = 10)]
+ public class ServiceWorkFlowManageService : IServiceWorkFlowManageService, IDynamicApiController, ITransient
+ {
+ public ServiceWorkFlowManageService()
+ {
+ }
+ ///
+ /// 推送状态
+ ///
+ /// 服务流程详情
+ /// 返回回执
+ [HttpPost("/ServiceWorkFlowManage/PushStatus")]
+ public async Task PushStatus([FromBody] ServiceWorkFlowBaseDto info)
+ {
+ return new TaskManageOrderResultDto();
+ }
+
+
+ ///
+ /// 查询单票业务单服务项目查询
+ ///
+ /// 服务流程详情
+ /// 返回回执
+ [HttpPost("/ServiceWorkFlowManage/QuerySingleBusinessPerServiceProject")]
+ public async Task QuerySingleBusinessPerServiceProject(ServiceWorkFlowBaseDto info)
+ {
+ return new TaskManageOrderResultDto();
+ }
+
+
+ ///
+ /// 查询单票所有相关服务项目查询
+ ///
+ /// 服务流程详情
+ /// 返回回执
+ [HttpPost("/ServiceWorkFlowManage/QuerySingleBusinessAll")]
+ public async Task QuerySingleBusinessAll(ServiceWorkFlowBaseDto info)
+ {
+ return new TaskManageOrderResultDto();
+ }
+ }
+
+}
diff --git a/Myshipping.Application/Service/TrackingSystem/StatusSkuBaseService.cs b/Myshipping.Application/Service/TrackingSystem/StatusSkuBaseService.cs
index 3e4224ec..39ff09e6 100644
--- a/Myshipping.Application/Service/TrackingSystem/StatusSkuBaseService.cs
+++ b/Myshipping.Application/Service/TrackingSystem/StatusSkuBaseService.cs
@@ -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
/// 校验
///
/// 服务项目详情
- /// 是否校验关系
+ /// 操作类型枚举
///
- 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,38 +209,73 @@ namespace Myshipping.Application
}
#endregion
- #region 启用
+ #region 处理状态内部方法
///
- /// 启用
+ /// 处理状态内部方法
///
- /// 状态主键
+ /// 状态详情
+ /// 操作类型
/// 返回回执
- [HttpGet("/StatusSkuBase/SetEnable")]
- public async Task SetEnable([FromQuery] string pkId)
+ private async Task 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;
- model.IS_ENABLE = 1;
- await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
+ if (opTypeEnum == OperateTypeEnum.SetEnable)
{
- it.IS_ENABLE,
- it.UpdatedTime,
- it.UpdatedUserId,
- it.UpdatedUserName
+ model.IS_ENABLE = 1;
- }).ExecuteCommandAsync();
+ await _statusSkuBaseInfoRepository.AsUpdateable(model).UpdateColumns(it => new
+ {
+ it.IS_ENABLE,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ 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 启用
+ ///
+ /// 启用
+ ///
+ /// 状态主键数组
+ /// 返回回执
+ [HttpPost("/StatusSkuBase/SetEnable")]
+ public async Task 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 rltList = new List();
+
+ 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
///
/// 取消启用
///
- /// 状态主键
+ /// 状态主键数组
/// 返回回执
- [HttpGet("/StatusSkuBase/SetUnEnable")]
- public async Task SetUnEnable([FromQuery] string pkId)
+ [HttpPost("/StatusSkuBase/SetUnEnable")]
+ public async Task 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 rltList = new List();
- }).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
///
/// 删除
///
- /// 状态主键
+ /// 状态主键数组
/// 返回回执
- [HttpGet("/StatusSkuBase/Delete")]
- public async Task Delete([FromQuery] string pkId)
+ [HttpPost("/StatusSkuBase/Delete")]
+ public async Task 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 rltList = new List();
- }).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();
+ var showModel = model.Adapt();
result.succ = true;
result.ext = showModel;