采购查询接口优化

This commit is contained in:
tongfei
2023-11-09 16:12:29 +08:00
parent db9a3d25a3
commit d386e4aa41
10 changed files with 161 additions and 86 deletions

View File

@@ -23,11 +23,16 @@ namespace WMS.Web.Api.Controllers
{ {
private readonly ILoginService _loginService; private readonly ILoginService _loginService;
private readonly IInStockService _inStockService; private readonly IInStockService _inStockService;
private readonly IInStockTaskService _inStockTaskService;
private readonly IInStockTaskRepositories _inStockTaskRepositories; private readonly IInStockTaskRepositories _inStockTaskRepositories;
public InStockTaskController(ILoginService loginService, IInStockTaskRepositories inStockTaskRepositories, IInStockService inStockService) public InStockTaskController(ILoginService loginService,
IInStockTaskService inStockTaskService,
IInStockTaskRepositories inStockTaskRepositories,
IInStockService inStockService)
{ {
this._loginService = loginService; this._loginService = loginService;
this._inStockService = inStockService; this._inStockService = inStockService;
this._inStockTaskService = inStockTaskService;
this._inStockTaskRepositories = inStockTaskRepositories; this._inStockTaskRepositories = inStockTaskRepositories;
} }
@@ -76,7 +81,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null) if (loginInfo == null || loginInfo.UserInfo == null)
return ResultList<InStockTaskBillNoQueryResponse>.ReFailure(ResultCodes.Token_Invalid_Error); return ResultList<InStockTaskBillNoQueryResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var list= await _inStockTaskRepositories.GetListBy(code, InstockType.Purchase); var list= await _inStockTaskRepositories.GetListBy(new InStockTaskBillNoQueryRequest() { SourceBillNo=code,Type= (int)InstockType.Purchase });
return ResultList<InStockTaskBillNoQueryResponse>.ReSuccess(list); return ResultList<InStockTaskBillNoQueryResponse>.ReSuccess(list);
} }
@@ -93,8 +98,7 @@ namespace WMS.Web.Api.Controllers
if (loginInfo == null || loginInfo.UserInfo == null) if (loginInfo == null || loginInfo.UserInfo == null)
return ResultList<InStockTaskBillNoQueryResponse>.ReFailure(ResultCodes.Token_Invalid_Error); return ResultList<InStockTaskBillNoQueryResponse>.ReFailure(ResultCodes.Token_Invalid_Error);
var list = await _inStockTaskRepositories.GetListBy(code); return await _inStockTaskService.GetPurchaseInstockTask(code);
return ResultList<InStockTaskBillNoQueryResponse>.ReSuccess(list);
} }
/// <summary> /// <summary>

View File

@@ -1070,6 +1070,71 @@
箱号明细数量的总和 箱号明细数量的总和
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse">
<summary>
来源单号模糊查询响应对象
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Id">
<summary>
单据ID(等同-入库任务单ID)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.DetailsId">
<summary>
明细ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.StockCode">
<summary>
仓库编码(对应金蝶和单点)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.StockName">
<summary>
仓库名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.MaterialId">
<summary>
物料ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Qty">
<summary>
订单数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.DeliveredQty">
<summary>
已交数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Remark">
<summary>
明细备注
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.InStockTask.InStockTaskDetailsInfoDto"> <member name="T:WMS.Web.Core.Dto.InStockTask.InStockTaskDetailsInfoDto">
<summary> <summary>
入库任务单明细详情 入库任务单明细详情
@@ -1140,71 +1205,6 @@
明细 明细
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse">
<summary>
来源单号模糊查询响应对象
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Id">
<summary>
单据ID(等同-入库任务单ID)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.DetailsId">
<summary>
明细ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.SourceBillNo">
<summary>
来源单号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.StockCode">
<summary>
仓库编码(对应金蝶和单点)
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.StockName">
<summary>
仓库名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.MaterialId">
<summary>
物料ID
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.MaterialName">
<summary>
物料名称
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.MaterialNumber">
<summary>
物料编码
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Specifications">
<summary>
物料规格型号
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Qty">
<summary>
订单数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.DeliveredQty">
<summary>
已交数量
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.InStockTask.InStockTaskBillNoQueryResponse.Remark">
<summary>
明细备注
</summary>
</member>
<member name="T:WMS.Web.Core.Dto.InStockTask.UpdateInStockTaskBoxRequest"> <member name="T:WMS.Web.Core.Dto.InStockTask.UpdateInStockTaskBoxRequest">
<summary> <summary>
箱信息和任务单绑定 箱信息和任务单绑定

View File

@@ -0,0 +1,13 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace WMS.Web.Core.Dto.InStockTask
{
public class InStockTaskBillNoQueryRequest
{
public string SourceBillNo { get; set; }
public int? Type { get; set; }
}
}

View File

