修改生成规则

This commit is contained in:
tongfei
2024-02-18 16:53:18 +08:00
parent 8a3d4343a3
commit b3190e67e7
13 changed files with 332 additions and 85 deletions

View File

@@ -60,7 +60,7 @@ namespace WMS.Web.Api.Controllers
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("generate")] [Route("generate")]
public async Task<Result> DeleteAsync([FromBody] GenerateBoxMarkDto dto) public async Task<ResultList<BoxMarkQueryResponse>> DeleteAsync([FromBody] GenerateBoxMarkDto dto)
{ {
var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]);
if (loginInfo == null || loginInfo.UserInfo == null) if (loginInfo == null || loginInfo.UserInfo == null)

View File

@@ -355,6 +355,11 @@
唯一ID 唯一ID
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.BoxMarkQueryResponse.DetailId">
<summary>
明细编号ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.BoxMarkQueryResponse.BillNo"> <member name="P:WMS.Web.Core.Dto.BoxMarkQueryResponse.BillNo">
<summary> <summary>
箱唛编号 箱唛编号
@@ -430,6 +435,11 @@
创建时间(生成时间) 创建时间(生成时间)
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.BoxMarkQueryResponse.IsTail">
<summary>
是否是尾箱
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.GenerateBoxMarkDto"> <member name="T:WMS.Web.Core.Dto.GenerateBoxMarkDto">
<summary> <summary>
生成箱唛dto 生成箱唛dto

View File

@@ -280,21 +280,6 @@
ID ID
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Domain.Entitys.BoxMark.BillNo">
<summary>
箱唛编号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMark.FirstBillNo">
<summary>
箱唛编号-首位
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMark.LastBillNo">
<summary>
箱唛编号-末尾序号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMark.OrderBillNo"> <member name="P:WMS.Web.Domain.Entitys.BoxMark.OrderBillNo">
<summary> <summary>
订单编号 订单编号
@@ -355,6 +340,11 @@
创建时间(生成时间) 创建时间(生成时间)
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Domain.Entitys.BoxMark.BillNos">
<summary>
编号集合
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.BoxMark.Create(System.Int32)"> <member name="M:WMS.Web.Domain.Entitys.BoxMark.Create(System.Int32)">
<summary> <summary>
创建 创建
@@ -368,6 +358,48 @@
<param name="firstBillNo"></param> <param name="firstBillNo"></param>
<param name="lastBillNo"></param> <param name="lastBillNo"></param>
</member> </member>
<member name="T:WMS.Web.Domain.Entitys.BoxMarkBillNo">
<summary>
箱唛表-编号表
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMarkBillNo.Id">
<summary>
ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMarkBillNo.Fid">
<summary>
上级ID
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMarkBillNo.BillNo">
<summary>
箱唛编号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMarkBillNo.FirstBillNo">
<summary>
箱唛编号-首位
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMarkBillNo.LastBillNo">
<summary>
箱唛编号-末尾序号
</summary>
</member>
<member name="P:WMS.Web.Domain.Entitys.BoxMarkBillNo.IsTail">
<summary>
是否是尾箱
</summary>
</member>
<member name="M:WMS.Web.Domain.Entitys.BoxMarkBillNo.GenerateBillNo(System.Int32,System.Int32)">
<summary>
生成编号
</summary>
<param name="firstBillNo"></param>
<param name="lastBillNo"></param>
</member>
<member name="T:WMS.Web.Domain.Entitys.ChangeBoxRecord"> <member name="T:WMS.Web.Domain.Entitys.ChangeBoxRecord">
<summary> <summary>
wms改箱记录 wms改箱记录
@@ -2235,6 +2267,20 @@
</summary> </summary>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Infrastructure.IBoxMarkRepositories.GetListInfoBy(System.Int32,System.Int32)">
<summary>
列表-详情信息列表
</summary>
<param name="id"></param>
<param name="companyId"></param>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Infrastructure.IBoxMarkRepositories.GetLastBillNo">
<summary>
获取最新的编号实体
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Infrastructure.IBoxMarkRepositories.DeleteRange(System.Collections.Generic.List{System.Int32},System.Boolean)"> <member name="M:WMS.Web.Domain.Infrastructure.IBoxMarkRepositories.DeleteRange(System.Collections.Generic.List{System.Int32},System.Boolean)">
<summary> <summary>
批量删除 批量删除

View File

