This commit is contained in:
tongfei
2023-12-06 14:05:50 +08:00
11 changed files with 289 additions and 25 deletions

View File

@@ -0,0 +1,50 @@
using AutoMapper;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using WMS.Web.Core.Dto.SerialNumbers;
using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Infrastructure;
using WMS.Web.Domain.IService.Public;
using WMS.Web.Domain.Values;
namespace WMS.Web.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class SerialNumberController : ControllerBase
{
private readonly IMapper _mapper;
private readonly ILoginService _loginService;
private readonly ISerialNumbersRepositories _serialNumbersRepositories;
public SerialNumberController(IMapper mapper, ILoginService loginService, ISerialNumbersRepositories serialNumbersRepositories)
{
_mapper = mapper;
_loginService = loginService;
_serialNumbersRepositories = serialNumbersRepositories;
}
/// <summary>
/// 获取序列号信息
/// </summary>
/// <param name="serialNumber">序列号</param>
/// <returns></returns>
[HttpGet]
[Route("Get/{serialNumber}")]
public async Task<Result<SerialNumbersResponse>> Get([FromRoute] string serialNumber)
{
//var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
//if (loginInfo == null || loginInfo.UserInfo == null)
// return Result<SerialNumbersResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
if (string.IsNullOrEmpty(serialNumber))
return Result<SerialNumbersResponse>.ReFailure(ResultCodes.SerialNumbersNoData);
var serial = await _serialNumbersRepositories.Get(serialNumber);
if (serial == null)return Result<SerialNumbersResponse>.ReFailure(ResultCodes.SerialNumbersNoData);
return Result<SerialNumbersResponse>.ReSuccess(serial);
}
}
}

View File

@@ -430,6 +430,13 @@
<param name="dto"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Api.Controllers.SerialNumberController.Get(System.String)">
<summary>
获取序列号信息
</summary>
<param name="serialNumber">序列号</param>
<returns></returns>
</member>
<member name="T:WMS.Web.Api.Controllers.SysConfigController">
<summary>
系统配置

View File

@@ -4241,6 +4241,66 @@
每页条数 不传默认每页10 条
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse">
<summary>
序列号信息
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.SerialNumber">
<summary>
序列号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.CompleteCartonTime">
<summary>
完成装箱时间
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.SalBillNo">
<summary>
出库单对应销售订单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.OutStockTime">
<summary>
出库时间
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.ProduceBillNo">
<summary>
生产单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.PurchaseBillNo">
<summary>
采购单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.InStockTime">
<summary>
入库时间
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.SerialNumbers.SerialNumbersResponse.Customer">
<summary>
收货客户
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.SingleData.IdRequest">
<summary>
ID请求对象

View File

@@ -1566,17 +1566,37 @@
创建时间(老ops过来)
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.OutStockBillNo">
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.CompleteCartonTime">
<summary>
出库单号
完成装箱时间
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.InStockBillNo">
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.SalBillNo">
<summary>
出库单对应销售订单号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.OutStockTime">
<summary>
出库时间
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.PurchaseBillNo">
<summary>
入库单号/采购单号
采购单号
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.Bind(System.Int32)">
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.InStockTime">
<summary>
入库时间
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.SerialNumbers.CustomerId">
<summary>
收货客户
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.Bind(System.Int32,System.DateTime)">
<summary>
操作(绑定箱信息)
</summary>
@@ -1587,7 +1607,7 @@
解绑
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.OutStock(System.String,WMS.Web.Domain.Values.OutStockType)">
<member name="M:WMS.Web.Domain.Entitys.SerialNumbers.OutStock(System.String,WMS.Web.Domain.Values.OutStockType,System.Int32)">
<summary>
出库
</summary>

View File

