修改服务流程展示方法

修改单票舱位分配查询,将主提单号改为订舱编号提取
optimize
jianghaiqing 1 year ago
parent 26dca59555
commit 5978879eb3

@ -39,5 +39,10 @@ namespace Myshipping.Application
/// 是否包含子状态 1-包含 0-不包含
/// </summary>
public int IS_CONTAINS_SUB { get; set; }
/// <summary>
/// 值类型 STRING-字符 DATETIME-日期
/// </summary>
public string VAL_TYPE { get; set; }
}
}

@ -39,5 +39,10 @@ namespace Myshipping.Application
/// 显示顺序号
/// </summary>
public int SORT_NO { get; set; }
/// <summary>
/// 值类型 STRING-字符 DATETIME-日期
/// </summary>
public string VAL_TYPE { get; set; }
}
}

@ -1,12 +1,87 @@
using System;
using Furion.DistributedIDGenerator;
using Myshipping.Application.Entity.TrackingSystem;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Myshipping.Application.Entity
{
public class ServiceWorkFlowRunActivitiesInfo
/// <summary>
/// 服务流程运行活动表
/// </summary>
[SugarTable("service_workflow_run_activities")]
[Description("服务流程运行活动表")]
public class ServiceWorkFlowRunActivitiesInfo : TrackingSystemDbEntity
{
public ServiceWorkFlowRunActivitiesInfo()
{
PK_ID = IDGen.NextID().ToString();
CreatedTime = DateTime.Now;
}
/// <summary>
/// 运行主键
/// </summary>
public string RUN_ID { get; set; }
/// <summary>
/// 执行顺序号
/// </summary>
public int EXEC_SORT_NO { get; set; }
/// <summary>
/// 是否起始 1-是 0-否
/// </summary>
public int IS_START { get; set; }
/// <summary>
/// 是否结束 1-是 0-否
/// </summary>
public int IS_END { get; set; }
/// <summary>
/// 活动主键
/// </summary>
public string ACT_ID { get; set; }
/// <summary>
/// 活动值
/// </summary>
public string ACT_VAL { get; set; }
/// <summary>
/// 活动发生时间
/// </summary>
public Nullable<DateTime> ACT_DATE { get; set; }
/// <summary>
/// 是否已产生 1-已产生 0-未产生
/// </summary>
public int IS_YIELD { get; set; }
/// <summary>
/// 状态主键
/// </summary>
public string STATUS_SKU_ID { get; set; }
/// <summary>
/// 状态代码
/// </summary>
public string STATUS_SKU_CODE { get; set; }
/// <summary>
/// 状态显示名称
/// </summary>
public string SHOW_NAME { get; set; }
/// <summary>
/// 来源类型 AUTO-自动 MANUAL-人工
/// </summary>
public string SOURCE_TYPE { get; set; }
}
}

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Myshipping.Application
{
/// <summary>
/// 状态值类型枚举
/// </summary>
public enum StatusSKUValTypeEnum
{
/// <summary>
/// 日期
/// </summary>
[Description("日期")]
DATETIME,
/// <summary>
/// 已提交
/// </summary>
[Description("字符")]
STRING,
}
}

