diff --git a/ds-wms-service/DS.WMS.Core/Op/Interface/IShippingBillService.cs b/ds-wms-service/DS.WMS.Core/Op/Interface/IShippingBillService.cs
index e5926112..df1fe183 100644
--- a/ds-wms-service/DS.WMS.Core/Op/Interface/IShippingBillService.cs
+++ b/ds-wms-service/DS.WMS.Core/Op/Interface/IShippingBillService.cs
@@ -37,6 +37,13 @@ namespace DS.WMS.Core.Op.Interface
///
DataResult EditShippingBill(ShippingBillReq model);
+ ///
+ /// 批量保存
+ ///
+ ///
+ ///
+ public Task SaveShippingBillAsync(List list);
+
///
/// 获取详情
///
diff --git a/ds-wms-service/DS.WMS.Core/Op/Method/ShippingBillService.cs b/ds-wms-service/DS.WMS.Core/Op/Method/ShippingBillService.cs
index 561c9df1..a5092b75 100644
--- a/ds-wms-service/DS.WMS.Core/Op/Method/ShippingBillService.cs
+++ b/ds-wms-service/DS.WMS.Core/Op/Method/ShippingBillService.cs
@@ -21,6 +21,7 @@ using NLog;
using Logger = NLog.Logger;
using Newtonsoft.Json.Linq;
using DS.Module.Core.Helpers;
+using Org.BouncyCastle.Ocsp;
namespace DS.WMS.Core.Op.Method
{
@@ -233,6 +234,136 @@ namespace DS.WMS.Core.Op.Method
return DataResult.Successed("更新成功!", MultiLanguageConst.DataUpdateSuccess);
}
}
+
+
+ ///
+ /// 批量保存
+ ///
+ ///
+ ///
+ public async Task SaveShippingBillAsync(List list)
+ {
+ var dbScope = (SqlSugarScope)db;
+ var tenantDb = saasService.GetBizDbScopeById(user.TenantId);
+
+ if (list.IsNull() || list.Count == 0)
+ {
+ return await Task.FromResult(DataResult.Failed("数据不能为空!"));
+ }
+ try
+ {
+ //开启事务
+ await dbScope.Ado.BeginTranAsync();
+ foreach (var item in list)
+ {
+ if (!string.IsNullOrWhiteSpace(item.MBLNO))
+ {
+ var et = await tenantDb.Queryable().Where(x => x.MBLNO == item.MBLNO && x.HBLNO == item.HBLNO && x.Id != item.Id).FirstAsync();
+ if (et != null)
+ {
+ return await Task.FromResult(DataResult.Failed("当前提单号已存在,请勿重复录入!"));
+
+ }
+ }
+ if (item.Id == 0)
+ {
+ var data = item.Adapt();
+ data.State = "已录入";
+
+ if (data.CarrierId != 0)
+ {
+ data.Carrier = await tenantDb.Queryable().Where(x => x.LinkId == data.CarrierId).Select(x => x.MapCode).FirstAsync();
+ }
+ if (data.CargoId != "D")
+ {
+
+ data.DangerClass = string.Empty;
+ data.DangerNo = string.Empty;
+ }
+ var entity = tenantDb.Insertable(data).ExecuteReturnEntity();
+ if (item.CtnInfo.Count > 0)
+ {
+
+ foreach (var item1 in item.CtnInfo)
+ {
+ var ctn = item1.Adapt();
+ ctn.Pid = entity.Id;
+ await tenantDb.Insertable(ctn).ExecuteCommandAsync();
+ }
+ }
+
+ }
+ else
+ {
+ var info = await tenantDb.Queryable().Where(x => x.Id == item.Id).FirstAsync();
+
+ if (info.State != "已录入")
+ {
+ if (item.State != info.State)
+ {
+ item.State = info.State; //防止前端数据覆盖状态
+ }
+
+ if (item.HBLNO != info.HBLNO)
+ {
+ return await Task.FromResult(DataResult.Failed("已直发状态不能修改分单号"));
+ }
+ }
+
+ info = item.Adapt(info);
+ if (info.CarrierId != 0)
+ {
+ info.Carrier = await tenantDb.Queryable().Where(x => x.LinkId == info.CarrierId).Select(x => x.MapCode).FirstAsync();
+ }
+ if (info.CargoId != "D")
+ {
+
+ info.DangerClass = string.Empty;
+ info.DangerNo = string.Empty;
+ }
+ await tenantDb.Updateable(info).IgnoreColumns(ignoreAllNullColumns: true).IgnoreColumns(it => new
+ {
+ it.MBLNO,
+ it.BusinessId,
+ }).ExecuteCommandAsync();
+
+ if (item.CtnInfo.Count > 0)
+ {
+ var ctnList = tenantDb.Queryable().Where(x => x.Pid == req.Id).ToList();
+ foreach (var item1 in item.CtnInfo)
+ {
+ if (item1.Id == 0)
+ {
+ var ctn = item1.Adapt();
+ ctn.Pid = info.Id;
+ await tenantDb.Insertable(ctn).ExecuteCommandAsync();
+ }
+ else
+ {
+ var ctn = ctnList.First(x => x.Id == item.Id);
+ ctn = item1.Adapt(ctn);
+ await tenantDb.Updateable(ctn).ExecuteCommandAsync();
+ }
+
+ }
+ }
+
+ }
+
+
+
+ }
+ await dbScope.Ado.CommitTranAsync();
+ return await Task.FromResult(DataResult.Successed("更新成功!", MultiLanguageConst.DataUpdateSuccess));
+ }
+ catch (Exception ex)
+ {
+ await dbScope.Ado.RollbackTranAsync();
+ await ex.LogAsync(tenantDb);
+ return await Task.FromResult(DataResult.Failed("更新失败!" + ",请联系管理员!"));
+ }
+
+ }
///
/// 详情
///
diff --git a/ds-wms-service/DS.WMS.OpApi/Controllers/ShippingBillController.cs b/ds-wms-service/DS.WMS.OpApi/Controllers/ShippingBillController.cs
index 1a9e3ed2..a456f9eb 100644
--- a/ds-wms-service/DS.WMS.OpApi/Controllers/ShippingBillController.cs
+++ b/ds-wms-service/DS.WMS.OpApi/Controllers/ShippingBillController.cs
@@ -64,7 +64,18 @@ public class ShippingBillController : ApiController
var res = _invokeService.EditShippingBill(model);
return res;
}
-
+ ///
+ /// 批量保存
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("SaveShippingBillAsync")]
+ public async Task SaveShippingBillAsync([FromBody] List req)
+ {
+ var res = await _invokeService.SaveShippingBillAsync(req);
+ return res;
+ }
///
/// 详情
///