diff --git a/src/WMS.Web.Api/Controllers/SysConfigController.cs b/src/WMS.Web.Api/Controllers/SysConfigController.cs index fff21c7d..f4ae79fb 100644 --- a/src/WMS.Web.Api/Controllers/SysConfigController.cs +++ b/src/WMS.Web.Api/Controllers/SysConfigController.cs @@ -210,7 +210,7 @@ namespace WMS.Web.Api.Controllers return Result>.ReFailure(ResultCodes.Token_Invalid_Error); List list = new List(); - if (!number.Substring(0, 2).Equals("HD") && !number.Substring(0, 2).Equals("JD")) + if (!number.Substring(0, 2).Equals("HD") && !number.Substring(0, 2).Equals("GD")) return Result>.ReSuccess(list); var subs = await _erpService.BillQueryForSubStock(number, orgCode); diff --git a/src/WMS.Web.Api/Controllers/TakeStockController.cs b/src/WMS.Web.Api/Controllers/TakeStockController.cs index 0f5a264d..ed217328 100644 --- a/src/WMS.Web.Api/Controllers/TakeStockController.cs +++ b/src/WMS.Web.Api/Controllers/TakeStockController.cs @@ -102,7 +102,7 @@ namespace WMS.Web.Api.Controllers /// /// /// - [HttpGet] + [HttpPost] [Route("Sync")] public async Task Sync(OperateRequest dto) { diff --git a/src/WMS.Web.Api/Controllers/TestController.cs b/src/WMS.Web.Api/Controllers/TestController.cs index d6c3a5f0..fa221d85 100644 --- a/src/WMS.Web.Api/Controllers/TestController.cs +++ b/src/WMS.Web.Api/Controllers/TestController.cs @@ -30,9 +30,12 @@ namespace WMS.Web.Api.Controllers private readonly IOutStockTaskRepositories _outStockTaskRepositories; private readonly IOutStockTaskService _outStockTaskService; private readonly IBoxInventoryRepositories _boxInventoryRepositories; + private readonly ITakeStockService _takeStockService; + private readonly ITakeStockRepositories _takeStockRepositories; public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, - IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService) + IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, + ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories) { _boxInventoryRepositories = boxInventoryRepositories; this._erpService = erpService; @@ -42,14 +45,16 @@ namespace WMS.Web.Api.Controllers _boxService = boxService; _outStockTaskRepositories = outStockTaskRepositories; _outStockTaskService = outStockTaskService; + _takeStockService = takeStockService; + _takeStockRepositories = takeStockRepositories; } [HttpGet] [Route("hj")] public async Task TestHJ() { - - + var entity=await _takeStockRepositories.GetEntityList(new List() {2 }); + var r= await _takeStockService.Loss_Profit(entity.First()); //var list = await GetList(); //var c = await _erpService.BillQueryForSubStock(null,null); //var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List() { "FHTZD8022232" }, DateTime.Now.AddDays(-10)); diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 2554a22e..193d5c64 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -590,6 +590,11 @@ 参数 + + + 参数(保存提交审核formId在外层) + + ERP:单据查询-参数-dto @@ -710,6 +715,31 @@ 单据类型 + + + 编码 + + + + + 编码 + + + + + 盘点子仓库 + + + + + GD仓 + + + + + HD仓 + + erp 提交和审核 @@ -800,6 +830,11 @@ 基本单位名称 + + + 基本单位编码 + + 金蝶组织-基本信息 @@ -1015,6 +1050,11 @@ 业务组织(使用组织) + + + 业务组织(使用组织)编码 + + erp供应商基础数据 @@ -1127,7 +1167,12 @@ - 盘点后数量 + 盘盈数量 + + + + + 盘亏数量 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index b6132e27..b1cb99f1 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -1660,6 +1660,11 @@ 备注 + + + 同步到金蝶后金蝶的单据Id + + 序列号 @@ -1671,7 +1676,7 @@ - + 同步金蝶结果 @@ -2631,6 +2636,14 @@ + + + 获取物料基本单位编码 + + + + + 获取组织名称 @@ -3958,6 +3971,14 @@ + + + 获取物料基本单位编码 + + + + + 获取组织名称 @@ -5644,7 +5665,7 @@ - 失败 + 失败(保存失败 未保存) @@ -5652,9 +5673,14 @@ 成功 - + - 部分成功(数据保存成功,提交或者审核失败) + 提交失败 + + + + + 审核失败 diff --git a/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs index 30064913..326f6823 100644 --- a/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/ErpBillQueryDto.cs @@ -16,6 +16,11 @@ namespace WMS.Web.Core.Dto.Erp { this.AccessToken = accessToken; } + public ErpBillQueryDto(string accessToken,string formid) + { + this.AccessToken = accessToken; + this.FormId = formid; + } /// /// 令牌 /// @@ -26,5 +31,10 @@ namespace WMS.Web.Core.Dto.Erp /// [JsonProperty(PropertyName = "data")] public string Data { get; set; } + /// + /// 参数(保存提交审核formId在外层) + /// + [JsonProperty(PropertyName = "formid")] + public string FormId { get; set; } } } diff --git a/src/WMS.Web.Core/Dto/Erp/ErpNumberDto.cs b/src/WMS.Web.Core/Dto/Erp/ErpNumberDto.cs new file mode 100644 index 00000000..42e84e27 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Erp/ErpNumberDto.cs @@ -0,0 +1,50 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Erp +{ + /// + /// 编码 + /// + public class ErpNumberDto + { + public ErpNumberDto() { } + public ErpNumberDto(string number) + { + this.Number = number; + } + /// + /// 编码 + /// + [JsonProperty("FNumber")] + public string Number { get; set; } + } + + /// + /// 盘点子仓库 + /// + public class ErpSubStockDto + { + public ErpSubStockDto() { } + public ErpSubStockDto(string stockCode, string subCode) + { + if (stockCode != null && stockCode.Equals("GD")) + this.GD = new ErpNumberDto(subCode ?? ""); + if (stockCode != null && stockCode.Equals("HD")) + this.HD = new ErpNumberDto(subCode ?? ""); + } + /// + /// GD仓 + /// + [JsonProperty("FSTOCKLOCID__FF100005")] + public ErpNumberDto GD { get; set; } = new ErpNumberDto(""); + + /// + /// HD仓 + /// + [JsonProperty("FSTOCKLOCID__FF100007")] + public ErpNumberDto HD { get; set; } = new ErpNumberDto(""); + } +} diff --git a/src/WMS.Web.Core/Dto/Erp/Material/ErpMaterialDto.cs b/src/WMS.Web.Core/Dto/Erp/Material/ErpMaterialDto.cs index 7f8f88f1..5aa29e2a 100644 --- a/src/WMS.Web.Core/Dto/Erp/Material/ErpMaterialDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/Material/ErpMaterialDto.cs @@ -36,5 +36,9 @@ namespace WMS.Web.Core.Dto.Erp /// 基本单位名称 /// public string BaseUnitName { get; set; } + /// + /// 基本单位编码 + /// + public string BaseUnitNumber { get; set; } } } diff --git a/src/WMS.Web.Core/Dto/Erp/Stock/ErpStockDto.cs b/src/WMS.Web.Core/Dto/Erp/Stock/ErpStockDto.cs index 69484205..e9111d89 100644 --- a/src/WMS.Web.Core/Dto/Erp/Stock/ErpStockDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/Stock/ErpStockDto.cs @@ -25,5 +25,9 @@ namespace WMS.Web.Core.Dto.Erp /// 业务组织(使用组织) /// public int OrgId { get; set; } + /// + /// 业务组织(使用组织)编码 + /// + public string OrgCode { get; set; } } } diff --git a/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs b/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs index d2e42ee0..0019ee79 100644 --- a/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs +++ b/src/WMS.Web.Core/Dto/Erp/TakeStock/ErpTakeStockSaveDto.cs @@ -35,16 +35,16 @@ namespace WMS.Web.Core.Dto.Erp.TakeStock /// 单据类型(标准盘亏单; 标准盘盈单 PY01_SYS) 盘亏 PK01_SYS /// [JsonProperty("FBillTypeID")] - public string Type { get; set; } + public ErpNumberDto Type { get; set; } /// /// 库存组织 (取仓库对应的库存组织) /// [JsonProperty("FStockOrgId")] - public string StockOrgId { get; set; } + public ErpNumberDto StockOrgId { get; set; } /// /// 货主类型: 默认为业务组织 BD_OwnerOrg /// - [JsonProperty("FBillTypeID")] + [JsonProperty("FOwnerTypeIdHead")] public string FOwnerTypeIdHead { get; set; } = "BD_OwnerOrg"; /// /// 单据编号 @@ -68,7 +68,7 @@ namespace WMS.Web.Core.Dto.Erp.TakeStock /// 库存状态 KCZT001 /// [JsonProperty("FStockStatusId")] - public string FStockStatusId { get; set; } = "KCZT001"; + public ErpNumberDto FStockStatusId { get; set; } = new ErpNumberDto("KCZT001"); /// /// 货主类型: 默认为业务组织 BD_OwnerOrg /// @@ -78,7 +78,7 @@ namespace WMS.Web.Core.Dto.Erp.TakeStock /// 取仓库对应的货主信息 货主: 等于库存组织 /// [JsonProperty("FOwnerid")] - public string FOwnerid { get; set; } + public ErpNumberDto FOwnerid { get; set; } /// /// 保管者类型 /// @@ -88,27 +88,27 @@ namespace WMS.Web.Core.Dto.Erp.TakeStock /// 保管者 仓库”库存组织” /// [JsonProperty("FKeeperId")] - public string FKeeperId { get; set; } + public ErpNumberDto FKeeperId { get; set; } /// /// 物料ID /// [JsonProperty("FMaterialId")] - public string MaterialId { get; set; } + public ErpNumberDto MaterialId { get; set; } /// /// 单位ID /// [JsonProperty("FUnitID")] - public string UnitId { get; set; } + public ErpNumberDto UnitId { get; set; } /// /// 仓库ID /// [JsonProperty("FStockId")] - public string StockId { get; set; } + public ErpNumberDto StockId { get; set; } /// /// 仓位ID /// [JsonProperty("FStockLocId")] - public string SubStockId { get; set; } + public ErpSubStockDto SubStockId { get; set; } /// /// 盘点前数量(wms系统数量) /// @@ -120,11 +120,16 @@ namespace WMS.Web.Core.Dto.Erp.TakeStock [JsonProperty("FCountQty")] public decimal AfterQty { get; set; } /// - /// 盘点后数量 + /// 盘盈数量 /// [JsonProperty("FGainQty")] public decimal FinalQty { get; set; } /// + /// 盘亏数量 + /// + [JsonProperty("FLossQty")] + public decimal LossQty { get; set; } + /// /// 备注 /// [JsonProperty("Fnote")] diff --git a/src/WMS.Web.Domain/Entitys/TakeStock.cs b/src/WMS.Web.Domain/Entitys/TakeStock.cs index 66eb5cc3..44e5008c 100644 --- a/src/WMS.Web.Domain/Entitys/TakeStock.cs +++ b/src/WMS.Web.Domain/Entitys/TakeStock.cs @@ -97,6 +97,11 @@ namespace WMS.Web.Domain.Entitys [Column("Remark")] public string Remark { get; set; } /// + /// 同步到金蝶后金蝶的单据Id + /// + [Column("ErpSyncId")] + public string ErpSyncId { get; set; } + /// /// 序列号 /// [Column("SerialNumbers")] @@ -115,10 +120,11 @@ namespace WMS.Web.Domain.Entitys /// /// /// - public void Sync(bool isSuccess, string remark, SyncStatus syncStatus) + public void Sync(bool isSuccess, string remark, SyncStatus syncStatus,string erpId) { this.SuccessSync = syncStatus; this.Remark = ""; + this.ErpSyncId = erpId; } /// /// 生成单据号 diff --git a/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs b/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs index d3d27b77..3d611bde 100644 --- a/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs +++ b/src/WMS.Web.Domain/IService/Public/IErpBasicDataExtendService.cs @@ -51,6 +51,13 @@ namespace WMS.Web.Domain.IService.Public /// int GetMaterialUnitId(List erpMaterials, int materialId); /// + /// 获取物料基本单位编码 + /// + /// + /// + /// + string GetMaterialUnitNumber(List erpMaterials, int materialId); + /// /// 获取组织名称 /// /// diff --git a/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs b/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs index b77462fb..20c884bd 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpBasicDataExtendService.cs @@ -125,6 +125,24 @@ namespace WMS.Web.Domain.Services.Public } return mat.BaseUnitId; } + /// + /// 获取物料基本单位编码 + /// + /// + /// + /// + public string GetMaterialUnitNumber(List erpMaterials, int materialId) + { + var mat = erpMaterials.Where(x => x.MaterialId == materialId).FirstOrDefault(); + if (mat == null) + { + var result = _erpService.BillQueryForMaterial(materialId).Result; + if (!result.IsSuccess) + return ""; + return result.Data == null ? "" : result.Data.BaseUnitNumber; + } + return mat.BaseUnitNumber; + } /// /// 获取组织名称 diff --git a/src/WMS.Web.Domain/Services/Public/ErpService.cs b/src/WMS.Web.Domain/Services/Public/ErpService.cs index a3bac4c3..65916b0d 100644 --- a/src/WMS.Web.Domain/Services/Public/ErpService.cs +++ b/src/WMS.Web.Domain/Services/Public/ErpService.cs @@ -803,7 +803,7 @@ namespace WMS.Web.Domain.Services.Public /// /// /// - public async Task> BillQueryForMaterial(int id) + public async Task> BillQueryForMaterial(int id) { //1.获取缓存中的物料数据; var cache_key = "erp_materials_list"; @@ -845,7 +845,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶物料:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.BD_MATERIAL.ToString()); - param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName"; + param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName,FBaseUnitId.FNumber"; param.Limit = 10000; //查询条件:备注其中的条件值以金蝶的值为准!!! @@ -885,6 +885,7 @@ namespace WMS.Web.Domain.Services.Public lis.Specifications = item[3]; lis.BaseUnitId = Convert.ToInt32(item[4]); lis.BaseUnitName = item[5]; + lis.BaseUnitNumber = item[6]; erp_materials_list.Add(lis); } //4.6页面的叠加 @@ -913,7 +914,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶物料:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.BD_MATERIAL.ToString()); - param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName"; + param.FieldKeys = "FMATERIALID,FName,FNumber,FSpecification,FBaseUnitId,FBaseUnitId.FName,FBaseUnitId.FNumber"; param.Limit = 10000; //查询条件:备注其中的条件值以金蝶的值为准!!! @@ -947,6 +948,7 @@ namespace WMS.Web.Domain.Services.Public lis.Specifications = item[3]; lis.BaseUnitId = Convert.ToInt32(item[4]); lis.BaseUnitName = item[5]; + lis.BaseUnitNumber = item[6]; erp_materials_list.Add(lis); } if (erp_materials_list.Count == 0) @@ -1191,7 +1193,7 @@ namespace WMS.Web.Domain.Services.Public //3.获取金蝶仓库:拼接参数和条件 var query = new ErpBillQueryDto(token_result.Data); var param = new ErpBillQueryParamDto(FormIdParam.BD_STOCK.ToString()); - param.FieldKeys = "FStockId,FName,FNumber,FUseOrgId"; + param.FieldKeys = "FStockId,FName,FNumber,FUseOrgId,FUseOrgId.FNumber"; param.Limit = 10000; //查询条件:备注其中的条件值以金蝶的值为准!!! param.FilterString = ""; @@ -1213,6 +1215,7 @@ namespace WMS.Web.Domain.Services.Public lis.Name = item[1]; lis.Code = item[2]; lis.OrgId = Convert.ToInt32(item[3]); + lis.OrgCode = item[4]; list.Add(lis); } @@ -1273,8 +1276,9 @@ namespace WMS.Web.Domain.Services.Public list.Add(lis); } - //5.供应商集合进行缓存 - _memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); + //5.供应商集合进行缓存 只有查询全部的时候才缓存 + if (code == null) + _memoryCache.Set(cache_key, list, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(12))); _logger.LogInformation($"子仓库拉取-总条数:{list.Count}"); return ResultList.ReSuccess(list); } @@ -1303,23 +1307,22 @@ namespace WMS.Web.Domain.Services.Public var token_result = await this.Init(); if (!token_result.IsSuccess) return Result.ReFailure(token_result.Message, token_result.Status); - var query = new ErpBillQueryDto(token_result.Data); + var query = new ErpBillQueryDto(token_result.Data, formId); var param = new ErpSave(formId, dto); query.Data = JsonConvert.SerializeObject(param); //保存 var result_json = await _client.SaveAsync(JsonConvert.SerializeObject(query)); JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); - var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") { //保存成功后返回Id 后续操作根据Id操作 - string id = jobject["Result"]["ResponseStatus"]["SuccessEntitys"]["Id"].ToString(); + string id = jobject["Result"]["ResponseStatus"]["SuccessEntitys"][0]["Id"].ToString(); return Result.ReSuccess(id); } - var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString(); return Result.ReFailure(msg, 10002); } catch (Exception ex) @@ -1340,18 +1343,17 @@ namespace WMS.Web.Domain.Services.Public var token_result = await this.Init(); if (!token_result.IsSuccess) return token_result; - var query = new ErpBillQueryDto(token_result.Data); + var query = new ErpBillQueryDto(token_result.Data, formId); //提交 query.Data = JsonConvert.SerializeObject(dto); var result_json = await _client.SubmitAsync(JsonConvert.SerializeObject(query)); JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); - var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") return Result.ReSuccess(); - var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString(); return Result.ReFailure(msg, 10002); } catch (Exception ex) @@ -1372,18 +1374,17 @@ namespace WMS.Web.Domain.Services.Public var token_result = await this.Init(); if (!token_result.IsSuccess) return token_result; - var query = new ErpBillQueryDto(token_result.Data); + var query = new ErpBillQueryDto(token_result.Data, formId); //提交 query.Data = JsonConvert.SerializeObject(dto); var result_json = await _client.AuditAsync(JsonConvert.SerializeObject(query)); JObject jobject = (JObject)JsonConvert.DeserializeObject(result_json); - var isSuccess = jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower(); if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") return Result.ReSuccess(); - var msg = jobject["Result"]["ResponseStatus"]["Errors"]["Message"].ToString(); + var msg = jobject["Result"]["ResponseStatus"]["Errors"][0]["Message"].ToString(); return Result.ReFailure(msg, 10002); } catch (Exception ex) diff --git a/src/WMS.Web.Domain/Services/TakeStockService.cs b/src/WMS.Web.Domain/Services/TakeStockService.cs index d5de94a4..7ecf41e2 100644 --- a/src/WMS.Web.Domain/Services/TakeStockService.cs +++ b/src/WMS.Web.Domain/Services/TakeStockService.cs @@ -76,13 +76,13 @@ namespace WMS.Web.Domain.Services IDbContextTransaction _transaction = _transactionRepositories.GetTransaction(); Result res_Rollback = Result.ReSuccess(); bool isSuccess = true; - + if (res_Rollback.IsSuccess) { isSuccess = await _takeStockRepositories.AddRange(list, false); if (!isSuccess) res_Rollback = Result.ReFailure(ResultCodes.DateWriteError); } - if(res_Rollback.IsSuccess) + if (res_Rollback.IsSuccess) { var res_Inventory = await _boxInventoryService.GenerateTakeBox(list, false); if (!res_Inventory.IsSuccess) res_Rollback = res_Inventory; @@ -127,32 +127,35 @@ namespace WMS.Web.Domain.Services var subStockCode = _singleDataService.GetSingleDataCode(SingleAction.Stocks, _loginRepositories.CompanyId, entity.SubStockId); var materials_result = await _erpService.BillQueryForMaterial(); var materials = materials_result.Data.ToList(); - var unitId = _erpBasicDataExtendService.GetMaterialUnitId(materials,entity.MaterialId); + var unitNumber = _erpBasicDataExtendService.GetMaterialUnitNumber(materials, entity.MaterialId); var res = await _erpService.BillQueryForStock(); + var resSub = await _erpService.BillQueryForSubStock(); var stock = res.Data.FirstOrDefault(f => f.Code == entity.StockCode);//需要根据单点code搜索 - var subStock = res.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索 - if (stock == null || subStock == null) return Result.ReFailure(ResultCodes.ErpStockNoData); + var subStock = resSub.Data.FirstOrDefault(f => f.Code == subStockCode);//需要根据单点code搜索 + if (stock == null) return Result.ReFailure(ResultCodes.ErpStockNoData); //组装dto #region 组装dto + //子仓库 ORICO_JD:1000008 GD:1000005 HD:1000007 AD:1000004 List detils = new List(); detils.Add(new ErpTakeStockDetailsSaveDto() { - FOwnerid = stock.OrgId.ToString(), - FKeeperId = stock.OrgId.ToString(), - MaterialId = entity.MaterialId.ToString(), - UnitId = unitId.ToString(), //物料带出来 - StockId = stock.Id.ToString(), - SubStockId = subStock.Id.ToString(), + FOwnerid = new ErpNumberDto(stock.OrgCode.ToString()), + FKeeperId = new ErpNumberDto(stock.OrgCode.ToString()), + MaterialId = new ErpNumberDto(_erpBasicDataExtendService.GetMaterialNumber(materials, entity.MaterialId)), + UnitId = new ErpNumberDto(unitNumber), //物料带出来 + StockId = new ErpNumberDto(stock.Code), + SubStockId = new ErpSubStockDto(stock.Code, resSub.Data.FirstOrDefault(f => f.Id == entity.Erp_SubStockId)?.Code), BeforeQty = entity.BeforeQty, AfterQty = entity.AfterQty, - FinalQty = entity.FinalQty, - Fnote = "" + FinalQty = entity.ResultType == TakeStockType.Profit ? entity.FinalQty : 0, + LossQty = entity.ResultType == TakeStockType.Loss ? entity.FinalQty : 0, + Fnote = entity.ResultType == TakeStockType.Loss ? "wms盘亏单同步" : "wms盘盈单同步" }); ErpTakeStockSaveDto dto = new ErpTakeStockSaveDto() { BillNo = entity.BillNo, - StockOrgId = stock.OrgId.ToString(), - Type = entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS", + StockOrgId = new ErpNumberDto(stock.OrgCode), + Type = new ErpNumberDto(entity.ResultType == TakeStockType.Loss ? "PK01_SYS" : "PY01_SYS"), Date = entity.Date, Details = detils }; @@ -161,7 +164,7 @@ namespace WMS.Web.Domain.Services FormIdParam type = entity.ResultType == TakeStockType.Loss ? FormIdParam.STK_StockCountLoss : FormIdParam.STK_StockCountGain; //操作金蝶 var resSync = await ErpOperate(dto, type); - entity.Sync(resSync.result.IsSuccess, resSync.result.Message,resSync.syncStatus); + entity.Sync(resSync.result.IsSuccess, resSync.result.Message, resSync.syncStatus, resSync.erpId); await _takeStockRepositories.Edit(entity, true); return res; } @@ -171,15 +174,19 @@ namespace WMS.Web.Domain.Services /// /// /// - private async Task<(Result result,SyncStatus syncStatus)> ErpOperate(ErpTakeStockSaveDto dto, FormIdParam type) + private async Task<(Result result, SyncStatus syncStatus, string erpId)> ErpOperate(ErpTakeStockSaveDto dto, FormIdParam type) { string formId = type.ToString(); - _logger.LogInformation($"开始同步金蝶 单号:{dto.BillNo} 数据: {JsonConvert.SerializeObject(dto)}"); + _logger.LogInformation($"盘点单->开始同步金蝶 单号:{dto.BillNo} 数据: {JsonConvert.SerializeObject(dto)}"); var res_s = await _erpService.Save(dto, formId); if (!res_s.IsSuccess) - return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.Fail); + { + _logger.LogInformation($"盘点单->保存失败 单号:{dto.BillNo} 错误:{res_s.Message}"); + return (Result.ReFailure(res_s.Message, res_s.Status), SyncStatus.Fail, ""); + } //提交 - ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data); + _logger.LogInformation($"盘点单->保存成功 开始提交 单号:{dto.BillNo}"); + ErpOperateDto o_dto = new ErpOperateDto(formId, res_s.Data);//res_s.Data var res = await _erpService.Submit(o_dto, formId); if (!res.IsSuccess) { @@ -188,9 +195,11 @@ namespace WMS.Web.Domain.Services //var del_res = await _erpService.Delete(o_dto, formId); //if (!del_res.IsSuccess) // _logger.LogError($"盘盈盘亏同步金蝶 单号:{dto.BillNo} 提交失败原因: {res.Message} 删单失败原因:{del_res.Message}"); - return (res, SyncStatus.PortionSuccess); + _logger.LogInformation($"盘点单->提交失败 单号:{dto.BillNo} 错误:{res.Message}"); + return (res, SyncStatus.SubmitFail, o_dto.Ids); } //审核 + _logger.LogInformation($"盘点单->提交成功 开始审核 单号:{dto.BillNo}"); res = await _erpService.Audit(o_dto, formId); if (!res.IsSuccess) { @@ -207,10 +216,11 @@ namespace WMS.Web.Domain.Services //var del_res = await _erpService.Delete(o_dto, formId); //if (!del_res.IsSuccess) // _logger.LogError($"盘盈盘亏同步金蝶 单号:{dto.BillNo} 审核失败原因: {res.Message} 删单失败原因:{del_res.Message}"); - return (res, SyncStatus.PortionSuccess); + _logger.LogInformation($"盘点单->审核失败 单号:{dto.BillNo} 错误:{res.Message}"); + return (res, SyncStatus.CheckFail, o_dto.Ids); } _logger.LogInformation($"同步金蝶成功"); - return (Result.ReSuccess(),SyncStatus.Success); + return (Result.ReSuccess(), SyncStatus.Success, o_dto.Ids); } } } diff --git a/src/WMS.Web.Domain/Values/SyncStatus.cs b/src/WMS.Web.Domain/Values/SyncStatus.cs index ced02c2c..91379454 100644 --- a/src/WMS.Web.Domain/Values/SyncStatus.cs +++ b/src/WMS.Web.Domain/Values/SyncStatus.cs @@ -11,7 +11,7 @@ namespace WMS.Web.Domain.Values public enum SyncStatus { /// - /// 失败 + /// 失败(保存失败 未保存) /// [EnumRemark("失败")] Fail =0, @@ -21,9 +21,14 @@ namespace WMS.Web.Domain.Values [EnumRemark("成功")] Success =1, /// - /// 部分成功(数据保存成功,提交或者审核失败) + /// 提交失败 /// - [EnumRemark("部分成功")] - PortionSuccess =2 + [EnumRemark("提交失败")] + SubmitFail = 2, + /// + /// 审核失败 + /// + [EnumRemark("审核失败")] + CheckFail = 3 } }