From 1dc51107f57d3b6df6830ed35801785ea4a2d156 Mon Sep 17 00:00:00 2001 From: zhou keda <1315948824@qq.com> Date: Mon, 23 Sep 2024 15:07:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=8B=E5=8D=B3=E8=B0=83=E7=94=A8erp?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=20=E4=BB=BB=E5=8A=A1=E5=8D=95=E6=89=B9?= =?UTF-8?q?=E6=AC=A1=E7=94=9F=E6=88=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Consts/FactoryConfigConst.cs | 15 + .../IThirdApiRecordService.cs | 16 + .../Tnb.BasicData/ThirdApiRecordService.cs | 357 ++++++++++-------- .../Entity/PrdMoTask.cs | 15 + .../Tnb.ProductionMgr/PrdMoTaskService.cs | 112 +++++- .../Tnb.ProductionMgr/TimeWorkService.cs | 174 +-------- .../Tnb.WarehouseMgr/WareHouseService.cs | 10 +- .../WmsMaterialSignHService.cs | 17 + .../WmsMaterialTransferService.cs | 14 + .../Tnb.WarehouseMgr/WmsPrdInstockHService.cs | 13 +- .../Tnb.WarehouseMgr/WmsPurchaseDService.cs | 9 + .../Tnb.WarehouseMgr/WmsPurchaseService.cs | 8 + .../WmsRawmatOutstockService.cs | 9 + .../WmsRawmatTransferinstockService.cs | 10 +- .../WmsSterilizationInstockHService.cs | 9 + .../WmsTransferInstockService.cs | 10 +- 16 files changed, 452 insertions(+), 346 deletions(-) create mode 100644 BasicData/Tnb.BasicData.Interfaces/IThirdApiRecordService.cs diff --git a/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs b/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs index aaa43e9b..6f743894 100644 --- a/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs +++ b/BasicData/Tnb.BasicData.Entities/Consts/FactoryConfigConst.cs @@ -34,5 +34,20 @@ namespace Tnb.BasicData /// 白班夜班时间 /// public const string DAYNIGHTWORKTIME = "dayNightWorkTime"; + + /// + /// 是否立刻调用erp接口 + /// + public const string CALLERP = "callErp"; + + /// + /// 换批号数量 + /// + public const string CHANGEBATCHNUM = "changeBatchNum"; + + /// + /// 换批号天数 + /// + public const string CHANGEBATCHDAY = "changeBatchDay"; } } \ No newline at end of file diff --git a/BasicData/Tnb.BasicData.Interfaces/IThirdApiRecordService.cs b/BasicData/Tnb.BasicData.Interfaces/IThirdApiRecordService.cs new file mode 100644 index 00000000..1940089d --- /dev/null +++ b/BasicData/Tnb.BasicData.Interfaces/IThirdApiRecordService.cs @@ -0,0 +1,16 @@ +using SqlSugar; +using Tnb.BasicData.Entities; + +namespace Tnb.BasicData.Interfaces +{ + public interface IThirdApiRecordService + { + /// + /// 请求erp + /// + /// + /// 手动 自动 + /// + Task Send(List records, string send_type,ISqlSugarClient db=null); + } +} \ No newline at end of file diff --git a/BasicData/Tnb.BasicData/ThirdApiRecordService.cs b/BasicData/Tnb.BasicData/ThirdApiRecordService.cs index 4a8884bf..6b80dee3 100644 --- a/BasicData/Tnb.BasicData/ThirdApiRecordService.cs +++ b/BasicData/Tnb.BasicData/ThirdApiRecordService.cs @@ -11,11 +11,13 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; using Newtonsoft.Json.Linq; +using NPOI.Util; using SqlSugar; using Tnb.BasicData.Entities; using Tnb.WarehouseMgr.Entities; using Tnb.BasicData.Entities.Dto; using Tnb.ProductionMgr.Entities; +using Tnb.BasicData.Interfaces; namespace Tnb.BasicData { @@ -24,7 +26,7 @@ namespace Tnb.BasicData /// [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [Route("api/[area]/[controller]/[action]")] - public class ThirdApiRecordService : IDynamicApiController, ITransient + public class ThirdApiRecordService : IThirdApiRecordService, IDynamicApiController, ITransient { private readonly ISqlSugarRepository _repository; private readonly IUserManager _userManager; @@ -41,171 +43,8 @@ namespace Tnb.BasicData [HttpGet] public async Task Send(string id) { - var db = _repository.AsSugarClient(); - string response = ""; ThirdWebapiRecord record = await _repository.GetSingleAsync(x=>x.id==id); - DateTime now = DateTime.Now; - Stopwatch 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(); - var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; - ThirdResult thirdResult = new ThirdResult(); - try - { - if (response != null && !response.IsEmpty()) - { - thirdResult = JsonConvert.DeserializeObject(response); - } - else - { - thirdResult.Code = 500; - } - } - catch (Exception e) - { - thirdResult.Code = 500; - thirdResult.msgResult = response; - } - - try - { - await db.Ado.BeginTranAsync(); - 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)}"); - } - } - - if (thirdResult.Code == 200 && record.third_name == "BIP" && record.name == "生产报告") - { - Dictionary requestData = JsonConvert.DeserializeObject>(record.request_data); - - string reportId = requestData.ContainsKey("report_id") ? requestData["report_id"].ToString() : ""; - if (string.IsNullOrEmpty(reportId)) - { - Log.Error($"请求记录id{record.id}生产报告提报id为空"); - } - - JObject data = (JObject)thirdResult.msg; - JToken children = data.SelectToken("children")[0]; - var responsetDtos = children.Select(x => new ErpReportDto() - { - // pk_wr_product = x["valueIndex"]["pk_wr_product"].ToString(), - // pk_wr_product = x["qualityvos"][0]["pk_wr_product_q"].ToString(), - pk_wr_product = x["qualityvos"][0]["valueIndex"]["pk_wr_quality"].ToString(), - pk_wr = x["valueIndex"]["pk_wr"].ToString(), - report_id = reportId - }).ToList(); - - int updateRow = 0; - foreach (var item in responsetDtos) - { - if (!string.IsNullOrEmpty(item.pk_wr) && !string.IsNullOrEmpty(item.pk_wr_product)) - { - updateRow += await db.Updateable() - .SetColumns(x => x.erp_pk_wr == item.pk_wr) - .SetColumns(x => x.erp_pk_wr_product == item.pk_wr_product) - .Where(x => x.id == item.report_id) - .ExecuteCommandAsync(); - } - } - - - if (updateRow <= 0) - { - Log.Error($"请求记录{record.id}更新失败"); - } - } - - await db.Ado.CommitTranAsync(); - } - catch (Exception e) - { - Log.Error(e.Message,e); - await db.Ado.RollbackTranAsync(); - } - - - return thirdResult.Code == 200 ? "成功" : "失败"; + return await Send(Arrays.AsList(record), "手动"); } [HttpGet] @@ -248,6 +87,194 @@ namespace Tnb.BasicData return "失败"; } + + public async Task Send(List records, string send_type,ISqlSugarClient db=null) + { + ThirdResult thirdResult = null; + bool tranFlag = true; + try + { + if (records == null || records.IsEmpty()) + return ""; + + if (db == null) + { + db = _repository.AsSugarClient(); + } + else + { + tranFlag = false; + } + + DateTime now = DateTime.Now; + Stopwatch stopwatch = null; + string response = ""; + var elapsedMilliseconds = 0l; + foreach (var record in records) + { + 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; + thirdResult = new ThirdResult(); + try + { + if (response != null && !response.IsEmpty()) + { + thirdResult = JsonConvert.DeserializeObject(response); + } + else + { + thirdResult.Code = 500; + } + } + catch (Exception e) + { + thirdResult.Code = 500; + thirdResult.msgResult = response; + } + + + if(db==null) await db.Ado.BeginTranAsync(); + 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 == 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)}"); + } + } + + if (thirdResult.Code == 200 && record.third_name == "BIP" && record.name == "生产报告") + { + Dictionary requestData = JsonConvert.DeserializeObject>(record.request_data); + + string reportId = requestData.ContainsKey("report_id") ? requestData["report_id"].ToString() : ""; + if (string.IsNullOrEmpty(reportId)) + { + Log.Error($"请求记录id{record.id}生产报告提报id为空"); + } + + JObject data = (JObject)thirdResult.msg; + JToken children = data.SelectToken("children")[0]; + var responsetDtos = children.Select(x => new ErpReportDto() + { + // pk_wr_product = x["valueIndex"]["pk_wr_product"].ToString(), + // pk_wr_product = x["qualityvos"][0]["pk_wr_product_q"].ToString(), + pk_wr_product = x["qualityvos"][0]["valueIndex"]["pk_wr_quality"].ToString(), + pk_wr = x["valueIndex"]["pk_wr"].ToString(), + report_id = reportId + }).ToList(); + + int updateRow = 0; + foreach (var item in responsetDtos) + { + if (!string.IsNullOrEmpty(item.pk_wr) && !string.IsNullOrEmpty(item.pk_wr_product)) + { + updateRow += await db.Updateable() + .SetColumns(x => x.erp_pk_wr == item.pk_wr) + .SetColumns(x => x.erp_pk_wr_product == item.pk_wr_product) + .Where(x => x.id == item.report_id) + .ExecuteCommandAsync(); + } + } + + + if (updateRow <= 0) + { + Log.Error($"请求记录{record.id}更新失败"); + } + } + } + + if(tranFlag) await db.Ado.CommitTranAsync(); + } + catch (Exception e) + { + Log.Error(e.Message,e); + if(tranFlag) await db.Ado.RollbackTranAsync(); + } + + + return thirdResult.Code == 200 ? "成功" : "失败"; + } } } \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs index 471fda28..4c6b2d15 100644 --- a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTask.cs @@ -109,6 +109,11 @@ public partial class PrdMoTask : BaseEntity /// public DateTime? plan_end_date { get; set; } + /// + /// 第一次开工日期 + /// + public DateTime? first_start_date { get; set; } + /// /// 实际开工日期 /// @@ -245,4 +250,14 @@ public partial class PrdMoTask : BaseEntity /// 定时任务key /// public string timer_key { get; set; } + + /// + /// 按时间更换批次次数 + /// + public int change_batch_count_by_day { get; set; } = -1; + + /// + /// 按产量更换批次次数 + /// + public int change_batch_count_by_qty { get; set; } = -1; } diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index 7e574287..3bfb29ff 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -50,6 +50,7 @@ using Tnb.WarehouseMgr; using Tnb.WarehouseMgr.Entities.Enums; using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Helpers; +using Tnb.BasicData.Interfaces; // using Tnb.PerMgr.Entities; @@ -83,6 +84,7 @@ namespace Tnb.ProductionMgr private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build(); private readonly RedisData _redisData; private static SemaphoreSlim prdreportSemaphore = new(1); + private readonly IThirdApiRecordService _thirdApiRecordService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public PrdMoTaskService( @@ -96,6 +98,7 @@ namespace Tnb.ProductionMgr IOrganizeService organizeService, WmsPrdInstockHService wmsPrdInstockHService, IVisualDevService visualDevService, + IThirdApiRecordService thirdApiRecordService, IQcCheckPlanService qcCheckPlanService ) { @@ -112,6 +115,7 @@ namespace Tnb.ProductionMgr _prdInstockService = prdInstockService; _qcCheckPlanService = qcCheckPlanService; _wmsCarryService = wmsCarryService; + _thirdApiRecordService = thirdApiRecordService; _wmsPrdInstockHService = wmsPrdInstockHService; } @@ -1288,6 +1292,11 @@ namespace Tnb.ProductionMgr { throw Oops.Bah("状态错误无法开始"); } + + if (item.first_start_date == null) + { + item.first_start_date = DateTime.Now; + } break; case PrdTaskBehavior.Pause: if (item.mo_task_status == status) @@ -2032,19 +2041,82 @@ namespace Tnb.ProductionMgr string batch = ""; PrdMo mo = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.mo_id); + + bool changeBatchFlag = false; + int changeCountNumByDay = 0; + int changeCountNumByQty = 0; + if (mo.mo_type == DictConst.PrdMoTypeZS || mo.mo_type == DictConst.PrdMoTypeJC) + { + BasFactoryConfig changeBatchNum = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CHANGEBATCHNUM); + BasFactoryConfig changeBatchDay = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CHANGEBATCHDAY); + + DateTime date1 = new DateTime(prdMoTask.first_start_date.Value.Year,prdMoTask.first_start_date.Value.Month,prdMoTask.first_start_date.Value.Day); + DateTime date2 = new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day); + TimeSpan diff = date2.Subtract(date1); + int diffDays = diff.Days + 1; + + changeCountNumByDay = (diffDays + 1) / int.Parse(changeBatchDay.value) - 1; + changeCountNumByQty = ((int)(prdMoTask.reported_work_qty ?? 0 + prdMoTask.scrap_qty ?? 0) + 1) / int.Parse(changeBatchNum.value) - 1; + + if (changeCountNumByDay > prdMoTask.change_batch_count_by_day ) + { + changeBatchFlag = true; + } + + if (changeCountNumByQty > prdMoTask.change_batch_count_by_qty) + { + changeBatchFlag = true; + } + + } + if (mo.mo_type == DictConst.PrdMoTypeZS) { - EqpEquipment equipment = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); - batch = $"{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; + if (changeBatchFlag) + { + EqpEquipment equipment = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); + batch = $"{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; + await db.Updateable() + .SetColumns(x => x.batch == batch) + .SetColumns(x=>x.change_batch_count_by_day==changeCountNumByDay) + .SetColumns(x=>x.change_batch_count_by_qty==changeCountNumByQty) + .Where(x => x.id == prdMoTask.id) + .ExecuteCommandAsync(); + } + else + { + batch = prdMoTask.batch; + } + + }else if (mo.mo_type == DictConst.PrdMoTypeJC) { - EqpEquipment equipment = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); - ToolMolds toolMolds = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.mold_id); - batch = $"{toolMolds.mold_code.Substring(toolMolds.mold_code.Length - 2, 2)}{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; + if (changeBatchFlag) + { + EqpEquipment equipment = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.eqp_id); + ToolMolds toolMolds = await _db.Queryable().SingleAsync(x => x.id == prdMoTask.mold_id); + batch = $"{toolMolds.mold_code.Substring(toolMolds.mold_code.Length - 2, 2)}{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; + await db.Updateable() + .SetColumns(x => x.batch == batch) + .SetColumns(x=>x.change_batch_count_by_day==changeCountNumByDay) + .SetColumns(x=>x.change_batch_count_by_qty==changeCountNumByQty) + .Where(x => x.id == prdMoTask.id) + .ExecuteCommandAsync(); + } + else + { + batch = prdMoTask.batch; + } }else { - OrganizeEntity organizeEntity = await _db.Queryable().SingleAsync(x => x.Id == prdMoTask.workline_id); - batch = $"{organizeEntity.EnCode.Substring(organizeEntity.EnCode.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; + // OrganizeEntity organizeEntity = await _db.Queryable().SingleAsync(x => x.Id == prdMoTask.workline_id); + // batch = $"{organizeEntity.EnCode.Substring(organizeEntity.EnCode.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; + batch = prdMoTask.batch; + } + + if (string.IsNullOrEmpty(batch)) + { + throw Oops.Bah($"任务单{prdMoTask.mo_task_code}批次号为空,无法提报"); } if (prdMoTask.has_last_check == 0) @@ -2568,8 +2640,8 @@ namespace Tnb.ProductionMgr erpRequestData.Add("AggWrDtl", erpRequestDataDetails); requestData.Add(erpRequestData); - BasFactoryConfig config = await _db.Queryable() - .FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); + BasFactoryConfig config = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; @@ -2581,6 +2653,10 @@ namespace Tnb.ProductionMgr thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.remark = $"载具编号:{report?.material_box_code ?? ""}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } } @@ -4083,6 +4159,24 @@ namespace Tnb.ProductionMgr return row>0 ? "分配成功" : "分配失败"; } + /// + /// 设置批号 + /// + /// + /// + [HttpPost] + public async Task SetBatch(Dictionary input) + { + string ids = input.GetOrDefault("ids"); + string[] idList = ids.Split(","); + string batch = input.GetOrDefault("batch"); + int row = await _db.Updateable() + .SetColumns(x => x.batch == batch) + .Where(x => idList.Contains(x.id)) + .ExecuteCommandAsync(); + return row>0 ? "设置成功" : "设置失败"; + } + /// /// 末检 /// diff --git a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs index 42bd27a0..a0f4cd0e 100644 --- a/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/TimeWorkService.cs @@ -43,6 +43,7 @@ using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity.ErpEntity; using Tnb.BasicData.Entities.Dto; using Tnb.BasicData; +using Tnb.BasicData.Interfaces; using Tnb.PerMgr.Entities; namespace Tnb.ProductionMgr @@ -59,6 +60,7 @@ namespace Tnb.ProductionMgr private readonly IWmsEmptyOutstockService _wmsEmptyOutstockService; private readonly IWareHouseService _wareHouseService; private readonly IPrdMoTaskService _prdMoTaskService; + private readonly IThirdApiRecordService _thirdApiRecordService; public TimeWorkService( RedisData redisData, @@ -67,6 +69,7 @@ namespace Tnb.ProductionMgr IOrganizeService organizeService, IWmsEmptyOutstockService wmsEmptyOutstockService, IPrdMoTaskService prdMoTaskService, + IThirdApiRecordService thirdApiRecordService, IWareHouseService wareHouseService ) { @@ -77,6 +80,7 @@ namespace Tnb.ProductionMgr _billRullService = billRullService; _wmsEmptyOutstockService = wmsEmptyOutstockService; _wareHouseService = wareHouseService; + _thirdApiRecordService = thirdApiRecordService; _prdMoTaskService = prdMoTaskService; } @@ -718,178 +722,12 @@ namespace Tnb.ProductionMgr List records = await _db.Queryable().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1 && x.error_count<10).ToListAsync(); if (records.IsEmpty()) { - records = await _db.Queryable().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1).ToListAsync(); + records = await _db.Queryable().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1 && x.error_count<100).ToListAsync(); } if (records.IsEmpty()) return ""; - DateTime now = DateTime.Now; - Stopwatch stopwatch = null; - string response = ""; - var elapsedMilliseconds = 0l; - ThirdResult thirdResult = new ThirdResult(); - try - { - await _db.Ado.BeginTranAsync(); - foreach (var record in records) - { - 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 - { - if (response != null && !response.IsEmpty()) - { - thirdResult = JsonConvert.DeserializeObject(response); - } - else - { - thirdResult.Code = 500; - } - } - 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) - .SetColumns(x => x.error_count == x.error_count + 1) - .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)}"); - } - } - - if (thirdResult.Code == 200 && record.third_name == "BIP" && record.name == "生产报告") - { - Dictionary requestData = JsonConvert.DeserializeObject>(record.request_data); - - string reportId = requestData.ContainsKey("report_id") ? requestData["report_id"].ToString() : ""; - if (string.IsNullOrEmpty(reportId)) - { - Log.Error($"请求记录id{record.id}生产报告提报id为空"); - } - - JObject data = (JObject)thirdResult.msg; - JToken children = data.SelectToken("children")[0]; - var responsetDtos = children.Select(x => new ErpReportDto() - { - // pk_wr_product = x["valueIndex"]["pk_wr_product"].ToString(), - pk_wr_product = x["qualityvos"][0]["valueIndex"]["pk_wr_quality"].ToString(), - pk_wr = x["valueIndex"]["pk_wr"].ToString(), - report_id = reportId - }).ToList(); - - int updateRow = 0; - foreach (var item in responsetDtos) - { - if (!string.IsNullOrEmpty(item.pk_wr) && !string.IsNullOrEmpty(item.pk_wr_product)) - { - updateRow += await _db.Updateable() - .SetColumns(x => x.erp_pk_wr == item.pk_wr) - .SetColumns(x => x.erp_pk_wr_product == item.pk_wr_product) - .Where(x => x.id == item.report_id) - .ExecuteCommandAsync(); - } - } - - - if (updateRow <= 0) - { - Log.Error($"请求记录{record.id}更新失败"); - } - } - - } - await _db.Ado.CommitTranAsync(); - } - catch (Exception e) - { - Log.Error(e.Message,e); - await _db.Ado.RollbackTranAsync(); - } - + await _thirdApiRecordService.Send(records, "自动"); return "true"; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs index 08dfeab5..dbb2a4b1 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WareHouseService.cs @@ -60,6 +60,7 @@ using NPOI.SS.Format; using Aspose.Cells.Drawing; using SQLitePCL; using Tnb.BasicData.Entities.Entity; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -78,7 +79,7 @@ namespace Tnb.WarehouseMgr private readonly IWmsCarryUnbindService _wmsCarryUnbindService; private readonly IWmsOutinStockDetailService _wmsOutinStockDetailService; private static ISqlSugarClient db_agvElevatorTaskExceptionHandles; - + private readonly IThirdApiRecordService _thirdApiRecordService; @@ -156,6 +157,7 @@ namespace Tnb.WarehouseMgr IWmsCarryUnbindService wmsCarryUnbindService, IRunService runService, IVisualDevService visualDevService, + IThirdApiRecordService thirdApiRecordService, IWmsOutinStockDetailService wmsOutinStockDetailService //IConfiguration configuration ) : base(repository.AsSugarClient()) @@ -171,6 +173,7 @@ namespace Tnb.WarehouseMgr _wmsCarryUnbindService = wmsCarryUnbindService; _runService = runService; _visualDevService = visualDevService; + _thirdApiRecordService = thirdApiRecordService; _wmsOutinStockDetailService = wmsOutinStockDetailService; //_configuration = configuration; @@ -3323,6 +3326,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; await db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs index 71548d40..6700d380 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialSignHService.cs @@ -29,6 +29,7 @@ using Tnb.WarehouseMgr.Entities.Entity; using Tnb.WarehouseMgr.Interfaces; using Tnb.ProductionMgr.Entities.Entity; using Tnb.BasicData; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -47,6 +48,7 @@ namespace Tnb.WarehouseMgr private readonly IWmsCarryUnbindService _wmsCarryUnbindService; private readonly IWareHouseService _wareHouseService; private readonly IOtherOutstockHService _otherOutstockHService; + private readonly IThirdApiRecordService _thirdApiRecordService; public WmsMaterialSignHService( ISqlSugarRepository repository, IUserManager userManager, @@ -55,6 +57,7 @@ namespace Tnb.WarehouseMgr IVisualDevService visualDevService, IWmsPDAScanInStockService wmsPDAScanInStock, IWmsCarryUnbindService wmsCarryUnbindService, + IThirdApiRecordService thirdApiRecordService, IWareHouseService wareHouseService, IOtherOutstockHService otherOutstockHService) { @@ -66,6 +69,7 @@ namespace Tnb.WarehouseMgr _wmsPDAScanInStock = wmsPDAScanInStock; _wmsCarryUnbindService = wmsCarryUnbindService; _wareHouseService = wareHouseService; + _thirdApiRecordService = thirdApiRecordService; _otherOutstockHService = otherOutstockHService; } @@ -445,6 +449,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.remark = $"原材料调拨出库wms_rawmat_transferoutstock_h:{wmsRawmatTransferoutstockH.bill_code}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } break; } @@ -551,6 +560,10 @@ namespace Tnb.WarehouseMgr await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它出库单到erp成功"); + BasFactoryConfig callErp2 = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp2.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE || wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_QTCRK_CODE @@ -623,6 +636,10 @@ namespace Tnb.WarehouseMgr await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync(); Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它入库单到erp成功"); + + if(callErp2.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord2 }, "自动", _db); + } } break; } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs index 99473614..75d9e954 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsMaterialTransferService.cs @@ -44,6 +44,7 @@ using Tnb.BasicData; using Tnb.ProductionMgr.Entities.Entity; using Tnb.WarehouseMgr.Entities.Dto.Outputs; using System.Threading; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -65,6 +66,7 @@ namespace Tnb.WarehouseMgr private readonly IWmsCarryUnbindService _wmsCarryUnbindService; private readonly IOrganizeService _organizeService; private readonly IWmsCarryQueryService _wmsCarryQueryService; + private readonly IThirdApiRecordService _thirdApiRecordService; public static SemaphoreSlim s_taskDistributeToZCC = new(1); public static SemaphoreSlim s_taskDistributeYCL2ZCC = new(1); @@ -82,6 +84,7 @@ namespace Tnb.WarehouseMgr IWmsCarryUnbindService wmsCarryUnbindService, IOrganizeService organizeService, IWmsCarryQueryService wmsCarryQueryService, + IThirdApiRecordService thirdApiRecordService, IWmsCarryBindService wmsCarryBindService) { _db = repository.AsSugarClient(); @@ -94,6 +97,7 @@ namespace Tnb.WarehouseMgr _wmsCarryUnbindService = wmsCarryUnbindService; _organizeService = organizeService; _wmsCarryQueryService = wmsCarryQueryService; + _thirdApiRecordService = thirdApiRecordService; OverideFuncs.GetListAsync = GetList; } @@ -1165,6 +1169,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord2.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync(); + + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord2 }, "自动", _db); + } } // 其它出库 else @@ -1268,6 +1277,11 @@ namespace Tnb.WarehouseMgr await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它出库单到erp成功"); + + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs index 6d5a877d..b23a507e 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPrdInstockHService.cs @@ -31,6 +31,7 @@ using Tnb.WarehouseMgr.Entities.Entity; using Tnb.WarehouseMgr.Interfaces; using Tnb.ProductionMgr.Entities.Entity; using System.Threading; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -44,15 +45,20 @@ namespace Tnb.WarehouseMgr private readonly IVisualDevService _visualDevService; private readonly IWareHouseService _wareHouseService; private readonly IBillRullService _billRullService; + private readonly IThirdApiRecordService _thirdApiRecordService; public WmsPrdInstockHService(ISqlSugarRepository repository, IRunService runService, - IVisualDevService visualDevService, IWareHouseService wareHouseService, IBillRullService billRullService) + IVisualDevService visualDevService, + IWareHouseService wareHouseService, + IThirdApiRecordService thirdApiRecordService, + IBillRullService billRullService) { _db = repository.AsSugarClient(); _runService = runService; _visualDevService = visualDevService; _wareHouseService = wareHouseService; _billRullService = billRullService; + _thirdApiRecordService = thirdApiRecordService; } /// @@ -462,6 +468,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.remark = $"载具编号:{prdReport?.material_box_code ?? ""}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } + } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs index 1811cd88..639901b3 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseDService.cs @@ -24,6 +24,7 @@ using JNPF.Common.Dtos.VisualDev; using JNPF.Common.Extension; using JNPF.FriendlyException; using JNPF.VisualDev.Entitys; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -43,18 +44,21 @@ namespace Tnb.WarehouseMgr private readonly ISqlSugarClient _db; private readonly IUserManager _userManager; private readonly IDictionaryDataService _dictionaryDataService; + private readonly IThirdApiRecordService _thirdApiRecordService; public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public WmsPurchaseDService( ISqlSugarRepository repository, DataBaseManager dbManager, IUserManager userManager, + IThirdApiRecordService thirdApiRecordService, IDictionaryDataService dictionaryDataService) { _repository = repository; _db = repository.AsSugarClient(); _dbManager = dbManager; _userManager = userManager; + _thirdApiRecordService = thirdApiRecordService; _dictionaryDataService = dictionaryDataService; } @@ -257,6 +261,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.remark = "采购收货单号:" + (wmsPurchaseH?.bill_code ?? "")+ ",erp采购订单号:"+wmsPurchaseOrderH.erp_bill_code; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } await _db.Ado.CommitTranAsync(); } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs index 624e594f..a8dc5498 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsPurchaseService.cs @@ -37,6 +37,7 @@ using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Authorization; using JNPF.VisualDev.Interfaces; using JNPF.VisualDev.Entitys; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -52,8 +53,10 @@ namespace Tnb.WarehouseMgr private readonly IWareHouseService _wareHouseService; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; + private readonly IThirdApiRecordService _thirdApiRecordService; public WmsPurchaseService(ISqlSugarRepository repo, IUserManager userManager, IQcCheckPlanService qcCheckPlanService, IBillRullService billRullService, IWareHouseService wareHouseService, IRunService runService, + IThirdApiRecordService thirdApiRecordService, IVisualDevService visualDevService) : base(repo, userManager, qcCheckPlanService) { @@ -62,6 +65,7 @@ namespace Tnb.WarehouseMgr _billRullService = billRullService; _wareHouseService = wareHouseService; _runService = runService; + _thirdApiRecordService = thirdApiRecordService; _visualDevService = visualDevService; } @@ -283,6 +287,10 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.remark = $"erp采购订单:{wmsPurchaseOrderH.erp_bill_code}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } } //通知Mes接口 //_ = SyncMesData(instock.id, instockDs.Select(x => x.material_id).ToList(), EnumTriggerEvent.入厂检按物料编号); diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs index b7defbc5..014f8782 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatOutstockService.cs @@ -32,6 +32,7 @@ using Tnb.WarehouseMgr.Entities.Entity; using Tnb.WarehouseMgr.Interfaces; using Tnb.ProductionMgr.Entities.Entity; using Tnb.BasicData; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -50,6 +51,7 @@ namespace Tnb.WarehouseMgr private readonly IVisualDevService _visualDevService; private readonly IWmsPDAScanInStockService _wmsPDAScanInStock; private readonly IWareHouseService _wareHouseService; + private readonly IThirdApiRecordService _thirdApiRecordService; public WmsRawmatOutstockService( ISqlSugarRepository repository, IUserManager userManager, @@ -57,6 +59,7 @@ namespace Tnb.WarehouseMgr IRunService runService, IVisualDevService visualDevService, IWmsPDAScanInStockService wmsPDAScanInStock, + IThirdApiRecordService thirdApiRecordService, IWareHouseService wareHouseService) { _db = repository.AsSugarClient(); @@ -66,6 +69,7 @@ namespace Tnb.WarehouseMgr _visualDevService = visualDevService; _wmsPDAScanInStock = wmsPDAScanInStock; _wareHouseService = wareHouseService; + _thirdApiRecordService = thirdApiRecordService; OverideFuncs.GetDetailsAsync = GetDetailsAsync; } @@ -183,6 +187,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.create_time = DateTime.Now; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } + } [NonAction] diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferinstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferinstockService.cs index 9e4780a2..b1cdd60d 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferinstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsRawmatTransferinstockService.cs @@ -33,6 +33,7 @@ using Tnb.WarehouseMgr.Interfaces; using Tnb.BasicData; using Tnb.ProductionMgr.Entities.Entity; using Tnb.WarehouseMgr.Entities.Attributes; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -50,11 +51,13 @@ namespace Tnb.WarehouseMgr private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; private readonly IWareHouseService _wareHouseService; + private readonly IThirdApiRecordService _thirdApiRecordService; public WmsRawmatTransferinstockService( ISqlSugarRepository repository, IUserManager userManager, IBillRullService billRullService, IRunService runService, + IThirdApiRecordService thirdApiRecordService, IVisualDevService visualDevService, IWareHouseService wareHouseService) { @@ -62,6 +65,7 @@ namespace Tnb.WarehouseMgr _userManager = userManager; _billRullService = billRullService; _runService = runService; + _thirdApiRecordService = thirdApiRecordService; _visualDevService = visualDevService; _wareHouseService = wareHouseService; } @@ -195,9 +199,13 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.create_time = DateTime.Now; - thirdWebapiRecord.remark = "原材料调拨入库"; + thirdWebapiRecord.remark = $"原材料调拨入库wms_rawmat_transferinstock_h:{wmsRawmatTransferinstockH.bill_code}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); Logger.Information($"完成原材料调拨入库单上传BIP逻辑"); + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } } [HttpPost] diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs index 487ed96f..478e51bd 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsSterilizationInstockHService.cs @@ -23,6 +23,7 @@ using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Interfaces; using Tnb.ProductionMgr.Entities.Entity; using Tnb.BasicData; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -41,6 +42,7 @@ namespace Tnb.WarehouseMgr private readonly IWareHouseService _wareHouseService; private readonly IBillRullService _billRullService; private readonly IUserManager _userManager; + private readonly IThirdApiRecordService _thirdApiRecordService; public WmsSterilizationInstockHService( ISqlSugarRepository repository, @@ -49,6 +51,7 @@ namespace Tnb.WarehouseMgr IWareHouseService wareHouseService, IUserManager userManager, IBillRullService billRullService, + IThirdApiRecordService thirdApiRecordService, IEventPublisher publisher) { _db = repository.AsSugarClient(); @@ -57,6 +60,7 @@ namespace Tnb.WarehouseMgr _wareHouseService = wareHouseService; _userManager = userManager; _billRullService = billRullService; + _thirdApiRecordService = thirdApiRecordService; } @@ -200,6 +204,11 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData); thirdWebapiRecord.create_time = DateTime.Now; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } } } diff --git a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferInstockService.cs b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferInstockService.cs index 583f624d..584843cc 100644 --- a/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferInstockService.cs +++ b/WarehouseMgr/Tnb.WarehouseMgr/WmsTransferInstockService.cs @@ -29,6 +29,7 @@ using Tnb.WarehouseMgr.Entities.Entity; using Tnb.WarehouseMgr.Interfaces; using Tnb.BasicData; using Tnb.ProductionMgr.Entities.Entity; +using Tnb.BasicData.Interfaces; namespace Tnb.WarehouseMgr { @@ -46,12 +47,14 @@ namespace Tnb.WarehouseMgr private readonly IBillRullService _billRullService; private readonly IRunService _runService; private readonly IVisualDevService _visualDevService; + private readonly IThirdApiRecordService _thirdApiRecordService; private readonly IWmsPDAScanInStockService _wmsPDAScanInStock; public WmsTransferInstockService( ISqlSugarRepository repository, IUserManager userManager, IBillRullService billRullService, IRunService runService, + IThirdApiRecordService thirdApiRecordService, IVisualDevService visualDevService, IWmsPDAScanInStockService wmsPDAScanInStock) { @@ -59,6 +62,7 @@ namespace Tnb.WarehouseMgr _userManager = userManager; _billRullService = billRullService; _runService = runService; + _thirdApiRecordService = thirdApiRecordService; _visualDevService = visualDevService; _wmsPDAScanInStock = wmsPDAScanInStock; } @@ -183,8 +187,12 @@ namespace Tnb.WarehouseMgr thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save"; thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.create_time = DateTime.Now; - thirdWebapiRecord.remark = "成品调拨入库"; + thirdWebapiRecord.remark = $"成品调拨入库wms_transfer_instock_h:{wmsTransferInstockH.bill_code}"; await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); + BasFactoryConfig callErp = await _db.Queryable().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP); + if(callErp.value=="1"){ + await _thirdApiRecordService.Send(new List { thirdWebapiRecord }, "自动", _db); + } Logger.Information($"完成成品调拨入库单上传BIP逻辑"); } }