立即调用erp接口 任务单批次生成修改

This commit is contained in:
2024-09-23 15:07:00 +08:00
parent 1c04f0449f
commit 1dc51107f5
16 changed files with 452 additions and 346 deletions

View File

@@ -34,5 +34,20 @@ namespace Tnb.BasicData
/// 白班夜班时间 /// 白班夜班时间
/// </summary> /// </summary>
public const string DAYNIGHTWORKTIME = "dayNightWorkTime"; public const string DAYNIGHTWORKTIME = "dayNightWorkTime";
/// <summary>
/// 是否立刻调用erp接口
/// </summary>
public const string CALLERP = "callErp";
/// <summary>
/// 换批号数量
/// </summary>
public const string CHANGEBATCHNUM = "changeBatchNum";
/// <summary>
/// 换批号天数
/// </summary>
public const string CHANGEBATCHDAY = "changeBatchDay";
} }
} }

View File

@@ -0,0 +1,16 @@
using SqlSugar;
using Tnb.BasicData.Entities;
namespace Tnb.BasicData.Interfaces
{
public interface IThirdApiRecordService
{
/// <summary>
/// 请求erp
/// </summary>
/// <param name="id"></param>
/// <param name="send_type">手动 自动</param>
/// <returns></returns>
Task<string> Send(List<ThirdWebapiRecord> records, string send_type,ISqlSugarClient db=null);
}
}

View File

@@ -11,11 +11,13 @@ using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using NPOI.Util;
using SqlSugar; using SqlSugar;
using Tnb.BasicData.Entities; using Tnb.BasicData.Entities;
using Tnb.WarehouseMgr.Entities; using Tnb.WarehouseMgr.Entities;
using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Entities.Dto;
using Tnb.ProductionMgr.Entities; using Tnb.ProductionMgr.Entities;
using Tnb.BasicData.Interfaces;
namespace Tnb.BasicData namespace Tnb.BasicData
{ {
@@ -24,7 +26,7 @@ namespace Tnb.BasicData
/// </summary> /// </summary>
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)] [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
[Route("api/[area]/[controller]/[action]")] [Route("api/[area]/[controller]/[action]")]
public class ThirdApiRecordService : IDynamicApiController, ITransient public class ThirdApiRecordService : IThirdApiRecordService, IDynamicApiController, ITransient
{ {
private readonly ISqlSugarRepository<ThirdWebapiRecord> _repository; private readonly ISqlSugarRepository<ThirdWebapiRecord> _repository;
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
@@ -41,171 +43,8 @@ namespace Tnb.BasicData
[HttpGet] [HttpGet]
public async Task<string> Send(string id) public async Task<string> Send(string id)
{ {
var db = _repository.AsSugarClient();
string response = "";
ThirdWebapiRecord record = await _repository.GetSingleAsync(x=>x.id==id); ThirdWebapiRecord record = await _repository.GetSingleAsync(x=>x.id==id);
DateTime now = DateTime.Now; return await Send(Arrays.AsList(record), "手动");
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<ThirdResult>(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<ThirdWebapiRecord>()
.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<ThirdWebapiRecord>()
.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<string,object> requestData = JsonConvert.DeserializeObject<Dictionary<string,object>>(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<WmsPurchaseD>()
.SetColumns(x => x.erp_arriveorder_b_pk == pk_arriveorder_b)
.Where(x => x.id == item.mes_detail_id)
.ExecuteCommandAsync();
}
int updateRow = await db.Updateable<WmsPurchaseH>()
.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<string,object> requestData = JsonConvert.DeserializeObject<Dictionary<string,object>>(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<PrdReport>()
.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 ? "成功" : "失败";
} }
[HttpGet] [HttpGet]
@@ -248,6 +87,194 @@ namespace Tnb.BasicData
return "失败"; return "失败";
} }
public async Task<string> Send(List<ThirdWebapiRecord> 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<ThirdResult>(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<ThirdWebapiRecord>()
.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<ThirdWebapiRecord>()
.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<string,object> requestData = JsonConvert.DeserializeObject<Dictionary<string,object>>(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<WmsPurchaseD>()
.SetColumns(x => x.erp_arriveorder_b_pk == pk_arriveorder_b)
.Where(x => x.id == item.mes_detail_id)
.ExecuteCommandAsync();
}
int updateRow = await db.Updateable<WmsPurchaseH>()
.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<string,object> requestData = JsonConvert.DeserializeObject<Dictionary<string,object>>(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<PrdReport>()
.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 ? "成功" : "失败";
}
} }
} }

View File

@@ -109,6 +109,11 @@ public partial class PrdMoTask : BaseEntity<string>
/// </summary> /// </summary>
public DateTime? plan_end_date { get; set; } public DateTime? plan_end_date { get; set; }
/// <summary>
/// 第一次开工日期
/// </summary>
public DateTime? first_start_date { get; set; }
/// <summary> /// <summary>
/// 实际开工日期 /// 实际开工日期
/// </summary> /// </summary>
@@ -245,4 +250,14 @@ public partial class PrdMoTask : BaseEntity<string>
/// 定时任务key /// 定时任务key
/// </summary> /// </summary>
public string timer_key { get; set; } public string timer_key { get; set; }
/// <summary>
/// 按时间更换批次次数
/// </summary>
public int change_batch_count_by_day { get; set; } = -1;
/// <summary>
/// 按产量更换批次次数
/// </summary>
public int change_batch_count_by_qty { get; set; } = -1;
} }

