diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/WorkOrderAdjustmentListOutput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/WorkOrderAdjustmentListOutput.cs new file mode 100644 index 00000000..46a099c5 --- /dev/null +++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/WorkOrderAdjustmentListOutput.cs @@ -0,0 +1,21 @@ +namespace Tnb.ProductionMgr.Entities.Dto.PrdManage +{ + /// + /// 任务单调整列表输出 + /// + public class WorkOrderAdjustmentListOutput + { + public string id { get; set; } + public string mo_task_code { get; set; } + public string mo_task_status { get; set; } + public string material_id { get; set; } + public string mold_id { get; set; } + public int? plan_qty { get; set; } + public int? complete_qty { get; set; } + public int? scheduled_qty { get; set; } + public string workline_id { get; set; } + public string estimated_start_date { get; set; } + public string estimated_end_date { get; set; } + public string eqp_id { get; set; } + } +} \ No newline at end of file diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs index 4b8074d5..b53f0461 100644 --- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs +++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs @@ -888,6 +888,7 @@ namespace Tnb.ProductionMgr if (subTaskList?.Count > 0) { List subMoTasks = new(); + List subMoTaskLogs = new(); foreach (var item in subTaskList) { PrdMoTask subMoTask = new(); @@ -909,6 +910,20 @@ namespace Tnb.ProductionMgr subMoTask.create_id = _userManager.UserId; subMoTask.create_time = DateTime.Now; subMoTasks.Add(subMoTask); + + var subTaskLog = new PrdTaskLog(); + var subMaterial = await _db.Queryable().SingleAsync(x => x.id == item.material_id); + subTaskLog.id = SnowflakeIdHelper.NextId(); + subTaskLog.mo_code = (await _db.Queryable().FirstAsync(it => it.id == input.mo_id))?.mo_code!; + subTaskLog.item_code = subMaterial?.code!; + subTaskLog.item_standard = subMaterial?.material_standard!; + subTaskLog.status = DictConst.ToBeScheduledEncode; + subTaskLog.operator_name = _userManager.RealName; + subTaskLog.create_id = _userManager.UserId; + subTaskLog.create_time = DateTime.Now; + subTaskLog.mo_task_id = subMoTask.id; + subTaskLog.mo_task_code = subMoTask.mo_task_code!; + subMoTaskLogs.Add(subTaskLog); } //根据生产任务编号生成子任务编号 if (moTask.mo_task_code!.IsNotEmptyOrNull()) @@ -920,6 +935,7 @@ namespace Tnb.ProductionMgr } } row = await _db.Insertable(subMoTasks).ExecuteCommandAsync(); + await _db.Insertable(subMoTaskLogs).ExecuteCommandAsync(); } await _db.Ado.CommitTranAsync(); } @@ -1575,49 +1591,83 @@ namespace Tnb.ProductionMgr } return instance; } + // private async Task GetList(VisualDevModelListQueryInput input) + // { + // var db = _repository.AsSugarClient(); + // VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); + // var data = await _runService.GetListResult(templateEntity, input); + // if (data?.list?.Count > 0) + // { + // foreach (var row in data.list) + // { + // var dic = row.ToDictionary(x => x.Key, x => x.Value); + // var pkName = "material_id_id"; + // if (dic.ContainsKey(pkName)) + // { + // var materialId = dic[pkName]?.ToString(); + // var material = await db.Queryable().FirstAsync(it => it.id == materialId); + // if (material != null) + // { + // row["material_id"] = $"{material.code}/{material.name}"; + // } + // } + // //模具 + // if (dic.ContainsKey("mold_id")) + // { + // var moldId = dic["mold_id"]?.ToString(); + // var mold = await db.Queryable().FirstAsync(it => it.id == moldId); + // if (mold != null) + // { + // row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}"; + // } + // } + // //设备 + // if (dic.ContainsKey("eqp_id")) + // { + // var eqpId = dic["eqp_id"]?.ToString(); + // var eqp = await db.Queryable().FirstAsync(it => it.id == eqpId); + // if (eqp != null) + // { + // row["eqp_id"] = $"{eqp.code}/{eqp.name}"; + // } + // } + // } + // } + // return data!; + // } + private async Task GetList(VisualDevModelListQueryInput input) { var db = _repository.AsSugarClient(); - VisualDevEntity? templateEntity = await _visualDevService.GetInfoById(ModuleId, true); - var data = await _runService.GetListResult(templateEntity, input); - if (data?.list?.Count > 0) - { - foreach (var row in data.list) + Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary(); + string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : ""; + string eqpId = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : ""; + var result = await db.Queryable() + .LeftJoin((a, b) => a.material_id == b.id) + .LeftJoin((a, b, c) => c.EnCode == DictConst.TaskStatus) + .LeftJoin((a, b, c, d) => c.Id == d.DictionaryTypeId && a.mo_task_status == d.EnCode) + .LeftJoin((a,b,c,d,e)=>a.mold_id==e.id) + .LeftJoin((a,b,c,d,e,f)=>a.mo_id==f.id) + .LeftJoin((a,b,c,d,e,f,g)=>a.workline_id==g.Id) + .LeftJoin((a,b,c,d,e,f,g,h)=>a.eqp_id==h.id) + .WhereIF(!string.IsNullOrEmpty(moTaskCode), (a, b, c, d) => a.mo_task_code.Contains(moTaskCode)) + .WhereIF(!string.IsNullOrEmpty(eqpId), (a, b, c, d) => a.workline_id==eqpId || a.eqp_id==eqpId) + .Select((a, b, c, d,e,f,g,h) => new WorkOrderAdjustmentListOutput { - var dic = row.ToDictionary(x => x.Key, x => x.Value); - var pkName = "material_id_id"; - if (dic.ContainsKey(pkName)) - { - var materialId = dic[pkName]?.ToString(); - var material = await db.Queryable().FirstAsync(it => it.id == materialId); - if (material != null) - { - row["material_id"] = $"{material.code}/{material.name}"; - } - } - //模具 - if (dic.ContainsKey("mold_id")) - { - var moldId = dic["mold_id"]?.ToString(); - var mold = await db.Queryable().FirstAsync(it => it.id == moldId); - if (mold != null) - { - row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}"; - } - } - //设备 - if (dic.ContainsKey("eqp_id")) - { - var eqpId = dic["eqp_id"]?.ToString(); - var eqp = await db.Queryable().FirstAsync(it => it.id == eqpId); - if (eqp != null) - { - row["eqp_id"] = $"{eqp.code}/{eqp.name}"; - } - } - } - } - return data!; + id = a.id, + mo_task_code = a.mo_task_code, + material_id = b.code+"/"+b.name, + mold_id = e.mold_code+"/"+e.mold_name, + mo_task_status = d.FullName, + plan_qty = f.plan_qty, + complete_qty = SqlFunc.IsNull(a.reported_work_qty,0) + SqlFunc.IsNull(a.scrap_qty,0), + scheduled_qty = a.scheduled_qty, + workline_id = a.workline_id==null ? "" :g.EnCode+"/"+g.FullName, + estimated_start_date = a.estimated_start_date==null ? "" : a.estimated_start_date.Value.ToString("yyyy-MM-dd"), + estimated_end_date = a.estimated_end_date==null ? "" : a.estimated_end_date.Value.ToString("yyyy-MM-dd"), + eqp_id = a.eqp_id==null ? "" : h.code+"/"+h.name, + }).ToPagedListAsync(input.currentPage, input.pageSize); + return PageResult.SqlSugarPageResult(result); } ///