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 } }