@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using WMS.Web.Core.Dto.InStockTask;
using WMS.Web.Core.Internal.Results; using WMS.Web.Core.Internal.Results;
namespace WMS.Web.Domain.IService namespace WMS.Web.Domain.IService
@@ -11,11 +12,17 @@ namespace WMS.Web.Domain.IService
/// </summary> /// </summary>
public interface IInStockTaskService public interface IInStockTaskService
{ {
/// <summary>
/// 来源单-编号模糊查询-pad
/// </summary>
/// <param name="sourceBillNo"></param>
/// <returns></returns>
Task<ResultList<InStockTaskBillNoQueryResponse>> GetPurchaseInstockTask(string sourceBillNo);
/// <summary> /// <summary>
/// 同步:采购入库类型单据 /// 同步:采购入库类型单据
/// </summary> /// </summary>
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <returns></returns>
Task<Result> SsynPurchaseInStock(bool isTransaction); Task<Result> SsynPurchaseInStock(List<string> billNos = null, bool isTransaction=true);
} }
} }

View File

@@ -19,7 +19,7 @@ namespace WMS.Web.Domain.IService.Public
/// erp:单据查询-采购入库单 /// erp:单据查询-采购入库单
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
Task<ResultList<ErpPurchaseInStockResultDto>> BillQueryForPurchaseInStock(string billNo="", List<string> sourceBillNos = null); Task<ResultList<ErpPurchaseInStockResultDto>> BillQueryForPurchaseInStock(List<string> sourceBillNos = null);
/// <summary> /// <summary>
/// erp:单据查询-出库单 /// erp:单据查询-出库单
/// </summary> /// </summary>

View File

@@ -57,12 +57,19 @@ namespace WMS.Web.Domain.Infrastructure
/// <returns></returns> /// <returns></returns>
Task<List<InStockTask>> GetListBy(List<string> sourceBillNos); Task<List<InStockTask>> GetListBy(List<string> sourceBillNos);
/// <summary>
/// 列表-根据来源单号模糊搜索
/// </summary>
/// <param name="sourceBillNos"></param>
/// <returns></returns>
Task<List<InStockTask>> GetListBy(string sourceBillNos);
/// <summary> /// <summary>
/// 列表-根据来源单号模糊 /// 列表-根据来源单号模糊
/// </summary> /// </summary>
/// <param name="sourceBillNo"></param> /// <param name="sourceBillNo"></param>
/// <returns></returns> /// <returns></returns>
Task<List<InStockTaskBillNoQueryResponse>> GetListBy(string sourceBillNo, InstockType? type=null); Task<List<InStockTaskBillNoQueryResponse>> GetListBy(InStockTaskBillNoQueryRequest dto);
/// <summary> /// <summary>
/// 批量添加 /// 批量添加

View File

@@ -1,10 +1,12 @@
using AutoMapper; using AutoMapper;
using Microsoft.EntityFrameworkCore.Storage;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using WMS.Web.Core.Dto.Erp.Purchase; using WMS.Web.Core.Dto.Erp.Purchase;
using WMS.Web.Core.Dto.InStockTask;
using WMS.Web.Core.Internal.Results; using WMS.Web.Core.Internal.Results;
using WMS.Web.Domain.Entitys; using WMS.Web.Domain.Entitys;
using WMS.Web.Domain.Infrastructure; using WMS.Web.Domain.Infrastructure;
@@ -37,16 +39,49 @@ namespace WMS.Web.Domain.Services
_inStockTaskRepositories = inStockTaskRepositories; _inStockTaskRepositories = inStockTaskRepositories;
} }
/// <summary>
/// 来源单-编号模糊查询-pad
/// </summary>
/// <param name="sourceBillNo"></param>
/// <returns></returns>
public async Task<ResultList<InStockTaskBillNoQueryResponse>> GetPurchaseInstockTask(string sourceBillNo)
{
//1.事务
IDbContextTransaction _transaction = _basicsRepositories.GetTransaction();
bool isRollback = false;
bool isTransaction = false;
//2.查看是否有入库任务单
var tasks= await _inStockTaskRepositories.GetListBy(sourceBillNo);
if (tasks == null || tasks.Count == 0)
return ResultList < InStockTaskBillNoQueryResponse > .ReFailure(ResultCodes.OrderNoData);
//3.有的话就同步一下金蝶的数据
var billNos = tasks.Select(x => x.SourceBillNo).ToList();
var result=await this.SsynPurchaseInStock(billNos, isTransaction);
if (!result.IsSuccess) isRollback = true;
//4.提交事务
var isSuccess = _basicsRepositories.CommitTransaction(isRollback, _transaction);
if (!isSuccess)
return ResultList < InStockTaskBillNoQueryResponse > .ReFailure(result.Message, result.Status);
//5.再一次查询新的数据:并返回最后的结果
var request = new InStockTaskBillNoQueryRequest() { SourceBillNo = sourceBillNo };
var list = await _inStockTaskRepositories.GetListBy(request);
return ResultList<InStockTaskBillNoQueryResponse>.ReSuccess(list);
}
/// <summary> /// <summary>
/// 同步:采购入库类型单据 /// 同步:采购入库类型单据
/// </summary> /// </summary>
/// <param name="isTransaction"></param> /// <param name="isTransaction"></param>
/// <returns></returns> /// <returns></returns>
public async Task<Result> SsynPurchaseInStock(bool isTransaction) public async Task<Result> SsynPurchaseInStock(List<string> billNos=null,bool isTransaction=true)
{ {
//1.获取金蝶数据:采购订单数据 //1.获取金蝶数据:采购订单数据
var erp_result= await _erpService.BillQueryForPurchaseInStock(); var erp_result= await _erpService.BillQueryForPurchaseInStock(billNos);
if (!erp_result.IsSuccess) if (!erp_result.IsSuccess)
return Result.ReFailure(erp_result.Message,erp_result.Status); return Result.ReFailure(erp_result.Message,erp_result.Status);
var erp_list = erp_result.Data; var erp_list = erp_result.Data;
@@ -69,6 +104,7 @@ namespace WMS.Web.Domain.Services
{ {
//2.1.2修改数量 //2.1.2修改数量
item.AccruedQty = erp_data.FQty; item.AccruedQty = erp_data.FQty;
item.DeliveredQty = erp_data.FStockInQty;
erp_removeList.Add(erp_data); erp_removeList.Add(erp_data);
} }
} }

