diff --git a/Myshipping.Application/Helper/FileAttachHelper.cs b/Myshipping.Application/Helper/FileAttachHelper.cs
index 7a3a2a5f..d37f1a68 100644
--- a/Myshipping.Application/Helper/FileAttachHelper.cs
+++ b/Myshipping.Application/Helper/FileAttachHelper.cs
@@ -31,9 +31,10 @@ namespace Myshipping.Application
/// 批次号
/// 是否生成本地文件
/// 附件类型 bcfiles-BC文件
+ /// 是否保留原文件
/// 返回新的文件路径
public static async Task MoveFile(string fileDictKey,string sourceFilePath,string batchNo,
- bool isLocalTempFile = false,string attachFileType = "bcfiles")
+ bool isLocalTempFile = false,string attachFileType = "bcfiles",bool isKeepSource = false)
{
var logger = Log.CreateLogger(nameof(FileAttachHelper));
@@ -115,10 +116,14 @@ namespace Myshipping.Application
file.Close();
+
try
{
- //删除原文件
- System.IO.File.Delete(sourceFilePath);
+ if (!isKeepSource)
+ {
+ //删除原文件
+ System.IO.File.Delete(sourceFilePath);
+ }
}
catch(Exception delEx)
{
diff --git a/Myshipping.Application/Service/TaskManagePlat/TaskDraftCompareService.cs b/Myshipping.Application/Service/TaskManagePlat/TaskDraftCompareService.cs
index 5bb02dfb..e0e6b051 100644
--- a/Myshipping.Application/Service/TaskManagePlat/TaskDraftCompareService.cs
+++ b/Myshipping.Application/Service/TaskManagePlat/TaskDraftCompareService.cs
@@ -249,7 +249,7 @@ namespace Myshipping.Application
}
//如果确认文件读取成功
- var bookFilePath = await FileAttachHelper.MoveFile(bookingOrder.Id.ToString(), fileFullName, batchNo);
+ var bookFilePath = await FileAttachHelper.MoveFile(bookingOrder.Id.ToString(), fileFullName, batchNo, false, "draftfiles");
//将格式单附件写入订舱的附件
await SaveEDIFile(bookingOrder.Id, bookFilePath, new System.IO.FileInfo(fileFullName).Name, entity.TenantId.Value,
diff --git a/Myshipping.Application/Service/TaskManagePlat/TaskManageBCService.cs b/Myshipping.Application/Service/TaskManagePlat/TaskManageBCService.cs
index 2580989b..1a7cd46c 100644
--- a/Myshipping.Application/Service/TaskManagePlat/TaskManageBCService.cs
+++ b/Myshipping.Application/Service/TaskManagePlat/TaskManageBCService.cs
@@ -50,8 +50,13 @@ namespace Myshipping.Application
private readonly IServiceWorkFlowBaseService _serviceWorkFlowBaseService;
private readonly IBookingOrderService _bookingOrderService;
private readonly IBookingSlotService _bookingSlotService;
- private readonly IBookingValueAddedService _bookingValueAddedService;
+ private readonly IBookingValueAddedService _bookingValueAddedService;
+ const string CONST_BC_FILE_CODE = "bc";
+ const string CONST_BC_FILE_NAME = "Booking Confirmation";
+
+ const string CONST_BC_NOTICE_FILE_CODE = "bc_notice";
+ const string CONST_BC_NOTICE_FILE_NAME = "Booking Confirmation Notice";
public TaskManageBCService(SqlSugarRepository taskBCInfoRepository,
SqlSugarRepository taskBaseRepository,
@@ -661,14 +666,179 @@ namespace Myshipping.Application
throw Oops.Oh($"当前BC任务已生成订舱或舱位,不能重复生成");
}
-
if (model.GenerateMethod == "GEN_BOOKING_SLOT")
{
+ #region 推送舱位、推送订舱
//推送舱位
- GenerateBookingSlot(bcOrder, bcCtnList, fileList).GetAwaiter().GetResult();
+ var bookingSlotId = GenerateBookingSlot(bcOrder, bcCtnList, fileList).GetAwaiter().GetResult();
+
+ //推送订舱
+ var bookingOrderId = GenerateBookingOrder(bcOrder, bcCtnList, fileList, model).GetAwaiter().GetResult();
+
+ if (bookingSlotId > 0 || bookingOrderId > 0)
+ {
+ var bcEntity = _taskBCInfoRepository.AsQueryable().First(a => a.PK_ID == bcTaskInfo.PK_ID);
+
+ if (bcEntity != null)
+ {
+ if (bookingOrderId > 0)
+ bcEntity.BOOKING_ORDER_ID = bookingOrderId;
+
+ if (bookingSlotId > 0)
+ bcEntity.BOOKING_SLOT_ID = bookingSlotId;
+
+ bcEntity.UpdatedTime = DateTime.Now;
+ bcEntity.UpdatedUserId = UserManager.UserId;
+ bcEntity.UpdatedUserName = UserManager.Name;
+ _taskBCInfoRepository.AsUpdateable(bcEntity).UpdateColumns(it => new
+ {
+ it.BOOKING_ORDER_ID,
+ it.BOOKING_SLOT_ID,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ it.UpdatedUserName
+
+ }).ExecuteCommand();
+
+
+ var taskEntity = _taskBaseRepository.AsQueryable().First(u => u.PK_ID == bcEntity.TASK_ID);
+
+ if(taskEntity != null && taskEntity.IS_PUBLIC == 1)
+ {
+ taskEntity.IS_PUBLIC = 0;
+ taskEntity.CreatedUserId = UserManager.UserId;
+ taskEntity.CreatedUserName = UserManager.Name;
+ taskEntity.UpdatedTime = DateTime.Now;
+ taskEntity.UpdatedUserId = UserManager.UserId;
+ taskEntity.UpdatedUserName = UserManager.Name;
+
+ _taskBaseRepository.AsUpdateable(taskEntity).UpdateColumns(it => new
+ {
+ it.IS_PUBLIC,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ it.UpdatedUserName,
+ it.CreatedUserId,
+ it.CreatedUserName
+
+ }).ExecuteCommand();
+ }
+ }
+ }
+ #endregion
+ }
+ else if (model.GenerateMethod == "GEN_BOOKING")
+ {
+ #region 推送订舱
//推送订舱
var bookingOrderId = GenerateBookingOrder(bcOrder, bcCtnList, fileList, model).GetAwaiter().GetResult();
+
+ if (bookingOrderId > 0)
+ {
+ var bcEntity = _taskBCInfoRepository.AsQueryable().First(a => a.PK_ID == bcTaskInfo.PK_ID);
+
+ if (bcEntity != null)
+ {
+ if (bookingOrderId > 0)
+ bcEntity.BOOKING_ORDER_ID = bookingOrderId;
+
+ bcEntity.UpdatedTime = DateTime.Now;
+ bcEntity.UpdatedUserId = UserManager.UserId;
+ bcEntity.UpdatedUserName = UserManager.Name;
+
+ _taskBCInfoRepository.AsUpdateable(bcEntity).UpdateColumns(it => new
+ {
+ it.BOOKING_ORDER_ID,
+ it.BOOKING_SLOT_ID,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ it.UpdatedUserName
+
+ }).ExecuteCommand();
+
+
+ var taskEntity = _taskBaseRepository.AsQueryable().First(u => u.PK_ID == bcEntity.TASK_ID);
+
+ if (taskEntity != null && taskEntity.IS_PUBLIC == 1)
+ {
+ taskEntity.IS_PUBLIC = 0;
+ taskEntity.CreatedUserId = UserManager.UserId;
+ taskEntity.CreatedUserName = UserManager.Name;
+ taskEntity.UpdatedTime = DateTime.Now;
+ taskEntity.UpdatedUserId = UserManager.UserId;
+ taskEntity.UpdatedUserName = UserManager.Name;
+
+ _taskBaseRepository.AsUpdateable(taskEntity).UpdateColumns(it => new
+ {
+ it.IS_PUBLIC,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ it.UpdatedUserName,
+ it.CreatedUserId,
+ it.CreatedUserName
+
+ }).ExecuteCommand();
+ }
+ }
+ }
+ #endregion
+ }
+ else if (model.GenerateMethod == "GEN_BOOKING_SLOT")
+ {
+ #region 推送舱位
+ //推送舱位
+ var bookingSlotId = GenerateBookingSlot(bcOrder, bcCtnList, fileList).GetAwaiter().GetResult();
+
+ if (bookingSlotId > 0)
+ {
+ var bcEntity = _taskBCInfoRepository.AsQueryable().First(a => a.PK_ID == bcTaskInfo.PK_ID);
+
+ if (bcEntity != null)
+ {
+ if (bookingSlotId > 0)
+ bcEntity.BOOKING_SLOT_ID = bookingSlotId;
+
+ bcEntity.UpdatedTime = DateTime.Now;
+ bcEntity.UpdatedUserId = UserManager.UserId;
+ bcEntity.UpdatedUserName = UserManager.Name;
+
+ _taskBCInfoRepository.AsUpdateable(bcEntity).UpdateColumns(it => new
+ {
+ it.BOOKING_ORDER_ID,
+ it.BOOKING_SLOT_ID,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ it.UpdatedUserName
+
+ }).ExecuteCommand();
+
+
+ var taskEntity = _taskBaseRepository.AsQueryable().First(u => u.PK_ID == bcEntity.TASK_ID);
+
+ if (taskEntity != null && taskEntity.IS_PUBLIC == 1)
+ {
+ taskEntity.IS_PUBLIC = 0;
+ taskEntity.CreatedUserId = UserManager.UserId;
+ taskEntity.CreatedUserName = UserManager.Name;
+ taskEntity.UpdatedTime = DateTime.Now;
+ taskEntity.UpdatedUserId = UserManager.UserId;
+ taskEntity.UpdatedUserName = UserManager.Name;
+
+ _taskBaseRepository.AsUpdateable(taskEntity).UpdateColumns(it => new
+ {
+ it.IS_PUBLIC,
+ it.UpdatedTime,
+ it.UpdatedUserId,
+ it.UpdatedUserName,
+ it.CreatedUserId,
+ it.CreatedUserName
+
+ }).ExecuteCommand();
+ }
+ }
+ }
+ #endregion
}
result.succ = true;
@@ -710,6 +880,7 @@ namespace Myshipping.Application
{
CARRIERID = taskBCInfo.CARRIERID,
CARRIER = carrierInfo.CnName?.Trim(),
+ SLOT_BOOKING_NO = taskBCInfo.MBL_NO,
BOOKING_PARTY = taskBCInfo.BOOKING_PARTY,
BOOKING_SLOT_TYPE = taskBCInfo.BOOKING_SLOT_TYPE,
BOOKING_SLOT_TYPE_NAME = taskBCInfo.BOOKING_SLOT_TYPE_NAME,
@@ -768,15 +939,44 @@ namespace Myshipping.Application
//成功后写入附件
if (id > 0)
{
- taskFileList.ForEach(async file =>
+ var opt = App.GetOptions();
+ var dirAbs = opt.basePath;
+ if (string.IsNullOrEmpty(dirAbs))
{
- //System.IO.FileStream file = new System.IO.FileStream(file, FileMode.Open, FileAccess.Read);
- //附件暂存
- //var fileFullName = await FileAttachHelper.SaveFile(id, file, batchNo, "bc");
+ dirAbs = App.WebHostEnvironment.WebRootPath;
+ }
+
+ taskFileList.ForEach(file =>
+ {
+ if (file.FILE_CATEGORY == TaskFileCategoryEnum.BC.ToString())
+ {
+ var fileFullPath = Path.Combine(dirAbs, file.FILE_PATH);
+ if (File.Exists(fileFullPath))
+ {
+ //如果确认文件读取成功
+ var bookFilePath = FileAttachHelper.MoveFile(id.ToString(), fileFullPath, batchNo, false, "bcfiles", true).GetAwaiter().GetResult();
+ //将格式单附件写入订舱的附件
+ SaveEDIFile(id, bookFilePath, new System.IO.FileInfo(bookFilePath).Name, taskBCInfo.TenantId.Value,
+ CONST_BC_FILE_CODE, CONST_BC_FILE_NAME).GetAwaiter();
+ }
+ }
+ else if (file.FILE_CATEGORY == TaskFileCategoryEnum.BC_NOTICE.ToString())
+ {
+ var fileFullPath = Path.Combine(dirAbs, file.FILE_PATH);
+
+ if (File.Exists(fileFullPath))
+ {
+ //如果确认文件读取成功
+ var bookFilePath = FileAttachHelper.MoveFile(id.ToString(), fileFullPath, batchNo,false,"bcnoticefile",true).GetAwaiter().GetResult();
+
+ //将格式单附件写入订舱的附件
+ SaveEDIFile(id, bookFilePath, new System.IO.FileInfo(bookFilePath).Name, taskBCInfo.TenantId.Value,
+ CONST_BC_NOTICE_FILE_CODE, CONST_BC_NOTICE_FILE_NAME).GetAwaiter();
+ }
+ }
});
-
}
}
catch (Exception ex)
@@ -871,29 +1071,62 @@ namespace Myshipping.Application
id = bkRlt.Id;
- //附件暂存
- //var fileFullName = await FileAttachHelper.SaveFile(id, file, batchNo, CONST_DRAFT_FILE_CODE);
+ string batchNo = IDGen.NextID().ToString();
- //如果确认文件读取成功
- //var bookFilePath = await FileAttachHelper.MoveFile(bookingOrder.Id.ToString(), fileFullName, batchNo);
+ if (id > 0)
+ {
+ if (generateModel.ProjectList != null && generateModel.ProjectList.Count > 0)
+ {
+ ModifyServiceProjectDto projectDto = new ModifyServiceProjectDto
+ {
+ BookingId = id,
+ ProjectCodes = generateModel.ProjectList.Distinct().ToArray(),
+ };
+ //写入服务项目
+ var prjRlt = await _bookingValueAddedService.SaveServiceProject(projectDto);
- //写入附件
- //await SaveEDIFile(id, bookFilePath, new System.IO.FileInfo(fileFullName).Name, entity.TenantId.Value,
- // CONST_DRAFT_FILE_CODE, CONST_DRAFT_FILE_NAME);
+ _logger.LogInformation($"推送订舱的服务项目完成 id={id} rlt={JSON.Serialize(prjRlt)}");
+ }
- if (generateModel.ProjectList != null && generateModel.ProjectList.Count > 0)
- {
- ModifyServiceProjectDto projectDto = new ModifyServiceProjectDto
+ var opt = App.GetOptions();
+ var dirAbs = opt.basePath;
+ if (string.IsNullOrEmpty(dirAbs))
+ {
+ dirAbs = App.WebHostEnvironment.WebRootPath;
+ }
+
+ taskFileList.ForEach(file =>
{
- BookingId = id,
- ProjectCodes = generateModel.ProjectList.Distinct().ToArray(),
- };
- //写入服务项目
- var prjRlt = await _bookingValueAddedService.SaveServiceProject(projectDto);
+ if (file.FILE_CATEGORY == TaskFileCategoryEnum.BC.ToString())
+ {
+ var fileFullPath = Path.Combine(dirAbs, file.FILE_PATH);
+
+ if (File.Exists(fileFullPath))
+ {
+ //如果确认文件读取成功
+ var bookFilePath = FileAttachHelper.MoveFile(id.ToString(), fileFullPath, batchNo).GetAwaiter().GetResult();
+
+ //将格式单附件写入订舱的附件
+ SaveEDIFile(id, bookFilePath, new System.IO.FileInfo(bookFilePath).Name, taskBCInfo.TenantId.Value,
+ CONST_BC_FILE_CODE, CONST_BC_FILE_NAME).GetAwaiter();
+ }
+ }
+ else if (file.FILE_CATEGORY == TaskFileCategoryEnum.BC_NOTICE.ToString())
+ {
+ var fileFullPath = Path.Combine(dirAbs, file.FILE_PATH);
- _logger.LogInformation($"推送订舱的服务项目完成 id={id} rlt={JSON.Serialize(prjRlt)}");
+ if (File.Exists(fileFullPath))
+ {
+ //如果确认文件读取成功
+ var bookFilePath = FileAttachHelper.MoveFile(id.ToString(), fileFullPath, batchNo, false, "bcnoticefile").GetAwaiter().GetResult();
+
+ //将格式单附件写入订舱的附件
+ SaveEDIFile(id, bookFilePath, new System.IO.FileInfo(bookFilePath).Name, taskBCInfo.TenantId.Value,
+ CONST_BC_NOTICE_FILE_CODE, CONST_BC_NOTICE_FILE_NAME).GetAwaiter();
+ }
+ }
+ });
}
-
_logger.LogInformation($"任务BC MBLNO:{taskBCInfo.MBL_NO} 生成订舱成功 id={id}");