机台原料设定

This commit is contained in:
2024-08-05 17:24:28 +08:00
parent 5c601865f2
commit e127d46553
4 changed files with 227 additions and 4 deletions

View File

@@ -228,4 +228,9 @@ public partial class EqpEquipment : BaseEntity<string>
/// 入库仓库id
/// </summary>
public string? instock_warehouse_id { get; set; }
/// <summary>
/// 截料阀
/// </summary>
public string stop_valve { get; set; }
}

View File

@@ -20,9 +20,19 @@ public partial class PrdRawMaterialBarcode : BaseEntity<string>
public string bill_code { get; set; } = string.Empty;
/// <summary>
/// 料仓id/机台id
/// 料仓id
/// </summary>
public string equip_id { get; set; } = string.Empty;
/// <summary>
/// 机台id
/// </summary>
public string equip_ids { get; set; } = string.Empty;
/// <summary>
/// 截料阀
/// </summary>
public string stop_valve { get; set; }
/// <summary>
/// 物料id
@@ -52,12 +62,12 @@ public partial class PrdRawMaterialBarcode : BaseEntity<string>
/// <summary>
/// 开始时间
/// </summary>
public DateTime start_time { get; set; } = DateTime.Now;
public DateTime? start_time { get; set; }
/// <summary>
/// 结束时间
/// </summary>
public DateTime end_time { get; set; } = DateTime.Now;
public DateTime? end_time { get; set; }
/// <summary>
/// 备注

View File

@@ -20,9 +20,19 @@ public partial class PrdRawMaterialBarcodeRecord : BaseEntity<string>
public string bill_code { get; set; } = string.Empty;
/// <summary>
/// 料仓id/机台id
/// 料仓id
/// </summary>
public string equip_id { get; set; } = string.Empty;
/// <summary>
/// 机台id
/// </summary>
public string equip_ids { get; set; } = string.Empty;
/// <summary>
/// 截料阀
/// </summary>
public string stop_valve { get; set; }
/// <summary>
/// 物料id

View File