View File

@@ -89,10 +89,9 @@ namespace WMS.Web.Domain.Services.Public
/// <summary> /// <summary>
/// erp:单据查询-采购入库单 /// erp:单据查询-采购入库单
/// </summary> /// </summary>
/// <param name="billNo">模糊搜索</param>
/// <param name="sourceBillNos">单据编号集合精确查找</param> /// <param name="sourceBillNos">单据编号集合精确查找</param>
/// <returns></returns> /// <returns></returns>
public async Task<ResultList<ErpPurchaseInStockResultDto>> BillQueryForPurchaseInStock(string billNo="", List<string> sourceBillNos = null) public async Task<ResultList<ErpPurchaseInStockResultDto>> BillQueryForPurchaseInStock(List<string> sourceBillNos = null)
{ {
try try
{ {
@@ -137,12 +136,6 @@ namespace WMS.Web.Domain.Services.Public
} }
param.FilterString = param.FilterString + str + ")"; param.FilterString = param.FilterString + str + ")";
//单据编号模糊查询
if (!string.IsNullOrEmpty(billNo))
{
param.FilterString = param.FilterString + " and FBillNo like '%"+billNo+"%'";
}
//根据原订单号查询 //根据原订单号查询
if (sourceBillNos != null && sourceBillNos.Count() > 0) if (sourceBillNos != null && sourceBillNos.Count() > 0)
{ {

View File

@@ -223,12 +223,27 @@ namespace WMS.Web.Repositories
return entitys; return entitys;
} }
/// <summary>
/// 列表-根据来源单号模糊搜索
/// </summary>
/// <param name="sourceBillNos"></param>
/// <returns></returns>
public async Task<List<InStockTask>> GetListBy(string sourceBillNos)
{
var entitys = await _context.InStockTask
.Include(s => s.Details)
.Where(w => EF.Functions.Like(w.SourceBillNo, "%" + sourceBillNos + "%"))
.ToListAsync();
return entitys;
}
/// <summary> /// <summary>
/// 列表-根据来源单号模糊 /// 列表-根据来源单号模糊
/// </summary> /// </summary>
/// <param name="sourceBillNo"></param> /// <param name="sourceBillNo"></param>
/// <returns></returns> /// <returns></returns>
public async Task<List<InStockTaskBillNoQueryResponse>> GetListBy(string sourceBillNo, InstockType? type=null) public async Task<List<InStockTaskBillNoQueryResponse>> GetListBy(InStockTaskBillNoQueryRequest dto)
{ {
//1.获取物料集合 //1.获取物料集合
var materials_result = await _erpService.BillQueryForMaterial(); var materials_result = await _erpService.BillQueryForMaterial();
@@ -240,10 +255,10 @@ namespace WMS.Web.Repositories
var query = _context.InStockTaskDetails var query = _context.InStockTaskDetails
.GroupJoin(_context.InStockTask, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders }) .GroupJoin(_context.InStockTask, detail => detail.Fid, order => order.Id, (detail, orders) => new { detail, orders })
.SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order }) .SelectMany(x => x.orders.DefaultIfEmpty(), (p, order) => new { p.detail, order })
.Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + sourceBillNo + "%") && (w.order.Status== InstockStatus.Part || w.order.Status==InstockStatus.Wait)); .Where(w => EF.Functions.Like(w.order.SourceBillNo, "%" + dto.SourceBillNo + "%") && (w.order.Status== InstockStatus.Part || w.order.Status==InstockStatus.Wait));
if(type.HasValue) if(dto.Type.HasValue)
query = query.Where(w => w.order.Type == type.Value); query = query.Where(w => (int)w.order.Type == dto.Type.Value);
var list = await query.Select(s => new InStockTaskBillNoQueryResponse() var list = await query.Select(s => new InStockTaskBillNoQueryResponse()
{ {