From ba2d1e672362fca72363d5aff76d4018a5007752 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 31 Oct 2023 15:08:35 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E6=94=B9=E7=AE=B1=E6=9C=8D=E5=8A=A1?=
=?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/SysConfigController.cs | 14 +++----
src/WMS.Web.Core/Dto/BoxDetailResponse.cs | 10 +----
src/WMS.Web.Core/Dto/BoxResponse.cs | 25 +++++++++++
.../SaveChangeBoxRecordRequest.cs | 19 +++------
src/WMS.Web.Domain/Entitys/BoxDetails.cs | 2 +-
src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs | 7 +++-
.../Infrastructure/IBoxRepositories.cs | 4 +-
src/WMS.Web.Repositories/BoxRepositories.cs | 42 +++++++++++--------
.../Configuration/RepositoryDbContext.cs | 10 +++++
9 files changed, 81 insertions(+), 52 deletions(-)
create mode 100644 src/WMS.Web.Core/Dto/BoxResponse.cs
diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs
index 4488185a..def8569c 100644
--- a/src/WMS.Web.Api/Controllers/SysConfigController.cs
+++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs
@@ -118,17 +118,17 @@ namespace WMS.Web.Api.Controllers
/// 必填
///
[HttpGet]
- [Route("GetBoxDetails")]
- public async Task> GetBoxDetails([FromQuery] string billNo)
+ [Route("GetBox")]
+ public async Task> GetBox([FromQuery] string billNo)
{
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null)
- return ResultList.ReFailure(ResultCodes.Token_Invalid_Error);
- if(string.IsNullOrEmpty(billNo))
- return ResultList.ReSuccess(new List());
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+ if (string.IsNullOrEmpty(billNo))
+ return Result.ReSuccess(null);
- var r = await _boxRepositories.GetDetails(billNo);
- return ResultList.ReSuccess(r);
+ var r = await _boxRepositories.GetBox(billNo);
+ return Result.ReSuccess(r);
}
}
}
diff --git a/src/WMS.Web.Core/Dto/BoxDetailResponse.cs b/src/WMS.Web.Core/Dto/BoxDetailResponse.cs
index 0e50d697..ea6103f0 100644
--- a/src/WMS.Web.Core/Dto/BoxDetailResponse.cs
+++ b/src/WMS.Web.Core/Dto/BoxDetailResponse.cs
@@ -9,14 +9,6 @@ namespace WMS.Web.Core.Dto
///
public class BoxDetailResponse
{
- ///
- /// 单据头ID
- ///
- public int Fid { get; set; }
- ///
- /// 箱Id
- ///
- public int BoxId { get; set; }
///
/// 物料ID
///
@@ -44,6 +36,6 @@ namespace WMS.Web.Core.Dto
///
/// 序列号集
///
- public string SerialNumbers { get; set; }
+ public List SerialNumbers { get; set; } = new List();
}
}
diff --git a/src/WMS.Web.Core/Dto/BoxResponse.cs b/src/WMS.Web.Core/Dto/BoxResponse.cs
new file mode 100644
index 00000000..2a43290b
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/BoxResponse.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto
+{
+ ///
+ /// 箱信息(头部)
+ ///
+ public class BoxResponse
+ {
+ ///
+ /// 单据头ID
+ ///
+ public int Id { get; set; }
+ ///
+ /// 箱Id
+ ///
+ public int BoxId { get; set; }
+ ///
+ /// 明细信息
+ ///
+ public List Details = new List();
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
index 3aa186f7..e443118b 100644
--- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
@@ -16,11 +16,6 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
[Required(ErrorMessage = "物料不能为空")]
public int MaterialId { get; set; }
///
- /// 仓库Id
- ///
- [Required(ErrorMessage = "仓库不能为空")]
- public int StockId { get; set; }
- ///
/// 原箱子ID
///
[Required(ErrorMessage = "原箱子不能为空")]
@@ -31,14 +26,10 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
[Required(ErrorMessage = "目标箱子不能为空")]
public int DestBoxId { get; set; }
///
- /// 原仓位ID
- ///
- [Required(ErrorMessage = "原仓位不能为空")]
- public int SrcSubStockId { get; set; }
- ///
- /// 目标仓位ID
- ///
- [Required(ErrorMessage = "目标仓位不能为空")]
- public int DestSubStockId { get; set; }
+ /// 数量
+ ///
+ [Required(ErrorMessage = "数量不能为空")]
+ public decimal Qty { get; set; }
+
}
}
diff --git a/src/WMS.Web.Domain/Entitys/BoxDetails.cs b/src/WMS.Web.Domain/Entitys/BoxDetails.cs
index fa75df3f..1b066b16 100644
--- a/src/WMS.Web.Domain/Entitys/BoxDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/BoxDetails.cs
@@ -37,6 +37,6 @@ namespace WMS.Web.Domain.Entitys
///
/// 序列号集
///
- public string SerialNumbers { get; set; }
+ public List SerialNumbers { get; set; } = new List();
}
}
diff --git a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
index c7ce8ee6..6382327e 100644
--- a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
+++ b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
@@ -33,13 +33,18 @@ namespace WMS.Web.Domain.Entitys
/// 序列号
///
[Column("SerialNumbers")]
- public string SerialNumbers { get; set; }
+ public List SerialNumbers { get; set; } = new List();
///
/// 原箱子ID
///
[Column("SrcBoxId")]
public int SrcBoxId { get; set; }
///
+ /// 数量
+ ///
+ [Column("Qty")]
+ public decimal Qty { get; set; }
+ ///
/// 目标箱子ID
///
[Column("DestBoxId")]
diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs
index 70bcfc01..0fa4ce3a 100644
--- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs
@@ -13,7 +13,7 @@ namespace WMS.Web.Domain.Infrastructure
public interface IBoxRepositories
{
Task Get(string BoxBillNo);
- //根据箱号查询物料信息
- Task> GetDetails(string BoxBillNo);
+ //根据箱号查询明细信息
+ Task GetBox(string BoxBillNo);
}
}
diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs
index 51b195e0..54e66981 100644
--- a/src/WMS.Web.Repositories/BoxRepositories.cs
+++ b/src/WMS.Web.Repositories/BoxRepositories.cs
@@ -45,25 +45,31 @@ namespace WMS.Web.Repositories
///
///
///
- public async Task> GetDetails(string BoxBillNo)
+ public async Task GetBox(string BoxBillNo)
{
- return await _context.BoxDetails
- .GroupJoin(_context.Box, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
- .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
- .Where(w => w.order.BoxBillNo.Equals(BoxBillNo))
- .Select(s => new BoxDetailResponse()
- {
- Fid = s.detail.Fid,
- BoxId = s.order.OpsBoxId,
- MaterialId = s.detail.MaterialId,
- MaterialName = "",
- MaterialNumber = "",
- Specifications = "",
- SerialNumbers = s.detail.SerialNumbers,
- SupplierId = s.detail.SupplierId,
- Qty = s.detail.Qty
- })
- .ToListAsync();
+ var entity = await _context.Box.FirstOrDefaultAsync(f => f.BoxBillNo.Equals(BoxBillNo));
+ if (entity == null) return null;
+ BoxResponse result = new BoxResponse()
+ {
+ Id = entity.Id,
+ BoxId = entity.OpsBoxId
+ };
+ result.Details = await _context.BoxDetails
+ .GroupJoin(_context.Box, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
+ .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
+ .Where(w => w.order.BoxBillNo.Equals(BoxBillNo))
+ .Select(s => new BoxDetailResponse()
+ {
+ MaterialId = s.detail.MaterialId,
+ MaterialName = "",
+ MaterialNumber = "",
+ Specifications = "",
+ SerialNumbers = s.detail.SerialNumbers,
+ SupplierId = s.detail.SupplierId,
+ Qty = s.detail.Qty
+ })
+ .ToListAsync();
+ return result;
}
}
}
diff --git a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs
index 80f4c4d1..23bdb3fe 100644
--- a/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs
+++ b/src/WMS.Web.Repositories/Configuration/RepositoryDbContext.cs
@@ -1,9 +1,11 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Debug;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Text;
+using System.Text.Json;
using WMS.Web.Domain.Entitys;
using WMS.Web.Repositories.Configuration.Log;
@@ -35,6 +37,10 @@ namespace WMS.Web.Repositories.Configuration
{
ent.ToTable("t_wms_changebox_record");
ent.HasKey(x => x.Id);
+
+ ent.Property(f => f.SerialNumbers).HasConversion(
+ v => JsonConvert.SerializeObject(v),
+ v => JsonConvert.DeserializeObject>(v));
});
//移箱
builder.Entity(ent =>
@@ -197,6 +203,10 @@ namespace WMS.Web.Repositories.Configuration
{
ent.ToTable("t_ops_box_details");
ent.HasKey(x => x.Id);
+
+ ent.Property(f => f.SerialNumbers).HasConversion(
+ v => JsonConvert.SerializeObject(v),
+ v => JsonConvert.DeserializeObject>(v));
});
#endregion
From f011244048fb660caea0c7da19ce424c8598d4a1 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 31 Oct 2023 15:12:17 +0800
Subject: [PATCH 2/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 2 +-
src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 48 +++++++++----------
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 5 ++
.../ChangeBoxRecordRepositories.cs | 3 +-
4 files changed, 32 insertions(+), 26 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
index f52f3a5d..966ca712 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
@@ -249,7 +249,7 @@
仓库模糊匹配 不必填
-
+
根据箱号获取箱信息
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 6ad4f45b..3a673fb1 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -230,16 +230,6 @@
根据箱号获取物料信息
-
-
- 单据头ID
-
-
-
-
- 箱Id
-
-
物料ID
@@ -275,6 +265,26 @@
序列号集
+
+
+ 箱信息(头部)
+
+
+
+
+ 单据头ID
+
+
+
+
+ 箱Id
+
+
+
+
+ 明细信息
+
+
改箱列表请求
@@ -390,11 +400,6 @@
物料ID
-
-
- 仓库Id
-
-
原箱子ID
@@ -405,15 +410,10 @@
目标箱子ID
-
-
- 原仓位ID
-
-
-
-
- 目标仓位ID
-
+
+
+ 数量
+
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 2452347b..22a88a65 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -235,6 +235,11 @@
原箱子ID
+
+
+ 数量
+
+
目标箱子ID
diff --git a/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs b/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
index 5637de04..eb44847e 100644
--- a/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
+++ b/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
@@ -1,6 +1,7 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -117,7 +118,7 @@ namespace WMS.Web.Repositories
MaterialNumber = "",
Specifications = "",
Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.changeBox.StockId),
- SerialNumbers = s.changeBox.SerialNumbers,
+ SerialNumbers = JsonConvert.SerializeObject(s.changeBox.SerialNumbers),
SrcBox = s.srcBox.BoxBillNo,
DestBox = s.destBox.BoxBillNo,
SrcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.changeBox.SrcSubStockId),
From fad2cb04cf3a0dfb7a6ed1e485a483880e951ddb Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 31 Oct 2023 15:14:54 +0800
Subject: [PATCH 3/5] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Core/Dto/BoxResponse.cs | 4 ++--
src/WMS.Web.Repositories/BoxRepositories.cs | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/WMS.Web.Core/Dto/BoxResponse.cs b/src/WMS.Web.Core/Dto/BoxResponse.cs
index 2a43290b..81965de6 100644
--- a/src/WMS.Web.Core/Dto/BoxResponse.cs
+++ b/src/WMS.Web.Core/Dto/BoxResponse.cs
@@ -14,9 +14,9 @@ namespace WMS.Web.Core.Dto
///
public int Id { get; set; }
///
- /// 箱Id
+ /// 箱号
///
- public int BoxId { get; set; }
+ public string BoxBillNo { get; set; }
///
/// 明细信息
///
diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs
index 54e66981..892fd0a5 100644
--- a/src/WMS.Web.Repositories/BoxRepositories.cs
+++ b/src/WMS.Web.Repositories/BoxRepositories.cs
@@ -52,7 +52,7 @@ namespace WMS.Web.Repositories
BoxResponse result = new BoxResponse()
{
Id = entity.Id,
- BoxId = entity.OpsBoxId
+ BoxBillNo = entity.BoxBillNo
};
result.Details = await _context.BoxDetails
.GroupJoin(_context.Box, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
From 4e453835324e99dda2ed350fecf57143e2e6c47a Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 31 Oct 2023 15:20:27 +0800
Subject: [PATCH 4/5] =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=BB=93=E6=9E=84?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../SaveChangeBoxRecordRequest.cs | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
index e443118b..7f4921dc 100644
--- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
@@ -10,11 +10,6 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
///
public class SaveChangeBoxRecordRequest
{
- ///
- /// 物料ID
- ///
- [Required(ErrorMessage = "物料不能为空")]
- public int MaterialId { get; set; }
///
/// 原箱子ID
///
@@ -25,11 +20,23 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
///
[Required(ErrorMessage = "目标箱子不能为空")]
public int DestBoxId { get; set; }
+
+ public List Details = new List();
+ }
+ ///
+ /// 明细
+ ///
+ public class SaveChangeBoxRecordDetailsRequest
+ {
+ ///
+ /// 物料ID
+ ///
+ [Required(ErrorMessage = "物料不能为空")]
+ public int MaterialId { get; set; }
///
/// 数量
///
[Required(ErrorMessage = "数量不能为空")]
public decimal Qty { get; set; }
-
}
}
From c1c3ec29281374b510cf9fecb3f75c1186321772 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 31 Oct 2023 16:06:51 +0800
Subject: [PATCH 5/5] =?UTF-8?q?=E6=94=B9=E7=AE=B1=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 26 ++++++----
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 20 ++------
.../SaveChangeBoxRecordRequest.cs | 4 ++
src/WMS.Web.Domain/Entitys/Box.cs | 44 ++++++++++++++++-
src/WMS.Web.Domain/Entitys/BoxDetails.cs | 5 +-
src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs | 25 ++++------
.../Infrastructure/IBoxRepositories.cs | 4 +-
.../IChangeBoxRecordRepositories.cs | 2 +
.../Services/ChangeMoveBoxService.cs | 43 ++++++++++++++---
src/WMS.Web.Domain/Values/ResultCodes.cs | 3 ++
src/WMS.Web.Repositories/BoxRepositories.cs | 47 +++++++++++++++++--
.../ChangeBoxRecordRepositories.cs | 46 ++++++++++++++----
12 files changed, 205 insertions(+), 64 deletions(-)
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 3a673fb1..f20aa460 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -275,9 +275,9 @@
单据头ID
-
+
- 箱Id
+ 箱号
@@ -395,11 +395,6 @@
保存改箱
-
-
- 物料ID
-
-
原箱子ID
@@ -410,11 +405,26 @@
目标箱子ID
-
+
+
+ 明细
+
+
+
+
+ 物料ID
+
+
+
数量
+
+
+ 序列号
+
+
所有枚举信息
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 22a88a65..fcc8a227 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -220,11 +220,6 @@
物料ID
-
-
- 仓库Id
-
-
序列号
@@ -245,16 +240,6 @@
目标箱子ID
-
-
- 原仓位ID
-
-
-
-
- 目标仓位ID
-
-
操作人
@@ -265,11 +250,14 @@
操作时间
-
+
创建
+
+
+
diff --git a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
index 7f4921dc..ef24724b 100644
--- a/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
+++ b/src/WMS.Web.Core/Dto/ChangeBoxRecord/SaveChangeBoxRecordRequest.cs
@@ -38,5 +38,9 @@ namespace WMS.Web.Core.Dto.ChangeBoxRecord
///
[Required(ErrorMessage = "数量不能为空")]
public decimal Qty { get; set; }
+ ///
+ /// 序列号
+ ///
+ public List SerialNumbers { get; set; } = new List();
}
}
diff --git a/src/WMS.Web.Domain/Entitys/Box.cs b/src/WMS.Web.Domain/Entitys/Box.cs
index d3c0512e..5270dce2 100644
--- a/src/WMS.Web.Domain/Entitys/Box.cs
+++ b/src/WMS.Web.Domain/Entitys/Box.cs
@@ -1,7 +1,11 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
using System.Text;
+using WMS.Web.Core;
+using WMS.Web.Core.Internal.Results;
+using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.Entitys
{
@@ -11,12 +15,12 @@ namespace WMS.Web.Domain.Entitys
[Serializable]
[Table("t_ops_box")]
- public class Box
+ public class Box : EntityBase
{
///
/// ID
///
- public int Id { get; set; }
+ public override int Id { get; set; }
///
/// 对应老OPS的箱ID
@@ -37,5 +41,41 @@ namespace WMS.Web.Domain.Entitys
/// 明细
///
public List Details = new List();
+
+ //移出
+ public Result Out(List<(int MaterialId, decimal Qty, List SerialNumbers)> list)
+ {
+ foreach(var l in list)
+ {
+ var d = this.Details.FirstOrDefault(f => f.MaterialId == l.MaterialId);
+ if (d == null) return Result.ReFailure(ResultCodes.BoxMateriaNoData);
+ d.Qty = d.Qty - l.Qty;
+ if (d.Qty <= 0) this.Details.Remove(d);
+ foreach (var s in l.SerialNumbers) d.SerialNumbers.Remove(s);
+ }
+ return Result.ReSuccess();
+ }
+
+ //移入
+ public Result In(List<(int MaterialId, decimal Qty, List SerialNumbers)> list)
+ {
+ foreach (var l in list)
+ {
+ var d = this.Details.FirstOrDefault(f => f.MaterialId == l.MaterialId);
+ if (d == null)
+ {
+ this.Details.Add(new BoxDetails()
+ {
+ MaterialId = l.MaterialId,
+ Qty=l.Qty,
+ SerialNumbers=l.SerialNumbers
+ });
+ continue;
+ }
+ d.Qty = d.Qty + l.Qty;
+ d.SerialNumbers.AddRange(l.SerialNumbers);
+ }
+ return Result.ReSuccess();
+ }
}
}
diff --git a/src/WMS.Web.Domain/Entitys/BoxDetails.cs b/src/WMS.Web.Domain/Entitys/BoxDetails.cs
index 1b066b16..c976d4ae 100644
--- a/src/WMS.Web.Domain/Entitys/BoxDetails.cs
+++ b/src/WMS.Web.Domain/Entitys/BoxDetails.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
+using WMS.Web.Core;
namespace WMS.Web.Domain.Entitys
{
@@ -11,12 +12,12 @@ namespace WMS.Web.Domain.Entitys
[Serializable]
[Table("t_ops_box_details")]
- public class BoxDetails
+ public class BoxDetails : EntityBase
{
///
/// ID
///
- public int Id { get; set; }
+ public override int Id { get; set; }
///
/// 单据头ID
diff --git a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
index 6382327e..2d5b371d 100644
--- a/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
+++ b/src/WMS.Web.Domain/Entitys/ChangeBoxRecord.cs
@@ -25,11 +25,6 @@ namespace WMS.Web.Domain.Entitys
[Column("MaterialId")]
public int MaterialId { get; set; }
///
- /// 仓库Id
- ///
- [Column("StockId")]
- public int StockId { get; set; }
- ///
/// 序列号
///
[Column("SerialNumbers")]
@@ -50,16 +45,6 @@ namespace WMS.Web.Domain.Entitys
[Column("DestBoxId")]
public int DestBoxId { get; set; }
///
- /// 原仓位ID
- ///
- [Column("SrcSubStockId")]
- public int SrcSubStockId { get; set; }
- ///
- /// 目标仓位ID
- ///
- [Column("DestSubStockId")]
- public int DestSubStockId { get; set; }
- ///
/// 操作人
///
[Column("CreatorId")]
@@ -73,8 +58,16 @@ namespace WMS.Web.Domain.Entitys
/// 创建
///
///
- public void Create(int creatorId)
+ ///
+ ///
+ ///
+ public void Create(int creatorId,decimal qty,int materialId, List serialNumbers,int srcBoxId,int destBoxId)
{
+ this.SrcBoxId = srcBoxId;
+ this.DestBoxId = destBoxId;
+ this.SerialNumbers = serialNumbers;
+ this.MaterialId = materialId;
+ this.Qty = qty;
this.CreatorId = creatorId;
this.CreateTime = DateTime.Now;
}
diff --git a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs
index 0fa4ce3a..91f01e51 100644
--- a/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IBoxRepositories.cs
@@ -12,8 +12,10 @@ namespace WMS.Web.Domain.Infrastructure
///
public interface IBoxRepositories
{
- Task Get(string BoxBillNo);
+ Task Get(int id);
//根据箱号查询明细信息
Task GetBox(string BoxBillNo);
+ //批量修改
+ Task EditEntityList(List entitys, bool isTransaction = true);
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs
index 945f4d21..e48e1183 100644
--- a/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IChangeBoxRecordRepositories.cs
@@ -12,6 +12,8 @@ namespace WMS.Web.Domain.Infrastructure
{
// 新增
Task Add(ChangeBoxRecord entity, bool isTransaction = true);
+ // 批量新增
+ Task AddRange(List list, bool isTransaction = true);
// 获取列表
Task<(List list,int total)> GetListAsync(ChangeBoxRecordQueryRequest dto);
diff --git a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
index 1682f60d..6cd7a3a9 100644
--- a/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
+++ b/src/WMS.Web.Domain/Services/ChangeMoveBoxService.cs
@@ -2,6 +2,7 @@
using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.ChangeBoxRecord;
@@ -24,15 +25,17 @@ namespace WMS.Web.Domain.Services
private readonly IChangeBoxRecordRepositories _changeBoxRecordRepositories;
public readonly ITransactionRepositories _transactionRepositories;
private readonly IMoveBoxRecordRepositories _moveBoxRecordRepositories;
- public ChangeMoveBoxService(IMapper mapper, ILoginService loginService,
+ private readonly IBoxRepositories _boxRepositories;
+ public ChangeMoveBoxService(IMapper mapper, ILoginService loginService,
IChangeBoxRecordRepositories changeBoxRecordRepositories, ITransactionRepositories transactionRepositories,
- IMoveBoxRecordRepositories moveBoxRecordRepositories)
+ IMoveBoxRecordRepositories moveBoxRecordRepositories, IBoxRepositories boxRepositories)
{
_mapper = mapper;
_loginService = loginService;
_changeBoxRecordRepositories = changeBoxRecordRepositories;
_transactionRepositories = transactionRepositories;
_moveBoxRecordRepositories = moveBoxRecordRepositories;
+ _boxRepositories = boxRepositories;
}
///
/// 改箱保存
@@ -40,10 +43,32 @@ namespace WMS.Web.Domain.Services
///
///
///
- public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo)
+ public async Task ChangeBoxSave(SaveChangeBoxRecordRequest dto, LoginInDto loginInfo)
{
- var entity = _mapper.Map(dto);
- entity.Create(loginInfo.UserInfo.StaffId);
+ List boxList = new List();
+ var srcBox = await _boxRepositories.Get(dto.SrcBoxId);
+ var destBox = await _boxRepositories.Get(dto.DestBoxId);
+ if (srcBox == null) return Result.ReFailure(ResultCodes.BoxNoData);
+ if (destBox == null) return Result.ReFailure(ResultCodes.BoxNoData);
+ var l = dto.Details.Select(s => (s.MaterialId, s.Qty, s.SerialNumbers)).ToList();
+ //原箱移出
+ var res = srcBox.Out(l);
+ if (!res.IsSuccess) return res;
+ //目标箱移入
+ res = destBox.In(l);
+ if (!res.IsSuccess) return res;
+
+ boxList.Add(srcBox);
+ boxList.Add(destBox);
+
+ //var entity = _mapper.Map(dto);\
+ List list = new List();
+ foreach (var d in dto.Details)
+ {
+ ChangeBoxRecord entity = new ChangeBoxRecord();
+ entity.Create(loginInfo.UserInfo.StaffId, d.Qty, d.MaterialId, d.SerialNumbers, dto.SrcBoxId, dto.DestBoxId);
+ list.Add(entity);
+ }
//需要填写序列号
//需要修改库存
@@ -51,8 +76,12 @@ namespace WMS.Web.Domain.Services
IDbContextTransaction _transaction = _transactionRepositories.GetTransaction();
bool isRollback = false;
bool isSuccess = true;
- entity = await _changeBoxRecordRepositories.Add(entity, true);
- if (entity == null) isRollback = true;
+ isSuccess = await _changeBoxRecordRepositories.AddRange(list, false);
+ if (!isSuccess) isRollback = true;
+
+ isSuccess = await _boxRepositories.EditEntityList(boxList, false);
+ if (!isSuccess) isRollback = true;
+
//提交事务
isSuccess = _transactionRepositories.CommitTransaction(isRollback, _transaction);
diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs
index cddf6d70..a3fcd4bf 100644
--- a/src/WMS.Web.Domain/Values/ResultCodes.cs
+++ b/src/WMS.Web.Domain/Values/ResultCodes.cs
@@ -24,5 +24,8 @@ namespace WMS.Web.Domain.Values
//出库任务单
public static ValueTuple MergeStatusError = (70000, "所选单据数据不一致,不能合并");
+
+ public static ValueTuple BoxNoData = (80000, "箱信息不存在");
+ public static ValueTuple BoxMateriaNoData = (800010, "箱对应物料信息不存在");
}
}
diff --git a/src/WMS.Web.Repositories/BoxRepositories.cs b/src/WMS.Web.Repositories/BoxRepositories.cs
index 892fd0a5..de1108fd 100644
--- a/src/WMS.Web.Repositories/BoxRepositories.cs
+++ b/src/WMS.Web.Repositories/BoxRepositories.cs
@@ -1,14 +1,17 @@
using AutoMapper;
using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Storage;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
+using WMS.Web.Core.Help;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService.Public;
+using WMS.Web.Domain.Mappers;
using WMS.Web.Repositories.Configuration;
namespace WMS.Web.Repositories
@@ -35,10 +38,12 @@ namespace WMS.Web.Repositories
_loginRepositories = loginRepositories;
_basicsRepositories = basicsRepositories;
}
- public async Task Get(string BoxBillNo)
+ public async Task Get(int id)
{
- return await _context.Box.Include(x => x.Details)
- .FirstOrDefaultAsync(f => f.BoxBillNo.Equals(BoxBillNo));
+ var entity= await _context.Box.Include(x => x.Details)
+ .FirstOrDefaultAsync(f => f.Id.Equals(id));
+
+ return entity.Clone();
}
///
/// 根据箱号查询物料信息
@@ -71,5 +76,41 @@ namespace WMS.Web.Repositories
.ToListAsync();
return result;
}
+
+ ///
+ /// 批量修改
+ ///
+ ///
+ ///
+ ///
+ public async Task EditEntityList(List entitys, bool isTransaction = true)
+ {
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _context.Database.BeginTransaction();
+ try
+ {
+ List list = entitys.Select(s => s.Id).ToList();
+
+ var res = await _context.Box
+ .Include(s => s.Details)
+ .Where(f => list.Contains(f.Id)).ToListAsync();
+
+ _mapper.ToMapList(entitys, res);
+ _mapper.ToMapList(entitys.SelectMany(s => s.Details).ToList(), res.SelectMany(s => s.Details).ToList());
+
+ await _context.SaveChangesAsync();
+ if (_transaction != null)
+ _transaction.Commit();
+ }
+ catch (Exception ex)
+ {
+ if (_transaction != null)
+ _transaction.Rollback();
+ return false;
+ }
+ return true;
+
+ }
}
}
diff --git a/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs b/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
index eb44847e..59d182ca 100644
--- a/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
+++ b/src/WMS.Web.Repositories/ChangeBoxRecordRepositories.cs
@@ -71,6 +71,34 @@ namespace WMS.Web.Repositories
}
}
+ ///
+ /// 批量添加
+ ///
+ ///
+ ///
+ ///
+ public async Task AddRange(List list, bool isTransaction = true)
+ {
+ IDbContextTransaction _transaction = null;
+ if (isTransaction)
+ _transaction = _context.Database.BeginTransaction();
+ try
+ {
+ _context.ChangeBoxRecord.AddRange(list);
+ await _context.SaveChangesAsync();
+
+ if (_transaction != null)
+ _transaction.Commit();
+ return true;
+ }
+ catch (Exception ex)
+ {
+ if (_transaction != null)
+ _transaction.Rollback();
+ return false;
+ }
+ }
+
///
/// 列表
///
@@ -99,12 +127,12 @@ namespace WMS.Web.Repositories
query = query.Where(w => EF.Functions.Like(w.srcBox.BoxBillNo, "%" + dto.SrcBox + "%"));
if (!string.IsNullOrEmpty(dto.DestBox))
query = query.Where(w => EF.Functions.Like(w.destBox.BoxBillNo, "%" + dto.DestBox + "%"));
- if (dto.StockId != null)
- query = query.Where(w => w.changeBox.StockId == dto.StockId);
- if (dto.SrcSubStockId != null)
- query = query.Where(w => w.changeBox.SrcSubStockId == dto.SrcSubStockId);
- if (dto.DestSubStockId != null)
- query = query.Where(w => w.changeBox.DestSubStockId == dto.DestSubStockId);
+ //if (dto.StockId != null)
+ // query = query.Where(w => w.changeBox.StockId == dto.StockId);
+ //if (dto.SrcSubStockId != null)
+ // query = query.Where(w => w.changeBox.SrcSubStockId == dto.SrcSubStockId);
+ //if (dto.DestSubStockId != null)
+ // query = query.Where(w => w.changeBox.DestSubStockId == dto.DestSubStockId);
if (dto.CreateBeginDate != null)
query = query.Where(w => w.changeBox.CreateTime >= dto.CreateBeginDate);
if (dto.CreateEndDate != null)
@@ -117,12 +145,12 @@ namespace WMS.Web.Repositories
MaterialName = "",
MaterialNumber = "",
Specifications = "",
- Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.changeBox.StockId),
+ //Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.changeBox.StockId),
SerialNumbers = JsonConvert.SerializeObject(s.changeBox.SerialNumbers),
SrcBox = s.srcBox.BoxBillNo,
DestBox = s.destBox.BoxBillNo,
- SrcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.changeBox.SrcSubStockId),
- DestSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.changeBox.DestSubStockId),
+ //SrcSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.changeBox.SrcSubStockId),
+ //DestSubStock = _singleDataService.GetSingleData(SingleAction.SubStocks, _loginRepositories.CompanyId, s.changeBox.DestSubStockId),
Creator = _singleDataService.GetSingleData(SingleAction.Staffs, _loginRepositories.CompanyId, s.changeBox.CreatorId),
CreateTime = s.changeBox.CreateTime.DateToStringSeconds()
#endregion