@@ -25,6 +25,7 @@ using Tnb.WarehouseMgr.Entities.Configs;
using Tnb.Common.Utils;
using Tnb.WarehouseMgr.Entities.Consts;
using HttpClientHelper = Tnb.Common.Utils.HttpClientHelper;
using Tnb.Common.Redis;
namespace Tnb.ProductionMgr
{
@@ -46,11 +47,13 @@ namespace Tnb.ProductionMgr
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
private readonly IVisualDevService _visualDevService;
private readonly IRunService _runService;
private readonly RedisData _redisData;
public PrdRawMaterialBarcodeService(ISqlSugarRepository<PrdRawMaterialBarcode> repository,
IUserManager userManager,
IBillRullService billRuleService,
IVisualDevService visualDevService,
RedisData redisData,
IRunService runService,
IDictionaryDataService dictionaryDataService)
{
@@ -60,6 +63,7 @@ namespace Tnb.ProductionMgr
_dictionaryDataService = dictionaryDataService;
_visualDevService = visualDevService;
_runService = runService;
_redisData = redisData;
OverideFuncs.UpdateAsync = Update;
}
@@ -290,6 +294,7 @@ namespace Tnb.ProductionMgr
.SetColumns(x => x.end_time == null)
.SetColumns(x => x.is_update == 0)
.SetColumns(x => x.material_id == "")
.SetColumns(x=>x.absorb_material_finish==0)
.Where(x => x.id == item.id)
.ExecuteCommandAsync();
@@ -331,5 +336,198 @@ namespace Tnb.ProductionMgr
}
return "成功";
}
/// <summary>
/// 更新截料阀
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> UpdateStopValve(List<string> ids)
{
try
{
await _db.Ado.BeginTranAsync();
List<PrdRawMaterialBarcode> prdRawMaterialBarcodeList = await _db.Queryable<PrdRawMaterialBarcode>()
.Where(x => ids.Contains(x.id)).ToListAsync();
foreach (var item in prdRawMaterialBarcodeList)
{
if (string.IsNullOrEmpty(item.stop_valve))
{
throw Oops.Bah($"{item.bill_code}未设置截料阀");
}
if (string.IsNullOrEmpty(item.equip_ids))
{
throw Oops.Bah($"{item.bill_code}未设置机台");
}
List<string> equipIdList = JsonConvert.DeserializeObject<List<string>>(item.equip_ids);
List<EqpEquipment> eqpEquipments = await _db.Queryable<EqpEquipment>().Where(x => equipIdList.Contains(x.id)).ToListAsync();
foreach (var equipment in eqpEquipments)
{
EqpDaq eqpDaq = await _db.Queryable<EqpDaq>().Where(x => x.equip_id == equipment.id && x.label_name.Contains("原料选择")).FirstAsync();
if (eqpDaq == null)
{
throw Oops.Bah($"{equipment.name}未设置原料选择数据采集项");
}
Dictionary<string, string> dicCommand3 = new(StringComparer.OrdinalIgnoreCase)
{
["DevName"] = eqpDaq.equip_code,
["token"] = _eleCtlCfg.token,
["TagName"] = eqpDaq.label_name,
["Value"] = item.stop_valve,
};
Log.Information($"{eqpDaq.equip_code}{eqpDaq.label_name}更新参数:{JsonConvert.SerializeObject(dicCommand3)}");
string responseresult3 = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand3, false);
Log.Information($"{eqpDaq.equip_code}{eqpDaq.label_name}更新返回结果:{responseresult3}");
await _db.Updateable<PrdRawMaterialBarcode>()
.SetColumns(x => x.start_time == DateTime.Now)
.SetColumns(x => x.is_update == 1)
.Where(x => x.id == item.id)
.ExecuteCommandAsync();
}
}
await _db.Ado.CommitTranAsync();
}
catch (Exception e)
{
await _db.Ado.RollbackTranAsync();
throw Oops.Bah(e.Message);
}
return "成功";
}
/// <summary>
/// 管道状态
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> GetPipingStatus(List<string> ids)
{
try
{
await _db.Ado.BeginTranAsync();
List<PrdRawMaterialBarcode> prdRawMaterialBarcodeList = await _db.Queryable<PrdRawMaterialBarcode>()
.Where(x => ids.Contains(x.id)).ToListAsync();
foreach (var item in prdRawMaterialBarcodeList)
{
if (string.IsNullOrEmpty(item.equip_ids))
{
throw Oops.Bah($"{item.bill_code}未设置机台");
}
List<string> equipIdList = JsonConvert.DeserializeObject<List<string>>(item.equip_ids);
List<EqpEquipment> eqpEquipments = await _db.Queryable<EqpEquipment>().Where(x => equipIdList.Contains(x.id)).ToListAsync();
foreach (var equipment in eqpEquipments)
{
EqpDaq eqpDaq = await _db.Queryable<EqpDaq>().Where(x => x.equip_id == equipment.id && x.label_name.Contains("配管状态")).FirstAsync();
if (eqpDaq == null)
{
throw Oops.Bah($"{equipment.name}未设置配管状态数据采集项");
}
bool data = await _redisData.TryGetValueByKeyField<bool>(eqpDaq.equip_code, eqpDaq.label_name);
int pipingStatus = data ? 1 : 0;
await _db.Updateable<PrdRawMaterialBarcode>()
.SetColumns(x => x.piping_status == pipingStatus)
.Where(x => x.id == item.id)
.ExecuteCommandAsync();
}
}
await _db.Ado.CommitTranAsync();
}
catch (Exception e)
{
await _db.Ado.RollbackTranAsync();
throw Oops.Bah(e.Message);
}
return "成功";
}
/// <summary>
/// 机台原料设定吸料完成
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> MaterialSuctionCompleted2(List<string> ids)
{
try
{
await _db.Ado.BeginTranAsync();
List<PrdRawMaterialBarcode> prdRawMaterialBarcodeList = await _db.Queryable<PrdRawMaterialBarcode>()
.Where(x => ids.Contains(x.id)).ToListAsync();
List<PrdRawMaterialBarcodeRecord> insertList = new List<PrdRawMaterialBarcodeRecord>();
foreach (var item in prdRawMaterialBarcodeList)
{
List<string> equipIdList = JsonConvert.DeserializeObject<List<string>>(item.equip_ids);
List<EqpEquipment> eqpEquipments = await _db.Queryable<EqpEquipment>().Where(x => equipIdList.Contains(x.id)).ToListAsync();
foreach (var equipment in eqpEquipments)
{
EqpDaq eqpDaq = await _db.Queryable<EqpDaq>().Where(x => x.equip_id == equipment.id && x.label_name.Contains("原料选择")).FirstAsync();
if (eqpDaq == null)
{
throw Oops.Bah($"{equipment.name}未设置原料选择数据采集项");
}
Dictionary<string, string> dicCommand3 = new(StringComparer.OrdinalIgnoreCase)
{
["DevName"] = eqpDaq.equip_code,
["token"] = _eleCtlCfg.token,
["TagName"] = eqpDaq.label_name,
["Value"] = "",
};
Log.Information($"{eqpDaq.equip_code}{eqpDaq.label_name}吸料完成参数:{JsonConvert.SerializeObject(dicCommand3)}");
string responseresult3 = await HttpClientHelper.GetRequestAsync(_eleCtlCfg.WriteTagUrl, dicCommand3, false);
Log.Information($"{eqpDaq.equip_code}{eqpDaq.label_name}吸料完成返回结果:{responseresult3}");
}
PrdRawMaterialBarcodeRecord prdRawMaterialBarcodeRecord = item.Adapt<PrdRawMaterialBarcodeRecord>();
prdRawMaterialBarcodeRecord.id = SnowflakeIdHelper.NextId();
prdRawMaterialBarcodeRecord.end_time = DateTime.Now;
insertList.Add(prdRawMaterialBarcodeRecord);
await _db.Updateable<PrdRawMaterialBarcode>()
.SetColumns(x => x.bill_code == "")
.SetColumns(x => x.start_time == null)
.SetColumns(x => x.end_time == null)
.SetColumns(x => x.is_update == 0)
.SetColumns(x=>x.piping_status == 0)
.SetColumns(x=>x.absorb_material_finish==0)
.Where(x => x.id == item.id)
.ExecuteCommandAsync();
}
if (!insertList.IsEmpty())
{
await _db.Insertable(insertList).ExecuteCommandAsync();
}
await _db.Ado.CommitTranAsync();
}
catch (Exception e)
{
await _db.Ado.RollbackTranAsync();
throw Oops.Bah(e.Message);
}
return "成功";
}
}
}