cjy 3 months ago
commit 0283f2df03

@ -34,7 +34,10 @@ namespace DS.Module.Core.Condition
else if (dataContext.ContainsKey(item.Field))
{
var obj = dataContext.Get<object>(item.Field)!;
valStr = obj.ToString();
if (obj != null)
{
valStr = obj.ToString();
}
}
else if (item.Field!.Contains('.'))
{

@ -1502,6 +1502,8 @@ public static class MultiLanguageConst
public const string TaskAuditStatusError = "Task_Audit_Status_Error";
[Description("无法从配置中获取任务接收人,请检查是否设置了订单的操作/客服/单证等人员,或联系管理员检查配置")]
public const string TaskReceiverNotFound = "Task_Receiver_Not_Found";
[Description("未找到此票订单的订舱任务")]
public const string BookingTaskNotFound = "Booking_Task_NotFound";
[Description("任务邮件必须设置收件人")]
public const string TaskMailReceiverNotNull = "Task_Mail_Receiver_Not_Null";

@ -102,6 +102,11 @@ namespace DS.Module.Core.Enums
/// </summary>
[Description("报废")]
= 7,
/// <summary>
/// 单程业务
/// </summary>
[Description("单程业务还箱")]
= 8,
}

@ -9,183 +9,7 @@ namespace DS.WMS.ContainerManagement.Info.Dtos;
/// <summary>
/// 箱管_租箱租出 请求实体
/// </summary>
public class CM_RentOneWay_DetailReq
public class CM_RentOneWay_DetailReq: CM_Rent_DetailBase
{
/// <summary>
/// 主键Id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 租箱业务id
/// </summary>
public long Pid { get; set; }
/// <summary>
/// Desc:租箱业务号
/// </summary>
public string Billno { get; set; }
/// <summary>
/// Desc:箱号
/// </summary>
public string Cntrno { get; set; }
/// <summary>
/// 箱型代码
/// </summary>
public string CtnCode { get; set; }
/// <summary>
/// Desc:箱型
/// </summary>
public string Ctnall { get; set; }
/// <summary>
/// Desc:原箱主Id
/// </summary>
public long OldContainerOwnerId { get; set; }
/// <summary>
/// Desc:原箱主
/// </summary>
public string OldContainerOwner { get; set; }
/// <summary>
/// Desc:租箱客户Id
/// </summary>
public long RentCustomerId { get; set; }
/// <summary>
/// Desc:租箱客户
/// </summary>
public string RentCustomerName { get; set; }
/// <summary>
/// Desc:租箱业务方向Id
/// </summary>
public CMRentDirectEnum? RentDirectId { get; set; }
/// <summary>
/// Desc:租箱业务方向
/// </summary>
public string? RentDirect => RentDirectId?.EnumDescription();
/// <summary>
/// Desc:租箱类型Id 长租1 短租0 单程2
/// </summary>
public CMRentTypeEnum? RentTypeId { get; set; }
/// <summary>
/// Desc:租箱业务方向
/// </summary>
public string? RentType => RentTypeId?.EnumDescription();
/// <summary>
/// Desc:业务状态
/// </summary>
public string BillState { get; set; }
/// <summary>
/// Desc:关联放箱单号
/// </summary>
public string CtnReleaseNo { get; set; }
/// <summary>
/// Desc:租入日期
/// </summary>
public DateTime? Bsdate { get; set; }
/// <summary>
/// Desc:开始计费日期
/// </summary>
public string FeeStartDate { get; set; }
/// <summary>
/// Desc:币别
/// </summary>
public string Currency { get; set; } = "USD";
/// <summary>
/// Desc:日租金
/// </summary>
public decimal? DailyRate { get; set; } = 0M;
/// <summary>
/// Desc:提箱费
/// </summary>
public decimal? PickupFee { get; set; } = 0M;
/// <summary>
/// Desc:提箱日期
/// </summary>
public DateTime? PickupDate { get; set; }
/// <summary>
/// Desc:还箱费
/// </summary>
public decimal? DropoffFee { get; set; } = 0M;
/// <summary>
/// Desc:还箱日期
/// </summary>
public DateTime? DropoffDate { get; set; }
/// <summary>
/// Desc:起租地点代码
/// </summary>
public string RentalPortid { get; set; }
/// <summary>
/// Desc:起租地点五字码
/// </summary>
public string RentalPortCode { get; set; }
/// <summary>
/// Desc:起租地点
/// </summary>
public string RentalPort { get; set; }
/// <summary>
/// Desc:提箱港口代码
/// </summary>
public long? PickupPortid { get; set; }
/// <summary>
/// Desc:提箱港口五字码
/// </summary>
public string PickupPortCode { get; set; }
/// <summary>
/// Desc:提箱港口
/// </summary>
public string PickupPort { get; set; }
/// <summary>
/// Desc:还箱港口代码
/// </summary>
public long? DropoffPortid { get; set; }
/// <summary>
/// Desc:还箱港口五字码
/// </summary>
public string DropoffPortCode { get; set; }
/// <summary>
/// Desc:还箱港口
/// </summary>
public string DropoffPort { get; set; }
/// <summary>
/// Desc:业务编号/提单号
/// </summary>
public string Mblno { get; set; }
/// <summary>
/// Desc:船名航次
/// </summary>
public string? VesselVoyno { get; set; }
/// <summary>
/// 在 租箱租入_退租 或 租箱租出_退租 中 记录对应的租入或租出业务Id
/// </summary>
public long RentDetailId { get; set; }
}

