diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index fd52ca1d..36d92fc1 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -500,6 +500,51 @@ 名称 + + + erp:组装拆卸单-响应对象 + + + + + 单据编号 + + + + + 成品货主和子件货主 + + + + + 物料ID + + + + + 仓库 + + + + + 仓库编码 + + + + + 数量 + + + + + 创建日期 + + + + + 备注 + + ERP:单据查询-dto diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 75bce319..fc150a61 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1988,6 +1988,20 @@ + + + erp:单据查询-组装拆卸单-组装(成品入库) + + + + + + + erp:单据查询-组装拆卸单-拆卸(子件入库) + + + + erp:单据查询-出库单 @@ -2996,6 +3010,20 @@ + + + erp:单据查询-组装拆卸单-组装(成品入库) + + + + + + + erp:单据查询-组装拆卸单-拆卸(子件入库) + + + + erp:单据查询-物料 @@ -3882,9 +3910,14 @@ 装箱 - + - 移箱 + 移箱上架 + + + + + 移箱下架 diff --git a/src/WMS.Web.Core/Dto/Erp/ErpAssembledAppDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpAssembledAppDto.cs new file mode 100644 index 00000000..66d783a9 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/ErpAssembledAppDto.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp +{ + /// + /// erp:组装拆卸单-响应对象 + /// + public class ErpAssembledAppDto + { + /// + /// 单据编号 + /// + public string BillNo { get; set; } + + /// + /// 成品货主和子件货主 + /// + public int OrgId { get; set; } + + /// + /// 物料ID + /// + public int MaterialId { get; set; } + + /// + /// 仓库 + /// + public int StockId { get; set; } + + /// + /// 仓库编码 + /// + public string StockCode { get; set; } + + /// + /// 数量 + /// + public decimal Qty { get; set; } + + /// + /// 创建日期 + /// + public DateTime CreateTime { get; set; } + + /// + /// 备注 + /// + public string Remark { get; set; } + } +} diff --git a/src/WMS.Web.Domain/IService/Public/IErpService.cs b/src/WMS.Web.Domain/IService/Public/IErpService.cs index 6e66236d..86e7c5dd 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpService.cs @@ -48,6 +48,20 @@ namespace WMS.Web.Domain.IService.Public /// Task> BillQueryForTransferin(List sourceBillNos = null); + /// + /// erp:单据查询-组装拆卸单-组装(成品入库) + /// + /// + /// + Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null); + + /// + /// erp:单据查询-组装拆卸单-拆卸(子件入库) + /// + /// + /// + Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null); + /// /// erp:单据查询-出库单 /// diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 95a12d38..9ac39bd0 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -554,6 +554,212 @@ namespace WMS.Web.Domain.Services.Public } } + /// + /// erp:单据查询-组装拆卸单-组装(成品入库) + /// + /// + /// + public async Task> BillQueryForAssembledApp_Assembly(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Code).ToList(); + + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //2.时间条件:可能还有其它条件 + var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); + var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + //3.获取金蝶分步式入库订单:拼接参数和条件 + var query = new ErpBillQueryDto(token_result.Data); + var param = new ErpBillQueryParamDto(FormIdParam.STK_AssembledApp.ToString()); + param.FieldKeys = "FBillNo,FOwnerIdHead,FMaterialID,FStockID,FStockID.FNumber,FQty,FCreateDate,FDescription"; + param.Limit = 10000; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.单据类型:标准组织拆卸单;备注:这里的单据类型只有一个,所以就不需要判断了 + //4.事务类型:1为组装,2为拆卸 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 + param.FilterString = " FDocumentStatus='C' and FOwnerTypeIdHead=1";// + param.FilterString = param.FilterString + " and FStockID.FNumber in ("; + + var str = ""; + int index = 0; + foreach (var scode in stocks_codes) + { + index++; + if (index == stocks_codes.Count) + str = str + $"'{scode}'"; + else + str = str + $"'{scode}'" + ","; + } + param.FilterString = param.FilterString + str + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + param.FilterString = param.FilterString + " and FBillNo in ("; + + var bill_str = ""; + int bill_index = 0; + //var srt_b = JsonConvert.SerializeObject(sourceBillNos); + foreach (var bill in sourceBillNos) + { + bill_index++; + if (bill_index == sourceBillNos.Count) + bill_str = bill_str + $"'{bill}'"; + else + bill_str = bill_str + $"'{bill}'" + ","; + } + param.FilterString = param.FilterString + bill_str + ")"; + }//注意:当有单据编号的查询的时候,时间条件去掉;不然就查不到数据了 + else + { + param.FilterString = param.FilterString + " and FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "'"; + } + + query.Data = JsonConvert.SerializeObject(param); + var json = JsonConvert.SerializeObject(query); + + //4.请求查询接口 + var result_json = await _client.ExecuteBillQueryAsync(json); + var result = JsonConvert.DeserializeObject>>(result_json); + + //5.返回数据的组装 + var erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpAssembledAppDto(); + lis.BillNo = item[0]; + lis.OrgId = Convert.ToInt32(item[1]); + lis.MaterialId = Convert.ToInt32(item[2]); + lis.StockId = Convert.ToInt32(item[3]); + lis.StockCode = item[4]; + lis.Qty = Convert.ToDecimal(item[5]); + lis.CreateTime = Convert.ToDateTime(item[6]); + lis.Remark = item[7]; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + + /// + /// erp:单据查询-组装拆卸单-拆卸(子件入库) + /// + /// + /// + public async Task> BillQueryForAssembledApp_Disassembly(List sourceBillNos = null) + { + try + { + + var stocks = await _basicsRepositories.GetUcStockAsync(ManagementSystemCode.GLXT0004.ToString(), "", _appOptions.CompanyId); + if (stocks.Count == 0) + return ResultList.ReFailure(ResultCodes.ErpStockNoData); + var stocks_codes = stocks.Select(x => x.Code).ToList(); + + + //1.先登录金蝶-拿到token + var token_result = await this.Init(); + if (!token_result.IsSuccess) + return ResultList.ReFailure(token_result); + + //2.时间条件:可能还有其它条件 + var beginTime = DateTime.Now.AddDays(-2).ToString("yyyy-MM-dd 00:00:00"); + var endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); + //3.获取金蝶分步式入库订单:拼接参数和条件 + var query = new ErpBillQueryDto(token_result.Data); + var param = new ErpBillQueryParamDto(FormIdParam.STK_AssembledApp.ToString()); + param.FieldKeys = "FBillNo,FSubProOwnerIdH,FMaterialID,FStockIDSETY,FStockIDSETY.FNumber,FQtySETY,FCreateDate,FDescriptionSETY"; + param.Limit = 10000; + //查询条件:备注其中的条件值以金蝶的值为准!!! + //1.创建时间在两天前和当天时间之间 + //2.审核状态:已审核 + //3.单据类型:标准组织拆卸单;备注:这里的单据类型只有一个,所以就不需要判断了 + //4.事务类型:1为组装,2为拆卸 + //5.仓库:wms系统的仓库值---现在这个没有加,因为还单点没有和金蝶同步 + param.FilterString = " FDocumentStatus='C' and FOwnerTypeIdHead=2";// + param.FilterString = param.FilterString + " and FStockIDSETY.FNumber in ("; + + var str = ""; + int index = 0; + foreach (var scode in stocks_codes) + { + index++; + if (index == stocks_codes.Count) + str = str + $"'{scode}'"; + else + str = str + $"'{scode}'" + ","; + } + param.FilterString = param.FilterString + str + ")"; + + //根据原订单号查询 + if (sourceBillNos != null && sourceBillNos.Count() > 0) + { + param.FilterString = param.FilterString + " and FBillNo in ("; + + var bill_str = ""; + int bill_index = 0; + //var srt_b = JsonConvert.SerializeObject(sourceBillNos); + foreach (var bill in sourceBillNos) + { + bill_index++; + if (bill_index == sourceBillNos.Count) + bill_str = bill_str + $"'{bill}'"; + else + bill_str = bill_str + $"'{bill}'" + ","; + } + param.FilterString = param.FilterString + bill_str + ")"; + }//注意:当有单据编号的查询的时候,时间条件去掉;不然就查不到数据了 + else + { + param.FilterString = param.FilterString + " and FCreateDate>='" + beginTime + "' and FCreateDate<='" + endTime + "'"; + } + + query.Data = JsonConvert.SerializeObject(param); + var json = JsonConvert.SerializeObject(query); + + //4.请求查询接口 + var result_json = await _client.ExecuteBillQueryAsync(json); + var result = JsonConvert.DeserializeObject>>(result_json); + + //5.返回数据的组装 + var erp_list = new List(); + foreach (var item in result) + { + var lis = new ErpAssembledAppDto(); + lis.BillNo = item[0]; + lis.OrgId = Convert.ToInt32(item[1]); + lis.MaterialId = Convert.ToInt32(item[2]); + lis.StockId = Convert.ToInt32(item[3]); + lis.StockCode = item[4]; + lis.Qty = Convert.ToDecimal(item[5]); + lis.CreateTime = Convert.ToDateTime(item[6]); + lis.Remark = item[7]; + erp_list.Add(lis); + } + return ResultList.ReSuccess(erp_list); + } + catch (Exception ex) + { + return ResultList.ReFailure(ResultCodes.Erp_BillQuery_Error); + } + } + /// /// erp:单据查询-物料 ///