@@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.SerialNumbers
{
/// <summary>
/// 序列号信息
/// </summary>
public class SerialNumbersResponse
{
/// <summary>
/// 序列号
/// </summary>
public string SerialNumber { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string MaterialName { get; set; }
/// <summary>
/// 物料编码
/// </summary>
public string MaterialNumber { get; set; }
/// <summary>
/// 物料规格型号
/// </summary>
public string Specifications { get; set; }
/// <summary>
/// 完成装箱时间
/// </summary>
public DateTime? CompleteCartonTime { get; set; }
/// <summary>
/// 出库单对应销售订单号
/// </summary>
public string SalBillNo { get; set; }
/// <summary>
/// 出库时间
/// </summary>
public string OutStockTime { get; set; }
/// <summary>
/// 生产单号
///</summary>
public string ProduceBillNo { get; set; }
/// <summary>
/// 采购单号
///</summary>
public string PurchaseBillNo { get; set; }
/// <summary>
/// 入库时间
/// </summary>
public string InStockTime { get; set; }
/// <summary>
/// 收货客户
///</summary>
public string Customer { get; set; }
}
}

View File

@@ -15,7 +15,7 @@ namespace WMS.Web.Domain.Entitys
public class SerialNumbers : EntityBase
{
public SerialNumbers() { }
public SerialNumbers(string serialNumber, int materialId, int boxId, int opsBoxId, string creator, DateTime? createTime)
public SerialNumbers(string serialNumber, int materialId, int boxId, int opsBoxId, string creator, DateTime? createTime,DateTime? completeCartonTime)
{
this.SerialNumber = serialNumber;
this.MaterialId = materialId;
@@ -23,6 +23,7 @@ namespace WMS.Web.Domain.Entitys
this.OpsBoxId = opsBoxId;
this.Creator = creator;
this.CreateTime = createTime == null ? DateTime.Now : (DateTime)createTime;
this.CompleteCartonTime = completeCartonTime;
}
/// <summary>
/// 主键 订单编号
@@ -60,23 +61,44 @@ namespace WMS.Web.Domain.Entitys
[Column("CreateTime")]
public DateTime CreateTime { get; set; } = DateTime.Now;
/// <summary>
/// 出库单号
/// 完成装箱时间
/// </summary>
[Column("OutStockBillNo")]
public string OutStockBillNo { get; set; }
[Column("CompleteCartonTime")]
public DateTime? CompleteCartonTime { get; set; }
/// <summary>
/// 库单号/采购单号
/// 库单对应销售订单号
/// </summary>
[Column("SalBillNo")]
public string SalBillNo { get; set; }
/// <summary>
/// 出库时间
/// </summary>
[Column("OutStockTime")]
public DateTime? OutStockTime { get; set; }
/// <summary>
/// 采购单号
///</summary>
[Column("InStockBillNo")]
public string InStockBillNo { get; set; }
[Column("PurchaseBillNo")]
public string PurchaseBillNo { get; set; }
/// <summary>
/// 入库时间
/// </summary>
[Column("InStockTime")]
public DateTime? InStockTime { get; set; }
/// <summary>
/// 收货客户
///</summary>
[Column("CustomerId")]
public int CustomerId { get; set; } = 0;
/// <summary>
/// 操作(绑定箱信息)
/// </summary>
/// <param name="destBoxId">目标箱号</param>
public void Bind(int destBoxId)
public void Bind(int destBoxId,DateTime completeCartonTime)
{
this.BoxId = destBoxId;
this.CompleteCartonTime = completeCartonTime;
}
/// <summary>
/// 解绑
@@ -89,11 +111,15 @@ namespace WMS.Web.Domain.Entitys
/// 出库
/// </summary>
/// <param name="outStockBillNo">出库单号</param>
public void OutStock(string outStockBillNo, OutStockType type)
public void OutStock(string outStockBillNo, OutStockType type,int customerId)
{
this.BoxId = 0;
if (type == OutStockType.Sal)
this.OutStockBillNo = outStockBillNo;
{
this.SalBillNo = outStockBillNo;
this.CustomerId = customerId;
this.OutStockTime = DateTime.Now;
}
}
/// <summary>
/// 入库
@@ -102,7 +128,10 @@ namespace WMS.Web.Domain.Entitys
public void InStock(string inStockBillNo, InstockType type)
{
if (type == InstockType.Purchase)
this.InStockBillNo = inStockBillNo;
{
this.PurchaseBillNo = inStockBillNo;
this.InStockTime = DateTime.Now;
}
}
}
}

View File

@@ -3,6 +3,7 @@ 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.Domain.Entitys;
namespace WMS.Web.Domain.Infrastructure
@@ -21,6 +22,8 @@ namespace WMS.Web.Domain.Infrastructure
Task<bool> AddRange(List<SerialNumbers> entitys, bool isTransaction = true);
//根据序列号模糊搜索信息
Task<MaterialResponse> GetSerialNumber(string serialNumber);
//根据序列号搜索信息
Task<SerialNumbersResponse> Get(string serialNumber);
/// 查询实体集合
Task<List<SerialNumbers>> GetEntityList(List<string> serialNumbers);
/// 根据箱Id查询集合

View File