@ -8,181 +8,7 @@ namespace DS.WMS.ContainerManagement.Info.Dtos;
/// <summary>
/// 箱管_租箱租出 返回实体
/// </summary>
public class CM_RentOneWay_DetailRes
public class CM_RentOneWay_DetailRes: CM_Rent_DetailBase
{
/// <summary>
/// 主键Id
/// </summary>
public long Id { get; set; }
/// <summary>
/// 租箱业务id
/// </summary>
public long Pid { get; set; }
/// <summary>
/// Desc:租箱业务号
/// </summary>
public string Billno { get; set; }
/// <summary>
/// Desc:箱号
/// </summary>
public string Cntrno { get; set; }
/// <summary>
/// 箱型代码
/// </summary>
public string CtnCode { get; set; }
/// <summary>
/// Desc:箱型
/// </summary>
public string Ctnall { get; set; }
/// <summary>
/// Desc:原箱主Id
/// </summary>
public long OldContainerOwnerId { get; set; }
/// <summary>
/// Desc:原箱主
/// </summary>
public string OldContainerOwner { get; set; }
/// <summary>
/// Desc:租箱客户Id
/// </summary>
public long RentCustomerId { get; set; }
/// <summary>
/// Desc:租箱客户
/// </summary>
public string RentCustomerName { get; set; }
/// <summary>
/// Desc:租箱业务方向Id
/// </summary>
public CMRentDirectEnum? RentDirectId { get; set; }
/// <summary>
/// Desc:租箱业务方向
/// </summary>
public string? RentDirect => RentDirectId?.EnumDescription();
/// <summary>
/// Desc:租箱类型Id 长租1 短租0 单程2
/// </summary>
public CMRentTypeEnum? RentTypeId { get; set; }
/// <summary>
/// Desc:租箱业务方向
/// </summary>
public string? RentType => RentTypeId?.EnumDescription();
/// <summary>
/// Desc:业务状态
/// </summary>
public string BillState { get; set; }
/// <summary>
/// Desc:关联放箱单号
/// </summary>
public string CtnReleaseNo { get; set; }
/// <summary>
/// Desc:租入日期
/// </summary>
public DateTime? Bsdate { get; set; }
/// <summary>
/// Desc:开始计费日期
/// </summary>
public string FeeStartDate { get; set; }
/// <summary>
/// Desc:币别
/// </summary>
public string Currency { get; set; } = "USD";
/// <summary>
/// Desc:日租金
/// </summary>
public decimal? DailyRate { get; set; } = 0M;
/// <summary>
/// Desc:提箱费
/// </summary>
public decimal? PickupFee { get; set; } = 0M;
/// <summary>
/// Desc:提箱日期
/// </summary>
public DateTime? PickupDate { get; set; }
/// <summary>
/// Desc:还箱费
/// </summary>
public decimal? DropoffFee { get; set; } = 0M;
/// <summary>
/// Desc:还箱日期
/// </summary>
public DateTime? DropoffDate { get; set; }
/// <summary>
/// Desc:起租地点代码
/// </summary>
public string RentalPortid { get; set; }
/// <summary>
/// Desc:起租地点五字码
/// </summary>
public string RentalPortCode { get; set; }
/// <summary>
/// Desc:起租地点
/// </summary>
public string RentalPort { get; set; }
/// <summary>
/// Desc:提箱港口代码
/// </summary>
public long? PickupPortid { get; set; }
/// <summary>
/// Desc:提箱港口五字码
/// </summary>
public string PickupPortCode { get; set; }
/// <summary>
/// Desc:提箱港口
/// </summary>
public string PickupPort { get; set; }
/// <summary>
/// Desc:还箱港口代码
/// </summary>
public string DropoffPortid { get; set; }
/// <summary>
/// Desc:还箱港口五字码
/// </summary>
public long? DropoffPortCode { get; set; }
/// <summary>
/// Desc:还箱港口
/// </summary>
public string DropoffPort { get; set; }
/// <summary>
/// Desc:业务编号/提单号
/// </summary>
public string Mblno { get; set; }
/// <summary>
/// Desc:船名航次
/// </summary>
public string? VesselVoyno { get; set; }
/// <summary>
/// 在 租箱租入_退租 或 租箱租出_退租 中 记录对应的租入或租出业务Id
/// </summary>
public long RentDetailId { get; set; }
}