View File

@@ -50,6 +50,7 @@ using Tnb.WarehouseMgr;
using Tnb.WarehouseMgr.Entities.Enums; using Tnb.WarehouseMgr.Entities.Enums;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.ProductionMgr.Helpers; using Tnb.ProductionMgr.Helpers;
using Tnb.BasicData.Interfaces;
// using Tnb.PerMgr.Entities; // using Tnb.PerMgr.Entities;
@@ -83,6 +84,7 @@ namespace Tnb.ProductionMgr
private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build<ElevatorControlConfiguration>(); private readonly ElevatorControlConfiguration _eleCtlCfg = App.Configuration.Build<ElevatorControlConfiguration>();
private readonly RedisData _redisData; private readonly RedisData _redisData;
private static SemaphoreSlim prdreportSemaphore = new(1); private static SemaphoreSlim prdreportSemaphore = new(1);
private readonly IThirdApiRecordService _thirdApiRecordService;
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
public PrdMoTaskService( public PrdMoTaskService(
@@ -96,6 +98,7 @@ namespace Tnb.ProductionMgr
IOrganizeService organizeService, IOrganizeService organizeService,
WmsPrdInstockHService wmsPrdInstockHService, WmsPrdInstockHService wmsPrdInstockHService,
IVisualDevService visualDevService, IVisualDevService visualDevService,
IThirdApiRecordService thirdApiRecordService,
IQcCheckPlanService qcCheckPlanService IQcCheckPlanService qcCheckPlanService
) )
{ {
@@ -112,6 +115,7 @@ namespace Tnb.ProductionMgr
_prdInstockService = prdInstockService; _prdInstockService = prdInstockService;
_qcCheckPlanService = qcCheckPlanService; _qcCheckPlanService = qcCheckPlanService;
_wmsCarryService = wmsCarryService; _wmsCarryService = wmsCarryService;
_thirdApiRecordService = thirdApiRecordService;
_wmsPrdInstockHService = wmsPrdInstockHService; _wmsPrdInstockHService = wmsPrdInstockHService;
} }
@@ -1288,6 +1292,11 @@ namespace Tnb.ProductionMgr
{ {
throw Oops.Bah("状态错误无法开始"); throw Oops.Bah("状态错误无法开始");
} }
if (item.first_start_date == null)
{
item.first_start_date = DateTime.Now;
}
break; break;
case PrdTaskBehavior.Pause: case PrdTaskBehavior.Pause:
if (item.mo_task_status == status) if (item.mo_task_status == status)
@@ -2032,19 +2041,82 @@ namespace Tnb.ProductionMgr
string batch = ""; string batch = "";
PrdMo mo = await _db.Queryable<PrdMo>().SingleAsync(x => x.id == prdMoTask.mo_id); PrdMo mo = await _db.Queryable<PrdMo>().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<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CHANGEBATCHNUM);
BasFactoryConfig changeBatchDay = await _db.Queryable<BasFactoryConfig>().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) if (mo.mo_type == DictConst.PrdMoTypeZS)
{ {
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id); if (changeBatchFlag)
batch = $"{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; {
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
batch = $"{equipment.code.Substring(equipment.code.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
await db.Updateable<PrdMoTask>()
.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) }else if (mo.mo_type == DictConst.PrdMoTypeJC)
{ {
EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id); if (changeBatchFlag)
ToolMolds toolMolds = await _db.Queryable<ToolMolds>().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")}"; EqpEquipment equipment = await _db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
ToolMolds toolMolds = await _db.Queryable<ToolMolds>().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<PrdMoTask>()
.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 }else
{ {
OrganizeEntity organizeEntity = await _db.Queryable<OrganizeEntity>().SingleAsync(x => x.Id == prdMoTask.workline_id); // OrganizeEntity organizeEntity = await _db.Queryable<OrganizeEntity>().SingleAsync(x => x.Id == prdMoTask.workline_id);
batch = $"{organizeEntity.EnCode.Substring(organizeEntity.EnCode.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}"; // 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) if (prdMoTask.has_last_check == 0)
@@ -2568,8 +2640,8 @@ namespace Tnb.ProductionMgr
erpRequestData.Add("AggWrDtl", erpRequestDataDetails); erpRequestData.Add("AggWrDtl", erpRequestDataDetails);
requestData.Add(erpRequestData); requestData.Add(erpRequestData);
BasFactoryConfig config = await _db.Queryable<BasFactoryConfig>() BasFactoryConfig config = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
.FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL); BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord(); ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
thirdWebapiRecord.id = SnowflakeIdHelper.NextId(); thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
thirdWebapiRecord.third_name = WmsWareHouseConst.BIP; thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
@@ -2581,6 +2653,10 @@ namespace Tnb.ProductionMgr
thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.create_time = DateTime.Now;
thirdWebapiRecord.remark = $"载具编号:{report?.material_box_code ?? ""}"; thirdWebapiRecord.remark = $"载具编号:{report?.material_box_code ?? ""}";
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }
@@ -4083,6 +4159,24 @@ namespace Tnb.ProductionMgr
return row>0 ? "分配成功" : "分配失败"; return row>0 ? "分配成功" : "分配失败";
} }
/// <summary>
/// 设置批号
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<string> SetBatch(Dictionary<String,String> input)
{
string ids = input.GetOrDefault("ids");
string[] idList = ids.Split(",");
string batch = input.GetOrDefault("batch");
int row = await _db.Updateable<PrdMoTask>()
.SetColumns(x => x.batch == batch)
.Where(x => idList.Contains(x.id))
.ExecuteCommandAsync();
return row>0 ? "设置成功" : "设置失败";
}
/// <summary> /// <summary>
/// 末检 /// 末检
/// </summary> /// </summary>

