This commit is contained in:
tongfei
2023-12-08 15:36:40 +08:00
8 changed files with 116 additions and 66 deletions

View File

@@ -33,10 +33,11 @@ namespace WMS.Web.Api.Controllers
private readonly IBoxInventoryRepositories _boxInventoryRepositories; private readonly IBoxInventoryRepositories _boxInventoryRepositories;
private readonly ITakeStockService _takeStockService; private readonly ITakeStockService _takeStockService;
private readonly ITakeStockRepositories _takeStockRepositories; private readonly ITakeStockRepositories _takeStockRepositories;
private readonly IOutStockService _outStockService;
public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories, public TestController(IErpService erpService, IInStockTaskService inStockTaskService, IBoxInventoryRepositories boxInventoryRepositories,
IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService, IBasicsRepositories transactionRepositories, IOpsService opsService, IBoxService boxService,
IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService, IOutStockTaskRepositories outStockTaskRepositories, IOutStockTaskService outStockTaskService,
ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories) ITakeStockService takeStockService, ITakeStockRepositories takeStockRepositories, IOutStockService outStockService)
{ {
_boxInventoryRepositories = boxInventoryRepositories; _boxInventoryRepositories = boxInventoryRepositories;
this._erpService = erpService; this._erpService = erpService;
@@ -48,36 +49,40 @@ namespace WMS.Web.Api.Controllers
_outStockTaskService = outStockTaskService; _outStockTaskService = outStockTaskService;
_takeStockService = takeStockService; _takeStockService = takeStockService;
_takeStockRepositories = takeStockRepositories; _takeStockRepositories = takeStockRepositories;
_outStockService = outStockService;
} }
[HttpGet] [HttpGet]
[Route("hj")] [Route("hj")]
public async Task<string> TestHJ() public async Task<string> TestHJ()
{ {
OperateRequest dto = new OperateRequest();
dto.Ids.Add(65);
await _outStockService.Sync(dto, null);
// List<ErpCustomerDto> list = null; // List<ErpCustomerDto> list = null;
//var b= list.FirstOrDefault(f => f.Id == 123); //var b= list.FirstOrDefault(f => f.Id == 123);
//var entity=await _takeStockRepositories.GetEntityList(new List<int>() {2 }); //var entity=await _takeStockRepositories.GetEntityList(new List<int>() {2 });
//var r= await _takeStockService.Loss_Profit(entity.First()); //var r= await _takeStockService.Loss_Profit(entity.First());
//var list = await GetList(); //var list = await GetList();
var c = await _erpService.BillQueryForAssembledAppOutStock_Assembly(new List<string>() { "ZZCX003061" }, DateTime.Now.AddDays(-10)); //var c = await _erpService.BillQueryForAssembledAppOutStock_Assembly(new List<string>() { "ZZCX003061" }, DateTime.Now.AddDays(-10));
//var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List<string>() { "FHTZD8022232" }, DateTime.Now.AddDays(-10)); //var bc2 = await _erpService.BillQueryForDeliveryNoticeOutStock(new List<string>() { "FHTZD8022232" }, DateTime.Now.AddDays(-10));
//var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10)); //var bc = await _erpService.BillQueryForTransferOutOutStock(null, DateTime.Now.AddDays(-10));
//var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-1)); //var b=await _erpService.BillQueryForAssembledAppOutStock_Assembly(null, DateTime.Now.AddDays(-1));
// var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10)); // var b2 = await _erpService.BillQueryForAssembledAppOutStock_Dassembly(null, DateTime.Now.AddDays(-10));
//var b = await _outStockTaskService.Sync(new List<string>() { "FHTZD8022232" }); //var b = await _outStockTaskService.Sync(new List<string>() { "FHTZD8022232" });
//var result = await this._outStockTaskService.Sync(null); //var result = await this._outStockTaskService.Sync(null);
//var t=await _outStockTaskRepositories.Get(1); //var t=await _outStockTaskRepositories.Get(1);
// t.Details[0].Remark = "sdf"; // t.Details[0].Remark = "sdf";
// t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb"; // t.Details[0].ErpDetails[0].SaleBillNo = "sdfsfsbbbb";
// var s = await _outStockTaskRepositories.Edit(t); // var s = await _outStockTaskRepositories.Edit(t);
//await _boxService.Sync(list); //await _boxService.Sync(list);
//var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300)); //var res = await this._erpService.BillQueryForAssembledAppOutStock_Dassembly(null,DateTime.Now.AddDays(-300));
//var result= await this._erpService.BillQueryForPurchaseInStock(); //var result= await this._erpService.BillQueryForPurchaseInStock();
//var result = await this._erpService.BillQueryForOrg(); //var result = await this._erpService.BillQueryForOrg();
//var result = await this._erpService.BillQueryForMaterial(); //var result = await this._erpService.BillQueryForMaterial();
//if (!result.IsSuccess) //if (!result.IsSuccess)
// return ""; // return "";
//return JsonConvert.SerializeObject(result.Data); //return JsonConvert.SerializeObject(result.Data);
return ""; return "";
} }

