From 47bf5c4365eee1f2647f131ae8852a896fd6d022 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 26 Mar 2024 17:28:40 +0800
Subject: [PATCH 1/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=87=BA=E5=BA=93?=
=?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=8D=95=E8=AF=A6=E6=83=85=20=E5=A2=9E?=
=?UTF-8?q?=E5=8A=A0=E8=AE=A2=E9=98=85=E9=80=9A=E7=9F=A5=E8=AF=A6=E6=83=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/OutStockTaskController.cs | 15 ++
.../SubscribeNotificationController.cs | 18 +++
.../Controllers/SysConfigController.cs | 28 +++-
src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 23 ++-
src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 139 +++++++++++++++++-
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 14 ++
.../OutStockTaskInfoDetailsResponse.cs | 53 +++++++
.../OutStockTask/OutStockTaskInfoResponse.cs | 49 ++++++
.../SubscribeNotificationInfoResponse.cs | 33 +++++
.../SubscribeNotificationQueryRequest.cs | 4 +-
.../IService/Public/IOutStockTaskService.cs | 7 +
.../Infrastructure/IOutStockRepositories.cs | 2 +-
.../Mappers/SubscribeNotificationMapper.cs | 5 +
.../Services/OutStockTaskService.cs | 48 +++++-
.../OutStockRepositories.cs | 4 +-
.../SubscribeNotificationRepositories.cs | 12 +-
16 files changed, 438 insertions(+), 16 deletions(-)
create mode 100644 src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
create mode 100644 src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs
create mode 100644 src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs
diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
index 7db1622b..07275574 100644
--- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
+++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
@@ -204,5 +204,20 @@ namespace WMS.Web.Api.Controllers
//再刷新3天内所有的
return await _outStockTaskService.Sync(null, begin);
}
+ ///
+ /// 出库任务单详情
+ ///
+ ///
+ ///
+ [HttpGet]
+ [Route("GetInfo/{id}")]
+ public async Task> GetInfo([FromRoute] int id)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ return await _outStockTaskService.GetInfo(id);
+ }
}
}
diff --git a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
index 595067d6..7e7296d5 100644
--- a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
+++ b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
@@ -128,5 +128,23 @@ namespace WMS.Web.Api.Controllers
if (!res) Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
+
+ ///
+ /// 获取详情
+ ///
+ ///
+ ///
+ [HttpPost]
+ [Route("GetInfo/{id}")]
+ public async Task> GetInfo([FromRoute] int id)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result.ReFailure(ResultCodes.Token_Invalid_Error);
+
+ var entity = await _repositories.Get(id);
+ if (entity == null) Result.ReFailure(ResultCodes.SubscribeNotificationNoData);
+ return Result.ReSuccess(_mapper.Map(entity));
+ }
}
}
diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs
index 4077980a..ae821926 100644
--- a/src/WMS.Web.Api/Controllers/SysConfigController.cs
+++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs
@@ -275,7 +275,7 @@ namespace WMS.Web.Api.Controllers
}
///
- /// 获取出库单客户下拉列表
+ /// 获取客户下拉列表(包含组织信息)
///
/// 客户名
///
@@ -310,6 +310,32 @@ namespace WMS.Web.Api.Controllers
return Result>.ReSuccess(pullList);
}
+ ///
+ /// 获取客户下拉列表(纯客户信息 不包含组织信息)
+ ///
+ /// 客户名
+ ///
+ [HttpGet]
+ [Route("GetCustomersNoOrg/{name}")]
+ public async Task>> GetCustomersNoOrg([FromRoute] string name)
+ {
+ var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
+ if (loginInfo == null || loginInfo.UserInfo == null)
+ return Result>.ReFailure(ResultCodes.Token_Invalid_Error);
+ var customers = await _erpService.BillQueryForCustomer();
+
+ List pullList = new List();
+ foreach (var c in customers.Data.Where(w => w.Name.Contains(name)))
+ {
+ pullList.Add(new PullDownStrResponse()
+ {
+ Id = c.Id.ToString(),
+ Name = c.Name,
+ Code = c.Number
+ });
+ }
+ return Result>.ReSuccess(pullList);
+ }
///
/// 获取仓位:模糊名称
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
index 43380d37..49456459 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml
@@ -499,6 +499,13 @@
+
+
+ 出库任务单详情
+
+
+
+
获取序列号信息
@@ -539,6 +546,13 @@
+
+
+ 获取详情
+
+
+
+
系统配置
@@ -593,7 +607,14 @@
- 获取出库单客户下拉列表
+ 获取客户下拉列表(包含组织信息)
+
+ 客户名
+
+
+
+
+ 获取客户下拉列表(纯客户信息 不包含组织信息)
客户名
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 803c34ca..83cee8ee 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -4563,6 +4563,111 @@
单号
+
+
+ 出库任务单对应出库明细
+
+
+
+
+ 物料编码
+
+
+
+
+ 物料规格型号
+
+
+
+
+ 箱号
+
+
+
+
+ 序列号
+
+
+
+
+ 仓位
+
+
+
+
+ 出库数量
+
+
+
+
+ 应出库数量
+
+
+
+
+ 出库方式
+
+
+
+
+ 出库人
+
+
+
+
+ 出库时间
+
+
+
+
+ 出库任务单详情
+
+
+
+
+ 主键
+
+
+
+
+ 单据编号
+
+
+
+
+ 来源单号
+
+
+
+
+ 发货组织
+
+
+
+
+ 客户
+
+
+
+
+ 单据状态
+
+
+
+
+ 单据类型
+
+
+
+
+ 创建时间(erp那边的创建时间)
+
+
+
+
+ 出库箱信息
+
+
出库单任务列表
@@ -5298,6 +5403,36 @@
邮件
+
+
+ 订阅通知详情
+
+
+
+
+ 主键
+
+
+
+
+ 客户名称
+
+
+
+
+ 客户编码
+
+
+
+
+ 电话
+
+
+
+
+ 邮件
+
+
订阅通知列表
@@ -5368,12 +5503,12 @@
操作人
-
+
操作时间 开始
-
+
操作时间 结束
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 06c93d6e..697d7256 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -3849,6 +3849,13 @@
+
+
+ 查询出库任务单详情
+
+
+
+
单点数据返回服务接口
@@ -4959,6 +4966,13 @@
+
+
+ 获取出库任务单详情
+
+
+
+
同步erp基础数据
diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
new file mode 100644
index 00000000..dbedcb58
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.OutStockTask
+{
+ ///
+ /// 出库任务单对应出库明细
+ ///
+ public class OutStockTaskInfoDetailsResponse
+ {
+ ///
+ /// 物料编码
+ ///
+ public string MaterialNumber { get; set; }
+ ///
+ /// 物料规格型号
+ ///
+ public string Specifications { get; set; }
+ ///
+ /// 箱号
+ ///
+ public string BoxBillNo { get; set; }
+ ///
+ /// 序列号
+ ///
+ public string SerialNumbers { get; set; }
+ ///
+ /// 仓位
+ ///
+ public string SubStockCode { get; set; }
+ ///
+ /// 出库数量
+ ///
+ public decimal Qty { get; set; }
+ ///
+ /// 应出库数量
+ ///
+ public decimal AccruedQty { get; set; }
+ ///
+ /// 出库方式
+ ///
+ public string Method { get; set; }
+ ///
+ /// 出库人
+ ///
+ public string Creator { get; set; }
+ ///
+ /// 出库时间
+ ///
+ public DateTime CreateTime { get; set; } = DateTime.Now;
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs
new file mode 100644
index 00000000..ad0e17f6
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoResponse.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.OutStockTask
+{
+ ///
+ /// 出库任务单详情
+ ///
+ public class OutStockTaskInfoResponse
+ {
+ ///
+ /// 主键
+ ///
+ public int Id { get; set; }
+ ///
+ /// 单据编号
+ ///
+ public string BillNo { get; set; }
+ ///
+ /// 来源单号
+ ///
+ public string SourceBillNo { get; set; }
+ ///
+ /// 发货组织
+ ///
+ public string DeliveryOrg { get; set; }
+ ///
+ /// 客户
+ ///
+ public string ReceiptCustomer { get; set; }
+ ///
+ /// 单据状态
+ ///
+ public string Status { get; set; }
+ ///
+ /// 单据类型
+ ///
+ public string Type { get; set; }
+ ///
+ /// 创建时间(erp那边的创建时间)
+ ///
+ public string CreateTime { get; set; }
+ ///
+ /// 出库箱信息
+ ///
+ public List Details { get; set; } = new List();
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs
new file mode 100644
index 00000000..43cd82e1
--- /dev/null
+++ b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationInfoResponse.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace WMS.Web.Core.Dto.SubscribeNotification
+{
+ ///
+ /// 订阅通知详情
+ ///
+ public class SubscribeNotificationInfoResponse
+ {
+ ///
+ /// 主键
+ ///
+ public int Id { get; set; }
+ ///
+ /// 客户名称
+ ///
+ public string CustomerName { get; set; }
+ ///
+ /// 客户编码
+ ///
+ public string CustomerNumber { get; set; }
+ ///
+ /// 电话
+ ///
+ public string Telephones { get; set; }
+ ///
+ /// 邮件
+ ///
+ public string Emails { get; set; }
+ }
+}
diff --git a/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs
index 6725892b..5cc936e2 100644
--- a/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs
+++ b/src/WMS.Web.Core/Dto/SubscribeNotification/SubscribeNotificationQueryRequest.cs
@@ -24,10 +24,10 @@ namespace WMS.Web.Core.Dto.SubscribeNotification
///
/// 操作时间 开始
///
- public DateTime? OperateBeginDate { get; set; }
+ public DateTime? CreateBeginDate { get; set; }
///
/// 操作时间 结束
///
- public DateTime? OperateEndDate { get; set; }
+ public DateTime? CreateEndDate { get; set; }
}
}
diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
index 6e492436..ce69f5d1 100644
--- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
+++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.Erp.OutStock;
using WMS.Web.Core.Dto.Login;
+using WMS.Web.Core.Dto.OutStockTask;
using WMS.Web.Core.Internal.Results;
namespace WMS.Web.Domain.IService.Public
@@ -56,5 +57,11 @@ namespace WMS.Web.Domain.IService.Public
///
///
Task Sync(List billNos = null,DateTime? begin=null);
+ ///
+ /// 查询出库任务单详情
+ ///
+ ///
+ ///
+ Task> GetInfo(int id);
}
}
diff --git a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
index cfdb13b6..308df288 100644
--- a/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
+++ b/src/WMS.Web.Domain/Infrastructure/IOutStockRepositories.cs
@@ -15,7 +15,7 @@ namespace WMS.Web.Domain.Infrastructure
//编辑
Task Edit(OutStock entity, bool isTransaction = true);
//根据任务单Id搜索
- Task GetByTaskId(int taskId);
+ Task> GetByTaskId(int taskId);
// 获取列表
Task<(List list, int total)> GetListAsync(OutStockQueryRequest dto, int companyId = 0);
/// 查询实体集合
diff --git a/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs b/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs
index 13bcc485..213128e6 100644
--- a/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs
+++ b/src/WMS.Web.Domain/Mappers/SubscribeNotificationMapper.cs
@@ -17,6 +17,11 @@ namespace WMS.Web.Domain.Mappers
CreateMap();
CreateMap();
CreateMap();
+ CreateMap()
+ .ForMember(x => x.Emails, ops => ops.MapFrom(x => string.Join(",", x.Emails)))
+ .ForMember(x => x.Telephones, ops => ops.MapFrom(x => string.Join(",", x.Telephones)));
+
+
}
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
index 9ce7c40e..e6185404 100644
--- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
@@ -5,9 +5,13 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using WMS.Web.Core;
using WMS.Web.Core.Dto;
+using WMS.Web.Core.Dto.Erp.Customer;
+using WMS.Web.Core.Dto.Erp.Org;
using WMS.Web.Core.Dto.Erp.OutStock;
using WMS.Web.Core.Dto.Login;
+using WMS.Web.Core.Dto.OutStockTask;
using WMS.Web.Core.Help;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
@@ -32,10 +36,11 @@ namespace WMS.Web.Domain.Services
private readonly IOutStockTaskRepositories _outStockTaskRepositories;
private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories;
private readonly RedisClientService _redisClientService;
+ private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
public OutStockTaskService(IMapper mapper, IErpService erpService, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories,
- RedisClientService redisClientService)
+ RedisClientService redisClientService, IErpBasicDataExtendService erpBasicDataExtendService)
{
_mapper = mapper;
_erpService = erpService;
@@ -45,6 +50,7 @@ namespace WMS.Web.Domain.Services
_outStockTaskRepositories = outStockTaskRepositories;
_erpOpsSyncDateRepositories = erpOpsSyncDateRepositories;
_redisClientService = redisClientService;
+ _erpBasicDataExtendService = erpBasicDataExtendService;
}
///
@@ -435,6 +441,46 @@ namespace WMS.Web.Domain.Services
return Result.ReSuccess();
}
+ ///
+ /// 获取出库任务单详情
+ ///
+ ///
+ ///
+ public async Task> GetInfo(int id)
+ {
+ var entity = await _outStockTaskRepositories.Get(id);
+ if (entity == null)
+ return Result.ReFailure(ResultCodes.OutStockTaskNoData);
+ //获取任务单对应出库信息
+ var outStockList = await _outStockRepositories.GetByTaskId(id);
+ //取组织
+ var org_result = await _erpService.BillQueryForOrg();
+ List orgs = new List();
+ if (org_result.IsSuccess)
+ orgs = org_result.Data.ToList();
+
+ //取客户
+ var customer_result = await _erpService.BillQueryForCustomer();
+ List customers = new List();
+ if (customer_result.IsSuccess)
+ customers = customer_result.Data.ToList();
+
+ OutStockTaskInfoResponse response = new OutStockTaskInfoResponse()
+ {
+ Id = entity.Id,
+ BillNo = entity.BillNo,
+ SourceBillNo = string.Join(",", entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo)),
+ CreateTime = entity.CreateTime.DateToStringSeconds(),
+ Status = entity.Status.GetRemark(),
+ Type = entity.Type.GetRemark(),
+ DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, entity.DeliveryOrgId),
+ ReceiptCustomer = entity.Type == OutStockType.Sal
+ ? _erpBasicDataExtendService.GetCustomerName(customers, entity.ReceiptCustomerId)
+ : _erpBasicDataExtendService.GetOrgName(orgs, entity.DeliveryOrgId),
+ };
+
+ return Result.ReSuccess(response);
+ }
}
}
diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs
index 85d5cbcd..e1a3107f 100644
--- a/src/WMS.Web.Repositories/OutStockRepositories.cs
+++ b/src/WMS.Web.Repositories/OutStockRepositories.cs
@@ -306,12 +306,12 @@ namespace WMS.Web.Repositories
///
///
///
- public async Task GetByTaskId(int taskId)
+ public async Task> GetByTaskId(int taskId)
{
var res = await _context.OutStock
.Include(s => s.Details).ThenInclude(s => s.ErpDetails)
.Include(s => s.Details).ThenInclude(s => s.BoxsDetails)
- .FirstOrDefaultAsync(f => taskId == f.TaskId);
+ .Where(f => taskId == f.TaskId).ToListAsync();
return res.Clone();
}
diff --git a/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs b/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs
index 796e34ce..4c43be6c 100644
--- a/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs
+++ b/src/WMS.Web.Repositories/SubscribeNotificationRepositories.cs
@@ -184,10 +184,10 @@ namespace WMS.Web.Repositories
query = query.Where(w => EF.Functions.Like(w.CustomerName, "%" + dto.CustomerName + "%"));
if (!string.IsNullOrEmpty(dto.CustomerNumber))
query = query.Where(w => EF.Functions.Like(w.CustomerNumber, "%" + dto.CustomerNumber + "%"));
- if (dto.OperateBeginDate != null)
- query = query.Where(w => w.OperateTime >= dto.OperateBeginDate);
- if (dto.OperateEndDate != null)
- query = query.Where(w => w.OperateTime <= dto.OperateEndDate);
+ if (dto.CreateBeginDate != null)
+ query = query.Where(w => w.OperateTime >= dto.CreateBeginDate);
+ if (dto.CreateEndDate != null)
+ query = query.Where(w => w.OperateTime <= dto.CreateEndDate);
//组装
int total = await query.CountAsync();
var list = await query.Select(s => new SubscribeNotificationQueryInfoResponse()
@@ -196,8 +196,8 @@ namespace WMS.Web.Repositories
Id = s.Id,
CustomerName = s.CustomerName,
CustomerNumber = s.CustomerNumber,
- Telephones = s.CustomerName,
- Emails = s.CustomerName,
+ Telephones = string.Join(",", s.Telephones),
+ Emails = string.Join(",", s.Emails),
Operate = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.OperateId),
OperateTime = s.OperateTime.DateToStringSeconds(),
Creator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.CreatorId),
From 6c5c5faa5aa9e5ee1b17ef92deeb30c65b799a66 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 26 Mar 2024 17:36:26 +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
---
.../SubscribeNotificationController.cs | 2 +-
.../Services/OutStockTaskService.cs | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
index 7e7296d5..526de4e2 100644
--- a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
+++ b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
@@ -143,7 +143,7 @@ namespace WMS.Web.Api.Controllers
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
var entity = await _repositories.Get(id);
- if (entity == null) Result.ReFailure(ResultCodes.SubscribeNotificationNoData);
+ if (entity == null || entity.IsDelete == true) Result.ReFailure(ResultCodes.SubscribeNotificationNoData);
return Result.ReSuccess(_mapper.Map(entity));
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
index e6185404..ca97181c 100644
--- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
@@ -479,6 +479,21 @@ namespace WMS.Web.Domain.Services
? _erpBasicDataExtendService.GetCustomerName(customers, entity.ReceiptCustomerId)
: _erpBasicDataExtendService.GetOrgName(orgs, entity.DeliveryOrgId),
};
+ var details = outStockList.SelectMany(s => s.Details).ToList();
+ var boxDetails = outStockList.SelectMany(s => s.Details).SelectMany(s => s.BoxsDetails).ToList();
+ foreach (var b in boxDetails)
+ {
+ var detail = details.FirstOrDefault(f => f.Id == b.DetailId);
+ var outStock = outStockList.FirstOrDefault(f => f.Id == detail.Fid);
+ OutStockTaskInfoDetailsResponse infoDetail = new OutStockTaskInfoDetailsResponse()
+ {
+ BoxBillNo = b.BoxId.ToString(),
+ Qty = b.Qty,
+ SerialNumbers = string.Join(",", b.SerialNumbers),
+ Method = outStock.Method.GetRemark()
+
+ };
+ }
return Result.ReSuccess(response);
}
From 2dc1c162e0537a5213389d96c3144621a004e80d Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 26 Mar 2024 17:44:53 +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
---
.../Controllers/OutStockTaskController.cs | 2 +-
src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml | 5 -----
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 4 ++--
.../OutStockTaskInfoDetailsResponse.cs | 6 +----
.../IService/Public/IOutStockTaskService.cs | 2 +-
.../Services/OutStockTaskService.cs | 22 +++++++++++++++----
6 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
index 07275574..ab53050c 100644
--- a/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
+++ b/src/WMS.Web.Api/Controllers/OutStockTaskController.cs
@@ -217,7 +217,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null)
return Result.ReFailure(ResultCodes.Token_Invalid_Error);
- return await _outStockTaskService.GetInfo(id);
+ return await _outStockTaskService.GetInfo(id, loginInfo);
}
}
}
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
index 83cee8ee..c5fe270a 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml
@@ -4588,11 +4588,6 @@
序列号
-
-
- 仓位
-
-
出库数量
diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
index 697d7256..dc8f7385 100644
--- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
+++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml
@@ -3849,7 +3849,7 @@
-
+
查询出库任务单详情
@@ -4966,7 +4966,7 @@
-
+
获取出库任务单详情
diff --git a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
index dbedcb58..2b498e7f 100644
--- a/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
+++ b/src/WMS.Web.Core/Dto/OutStockTask/OutStockTaskInfoDetailsResponse.cs
@@ -26,10 +26,6 @@ namespace WMS.Web.Core.Dto.OutStockTask
///
public string SerialNumbers { get; set; }
///
- /// 仓位
- ///
- public string SubStockCode { get; set; }
- ///
/// 出库数量
///
public decimal Qty { get; set; }
@@ -48,6 +44,6 @@ namespace WMS.Web.Core.Dto.OutStockTask
///
/// 出库时间
///
- public DateTime CreateTime { get; set; } = DateTime.Now;
+ public string CreateTime { get; set; }
}
}
diff --git a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
index ce69f5d1..fd1c1314 100644
--- a/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
+++ b/src/WMS.Web.Domain/IService/Public/IOutStockTaskService.cs
@@ -62,6 +62,6 @@ namespace WMS.Web.Domain.IService.Public
///
///
///
- Task> GetInfo(int id);
+ Task> GetInfo(int id, LoginInDto loginInfo);
}
}
diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
index ca97181c..ef38c481 100644
--- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs
+++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs
@@ -7,6 +7,7 @@ using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core;
using WMS.Web.Core.Dto;
+using WMS.Web.Core.Dto.Erp;
using WMS.Web.Core.Dto.Erp.Customer;
using WMS.Web.Core.Dto.Erp.Org;
using WMS.Web.Core.Dto.Erp.OutStock;
@@ -20,6 +21,7 @@ using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Services.Public;
using WMS.Web.Domain.Values;
+using WMS.Web.Domain.Values.Single;
namespace WMS.Web.Domain.Services
{
@@ -37,10 +39,12 @@ namespace WMS.Web.Domain.Services
private readonly IErpOpsSyncDateRepositories _erpOpsSyncDateRepositories;
private readonly RedisClientService _redisClientService;
private readonly IErpBasicDataExtendService _erpBasicDataExtendService;
+ private readonly ISingleDataService _singleDataService;
public OutStockTaskService(IMapper mapper, IErpService erpService, ILoginService loginService,
IBasicsRepositories transactionRepositories,
IOutStockRepositories outStockRepositories, IOutStockTaskRepositories outStockTaskRepositories, IErpOpsSyncDateRepositories erpOpsSyncDateRepositories,
- RedisClientService redisClientService, IErpBasicDataExtendService erpBasicDataExtendService)
+ RedisClientService redisClientService, IErpBasicDataExtendService erpBasicDataExtendService,
+ ISingleDataService singleDataService)
{
_mapper = mapper;
_erpService = erpService;
@@ -51,6 +55,7 @@ namespace WMS.Web.Domain.Services
_erpOpsSyncDateRepositories = erpOpsSyncDateRepositories;
_redisClientService = redisClientService;
_erpBasicDataExtendService = erpBasicDataExtendService;
+ _singleDataService = singleDataService;
}
///
@@ -446,7 +451,7 @@ namespace WMS.Web.Domain.Services
///
///
///
- public async Task> GetInfo(int id)
+ public async Task> GetInfo(int id, LoginInDto loginInfo)
{
var entity = await _outStockTaskRepositories.Get(id);
if (entity == null)
@@ -466,6 +471,11 @@ namespace WMS.Web.Domain.Services
if (customer_result.IsSuccess)
customers = customer_result.Data.ToList();
+ var materials_result = await _erpService.BillQueryForMaterial();
+ List materials = new List();
+ if (materials_result.IsSuccess)
+ materials = materials_result.Data.ToList();
+
OutStockTaskInfoResponse response = new OutStockTaskInfoResponse()
{
Id = entity.Id,
@@ -490,8 +500,12 @@ namespace WMS.Web.Domain.Services
BoxBillNo = b.BoxId.ToString(),
Qty = b.Qty,
SerialNumbers = string.Join(",", b.SerialNumbers),
- Method = outStock.Method.GetRemark()
-
+ Method = outStock.Method.GetRemark(),
+ Creator = _singleDataService.GetSingleData(SingleAction.Staffs, loginInfo.UserInfo.CompanyId, outStock.CreatorId),
+ CreateTime = outStock.CreateTime.DateToStringSeconds(),
+ MaterialNumber = detail.MaterialNumber,
+ Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, detail.MaterialNumber),
+ AccruedQty = entity.Details.FirstOrDefault(f => f.MaterialNumber == detail.MaterialNumber)?.AccruedQty ?? 0
};
}
From e6ae36845eeba82b6dc4ad6d594a26be20ecfe82 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Tue, 26 Mar 2024 17:46:17 +0800
Subject: [PATCH 4/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/Controllers/SubscribeNotificationController.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
index 526de4e2..4d729e39 100644
--- a/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
+++ b/src/WMS.Web.Api/Controllers/SubscribeNotificationController.cs
@@ -134,7 +134,7 @@ namespace WMS.Web.Api.Controllers
///
///
///
- [HttpPost]
+ [HttpGet]
[Route("GetInfo/{id}")]
public async Task> GetInfo([FromRoute] int id)
{
From ecf64bc0c906facd8bc054e989ab2e12676612a1 Mon Sep 17 00:00:00 2001
From: 18942506660 <18942506660@A18942506660>
Date: Wed, 27 Mar 2024 09:59:06 +0800
Subject: [PATCH 5/5] =?UTF-8?q?=E5=BA=8F=E5=88=97=E7=A0=81=E6=94=AF?=
=?UTF-8?q?=E6=8C=81=E8=80=81ops=E6=9D=A1=E7=A0=81=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 | Bin 233732 -> 234559 bytes
.../Controllers/SysConfigController.cs | 7 +-
src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml | 3 +-
src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml | 70 ++++++++++++++
.../Entitys/SerialNumbers_Ops.cs | 85 +++++++++++++++++
.../ISerialNumbersRepositories.cs | 2 +-
.../Mappers/SerialNumbersMapper.cs | 16 ++++
.../Configuration/RepositoryDbContext.cs | 9 ++
.../SerialNumbersRepositories.cs | 86 +++++++++++++++++-
9 files changed, 272 insertions(+), 6 deletions(-)
create mode 100644 src/WMS.Web.Domain/Entitys/SerialNumbers_Ops.cs
create mode 100644 src/WMS.Web.Domain/Mappers/SerialNumbersMapper.cs
diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2
index 833ecde6b12186a138fc89980725ced7e8557b0d..8f305c70d853973233576fd4f82d23d47834228f 100644
GIT binary patch
literal 234559
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