View File

@@ -43,6 +43,7 @@ using Tnb.ProductionMgr.Entities.Entity;
using Tnb.ProductionMgr.Entities.Entity.ErpEntity; using Tnb.ProductionMgr.Entities.Entity.ErpEntity;
using Tnb.BasicData.Entities.Dto; using Tnb.BasicData.Entities.Dto;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.BasicData.Interfaces;
using Tnb.PerMgr.Entities; using Tnb.PerMgr.Entities;
namespace Tnb.ProductionMgr namespace Tnb.ProductionMgr
@@ -59,6 +60,7 @@ namespace Tnb.ProductionMgr
private readonly IWmsEmptyOutstockService _wmsEmptyOutstockService; private readonly IWmsEmptyOutstockService _wmsEmptyOutstockService;
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IPrdMoTaskService _prdMoTaskService; private readonly IPrdMoTaskService _prdMoTaskService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public TimeWorkService( public TimeWorkService(
RedisData redisData, RedisData redisData,
@@ -67,6 +69,7 @@ namespace Tnb.ProductionMgr
IOrganizeService organizeService, IOrganizeService organizeService,
IWmsEmptyOutstockService wmsEmptyOutstockService, IWmsEmptyOutstockService wmsEmptyOutstockService,
IPrdMoTaskService prdMoTaskService, IPrdMoTaskService prdMoTaskService,
IThirdApiRecordService thirdApiRecordService,
IWareHouseService wareHouseService IWareHouseService wareHouseService
) )
{ {
@@ -77,6 +80,7 @@ namespace Tnb.ProductionMgr
_billRullService = billRullService; _billRullService = billRullService;
_wmsEmptyOutstockService = wmsEmptyOutstockService; _wmsEmptyOutstockService = wmsEmptyOutstockService;
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
_thirdApiRecordService = thirdApiRecordService;
_prdMoTaskService = prdMoTaskService; _prdMoTaskService = prdMoTaskService;
} }
@@ -718,178 +722,12 @@ namespace Tnb.ProductionMgr
List<ThirdWebapiRecord> records = await _db.Queryable<ThirdWebapiRecord>().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1 && x.error_count<10).ToListAsync(); List<ThirdWebapiRecord> records = await _db.Queryable<ThirdWebapiRecord>().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1 && x.error_count<10).ToListAsync();
if (records.IsEmpty()) if (records.IsEmpty())
{ {
records = await _db.Queryable<ThirdWebapiRecord>().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1).ToListAsync(); records = await _db.Queryable<ThirdWebapiRecord>().Where(x => thirdNameArr.Contains(x.third_name) && x.status == "0" && x.is_send == 1 && x.error_count<100).ToListAsync();
} }
if (records.IsEmpty()) return ""; if (records.IsEmpty()) return "";
DateTime now = DateTime.Now; await _thirdApiRecordService.Send(records, "自动");
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<ThirdResult>(response);
}
else
{
thirdResult.Code = 500;
}
}
catch (Exception e)
{
thirdResult.Code = 500;
thirdResult.msgResult = response;
}
if (thirdResult.Code == 200)
{
await _db.Updateable<ThirdWebapiRecord>()
.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<ThirdWebapiRecord>()
.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<string,object> requestData = JsonConvert.DeserializeObject<Dictionary<string,object>>(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<WmsPurchaseD>()
.SetColumns(x => x.erp_arriveorder_b_pk == pk_arriveorder_b)
.Where(x => x.id == item.mes_detail_id)
.ExecuteCommandAsync();
}
int updateRow = await _db.Updateable<WmsPurchaseH>()
.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<string,object> requestData = JsonConvert.DeserializeObject<Dictionary<string,object>>(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<PrdReport>()
.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 "true"; return "true";
} }

