立即调用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

@@ -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<ElevatorControlConfiguration>();
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<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)
{
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")}";
if (changeBatchFlag)
{
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)
{
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")}";
if (changeBatchFlag)
{
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
{
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")}";
// 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 = 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<BasFactoryConfig>()
.FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.BIPURL);
BasFactoryConfig config = await _db.Queryable<BasFactoryConfig>().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.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> { thirdWebapiRecord }, "自动", _db);
}
}
@@ -4083,6 +4159,24 @@ namespace Tnb.ProductionMgr
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>