diff --git a/BasicData/Tnb.BasicData.Entities/Dto/ErpPurchaseDto.cs b/BasicData/Tnb.BasicData.Entities/Dto/ErpPurchaseDto.cs new file mode 100644 index 00000000..afbc9a36 --- /dev/null +++ b/BasicData/Tnb.BasicData.Entities/Dto/ErpPurchaseDto.cs @@ -0,0 +1,10 @@ +namespace Tnb.BasicData.Entities.Dto +{ + public class ErpPurchaseDto + { + public string pk_arriveorder { get; set; } + public string pk_arriveorder_b { get; set; } + public string csourcebid { get; set; } + public string mes_detail_id { get; set; } + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/ThirdApiRecordService.cs b/BasicData/Tnb.BasicData/ThirdApiRecordService.cs index f8ab798f..cd4d533d 100644 --- a/BasicData/Tnb.BasicData/ThirdApiRecordService.cs +++ b/BasicData/Tnb.BasicData/ThirdApiRecordService.cs @@ -14,6 +14,7 @@ using Newtonsoft.Json.Linq; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; +using Tnb.BasicData.Entities.Dto; namespace Tnb.BasicData { @@ -207,11 +208,4 @@ namespace Tnb.BasicData } } - public class ErpPurchaseDto - { - public string pk_arriveorder { get; set; } - public string pk_arriveorder_b { get; set; } - public string csourcebid { get; set; } - public string mes_detail_id { get; set; } - } } \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs index 3dd6bc62..b01f349d 100644 --- a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs @@ -20,6 +20,7 @@ using JNPF.Systems.Interfaces.System; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; +using Newtonsoft.Json.Linq; using SQLitePCL; using SqlSugar; using SqlSugar.Extensions; @@ -39,6 +40,7 @@ using Tnb.ProductionMgr.Interfaces; using Tnb.ProductionMgr.Entities.Dto.PrdManage; using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity.ErpEntity; +using Tnb.BasicData.Entities.Dto; namespace Tnb.ProductionMgr { @@ -716,56 +718,120 @@ namespace Tnb.ProductionMgr string response = ""; var elapsedMilliseconds = 0l; ThirdResult thirdResult = new ThirdResult(); - foreach (var record in records) + try { - now = DateTime.Now; - stopwatch = Stopwatch.StartNew(); - switch (record.method.ToUpper()) + await _db.Ado.BeginTranAsync(); + foreach (var record in records) { - case "GET": - response = HttpUtils.RequestGet(record.url); - break; - case "POST": - response = HttpUtils.RequestPost(record.url, record.request_data); - break; + now = DateTime.Now; + stopwatch = Stopwatch.StartNew(); + switch (record.method.ToUpper()) + { + case "GET": + response = HttpUtils.RequestGet(record.url); + break; + case "POST": + response = HttpUtils.RequestPost(record.url, record.request_data); + break; + } + + stopwatch.Stop(); + elapsedMilliseconds = stopwatch.ElapsedMilliseconds; + try + { + thirdResult = JsonConvert.DeserializeObject(response); + } + catch (Exception e) + { + thirdResult.Code = 500; + thirdResult.msgResult = response; + } + + if (thirdResult.Code == 200) + { + await _db.Updateable() + .SetColumns(x => x.response_data == response) + .SetColumns(x => x.response_code == thirdResult.Code) + .SetColumns(x => x.last_send_time == now) + .SetColumns(x => x.response_time == elapsedMilliseconds) + .SetColumns(x => x.send_type == "自动") + .SetColumns(x => x.status == 1) + .Where(x=>x.id==record.id) + .ExecuteCommandAsync(); + } + else + { + await _db.Updateable() + .SetColumns(x => x.response_data == response) + .SetColumns(x => x.response_code == thirdResult.Code) + .SetColumns(x => x.last_send_time == now) + .SetColumns(x => x.response_time == elapsedMilliseconds) + .Where(x=>x.id==record.id) + .ExecuteCommandAsync(); + } + + if (thirdResult.Code == 200 && record.third_name == "BIP" && record.name == "采购到货") + { + Dictionary requestData = JsonConvert.DeserializeObject>(record.request_data); + //((JObject)requestData[0]["dtls"]).SelectTokens("csourcebid") + + string billCode = requestData.ContainsKey("vbillcode") ? requestData["vbillcode"].ToString() : ""; + if (string.IsNullOrEmpty(billCode)) + { + Log.Error($"请求记录id{record.id}采购到货单号为空"); + } + var requestDtos = ((JArray)requestData["dtls"]).Select(x => new ErpPurchaseDto() + { + csourcebid = x["csourcebid"]?.ToString(), + mes_detail_id = x["mes_detail_id"]?.ToString(), + }).ToList(); + + JObject data = (JObject)thirdResult.msg; + JToken children = data.SelectToken("children")[0]; + var responsetDtos = children.Select(x => new ErpPurchaseDto() + { + pk_arriveorder = x["valueIndex"]["pk_arriveorder"].ToString(), + pk_arriveorder_b = x["valueIndex"]["pk_arriveorder_b"].ToString(), + csourcebid = x["valueIndex"]["csourcebid"].ToString() + }).ToList(); + + string pk_arriveorder = responsetDtos[0]?.pk_arriveorder ?? ""; + int updateDRow = 0; + bool flag = !string.IsNullOrEmpty(pk_arriveorder); + foreach (var item in requestDtos) + { + string pk_arriveorder_b = responsetDtos.Find(x => x.csourcebid == item.csourcebid)?.pk_arriveorder_b; + if (string.IsNullOrEmpty(pk_arriveorder_b)) + { + flag = true; + break; + } + updateDRow += await _db.Updateable() + .SetColumns(x => x.erp_arriveorder_b_pk == pk_arriveorder_b) + .Where(x => x.id == item.mes_detail_id) + .ExecuteCommandAsync(); + } + + int updateRow = await _db.Updateable() + .SetColumns(x => x.erp_arriveorder_pk == pk_arriveorder) + .Where(x => x.bill_code == billCode) + .ExecuteCommandAsync(); + + if (flag || updateRow <= 0 || updateDRow <= 0) + { + Log.Error($"更新失败,requestDtos:{JsonConvert.SerializeObject(requestDtos)},responsetDtos:{JsonConvert.SerializeObject(responsetDtos)}"); + } + } + } - - stopwatch.Stop(); - elapsedMilliseconds = stopwatch.ElapsedMilliseconds; - try - { - thirdResult = JsonConvert.DeserializeObject(response); - } - catch (Exception e) - { - thirdResult.Code = 500; - thirdResult.msgResult = response; - } - - if (thirdResult.Code == 200) - { - await _db.Updateable() - .SetColumns(x => x.response_data == response) - .SetColumns(x => x.response_code == thirdResult.Code) - .SetColumns(x => x.last_send_time == now) - .SetColumns(x => x.response_time == elapsedMilliseconds) - .SetColumns(x => x.send_type == "自动") - .SetColumns(x => x.status == 1) - .Where(x=>x.id==record.id) - .ExecuteCommandAsync(); - } - else - { - await _db.Updateable() - .SetColumns(x => x.response_data == response) - .SetColumns(x => x.response_code == thirdResult.Code) - .SetColumns(x => x.last_send_time == now) - .SetColumns(x => x.response_time == elapsedMilliseconds) - .Where(x=>x.id==record.id) - .ExecuteCommandAsync(); - } - + await _db.Ado.CommitTranAsync(); } + catch (Exception e) + { + Log.Error(e.Message,e); + await _db.Ado.RollbackTranAsync(); + } + return "true"; }