正向追溯相关接口

This commit is contained in:
2023-08-21 11:52:06 +08:00
parent 807f656792
commit 03b815824a
3 changed files with 138 additions and 23 deletions

View File

@@ -27,6 +27,22 @@ public static class DictConst
/// 备品备件类型
/// </summary>
public const string SparePartsType = "SparePartsType";
/// <summary>
/// 注塑工单
/// </summary>
public const string PrdMoTypeZS = "25572555259157";
/// <summary>
/// 挤出工单
/// </summary>
public const string PrdMoTypeJC = "25019172714005";
/// <summary>
/// 组装工单
/// </summary>
public const string PrdMoTypeZZ = "25019181615125";
/// <summary>
/// 包装工单
/// </summary>
public const string PrdMoTypeBZ = "25019191681045";
#endregion

View File

@@ -52,7 +52,34 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
public string? workline_name { get; set; }
public string? workshop_name { get; set; }
public string? mbom_version { get; set; }
public string station_name { get; set; }
public string equip_code { get; set; }
}
/// <summary>
/// 工单追溯二级列表输出类
/// </summary>
public class PrdMoFromManListOutput
{
// /// <summary>
// /// 提报id
// /// </summary>
// public string id { get; set; }
//
// public string workgroup_name { get; set; }
public string employee_name { get; set; }
public string work_time { get; set; }
public DateTime? start_time { get; set; }
public DateTime? end_time { get; set; }
}
}

View File

@@ -418,29 +418,101 @@ namespace Tnb.ProductionMgr
public async Task<dynamic> PrdMoFromTwoList(Dictionary<string,string> dic)
{
string mo_id = dic.ContainsKey("mo_id") ? dic["mo_id"] : "";
return await _db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<OrganizeEntity>((a, b, c) => a.workline_id == c.Id)
.LeftJoin<BasMbom>((a, b, c, d) => a.bom_id == d.id)
.WhereIF(!string.IsNullOrEmpty(mo_id),(a,b,c,d)=>a.mo_id==mo_id)
.Select((a, b, c, d) =>
new PrdMoFromTwoListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = a.material_id,
material_code = b.code,
material_name = b.name,
material_standard = b.material_standard,
act_start_date = a.act_start_date == null
? ""
: a.act_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
act_end_date = a.act_end_date == null
? ""
: a.act_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
workline_name = c.FullName,
mbom_version = d.version
}).ToListAsync();
string mo_task_code = dic.ContainsKey("mo_task_code") ? dic["mo_task_code"] : "";
string batch = dic.ContainsKey("batch") ? dic["batch"] : "";
List<string> ids = new List<string>();
if (!string.IsNullOrEmpty(batch))
{
ids = await _db.Queryable<PrdReport>().Where(x => x.batch.Contains(batch)).Select(x=>x.mo_task_id).ToListAsync();
}
PrdMo prdMo = await _repository.GetSingleAsync(x => x.id == mo_id);
if (prdMo.mo_type is DictConst.PrdMoTypeZS or DictConst.PrdMoTypeJC)
{
return await _db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<OrganizeRelationEntity>((a,b,c)=>a.eqp_id==c.ObjectId && c.ObjectType=="Eqp")
.LeftJoin<OrganizeEntity>((a,b,c,d)=>c.OrganizeId==d.Id)
.LeftJoin<OrganizeEntity>((a,b,c,d,e)=>d.OrganizeIdTree.Contains(e.Id) && e.Category==DictConst.RegionCategoryWorkshopCode)
.LeftJoin<EqpEquipment>((a,b,c,d,e,f)=>a.eqp_id==f.id)
.WhereIF(!string.IsNullOrEmpty(mo_id),(a,b,c,d)=>a.mo_id==mo_id)
.WhereIF(!string.IsNullOrEmpty(mo_task_code),(a,b,c,d)=>a.mo_task_code==mo_task_code)
.WhereIF(ids!=null && ids.Count>0,(a,b,c,d)=>ids.Contains(a.id))
.Select((a, b, c, d,e,f) =>
new PrdMoFromTwoListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = a.material_id,
material_code = b.code,
material_name = b.name,
material_standard = b.material_standard,
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
workshop_name = e.FullName,
station_name = d.FullName,
equip_code = f.code
}).ToListAsync();
}
else
{
return await _db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<OrganizeEntity>((a, b, c) => a.workline_id == c.Id)
.LeftJoin<BasMbom>((a, b, c, d) => a.bom_id == d.id)
.WhereIF(!string.IsNullOrEmpty(mo_id),(a,b,c,d)=>a.mo_id==mo_id)
.WhereIF(!string.IsNullOrEmpty(mo_task_code),(a,b,c,d)=>a.mo_task_code==mo_task_code)
.WhereIF(ids!=null && ids.Count>0,(a,b,c,d)=>ids.Contains(a.id))
.Select((a, b, c, d) =>
new PrdMoFromTwoListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = a.material_id,
material_code = b.code,
material_name = b.name,
material_standard = b.material_standard,
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
workline_name = c.FullName,
mbom_version = d.version
}).ToListAsync();
}
}
/// <summary>
/// 工单追溯人列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> PrdMoFromManList(Dictionary<string,string> dic)
{
string mo_task_id = dic.ContainsKey("mo_task_id") ? dic["mo_task_id"] : "";
string batch = dic.ContainsKey("batch") ? dic["batch"] : "";
List<string> ids = new List<string>();
if (!string.IsNullOrEmpty(batch))
{
ids = await _db.Queryable<PrdReport>().Where(x => x.batch.Contains(batch)).Select(x=>x.mo_task_id).ToListAsync();
}
return await _db.Queryable<PrdReport>()
.LeftJoin<UserEntity>((a, b) => a.create_id == b.Id)
.WhereIF(!string.IsNullOrEmpty(mo_task_id), (a, b) => a.mo_task_id == mo_task_id)
.WhereIF(ids!=null && ids.Count>0,(a,b)=>ids.Contains(a.mo_task_id))
.GroupBy((a,b)=>new {a.create_id,employee_name = b.RealName})
.Select((a, b) => new PrdMoFromManListOutput()
{
// id = a.id,
employee_name = b.RealName,
start_time = SqlFunc.AggregateMin(a.create_time),
end_time = SqlFunc.AggregateMax(a.create_time)
}).Mapper(x =>
{
x.work_time = (x.start_time == null ? "" : x.start_time.Value.ToString("yyyy-MM-dd HH:mm:ss")) + "~" + (x.end_time == null ? "" : x.end_time.Value.ToString("yyyy-MM-dd HH:mm:ss"));
})
.ToListAsync();
}
#endregion