@ -12,9 +12,9 @@ namespace DS.WMS.ContainerManagement.Info.Entity;
public class VW_CM_NeedEndLease_Detail : BaseOrgModel<long>
{
/// <summary>
/// 租箱业务id
/// 租箱租出业务明细id
/// </summary>
[SugarColumn(ColumnDescription = "租箱业务id", IsNullable = false)]
[SugarColumn(ColumnDescription = "租箱租出业务明细id", IsNullable = false)]
public long Pid { get; set; }
/// <summary>
@ -216,5 +216,20 @@ public class VW_CM_NeedEndLease_Detail : BaseOrgModel<long>
/// </summary>
[SugarColumn(ColumnDescription = "箱业务状态Id", IsNullable = true)]
public CM_CtnBizStateEnum? CtnBizStateId { get; set; }
/// <summary>
/// <summary>
/// Desc:箱状态Id
/// </summary>
[SugarColumn(ColumnDescription = "箱状态Id", IsNullable = true)]
public CMCtnStateEnum? CtnStateId { get; set; }
/// <summary>
/// Desc:箱流转状态Id
/// </summary>
[SugarColumn(ColumnDescription = "箱流转状态Id", IsNullable = true)]
public CMCtnFlowStateEnum? CtnFlowStateId { get; set; }
}

@ -12,9 +12,9 @@ namespace DS.WMS.ContainerManagement.Info.Entity;
public class VW_CM_RentOut_NeedEndLease : BaseOrgModel<long>
{
/// <summary>
/// 租箱业务id
/// 租箱租出业务明细id
/// </summary>
[SugarColumn(ColumnDescription = "租箱业务id", IsNullable = false)]
[SugarColumn(ColumnDescription = "租箱租出业务明细id", IsNullable = false)]
public long Id { get; set; }
/// <summary>

@ -3,6 +3,7 @@ using DS.WMS.ContainerManagement.Info.Dtos;
using DS.WMS.Core.Info.Dtos;
using DS.WMS.Core.Op.View;
using DS.WMS.Core.Sys.Dtos;
using SqlSugar;
namespace DS.WMS.ContainerManagement.Info.Interface;
@ -16,6 +17,8 @@ public interface ICM_CurrentStateService
//DataResult<List<CM_CurrentStateRes>> GetListByPage(PageRequest request);
public Task<DataResult<List<CM_CurrentStateRes>>> GetListByPage(PageRequest request);
public ISugarQueryable<CM_CurrentStateRes> CreateCurrentStateQuery();
/// <summary>
/// 编辑
/// </summary>

@ -36,4 +36,20 @@ public interface ICM_RentOneWayService
/// <param name="ids">单程业务业务ID</param>
/// <returns></returns>
Task<DataResult> DeleteCM_RentOneWayAsync(params long[] ids);
///// <summary>
///// 单程_确认
///// </summary>
///// <param name="id"></param>
///// <returns></returns>
//Task<DataResult> CM_RentIn_Confirm(string id, params long[] ids);
//Task<DataResult> CM_RentIn_Confirm(params long[] ids);
///// <summary>
///// 单程_取消
///// </summary>
///// <param name="id"></param>
///// <returns></returns>
//Task<DataResult> CM_RentIn_Cancel(string id, params long[] ids);
//Task<DataResult> CM_RentIn_Cancel(params long[] ids);
}

