diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs
index afcae904..6cab8446 100644
--- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs
+++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs
@@ -740,7 +740,6 @@ namespace Myshipping.Application
///
///
[HttpPost("/BookingOrder/Save")]
-
public async Task Save(SaveBookingOrderInput input)
{
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 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);
_logger.LogInformation("保存权限范围:" + rightlist.ToJsonString());
//除现有配置权限外 操作和本人具有编辑权限
@@ -946,9 +956,6 @@ namespace Myshipping.Application
}
}
-
-
-
await _rep.AsUpdateable(entity).IgnoreColumns(it => new
{
it.ParentId,
@@ -977,15 +984,25 @@ namespace Myshipping.Application
it.MiddleATD,
it.ATA
}).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 _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)
{
foreach (var item in input.ctnInputs)
{
var ctnentity = item.Adapt();
+ //封账处理
+ 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;
await _repCtn.InsertAsync(ctnentity);
if (item.ctnDetailInputs != null)
@@ -1193,8 +1210,6 @@ namespace Myshipping.Application
return ordOut;
}
-
-
///
/// 在订舱台账保存单证备注、操作备注等功能
///
@@ -8679,6 +8694,69 @@ HLCUTA12307DPXJ3 以这票为例 6个柜
}
+
+ ///
+ /// 判断是否可以编辑主单 True可以
+ ///
+ ///
+ ///
+ ///
+ public async Task 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;
+ }
+
+
+ ///
+ /// 判断是否可以编辑箱信息 True可以
+ ///
+ ///
+ ///
+ ///
+ public async Task 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
#region 临时测试使用
@@ -9262,11 +9340,7 @@ HLCUTA12307DPXJ3 以这票为例 6个柜
}
}
-
return extends;
-
-
-
}
diff --git a/Myshipping.Application/Service/DataSync/DataSyncService.cs b/Myshipping.Application/Service/DataSync/DataSyncService.cs
index 61ff6bf4..59a078e3 100644
--- a/Myshipping.Application/Service/DataSync/DataSyncService.cs
+++ b/Myshipping.Application/Service/DataSync/DataSyncService.cs
@@ -2619,13 +2619,6 @@ namespace Myshipping.Application
}
}
}
-
-
-
-
-
-
-
#endregion
}
}