View File

@@ -60,6 +60,7 @@ using NPOI.SS.Format;
using Aspose.Cells.Drawing; using Aspose.Cells.Drawing;
using SQLitePCL; using SQLitePCL;
using Tnb.BasicData.Entities.Entity; using Tnb.BasicData.Entities.Entity;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -78,7 +79,7 @@ namespace Tnb.WarehouseMgr
private readonly IWmsCarryUnbindService _wmsCarryUnbindService; private readonly IWmsCarryUnbindService _wmsCarryUnbindService;
private readonly IWmsOutinStockDetailService _wmsOutinStockDetailService; private readonly IWmsOutinStockDetailService _wmsOutinStockDetailService;
private static ISqlSugarClient db_agvElevatorTaskExceptionHandles; private static ISqlSugarClient db_agvElevatorTaskExceptionHandles;
private readonly IThirdApiRecordService _thirdApiRecordService;
@@ -156,6 +157,7 @@ namespace Tnb.WarehouseMgr
IWmsCarryUnbindService wmsCarryUnbindService, IWmsCarryUnbindService wmsCarryUnbindService,
IRunService runService, IRunService runService,
IVisualDevService visualDevService, IVisualDevService visualDevService,
IThirdApiRecordService thirdApiRecordService,
IWmsOutinStockDetailService wmsOutinStockDetailService IWmsOutinStockDetailService wmsOutinStockDetailService
//IConfiguration configuration //IConfiguration configuration
) : base(repository.AsSugarClient()) ) : base(repository.AsSugarClient())
@@ -171,6 +173,7 @@ namespace Tnb.WarehouseMgr
_wmsCarryUnbindService = wmsCarryUnbindService; _wmsCarryUnbindService = wmsCarryUnbindService;
_runService = runService; _runService = runService;
_visualDevService = visualDevService; _visualDevService = visualDevService;
_thirdApiRecordService = thirdApiRecordService;
_wmsOutinStockDetailService = wmsOutinStockDetailService; _wmsOutinStockDetailService = wmsOutinStockDetailService;
//_configuration = configuration; //_configuration = configuration;
@@ -3323,6 +3326,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; thirdWebapiRecord.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}";
await db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }

View File