@@ -14,6 +14,11 @@ namespace WMS.Web.Core.Dto
/// </summary> /// </summary>
public int Id { get; set; } public int Id { get; set; }
/// <summary>
/// 明细编号ID
/// </summary>
public int DetailId { get; set; }
/// <summary> /// <summary>
/// 箱唛编号 /// 箱唛编号
/// </summary> /// </summary>
@@ -87,5 +92,10 @@ namespace WMS.Web.Core.Dto
/// 创建时间(生成时间) /// 创建时间(生成时间)
/// </summary> /// </summary>
public string CreateTime { get; set; } public string CreateTime { get; set; }
/// <summary>
/// 是否是尾箱
/// </summary>
public bool IsTail { get; set; }
} }
} }

View File

@@ -29,12 +29,14 @@ namespace WMS.Web.Core.Dto
/// 产品数量 /// 产品数量
/// </summary> /// </summary>
[Required(ErrorMessage = "产品数量不能为空")] [Required(ErrorMessage = "产品数量不能为空")]
[Range(1, int.MaxValue, ErrorMessage = "产品数量不能为0")]
public decimal ProductQty { get; set; } public decimal ProductQty { get; set; }
/// <summary> /// <summary>
/// 装箱数量 /// 装箱数量
/// </summary> /// </summary>
[Required(ErrorMessage = "装箱数量不能为空")] [Required(ErrorMessage = "装箱数量不能为空")]
[Range(1, int.MaxValue, ErrorMessage = "装箱数量不能为0")]
public decimal CratingQty { get; set; } public decimal CratingQty { get; set; }
/// <summary> /// <summary>

View File

@@ -18,20 +18,20 @@ namespace WMS.Web.Domain.Entitys
/// </summary> /// </summary>
public override int Id { get; set; } public override int Id { get; set; }
/// <summary> ///// <summary>
/// 箱唛编号 ///// 箱唛编号
/// </summary> ///// </summary>
public string BillNo { get; set; } //public string BillNo { get; set; }
/// <summary> ///// <summary>
/// 箱唛编号-首位 ///// 箱唛编号-首位
/// </summary> ///// </summary>
public int FirstBillNo { get; set; } //public int FirstBillNo { get; set; }
/// <summary> ///// <summary>
/// 箱唛编号-末尾序号 ///// 箱唛编号-末尾序号
/// </summary> ///// </summary>
public int LastBillNo { get; set; } //public int LastBillNo { get; set; }
/// <summary> /// <summary>
/// 订单编号 /// 订单编号
@@ -93,6 +93,11 @@ namespace WMS.Web.Domain.Entitys
/// </summary> /// </summary>
public DateTime CreateTime { get; set; } public DateTime CreateTime { get; set; }
/// <summary>
/// 编号集合
/// </summary>
public List<BoxMarkBillNo> BillNos { get; set; } = new List<BoxMarkBillNo>();
/// <summary> /// <summary>
/// 创建 /// 创建
/// </summary> /// </summary>
@@ -108,27 +113,36 @@ namespace WMS.Web.Domain.Entitys
/// </summary> /// </summary>
/// <param name="firstBillNo"></param> /// <param name="firstBillNo"></param>
/// <param name="lastBillNo"></param> /// <param name="lastBillNo"></param>
public void GenerateBillNo(int firstBillNo,int lastBillNo) public void GenerateBillNo(int firstBillNo, int lastBillNo)
{ {
this.FirstBillNo=Convert.ToInt32(DateTime.Now.ToString("yyMMdd")); if (this.BillNos == null)
if (this.FirstBillNo == firstBillNo) this.BillNos = new List<BoxMarkBillNo>();
this.LastBillNo = lastBillNo + 1;
else
this.LastBillNo = 1;
if (this.LastBillNo.ToString().Length >= 5) //计算要装的箱数量
{ var boxCount_tag = this.ProductQty / this.CratingQty;
this.BillNo = "XM" + this.FirstBillNo + this.LastBillNo; var boxCount = Convert.ToInt32(boxCount_tag);
return;
}
string lastStr = this.LastBillNo.ToString(); //判断是否存在小数点true表明有尾箱数,false没有尾箱数
while (true) var hasPart = Math.Floor(boxCount_tag) != boxCount_tag;
//有小数点向上取整
if (hasPart)
boxCount = Convert.ToInt32(Math.Ceiling(boxCount_tag));
for (int i = 0; i < boxCount; i++)
{ {
lastStr = "0" + lastStr; //添加编号生成
if (lastStr.Length >= 5) break; var bill = new BoxMarkBillNo();
bill.GenerateBillNo(firstBillNo, lastBillNo);
this.BillNos.Add(bill);
//改变前后的billNo值,新的值再一次被使用
firstBillNo = bill.FirstBillNo;
lastBillNo = bill.LastBillNo;
} }
this.BillNo = "XM" + this.FirstBillNo + lastStr; //判断有小数点,那么它就有尾箱,把当前第一条的编号是否是尾箱字段改为true
if (this.BillNos.Count != 0 && hasPart)
this.BillNos[0].IsTail = true;
} }
} }

