|
|
@ -740,7 +740,6 @@ namespace Myshipping.Application
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <param name="input"></param>
|
|
|
|
/// <returns></returns>
|
|
|
|
/// <returns></returns>
|
|
|
|
[HttpPost("/BookingOrder/Save")]
|
|
|
|
[HttpPost("/BookingOrder/Save")]
|
|
|
|
|
|
|
|
|
|
|
|
public async Task<BookingOrderOutput> Save(SaveBookingOrderInput input)
|
|
|
|
public async Task<BookingOrderOutput> Save(SaveBookingOrderInput input)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (input == null)
|
|
|
|
if (input == null)
|
|
|
@ -905,6 +904,17 @@ namespace Myshipping.Application
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
var mlist = await _rep.AsQueryable().Filter(null, true).Where(x => x.Id == input.Id).FirstAsync();
|
|
|
|
var mlist = await _rep.AsQueryable().Filter(null, true).Where(x => x.Id == input.Id).FirstAsync();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//封账处理
|
|
|
|
|
|
|
|
var extend = _repextendstate.FirstOrDefault(x => x.bookingId == input.Id);
|
|
|
|
|
|
|
|
var isextendorder = await GetIsBookingLockOrder(entity, mlist);
|
|
|
|
|
|
|
|
if (extend != null && extend.IsLockBooking && !isextendorder)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw Oops.Bah("当前单据已封账,不允许修改");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var rightlist = await _right.GetDataScopeList(MenuConst.MenuBookingOrder, true);
|
|
|
|
var rightlist = await _right.GetDataScopeList(MenuConst.MenuBookingOrder, true);
|
|
|
|
_logger.LogInformation("保存权限范围:" + rightlist.ToJsonString());
|
|
|
|
_logger.LogInformation("保存权限范围:" + rightlist.ToJsonString());
|
|
|
|
//除现有配置权限外 操作和本人具有编辑权限
|
|
|
|
//除现有配置权限外 操作和本人具有编辑权限
|
|
|
@ -946,9 +956,6 @@ namespace Myshipping.Application
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
await _rep.AsUpdateable(entity).IgnoreColumns(it => new
|
|
|
|
await _rep.AsUpdateable(entity).IgnoreColumns(it => new
|
|
|
|
{
|
|
|
|
{
|
|
|
|
it.ParentId,
|
|
|
|
it.ParentId,
|
|
|
@ -977,15 +984,25 @@ namespace Myshipping.Application
|
|
|
|
it.MiddleATD,
|
|
|
|
it.MiddleATD,
|
|
|
|
it.ATA
|
|
|
|
it.ATA
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
}).ExecuteCommandAsync();
|
|
|
|
var ctnlist = await _repCtn.AsQueryable().Filter(null, true).Where(x => x.BILLID == input.Id && x.IsDeleted == false).Select(x => x.Id).ToListAsync();
|
|
|
|
var ctnlist = await _repCtn.AsQueryable().Filter(null, true).Where(x => x.BILLID == input.Id && x.IsDeleted == false).ToListAsync();
|
|
|
|
//删除箱信息 重新插入
|
|
|
|
//删除箱信息 重新插入
|
|
|
|
await _repCtn.DeleteAsync(x => x.BILLID == input.Id);
|
|
|
|
await _repCtn.DeleteAsync(x => x.BILLID == input.Id);
|
|
|
|
await _ctndetailrep.DeleteAsync(x => ctnlist.Contains((long)x.CTNID));
|
|
|
|
await _ctndetailrep.DeleteAsync(x => ctnlist.Select(x => x.Id).Contains((long)x.CTNID));
|
|
|
|
if (input.ctnInputs != null)
|
|
|
|
if (input.ctnInputs != null)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
foreach (var item in input.ctnInputs)
|
|
|
|
foreach (var item in input.ctnInputs)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var ctnentity = item.Adapt<BookingCtn>();
|
|
|
|
var ctnentity = item.Adapt<BookingCtn>();
|
|
|
|
|
|
|
|
//封账处理
|
|
|
|
|
|
|
|
var oldctn = ctnlist.Where(x => x.CNTRNO == item.CNTRNO).First();
|
|
|
|
|
|
|
|
if (oldctn != null)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var isextendctn = await GetIsBookingLockCtn(ctnentity, oldctn);
|
|
|
|
|
|
|
|
if (extend != null && extend.IsLockBooking && !isextendorder)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
throw Oops.Bah("当前单据已封账,不允许修改箱信息");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
ctnentity.BILLID = entity.Id;
|
|
|
|
ctnentity.BILLID = entity.Id;
|
|
|
|
await _repCtn.InsertAsync(ctnentity);
|
|
|
|
await _repCtn.InsertAsync(ctnentity);
|
|
|
|
if (item.ctnDetailInputs != null)
|
|
|
|
if (item.ctnDetailInputs != null)
|
|
|
@ -1193,8 +1210,6 @@ namespace Myshipping.Application
|
|
|
|
return ordOut;
|
|
|
|
return ordOut;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 在订舱台账保存单证备注、操作备注等功能
|
|
|
|
/// 在订舱台账保存单证备注、操作备注等功能
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
@ -8679,6 +8694,69 @@ HLCUTA12307DPXJ3 以这票为例 6个柜
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// 判断是否可以编辑主单 True可以
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="newOrder"></param>
|
|
|
|
|
|
|
|
/// <param name="oldOrder"></param>
|
|
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
|
|
public async Task<bool> GetIsBookingLockOrder(BookingOrder newOrder, BookingOrder oldOrder)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var list = _cache.GetAllDictData().Result.Where(x => x.TypeCode == "BookingLockOrder").ToList();
|
|
|
|
|
|
|
|
foreach (var item in list)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(newOrder))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
string name = descriptor.Name;
|
|
|
|
|
|
|
|
if (name.ToUpper() == item.Code.ToUpper())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
object value = descriptor.GetValue(newOrder);
|
|
|
|
|
|
|
|
var oldvalue = oldOrder.GetType().GetProperty(name).GetValue(oldOrder, null);
|
|
|
|
|
|
|
|
string _oldvalue = oldvalue != null ? oldvalue.ToString() : "";
|
|
|
|
|
|
|
|
string _value = value != null ? value.ToString() : "";
|
|
|
|
|
|
|
|
if (_oldvalue != _value)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
|
|
/// 判断是否可以编辑箱信息 True可以
|
|
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
|
|
/// <param name="newOrder"></param>
|
|
|
|
|
|
|
|
/// <param name="oldOrder"></param>
|
|
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
|
|
public async Task<bool> GetIsBookingLockCtn(BookingCtn newOrder, BookingCtn oldOrder)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
var list = _cache.GetAllDictData().Result.Where(x => x.TypeCode == "BookingLockCtn").ToList();
|
|
|
|
|
|
|
|
foreach (var item in list)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(newOrder))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
string name = descriptor.Name;
|
|
|
|
|
|
|
|
if (name.ToUpper() == item.Code.ToUpper())
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
object value = descriptor.GetValue(newOrder);
|
|
|
|
|
|
|
|
var oldvalue = oldOrder.GetType().GetProperty(name).GetValue(oldOrder, null);
|
|
|
|
|
|
|
|
string _oldvalue = oldvalue != null ? oldvalue.ToString() : "";
|
|
|
|
|
|
|
|
string _value = value != null ? value.ToString() : "";
|
|
|
|
|
|
|
|
if (_oldvalue != _value)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
#endregion
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
#region 临时测试使用
|
|
|
|
#region 临时测试使用
|
|
|
@ -9262,11 +9340,7 @@ HLCUTA12307DPXJ3 以这票为例 6个柜
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return extends;
|
|
|
|
return extends;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|