@ -39,6 +39,7 @@ public class CM_RentOutService : CMServiceBase, ICM_RentOutService
private readonly ICommonService commonService;
readonly IFeeRecordService _feeService;
readonly ICM_State_ChangeService _Changeservice;
readonly ICM_CurrentStateService _CurrentStateservice;
private readonly IFeeCurrencyExchangeService feeCurrencyExchangeService;
/// <summary>
///
@ -56,6 +57,7 @@ public class CM_RentOutService : CMServiceBase, ICM_RentOutService
_feeService = _serviceProvider.GetRequiredService<IFeeRecordService>();
_Changeservice = _serviceProvider.GetRequiredService<ICM_State_ChangeService>();
_CurrentStateservice= _serviceProvider.GetRequiredService<ICM_CurrentStateService>();
feeCurrencyExchangeService = _serviceProvider.GetRequiredService<IFeeCurrencyExchangeService>();
}
@ -418,7 +420,7 @@ public class CM_RentOutService : CMServiceBase, ICM_RentOutService
changerec.CtnFlowStateId = CMCtnFlowStateEnum.;
changerec.ChangeTime = detail.DropoffDate;
changerec.IsOnlineId = CM_IsOnlineEnum.线;
changerec.IsOnlineId = CM_IsOnlineEnum.线;
}
@ -747,8 +749,14 @@ public class CM_RentOutService : CMServiceBase, ICM_RentOutService
var CurrentDetailList = TenantDb.Queryable<CM_RentOut_Detail>()
.Where(a => a.Pid == id).ToList();
var AddCurrentStateList = TenantDb.Queryable<CM_CurrentState>()
.Where(a => ids.Contains(a.Id)).ToList();
//var AddCurrentStateList = TenantDb.Queryable<CM_CurrentState>()
// .Where(a => ids.Contains(a.Id)).ToList();
var quary = CreateCurrentStateQuery();
var AddCurrentStateList= TenantDb.Queryable(quary)
.Where(a => ids.Contains(a.Id))
.Select<CM_CurrentStateRes>().ToList();
var addList = new List<CM_RentOut_Detail>();

@ -3,6 +3,7 @@ using DS.WMS.Core.Op.Dtos;
using DS.WMS.Core.Op.Dtos.TaskInteraction;
using DS.WMS.Core.Op.Interface;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor.Booking
{
@ -23,7 +24,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor.Booking
var opService = context.ServiceProvider.GetRequiredService<ISeaExportService>();
//发送订舱EDI
var result2 = await opService.SendBookingOrClosingEDI(new BookingOrClosingEDIOrderReq
var req = new BookingOrClosingEDIOrderReq
{
Id = context.TaskInfo.BusinessId,
UseForwarderCode = false,
@ -32,11 +33,13 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor.Booking
FileRole = "9",
SendType = "B",
Send = true
});
};
var result = await opService.SendBookingOrClosingEDI(req);
//订舱未成功
if (!result2.Succeeded)
if (!result.Succeeded)
{
await LogService.WriteLogAsync(context.TaskInfo, "EDI返回结果失败自动订舱未成功");
await LogService.WriteLogAsync(context.TaskInfo, "EDI返回结果失败自动订舱未成功" + Environment.NewLine + "请求参数:"
+ JsonConvert.SerializeObject(req) + Environment.NewLine + "响应参数:" + result.Data);
return;
}

@ -1,8 +1,9 @@
using DS.WMS.Core.Op.Dtos;
using DS.WMS.Core.Op.Dtos.TaskInteraction;
using DS.WMS.Core.Op.Interface.TaskInteraction;
using DS.WMS.Core.Op.Interface;
using DS.WMS.Core.Op.Interface.TaskInteraction;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor
{
@ -17,8 +18,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor
var taskService = context.ServiceProvider.GetRequiredService<ITaskService>();
var logService = context.ServiceProvider.GetRequiredService<ITaskLogService>();
//发送截单EDI
var result = await opService.SendBookingOrClosingEDI(new BookingOrClosingEDIOrderReq
var req = new BookingOrClosingEDIOrderReq
{
Id = context.TaskInfo.BusinessId,
UseForwarderCode = false,
@ -27,11 +27,14 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor
FileRole = "9",
SendType = "E",
Send = true
});
};
//发送截单EDI
var result = await opService.SendBookingOrClosingEDI(req);
//EDI提交未成功
if (!result.Succeeded)
{
await logService.WriteLogAsync(context.TaskInfo, "截单EDI返回结果失败");
await logService.WriteLogAsync(context.TaskInfo, "EDI返回结果失败自动截单未成功" + Environment.NewLine + "请求参数:"
+ JsonConvert.SerializeObject(req) + Environment.NewLine + "响应参数:" + result.Data);
return;
}