View File

@@ -775,9 +775,15 @@
分录内码集合,逗号分隔(分录下推时必录) 注(按分录下推时,单据内码和编码不需要填,否则按整单下推) 分录内码集合,逗号分隔(分录下推时必录) 注(按分录下推时,单据内码和编码不需要填,否则按整单下推)
</summary> </summary>
</member> </member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpPushDto.Type"> <member name="P:WMS.Web.Core.Dto.Erp.ErpPushDto.TargetFormId">
<summary> <summary>
目标单据类型内码 目标单据类型
</summary>
</member>
<member name="P:WMS.Web.Core.Dto.Erp.ErpPushDto.IsEnableDefaultRule">
<summary>
是否启用默认转换规则布尔类型默认false非必录
开启后则不需要填 RuleId
</summary> </summary>
</member> </member>
<member name="T:WMS.Web.Core.Dto.Erp.ErpSave`1"> <member name="T:WMS.Web.Core.Dto.Erp.ErpSave`1">

View File

@@ -3928,6 +3928,12 @@
<param name="dto"></param> <param name="dto"></param>
<returns></returns> <returns></returns>
</member> </member>
<member name="M:WMS.Web.Domain.Services.OutStockService.SalOutStock(WMS.Web.Domain.Entitys.OutStock,WMS.Web.Core.Dto.Login.LoginInDto)">
<summary>
同步金蝶销售出库
</summary>
<returns></returns>
</member>
<member name="M:WMS.Web.Domain.Services.OutStockService.Push(WMS.Web.Core.Dto.Erp.ErpPushDto)"> <member name="M:WMS.Web.Domain.Services.OutStockService.Push(WMS.Web.Core.Dto.Erp.ErpPushDto)">
<summary> <summary>
下推 下推
@@ -4903,6 +4909,11 @@
客户 客户
</summary> </summary>
</member> </member>
<member name="F:WMS.Web.Domain.Values.Erp.FormIdParam.SAL_OUTSTOCK">
<summary>
销售出库单
</summary>
</member>
<member name="T:WMS.Web.Domain.Values.ExportStatus"> <member name="T:WMS.Web.Domain.Values.ExportStatus">
<summary> <summary>
文件导出状态 文件导出状态

View File

@@ -12,12 +12,12 @@ namespace WMS.Web.Core.Dto.Erp
{ {
public ErpPushDto() { } public ErpPushDto() { }
public ErpPushDto(string formId,string number,List<int> detailIds,string type) public ErpPushDto(string formId,string number,List<int> detailIds,string targetFormId)
{ {
this.FormId = formId; this.FormId = formId;
this.Numbers.Add(number); this.Numbers.Add(number);
this.DetailsId = detailIds.ToString(); this.DetailsId = detailIds.ToString();
this.Type = type; this.TargetFormId = targetFormId;
} }
/// <summary> /// <summary>
@@ -36,9 +36,16 @@ namespace WMS.Web.Core.Dto.Erp
[JsonProperty("EntryIds")] [JsonProperty("EntryIds")]
public string DetailsId { get; set; } public string DetailsId { get; set; }
/// <summary> /// <summary>
/// 目标单据类型内码 /// 目标单据类型
/// </summary> /// </summary>
[JsonProperty("TargetBillTypeId")] [JsonProperty("TargetFormId")]
public string Type { get; set; } public string TargetFormId { get; set; }
/// <summary>
/// 是否启用默认转换规则布尔类型默认false非必录
/// 开启后则不需要填 RuleId
/// </summary>
[JsonProperty("IsEnableDefaultRule")]
public bool IsEnableDefaultRule { get; set; } = true;
} }
} }

