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