@ -1031,26 +1031,28 @@ namespace Myshipping.Application
4
5
*/
if (string.IsNullOrWhiteSpace(bookingOrder.MBLNO))
//2023-07-06 按照最新要求,从订舱编号取单号
if (string.IsNullOrWhiteSpace(bookingOrder.CUSTNO))
{
if (!string.IsNullOrWhiteSpace(bookingOrder.CUSTNO))
if (!string.IsNullOrWhiteSpace(bookingOrder.MBLNO))
{
result.bno = $"订 {bookingOrder.CUSTNO}";
result.bno = $"订 {bookingOrder.MBLNO}";
}
else
{
result.bno = $"NO.{sortNo}";
}
throw Oops.Bah($"主提单号不能为空");
throw Oops.Bah($"订舱编号不能为空");
}
else
{
if (Regex.IsMatch(bookingOrder.MBLNO, "\\bESL\\w+"))
if (Regex.IsMatch(bookingOrder.CUSTNO, "\\bESL\\w+"))
{
_logger.LogInformation("批次={no} id={id} 主提单号没填写参考号,无法继续", batchNo, bookingOrder.Id);
_logger.LogInformation("批次={no} id={id} 订舱编号没填写参考号,无法继续", batchNo, bookingOrder.Id);
throw Oops.Oh($"主提单号不是有效的参考号");
throw Oops.Oh($"订舱编号不是有效的参考号");
}
}
@ -1058,13 +1060,13 @@ namespace Myshipping.Application
.FirstOrDefault(t => t.Module.Equals(CONST_MAPPING_MANIALLO_CHK_MODULE_ROUTE, StringComparison.OrdinalIgnoreCase)
&& t.Code.Equals(bookingOrder.CARRIERID?.Trim(), StringComparison.OrdinalIgnoreCase));
_logger.LogInformation("提单号【{mbl}】根据订舱的船公司代码{ca} 提取船公司映射完成,结果={rlt}",
bookingOrder.MBLNO, bookingOrder.CARRIERID, bcOrDraftRouteCfg);
_logger.LogInformation("订舱编号【{mbl}】根据订舱的船公司代码{ca} 提取船公司映射完成,结果={rlt}",
bookingOrder.CUSTNO, bookingOrder.CARRIERID, bcOrDraftRouteCfg);
if (bcOrDraftRouteCfg == null)
{
_logger.LogInformation("提单号{mbl} 根据订舱的船公司代码{ca} 提取船公司映射失败",
bookingOrder.MBLNO, bookingOrder.CARRIERID);
_logger.LogInformation("订舱编号{mbl} 根据订舱的船公司代码{ca} 提取船公司映射失败",
bookingOrder.CUSTNO, bookingOrder.CARRIERID);
throw Oops.Bah($"船公司={bookingOrder.CARRIERID} 暂不支持舱位分配查询");
}
@ -1074,13 +1076,13 @@ namespace Myshipping.Application
var bcUrl = _cache.GetAllDictData().GetAwaiter().GetResult()
.FirstOrDefault(x => x.TypeCode == "url_set" && x.Code.Equals(urlKey, StringComparison.OrdinalIgnoreCase))?.Value;
_logger.LogInformation("提单号{mbl} 根据订舱的船公司代码{ca} 提取舱位分配查询URL完成结果={rlt}",
bookingOrder.MBLNO, bookingOrder.CARRIERID, bcUrl);
_logger.LogInformation("订舱编号{mbl} 根据订舱的船公司代码{ca} 提取舱位分配查询URL完成结果={rlt}",
bookingOrder.CUSTNO, bookingOrder.CARRIERID, bcUrl);
if (string.IsNullOrWhiteSpace(bcUrl))
{
_logger.LogInformation("提单号{0} 根据订舱的船公司代码{1} 提取舱位分配查询URL失败未取到配置key={key}",
bookingOrder.MBLNO, bookingOrder.CARRIERID, urlKey);
_logger.LogInformation("订舱编号{0} 根据订舱的船公司代码{1} 提取舱位分配查询URL失败未取到配置key={key}",
bookingOrder.CUSTNO, bookingOrder.CARRIERID, urlKey);
throw Oops.Bah($"船公司={bookingOrder.CARRIERID} 未配置请求地址{urlKey} 请联系管理员");
}
@ -1100,7 +1102,7 @@ namespace Myshipping.Application
{
u = userWebAccountConfig.Account?.Trim(),
p = userWebAccountConfig.Password?.Trim(),
so_no = bookingOrder.MBLNO,
so_no = bookingOrder.CUSTNO,
};
_logger.LogInformation("批次={no} json={json} 请求舱位分配查询远端下载开始", batchNo, JSON.Serialize(requestDto));
@ -1137,18 +1139,19 @@ namespace Myshipping.Application
throw Oops.Oh($"订舱信息获取失败,无法更新");
}
/* //2023-07-06 按照最新要求,从订舱编号取单号,所以这里不判断了
if(Regex.IsMatch(bkInfo.MBLNO,"\\bESL\\w+"))
{
_logger.LogInformation("批次={no} id={id} 主提单号已变更,无法更新", batchNo, bookingOrder.Id);
throw Oops.Oh($"主提单号已变更,无法更新");
}
}*/
_logger.LogInformation("批次={no} 变更前记录 id={id} MBLNO={MBLNO} CUSTNO={CUSTNO} esl_no={eslno}",
batchNo, bookingOrder.Id, bkInfo.MBLNO, bkInfo.CUSTNO, rlt.data.esl_no);
bkInfo.CUSTNO = bkInfo.MBLNO;
//bkInfo.CUSTNO = bkInfo.MBLNO;
bkInfo.MBLNO = rlt.data.esl_no.Trim().ToUpper();
bkInfo.UpdatedTime = DateTime.Now;
bkInfo.UpdatedUserId = UserManager.UserId;
@ -1156,7 +1159,6 @@ namespace Myshipping.Application
await _bookingOrderRepository.AsUpdateable(bkInfo).UpdateColumns(it => new
{
it.CUSTNO,
it.MBLNO,
it.UpdatedTime,
it.UpdatedUserId,

@ -36,6 +36,11 @@ namespace Myshipping.Application
/// </summary>
public int IsContainsSub { get; set; }
/// <summary>
/// 值类型
/// </summary>
public string ValType { get; set; }
/// <summary>
/// 子活动列表
/// </summary>

@ -0,0 +1,152 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Myshipping.Application
{
/// <summary>
/// 服务流程运行活动表
/// </summary>
public class ServiceWorkFlowActivitiesRunDto
{
/// <summary>
/// 主键
/// </summary>
public string PKId { get; set; }
/// <summary>
/// 主键
/// </summary>
public string RunId { get; set; }
/// <summary>
///
/// </summary>
public int ExecSortNo { get; set; }
/// <summary>
/// 是否起始 1-是 0-否
/// </summary>
public int IsStart { get; set;}
/// <summary>
/// 是否结束 1-是 0-否
/// </summary>
public int IsEnd { get; set; }
/// <summary>
/// 活动主键
/// </summary>
public string ActId { get; set; }
/// <summary>
/// 活动值
/// </summary>
public string ActVal { get; set; }
/// <summary>
/// 是否已产生 1-已产生 0-未产生
/// </summary>
public int IsYield { get; set; }
/// <summary>
/// 活动发生时间
/// </summary>
public Nullable<DateTime> ActDate { get; set; }
/// <summary>
/// 状态主键
/// </summary>
public string StatusSKUId { get; set; }
/// <summary>
/// 状态代码
/// </summary>
public string StatusSKUCode { get; set; }
/// <summary>
/// 状态显示名称
/// </summary>
public string ShowName { get; set; }
/// <summary>
/// 来源类型 AUTO-自动 MANUAL-人工
/// </summary>
public string SourceType { get; set; }
/// <summary>
/// 子活动列表
/// </summary>
public List<ServiceWorkFlowActivitiesRunSubDto> SubList { get; set; }
}
public class ServiceWorkFlowActivitiesRunSubDto
{
/// <summary>
/// 主键
/// </summary>
public string PKId { get; set; }
/// <summary>
/// 主键
/// </summary>
public string RunId { get; set; }
/// <summary>
///
/// </summary>
public int ExecSortNo { get; set; }
/// <summary>
/// 是否起始 1-是 0-否
/// </summary>
public int IsStart { get; set; }
/// <summary>
/// 是否结束 1-是 0-否
/// </summary>
public int IsEnd { get; set; }
/// <summary>
/// 活动主键
/// </summary>
public string ActId { get; set; }
/// <summary>
/// 活动值
/// </summary>
public string ActVal { get; set; }
/// <summary>
/// 是否已产生 1-已产生 0-未产生
/// </summary>
public int IsYield { get; set; }
/// <summary>
/// 活动发生时间
/// </summary>
public Nullable<DateTime> ActDate { get; set; }
/// <summary>
/// 状态主键
/// </summary>
public string StatusSKUId { get; set; }
/// <summary>
/// 状态代码
/// </summary>
public string StatusSKUCode { get; set; }
/// <summary>
/// 状态显示名称
/// </summary>
public string ShowName { get; set; }
/// <summary>
/// 来源类型 AUTO-自动 MANUAL-人工
/// </summary>
public string SourceType { get; set; }
}
}

@ -36,6 +36,11 @@ namespace Myshipping.Application
/// </summary>
public int IsContainsSub { get; set; }
/// <summary>
/// 值类型 STRING-字符 DATETIME-日期
/// </summary>
public string ValType { get; set; }
/// <summary>
/// 子活动列表
/// </summary>

@ -29,6 +29,6 @@ namespace Myshipping.Application
/// <summary>
/// 状态列表
/// </summary>
public List<ServiceWorkFlowActivitiesShowDto> ActivitiesList{ get; set; }
public List<ServiceWorkFlowActivitiesRunDto> ActivitiesList{ get; set; }
}
}