View File

@@ -0,0 +1,74 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Text;
using WMS.Web.Core;
namespace WMS.Web.Domain.Entitys
{
/// <summary>
/// 箱唛表-编号表
/// </summary>
[Serializable]
[Table("t_wms_box_mark_billno")]
public class BoxMarkBillNo : EntityBase
{
/// <summary>
/// ID
/// </summary>
public override int Id { get; set; }
/// <summary>
/// 上级ID
/// </summary>
public int Fid { get; set; }
/// <summary>
/// 箱唛编号
/// </summary>
public string BillNo { get; set; }
/// <summary>
/// 箱唛编号-首位
/// </summary>
public int FirstBillNo { get; set; }
/// <summary>
/// 箱唛编号-末尾序号
/// </summary>
public int LastBillNo { get; set; }
/// <summary>
/// 是否是尾箱
/// </summary>
public bool IsTail { get; set; }
/// <summary>
/// 生成编号
/// </summary>
/// <param name="firstBillNo"></param>
/// <param name="lastBillNo"></param>
public void GenerateBillNo(int firstBillNo, int lastBillNo)
{
this.FirstBillNo = Convert.ToInt32(DateTime.Now.ToString("yyMMdd"));
if (this.FirstBillNo == firstBillNo)
this.LastBillNo = lastBillNo + 1;
else
this.LastBillNo = 1;
if (this.LastBillNo.ToString().Length >= 5)
{
this.BillNo = "XM" + this.FirstBillNo + this.LastBillNo;
return;
}
string lastStr = this.LastBillNo.ToString();
while (true)
{
lastStr = "0" + lastStr;
if (lastStr.Length >= 5) break;
}
this.BillNo = "XM" + this.FirstBillNo + lastStr;
}
}
}

View File

@@ -19,6 +19,6 @@ namespace WMS.Web.Domain.IService
/// <param name="dto"></param> /// <param name="dto"></param>
/// <param name="loginInfo"></param> /// <param name="loginInfo"></param>
/// <returns></returns> /// <returns></returns>
Task<Result> Generate(GenerateBoxMarkDto dto, LoginInDto loginInfo); Task<ResultList<BoxMarkQueryResponse>> Generate(GenerateBoxMarkDto dto, LoginInDto loginInfo);
} }
} }

View File

@@ -26,7 +26,7 @@ namespace WMS.Web.Domain.Infrastructure
/// <param name="entity"></param> /// <param name="entity"></param>
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <returns></returns>
Task<bool> Add(BoxMark entity, bool isTransaction = true); Task<BoxMark> Add(BoxMark entity, bool isTransaction = true);
/// <summary> /// <summary>
/// 详情-根据最新的ID /// 详情-根据最新的ID
@@ -34,6 +34,20 @@ namespace WMS.Web.Domain.Infrastructure
/// <returns></returns> /// <returns></returns>
Task<BoxMark> GetBy(); Task<BoxMark> GetBy();
/// <summary>
/// 列表-详情信息列表
/// </summary>
/// <param name="id"></param>
/// <param name="companyId"></param>
/// <returns></returns>
Task<List<BoxMarkQueryResponse>> GetListInfoBy(int id, int companyId);
/// <summary>
/// 获取最新的编号实体
/// </summary>
/// <returns></returns>
Task<BoxMarkBillNo> GetLastBillNo();
/// <summary> /// <summary>
/// 批量删除 /// 批量删除
/// </summary> /// </summary>

View File

@@ -12,6 +12,9 @@ namespace WMS.Web.Domain.Mappers
public BoxMarkMapper() public BoxMarkMapper()
{ {
CreateMap<GenerateBoxMarkDto, BoxMark>(); CreateMap<GenerateBoxMarkDto, BoxMark>();
CreateMap<BoxMark, BoxMark>()
.ForMember(x => x.BillNos, opt => opt.Ignore());
} }
} }
} }