@@ -29,6 +29,7 @@ using Tnb.WarehouseMgr.Entities.Entity;
using Tnb.WarehouseMgr.Interfaces; using Tnb.WarehouseMgr.Interfaces;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -47,6 +48,7 @@ namespace Tnb.WarehouseMgr
private readonly IWmsCarryUnbindService _wmsCarryUnbindService; private readonly IWmsCarryUnbindService _wmsCarryUnbindService;
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IOtherOutstockHService _otherOutstockHService; private readonly IOtherOutstockHService _otherOutstockHService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public WmsMaterialSignHService( public WmsMaterialSignHService(
ISqlSugarRepository<WmsCarryH> repository, ISqlSugarRepository<WmsCarryH> repository,
IUserManager userManager, IUserManager userManager,
@@ -55,6 +57,7 @@ namespace Tnb.WarehouseMgr
IVisualDevService visualDevService, IVisualDevService visualDevService,
IWmsPDAScanInStockService wmsPDAScanInStock, IWmsPDAScanInStockService wmsPDAScanInStock,
IWmsCarryUnbindService wmsCarryUnbindService, IWmsCarryUnbindService wmsCarryUnbindService,
IThirdApiRecordService thirdApiRecordService,
IWareHouseService wareHouseService, IWareHouseService wareHouseService,
IOtherOutstockHService otherOutstockHService) IOtherOutstockHService otherOutstockHService)
{ {
@@ -66,6 +69,7 @@ namespace Tnb.WarehouseMgr
_wmsPDAScanInStock = wmsPDAScanInStock; _wmsPDAScanInStock = wmsPDAScanInStock;
_wmsCarryUnbindService = wmsCarryUnbindService; _wmsCarryUnbindService = wmsCarryUnbindService;
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
_thirdApiRecordService = thirdApiRecordService;
_otherOutstockHService = otherOutstockHService; _otherOutstockHService = otherOutstockHService;
} }
@@ -445,6 +449,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.create_time = DateTime.Now;
thirdWebapiRecord.remark = $"原材料调拨出库wms_rawmat_transferoutstock_h:{wmsRawmatTransferoutstockH.bill_code}"; thirdWebapiRecord.remark = $"原材料调拨出库wms_rawmat_transferoutstock_h:{wmsRawmatTransferoutstockH.bill_code}";
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
break; break;
} }
@@ -551,6 +560,10 @@ namespace Tnb.WarehouseMgr
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它出库单到erp成功"); Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它出库单到erp成功");
BasFactoryConfig callErp2 = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp2.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE if (wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_JZGLRK_CODE
|| wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_QTCRK_CODE || wmsMaterialTransfer.type == WmsWareHouseConst.MATERIALTRANSFER_QTCRK_CODE
@@ -623,6 +636,10 @@ namespace Tnb.WarehouseMgr
await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync();
Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它入库单到erp成功"); Logger.LogInformation("【WmsMaterialSignHService ModifyAsync】同步其它入库单到erp成功");
if(callErp2.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord2 }, "自动", _db);
}
} }
break; break;
} }

View File

@@ -44,6 +44,7 @@ using Tnb.BasicData;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.WarehouseMgr.Entities.Dto.Outputs; using Tnb.WarehouseMgr.Entities.Dto.Outputs;
using System.Threading; using System.Threading;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -65,6 +66,7 @@ namespace Tnb.WarehouseMgr
private readonly IWmsCarryUnbindService _wmsCarryUnbindService; private readonly IWmsCarryUnbindService _wmsCarryUnbindService;
private readonly IOrganizeService _organizeService; private readonly IOrganizeService _organizeService;
private readonly IWmsCarryQueryService _wmsCarryQueryService; private readonly IWmsCarryQueryService _wmsCarryQueryService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public static SemaphoreSlim s_taskDistributeToZCC = new(1); public static SemaphoreSlim s_taskDistributeToZCC = new(1);
public static SemaphoreSlim s_taskDistributeYCL2ZCC = new(1); public static SemaphoreSlim s_taskDistributeYCL2ZCC = new(1);
@@ -82,6 +84,7 @@ namespace Tnb.WarehouseMgr
IWmsCarryUnbindService wmsCarryUnbindService, IWmsCarryUnbindService wmsCarryUnbindService,
IOrganizeService organizeService, IOrganizeService organizeService,
IWmsCarryQueryService wmsCarryQueryService, IWmsCarryQueryService wmsCarryQueryService,
IThirdApiRecordService thirdApiRecordService,
IWmsCarryBindService wmsCarryBindService) IWmsCarryBindService wmsCarryBindService)
{ {
_db = repository.AsSugarClient(); _db = repository.AsSugarClient();
@@ -94,6 +97,7 @@ namespace Tnb.WarehouseMgr
_wmsCarryUnbindService = wmsCarryUnbindService; _wmsCarryUnbindService = wmsCarryUnbindService;
_organizeService = organizeService; _organizeService = organizeService;
_wmsCarryQueryService = wmsCarryQueryService; _wmsCarryQueryService = wmsCarryQueryService;
_thirdApiRecordService = thirdApiRecordService;
OverideFuncs.GetListAsync = GetList; OverideFuncs.GetListAsync = GetList;
} }
@@ -1165,6 +1169,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord2.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}"; thirdWebapiRecord2.remark = $"原材料转库单wms_material_transfer:{wmsMaterialTransfer.bill_code}";
await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord2).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord2 }, "自动", _db);
}
} }
// 其它出库 // 其它出库
else else
@@ -1268,6 +1277,11 @@ namespace Tnb.WarehouseMgr
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它出库单到erp成功"); Logger.LogInformation("【WmsMaterialTransferService ModifyAsync】同步其它出库单到erp成功");
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }
} }
} }

View File

