diff --git a/Myshipping.Application/EDI/XiahuozhiHelpler.cs b/Myshipping.Application/EDI/XiahuozhiHelpler.cs index 50e3dd8d..9553a14c 100644 --- a/Myshipping.Application/EDI/XiahuozhiHelpler.cs +++ b/Myshipping.Application/EDI/XiahuozhiHelpler.cs @@ -124,6 +124,16 @@ namespace Myshipping.Application.EDI { return new KeyValuePair(false, "中创站代码未配置"); } + + + //针对和川这种公共库不同的船司代码,需要匹配转换为当前的船司代码才能逻辑判断 + var hlcCode = "HLC"; + var mapCodeHLC = mappingCarrierLetterYard.FirstOrDefault(x => x.MapCode == "HLC"); + if (mapCodeHLC != null) + { + hlcCode = mapCodeHLC.Code; + } + #region 港联捷场站 if (order.YARDID == yardCodeGLJ.Value) @@ -162,14 +172,6 @@ namespace Myshipping.Application.EDI StringBuilder sbData = new StringBuilder(); sbData.AppendLine($"01:{order.VESSEL}:{order.VOYNO}"); //船名 航次 - //针对和川这种公共库不同的船司代码,需要匹配转换为当前的船司代码才能逻辑判断 - var hlcCode = "HLC"; - var mapCodeHLC = mappingCarrierLetterYard.FirstOrDefault(x => x.MapCode == "HLC"); - if (mapCodeHLC != null) - { - hlcCode = mapCodeHLC.Code; - } - // 12:提单号:中转港:目的港:货代代码:船公司:HPL参考号:特殊说明 sbData.AppendLine($"12:{order.MBLNO}:{order.TRANSPORTID}:{order.PORTDISCHARGEID}:{paraXHZ.ItemCode}:{GetCarrierEDICode(order.CARRIERID, "XHZ_GLJ")}:{(order.CARRIERID == hlcCode ? order.CUSTNO : "")}:{ExchangeStr(order.YARDREMARK)}"); //主提单 中转港代码 目的港代码 货代代码 船公司 HPL参考号 备注 //2021-8-17,报文中不能体现英文字符①【:】②【,】,以空格代替 @@ -511,7 +513,7 @@ namespace Myshipping.Application.EDI listJoinStr.Add("00:IFCSUM:BK:" + filerole + ":" + ftpset.SENDCODE + ":" + ftpset.RECEIVECODE + ":" + DateTime.Now.ToString("yyyyMMddHHmm") + ":2.1'"); //提单号 - listJoinStr.Add("02:" + order.Id.ToString() + ":" + order.MBLNO.Trim() + ":" + order.SERVICE + ":" + ftpset.SENDNAME + ":" + ftpset.RECEIVECODE + "::::::::::" + order.CONTRACTNO + "::'"); + listJoinStr.Add("02:" + order.Id.ToString() + ":" + order.MBLNO.Trim() + ":" + order.SERVICE + ":" + ftpset.SENDNAME + ":" + ftpset.RECEIVECODE + "::::::::::" + order.CONTRACTNO + ":" + (order.CARRIERID == hlcCode ? order.CUSTNO : "") + ":'"); //提单地址 var ISSUETYPE = ""; @@ -757,15 +759,6 @@ namespace Myshipping.Application.EDI StringBuilder sbData = new StringBuilder(); sbData.AppendLine($"01:{order.VESSEL}:{order.VOYNO}"); //船名 航次 - //针对和川这种公共库不同的船司代码,需要匹配转换为当前的船司代码才能逻辑判断 - var hlcCode = "HLC"; - var mapCodeHLC = mappingCarrierLetterYard.FirstOrDefault(x => x.MapCode == "HLC"); - if (mapCodeHLC != null) - { - hlcCode = mapCodeHLC.Code; - } - - sbData.AppendLine($"12:{order.MBLNO}:{order.TRANSPORTID}:{order.PORTDISCHARGEID}:{paraXHZ.ItemCode}:{GetCarrierEDICode(order.CARRIERID, "XHZ_GLX")}:{(order.CARRIERID == hlcCode ? order.CUSTNO : "")}:{order.PORTDISCHARGE}"); //主提单 中转港代码 目的港代码 货代代码 船公司 HPL参考号 备注 var despStr = ExchangeStr(order.DESCRIPTION.Replace(":", " ").Replace(",", " ")).Replace("\r\n", " ").Replace("\n", " "); if (despStr.Length > 100) diff --git a/Myshipping.Application/Entity/Booking_AutoYardImport.cs b/Myshipping.Application/Entity/BookingAutoYardImport.cs similarity index 75% rename from Myshipping.Application/Entity/Booking_AutoYardImport.cs rename to Myshipping.Application/Entity/BookingAutoYardImport.cs index df376573..57b1bc3b 100644 --- a/Myshipping.Application/Entity/Booking_AutoYardImport.cs +++ b/Myshipping.Application/Entity/BookingAutoYardImport.cs @@ -13,7 +13,7 @@ namespace Myshipping.Application.Entity /// [SugarTable("booking_auto_yard_import")] [Description("场站自动引入信息")] - public class Booking_AutoYardImport + public class BookingAutoYardImport { /// /// 主键 @@ -40,5 +40,21 @@ namespace Myshipping.Application.Entity /// 比对数据时填写的箱信息JSON /// public string CtnJson { get; set; } + + /// + /// 只读标志 + /// + public bool IsRead { get; set; } + + /// + /// 读取时间 + /// + public DateTime? ReadTime { get; set; } + + /// + /// 读取人 + /// + public string ReadUser { get; set; } + } } diff --git a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs index e9b37587..afcae904 100644 --- a/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs +++ b/Myshipping.Application/Service/BookingOrder/BookingOrderService.cs @@ -129,7 +129,7 @@ namespace Myshipping.Application private readonly IBookingGoodsStatusConfigService _GoodsConfig; private readonly SqlSugarRepository _repLineOpMgrConfig; private readonly SqlSugarRepository _repSysEmp; - private readonly SqlSugarRepository _repAutoYard; + private readonly SqlSugarRepository _repAutoYard; private readonly SqlSugarRepository _repextendstate; @@ -156,7 +156,7 @@ namespace Myshipping.Application SqlSugarRepository excelrep, SqlSugarRepository repUserMail, SqlSugarRepository goodsStatus, SqlSugarRepository goodsStatusConfig, SqlSugarRepository repTenant, SqlSugarRepository repBookingStatus, SqlSugarRepository bookingEDIExt, SqlSugarRepository serviceItem, SqlSugarRepository paraContractNoInfoRepository, IHttpContextAccessor httpContextAccessor, IBookingGoodsStatusConfigService GoodsConfig, SqlSugarRepository djyWebsiteAccountConfigRepository, - ISysOrgService orgService, SqlSugarRepository repLineOpMgrConfig, SqlSugarRepository repSysEmp, SqlSugarRepository repAutoYard, + ISysOrgService orgService, SqlSugarRepository repLineOpMgrConfig, SqlSugarRepository repSysEmp, SqlSugarRepository repAutoYard, IServiceWorkFlowManageService serviceWorkFlowManageService) { this._logger = logger; @@ -453,7 +453,7 @@ namespace Myshipping.Application var itgoodsStatus = new List(); var itconfigs = new List(); - List statusList = new List(); + List statusList = new List(); if (App.Configuration["ServiceStatusOpenAuto"] == "1") { QueryServiceProjectWithStatusBatch batchQuery = new QueryServiceProjectWithStatusBatch @@ -520,7 +520,7 @@ namespace Myshipping.Application var statuslogId = statusloglist.Select(x => x.Id).ToList(); //运踪状态 var statuslogdetaillist = _statuslogdetail.AsQueryable().Where(x => statuslogId.Contains(x.PId)).ToList(); - + var BookingStatusList = _repBookingStatus.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains((long)x.BookingId)).ToList(); var bookingremarkList = _bookingremark.AsQueryable().Filter(null, true).Where(x => bookingidlist.Contains(x.PId)).ToList(); @@ -596,9 +596,9 @@ namespace Myshipping.Application { var currStatusList = statusList.Where(a => long.Parse(a.BusiId) == item.Id).ToList(); - if(currStatusList.Count > 0) + if (currStatusList.Count > 0) { - if(currStatusList.Any(a=>a.StatusSKUCode.Equals("YFVGM",StringComparison.OrdinalIgnoreCase) && a.IsYield)) + if (currStatusList.Any(a => a.StatusSKUCode.Equals("YFVGM", StringComparison.OrdinalIgnoreCase) && a.IsYield)) { item.IsVGM = currStatusList.FirstOrDefault(a => a.StatusSKUCode.Equals("YFVGM", StringComparison.OrdinalIgnoreCase) && a.IsYield).ActDate.Value; @@ -616,15 +616,15 @@ namespace Myshipping.Application item.GoodsStatusList = currStatusList.OrderBy(a => a.CalcSortNo) .Select(a => new GoodsStatusList - { + { FinishTime = a.ActDate, IsLast = a.IsEnd, Sort = a.ActSortNo, StatusName = a.ShowName, SystemCode = a.StatusSKUCode, - ExtData = !string.IsNullOrWhiteSpace(a.ActVal)? a.ActVal:string.Empty, - Remark = !string.IsNullOrWhiteSpace(a.ActRemark)? a.ActRemark:string.Empty - }).ToList(); + ExtData = !string.IsNullOrWhiteSpace(a.ActVal) ? a.ActVal : string.Empty, + Remark = !string.IsNullOrWhiteSpace(a.ActRemark) ? a.ActRemark : string.Empty + }).ToList(); } else { @@ -906,9 +906,9 @@ namespace Myshipping.Application var mlist = await _rep.AsQueryable().Filter(null, true).Where(x => x.Id == input.Id).FirstAsync(); var rightlist = await _right.GetDataScopeList(MenuConst.MenuBookingOrder, true); - _logger.LogInformation("保存权限范围:"+rightlist.ToJsonString()); + _logger.LogInformation("保存权限范围:" + rightlist.ToJsonString()); //除现有配置权限外 操作和本人具有编辑权限 - if (rightlist!=null&&!( + if (rightlist != null && !( mlist.OPID == UserManager.UserId.ToString() || mlist.OP == UserManager.Name.ToString() || mlist.DOCID == UserManager.UserId.ToString() || mlist.DOC == UserManager.Name.ToString() || mlist.CUSTSERVICEID == UserManager.UserId.ToString() || mlist.CUSTSERVICE == UserManager.Name.ToString() || @@ -7929,12 +7929,15 @@ HLCUTA12307DPXJ3 以这票为例 6个柜 } _logger.LogInformation($"{bookId}({order.MBLNO})的箱封号自动引入完成"); - } - - - //写入提示 - await SaveAutoYardData(bookId, true, $"已自动引入", ctns.ToJson(), rtn.ToJson()); + //写入提示 + await SaveAutoYardData(bookId, true, $"已自动引入", ctns.ToJson(), rtn.ToJson()); + } + else + { + //写入提示 + await SaveAutoYardData(bookId, true, $"已自动引入", ctns.ToJson(), rtn.ToJson(), read: true); + } } } @@ -7943,17 +7946,23 @@ HLCUTA12307DPXJ3 以这票为例 6个柜 /// /// [NonAction] - private async Task SaveAutoYardData(long bookId, bool success, string content, string ctnJson, string yardJson) + private async Task SaveAutoYardData(long bookId, bool success, string content, string ctnJson, string yardJson, bool read = false) { await _repAutoYard.DeleteAsync(x => x.Id == bookId); //写入提示 - var autoYard = new Booking_AutoYardImport(); + var autoYard = new BookingAutoYardImport(); autoYard.Id = bookId; autoYard.Status = success ? "已导入" : "未导入"; autoYard.Content = content; autoYard.CtnJson = ctnJson; autoYard.YardJson = yardJson; + if (read) //未开启自动写入的用户,自动已读 + { + autoYard.IsRead = true; + autoYard.ReadTime = DateTime.Now; + autoYard.ReadUser = "系统"; + } await _repAutoYard.InsertAsync(autoYard); } diff --git a/Myshipping.Application/Service/BookingTruck/BookingTruckService.cs b/Myshipping.Application/Service/BookingTruck/BookingTruckService.cs index 01531eaf..63a4f9b2 100644 --- a/Myshipping.Application/Service/BookingTruck/BookingTruckService.cs +++ b/Myshipping.Application/Service/BookingTruck/BookingTruckService.cs @@ -627,6 +627,40 @@ namespace Myshipping.Application }); } + /* + 2023-08-14 这里按照调度要求,如果有历史单据,新增时需要读取前一票的部分信息 + (实际毛重、开票方式、提货工厂、工厂联系人+电话、工厂地址、派车单备注) + */ + + var lastBookingTruckModel = _bookingTruckRepository.AsQueryable() + .Where(a => a.BookingId == bookingId && !a.IsDeleted) + .OrderBy(a => a.CreatedTime).First(); + + if (lastBookingTruckModel != null) + { + if (lastBookingTruckModel.KGS.HasValue) + model.KGS = lastBookingTruckModel.KGS; + + if(!string.IsNullOrWhiteSpace(lastBookingTruckModel.PayMethod)) + model.PayMethod = lastBookingTruckModel.PayMethod; + + if (!string.IsNullOrWhiteSpace(lastBookingTruckModel.PayMethodName)) + model.PayMethodName = lastBookingTruckModel.PayMethodName; + + if (!string.IsNullOrWhiteSpace(lastBookingTruckModel.Remark)) + model.Remark = lastBookingTruckModel.Remark; + + if (!string.IsNullOrWhiteSpace(lastBookingTruckModel.FactoryContact)) + model.FactoryContact = lastBookingTruckModel.FactoryContact; + + if (!string.IsNullOrWhiteSpace(lastBookingTruckModel.FactoryAddr)) + model.FactoryAddr = lastBookingTruckModel.FactoryAddr; + + if (!string.IsNullOrWhiteSpace(lastBookingTruckModel.FactoryName)) + model.FactoryName = lastBookingTruckModel.FactoryName; + } + + return model; } @@ -980,9 +1014,10 @@ namespace Myshipping.Application /// 撤销派车 /// /// 派车主键 + /// 是否撤销后自动删除 true-删除 false-不删除 /// 返回回执 [HttpGet("/BookingTruck/Cancel")] - public async Task Cancel(long id) + public async Task Cancel([FromQuery]long id, [FromQuery] bool isAfterDelete = false) { /* 撤销派车流程 @@ -1090,8 +1125,9 @@ namespace Myshipping.Application /// /// 派车主键 /// 批次号 + /// 是否撤销后自动删除 true-删除 false-不删除 /// 返回回执 - private async Task InnerCancel(long id, string batchNo) + private async Task InnerCancel(long id, string batchNo,bool isAfterDelete = false) { /* 撤销派车流程 @@ -1187,6 +1223,12 @@ namespace Myshipping.Application model.UpdatedUserName = UserManager.Name; model.TaskNo = null; + //是否删除 + if (isAfterDelete) + { + model.IsDeleted = true; + } + await _bookingTruckRepository.AsUpdateable(model).UpdateColumns(it => new { it.Status, @@ -1196,6 +1238,7 @@ namespace Myshipping.Application it.TaskNo }).ExecuteCommandAsync(); + result.succ = true; result.msg = "撤销成功"; diff --git a/Myshipping.Application/Service/BookingTruck/Interface/IBookingTruckService.cs b/Myshipping.Application/Service/BookingTruck/Interface/IBookingTruckService.cs index 0691bcb7..17d71972 100644 --- a/Myshipping.Application/Service/BookingTruck/Interface/IBookingTruckService.cs +++ b/Myshipping.Application/Service/BookingTruck/Interface/IBookingTruckService.cs @@ -81,8 +81,9 @@ namespace Myshipping.Application /// 撤销派车 /// /// 派车主键 + /// 是否撤销后自动删除 true-删除 false-不删除 /// 返回回执 - Task Cancel(long id); + Task Cancel(long id, bool isAfterDelete = false); /// /// 批量撤销派车