@ -12,6 +12,7 @@ using DS.WMS.Core.TaskPlat.Entity;
using DS.WMS.Core.TaskPlat.Interface;
using Masuit.Tools.Systems;
using Microsoft.Extensions.DependencyInjection;
using Newtonsoft.Json;
namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor.SpaceRelease
{
@ -122,7 +123,11 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction.ActionExecutor.SpaceRelease
var result = await BCService.SyncBookingSlotChange(taskBase.Id);
if (!result.Succeeded)
{
await LogService.WriteLogAsync(context.TaskInfo, "转发BC返回结果失败自动放舱未成功" + Environment.NewLine + "请求参数:"
+ taskBase.Id + Environment.NewLine + "响应参数:" + result.Data == null ? string.Empty : JsonConvert.SerializeObject(result.Data));
return;
}
await SetTaskCompleteAsync(context.TaskInfo,
context.ServiceProvider.GetRequiredService<ITaskService>(), LogService);

@ -248,7 +248,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
var businessTask = await TenantDb.Queryable<BusinessTask>().Where(
x => x.BusinessId == businessId && x.BusinessType == businessType && x.TaskType == TaskBaseTypeEnum.WAIT_BOOKING).FirstAsync();
if (businessTask == null)
return DataResult.FailedWithDesc(MultiLanguageConst.TaskStatusNotSupported);
return DataResult.FailedWithDesc(MultiLanguageConst.BookingTaskNotFound);
TaskFlowDataContext dataContext = new
(

@ -113,7 +113,7 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
if (request.HasCabin.GetValueOrDefault())
{
//如果为现舱,获取下一任务类型进行创建
var nextType = await GetNextTypeAsync(request.BusinessId, request.BusinessType, request.TaskType);
var nextType = await GetNextTypeAsync(request.BusinessId, request.BusinessType, request.TaskType, request.HasCabin);
if (nextType.HasValue)
request.TaskTypeName = nextType.Value.ToString();
}
@ -759,15 +759,17 @@ namespace DS.WMS.Core.Op.Method.TaskInteraction
/// <param name="bsId">业务ID</param>
/// <param name="businessType">业务类型</param>
/// <param name="currentType">当前任务类型</param>
/// <param name="hasCabin">是否现舱</param>
/// <returns></returns>
protected async Task<TaskBaseTypeEnum?> GetNextTypeAsync(long bsId, BusinessType businessType, TaskBaseTypeEnum currentType)
protected async Task<TaskBaseTypeEnum?> GetNextTypeAsync(long bsId, BusinessType businessType, TaskBaseTypeEnum currentType, bool? hasCabin = null)
{
var order = await ActionService.GetBusinessDataAsync(bsId, businessType);
TaskFlowRuner flowRuner = new(TenantDb, ServiceProvider);
return await flowRuner.GetWorkFlowNextConfigByTaskType(TaskBaseTypeEnum.WORK_FLOW_MAIN,
new TaskFlowDataContext(
(TaskFlowDataNameConst.Business, order)
), currentType);
var dataContext = new TaskFlowDataContext(
(TaskFlowDataNameConst.Business, order),
(nameof(hasCabin), hasCabin.HasValue ? hasCabin.ToString() : string.Empty)
);
return await flowRuner.GetWorkFlowNextConfigByTaskType(TaskBaseTypeEnum.WORK_FLOW_MAIN, dataContext, currentType);
}
/// <summary>

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<NameOfLastUsedPublishProfile>E:\MyCode\Dongsheng8\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<NameOfLastUsedPublishProfile>D:\Source\Repos\DS8\ds-wms-service\DS.WMS.OpApi\Properties\PublishProfiles\FolderProfile.pubxml</NameOfLastUsedPublishProfile>
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
</PropertyGroup>

Loading…
Cancel
Save