@@ -31,6 +31,7 @@ using Tnb.WarehouseMgr.Entities.Entity;
using Tnb.WarehouseMgr.Interfaces; using Tnb.WarehouseMgr.Interfaces;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using System.Threading; using System.Threading;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -44,15 +45,20 @@ namespace Tnb.WarehouseMgr
private readonly IVisualDevService _visualDevService; private readonly IVisualDevService _visualDevService;
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IBillRullService _billRullService; private readonly IBillRullService _billRullService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public WmsPrdInstockHService(ISqlSugarRepository<WmsCarryH> repository, IRunService runService, public WmsPrdInstockHService(ISqlSugarRepository<WmsCarryH> repository, IRunService runService,
IVisualDevService visualDevService, IWareHouseService wareHouseService, IBillRullService billRullService) IVisualDevService visualDevService,
IWareHouseService wareHouseService,
IThirdApiRecordService thirdApiRecordService,
IBillRullService billRullService)
{ {
_db = repository.AsSugarClient(); _db = repository.AsSugarClient();
_runService = runService; _runService = runService;
_visualDevService = visualDevService; _visualDevService = visualDevService;
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
_billRullService = billRullService; _billRullService = billRullService;
_thirdApiRecordService = thirdApiRecordService;
} }
/// <summary> /// <summary>
@@ -462,6 +468,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.remark = $"载具编号:{prdReport?.material_box_code ?? ""}"; thirdWebapiRecord.remark = $"载具编号:{prdReport?.material_box_code ?? ""}";
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }

View File

@@ -24,6 +24,7 @@ using JNPF.Common.Dtos.VisualDev;
using JNPF.Common.Extension; using JNPF.Common.Extension;
using JNPF.FriendlyException; using JNPF.FriendlyException;
using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -43,18 +44,21 @@ namespace Tnb.WarehouseMgr
private readonly ISqlSugarClient _db; private readonly ISqlSugarClient _db;
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
private readonly IDictionaryDataService _dictionaryDataService; private readonly IDictionaryDataService _dictionaryDataService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc(); public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
public WmsPurchaseDService( public WmsPurchaseDService(
ISqlSugarRepository<WmsPurchaseD> repository, ISqlSugarRepository<WmsPurchaseD> repository,
DataBaseManager dbManager, DataBaseManager dbManager,
IUserManager userManager, IUserManager userManager,
IThirdApiRecordService thirdApiRecordService,
IDictionaryDataService dictionaryDataService) IDictionaryDataService dictionaryDataService)
{ {
_repository = repository; _repository = repository;
_db = repository.AsSugarClient(); _db = repository.AsSugarClient();
_dbManager = dbManager; _dbManager = dbManager;
_userManager = userManager; _userManager = userManager;
_thirdApiRecordService = thirdApiRecordService;
_dictionaryDataService = dictionaryDataService; _dictionaryDataService = dictionaryDataService;
} }
@@ -257,6 +261,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.remark = "采购收货单号:" + (wmsPurchaseH?.bill_code ?? "")+ ",erp采购订单号:"+wmsPurchaseOrderH.erp_bill_code; thirdWebapiRecord.remark = "采购收货单号:" + (wmsPurchaseH?.bill_code ?? "")+ ",erp采购订单号:"+wmsPurchaseOrderH.erp_bill_code;
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
await _db.Ado.CommitTranAsync(); await _db.Ado.CommitTranAsync();
} }

View File

@@ -37,6 +37,7 @@ using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Authorization;
using JNPF.VisualDev.Interfaces; using JNPF.VisualDev.Interfaces;
using JNPF.VisualDev.Entitys; using JNPF.VisualDev.Entitys;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -52,8 +53,10 @@ namespace Tnb.WarehouseMgr
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IRunService _runService; private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService; private readonly IVisualDevService _visualDevService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public WmsPurchaseService(ISqlSugarRepository<WmsPurchaseH> repo, IUserManager userManager, IQcCheckPlanService qcCheckPlanService, IBillRullService billRullService, public WmsPurchaseService(ISqlSugarRepository<WmsPurchaseH> repo, IUserManager userManager, IQcCheckPlanService qcCheckPlanService, IBillRullService billRullService,
IWareHouseService wareHouseService, IRunService runService, IWareHouseService wareHouseService, IRunService runService,
IThirdApiRecordService thirdApiRecordService,
IVisualDevService visualDevService) IVisualDevService visualDevService)
: base(repo, userManager, qcCheckPlanService) : base(repo, userManager, qcCheckPlanService)
{ {
@@ -62,6 +65,7 @@ namespace Tnb.WarehouseMgr
_billRullService = billRullService; _billRullService = billRullService;
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
_runService = runService; _runService = runService;
_thirdApiRecordService = thirdApiRecordService;
_visualDevService = visualDevService; _visualDevService = visualDevService;
} }
@@ -283,6 +287,10 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.remark = $"erp采购订单:{wmsPurchaseOrderH.erp_bill_code}"; thirdWebapiRecord.remark = $"erp采购订单:{wmsPurchaseOrderH.erp_bill_code}";
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }
//通知Mes接口 //通知Mes接口
//_ = SyncMesData(instock.id, instockDs.Select(x => x.material_id).ToList(), EnumTriggerEvent.入厂检按物料编号); //_ = SyncMesData(instock.id, instockDs.Select(x => x.material_id).ToList(), EnumTriggerEvent.入厂检按物料编号);

