质量
This commit is contained in:
@@ -49,6 +49,7 @@ using Tnb.WarehouseMgr.Interfaces;
|
||||
using Tnb.WarehouseMgr;
|
||||
using Tnb.WarehouseMgr.Entities.Enums;
|
||||
using Tnb.ProductionMgr.Entities.Entity;
|
||||
using Tnb.ProductionMgr.Helpers;
|
||||
|
||||
// using Tnb.PerMgr.Entities;
|
||||
|
||||
@@ -444,9 +445,9 @@ namespace Tnb.ProductionMgr
|
||||
.LeftJoin<PrdMo>((a, b, c, d) => a.mo_id == d.id)
|
||||
.LeftJoin<BasProcess>((a, b, c, d, e) => a.process_id == e.id)
|
||||
.LeftJoin<OrganizeEntity>((a, b,c,d,e,f) => a.workstation_id == f.Id)
|
||||
.LeftJoin<UserEntity>((a, b,c,d,e,f,g)=>a.worker_id==g.Id)
|
||||
// .LeftJoin<UserEntity>((a, b,c,d,e,f,g)=>a.worker_id==g.Id)
|
||||
.Where((a, b, c, d) => a.parent_id == mo_task_id)
|
||||
.Select((a, b, c, d, e,f,g) => new PackSechelToBeIssueListOutput
|
||||
.Select((a, b, c, d, e,f) => new PackSechelToBeIssueListOutput
|
||||
{
|
||||
mo_task_id = a.id,
|
||||
mo_task_code = a.mo_task_code,
|
||||
@@ -456,7 +457,7 @@ namespace Tnb.ProductionMgr
|
||||
workline_name = c.FullName,
|
||||
mo_task_status = a.mo_task_status,
|
||||
workstation_name = f.FullName,
|
||||
worker_name = g.RealName,
|
||||
// worker_name = g.RealName,
|
||||
scheduled_qty = a.scheduled_qty,
|
||||
plan_qty = d.plan_qty,
|
||||
process_task_qty = a.process_task_qty,
|
||||
@@ -464,11 +465,28 @@ namespace Tnb.ProductionMgr
|
||||
estimated_start_date = a.estimated_start_date == null ? null : a.estimated_start_date.Value.ToString(DbTimeFormat.MM),
|
||||
estimated_end_date = a.estimated_end_date == null ? null : a.estimated_end_date.Value.ToString(DbTimeFormat.MM),
|
||||
process_name = e.process_name,
|
||||
bom_version = SqlFunc.Subqueryable<BasMbom>().Where(it => it.material_id == a.material_id).Select(it => it.version)
|
||||
bom_version = SqlFunc.Subqueryable<BasMbom>().Where(it => it.material_id == a.material_id).Select(it => it.version),
|
||||
dayshift_worker_id = a.dayshift_worker_id,
|
||||
dayshiftafter_worker_id = a.dayshiftafter_worker_id,
|
||||
nightshift_worker_id = a.nightshift_worker_id,
|
||||
nightshiftafter_worker_id = a.nightshiftafter_worker_id,
|
||||
})
|
||||
.Mapper(it => it.mo_task_status = dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString()! : "")
|
||||
.OrderBy(a => a.mo_task_code, OrderByType.Asc)
|
||||
.ToListAsync();
|
||||
|
||||
List<string> userIdList = result.Select(x => x.dayshift_worker_id).Distinct().ToList();
|
||||
userIdList.AddRange(result.Select(x => x.dayshiftafter_worker_id).Distinct().ToList());
|
||||
userIdList.AddRange(result.Select(x => x.nightshift_worker_id).Distinct().ToList());
|
||||
userIdList.AddRange(result.Select(x => x.nightshiftafter_worker_id).Distinct().ToList());
|
||||
List<UserEntity> userEntities = await _db.Queryable<UserEntity>().Where(x=>userIdList.Contains(x.Id)).ToListAsync();
|
||||
foreach (var item in result)
|
||||
{
|
||||
item.dayshift_worker_id = userEntities.Find(x=>x.Id==item.dayshift_worker_id)?.RealName ?? item.dayshift_worker_id;
|
||||
item.dayshiftafter_worker_id = userEntities.Find(x=>x.Id==item.dayshiftafter_worker_id)?.RealName ?? item.dayshiftafter_worker_id;
|
||||
item.nightshift_worker_id = userEntities.Find(x=>x.Id==item.nightshift_worker_id)?.RealName ?? item.nightshift_worker_id;
|
||||
item.nightshiftafter_worker_id = userEntities.Find(x=>x.Id==item.nightshiftafter_worker_id)?.RealName ?? item.nightshiftafter_worker_id;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
// /// <summary>
|
||||
@@ -1157,16 +1175,34 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
#region 质检模块
|
||||
//质检
|
||||
if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && status == "InProgress")
|
||||
// if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && status == "InProgress")
|
||||
// {
|
||||
// foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "Pause").ToList())
|
||||
// {
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = task.material_id,
|
||||
// processid = task.process_id,
|
||||
// workid = task.workstation_id,
|
||||
// triggerevent = EnumTriggerEvent.首件检生产任务暂停
|
||||
// };
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
// }
|
||||
// }
|
||||
|
||||
if (prdTaskList.Where(p => p.mo_task_status == "Pause").Count() > 0 && behavior==PrdTaskBehavior.Start)
|
||||
{
|
||||
foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "Pause").ToList())
|
||||
TimerPoolHelper.GetInstance().StartTimer(TimeCallback,prdTaskList.Where(p => p.mo_task_status == "Pause").ToList(),TimeSpan.FromHours(1),Timeout.InfiniteTimeSpan);
|
||||
}else if (prdTaskList.Where(p => p.mo_task_status == "ToBeStarted").Count() > 0 && behavior == PrdTaskBehavior.Start)
|
||||
{
|
||||
foreach (PrdMoTask? task in prdTaskList.Where(p => p.mo_task_status == "ToBeStarted").ToList())
|
||||
{
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = task.material_id,
|
||||
processid = task.process_id,
|
||||
workid = task.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.首件检生产任务暂停
|
||||
triggerevent = EnumTriggerEvent.开工首件检,
|
||||
};
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
}
|
||||
@@ -1506,6 +1542,34 @@ namespace Tnb.ProductionMgr
|
||||
|
||||
return "保存成功";
|
||||
}
|
||||
|
||||
public async void TimeCallback(object args)
|
||||
{
|
||||
try
|
||||
{
|
||||
Dictionary<string, object> dic = (Dictionary<string, object>)args;
|
||||
List<PrdMoTask> prdTaskList = (List<PrdMoTask>)(dic["value"]);
|
||||
foreach (PrdMoTask? task in prdTaskList)
|
||||
{
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = task.material_id,
|
||||
processid = task.process_id,
|
||||
workid = task.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.开工首件检,
|
||||
mo_task_code = task.mo_task_code,
|
||||
check_type = WmsWareHouseConst.FULLREVIEW_CODE
|
||||
};
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
}
|
||||
|
||||
Console.WriteLine("质检任务生成成功");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error("质检任务生成失败:"+e.Message,e);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 生产任务单修改
|
||||
@@ -1556,55 +1620,6 @@ namespace Tnb.ProductionMgr
|
||||
return row > 0;
|
||||
}
|
||||
|
||||
// /// <summary>
|
||||
// /// 生产提报
|
||||
// /// </summary>
|
||||
// /// <param name="input"></param>
|
||||
// /// <remarks>
|
||||
// /// input:
|
||||
// /// <br/>{
|
||||
// /// <br/> icmo_id:生产任务ID
|
||||
// /// <br/> icmo_code:任务单号
|
||||
// /// <br/> prd_qty:生产数量
|
||||
// /// <br/> reported_work_qty:已报工数量
|
||||
// /// <br/> reported_qty:提报数量
|
||||
// /// <br/> icmo_qty:生产任务量
|
||||
// /// <br/>}
|
||||
// /// </remarks>
|
||||
// [HttpPost]
|
||||
// public async Task<dynamic> PrdReport(PrdReportCrInput input)
|
||||
// {
|
||||
// var row = -1;
|
||||
// var db = _repository.AsSugarClient();
|
||||
// var report = await db.Queryable<PrdReport>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
|
||||
//
|
||||
// //if (report is not null)
|
||||
// //{
|
||||
// // report.mo_task_code = input.mo_task_code;
|
||||
// // report.mo_task_id = input.mo_task_id;
|
||||
// // report.reported_work_qty += input.reported_qty;
|
||||
// // report.prd_qty += input.reported_qty;
|
||||
// //}
|
||||
// //else
|
||||
// {
|
||||
// report = input.Adapt<PrdReport>();
|
||||
// report.id = SnowflakeIdHelper.NextId();
|
||||
// report.reported_qty = input.reported_qty;
|
||||
// report.create_id = _userManager.UserId;
|
||||
// report.create_time = DateTime.Now;
|
||||
//
|
||||
// }
|
||||
// row = await db.Insertable(report).ExecuteCommandAsync();
|
||||
// var master = await db.Queryable<PrdReportRecord>().FirstAsync(it => it.mo_task_id == input.mo_task_id);
|
||||
// if (master != null)
|
||||
// {
|
||||
// master.reported_work_qty += input.reported_qty;
|
||||
// master.completed_qty += input.reported_qty;
|
||||
// await db.Updateable(master).ExecuteCommandAsync();
|
||||
// }
|
||||
// return row > 0;
|
||||
// }
|
||||
|
||||
/// <summary>
|
||||
/// 生产提报
|
||||
/// </summary>
|
||||
@@ -1691,6 +1706,27 @@ namespace Tnb.ProductionMgr
|
||||
throw Oops.Bah("提报数量不能大于排产数量");
|
||||
}
|
||||
}
|
||||
|
||||
if ((prdMoTask.reported_work_qty ?? 0) + input.reported_qty > prdMoTask.scheduled_qty)
|
||||
{
|
||||
BasFactoryConfig config1 = await db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.IS_SURPASS);
|
||||
if (config1?.value == "1")
|
||||
{
|
||||
BasFactoryConfig? config2 = await db.Queryable<BasFactoryConfig>().FirstAsync(x => x.enabled == 1 && x.key == FactoryConfigConst.IS_SURPASS_PERCENTAGE);
|
||||
if (!string.IsNullOrEmpty(config2?.value))
|
||||
{
|
||||
if ((prdMoTask.reported_work_qty ?? 0) + input.reported_qty > prdMoTask.scheduled_qty * (100 + Convert.ToDecimal(config2?.value ?? "1")) / 100)
|
||||
{
|
||||
throw Oops.Bah($"提报数量不能大于{100 + Convert.ToDecimal(config2?.value ?? "0")}%排产数量");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
throw Oops.Bah("提报数量不能大于排产数量");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// bool flag = (prdMoTask.reported_work_qty ?? 0) + (prdMoTask.scrap_qty ?? 0) + input.reported_qty == prdMoTask.scheduled_qty;
|
||||
@@ -1775,6 +1811,30 @@ namespace Tnb.ProductionMgr
|
||||
batch = $"{organizeEntity.EnCode.Substring(organizeEntity.EnCode.Length - 2, 2)}{DateTime.Now.ToString("yyMMdd")}";
|
||||
}
|
||||
|
||||
if (prdMoTask.has_last_check == 0)
|
||||
{
|
||||
if ((prdMoTask.reported_work_qty ?? 0) + input.reported_qty >= prdMoTask.scheduled_qty * 90 / 100)
|
||||
{
|
||||
await _db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.has_last_check==1)
|
||||
.Where(x => x.id == prdMoTask.id)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = prdMoTask.material_id,
|
||||
processid = prdMoTask.process_id,
|
||||
workid = prdMoTask.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.末检质检方案,
|
||||
mo_task_code = prdMoTask.mo_task_code,
|
||||
carry_code = report.material_box_code,
|
||||
report_id = report.id,
|
||||
batch = report.batch,
|
||||
};
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// report.location_code = input.location_code;
|
||||
report.create_id = _userManager?.UserId ?? WmsWareHouseConst.AdministratorUserId;
|
||||
@@ -1791,6 +1851,7 @@ namespace Tnb.ProductionMgr
|
||||
report.unit_id = prdMoTask.unit_id;
|
||||
report.process_id = mbomProcess?.process_id ?? "";
|
||||
|
||||
row = await db.Insertable(report).ExecuteCommandAsync();
|
||||
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().SingleAsync((x => x.carry_code == materialBoxCode));
|
||||
if (wmsCarryH == null)
|
||||
@@ -1806,38 +1867,44 @@ namespace Tnb.ProductionMgr
|
||||
throw Oops.Bah($"提报失败,载具异常");
|
||||
}
|
||||
|
||||
|
||||
bool isCheckFlag = !basMaterial.category_id.Contains("ZZCP");
|
||||
|
||||
#region 质检模块
|
||||
//质检模块
|
||||
|
||||
// if (wmsCarryH.is_check == 0)
|
||||
// {
|
||||
// TriggerPlanEntity entity = new()
|
||||
// {
|
||||
// materialid = prdMoTask.material_id,
|
||||
// processid = prdMoTask.process_id,
|
||||
// workid = prdMoTask.workstation_id
|
||||
// };
|
||||
// int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty;
|
||||
// int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty;
|
||||
// entity.oldpronum = reported + scrap;
|
||||
// entity.newpronum = input.reported_qty;
|
||||
// // entity.triggerevent = EnumTriggerEvent.生产检定量;
|
||||
// entity.triggerevent = EnumTriggerEvent.零部件最终检验事件;
|
||||
// await _qcCheckPlanService.CreateTask(entity);
|
||||
// await _db.Ado.CommitTranAsync();
|
||||
// return "生成质检任务";
|
||||
// }else if (wmsCarryH.is_check==1)
|
||||
// {
|
||||
// return "检验中,请稍后提报";
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// row = await db.Insertable(report).ExecuteCommandAsync();
|
||||
// }
|
||||
if (isCheckFlag && wmsCarryH.is_check == EnumCheckConclusion.待检.ParseToInt().ToString())
|
||||
{
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = prdMoTask.material_id,
|
||||
processid = prdMoTask.process_id,
|
||||
workid = prdMoTask.workstation_id,
|
||||
mo_task_code = prdMoTask.mo_task_code,
|
||||
carry_code = report.material_box_code,
|
||||
report_id = report.id,
|
||||
batch = report.batch,
|
||||
check_type = WmsWareHouseConst.FULLREVIEW_CODE
|
||||
};
|
||||
int? reported = prdMoTask.reported_work_qty == null ? 0 : prdMoTask.reported_work_qty;
|
||||
int? scrap = prdMoTask.scrap_qty == null ? 0 : prdMoTask.scrap_qty;
|
||||
entity.oldpronum = reported + scrap;
|
||||
entity.newpronum = input.reported_qty;
|
||||
// entity.triggerevent = EnumTriggerEvent.生产检定量;
|
||||
entity.triggerevent = EnumTriggerEvent.零部件最终检验;
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
|
||||
await _db.Updateable<WmsCarryH>()
|
||||
.SetColumns(x => x.is_check == EnumCheckConclusion.检验中.ParseToInt().ToString())
|
||||
.Where(x => x.id == wmsCarryH.id)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
isCheckFlag = true;
|
||||
|
||||
}else if (wmsCarryH.is_check==EnumCheckConclusion.检验中.ParseToInt().ToString())
|
||||
{
|
||||
return "检验中,请稍后提报";
|
||||
}
|
||||
|
||||
row = await db.Insertable(report).ExecuteCommandAsync();
|
||||
|
||||
#endregion
|
||||
_ = prdMoTask.reported_work_qty == null
|
||||
@@ -2028,9 +2095,58 @@ namespace Tnb.ProductionMgr
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
if(!isCheckFlag){
|
||||
List<PrdVisionResultRecord> prdVisionResultRecords = await _db.Queryable<PrdVisionResultRecord>()
|
||||
.Where(x => x.status == 0 && x.result.ToUpper()=="OK").OrderByDescending(x => x.create_time).Take(report.reported_qty.Value).ToListAsync();
|
||||
|
||||
List<string> ids = prdVisionResultRecords.Select(x => x.id).ToList();
|
||||
|
||||
await db.Updateable<PrdVisionResultRecord>().SetColumns(x => x.status == 1).Where(x => ids.Contains(x.id)).ExecuteCommandAsync();
|
||||
await ReportInstock(new CheckCompleteInput()
|
||||
{
|
||||
report_id = report.id,
|
||||
pqty = report.reported_qty.ParseToDecimal(),
|
||||
rqty = 0,
|
||||
records = prdVisionResultRecords,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error("提报失败", ex);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw Oops.Bah("提报失败:"+ex.Message);
|
||||
}
|
||||
finally{
|
||||
prdreportSemaphore.Release();
|
||||
}
|
||||
|
||||
return "提报成功";
|
||||
}
|
||||
|
||||
public async Task<string> ReportInstock(CheckCompleteInput input)
|
||||
{
|
||||
try
|
||||
{
|
||||
var db = _repository.AsSugarClient();
|
||||
PrdReport report = await db.Queryable<PrdReport>().FirstAsync(it => it.id==input.report_id);
|
||||
PrdMoTask? prdMoTask = await db.Queryable<PrdMoTask>().SingleAsync(x => x.id == report.mo_task_id);
|
||||
EqpEquipment equip = await db.Queryable<EqpEquipment>().SingleAsync(x => x.id == prdMoTask.eqp_id);
|
||||
BasMaterial basMaterial = await db.Queryable<BasMaterial>().SingleAsync(x => x.id == prdMoTask.material_id);
|
||||
WmsCarryH wmsCarryH = await db.Queryable<WmsCarryH>().FirstAsync(x=>x.carry_code==report.material_box_code);
|
||||
BasLocation location = await db.Queryable<BasLocation>().FirstAsync(x=>x.location_code==report.location_code);
|
||||
PrdMo prdMo = await db.Queryable<PrdMo>().SingleAsync(x => x.id == prdMoTask.mo_id);
|
||||
|
||||
await db.Updateable<PrdReport>()
|
||||
.SetColumns(x => x.check_result == input.check_result)
|
||||
.Where(x => x.id == input.report_id)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
|
||||
BindCarryCodeInput bindCarryCodeInput = new BindCarryCodeInput();
|
||||
bindCarryCodeInput.carry_id = wmsCarryH.id;
|
||||
@@ -2058,8 +2174,8 @@ namespace Tnb.ProductionMgr
|
||||
wmsPrdInstockInput.material_name = basMaterial.name;
|
||||
wmsPrdInstockInput.material_spec = basMaterial.material_specification;
|
||||
wmsPrdInstockInput.planqty = prdMoTask.scheduled_qty.Value;
|
||||
wmsPrdInstockInput.pqty = input.reported_qty;
|
||||
wmsPrdInstockInput.rqty = 0;
|
||||
wmsPrdInstockInput.pqty = input.pqty;
|
||||
wmsPrdInstockInput.rqty = input.rqty;
|
||||
wmsPrdInstockInput.type = prdMo.mo_type;
|
||||
wmsPrdInstockInput.create_id = report.create_id;
|
||||
wmsPrdInstockInput.prdInstockDs = new List<WmsPrdInstockDInput>();
|
||||
@@ -2077,35 +2193,28 @@ namespace Tnb.ProductionMgr
|
||||
wmsPrdInstockInput.prdInstockCodes.Add(new WmsPrdInstockCodeInput()
|
||||
{
|
||||
planqty = prdMoTask.scheduled_qty.Value,
|
||||
pqty = input.reported_qty,
|
||||
code_batch = batch,
|
||||
pqty = input.pqty,
|
||||
code_batch = report.batch,
|
||||
code = report.barcode,
|
||||
unit_id = prdMoTask.unit_id,
|
||||
carry_id = wmsCarryH.id,
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
List<PrdVisionResultRecord> prdVisionResultRecords = await _db.Queryable<PrdVisionResultRecord>()
|
||||
.Where(x => x.status == 0 && x.result.ToUpper()=="OK").OrderByDescending(x => x.create_time).Take(report.reported_qty.Value).ToListAsync();
|
||||
|
||||
List<string> ids = prdVisionResultRecords.Select(x => x.id).ToList();
|
||||
|
||||
foreach (var record in prdVisionResultRecords)
|
||||
if (input.records != null)
|
||||
{
|
||||
foreach (var record in input.records)
|
||||
{
|
||||
wmsPrdInstockInput.prdInstockCodes.Add(new WmsPrdInstockCodeInput()
|
||||
{
|
||||
planqty = prdMoTask.scheduled_qty.Value,
|
||||
pqty = 1,
|
||||
code_batch = batch,
|
||||
code_batch = report.batch,
|
||||
code = record.info,
|
||||
unit_id = prdMoTask.unit_id,
|
||||
carry_id = wmsCarryH.id,
|
||||
});
|
||||
}
|
||||
|
||||
await db.Updateable<PrdVisionResultRecord>()
|
||||
.SetColumns(x => x.status == 1).Where(x => ids.Contains(x.id)).ExecuteCommandAsync();
|
||||
}
|
||||
|
||||
|
||||
@@ -2130,7 +2239,7 @@ namespace Tnb.ProductionMgr
|
||||
erpExtendIds.Add(WmsWareHouseConst.AdministratorOrgId);
|
||||
erpExtendIds.Add(report.material_id);
|
||||
erpExtendIds.Add(report.unit_id);
|
||||
|
||||
|
||||
List<ErpExtendField> erpExtendFields = await _db.Queryable<ErpExtendField>().Where(x=>erpExtendIds.Contains(x.table_id)).ToListAsync();
|
||||
string erpCreateId = erpExtendFields.Find(x=>x.table_id==_userManager.UserId)?.user_id ?? "";
|
||||
ErpExtendField erpOrg = erpExtendFields.Find(x => x.table_id == (WmsWareHouseConst.AdministratorOrgId));
|
||||
@@ -2181,12 +2290,13 @@ 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);
|
||||
ThirdWebapiRecord thirdWebapiRecord = new ThirdWebapiRecord();
|
||||
thirdWebapiRecord.id = SnowflakeIdHelper.NextId();
|
||||
thirdWebapiRecord.third_name = WmsWareHouseConst.BIP;
|
||||
thirdWebapiRecord.name = "生产报告";
|
||||
thirdWebapiRecord.method = "POST";
|
||||
thirdWebapiRecord.url = WmsWareHouseConst.BIP_DOMAIN+"uapws/rest/pwrnew/save";
|
||||
thirdWebapiRecord.url = config.value+"uapws/rest/pwrnew/save";
|
||||
thirdWebapiRecord.request_data = JsonConvert.SerializeObject(erpRequestData);
|
||||
thirdWebapiRecord.create_time = DateTime.Now;
|
||||
|
||||
@@ -2256,51 +2366,15 @@ namespace Tnb.ProductionMgr
|
||||
throw Oops.Bah(x2ServerResult.Msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
await _db.Ado.CommitTranAsync();
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Error("提报失败", ex);
|
||||
await _db.Ado.RollbackTranAsync();
|
||||
throw Oops.Bah("提报失败:"+ex.Message);
|
||||
Log.Error("提报入库任务下发失败", e);
|
||||
throw Oops.Bah("提报入库任务下发失败:"+e.Message);
|
||||
}
|
||||
finally{
|
||||
prdreportSemaphore.Release();
|
||||
}
|
||||
|
||||
// DbResult<bool> result = await _repository.AsSugarClient().Ado.UseTranAsync(async () =>
|
||||
// {
|
||||
//
|
||||
//
|
||||
//
|
||||
// });
|
||||
|
||||
// if (result.IsSuccess)
|
||||
// {
|
||||
// if (!string.IsNullOrEmpty(basMaterial.category_id))
|
||||
// {
|
||||
// string[] arr = JsonConvert.DeserializeObject<string[]>(basMaterial.category_id);
|
||||
// if (arr.Length > 0 && arr.Contains("DGJCJ"))//短管挤出件入库申请
|
||||
// {
|
||||
// // string resultMsg = await _prdInstockService.InstockTubeOne(report);
|
||||
// // return resultMsg == "true" ? (dynamic)true : throw Oops.Bah(resultMsg);
|
||||
// return true;
|
||||
// }
|
||||
//
|
||||
// if (arr.Length > 0 && arr.Contains("CGJCJ"))//短管挤出件入库申请
|
||||
// {
|
||||
// string resultMsg = await _prdInstockService.InstockTubeThree(report);
|
||||
// return resultMsg == "true" ? (dynamic)true : throw Oops.Bah(resultMsg);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
return "入库任务下发成功";
|
||||
|
||||
return "提报成功";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -2652,14 +2726,14 @@ namespace Tnb.ProductionMgr
|
||||
.LeftJoin<PrdMo>((a, b, c, d, e, f) => a.mo_id == f.id)
|
||||
.LeftJoin<OrganizeEntity>((a, b, c, d, e, f, g) => a.workline_id == g.Id)
|
||||
.LeftJoin<EqpEquipment>((a, b, c, d, e, f, g, h) => a.eqp_id == h.id)
|
||||
.LeftJoin<UserEntity>((a, b, c, d, e, f, g, h,i)=>a.worker_id==i.Id)
|
||||
// .LeftJoin<UserEntity>((a, b, c, d, e, f, g, h,i)=>a.worker_id==i.Id)
|
||||
.WhereIF(!string.IsNullOrEmpty(moTaskCode), (a, b, c, d) => a.mo_task_code.Contains(moTaskCode))
|
||||
.WhereIF(!string.IsNullOrEmpty(eqpId) && equipIds.Count <= 0 && worklineIds.Count <= 0,
|
||||
(a, b, c, d) => a.workline_id == eqpId || a.eqp_id == eqpId)
|
||||
.WhereIF(worklineIds.Count > 0, (a, b, c, d) => worklineIds.Contains(a.workline_id))
|
||||
.WhereIF(equipIds.Count > 0, (a, b, c, d) => equipIds.Contains(a.eqp_id))
|
||||
.Where((a) => a.mo_task_status == DictConst.ToBeStartedEnCode || a.mo_task_code == DictConst.ToBeScheduledEncode || a.mo_task_code == DictConst.MoStatusPauseCode)
|
||||
.Select((a, b, c, d, e, f, g, h,i) => new WorkOrderAdjustmentListOutput
|
||||
.Select((a, b, c, d, e, f, g, h) => new WorkOrderAdjustmentListOutput
|
||||
{
|
||||
id = a.id,
|
||||
mo_task_code = a.mo_task_code,
|
||||
@@ -2679,8 +2753,25 @@ namespace Tnb.ProductionMgr
|
||||
eqp_id_id = a.eqp_id,
|
||||
create_time = a.create_time == null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS),
|
||||
schedule_type = a.schedule_type,
|
||||
worker_id = i.RealName
|
||||
// worker_id = i.RealName
|
||||
dayshift_worker_id = a.dayshift_worker_id,
|
||||
dayshiftafter_worker_id = a.dayshiftafter_worker_id,
|
||||
nightshift_worker_id = a.nightshift_worker_id,
|
||||
nightshiftafter_worker_id = a.nightshiftafter_worker_id,
|
||||
}).OrderByDescending(a => a.create_time).ToPagedListAsync(input.currentPage, input.pageSize);
|
||||
|
||||
List<string> userIdList = result.list.Select(x => x.dayshift_worker_id).Distinct().ToList();
|
||||
userIdList.AddRange(result.list.Select(x => x.dayshiftafter_worker_id).Distinct().ToList());
|
||||
userIdList.AddRange(result.list.Select(x => x.nightshift_worker_id).Distinct().ToList());
|
||||
userIdList.AddRange(result.list.Select(x => x.nightshiftafter_worker_id).Distinct().ToList());
|
||||
List<UserEntity> userEntities = await db.Queryable<UserEntity>().Where(x=>userIdList.Contains(x.Id)).ToListAsync();
|
||||
foreach (var item in result.list)
|
||||
{
|
||||
item.dayshift_worker_id = userEntities.Find(x=>x.Id==item.dayshift_worker_id)?.RealName ?? item.dayshift_worker_id;
|
||||
item.dayshiftafter_worker_id = userEntities.Find(x=>x.Id==item.dayshiftafter_worker_id)?.RealName ?? item.dayshiftafter_worker_id;
|
||||
item.nightshift_worker_id = userEntities.Find(x=>x.Id==item.nightshift_worker_id)?.RealName ?? item.nightshift_worker_id;
|
||||
item.nightshiftafter_worker_id = userEntities.Find(x=>x.Id==item.nightshiftafter_worker_id)?.RealName ?? item.nightshiftafter_worker_id;
|
||||
}
|
||||
return PageResult<WorkOrderAdjustmentListOutput>.SqlSugarPageResult(result);
|
||||
}
|
||||
|
||||
@@ -3654,13 +3745,56 @@ namespace Tnb.ProductionMgr
|
||||
{
|
||||
string ids = input.GetOrDefault("ids");
|
||||
string[] idList = ids.Split(",");
|
||||
string workerId = input.GetOrDefault("worker_id");
|
||||
// string workerId = input.GetOrDefault("worker_id");
|
||||
string dayshiftWorkerId = input.GetOrDefault("dayshift_worker_id");
|
||||
string nightshiftWorkerId = input.GetOrDefault("nightshift_worker_id");
|
||||
string dayshiftafterWorkerId = input.GetOrDefault("dayshiftafter_worker_id");
|
||||
string nightshiftafterWorkerId = input.GetOrDefault("nightshiftafter_worker_id");
|
||||
int row = await _db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.worker_id == workerId)
|
||||
.SetColumns(x => x.dayshift_worker_id == dayshiftWorkerId)
|
||||
.SetColumns(x => x.nightshift_worker_id == nightshiftWorkerId)
|
||||
.SetColumns(x => x.dayshiftafter_worker_id == dayshiftafterWorkerId)
|
||||
.SetColumns(x => x.nightshiftafter_worker_id == nightshiftafterWorkerId)
|
||||
.Where(x => idList.Contains(x.id))
|
||||
.ExecuteCommandAsync();
|
||||
return row>0 ? "分配成功" : "分配失败";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 末检
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
public async Task<dynamic> LastCheck(Dictionary<String,String> input)
|
||||
{
|
||||
string moTaskId = input.GetOrDefault("mo_task_id");
|
||||
PrdMoTask task = await _db.Queryable<PrdMoTask>().SingleAsync(x => x.id == moTaskId);
|
||||
if (task.has_last_check == 1)
|
||||
{
|
||||
throw Oops.Bah("已经生成过质检任务");
|
||||
}
|
||||
DbResult<bool> result = await _db.Ado.UseTranAsync(async () =>
|
||||
{
|
||||
await _db.Updateable<PrdMoTask>()
|
||||
.SetColumns(x => x.has_last_check==1)
|
||||
.Where(x => x.id == moTaskId)
|
||||
.ExecuteCommandAsync();
|
||||
|
||||
TriggerPlanEntity entity = new()
|
||||
{
|
||||
materialid = task.material_id,
|
||||
processid = task.process_id,
|
||||
workid = task.workstation_id,
|
||||
triggerevent = EnumTriggerEvent.末检质检方案,
|
||||
mo_task_code = task.mo_task_code,
|
||||
};
|
||||
|
||||
await _qcCheckPlanService.CreateTask(entity);
|
||||
});
|
||||
return !result.IsSuccess ? throw Oops.Oh(ErrorCode.COM1008) : (dynamic)(result.IsSuccess ? "操作成功" : result.ErrorMessage);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user