diff --git a/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportRefundService.cs b/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportRefundService.cs index f0131b78..e295e4a4 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportRefundService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Interface/ISeaExportRefundService.cs @@ -63,5 +63,13 @@ namespace DS.WMS.Core.Op.Interface /// public Task RefundPoolAsync(IdModel req); + + /// + /// 创建退舱确认任务 + /// + /// + /// + + public Task CreateRefundConfirmAsync(IdModel req); } } diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportRefundService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportRefundService.cs index 06f94a69..d847fc1e 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportRefundService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportRefundService.cs @@ -488,10 +488,7 @@ namespace DS.WMS.Core.Op.Method }, tenantDb); return await Task.FromResult(DataResult.Successed(result.Message)); - } - - - + } } #endregion @@ -511,8 +508,7 @@ namespace DS.WMS.Core.Op.Method return await Task.FromResult(DataResult.Failed("不存在的海运出口信息!", MultiLanguageConst.SeaExportExist)); if (callback.FlowStatus == FlowStatusEnum.Approve) - { - await seaComService.SetGoodsStatus("YSTC", callback.BusinessId, tenantDb); + { var userList = new List(); if (info.OrderProgress =="2")//已出号未申报 发起退舱入池任务 推给当票商务 { @@ -548,7 +544,26 @@ namespace DS.WMS.Core.Op.Method { return await Task.FromResult(DataResult.Failed(result.Message)); } - } + } + #region 更新退舱标识 + await seaComService.SetGoodsStatus("YSTC", callback.BusinessId, tenantDb); + var oldOrder = info.Adapt(); + info.IsRefund = true; + int rows = await tenantDb.Updateable(info).UpdateColumns(x => new + { + x.IsRefund, + }).ExecuteCommandAsync(); + + await seaComService.SaveSeaExportLogAsync(new SeaExportSaveLog() + { + OperateType = "Update", + OldOrder = oldOrder, + NewOrder = info, + SourceCode = "RefundAuditCallbackAsync", + SourceName = "退仓审核通过", + }, tenantDb); + #endregion + } else { @@ -611,5 +626,49 @@ namespace DS.WMS.Core.Op.Method return DataResult.Success; } + + /// + /// 创建退舱确认任务 + /// + /// + /// + + public async Task CreateRefundConfirmAsync(IdModel req) + { + var tenantDb = saasService.GetBizDbScopeById(user.TenantId); + var info = await tenantDb.Queryable().Where(x => x.Id == long.Parse(req.Id)).FirstAsync(); + if (info.IsNull()) + return await Task.FromResult(DataResult.Failed("不存在的海运出口信息!", MultiLanguageConst.SeaExportExist)); + if (info.IsRefund == false) + { + return await Task.FromResult(DataResult.Failed("订单状态必须为退舱标识!")); + } + var task = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(req.Id) && x.TaskType == TaskBaseTypeEnum.RETURN_CABIN).FirstAsync(); + + + if (task.IsNotNull() && task.TaskStatus == TaskStatusEnum.Complete) + { + return await Task.FromResult(DataResult.Failed("退舱确认任务已完成!")); + } + + var userList = new List(); + userList.Add(info.OperatorId); + //发起退舱确认任务 + var taskReq = new TaskCreationRequest() + { + BusinessId = info.Id, + BusinessType = BusinessType.OceanShippingExport, + TaskTypeName = TaskBaseTypeEnum.RETURN_CABIN.ToString(), + TaskTitle = $"【{TaskBaseTypeEnum.RETURN_CABIN.GetDescription()}】{info?.CustomerNo}", + TaskDescription = $"【{TaskBaseTypeEnum.RETURN_CABIN.GetDescription()}】{info?.CustomerNo}", + RecvUserIdList = userList.ToArray() + }; + var res = await taskService.CreateTaskAsync(taskReq, false); + if (!res.Succeeded) + return await Task.FromResult(DataResult.Failed(res.Message)); + + return DataResult.Success; + + } } } diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs index ccee29cd..cc683996 100644 --- a/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs +++ b/ds-wms-service/DS.WMS.Core/Op/Method/SeaExportService.cs @@ -1116,25 +1116,34 @@ public partial class SeaExportService : ISeaExportService //info.DeleteBy = long.Parse(user.UserId); //tenantDb.Updateable(info).ExecuteCommand(); //tenantDb.Deleteable(info).IsLogic().ExecuteCommand("Deleted"); + try + { + await tenantDb.Ado.BeginTranAsync(); + var ctns = await tenantDb.Queryable().Where(x => x.BSNO == id).ToListAsync(); + if (ctns.Count > 0) + await tenantDb.Deleteable(ctns).ExecuteCommandAsync(); + + var ctnPrices = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(id)).ToListAsync(); + if (ctnPrices.Count > 0) + await tenantDb.Deleteable(ctnPrices).ExecuteCommandAsync(); + var ediInfo = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(id)).FirstAsync(); + if (ediInfo.IsNotNull()) + await tenantDb.Deleteable(ediInfo).ExecuteCommandAsync(); + + var contacts = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(id)).ToListAsync(); + if (contacts.Count > 0) + await tenantDb.Deleteable(contacts).ExecuteCommandAsync(); + + await tenantDb.Deleteable(info).ExecuteCommandAsync(); + await tenantDb.Ado.CommitTranAsync(); - - var ctns = await tenantDb.Queryable().Where(x => x.BSNO == id).ToListAsync(); - if (ctns.Count > 0) - await tenantDb.Deleteable(ctns).ExecuteCommandAsync(); - - var ctnPrices = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(id)).ToListAsync(); - if (ctnPrices.Count > 0) - await tenantDb.Deleteable(ctnPrices).ExecuteCommandAsync(); - var ediInfo = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(id)).FirstAsync(); - if (ediInfo.IsNotNull()) - await tenantDb.Deleteable(ediInfo).ExecuteCommandAsync(); - - var contacts = await tenantDb.Queryable().Where(x => x.BusinessId == long.Parse(id)).ToListAsync(); - if (contacts.Count > 0) - await tenantDb.Deleteable(contacts).ExecuteCommandAsync(); - - await tenantDb.Deleteable(info).ExecuteCommandAsync(); - + } + catch (Exception ex) + { + await tenantDb.Ado.RollbackTranAsync(); + await ex.LogAsync(db); + return await Task.FromResult(DataResult.Failed("删除失败!" + ",请联系管理员!")); + } return DataResult.Successed("删除成功!", MultiLanguageConst.DataDelSuccess); } @@ -1184,12 +1193,44 @@ public partial class SeaExportService : ISeaExportService //tenantDb.Deleteable(list).IsLogic().ExecuteCommand("Deleted"); //tenantDb.Deleteable(list).IsLogic().ExecuteCommand("Deleted"); - foreach (var item in list) + //foreach (var item in list) + //{ + // item.Deleted = true; + // item.DeleteTime = DateTime.Now; + // item.DeleteBy = long.Parse(user.UserId); + // tenantDb.Updateable(item).ExecuteCommand(); + //} + + try + { + await tenantDb.Ado.BeginTranAsync(); + foreach (var item in list) + { + var ctns = await tenantDb.Queryable().Where(x => x.BSNO == item.Id.ToString()).ToListAsync(); + if (ctns.Count > 0) + await tenantDb.Deleteable(ctns).ExecuteCommandAsync(); + + var ctnPrices = await tenantDb.Queryable().Where(x => x.BusinessId == item.Id).ToListAsync(); + if (ctnPrices.Count > 0) + await tenantDb.Deleteable(ctnPrices).ExecuteCommandAsync(); + var ediInfo = await tenantDb.Queryable().Where(x => x.BusinessId == item.Id).FirstAsync(); + if (ediInfo.IsNotNull()) + await tenantDb.Deleteable(ediInfo).ExecuteCommandAsync(); + + var contacts = await tenantDb.Queryable().Where(x => x.BusinessId == item.Id).ToListAsync(); + if (contacts.Count > 0) + await tenantDb.Deleteable(contacts).ExecuteCommandAsync(); + + await tenantDb.Deleteable(item).ExecuteCommandAsync(); + } + await tenantDb.Ado.CommitTranAsync(); + + } + catch (Exception ex) { - item.Deleted = true; - item.DeleteTime = DateTime.Now; - item.DeleteBy = long.Parse(user.UserId); - tenantDb.Updateable(item).ExecuteCommand(); + await tenantDb.Ado.RollbackTranAsync(); + await ex.LogAsync(db); + return await Task.FromResult(DataResult.Failed("删除失败!" + ",请联系管理员!")); } return DataResult.Successed("删除成功!", MultiLanguageConst.DataDelSuccess); diff --git a/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportRefundController.cs b/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportRefundController.cs index 0b382965..557ac6b1 100644 --- a/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportRefundController.cs +++ b/ds-wms-service/DS.WMS.OpApi/Controllers/SeaExportRefundController.cs @@ -109,5 +109,17 @@ namespace DS.WMS.OpApi.Controllers { return await _invokeService.RefundPoolAsync(req); } + + /// + /// 创建退舱确认任务 + /// + /// + /// + [HttpPost] + [Route("CreateRefundConfirm")] + public async Task CreateRefundConfirm([FromBody] IdModel req) + { + return await _invokeService.CreateRefundConfirmAsync(req); + } } } \ No newline at end of file