View File

@@ -32,6 +32,7 @@ using Tnb.WarehouseMgr.Entities.Entity;
using Tnb.WarehouseMgr.Interfaces; using Tnb.WarehouseMgr.Interfaces;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -50,6 +51,7 @@ namespace Tnb.WarehouseMgr
private readonly IVisualDevService _visualDevService; private readonly IVisualDevService _visualDevService;
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock; private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public WmsRawmatOutstockService( public WmsRawmatOutstockService(
ISqlSugarRepository<WmsCarryH> repository, ISqlSugarRepository<WmsCarryH> repository,
IUserManager userManager, IUserManager userManager,
@@ -57,6 +59,7 @@ namespace Tnb.WarehouseMgr
IRunService runService, IRunService runService,
IVisualDevService visualDevService, IVisualDevService visualDevService,
IWmsPDAScanInStockService wmsPDAScanInStock, IWmsPDAScanInStockService wmsPDAScanInStock,
IThirdApiRecordService thirdApiRecordService,
IWareHouseService wareHouseService) IWareHouseService wareHouseService)
{ {
_db = repository.AsSugarClient(); _db = repository.AsSugarClient();
@@ -66,6 +69,7 @@ namespace Tnb.WarehouseMgr
_visualDevService = visualDevService; _visualDevService = visualDevService;
_wmsPDAScanInStock = wmsPDAScanInStock; _wmsPDAScanInStock = wmsPDAScanInStock;
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
_thirdApiRecordService = thirdApiRecordService;
OverideFuncs.GetDetailsAsync = GetDetailsAsync; OverideFuncs.GetDetailsAsync = GetDetailsAsync;
} }
@@ -183,6 +187,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.create_time = DateTime.Now;
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }
[NonAction] [NonAction]

View File

@@ -33,6 +33,7 @@ using Tnb.WarehouseMgr.Interfaces;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.WarehouseMgr.Entities.Attributes; using Tnb.WarehouseMgr.Entities.Attributes;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -50,11 +51,13 @@ namespace Tnb.WarehouseMgr
private readonly IRunService _runService; private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService; private readonly IVisualDevService _visualDevService;
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IThirdApiRecordService _thirdApiRecordService;
public WmsRawmatTransferinstockService( public WmsRawmatTransferinstockService(
ISqlSugarRepository<WmsRawmatTransferinstockH> repository, ISqlSugarRepository<WmsRawmatTransferinstockH> repository,
IUserManager userManager, IUserManager userManager,
IBillRullService billRullService, IBillRullService billRullService,
IRunService runService, IRunService runService,
IThirdApiRecordService thirdApiRecordService,
IVisualDevService visualDevService, IVisualDevService visualDevService,
IWareHouseService wareHouseService) IWareHouseService wareHouseService)
{ {
@@ -62,6 +65,7 @@ namespace Tnb.WarehouseMgr
_userManager = userManager; _userManager = userManager;
_billRullService = billRullService; _billRullService = billRullService;
_runService = runService; _runService = runService;
_thirdApiRecordService = thirdApiRecordService;
_visualDevService = visualDevService; _visualDevService = visualDevService;
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
} }
@@ -195,9 +199,13 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save"; thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save";
thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData);
thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.create_time = DateTime.Now;
thirdWebapiRecord.remark = "原材料调拨入库"; thirdWebapiRecord.remark = $"原材料调拨入库wms_rawmat_transferinstock_h:{wmsRawmatTransferinstockH.bill_code}";
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
Logger.Information($"完成原材料调拨入库单上传BIP逻辑"); Logger.Information($"完成原材料调拨入库单上传BIP逻辑");
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }
[HttpPost] [HttpPost]

View File

