立即调用erp接口 任务单批次生成修改
This commit is contained in:
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user