diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index 16c6b4cc..5c024a8c 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index ae5f23f9..bb991418 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -46,7 +46,10 @@ namespace WMS.Web.Api.Controllers [Route("hj")] public async Task TestHJ() { - var result = await this._outStockTaskService.Sync(null); + var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10)); + var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-10)); + var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10)); + //var result = await this._outStockTaskService.Sync(null); //var t=await _outStockTaskRepositories.Get(1); // t.Details[0].Remark = "sdf"; // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 21ef1559..eded53bb 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -994,6 +994,11 @@ 收货客户 + + + 仓库 + + 创建人 @@ -1082,16 +1087,6 @@ 序列号 - - - 仓库 - - - - - 仓位 - - 出库数量 @@ -1162,6 +1157,11 @@ 收货客户 + + + 仓库ID + + 单据状态 @@ -1238,16 +1238,6 @@ 物料Id - - - 仓库ID - - - - - 仓位ID - - 应出库数量 diff --git a/src/WMS.Web.Domain/Entitys/OutStock.cs b/src/WMS.Web.Domain/Entitys/OutStock.cs index 71bab547..b57cfd79 100644 --- a/src/WMS.Web.Domain/Entitys/OutStock.cs +++ b/src/WMS.Web.Domain/Entitys/OutStock.cs @@ -47,6 +47,11 @@ namespace WMS.Web.Domain.Entitys [Column("ReceiptCustomerId")] public int ReceiptCustomerId { get; set; } /// + /// 仓库 + /// + [Column("StockCode")] + public string StockCode { get; set; } + /// /// 创建人 /// [Column("CreatorId")] diff --git a/src/WMS.Web.Domain/Entitys/OutStockDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockDetails.cs index fb14fb41..1122367d 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockDetails.cs @@ -35,16 +35,12 @@ namespace WMS.Web.Domain.Entitys /// [Column("SerialNumbers")] public List SerialNumbers { get; set; } = new List(); - /// - /// 仓库 - /// - [Column("StockCode")] - public string StockCode { get; set; } - /// - /// 仓位 - /// - [Column("SubStockId")] - public string SubStockId { get; set; } + + ///// + ///// 仓位 + ///// + //[Column("SubStockId")] + //public string SubStockId { get; set; } /// /// 出库数量 /// diff --git a/src/WMS.Web.Domain/Entitys/OutStockTask.cs b/src/WMS.Web.Domain/Entitys/OutStockTask.cs index 7a22ac07..82a02a8a 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTask.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTask.cs @@ -39,6 +39,11 @@ namespace WMS.Web.Domain.Entitys [Column("ReceiptCustomerId")] public int ReceiptCustomerId { get; set; } /// + /// 仓库ID + /// + [Column("StockCode")] + public string StockCode { get; set; } + /// /// 单据状态 /// [Column("Status")] @@ -67,10 +72,10 @@ namespace WMS.Web.Domain.Entitys /// 明细 /// public List Details = new List(); - public void Create(OutStockType type, int deliveryOrgId, int receiptCustomerId, DateTime createTime) + public void Create(OutStockType type,string stockCode, int deliveryOrgId, int receiptCustomerId, DateTime createTime) { this.Type = type; - //this.SourceBillNos.Add(sourceBillNo); + this.StockCode = stockCode; this.DeliveryOrgId = deliveryOrgId; this.ReceiptCustomerId = receiptCustomerId; this.CreateTime = createTime; @@ -175,7 +180,7 @@ namespace WMS.Web.Domain.Entitys if (list.GroupBy(g => g.DeliveryOrgId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); if (list.GroupBy(g => g.ReceiptCustomerId).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); var details = list.SelectMany(s => s.Details).ToList(); - if (details.GroupBy(g => g.StockCode).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); + if (list.GroupBy(g => g.StockCode).Count() > 1) return Result.ReFailure(ResultCodes.MergeStatusError); List details_new = new List(); //清空数据绑定 diff --git a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs index c03c628b..6ae297f9 100644 --- a/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs +++ b/src/WMS.Web.Domain/Entitys/OutStockTaskDetails.cs @@ -32,16 +32,12 @@ namespace WMS.Web.Domain.Entitys /// [Column("MaterialId")] public int MaterialId { get; set; } - /// - /// 仓库ID - /// - [Column("StockCode")] - public string StockCode { get; set; } - /// - /// 仓位ID - /// - [Column("SubStockId")] - public int SubStockId { get; set; } + + ///// + ///// 仓位ID + ///// + //[Column("SubStockId")] + //public int SubStockId { get; set; } /// /// 应出库数量 /// diff --git a/src/WMS.Web.Domain/Services/OutStockService.cs b/src/WMS.Web.Domain/Services/OutStockService.cs index 93e61416..d47bbed5 100644 --- a/src/WMS.Web.Domain/Services/OutStockService.cs +++ b/src/WMS.Web.Domain/Services/OutStockService.cs @@ -114,8 +114,8 @@ namespace WMS.Web.Domain.Services { BoxId = boxId, InventoryInOutMethod = dto.Method, - StockCode = outStockTask.Details.First().StockCode, - SubStockId = outStockTask.Details.First().SubStockId, + StockCode = outStockTask.StockCode, + SubStockId = 0,// outStockTask.Details.First().SubStockId, Details = inventoryDetail }; inventoryList.Add(inventory); diff --git a/src/WMS.Web.Domain/Services/OutStockTaskService.cs b/src/WMS.Web.Domain/Services/OutStockTaskService.cs index 08abcd2c..43f78a91 100644 --- a/src/WMS.Web.Domain/Services/OutStockTaskService.cs +++ b/src/WMS.Web.Domain/Services/OutStockTaskService.cs @@ -106,9 +106,11 @@ namespace WMS.Web.Domain.Services foreach (var outStockTask in data_list) { var sourcNos = outStockTask.Details.SelectMany(s => s.ErpDetails).Select(s => s.SourceBillNo).ToList(); - var erps = erp_list.Where(w => sourcNos.Contains(w.SourceBillNo)).ToList(); + //仓库不同 拆分成不同的任务单 + var erps = erp_list.Where(w => sourcNos.Contains(w.SourceBillNo) && outStockTask.StockCode.Equals(w.StockCode)).ToList(); foreach (var erp in erps) { + //仓库不同 拆分成不同的 var detail = outStockTask.Details.FirstOrDefault(w => w.MaterialId == erp.MaterialId); if (detail == null) { @@ -120,19 +122,17 @@ namespace WMS.Web.Domain.Services } else { - //找到物料明细下面对应的来源单明细 然后修改 - var erpDetail = detail.ErpDetails.FirstOrDefault(f => f.SourceBillNo.Equals(erp.SourceBillNo)); + //找到物料明细下面对应的金蝶明细Id 然后修改(跟金蝶明细一一对应) + var erpDetail = detail.ErpDetails.FirstOrDefault(f => f.Erp_DetailId == erp.Erp_DetailId); if (erpDetail == null) { erpDetail = _mapper.Map(erp); detail.ErpDetails.Add(erpDetail); - outStockTask.Details.Add(detail); } else - { erpDetail.AccruedQty = erp.AccruedQty; - detail.AccruedQty = detail.ErpDetails.Sum(s => s.AccruedQty); - } + + detail.AccruedQty = detail.ErpDetails.Sum(s => s.AccruedQty); } //操作完后剔除 erp_removeList.Add(erp); @@ -153,21 +153,26 @@ namespace WMS.Web.Domain.Services if (erp_list.Count != 0) { var add_entitys = new List(); - var billNos = erp_list.GroupBy(x => x.SourceBillNo).Select(x => x.Key).ToList(); + //根据来源订单号和仓库分组 一个来源订单号和一个仓库 对应一个任务单 + var billNos = erp_list.GroupBy(x => (x.SourceBillNo, x.StockCode)).Select(x => x.Key).ToList(); foreach (var item in billNos) { - var e = erp_list.FirstOrDefault(f => f.SourceBillNo == item); + var eList = erp_list.Where(f => f.SourceBillNo == item.SourceBillNo && f.StockCode == item.StockCode).ToList(); + var e = eList.First(); var entity = new OutStockTask(); - entity.Create((OutStockType)e.Type, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime); + entity.Create((OutStockType)e.Type, e.StockCode, e.DeliveryOrgId, e.ReceiptCustomerId, (DateTime)e.CreateTime); //找到当前对应来源单据编号的集合数据 - var current_erp_details = erp_list.Where(x => x.SourceBillNo == item).ToList(); + var mIds = eList.GroupBy(g => g.MaterialId).Select(s => s.Key).ToList(); //给到dto的实体明细中 - foreach (var erp in current_erp_details) + foreach (var mid in mIds) { - var detail = _mapper.Map(erp); - var erpDetail = _mapper.Map(erp); - detail.ErpDetails.Add(erpDetail); + var emList = eList.Where(w => w.MaterialId == mid).ToList(); + var detail = _mapper.Map(emList.First()); + var erpDetail = _mapper.Map>(emList); + detail.ErpDetails.AddRange(erpDetail); + + detail.AccruedQty = detail.ErpDetails.Sum(s => s.AccruedQty); entity.Details.Add(detail); } add_entitys.Add(entity); diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index 2202964c..0a8edfd6 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -1465,7 +1465,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.STK_TransferDirect.ToString()); - param.FieldKeys = "FBillNo,'',FStockOutOrgId,FStockOrgId,FMaterialID,FSrcStockId.FNumber,FSrcStockLocId,FQty,FNoteEntry,FCreateDate"; + param.FieldKeys = "FBillNo,'',FStockOutOrgId,FStockOrgId,FMaterialID,FSrcStockId.FNumber,FSrcStockLocId,FQty,FNoteEntry,FCreateDate,FBillEntry_FEntryID"; param.Limit = 10; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -1507,6 +1507,7 @@ namespace WMS.Web.Domain.Services.Public lis.Remark = item[8]; lis.CreateTime = Convert.ToDateTime(item[9]); lis.Type = (int)OutStockType.Stkdirecttransfers; + lis.Erp_DetailId = Convert.ToInt32(item[10]); erp_list.Add(lis); } return ResultList.ReSuccess(erp_list); @@ -1543,7 +1544,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.STK_TRANSFEROUT.ToString()); - param.FieldKeys = "FBillNo,'',FStockOrgID,FStockInOrgID,FMaterialID,FSrcStockID.FNumber,FSrcStockLocId,FQty,FEntryNote,FCreateDate"; + param.FieldKeys = "FBillNo,'',FStockOrgID,FStockInOrgID,FMaterialID,FSrcStockID.FNumber,FSrcStockLocId,FQty,FEntryNote,FCreateDate,FSTKTRSOUTENTRY_FEntryID"; param.Limit = 10; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -1585,6 +1586,7 @@ namespace WMS.Web.Domain.Services.Public lis.Remark = item[8]; lis.CreateTime = Convert.ToDateTime(item[9]); lis.Type = (int)OutStockType.StktransferInst; + lis.Erp_DetailId = Convert.ToInt32(item[10]); erp_list.Add(lis); } return ResultList.ReSuccess(erp_list); @@ -1621,7 +1623,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.STK_AssembledApp.ToString()); - param.FieldKeys = "FBillNo,'','0','0',FMaterialID,FStockID.FNumber,FStockLocId,FQty,FDescription,FCreateDate"; + param.FieldKeys = "FBillNo,'','0','0',FMaterialID,FStockID.FNumber,FStockLocId,FQty,FDescription,FCreateDate,FEntity_FEntryID"; param.Limit = 10; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -1663,6 +1665,7 @@ namespace WMS.Web.Domain.Services.Public lis.Remark = item[8]; lis.CreateTime = Convert.ToDateTime(item[9]); lis.Type = (int)OutStockType.Assembled; + lis.Erp_DetailId = Convert.ToInt32(item[10]); erp_list.Add(lis); } return ResultList.ReSuccess(erp_list); @@ -1699,7 +1702,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.STK_MisDelivery.ToString()); - param.FieldKeys = "FBillNo,'',FStockOrgId,FPickOrgId,FMaterialId,FStockId.FNumber,FStockLocId ,FQty,FEntryNote,FCreateDate"; + param.FieldKeys = "FBillNo,'',FStockOrgId,FPickOrgId,FMaterialId,FStockId.FNumber,FStockLocId ,FQty,FEntryNote,FCreateDate,FEntity_FEntryID"; param.Limit = 10; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -1741,6 +1744,7 @@ namespace WMS.Web.Domain.Services.Public lis.Remark = item[8]; lis.CreateTime = Convert.ToDateTime(item[9]); lis.Type = (int)OutStockType.Miscellaneous; + lis.Erp_DetailId = Convert.ToInt32(item[10]); erp_list.Add(lis); } return ResultList.ReSuccess(erp_list); @@ -1777,7 +1781,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶采购订单:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.STK_AssembledApp.ToString()); - param.FieldKeys = "FBillNo,'',FSubProOwnerIdH,FOwnerIdHead,FMaterialIDSETY,FStockIDSETY.FNumber,FStockLocIdSETY,FQtySETY,FDescriptionSETY,FCreateDate"; + param.FieldKeys = "FBillNo,'',FSubProOwnerIdH,FOwnerIdHead,FMaterialIDSETY,FStockIDSETY.FNumber,FStockLocIdSETY,FQtySETY,FDescriptionSETY,FCreateDate,FSubEntity_FDetailID"; param.Limit = 10; //查询条件:备注其中的条件值以金蝶的值为准!!! //1.创建时间在两天前和当天时间之间 @@ -1819,6 +1823,7 @@ namespace WMS.Web.Domain.Services.Public lis.Remark = item[8]; lis.CreateTime = Convert.ToDateTime(item[9]); lis.Type = (int)OutStockType.Assembled; + lis.Erp_DetailId = Convert.ToInt32(item[10]); erp_list.Add(lis); } return ResultList.ReSuccess(erp_list); diff --git a/src/WMS.Web.Repositories/OutStockRepositories.cs b/src/WMS.Web.Repositories/OutStockRepositories.cs index fb34e55b..86de18be 100644 --- a/src/WMS.Web.Repositories/OutStockRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockRepositories.cs @@ -143,7 +143,7 @@ namespace WMS.Web.Repositories if (dto.DeliveryOrgId != null) query = query.Where(w => w.order.DeliveryOrgId == dto.DeliveryOrgId); if (!string.IsNullOrEmpty(dto.StockCode)) - query = query.Where(w => w.detail.StockCode == dto.StockCode); + query = query.Where(w => w.order.StockCode == dto.StockCode); if (dto.CreateBeginDate != null) query = query.Where(w => w.order.CreateTime >= dto.CreateBeginDate); if (dto.CreateEndDate != null) @@ -159,7 +159,7 @@ namespace WMS.Web.Repositories Creator = _singleDataService.GetSingleData(SingleAction.Staffs, _loginRepositories.CompanyId, s.order.CreatorId), CreateTime = s.order.CreateTime.DateToStringSeconds(), SuccessSync = s.order.SuccessSync == true ? "成功" : "失败", - Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.detail.StockCode), + Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.order.StockCode), SourceBillNo = string.Join(",", s.detail.ErpDetails.Select(s => s.SourceBillNo)), SaleBillNo = string.Join(",", s.detail.ErpDetails.Select(s => s.SaleBillNo)), DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId), diff --git a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs index c63ee134..aece09df 100644 --- a/src/WMS.Web.Repositories/OutStockTaskRepositories.cs +++ b/src/WMS.Web.Repositories/OutStockTaskRepositories.cs @@ -273,7 +273,7 @@ namespace WMS.Web.Repositories if (dto.DeliveryOrgId != null) query = query.Where(w => w.order.DeliveryOrgId == dto.DeliveryOrgId); if (!string.IsNullOrEmpty(dto.StockCode)) - query = query.Where(w => w.detail.StockCode == dto.StockCode); + query = query.Where(w => w.order.StockCode == dto.StockCode); if (dto.CreateBeginDate != null) query = query.Where(w => w.order.OperateTime >= dto.CreateBeginDate); if (dto.CreateEndDate != null) @@ -291,7 +291,7 @@ namespace WMS.Web.Repositories CreateTime = s.order.OperateTime.DateToStringSeconds(), OutStockBeginTime = s.detail.OutStockBeginTime.DateToStringSeconds(), OutStockEndTime = s.detail.OutStockEndTime.DateToStringSeconds(), - Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.detail.StockCode), + Stock = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, s.order.StockCode), SourceBillNo = string.Join(",", s.detail.ErpDetails.Select(s => s.SourceBillNo)), SaleBillNo = string.Join(",", s.detail.ErpDetails.Select(s => s.SaleBillNo)), DeliveryOrg = _erpBasicDataExtendService.GetOrgName(orgs, s.order.DeliveryOrgId), @@ -331,7 +331,7 @@ namespace WMS.Web.Repositories foreach (var r in response) { var entity = list.FirstOrDefault(f => f.Id == r.Id); - r.StockCode = entity.Details.First().StockCode; + r.StockCode = entity.StockCode; r.StockName = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, r.StockCode); } //获取物料信息 显示物料三件套 @@ -363,7 +363,7 @@ namespace WMS.Web.Repositories if (entity == null) return new GetOutStockTaskByNoResponse(); var response = _mapper.Map(entity); - response.StockCode = entity.Details.First().StockCode; + response.StockCode = entity.StockCode; response.StockName = _singleDataService.GetSingleData(SingleAction.Stocks, _loginRepositories.CompanyId, response.StockCode); //获取物料信息 显示物料三件套 foreach (var r in response.details)