增加 序列码对接供应链

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

@@ -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>
/// 改箱
@@ -457,7 +463,7 @@ namespace WMS.Web.Domain.Services
{
var serialNumbers = takeStocks.SelectMany(s => s.Details).SelectMany(s => s.SerialNumbers).ToList();
var entityList = await _serialNumbersRepositories.GetEntityList(serialNumbers);
var boxIds = takeStocks.SelectMany(s => s.Details).Select(s => s.BoxId).ToList();
var boxList = await _boxRepositories.GetEntityList(boxIds);
@@ -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, "获取序列码异常");
}
}