View File

@@ -37,26 +37,29 @@ namespace WMS.Web.Domain.Services
/// <param name="dto"></param> /// <param name="dto"></param>
/// <param name="loginInfo"></param> /// <param name="loginInfo"></param>
/// <returns></returns> /// <returns></returns>
public async Task<Result> Generate(GenerateBoxMarkDto dto, LoginInDto loginInfo) public async Task<ResultList<BoxMarkQueryResponse>> Generate(GenerateBoxMarkDto dto, LoginInDto loginInfo)
{ {
//1.获取最新的箱唛信息 //1.获取最新的箱唛信息
var entity_new = await _boxMarkRepositories.GetBy(); //var entity_new = await _boxMarkRepositories.GetBy();
var billNo_new = await _boxMarkRepositories.GetLastBillNo();
//2.dto映射实体 //2.dto映射实体
var entity = new BoxMark(); var entity = new BoxMark();
entity= _mapper.Map(dto, entity); entity= _mapper.Map(dto, entity);
entity.Create(loginInfo.UserInfo.StaffId); entity.Create(loginInfo.UserInfo.StaffId);
var new_firstBillNo = entity_new == null ? 0 : entity_new.FirstBillNo; int new_firstBillNo = billNo_new == null ? 0 : billNo_new.FirstBillNo;
var new_lastBillNo = entity_new == null ? 0 : entity_new.LastBillNo; int new_lastBillNo = billNo_new == null ? 0 : billNo_new.LastBillNo;
entity.GenerateBillNo(new_firstBillNo, new_lastBillNo); entity.GenerateBillNo(new_firstBillNo, new_lastBillNo);
//添加 //添加
var isSuccess = await _boxMarkRepositories.Add(entity); var model = await _boxMarkRepositories.Add(entity);
if (!isSuccess) if (model==null)
return Result<InStockTask>.ReFailure(ResultCodes.DateWriteError); return ResultList<BoxMarkQueryResponse>.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess(); //返回列表-对应刚刚生成的数据和编号集合
var list= await _boxMarkRepositories.GetListInfoBy(model.Id, loginInfo.UserInfo.CompanyId);
return ResultList<BoxMarkQueryResponse>.ReSuccess(list);
} }
} }
} }

View File