@ -271,7 +271,8 @@ namespace Myshipping.Application
PK_ID = IDGen.NextID().ToString(),
SERVICE_WORKFLOW_ID = entity.PK_ID,
SERVICE_ACTIVITIES_ID = sku.PKId,
IS_CONTAINS_SUB = sku.IsContainsSub
IS_CONTAINS_SUB = sku.IsContainsSub,
VAL_TYPE = !string.IsNullOrWhiteSpace(sku.ValType)? sku.ValType: StatusSKUValTypeEnum.DATETIME.ToString()
};
await _serviceWorkFlowActivitiesRelationRepository.InsertAsync(wfRelationActivities);
@ -375,7 +376,7 @@ namespace Myshipping.Application
rela.SERVICE_ACTIVITIES_ID == act.PK_ID && rela.SERVICE_WORKFLOW_ID == pkId)
.LeftJoin<StatusSkuBaseInfo>((rela, act, sku) => act.STATUS_SKU_ID == sku.PK_ID)
.Select((rela, act, sku) =>
new { Act = act, Sku = sku, SortNo = rela.SORT_NO, IsSub = rela.IS_CONTAINS_SUB })
new { Act = act, Sku = sku, SortNo = rela.SORT_NO, IsSub = rela.IS_CONTAINS_SUB,ValType = rela.VAL_TYPE })
.ToList();
if (activitiesList.Count > 0)
@ -387,6 +388,7 @@ namespace Myshipping.Application
actModel.SortNo = a.SortNo;
actModel.IsContainsSub = a.IsSub;
actModel.ValType = a.ValType;
actModel.statusSkuBase = a.Sku.Adapt<StatusSkuBaseDto>();
return actModel;
@ -444,6 +446,7 @@ namespace Myshipping.Application
/// </summary>
/// <param name="info">服务流程详情</param>
/// <returns>返回回执</returns>
[HttpPost("/ServiceWorkFlowBase/SaveAndEnable")]
public async Task<TaskManageOrderResultDto> SaveAndEnable(ServiceWorkFlowBaseDto info)
{
TaskManageOrderResultDto result = new TaskManageOrderResultDto();
@ -946,17 +949,64 @@ namespace Myshipping.Application
{
showModel.ServiceProjectName = model.ServiceProject.ServiceProjectName;
showModel.ServiceProjectCode = model.ServiceProject.ServiceProjectCode;
}
if (model.StatusSkuList != null && model.StatusSkuList.Count > 0)
{
//showModel.ActivitiesList = model.StatusSkuList.Select(a => {
//}).ToList();
}
int endSortNo = model.StatusSkuList.Max(a => a.SortNo);
DateTime startDate = DateTime.Now.AddDays(-(endSortNo + 1));
showModel.ActivitiesList = model.StatusSkuList.Select(a => {
var runModel = new ServiceWorkFlowActivitiesRunDto
{
PKId = Guid.NewGuid().ToString(),
ActDate = startDate.AddDays(a.SortNo),
ActId = a.PKId,
ExecSortNo = a.SortNo,
ActVal = string.Empty,
IsStart = (a.SortNo == 1) ? 1 : 0,
IsEnd = (a.SortNo == endSortNo) ? 1 : 0,
IsYield = 1,
RunId = Guid.NewGuid().ToString(),
ShowName = a.ShowName,
SourceType = "AUTO",
StatusSKUCode = a.statusSkuBase.StatusSKUCode,
StatusSKUId = a.StatusSKUId
};
if(a.IsContainsSub == 1)
{
int endSubSortNo = a.SubList.Max(a => a.SortNo);
DateTime startSubDate = DateTime.Now.AddDays(-(endSubSortNo + 1));
runModel.SubList = a.SubList.Select(b => {
var subModel = new ServiceWorkFlowActivitiesRunSubDto {
PKId = Guid.NewGuid().ToString(),
ActDate = startSubDate.AddDays(b.SortNo),
ActId = b.PKId,
ExecSortNo = b.SortNo,
ActVal = string.Empty,
IsStart = (b.SortNo == 1) ? 1 : 0,
IsEnd = (b.SortNo == endSortNo) ? 1 : 0,
IsYield = 1,
RunId = Guid.NewGuid().ToString(),
ShowName = b.ShowName,
SourceType = "AUTO",
StatusSKUCode = b.statusSkuBase.StatusSKUCode,
StatusSKUId = b.StatusSKUId
};
return subModel;
}).ToList();
}
return runModel;
}).ToList();
}
}

Loading…
Cancel
Save