@@ -23,6 +23,7 @@ using Tnb.WarehouseMgr.Entities.Enums;
using Tnb.WarehouseMgr.Interfaces; using Tnb.WarehouseMgr.Interfaces;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -41,6 +42,7 @@ namespace Tnb.WarehouseMgr
private readonly IWareHouseService _wareHouseService; private readonly IWareHouseService _wareHouseService;
private readonly IBillRullService _billRullService; private readonly IBillRullService _billRullService;
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
private readonly IThirdApiRecordService _thirdApiRecordService;
public WmsSterilizationInstockHService( public WmsSterilizationInstockHService(
ISqlSugarRepository<WmsCarryH> repository, ISqlSugarRepository<WmsCarryH> repository,
@@ -49,6 +51,7 @@ namespace Tnb.WarehouseMgr
IWareHouseService wareHouseService, IWareHouseService wareHouseService,
IUserManager userManager, IUserManager userManager,
IBillRullService billRullService, IBillRullService billRullService,
IThirdApiRecordService thirdApiRecordService,
IEventPublisher publisher) IEventPublisher publisher)
{ {
_db = repository.AsSugarClient(); _db = repository.AsSugarClient();
@@ -57,6 +60,7 @@ namespace Tnb.WarehouseMgr
_wareHouseService = wareHouseService; _wareHouseService = wareHouseService;
_userManager = userManager; _userManager = userManager;
_billRullService = billRullService; _billRullService = billRullService;
_thirdApiRecordService = thirdApiRecordService;
} }
@@ -200,6 +204,11 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData); thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData);
thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.create_time = DateTime.Now;
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
} }
} }

View File

@@ -29,6 +29,7 @@ using Tnb.WarehouseMgr.Entities.Entity;
using Tnb.WarehouseMgr.Interfaces; using Tnb.WarehouseMgr.Interfaces;
using Tnb.BasicData; using Tnb.BasicData;
using Tnb.ProductionMgr.Entities.Entity; using Tnb.ProductionMgr.Entities.Entity;
using Tnb.BasicData.Interfaces;
namespace Tnb.WarehouseMgr namespace Tnb.WarehouseMgr
{ {
@@ -46,12 +47,14 @@ namespace Tnb.WarehouseMgr
private readonly IBillRullService _billRullService; private readonly IBillRullService _billRullService;
private readonly IRunService _runService; private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService; private readonly IVisualDevService _visualDevService;
private readonly IThirdApiRecordService _thirdApiRecordService;
private readonly IWmsPDAScanInStockService _wmsPDAScanInStock; private readonly IWmsPDAScanInStockService _wmsPDAScanInStock;
public WmsTransferInstockService( public WmsTransferInstockService(
ISqlSugarRepository<WmsCarryH> repository, ISqlSugarRepository<WmsCarryH> repository,
IUserManager userManager, IUserManager userManager,
IBillRullService billRullService, IBillRullService billRullService,
IRunService runService, IRunService runService,
IThirdApiRecordService thirdApiRecordService,
IVisualDevService visualDevService, IVisualDevService visualDevService,
IWmsPDAScanInStockService wmsPDAScanInStock) IWmsPDAScanInStockService wmsPDAScanInStock)
{ {
@@ -59,6 +62,7 @@ namespace Tnb.WarehouseMgr
_userManager = userManager; _userManager = userManager;
_billRullService = billRullService; _billRullService = billRullService;
_runService = runService; _runService = runService;
_thirdApiRecordService = thirdApiRecordService;
_visualDevService = visualDevService; _visualDevService = visualDevService;
_wmsPDAScanInStock = wmsPDAScanInStock; _wmsPDAScanInStock = wmsPDAScanInStock;
} }
@@ -183,8 +187,12 @@ namespace Tnb.WarehouseMgr
thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save"; thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN + "uapws/rest/transIn/save";
thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData); thirdWebapiRecord.request_data = JsonConvert.SerializeObject(requestData);
thirdWebapiRecord.create_time = DateTime.Now; thirdWebapiRecord.create_time = DateTime.Now;
thirdWebapiRecord.remark = "成品调拨入库"; thirdWebapiRecord.remark = $"成品调拨入库wms_transfer_instock_h:{wmsTransferInstockH.bill_code}";
await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync(); await _db.Insertable(thirdWebapiRecord).ExecuteCommandAsync();
BasFactoryConfig callErp = await _db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.CALLERP);
if(callErp.value=="1"){
await _thirdApiRecordService.Send(new List<ThirdWebapiRecord> { thirdWebapiRecord }, "自动", _db);
}
Logger.Information($"完成成品调拨入库单上传BIP逻辑"); Logger.Information($"完成成品调拨入库单上传BIP逻辑");
} }
} }