@@ -71,7 +71,11 @@ namespace WMS.Web.Repositories
if (staffList != null) if (staffList != null)
cr_ids = staffList.Where(w => w.Name.Contains(dto.Creator)).Select(s => s.Id).ToList(); cr_ids = staffList.Where(w => w.Name.Contains(dto.Creator)).Select(s => s.Id).ToList();
} }
var query = _context.BoxMark.Where(adv => 1 == 1); //var query = _context.BoxMark.Where(adv => 1 == 1);
var query = _context.BoxMarkBillNo
.GroupJoin(_context.BoxMark, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.Where(adv => 1 == 1);
//编号查询 //编号查询
if (!string.IsNullOrEmpty(dto.BeginBillNo) && if (!string.IsNullOrEmpty(dto.BeginBillNo) &&
@@ -85,15 +89,15 @@ namespace WMS.Web.Repositories
var begNo = Convert.ToInt32(dto.BeginBillNo.Substring(8)); var begNo = Convert.ToInt32(dto.BeginBillNo.Substring(8));
var endNo = Convert.ToInt32(dto.EndBillNo.Substring(8)); var endNo = Convert.ToInt32(dto.EndBillNo.Substring(8));
query = query.Where(w => w.FirstBillNo >= begYMD && w.FirstBillNo <= endYMD && w.LastBillNo >= begNo && w.LastBillNo <= endNo); query = query.Where(w => w.detail.FirstBillNo >= begYMD && w.detail.FirstBillNo <= endYMD && w.detail.LastBillNo >= begNo && w.detail.LastBillNo <= endNo);
} }
else else
query = query.Where(w => w.BillNo == dto.BeginBillNo || w.BillNo == dto.EndBillNo); query = query.Where(w => w.detail.BillNo == dto.BeginBillNo || w.detail.BillNo == dto.EndBillNo);
} }
else if (!string.IsNullOrEmpty(dto.BeginBillNo)) else if (!string.IsNullOrEmpty(dto.BeginBillNo))
query = query.Where(w => w.BillNo == dto.BeginBillNo); query = query.Where(w => w.detail.BillNo == dto.BeginBillNo);
else if (!string.IsNullOrEmpty(dto.EndBillNo)) else if (!string.IsNullOrEmpty(dto.EndBillNo))
query = query.Where(w => w.BillNo == dto.EndBillNo); query = query.Where(w => w.detail.BillNo == dto.EndBillNo);
//订单号查询 //订单号查询
@@ -103,7 +107,7 @@ namespace WMS.Web.Repositories
var orderBillNoList = orderBNS.Split(",").Where(x => !string.IsNullOrEmpty(x)).ToList(); var orderBillNoList = orderBNS.Split(",").Where(x => !string.IsNullOrEmpty(x)).ToList();
if (orderBillNoList != null && orderBillNoList.Count != 0) if (orderBillNoList != null && orderBillNoList.Count != 0)
{ {
query = query.Where(w => orderBillNoList.Contains(w.OrderBillNo)); query = query.Where(w => orderBillNoList.Contains(w.order.OrderBillNo));
} }
} }
@@ -113,41 +117,42 @@ namespace WMS.Web.Repositories
if (materials != null && materials.Count != 0) if (materials != null && materials.Count != 0)
{ {
var mids = materials.Select(x => x.MaterialId).ToList(); var mids = materials.Select(x => x.MaterialId).ToList();
query = query.Where(w => mids.Contains(w.MaterialId)); query = query.Where(w => mids.Contains(w.order.MaterialId));
} }
} }
if (cr_ids.Count != 0) if (cr_ids.Count != 0)
query = query.Where(w => cr_ids.Contains(w.CreatorId)); query = query.Where(w => cr_ids.Contains(w.order.CreatorId));
if (dto.BeginDate != null) if (dto.BeginDate != null)
query = query.Where(w => w.CreateTime.Date >= dto.BeginDate.Value); query = query.Where(w => w.order.CreateTime.Date >= dto.BeginDate.Value);
if (dto.EndDate != null) if (dto.EndDate != null)
query = query.Where(w => w.CreateTime.Date <= dto.EndDate.Value); query = query.Where(w => w.order.CreateTime.Date <= dto.EndDate.Value);
int total = await query.CountAsync(); int total = await query.CountAsync();
var list = await query.Select(s => new BoxMarkQueryResponse() var list = await query.Select(s => new BoxMarkQueryResponse()
{ {
Id = s.Id, Id = s.order.Id,
BillNo = s.BillNo, DetailId=s.detail.Id,
OrderBillNo = s.OrderBillNo, BillNo = s.detail.BillNo,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.MaterialId), OrderBillNo = s.order.OrderBillNo,
MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.MaterialId), MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.order.MaterialId),
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.MaterialId), MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.order.MaterialId),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.MaterialId), Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.order.MaterialId),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.order.MaterialId),
CratingQty = s.CratingQty, CratingQty = s.order.CratingQty,
CratingNetWeightQty = s.CratingNetWeightQty, CratingNetWeightQty = s.order.CratingNetWeightQty,
CratingGrossWeightQty = s.CratingGrossWeightQty, CratingGrossWeightQty = s.order.CratingGrossWeightQty,
TailboxQty = s.TailboxQty, TailboxQty = s.order.TailboxQty,
TailboxNetWeightQty = s.TailboxNetWeightQty, TailboxNetWeightQty = s.order.TailboxNetWeightQty,
TailboxGrossWeightQty = s.TailboxGrossWeightQty, TailboxGrossWeightQty = s.order.TailboxGrossWeightQty,
Creator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.CreatorId), Creator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.order.CreatorId),
CreateTime = s.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"), CreateTime = s.order.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
Remark = s.Remark Remark = s.order.Remark
}).OrderByDescending(x => x.Id).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); }).OrderByDescending(x => x.DetailId).Skip((dto.PageNo - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync();
return (list, total); return (list, total);
} }
@@ -158,7 +163,7 @@ namespace WMS.Web.Repositories
/// <param name="entity"></param> /// <param name="entity"></param>
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <returns></returns>
public async Task<bool> Add(BoxMark entity, bool isTransaction = true) public async Task<BoxMark> Add(BoxMark entity, bool isTransaction = true)
{ {
IDbContextTransaction _transaction = null; IDbContextTransaction _transaction = null;
if (isTransaction) if (isTransaction)
@@ -169,13 +174,13 @@ namespace WMS.Web.Repositories
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
if (_transaction != null) if (_transaction != null)
_transaction.Commit(); _transaction.Commit();
return true; return entity;
} }
catch (Exception ex) catch (Exception ex)
{ {
if (_transaction != null) if (_transaction != null)
_transaction.Rollback(); _transaction.Rollback();
return false; return null;
} }
} }
@@ -191,6 +196,59 @@ namespace WMS.Web.Repositories
return entity; return entity;
} }
/// <summary>
/// 列表-详情信息列表
/// </summary>
/// <param name="id"></param>
/// <param name="companyId"></param>
/// <returns></returns>
public async Task<List<BoxMarkQueryResponse>> GetListInfoBy(int id, int companyId)
{
//1.获取物料集合和组织集合和供应商的集合
var materials = new List<ErpMaterialDto>();
var materials_result = await _erpService.BillQueryForMaterial();
if (materials_result.IsSuccess)
materials = materials_result.Data.ToList();
var query = _context.BoxMarkBillNo
.GroupJoin(_context.BoxMark, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.Where(adv => adv.order.Id == id);
var list = await query.Select(s => new BoxMarkQueryResponse()
{
Id = s.order.Id,
DetailId = s.detail.Id,
BillNo = s.detail.BillNo,
OrderBillNo = s.order.OrderBillNo,
MaterialName = _erpBasicDataExtendService.GetMaterialName(materials, s.order.MaterialId),
MaterialNumber = _erpBasicDataExtendService.GetMaterialNumber(materials, s.order.MaterialId),
Specifications = _erpBasicDataExtendService.GetMaterialSpecifications(materials, s.order.MaterialId),
BarCode = _erpBasicDataExtendService.GetMaterialBarCode(materials, s.order.MaterialId),
CratingQty = s.order.CratingQty,
CratingNetWeightQty = s.order.CratingNetWeightQty,
CratingGrossWeightQty = s.order.CratingGrossWeightQty,
TailboxQty = s.order.TailboxQty,
TailboxNetWeightQty = s.order.TailboxNetWeightQty,
TailboxGrossWeightQty = s.order.TailboxGrossWeightQty,
Creator = _singleDataService.GetSingleData(SingleAction.Staffs, companyId, s.order.CreatorId),
CreateTime = s.order.CreateTime.ToString("yyyy-MM-dd HH:mm:ss"),
Remark = s.order.Remark
}).OrderByDescending(x => x.DetailId).ToListAsync();
return list;
}
/// <summary>
/// 详情-根据最新的ID
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public async Task<BoxMarkBillNo> GetLastBillNo()
{
var entity = await _context.BoxMarkBillNo.OrderByDescending(x => x.Id).FirstOrDefaultAsync();
return entity;
}
/// <summary> /// <summary>
/// 批量删除 /// 批量删除
/// </summary> /// </summary>
@@ -203,7 +261,7 @@ namespace WMS.Web.Repositories
_transaction = _context.Database.BeginTransaction(); _transaction = _context.Database.BeginTransaction();
try try
{ {
var list = await _context.BoxMark.Where(f => ids.Contains(f.Id)).ToListAsync(); var list = await _context.BoxMark.Include(x=>x.BillNos).Where(f => ids.Contains(f.Id)).ToListAsync();
_context.BoxMark.RemoveRange(list); _context.BoxMark.RemoveRange(list);
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();

View File

@@ -356,11 +356,24 @@ namespace WMS.Web.Repositories.Configuration
{ {
ent.ToTable("t_wms_box_mark"); ent.ToTable("t_wms_box_mark");
ent.HasKey(x => x.Id); ent.HasKey(x => x.Id);
ent.HasMany(p => p.BillNos)
.WithOne()
.HasForeignKey(p => p.Fid)
.OnDelete(DeleteBehavior.Cascade);
});
//箱唛表-编号表
builder.Entity<BoxMarkBillNo>(ent =>
{
ent.ToTable("t_wms_box_mark_billno");
ent.HasKey(x => x.Id);
}); });
base.OnModelCreating(builder); base.OnModelCreating(builder);
} }
public DbSet<BoxMarkBillNo> BoxMarkBillNo { get; set; }
public DbSet<BoxMark> BoxMark { get; set; } public DbSet<BoxMark> BoxMark { get; set; }
public DbSet<FileDownManager> FileDownManager { get; set; } public DbSet<FileDownManager> FileDownManager { get; set; }
public DbSet<SerialNumbers> SerialNumbers { get; set; } public DbSet<SerialNumbers> SerialNumbers { get; set; }