diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index 66fe42b6..f05b9440 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -494,7 +494,7 @@ namespace Myshipping.Application var groupList = input.ctnInputs.Where(x => x.CTNNUM > 0).GroupBy(c => c.CTNALL).Select(g => $"{g.Key}*{g.Sum(gg => gg.CTNNUM)}"); input.CNTRTOTAL = string.Join(" / ", groupList); } - var main = await _rep.AsQueryable().Where(x => x.Id == input.Id).FirstAsync(); + var main = await _rep.AsQueryable().Filter(null,true).Where(x => x.Id == input.Id).FirstAsync(); var et = await _rep.Where(x => x.MBLNO == input.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == input.HBLNO && x.ParentId == input.ParentId && x.Id != input.Id).FirstAsync(); if (et != null) @@ -506,7 +506,14 @@ namespace Myshipping.Application var entity = input.Adapt(); //entity.TOTALNO = NumberToUpper.ToUpper(entity.PKGS == null ? 0 : entity.PKGS); - await _rep.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + await _rep.AsUpdateable(entity).IgnoreColumns(it => new + { + it.ParentId, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); var ctnlist = await _repCtn.AsQueryable().Where(x => x.BILLID == input.Id).Select(x => x.Id).ToListAsync(); await _repCtn.DeleteAsync(x => x.BILLID == input.Id); await _ctndetailrep.DeleteAsync(x => ctnlist.Contains((long)x.CTNID)); @@ -762,7 +769,14 @@ namespace Myshipping.Application { var entity = _bookingremark.FirstOrDefault(x => x.Id == dto.Id); entity.Remark = dto.Remark; - await _bookingremark.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); + await _bookingremark.AsUpdateable(entity).IgnoreColumns(it => new + { + + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); } } @@ -1786,7 +1800,7 @@ namespace Myshipping.Application - fileName = $"{dicCate.Value}_{order.MBLNO}_{printTemplate.DisplayName}_{DateTime.Now.Ticks}{fileType}";//名称 + fileName = $"{dicCate.Value}_{order.MBLNO}_{DateTime.Now.Ticks}{fileType}";//名称 var opt = App.GetOptions().Path; var serverpath = Path.Combine(App.WebHostEnvironment.WebRootPath, opt);//服务器路径 if (!Directory.Exists(serverpath)) @@ -1825,31 +1839,30 @@ namespace Myshipping.Application if (entity.Where(x => x.Row == _row).Count() > 0) { - - - - //获取行 - var row = sheet.GetRow(_row); + ////获取行 + var row = sheet.GetRow(_row-1); if (row != null) { - for (int _cellNum = 0; _cellNum < entity.Max(x => x.Column); _cellNum++) + for (int _cellNum = 1; _cellNum <= entity.Max(x => x.Column); _cellNum++) { - if (entity.Where(x => x.Row == _row && x.Column == _cellNum + 1).Count() > 0) + if (entity.Where(x => x.Row == _row && x.Column == _cellNum).Count() > 0) { foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(order)) { - var name = entity.Where(x => x.Row == _row && x.Column == _cellNum + 1).Select(x => x.Field).FirstOrDefault(); + var name = entity.Where(x => x.Row == _row && x.Column == _cellNum).Select(x => x.Field).FirstOrDefault(); var _name = descriptor.Name.ToLower(); if (name == _name) { var value = descriptor.GetValue(order).ToString(); - if (_cellNum < row.Cells.Count()) + ICell cell= row.GetCell(_cellNum - 1); + + if (cell != null) { - row.Cells[_cellNum].SetCellValue(value); + row.Cells[_cellNum-1].SetCellValue(value); } else { - row.CreateCell(_cellNum).SetCellValue(value); + row.CreateCell(_cellNum-1).SetCellValue(value); } } } @@ -1860,20 +1873,20 @@ namespace Myshipping.Application { ////创建行 - var srow = NpoiExcelExportHelper._.CreateRow(sheet, _row); + var srow = NpoiExcelExportHelper._.CreateRow(sheet, _row-1); - for (int _cellNum = 0; _cellNum < entity.Max(x => x.Column); _cellNum++) + for (int _cellNum = 1; _cellNum <= entity.Max(x => x.Column); _cellNum++) { - if (entity.Where(x => x.Row == _row && x.Column == _cellNum + 1).Count() > 0) + if (entity.Where(x => x.Row == _row && x.Column == _cellNum).Count() > 0) { foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(order)) { - var name = entity.Where(x => x.Row == _row && x.Column == _cellNum + 1).Select(x => x.Field).FirstOrDefault(); + var name = entity.Where(x => x.Row == _row && x.Column == _cellNum).Select(x => x.Field).FirstOrDefault(); var _name = descriptor.Name.ToLower(); if (name == _name) { var value = descriptor.GetValue(order).ToString(); - srow.CreateCell(_cellNum).SetCellValue(value); + srow.CreateCell(_cellNum-1).SetCellValue(value); } } } diff --git a/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs b/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs index b7f967d0..94d22068 100644 --- a/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs +++ b/Myshipping.Application/Service/BookingPrintTemplate/BookingPrintTemplateService.cs @@ -395,7 +395,7 @@ namespace Myshipping.Application /// /// [HttpGet("/BookingPrintTemplate/GetPrinttemplateRightList")] - public async Task GetPrinttemplateRightList(long userId, string cateCode, string type,string name) + public async Task GetPrinttemplateRightList(long userId, string cateCode, string type,string displayName) { var userlist = await _repUser.AsQueryable().Filter(null, true).ToListAsync(); var list = await _repRight.AsQueryable().InnerJoin((d, t) => d.PrintTemplateId == t.Id && t.TenantId == UserManager.TENANT_ID). @@ -417,7 +417,7 @@ namespace Myshipping.Application UserName = "", }).ToListAsync(); - list = list.WhereIF(!string.IsNullOrWhiteSpace(cateCode), x => x.CateCode == cateCode).WhereIF(!string.IsNullOrWhiteSpace(name), x => x.DisplayName.StartsWith(name)). + list = list.WhereIF(!string.IsNullOrWhiteSpace(cateCode), x => x.CateCode == cateCode).WhereIF(!string.IsNullOrWhiteSpace(displayName), x => x.DisplayName.ToUpper().StartsWith(displayName.ToUpper())). WhereIF(!string.IsNullOrWhiteSpace(type), x => x.Type == type).ToList(); foreach (var item in list) { diff --git a/Myshipping.Application/Service/DataSync/DataSyncService.cs b/Myshipping.Application/Service/DataSync/DataSyncService.cs index a8da5995..1ad2cc87 100644 --- a/Myshipping.Application/Service/DataSync/DataSyncService.cs +++ b/Myshipping.Application/Service/DataSync/DataSyncService.cs @@ -44,15 +44,20 @@ namespace Myshipping.Application private readonly ISysCacheService _cache; private readonly SqlSugarRepository _rep; private readonly SqlSugarRepository _repCtn; + private readonly SqlSugarRepository _ctndetailrep; private readonly SqlSugarRepository _repUser; private readonly SqlSugarRepository _repTenant; private readonly SqlSugarRepository _djycustomer; private readonly SqlSugarRepository _djycustomercontact; private readonly SqlSugarRepository _vesselinfo; + private readonly SqlSugarRepository _bookingEDIExt; + private readonly SqlSugarRepository _bookinglog; + private readonly SqlSugarRepository _bookinglogdetail; public DataSyncService(ILogger logger, ISysCacheService cache, SqlSugarRepository rep, SqlSugarRepository repCtn, SqlSugarRepository repUser, SqlSugarRepository repTenant, SqlSugarRepository djycustomer, - SqlSugarRepository djycustomercontact, SqlSugarRepository vesselinfo) + SqlSugarRepository djycustomercontact, SqlSugarRepository vesselinfo, SqlSugarRepository ctndetailrep + , SqlSugarRepository bookingEDIExt, SqlSugarRepository bookinglog, SqlSugarRepository bookinglogdetail) { this._logger = logger; this._rep = rep; @@ -63,6 +68,10 @@ namespace Myshipping.Application this._djycustomer = djycustomer; this._djycustomercontact = djycustomercontact; this._vesselinfo = vesselinfo; + this._ctndetailrep = ctndetailrep; + this._bookingEDIExt = bookingEDIExt; + this._bookinglog = bookinglog; + this._bookinglogdetail = bookinglogdetail; } @@ -72,11 +81,12 @@ namespace Myshipping.Application /// /// /// - [HttpPost("/DataSync/SyncCustomer"),ApiUser(ApiCode= "SyncCustomer")] + [HttpPost("/DataSync/SyncCustomer"), ApiUser(ApiCode = "SyncCustomer")] public async Task SyncCustomer(DjyCustomerSyncDto model) { - - if (string.IsNullOrWhiteSpace(model.BSNO)) { + + if (string.IsNullOrWhiteSpace(model.BSNO)) + { throw Oops.Bah("BSNO未录入"); } var m = await _djycustomer.Where(x => x.BSNO == model.BSNO).FirstAsync(); @@ -89,10 +99,11 @@ namespace Myshipping.Application var contact = item.Adapt(); contact.CustomerId = entity.Id; await _djycustomercontact.InsertAsync(contact); - } + } } - else { - entity.Id=m.Id; + else + { + entity.Id = m.Id; await _djycustomer.AsUpdateable(entity).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync(); await _djycustomercontact.DeleteAsync(x => x.CustomerId == entity.Id); foreach (var item in model.ContactList) @@ -119,7 +130,7 @@ namespace Myshipping.Application { throw Oops.Bah("BSNO未录入"); } - var m = await _vesselinfo.Where(x => x.BSNO==model.BSNO).FirstAsync(); + var m = await _vesselinfo.Where(x => x.BSNO == model.BSNO).FirstAsync(); var entity = model.Adapt(); entity.Vessel = model.Vessel.ToUpper().Trim(); if (m == null) @@ -139,27 +150,476 @@ namespace Myshipping.Application /// /// /// + [SqlSugarUnitOfWork] [HttpPost("/DataSync/SyncBooking"), ApiUser(ApiCode = "SyncBooking")] - public async Task SyncBooking(SyncBookingOrderDto model) + public async Task SyncBooking(SyncBookingOrderDto model) { - if (string.IsNullOrWhiteSpace(model.BSNO)) { + if (string.IsNullOrWhiteSpace(model.BSNO)) + { throw Oops.Bah("主单BSNO未录入"); } - if (string.IsNullOrWhiteSpace(model.CreatedUserName)) { + if (string.IsNullOrWhiteSpace(model.CreatedUserName)) + { throw Oops.Bah("未录入创建人"); } - var user= _repUser.AsQueryable().Where(x => x.CreatedUserName == model.CreatedUserName).FirstAsync(); + var user = _repUser.AsQueryable().Where(x => x.CreatedUserName.Trim() == model.CreatedUserName.Trim()).FirstAsync(); + if (user == null) + { + throw Oops.Bah("未匹配到创建人"); + } + var order = await _rep.AsQueryable().Where(x => x.BSNO == model.BSNO).FirstAsync(); + if (order == null) + { + + #region 新增 + if (string.IsNullOrWhiteSpace(model.MBLNO)) + { + throw Oops.Bah("请填写提单号!"); + } + + JsonUtil.PropToUpper(model, "ORDNO", "BSSTATUS", "YardContract", "YardContractTel", "YardContractEmail", "MARKS", "DESCRIPTION", "CONSIGNEENAME", "SHIPPERNAME", "NOTIFYPARTYNAME"); + JsonUtil.TrimFields(model); + if (model.ctnInputs != null) + { + var groupList = model.ctnInputs.Where(x => x.CTNNUM > 0).GroupBy(c => c.CTNALL).Select(g => $"{g.Key}*{g.Sum(gg => gg.CTNNUM)}"); + model.CNTRTOTAL = string.Join(" / ", groupList); + } + var et = await _rep.Where(x => x.MBLNO == model.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == model.HBLNO && x.ParentId == 0).FirstAsync(); + if (et != null) + { + + throw Oops.Bah("当前提单号已存在,请勿重复录入!"); + + } + var entity = model.Adapt(); + entity.CreatedUserId = user.Result.Id; + entity.CreatedUserName = user.Result.Name; + entity.CreatedTime = DateTime.Now; + await _rep.InsertAsync(entity); + if (model.ctnInputs != null) + { + foreach (var item in model.ctnInputs) + { + var ctnentity = item.Adapt(); + ctnentity.BILLID = entity.Id; + await _repCtn.InsertAsync(ctnentity); + + //这里保存有可能没有添加多品名,所有箱下没有货物信息 + if (item.ctnDetailInputs != null) + { + foreach (var it in item.ctnDetailInputs) + { + var ctndetail = it.Adapt(); + ctndetail.CTNID = ctnentity.Id; + await _ctndetailrep.InsertAsync(ctndetail); + } + } + } + } + + if (model.BookingEDIExt != null) + { + //写入EDI扩展 + var ediExtEntity = model.BookingEDIExt.Adapt(); + + ediExtEntity.BookingId = entity.Id; + + ediExtEntity.CreatedUserId = user.Result.Id; + ediExtEntity.CreatedUserName = user.Result.Name; + ediExtEntity.CreatedTime = DateTime.Now; + await _bookingEDIExt.InsertAsync(ediExtEntity); + } + ////添加booking日志 + await _bookinglog.InsertAsync(new BookingLog + { + Type = "Add", + BookingId = entity.Id, + TenantId = Convert.ToInt64(UserManager.TENANT_ID), + CreatedTime = DateTime.Now, + CreatedUserId = user.Result.Id, + CreatedUserName = "系统" + }); + + + //分单 + if (model.childrens != null) + { + foreach (var item in model.childrens) + { + if (string.IsNullOrWhiteSpace(item.MBLNO)) + { + throw Oops.Bah("请填写提单号!"); + } + if (string.IsNullOrWhiteSpace(item.HBLNO)) + { + throw Oops.Bah("请填写分提单号!"); + } + JsonUtil.PropToUpper(item, "ORDNO", "BSSTATUS", "YardContract", "YardContractTel", "YardContractEmail", "MARKS", "DESCRIPTION", "CONSIGNEENAME", "SHIPPERNAME", "NOTIFYPARTYNAME"); + JsonUtil.TrimFields(item); + if (model.ctnInputs != null) + { + var groupList = item.ctnInputs.Where(x => x.CTNNUM > 0).GroupBy(c => c.CTNALL).Select(g => $"{g.Key}*{g.Sum(gg => gg.CTNNUM)}"); + item.CNTRTOTAL = string.Join(" / ", groupList); + } + var fdet = await _rep.Where(x => x.MBLNO == model.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == model.HBLNO && x.ParentId == entity.Id).FirstAsync(); + if (fdet != null) + { + + throw Oops.Bah($"当前分单中提单号({item.MBLNO}_{item.HBLNO})已存在,请勿重复录入!"); + + } + var fdentity = item.Adapt(); + fdentity.CreatedUserId = user.Result.Id; + fdentity.CreatedUserName = user.Result.Name; + fdentity.CreatedTime = DateTime.Now; + fdentity.ParentId = entity.Id; + await _rep.InsertAsync(fdentity); + + if (item.ctnInputs != null) + { + foreach (var it in item.ctnInputs) + { + var ctnentity = item.Adapt(); + ctnentity.BILLID = fdentity.Id; + await _repCtn.InsertAsync(ctnentity); + + //这里保存有可能没有添加多品名,所有箱下没有货物信息 + if (it.ctnDetailInputs != null) + { + foreach (var dit in it.ctnDetailInputs) + { + var ctndetail = dit.Adapt(); + ctndetail.CTNID = ctnentity.Id; + await _ctndetailrep.InsertAsync(ctndetail); + } + } + } + + } + + + + if (item.BookingEDIExt != null) + { + //写入EDI扩展 + var ediExtEntity = model.BookingEDIExt.Adapt(); + + ediExtEntity.BookingId = fdentity.Id; + ediExtEntity.CreatedUserId = user.Result.Id; + ediExtEntity.CreatedUserName = user.Result.Name; + ediExtEntity.CreatedTime = DateTime.Now; + await _bookingEDIExt.InsertAsync(ediExtEntity); + } + ////添加booking日志 + await _bookinglog.InsertAsync(new BookingLog + { + Type = "Add", + BookingId = fdentity.Id, + TenantId = Convert.ToInt64(UserManager.TENANT_ID), + CreatedTime = DateTime.Now, + CreatedUserId = user.Result.Id, + CreatedUserName = "系统" + }); + + } + } + return entity.Id; + #endregion + } + else + { + + #region 编辑 + if (string.IsNullOrWhiteSpace(model.MBLNO)) + { + throw Oops.Bah("请填写提单号!"); + } + + JsonUtil.PropToUpper(model, "ORDNO", "BSSTATUS", "YardContract", "YardContractTel", "YardContractEmail", "MARKS", "DESCRIPTION", "CONSIGNEENAME", "SHIPPERNAME", "NOTIFYPARTYNAME"); + JsonUtil.TrimFields(model); + + if (model.ctnInputs != null) + { + var groupList = model.ctnInputs.Where(x => x.CTNNUM > 0).GroupBy(c => c.CTNALL).Select(g => $"{g.Key}*{g.Sum(gg => gg.CTNNUM)}"); + model.CNTRTOTAL = string.Join(" / ", groupList); + } + var main = await _rep.AsQueryable().Filter(null, true).Where(x => x.BSNO == model.BSNO).FirstAsync(); + var et = await _rep.Where(x => x.MBLNO == model.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == model.HBLNO && x.BSNO != model.BSNO).FirstAsync(); + if (et != null) + { + throw Oops.Bah("当前提单号已存在,请勿重复录入!"); + } + var entity = model.Adapt(); + entity.Id = main.Id; + entity.UpdatedUserName = user.Result.Name; + entity.UpdatedUserId = user.Result.Id; + entity.UpdatedTime = DateTime.Now; + await _rep.AsUpdateable(entity).IgnoreColumns(it => new + { + it.ParentId, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + var ctnlist = await _repCtn.AsQueryable().Where(x => x.BILLID == main.Id).Select(x => x.Id).ToListAsync(); + await _repCtn.DeleteAsync(x => x.BILLID == main.Id); + await _ctndetailrep.DeleteAsync(x => ctnlist.Contains((long)x.CTNID)); + if (model.ctnInputs != null) + { + foreach (var item in model.ctnInputs) + { + var ctnentity = item.Adapt(); + ctnentity.BILLID = main.Id; + await _repCtn.InsertAsync(ctnentity); + if (item.ctnDetailInputs != null) + { + foreach (var it in item.ctnDetailInputs) + { + var ctndetail = it.Adapt(); + ctndetail.CTNID = ctnentity.Id; + await _ctndetailrep.InsertAsync(ctndetail); + } + } + } + } + if (model.BookingEDIExt != null) + { + //检索EDI扩展 + var ediExtEntity = _bookingEDIExt.FirstOrDefault(u => u.BookingId == main.Id); + if (ediExtEntity == null) + { + //写入EDI扩展 + ediExtEntity = model.BookingEDIExt.Adapt(); + ediExtEntity.BookingId = main.Id; + ediExtEntity.CreatedUserId = user.Result.Id; + ediExtEntity.CreatedUserName = user.Result.Name; + ediExtEntity.CreatedTime = DateTime.Now; + await _bookingEDIExt.InsertAsync(ediExtEntity); + } + else + { + //更新EDI扩展 + var currEdiExtEntity = model.BookingEDIExt.Adapt(); + currEdiExtEntity.Id = ediExtEntity.Id; - return 0; + await _bookingEDIExt.AsUpdateable(currEdiExtEntity).IgnoreColumns(it => new + { + it.BookingId, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + } + } + + bool flag = true; + long bid = 0; + foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(entity)) + { + string name = descriptor.Name; + if (name == "TenantId" || name == "CreatedTime" || name == "UpdatedTime" || name == "CreatedUserId" || name == "CreatedUserName") + { + continue; + } + object value = descriptor.GetValue(entity); + var oldvalue = main.GetType().GetProperty(name).GetValue(main, null); + + if (name == "KGS" || name == "CBM") + { + if (Convert.ToDecimal(value) == Convert.ToDecimal(oldvalue)) + { + continue; + } + } + string _oldvalue = oldvalue != null ? oldvalue.ToString() : ""; + string _value = value != null ? value.ToString() : ""; + if (_oldvalue != _value && !string.IsNullOrWhiteSpace(descriptor.Description)) + { + if (flag) + { + ////添加booking日志 + bid = await _bookinglog.InsertReturnSnowflakeIdAsync(new BookingLog + { + Type = "Edit", + BookingId = entity.Id, + TenantId = Convert.ToInt64(UserManager.TENANT_ID), + CreatedTime = DateTime.Now, + CreatedUserId = user.Result.Id, + CreatedUserName = user.Result.Name + }); + flag = false; + } + await _bookinglogdetail.InsertReturnSnowflakeIdAsync(new BookingLogDetail + { + PId = bid, + Field = descriptor.Description, + OldValue = _oldvalue, + NewValue = _value, + }); + + } + } + //分单 + if (model.childrens != null) + { + foreach (var item in model.childrens) + { + if (string.IsNullOrWhiteSpace(item.MBLNO)) + { + throw Oops.Bah("请填写提单号!"); + } + JsonUtil.PropToUpper(item, "ORDNO", "BSSTATUS", "YardContract", "YardContractTel", "YardContractEmail", "MARKS", "DESCRIPTION", "CONSIGNEENAME", "SHIPPERNAME", "NOTIFYPARTYNAME"); + JsonUtil.TrimFields(item); + + if (item.ctnInputs != null) + { + var groupList = item.ctnInputs.Where(x => x.CTNNUM > 0).GroupBy(c => c.CTNALL).Select(g => $"{g.Key}*{g.Sum(gg => gg.CTNNUM)}"); + item.CNTRTOTAL = string.Join(" / ", groupList); + } + + var fdmain = await _rep.AsQueryable().Filter(null, true).Where(x => x.BSNO == item.BSNO).FirstAsync(); + var fdet = await _rep.Where(x => x.MBLNO == item.MBLNO && x.TenantId == UserManager.TENANT_ID && x.HBLNO == item.HBLNO && x.BSNO != fdmain.BSNO).FirstAsync(); + if (fdet != null) + { + throw Oops.Bah($"当前提单号{fdet.MBLNO}_{fdet.HBLNO}已存在,请勿重复录入!"); + } + var fdentity = model.Adapt(); + fdentity.Id = fdmain.Id; + fdentity.UpdatedUserName = user.Result.Name; + fdentity.UpdatedUserId = user.Result.Id; + fdentity.UpdatedTime = DateTime.Now; + await _rep.AsUpdateable(fdentity).IgnoreColumns(it => new + { + it.ParentId, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + var fdctnlist = await _repCtn.AsQueryable().Where(x => x.BILLID == fdmain.Id).Select(x => x.Id).ToListAsync(); + await _repCtn.DeleteAsync(x => x.BILLID == fdmain.Id); + await _ctndetailrep.DeleteAsync(x => fdctnlist.Contains((long)x.CTNID)); + if (item.ctnInputs != null) + { + foreach (var it in model.ctnInputs) + { + var ctnentity = item.Adapt(); + ctnentity.BILLID = fdmain.Id; + await _repCtn.InsertAsync(ctnentity); + if (it.ctnDetailInputs != null) + { + foreach (var it_ in it.ctnDetailInputs) + { + var ctndetail = it_.Adapt(); + ctndetail.CTNID = ctnentity.Id; + await _ctndetailrep.InsertAsync(ctndetail); + } + } + } + } + + if (item.BookingEDIExt != null) + { + //检索EDI扩展 + var ediExtEntity = _bookingEDIExt.FirstOrDefault(u => u.BookingId == fdmain.Id); + + if (ediExtEntity == null) + { + //写入EDI扩展 + ediExtEntity = item.BookingEDIExt.Adapt(); + ediExtEntity.BookingId = fdmain.Id; + ediExtEntity.CreatedUserId = user.Result.Id; + ediExtEntity.CreatedUserName = user.Result.Name; + ediExtEntity.CreatedTime = DateTime.Now; + await _bookingEDIExt.InsertAsync(ediExtEntity); + } + else + { + //更新EDI扩展 + var currEdiExtEntity = model.BookingEDIExt.Adapt(); + + currEdiExtEntity.Id = ediExtEntity.Id; + + await _bookingEDIExt.AsUpdateable(currEdiExtEntity).IgnoreColumns(it => new + { + it.BookingId, + it.TenantId, + it.CreatedTime, + it.CreatedUserId, + it.CreatedUserName + }).ExecuteCommandAsync(); + } + } + + bool fdflag = true; + long fdbid = 0; + foreach (PropertyDescriptor descriptor in TypeDescriptor.GetProperties(fdentity)) + { + string name = descriptor.Name; + if (name == "TenantId" || name == "CreatedTime" || name == "UpdatedTime" || name == "CreatedUserId" || name == "CreatedUserName") + { + continue; + } + object value = descriptor.GetValue(fdentity); + var oldvalue = fdmain.GetType().GetProperty(name).GetValue(main, null); + + if (name == "KGS" || name == "CBM") + { + if (Convert.ToDecimal(value) == Convert.ToDecimal(oldvalue)) + { + continue; + } + } + string _oldvalue = oldvalue != null ? oldvalue.ToString() : ""; + string _value = value != null ? value.ToString() : ""; + if (_oldvalue != _value && !string.IsNullOrWhiteSpace(descriptor.Description)) + { + if (fdflag) + { + ////添加booking日志 + fdbid = await _bookinglog.InsertReturnSnowflakeIdAsync(new BookingLog + { + Type = "Edit", + BookingId = fdentity.Id, + TenantId = Convert.ToInt64(UserManager.TENANT_ID), + CreatedTime = DateTime.Now, + CreatedUserId = user.Result.Id, + CreatedUserName = user.Result.Name, + }); + fdflag = false; + } + await _bookinglogdetail.InsertReturnSnowflakeIdAsync(new BookingLogDetail + { + PId = fdbid, + Field = descriptor.Description, + OldValue = _oldvalue, + NewValue = _value, + }); + + } + } + + + + } + } + + + return main.Id; + #endregion + } + } - +