View File

@@ -140,7 +140,8 @@ namespace WMS.Web.Domain.Entitys
var erpd = this.Details.SelectMany(s => s.ErpDetails).Where(w => w.SourceBillNo.Equals(sourcBillNo)).ToList(); var erpd = this.Details.SelectMany(s => s.ErpDetails).Where(w => w.SourceBillNo.Equals(sourcBillNo)).ToList();
erpd.ForEach(f => f.SuccessSync = SyncStatus.Success); erpd.ForEach(f => f.SuccessSync = SyncStatus.Success);
//所有erp明细同步成功才是整个单据成功 //所有erp明细同步成功才是整个单据成功
if (this.Details.SelectMany(s => s.ErpDetails).Where(w => w.SuccessSync == SyncStatus.Success).Any()) var erpDetails = this.Details.SelectMany(s => s.ErpDetails);
if (erpDetails.Where(w => w.SuccessSync == SyncStatus.Success).Count()== erpDetails.Count())
{ {
this.SuccessSync = SyncStatus.Success; this.SuccessSync = SyncStatus.Success;
this.Remark = ""; this.Remark = "";

View File

@@ -77,7 +77,7 @@ namespace WMS.Web.Domain.Services
{ {
_logger.LogInformation($"出库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInfo.UserInfo.StaffId}"); _logger.LogInformation($"出库:{JsonConvert.SerializeObject(dto)} 操作人:{loginInfo.UserInfo.StaffId}");
var outStockTask = await _outStockTaskRepositories.Get(dto.TaskId); var outStockTask = await _outStockTaskRepositories.Get(dto.TaskId);
if(outStockTask==null) return Result.ReFailure(ResultCodes.OutStockTaskNoData); if (outStockTask == null) return Result.ReFailure(ResultCodes.OutStockTaskNoData);
if (outStockTask.Status == OutStockStatus.Already) if (outStockTask.Status == OutStockStatus.Already)
return Result.ReFailure(ResultCodes.OutStockTaskAlready); return Result.ReFailure(ResultCodes.OutStockTaskAlready);
if (outStockTask.Status == OutStockStatus.Repeal) if (outStockTask.Status == OutStockStatus.Repeal)
@@ -206,38 +206,47 @@ namespace WMS.Web.Domain.Services
var list = await _outStockRepositories.GetEntityList(dto.Ids); var list = await _outStockRepositories.GetEntityList(dto.Ids);
foreach (var entity in list) foreach (var entity in list)
{ {
if (entity.SuccessSync != SyncStatus.Fail) continue; await SalOutStock(entity, loginInfo);
List<string> failList = entity.Details.SelectMany(s => s.ErpDetails)
.Where(w => w.SuccessSync == SyncStatus.Fail).GroupBy(g => g.SourceBillNo)
.Select(s => s.Key).ToList();//同步失败的来源单号
//找到单据里需要同步的单据
var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key);
foreach (var s in failList)
{
var erp_details = entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.Erp_DetailId).ToList();
var erpDto = new ErpPushDto()
{
FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(),
Numbers = new List<string>() { s },
Type = "",
DetailsId = string.Join(",", erp_details)
};
//下推金蝶
var res = await this.Push(erpDto);
if (res.IsSuccess)
entity.SyncSuccess(s, loginInfo.UserInfo.StaffId);
else
entity.SyncFail(res.Message, loginInfo.UserInfo.StaffId, SyncStatus.Fail);
}
//entity.SuccessSync = entity.SuccessSyncFail.Count() > 0 ? false : true;
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
var isSuccess = await _outStockRepositories.Edit(entity, true);
if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
} }
return Result.ReSuccess(); return Result.ReSuccess();
} }
/// <summary>
/// 同步金蝶销售出库
/// </summary>
/// <returns></returns>
private async Task<Result> SalOutStock(OutStock entity, LoginInDto loginInfo)
{
if (entity.Type != OutStockType.Sal) return Result.ReSuccess();
if (entity.SuccessSync != SyncStatus.Fail) return Result.ReSuccess();
List<string> failList = entity.Details.SelectMany(s => s.ErpDetails)
.Where(w => w.SuccessSync == SyncStatus.Fail).GroupBy(g => g.SourceBillNo)
.Select(s => s.Key).ToList();//同步失败的来源单号
//找到单据里需要同步的单据
var sourcNos = entity.Details.SelectMany(s => s.ErpDetails).GroupBy(s => s.SourceBillNo).Select(s => s.Key);
foreach (var s in failList)
{
var erp_details = entity.Details.SelectMany(s => s.ErpDetails).Select(s => s.Erp_DetailId).ToList();
var erpDto = new ErpPushDto()
{
FormId = FormIdParam.SAL_DELIVERYNOTICE.ToString(),
Numbers = new List<string>() { s },
TargetFormId = FormIdParam.SAL_OUTSTOCK.ToString(),
DetailsId = string.Join(",", erp_details)
};
//下推金蝶
var res = await this.Push(erpDto);
if (res.IsSuccess)
entity.SyncSuccess(s, loginInfo.UserInfo.StaffId);
else
entity.SyncFail(res.Message, loginInfo.UserInfo.StaffId, SyncStatus.Fail);
}
//entity.SuccessSync = entity.SuccessSyncFail.Count() > 0 ? false : true;
//最好一条一条执行,否则执行失败 但是金蝶那边又同步成功 就会造成数据比价乱
var isSuccess = await _outStockRepositories.Edit(entity, true);
if (entity == null) return Result.ReFailure(ResultCodes.DateWriteError);
return Result.ReSuccess();
}
/// <summary> /// <summary>
/// 下推 /// 下推
/// </summary> /// </summary>

