diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/DataCallBackService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/DataCallBackService.cs index c0b680d1..e965dfac 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/DataCallBackService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/DataCallBackService.cs @@ -16,6 +16,7 @@ using Mapster; using Microsoft.AspNetCore.Identity; using DS.Module.Core.Constants; using Microsoft.AspNetCore.Http; +using Newtonsoft.Json; namespace DS.WMS.Core.Op.Method { @@ -49,408 +50,423 @@ namespace DS.WMS.Core.Op.Method /// /// public async Task AddBookingStatusLog(List req) - { + { try { - if (req.Count == 0) + // 当BusinessId不为空时,将BusinessId的值转为订舱主键;否则仍然使用BookingId作为订舱记录主键 + if (!string.IsNullOrEmpty(req[0].BusinessId)) { - - return; + if (long.TryParse(req[0].BusinessId, out long itemBusinessId)) + { + req[0].BookingId = itemBusinessId; + } + else + { + _logger.Error($"在将item.BusinessId转为BookingId时发生异常,货运动态插入失败;item.BusinessId的值为:{req[0].BusinessId}"); + return; + } } - else + _logger.Info($"货运动态回调:"+ JsonConvert.SerializeObject(req)); + //订舱状态 + var dicList = db.Queryable().Where(x => x.TypeId == 1788810332945387520).ToList(); + foreach (var item in req) { - //订舱状态 - var dicList = db.Queryable().Where(x => x.TypeId == 1788810332945387520).ToList(); - foreach (var item in req) - { - // 当BusinessId不为空时,将BusinessId的值转为订舱主键;否则仍然使用BookingId作为订舱记录主键 - if (!string.IsNullOrEmpty(item.BusinessId)) + // 当BusinessId不为空时,将BusinessId的值转为订舱主键;否则仍然使用BookingId作为订舱记录主键 + if (!string.IsNullOrEmpty(item.BusinessId)) + { + if (long.TryParse(item.BusinessId, out long itemBusinessId)) { - if (long.TryParse(item.BusinessId, out long itemBusinessId)) - { - item.BookingId = itemBusinessId; - } - else - { - _logger.Error($"在将item.BusinessId转为BookingId时发生异常,货运动态插入失败;item.BusinessId的值为:{item.BusinessId}"); - continue; - } + item.BookingId = itemBusinessId; } - var tenantId= accessor.HttpContext.Request.Headers["PushBackKey"].FirstOrDefault(); - var tenantDb = saasService.GetBizDbScopeById(tenantId); - var businessId = item.BookingId; - //TODO - var list = await tenantDb.Queryable().Filter(null, true) - .InnerJoin((d, t) => d.StatusCode == t.Value && d.StatusGroup == "booking_status_group_billtrace" && d.BusinessId == businessId).Select((d, t) => new - { - BusinessId = d.BusinessId, - StatusCode = d.StatusCode, - StatusName = d.StatusName, - StatusTime = d.StatusTime, - Name = t.Name, - Value = t.Value - }).ToListAsync(); - // var list = await tenantDb.Queryable().Filter(null, true).Where(x=>x.StatusGroup == "booking_status_group_billtrace" && x.BusinessId == businessId).Select(d=> new - //{ - // BusinessId = d.BusinessId, - // StatusCode = d.StatusCode, - // StatusName = d.StatusName, - // StatusTime = d.StatusTime - //}).ToListAsync(); - - var oldLog = await tenantDb.Queryable().Where(x => x.BusinessId == businessId && x.Group == "yunzong").FirstAsync(); + else + { + _logger.Error($"在将item.BusinessId转为BookingId时发生异常,货运动态插入失败;item.BusinessId的值为:{item.BusinessId}"); + continue; + } + } + var tenantId = accessor.HttpContext.Request.Headers["PushBackKey"].FirstOrDefault(); + var tenantDb = saasService.GetBizDbScopeById(tenantId); + var businessId = item.BookingId; + //TODO + var list = await tenantDb.Queryable().Filter(null, true) + .InnerJoin((d, t) => d.StatusCode == t.Value && t.TypeId == 1788810332945387520 && d.StatusGroup == "booking_status_group_billtrace" + && d.BusinessId == businessId, "shippingweb8_dev.sys_dict_data") + .Select((d, t) => new + { + BusinessId = d.BusinessId, + StatusCode = d.StatusCode, + StatusName = d.StatusName, + StatusTime = d.StatusTime, + Name = t.Name, + Value = t.Value + }).ToListAsync(); + // var list = await tenantDb.Queryable().Filter(null, true).Where(x=>x.StatusGroup == "booking_status_group_billtrace" && x.BusinessId == businessId).Select(d=> new + //{ + // BusinessId = d.BusinessId, + // StatusCode = d.StatusCode, + // StatusName = d.StatusName, + // StatusTime = d.StatusTime + //}).ToListAsync(); + + var oldLog = await tenantDb.Queryable().Where(x => x.BusinessId == businessId && x.Group == "yunzong").FirstAsync(); + if (oldLog.IsNotNull()) { //删除日志详情和日志 var oldLogDetails = await tenantDb.Queryable().Where(x => x.PId == oldLog.Id).ToListAsync(); - await tenantDb.Deleteable(oldLogDetails).ExecuteCommandAsync(); + if (oldLogDetails.Count > 0) + { + await tenantDb.Deleteable(oldLogDetails).ExecuteCommandAsync(); + } await tenantDb.Deleteable(oldLog).ExecuteCommandAsync(); + } + - #region 日志 - //新增数据 - var statusLog = new BookingStatusLog() - { - BusinessId = businessId, - Group = "yunzong", - Status = item.Status, - OpTime = item.OpTime, - MBLNO = item.MBLNO - }; - await tenantDb.Insertable(statusLog).ExecuteCommandAsync(); - if (item.detail != null && item.detail.Count > 0) + #region 日志 + //新增数据 + var statusLog = new BookingStatusLog() + { + BusinessId = businessId, + Group = "yunzong", + Status = item.Status, + OpTime = item.OpTime, + MBLNO = item.MBLNO + }; + await tenantDb.Insertable(statusLog).ExecuteCommandAsync(); + if (item.detail != null && item.detail.Count > 0) + { + foreach (var dt in item.detail) { - foreach (var dt in item.detail) + var logDetail = new BookingStatusLogDetail() { - var logDetail = new BookingStatusLogDetail() - { - PId = statusLog.Id, - Status = dt.Status, - CNTRNO = dt.CNTRNO, - OpTime = dt.OPTime - }; - await tenantDb.Insertable(logDetail).ExecuteCommandAsync(); - } + PId = statusLog.Id, + Status = dt.Status, + CNTRNO = dt.CNTRNO, + OpTime = dt.OPTime + }; + await tenantDb.Insertable(logDetail).ExecuteCommandAsync(); } - if (item.Status == "提箱") - { - //自动引入场站箱型箱量数据 - //await _bookingorderservice.AutoYardData(item.BookingId); + } + if (item.Status == "提箱") + { + //自动引入场站箱型箱量数据 + //await _bookingorderservice.AutoYardData(item.BookingId); - //#region 推送已提箱状态 - ////2023-12-28 JHQ 增加提箱推送状态 - //DateTime opTime = DateTime.MinValue; + //#region 推送已提箱状态 + ////2023-12-28 JHQ 增加提箱推送状态 + //DateTime opTime = DateTime.MinValue; - //if (item.detail != null && item.detail.Count > 0 && item.detail.Any(x => x.OPTime.HasValue)) - // opTime = item.detail.Where(x => x.OPTime.HasValue).Max(x => x.OPTime.Value); + //if (item.detail != null && item.detail.Count > 0 && item.detail.Any(x => x.OPTime.HasValue)) + // opTime = item.detail.Where(x => x.OPTime.HasValue).Max(x => x.OPTime.Value); - //var pushModel = new ModifyServiceProjectStatusDto - //{ - // BookingId = businessId, - // SourceType = TrackingSourceTypeEnum.AUTO, - // StatusCodes = new List { - // new ModifyServiceProjectStatusDetailDto { StatusCode = "YTX" } } - //}; + //var pushModel = new ModifyServiceProjectStatusDto + //{ + // BookingId = businessId, + // SourceType = TrackingSourceTypeEnum.AUTO, + // StatusCodes = new List { + // new ModifyServiceProjectStatusDetailDto { StatusCode = "YTX" } } + //}; - //if (opTime != DateTime.MinValue) - //{ - // pushModel.StatusCodes[0].SetActDate = opTime; - //} + //if (opTime != DateTime.MinValue) + //{ + // pushModel.StatusCodes[0].SetActDate = opTime; + //} - //var saveStatusRlt = await _bookingValueAddedService.SaveServiceStatus(pushModel); + //var saveStatusRlt = await _bookingValueAddedService.SaveServiceStatus(pushModel); - //_logger.Info("请求JSON={json} 异步推送服务状态完成,结果={rlt}", JSON.Serialize(pushModel), JSON.Serialize(saveStatusRlt)); - //#endregion - } + //_logger.Info("请求JSON={json} 异步推送服务状态完成,结果={rlt}", JSON.Serialize(pushModel), JSON.Serialize(saveStatusRlt)); + //#endregion + } - #endregion + #endregion - #region 订舱状态 - if (item.Status == "舱单") + #region 订舱状态 + if (item.Status == "舱单") + { + if (list.Where(x => x.Value == "status_cangdan").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_cangdan").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_cangdan", - StatusName = dicList.Where(x => x.Value == "status_cangdan").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - //2023-12-28 JHQ 增加舱单放行推送状态 - await seaComService.SetGoodsStatus("CDFX", item.BookingId); - } + BusinessId = businessId, + StatusCode = "status_cangdan", + StatusName = dicList.Where(x => x.Value == "status_cangdan").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + //2023-12-28 JHQ 增加舱单放行推送状态 + await seaComService.SetGoodsStatus("CDFX", item.BookingId); } - if (item.Status == "海关放行") + } + if (item.Status == "海关放行") + { + if (list.Where(x => x.Value == "status_haifang").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_haifang").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_haifang", - StatusName = dicList.Where(x => x.Value == "status_haifang").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - await seaComService.SetGoodsStatus("BG", item.BookingId); + BusinessId = businessId, + StatusCode = "status_haifang", + StatusName = dicList.Where(x => x.Value == "status_haifang").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + await seaComService.SetGoodsStatus("BG", item.BookingId); - } } - if (item.Status == "装载") + } + if (item.Status == "装载") + { + if (list.Where(x => x.Value == "status_zhuangzai").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_zhuangzai").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_zhuangzai", - StatusName = dicList.Where(x => x.Value == "status_zhuangzai").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - await seaComService.SetGoodsStatus("ZZFX", item.BookingId); + BusinessId = businessId, + StatusCode = "status_zhuangzai", + StatusName = dicList.Where(x => x.Value == "status_zhuangzai").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + await seaComService.SetGoodsStatus("ZZFX", item.BookingId); - } } - if (item.Status == "码放") + } + if (item.Status == "码放") + { + if (list.Where(x => x.Value == "status_mafang").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_mafang").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_mafang", - StatusName = dicList.Where(x => x.Value == "status_mafang").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - await seaComService.SetGoodsStatus("MTFX", item.BookingId); + BusinessId = businessId, + StatusCode = "status_mafang", + StatusName = dicList.Where(x => x.Value == "status_mafang").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + await seaComService.SetGoodsStatus("MTFX", item.BookingId); - } } - if (item.Status == "装船") + } + if (item.Status == "装船") + { + if (list.Where(x => x.Value == "status_zhuangchuan").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_zhuangchuan").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_zhuangchuan", - StatusName = dicList.Where(x => x.Value == "status_zhuangchuan").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - } + BusinessId = businessId, + StatusCode = "status_zhuangchuan", + StatusName = dicList.Where(x => x.Value == "status_zhuangchuan").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); } - if (item.Status == "ATD") + } + if (item.Status == "ATD") + { + if (list.Where(x => x.Value == "status_atd").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_atd").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_atd", - StatusName = dicList.Where(x => x.Value == "status_atd").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + BusinessId = businessId, + StatusCode = "status_atd", + StatusName = dicList.Where(x => x.Value == "status_atd").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - } } - if (item.Status == "MDGETA") + } + if (item.Status == "MDGETA") + { + if (list.Where(x => x.Value == "status_mdgeta").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_mdgeta").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_mdgeta", - StatusName = dicList.Where(x => x.Value == "status_mdgeta").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + BusinessId = businessId, + StatusCode = "status_mdgeta", + StatusName = dicList.Where(x => x.Value == "status_mdgeta").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - } + } - var order = tenantDb.Queryable().Filter(null, true).Where(x => x.Id == businessId && x.Deleted == false).First(); + var order = tenantDb.Queryable().Filter(null, true).Where(x => x.Id == businessId && x.Deleted == false).First(); - if (order.ETA != item.OpTime && item.OpTime != null) - { - order.ETA = item.OpTime; - await tenantDb.Updateable(order).EnableDiffLogEvent().ExecuteCommandAsync(); - } + if (order.ETA != item.OpTime && item.OpTime != null) + { + order.ETA = item.OpTime; + await tenantDb.Updateable(order).EnableDiffLogEvent().ExecuteCommandAsync(); } - if (item.Status == "MDGATA") + } + if (item.Status == "MDGATA") + { + if (list.Where(x => x.Value == "status_mdgata").FirstOrDefault() == null) { - if (list.Where(x => x.Value == "status_mdgata").FirstOrDefault() == null) + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_mdgata", - StatusName = dicList.Where(x => x.Value == "status_mdgata").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - } + BusinessId = businessId, + StatusCode = "status_mdgata", + StatusName = dicList.Where(x => x.Value == "status_mdgata").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + } - var order = tenantDb.Queryable().Filter(null, true).Where(x => x.Id == businessId && x.Deleted == false).First(); + var order = tenantDb.Queryable().Filter(null, true).Where(x => x.Id == businessId && x.Deleted == false).First(); - if (order.ATA != item.OpTime && item.OpTime != null) - { - order.ATA = item.OpTime; - await tenantDb.Updateable(order).EnableDiffLogEvent().ExecuteCommandAsync(); - } - } - #region 入港时间 - if (item.Status == "入港") + if (order.ATA != item.OpTime && item.OpTime != null) { + order.ATA = item.OpTime; + await tenantDb.Updateable(order).EnableDiffLogEvent().ExecuteCommandAsync(); + } + } + #region 入港时间 + if (item.Status == "入港") + { - if (list.Where(x => x.Value == "status_rugang").FirstOrDefault() == null) + if (list.Where(x => x.Value == "status_rugang").FirstOrDefault() == null) + { + var bookingStatus = new BookingStatus() { - var bookingStatus = new BookingStatus() - { - BusinessId = businessId, - StatusCode = "status_rugang", - StatusName = dicList.Where(x => x.Value == "status_rugang").Select(x => x.Name).First(), - StatusTime = item.OpTime, - StatusGroup = "booking_status_group_billtrace" - }; - await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); - await seaComService.SetGoodsStatus("YRG", item.BookingId); - } + BusinessId = businessId, + StatusCode = "status_rugang", + StatusName = dicList.Where(x => x.Value == "status_rugang").Select(x => x.Name).First(), + StatusTime = item.OpTime, + StatusGroup = "booking_status_group_billtrace" + }; + await tenantDb.Insertable(bookingStatus).ExecuteCommandAsync(); + await seaComService.SetGoodsStatus("YRG", item.BookingId); } - #endregion - #endregion + } + #endregion + #endregion + + #region 船舶动态:ATD ETD ATA ETA MDGETA MDGATA + if (item.Status == "ATD" || item.Status == "ETD" || item.Status == "ATA" || item.Status == "ETA" || item.Status == "MDGETA" || item.Status == "MDGATA") + { + var config = await db.Queryable().FirstAsync(x => x.Code == TenantParamCode.ENABLE_STATUS_TO_SAILING_DATE); - #region 船舶动态:ATD ETD ATA ETA MDGETA MDGATA - if (item.Status == "ATD" || item.Status == "ETD" || item.Status == "ATA" || item.Status == "ETA" || item.Status == "MDGETA" || item.Status == "MDGATA") + if (config.IsNotNull() && config.Value == "YES") { - var config = await db.Queryable().FirstAsync(x => x.Code == TenantParamCode.ENABLE_STATUS_TO_SAILING_DATE); - - if (config.IsNotNull() && config.Value == "YES") + var order = await tenantDb.Queryable().Where(x => x.Id == businessId && x.MBLNO == item.MBLNO).FirstAsync(); + if (item.Status == "ATD") { - var order = await tenantDb.Queryable().Where(x => x.Id == businessId && x.MBLNO == item.MBLNO).FirstAsync(); - if (item.Status == "ATD") - { - //2023-8-31,排查单号为177GZHZHQ5711V的数据,原来录入的船已开船,运踪港前不再查询,而因订阅港后数据会继续回推数据,所以导致ATD被改 - //因此,暂时取消运踪回推时写入ATD,还是以船期表查询为准 + //2023-8-31,排查单号为177GZHZHQ5711V的数据,原来录入的船已开船,运踪港前不再查询,而因订阅港后数据会继续回推数据,所以导致ATD被改 + //因此,暂时取消运踪回推时写入ATD,还是以船期表查询为准 + + // 2024-4-8 因为港捷需要,重新开启,并通过租户参数判断 + //变更ATD - // 2024-4-8 因为港捷需要,重新开启,并通过租户参数判断 - //变更ATD - - if (order != null && item.OpTime != null && order.ATD != item.OpTime) + if (order != null && item.OpTime != null && order.ATD != item.OpTime) + { + order.ATD = item.OpTime; + await tenantDb.Updateable(order).UpdateColumns(x => new { - order.ATD = item.OpTime; - await tenantDb.Updateable(order).UpdateColumns(x => new - { - x.ATD - }).EnableDiffLogEvent().ExecuteCommandAsync(); - //sendDsList.Add(item.BookingId); - //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); - } - - /* - * 2023年8月24日改,取消运踪回推ATD的批量更新功能 - * 和川操作经常修改提单号和船名航次,但修改时间会差好几天,导致运踪根据提单号查询的数据,回写回来之后,再根据船名航次去批量更新数据时,错误的把其他数据修改了 - * 因此,不能根据船名航次去批量修改数据,因为操作写的船名航次可能是错误的,导致把他人的数据修改错误 - */ - ////批量变更相同船期 - //if (!string.IsNullOrEmpty(o.VESSEL) && !string.IsNullOrEmpty(o.VOYNO) && !string.IsNullOrEmpty(o.CARRIERID)) - //{ - // var order = await _rep.AsQueryable().Filter(null, true).Where(x => x.VOYNO == o.VOYNO && x.VESSEL == o.VESSEL && x.CARRIERID == o.CARRIERID && x.TenantId == o.TenantId && x.IsDeleted == false && x.Id != item.BookingId).ToListAsync(); - - // foreach (var it in order) - // { - // var _oldorder = it; - // var _oldatd = it.ATD; - // if (_oldatd != item.OpTime) - // { - // it.ATD = item.OpTime; - // await _rep.UpdateAsync(it); - // await _bookingorderservice.SaveLog(it, _oldorder); - // await _bookingorderservice.SendBookingOrder(new long[] { it.Id }); - // } - // } - //} + x.ATD + }).EnableDiffLogEvent().ExecuteCommandAsync(); + //sendDsList.Add(item.BookingId); + //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); } - else if (item.Status == "ETD") + + /* + * 2023年8月24日改,取消运踪回推ATD的批量更新功能 + * 和川操作经常修改提单号和船名航次,但修改时间会差好几天,导致运踪根据提单号查询的数据,回写回来之后,再根据船名航次去批量更新数据时,错误的把其他数据修改了 + * 因此,不能根据船名航次去批量修改数据,因为操作写的船名航次可能是错误的,导致把他人的数据修改错误 + */ + ////批量变更相同船期 + //if (!string.IsNullOrEmpty(o.VESSEL) && !string.IsNullOrEmpty(o.VOYNO) && !string.IsNullOrEmpty(o.CARRIERID)) + //{ + // var order = await _rep.AsQueryable().Filter(null, true).Where(x => x.VOYNO == o.VOYNO && x.VESSEL == o.VESSEL && x.CARRIERID == o.CARRIERID && x.TenantId == o.TenantId && x.IsDeleted == false && x.Id != item.BookingId).ToListAsync(); + + // foreach (var it in order) + // { + // var _oldorder = it; + // var _oldatd = it.ATD; + // if (_oldatd != item.OpTime) + // { + // it.ATD = item.OpTime; + // await _rep.UpdateAsync(it); + // await _bookingorderservice.SaveLog(it, _oldorder); + // await _bookingorderservice.SendBookingOrder(new long[] { it.Id }); + // } + // } + //} + } + else if (item.Status == "ETD") + { + if (order != null && item.OpTime != null && order.YgtETD != item.OpTime) { - if (order != null && item.OpTime != null && order.YgtETD != item.OpTime) + order.YgtETD = item.OpTime; + await tenantDb.Updateable(order).UpdateColumns(x => new { - order.YgtETD = item.OpTime; - await tenantDb.Updateable(order).UpdateColumns(x => new - { - x.YgtETD - }).EnableDiffLogEvent().ExecuteCommandAsync(); - //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); - } + x.YgtETD + }).EnableDiffLogEvent().ExecuteCommandAsync(); + //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); } - else if (item.Status == "ATA") + } + else if (item.Status == "ATA") + { + if (order != null && item.OpTime != null && order.StartATA != item.OpTime) { - if (order != null && item.OpTime != null && order.StartATA != item.OpTime) + order.StartATA = item.OpTime; + await tenantDb.Updateable(order).UpdateColumns(x => new { - order.StartATA = item.OpTime; - await tenantDb.Updateable(order).UpdateColumns(x => new - { - x.StartATA - }).EnableDiffLogEvent().ExecuteCommandAsync(); - //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); - } + x.StartATA + }).EnableDiffLogEvent().ExecuteCommandAsync(); + //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); } - else if (item.Status == "ETA") + } + else if (item.Status == "ETA") + { + if (order != null && item.OpTime != null && order.StartETA != item.OpTime) { - if (order != null && item.OpTime != null && order.StartETA != item.OpTime) + order.StartETA = item.OpTime; + await tenantDb.Updateable(order).UpdateColumns(x => new { - order.StartETA = item.OpTime; - await tenantDb.Updateable(order).UpdateColumns(x => new - { - x.StartETA - }).EnableDiffLogEvent().ExecuteCommandAsync(); - //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); - } + x.StartETA + }).EnableDiffLogEvent().ExecuteCommandAsync(); + //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); } - else if (item.Status == "MDGETA") + } + else if (item.Status == "MDGETA") + { + if (order != null && item.OpTime != null && order.ETA != item.OpTime) { - if (order != null && item.OpTime != null && order.ETA != item.OpTime) + order.ETA = item.OpTime; + await tenantDb.Updateable(order).UpdateColumns(x => new { - order.ETA = item.OpTime; - await tenantDb.Updateable(order).UpdateColumns(x => new - { - x.ETA - }).EnableDiffLogEvent().ExecuteCommandAsync(); - //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); - } - + x.ETA + }).EnableDiffLogEvent().ExecuteCommandAsync(); + //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); } - else if (item.Status == "MDGATA") + + } + else if (item.Status == "MDGATA") + { + if (order != null && item.OpTime != null && order.ATA != item.OpTime) { - if (order != null && item.OpTime != null && order.ATA != item.OpTime) + order.ATA = item.OpTime; + await tenantDb.Updateable(order).UpdateColumns(x => new { - order.ATA = item.OpTime; - await tenantDb.Updateable(order).UpdateColumns(x => new - { - x.ATA - }).EnableDiffLogEvent().ExecuteCommandAsync(); - //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); - } - + x.ATA + }).EnableDiffLogEvent().ExecuteCommandAsync(); + //await _bookingorderservice.SaveLog(newOrder, oldOrder, "运踪更新船期"); } + } } - #endregion } - + #endregion } + + } catch (Exception ex) { @@ -465,6 +481,6 @@ namespace DS.WMS.Core.Op.Method - + } } diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs index ab9d09db..9022d3fe 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportTraceService.cs @@ -114,6 +114,7 @@ namespace DS.WMS.Core.Op.Method billdto.PWD = userPwd; billdto.url = resUrl; billdto.Gid = userId; + billdto.PushBackKey = user.TenantId;//根据回传的租户Id回调 var json = billdto.ToJsonString(); var postData =new { msg = json }; @@ -163,7 +164,7 @@ namespace DS.WMS.Core.Op.Method Key = userKey, PWD = userPwd, Gid = userId, - PushBackKey= user.TenantId.ToString(), + PushBackKey= user.TenantId, }; foreach (var item in req) { diff --git a/ds-wms-service/DS.WMS.Core/Sys/Dtos/UserReq.cs b/ds-wms-service/DS.WMS.Core/Sys/Dtos/UserReq.cs index 6c7e15d2..cbe9605a 100644 --- a/ds-wms-service/DS.WMS.Core/Sys/Dtos/UserReq.cs +++ b/ds-wms-service/DS.WMS.Core/Sys/Dtos/UserReq.cs @@ -24,7 +24,7 @@ public class UserReq /// /// 密码 /// - [RegularExpression(pattern:@"^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$",ErrorMessage ="密码至少要包含8个字符,同时包含至少一个大写字母、一个小写字母、一个数字和一个特殊字符")] + //[RegularExpression(pattern:@"^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,}$",ErrorMessage ="密码至少要包含8个字符,同时包含至少一个大写字母、一个小写字母、一个数字和一个特殊字符")] public string Password { get; set; } /// diff --git a/ds-wms-service/DS.WMS.Core/Sys/Interface/IUserService.cs b/ds-wms-service/DS.WMS.Core/Sys/Interface/IUserService.cs index 3dc8f88b..3622534e 100644 --- a/ds-wms-service/DS.WMS.Core/Sys/Interface/IUserService.cs +++ b/ds-wms-service/DS.WMS.Core/Sys/Interface/IUserService.cs @@ -1,4 +1,5 @@ using DS.Module.Core; +using DS.Module.Core.Data; using DS.WMS.Core.Sys.Dtos; namespace DS.WMS.Core.Sys.Interface; @@ -32,4 +33,12 @@ public interface IUserService /// /// public Task CheckUserCode(string code); + + + /// + /// 删除用户 + /// + /// + /// + public Task BatchDelUser(IdModel req); } \ No newline at end of file diff --git a/ds-wms-service/DS.WMS.Core/Sys/Method/UserService.cs b/ds-wms-service/DS.WMS.Core/Sys/Method/UserService.cs index fc74b8a5..58a4c544 100644 --- a/ds-wms-service/DS.WMS.Core/Sys/Method/UserService.cs +++ b/ds-wms-service/DS.WMS.Core/Sys/Method/UserService.cs @@ -1,7 +1,10 @@ using DS.Module.Core; +using DS.Module.Core.Data; using DS.Module.Core.Extensions; using DS.Module.Core.Helpers; +using DS.Module.SqlSugar; using DS.Module.UserModule; +using DS.WMS.Core.Code.Entity; using DS.WMS.Core.Sys.Dtos; using DS.WMS.Core.Sys.Entity; using DS.WMS.Core.Sys.Interface; @@ -114,7 +117,6 @@ public class UserService : IUserService } } - #endregion var data = model.MapTo(); @@ -150,7 +152,7 @@ public class UserService : IUserService } if (model.LaneIds.Count() > 0) { - foreach (var item in model.OrgIds) + foreach (var item in model.LaneIds) { var laneUser = new SysUserLane { @@ -263,4 +265,39 @@ public class UserService : IUserService return DataResult.Successed("更新成功!",MultiLanguageConst.DataUpdateSuccess); } } + /// + /// 删除用户 + /// + /// + /// + public async Task BatchDelUser(IdModel req) + { + if (req.Ids.Contains(long.Parse(user.UserId))) + { + return await Task.FromResult(DataResult.Failed("不能删除本人账号!")); + } + var list = await db.Queryable().Where(x => req.Ids.Contains(x.Id)).ToListAsync(); + if (list.Count > 0) + { + foreach (var item in list) + { + + var roleUsers = await db.Queryable().Where(x => x.UserId == item.Id).ToListAsync(); + if (roleUsers.Count > 0) + await db.Deleteable(roleUsers).ExecuteCommandAsync(); + + var orgUsers = await db.Queryable().Where(x => x.UserId == item.Id).ToListAsync(); + if (orgUsers.Count > 0) + await db.Deleteable(orgUsers).ExecuteCommandAsync(); + + var userLanes = await db.Queryable().Where(x => x.UserId == item.Id).ToListAsync(); + if (userLanes.Count > 0) + await db.Deleteable(userLanes).ExecuteCommandAsync(); + } + await db.Deleteable(list).ExecuteCommandAsync(); + + } + return await Task.FromResult(DataResult.Successed("删除成功!", MultiLanguageConst.DataDelSuccess)); + + } } \ No newline at end of file diff --git a/ds-wms-service/DS.WMS.MainApi/Controllers/UserController.cs b/ds-wms-service/DS.WMS.MainApi/Controllers/UserController.cs index cc1b2819..abc8258c 100644 --- a/ds-wms-service/DS.WMS.MainApi/Controllers/UserController.cs +++ b/ds-wms-service/DS.WMS.MainApi/Controllers/UserController.cs @@ -1,4 +1,5 @@ using DS.Module.Core; +using DS.Module.Core.Data; using DS.WMS.Core.Sys.Dtos; using DS.WMS.Core.Sys.Interface; using Microsoft.AspNetCore.Mvc; @@ -72,4 +73,17 @@ public class UserController : ApiController var res = await _invokeService.CheckUserCode(code); return res; } + + /// + /// 批量删除用户 + /// + /// + /// + [HttpPost] + [Route("BatchDelUser")] + public async Task BatchDelUser([FromBody] IdModel req) + { + var res =await _invokeService.BatchDelUser(req); + return res; + } } \ No newline at end of file