@@ -87,7 +87,7 @@ namespace WMS.Web.Domain.Services
.SelectMany(s => s.SerialNumbers)
.FirstOrDefault(s => s.SerialNumber.Equals(sn.SerialNumber));
//序列号
SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId, b.Id, b.OpsBoxId, opsSerial.BarCereateUser, opsSerial.BarCreateTime);
SerialNumbers s = new SerialNumbers(sn.SerialNumber, detail.MaterialId, b.Id, b.OpsBoxId, opsSerial.BarCereateUser, opsSerial.BarCreateTime, b.CompleteCartonTime);
sList.Add(s);
//序列号记录(序列号生成)
SerialNumberOperate so = new SerialNumberOperate(sn.SerialNumber, SerialNumberOperateType.Generate, detail.MaterialId, opsSerial.BarCereateUser, "", b.SupplierId, b.OrgId, null, opsSerial.BarCreateTime);

View File

@@ -60,10 +60,11 @@ namespace WMS.Web.Domain.Services
foreach (var entity in entityList)
{
var destBox = changeBoxRecords.FirstOrDefault(f => f.SerialNumbers.Contains(entity.SerialNumber));
//修改序列号和箱绑定关系
entity.Bind(destBox.DestBoxId);
var box = boxList.FirstOrDefault(f => f.Id == destBox.DestBoxId);
//修改序列号和箱绑定关系
entity.Bind(destBox.DestBoxId, box.CompleteCartonTime);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
{
@@ -193,7 +194,7 @@ namespace WMS.Web.Domain.Services
var outstockDetail = outStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
if (outstockDetail == null) continue;
//修改序列号和箱绑定关系
entity.OutStock(outStock.BillNo, outStock.Type);
entity.OutStock(outStock.BillNo, outStock.Type, outStock.ReceiptCustomerId);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
@@ -321,7 +322,7 @@ namespace WMS.Web.Domain.Services
var instockDetail = inStock.Details.FirstOrDefault(f => f.MaterialId == entity.MaterialId);
var subStock = _singleDataService.GetSingleData(SingleAction.SubStocks, loginInfo.UserInfo.CompanyId, instockDetail.SubStockId);
//修改序列号和箱绑定关系
entity.InStock(inStock.BillNo, inStock.Type);
entity.InStock(instockDetail.SourceBillNo, inStock.Type);
//记录序列号操作日志
SerialNumberOperate op = new SerialNumberOperate()
@@ -386,7 +387,7 @@ namespace WMS.Web.Domain.Services
//if (backRecord.Type == BackRecordType.InstockOff)
// entity.UnBind();
if (backRecord.Type == BackRecordType.OutstockOn)
entity.Bind(detail.BoxId);
entity.Bind(detail.BoxId,box.CompleteCartonTime);
//记录序列号操作日志

View File

@@ -66,6 +66,6 @@ namespace WMS.Web.Domain.Values
public static ValueTuple<int, string> InventoryInOutDetailsWriteError = (800014, "写入物料收发明细失败!");
public static ValueTuple<int, string> InventoryDetailsWriteError = (800014, "写入即时库存明细失败!");
public static ValueTuple<int, string> SerialNumbersNoData = (610000, "序列号不存在");
}
}

View File

@@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WMS.Web.Core.Dto;
using WMS.Web.Core.Dto.SerialNumbers;
using WMS.Web.Core.Help;
using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure;
@@ -91,6 +92,42 @@ namespace WMS.Web.Repositories
}
return true;
}
/// <summary>
/// 根据序列号搜索信息
/// </summary>
/// <param name="serialNumber"></param>
/// <returns></returns>
public async Task<SerialNumbersResponse> Get(string serialNumber)
{
var materials_result = await _erpService.BillQueryForMaterial();
if (!materials_result.IsSuccess)
return null;
var materials = materials_result.Data.ToList();
var customer_result = await _erpService.BillQueryForCustomer();
if (!customer_result.IsSuccess)
return null;
var customers = customer_result.Data.ToList();
var s = await _context.SerialNumbers
.FirstOrDefaultAsync(f => serialNumber.Equals(f.SerialNumber));
if (s == null) return null;
SerialNumbersResponse respone = new SerialNumbersResponse()
{
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialId),
MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.MaterialId),
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialId),
CompleteCartonTime = s.CompleteCartonTime,
InStockTime = s.InStockTime.DateToStringSeconds(),
OutStockTime = s.OutStockTime.DateToStringSeconds(),
PurchaseBillNo = s.PurchaseBillNo,
SalBillNo = s.SalBillNo,
Customer = _erpBasicDataExtendService.GetCustomerName(customers, s.CustomerId),
SerialNumber = s.SerialNumber
};
return respone;
}
/// <summary>
/// 根据序列号查询
/// </summary>