View File

@@ -1416,7 +1416,7 @@ namespace WMS.Web.Domain.Services.Public
if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true")
return Result.ReSuccess(); 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); return Result.ReFailure(msg, 10002);
} }
catch (Exception ex) catch (Exception ex)
@@ -1448,7 +1448,7 @@ namespace WMS.Web.Domain.Services.Public
if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true") if (jobject["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToLower() == "true")
return Result.ReSuccess(); 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); return Result.ReFailure(msg, 10002);
} }
catch (Exception ex) catch (Exception ex)
@@ -1466,12 +1466,19 @@ namespace WMS.Web.Domain.Services.Public
var token_result = await this.Init(); var token_result = await this.Init();
if (!token_result.IsSuccess) if (!token_result.IsSuccess)
return token_result; return token_result;
var query = new ErpBillQueryDto(token_result.Data); var query = new ErpBillQueryDto(token_result.Data, dto.FormId);
query.Data = JsonConvert.SerializeObject(dto); query.Data = JsonConvert.SerializeObject(dto);
//下推 //下推
var result_json = await _client.PushAsync(JsonConvert.SerializeObject(query)); var result_json = await _client.PushAsync(JsonConvert.SerializeObject(query));
return Result.ReSuccess(); 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"][0]["Message"].ToString();
return Result.ReFailure(msg, 10002);
} }
#endregion #endregion

View File

@@ -72,6 +72,10 @@ namespace WMS.Web.Domain.Values.Erp
/// <summary> /// <summary>
/// 客户 /// 客户
/// </summary> /// </summary>
BD_Customer=16 BD_Customer=16,
/// <summary>
/// 销售出库单
/// </summary>
SAL_OUTSTOCK=17
} }
} }