增加 序列码对接供应链

This commit is contained in:
18942506660
2024-06-18 14:17:13 +08:00
parent d87ae2dbe1
commit 28cdd60c6d
11 changed files with 213 additions and 6 deletions

View File

@@ -18,6 +18,7 @@ using WMS.Web.Core.Dto.Erp.Supplier;
using WMS.Web.Core.Dto.SingleData;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Options;
using WMS.Web.Domain.Values;
@@ -46,12 +47,14 @@ namespace WMS.Web.Api.Controllers
private readonly ILogger<SysConfigController> _logger;
private ErpOptions _erpOptions;
private readonly IMemoryCache _memoryCache;
private readonly ISerialNumberService _serialNumberService;
public SysConfigController(ILoginService loginService, IBasicsRepositories basicsRepositories, IOptions<ErpOptions> erpOptions,
IBoxRepositories boxRepositories, IErpService erpService, ISingleDataService singleDataService, IMemoryCache memoryCache,
ISerialNumbersRepositories serialNumbersRepositories, IBoxInventoryRepositories boxInventoryRepositories,
IMapper mapper, IErpBasicDataExtendService erpBasicDataExtendService, IOutStockRepositories outStockRepositories,
ILogger<SysConfigController> logger, IMoveBoxRecordRepositories moveBoxRecordRepositories)
ILogger<SysConfigController> logger, IMoveBoxRecordRepositories moveBoxRecordRepositories,
ISerialNumberService serialNumberService)
{
this._erpOptions = erpOptions?.Value;
this._memoryCache = memoryCache;
@@ -67,6 +70,7 @@ namespace WMS.Web.Api.Controllers
_outStockRepositories = outStockRepositories;
_logger = logger;
_moveBoxRecordRepositories = moveBoxRecordRepositories;
_serialNumberService = serialNumberService;
}
/// <summary>
@@ -526,7 +530,12 @@ namespace WMS.Web.Api.Controllers
_logger.LogInformation($"请求序列号信息:{serialNumber} 组织:{orgCode} 是否Ops:{IsOps} 查询状态 {serialStatus}");
var res = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus ?? 0);
if (res == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
//if (res == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
if (res == null)
{
//没有搜索到数据 则去同步供应链系统
return await _serialNumberService.GetBarCodeSerialNumber(serialNumber, orgCode, IsOps, serialStatus ?? 0);
}
/*
以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 状态为冻结的扫描成功;
不存在的序列号提示:产品信息不存在

View File

@@ -5604,6 +5604,41 @@
收货客户
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsRequest">
<summary>
获取没有装过箱的序列码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsRequest.SerialNumber">
<summary>
序列号
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsResponse">
<summary>
wms系统请求序列码返回
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsResponse.SerialNumber">
<summary>
序列号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsResponse.Creator">
<summary>
创建人
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsResponse.CreateTime">
<summary>
生成时间
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.SingleData.IdRequest">
<summary>
ID请求对象

View File

@@ -3772,6 +3772,16 @@
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.IService.ISerialNumberService.GetBarCodeSerialNumber(System.String,System.String,System.Boolean,System.Int32)">
<summary>
获取供应链系统序列码
</summary>
<param name="serialNumber"></param>
<param name="orgCode"></param>
<param name="IsOps"></param>
<param name="serialStatus"></param>
<returns></returns>
</member>
<member name="T:WMS.Web.Domain.IService.ITakeStockService">
<summary>
盘点单服务
@@ -6121,6 +6131,14 @@
ops服务
</summary>
</member>
<member name="M:WMS.Web.Domain.Services.Public.OpsService.GetSerialNumbers(WMS.Web.Core.Dto.SerialNumbers.SerialNumbersWmsRequest)">
<summary>
获取序列码
</summary>
<param name="request"></param>
<returns></returns>
<exception cref="T:System.NotImplementedException"></exception>
</member>
<member name="M:WMS.Web.Domain.Services.Public.RedisClientService.SetStringKey(System.String,System.String,System.Nullable{System.TimeSpan})">
<summary>
保存单个key value
@@ -6437,6 +6455,17 @@
<param name="isTransaction"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.SerialNumberService.GetBarCodeSerialNumber(System.String,System.String,System.Boolean,System.Int32)">
<summary>
获取供应链系统序列码
</summary>
<param name="serialNumber"></param>
<param name="orgCode"></param>
<param name="IsOps"></param>
<param name="serialStatus"></param>
<returns></returns>
<exception cref="T:System.NotImplementedException"></exception>
</member>
<member name="T:WMS.Web.Domain.Services.TakeStockService">
<summary>
盘点单服务

View File

@@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WMS.Web.Core.Dto.SerialNumbers
{
/// <summary>
/// 获取没有装过箱的序列码
/// </summary>
public class SerialNumbersWmsRequest
{
/// <summary>
/// 序列号
/// </summary>
public string SerialNumber { get; set; } = string.Empty;
}
}

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WMS.Web.Core.Dto.SerialNumbers
{
/// <summary>
/// wms系统请求序列码返回
/// </summary>
public class SerialNumbersWmsResponse
{
/// <summary>
/// 序列号
/// </summary>
public string SerialNumber { get; set; } = string.Empty;
/// <summary>
/// 物料编码
/// </summary>
public string MaterialNumber { get; set; } = string.Empty;
/// <summary>
/// 创建人
/// </summary>
public string Creator { get; set; } = string.Empty;
/// <summary>
/// 生成时间
/// </summary>
public DateTime CreateTime { get; set; } = DateTime.Now;
}
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.Login;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
@@ -33,5 +34,14 @@ namespace WMS.Web.Domain.IService
/// <param name="isTransaction"></param>
/// <returns></returns>
Task<Result> SerialNumberOperate(List<SerialNumberOperate> list, bool isTransaction = true);
/// <summary>
/// 获取供应链系统序列码
/// </summary>
/// <param name="serialNumber"></param>
/// <param name="orgCode"></param>
/// <param name="IsOps"></param>
/// <param name="serialStatus"></param>
/// <returns></returns>
Task<Result<MaterialResponse>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0);
}
}

View File

@@ -1,13 +1,18 @@
using System;
using MySqlX.XDevAPI.Common;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.SerialNumbers;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
namespace WMS.Web.Domain.IService.Public
{
public interface IOpsService
{
Task<List<OpsBoxResponse>> GetBox(OpsBoxRequest request);
Task<Result<SerialNumbersWmsResponse>> GetSerialNumbers(SerialNumbersWmsRequest request);
}
}

View File

@@ -8,8 +8,11 @@ using System.ComponentModel;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.SerialNumbers;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Options;
using WMS.Web.Domain.Values;
namespace WMS.Web.Domain.Services.Public
{
@@ -51,6 +54,21 @@ namespace WMS.Web.Domain.Services.Public
var list = JsonConvert.DeserializeObject<List<OpsBoxResponse>>(res.data.date);
return list;
}
/// <summary>
/// 获取序列码
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<Result<SerialNumbersWmsResponse>> GetSerialNumbers(SerialNumbersWmsRequest request)
{
string endStr = "api/WmsBox/GetSerialNumber";
Dictionary<string, string> dicHeaders = new Dictionary<string, string>();
//dicHeaders.Add("Authorization", "Bearer " + token);
//_httpClientService.BuildHttpClient(contentHeaders);
var res = await _httpClientService.PostAsync<Result<SerialNumbersWmsResponse>>(_option.Url + endStr, JsonConvert.SerializeObject(request), dicHeaders);
return res;
}
private async Task<string> GetToken()
{

View File

@@ -1,10 +1,12 @@
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
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.Dto.Login;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys;
@@ -28,10 +30,12 @@ namespace WMS.Web.Domain.Services
private readonly ISingleDataService _singleDataService;
private readonly IErpService _erpService;
private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly IOpsService _opsService;
private readonly ILogger<SerialNumberService> _logger;
public SerialNumberService(ISerialNumberOperateRepositories serialNumberOperateRepositories,
ISerialNumbersRepositories serialNumbersRepositories, IBasicsRepositories transactionRepositories,
IBoxRepositories boxRepositories, ISingleDataService singleDataService, IErpService erpService,
IBoxInventoryRepositories boxInventoryRepositories)
IBoxInventoryRepositories boxInventoryRepositories, IOpsService opsService, ILogger<SerialNumberService> logger)
{
_serialNumberOperateRepositories = serialNumberOperateRepositories;
_serialNumbersRepositories = serialNumbersRepositories;
@@ -40,6 +44,8 @@ namespace WMS.Web.Domain.Services
_singleDataService = singleDataService;
_erpService = erpService;
_boxInventoryRepositories = boxInventoryRepositories;
_opsService = opsService;
_logger = logger;
}
/// <summary>
/// 改箱
@@ -564,5 +570,48 @@ namespace WMS.Web.Domain.Services
if (!res.Success) return Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
/// <summary>
/// 获取供应链系统序列码
/// </summary>
/// <param name="serialNumber"></param>
/// <param name="orgCode"></param>
/// <param name="IsOps"></param>
/// <param name="serialStatus"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public async Task<Result<MaterialResponse>> GetBarCodeSerialNumber(string serialNumber, string orgCode, bool IsOps = false, int serialStatus = 0)
{
//外层方法没有调到数据是null 如果这里查询到序列码
var list = await _serialNumbersRepositories.GetEntityList(new List<string>() { serialNumber });
if (list.FirstOrDefault(f => f.SerialNumber.Equals(serialNumber)) != null)
return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
//进入供应链系统调数据
_logger.LogInformation($"拉取供应链系统条码->{serialNumber}");
var res = await _opsService.GetSerialNumbers(new Core.Dto.SerialNumbers.SerialNumbersWmsRequest() { SerialNumber = serialNumber });
if (!res.IsSuccess)
return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
_logger.LogInformation($"拉取供应链系统条码结果:->{JsonConvert.SerializeObject(res)}");
//插入序列码信息
SerialNumbers entity = new SerialNumbers(res.Data.SerialNumber, res.Data.MaterialNumber
, 0, 0, res.Data.Creator, res.Data.CreateTime, null);
var isSuccess = await _serialNumbersRepositories.AddRange(new List<SerialNumbers>() { entity });
if (!isSuccess) return Result<MaterialResponse>.ReFailure(ResultCodes.DateWriteError);
var res_s = await _serialNumbersRepositories.GetSerialNumber(serialNumber, orgCode, IsOps, serialStatus);
if (res_s == null) return Result<MaterialResponse>.ReFailure(ResultCodes.MateriaNoData);
/*
以下页面需要判断后提示:如果状态为非冻结的提示:序列号已上架入库 状态为冻结的扫描成功;
不存在的序列号提示:产品信息不存在
非采购上架 改箱 (非激活的或者(激活被冻结)) 1
出库回退上架 (激活被冻结) 2
*/
if (serialStatus == 1 || serialStatus == 2)
{
if (res_s.IsActivate == true && res_s.IsDelete != true)
return Result<MaterialResponse>.ReFailure(ResultCodes.SerialNumbersIsShelf);
}
return Result<MaterialResponse>.ReSuccess(res_s);
}
}
}

View File

@@ -95,5 +95,7 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> TakeStockBoxIdError = (610007, "箱信息错误");
public static ValueTuple<int, string> SubscribeNotificationNoData = (700001, "订阅通知信息不存在");
public static ValueTuple<int, string> GetBarCodeSerialNumberError = (800001, "获取序列码异常");
}
}