147 lines
8.0 KiB
C#
147 lines
8.0 KiB
C#
using JNPF.Common.Filter;
|
|
using JNPF.DependencyInjection;
|
|
using JNPF.DynamicApiController;
|
|
using JNPF.Systems.Entitys.Permission;
|
|
using JNPF.Systems.Entitys.System;
|
|
using JNPF.VisualDev;
|
|
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
|
using JNPF.VisualDev.Interfaces;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Newtonsoft.Json;
|
|
using SqlSugar;
|
|
using Tnb.BasicData;
|
|
using Tnb.BasicData.Entities;
|
|
using Tnb.EquipMgr.Entities;
|
|
using Tnb.ProductionMgr.Entities;
|
|
using Tnb.ProductionMgr.Entities.Dto;
|
|
using Tnb.ProductionMgr.Interfaces;
|
|
|
|
namespace Tnb.ProductionMgr
|
|
{
|
|
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
|
|
[Route("api/[area]/[controller]/[action]")]
|
|
[OverideVisualDev(ModuleId)]
|
|
public class PrdMoTaskIssueService : IOverideVisualDevService, IPrdMoTaskIssueService, IDynamicApiController, ITransient
|
|
{
|
|
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
|
private const string ModuleId = "25904314968613";
|
|
private readonly ISqlSugarRepository<PrdTask> _repository;
|
|
private readonly IRunService _runService;
|
|
private readonly IVisualDevService _visualDevService;
|
|
public PrdMoTaskIssueService(
|
|
ISqlSugarRepository<PrdTask> repository,
|
|
IRunService runService,
|
|
IVisualDevService visualDevService
|
|
)
|
|
{
|
|
_repository = repository;
|
|
_runService = runService;
|
|
_visualDevService = visualDevService;
|
|
OverideFuncs.GetListAsync = GetList;
|
|
|
|
}
|
|
|
|
// private async Task<dynamic> 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)
|
|
// {
|
|
// var scheduledTypeField = nameof(PrdMoTask.schedule_type);
|
|
// data.list = data.list.Where(it => it[scheduledTypeField].IsNotEmptyOrNull() && it[scheduledTypeField].ParseToInt() == 1).ToList();
|
|
// foreach (var row in data.list)
|
|
// {
|
|
// var dic = row.ToDictionary(x => x.Key, x => x.Value);
|
|
// var pkName = "material_id";
|
|
// if (dic.ContainsKey(pkName))
|
|
// {
|
|
// var materialId = dic[pkName]?.ToString();
|
|
// var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == materialId);
|
|
// if (material != null)
|
|
// {
|
|
// row["material_id"] = $"{material.code}/{material.name}";
|
|
// row["materialid"] = material.id;
|
|
// }
|
|
// }
|
|
// //模具
|
|
// if (dic.ContainsKey("mold_id"))
|
|
// {
|
|
// var moldId = dic["mold_id"]?.ToString();
|
|
// var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == moldId);
|
|
// if (mold != null)
|
|
// {
|
|
// row["mold_id"] = $"{mold.mold_code}/{mold.mold_name}";
|
|
// row["moldid"] = mold.id;
|
|
// }
|
|
// }
|
|
// //设备
|
|
// if (dic.ContainsKey("eqp_id"))
|
|
// {
|
|
// var eqpId = dic["eqp_id"]?.ToString();
|
|
// var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == eqpId);
|
|
// if (eqp != null)
|
|
// {
|
|
// row["eqp_id"] = $"{eqp.code}/{eqp.name}";
|
|
// row["eqpid"] = eqp.id;
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
// return data!;
|
|
// }
|
|
|
|
private async Task<dynamic> GetList(VisualDevModelListQueryInput input)
|
|
{
|
|
ISqlSugarClient db = _repository.AsSugarClient();
|
|
Dictionary<string, string>? queryJson = !string.IsNullOrEmpty(input.queryJson) ? JsonConvert.DeserializeObject<Dictionary<string, string>>(input.queryJson) : new Dictionary<string, string>();
|
|
string moTaskCode = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
|
|
string moTaskStatus = queryJson.ContainsKey("mo_task_status") ? queryJson["mo_task_status"].ToString() : "";
|
|
SqlSugarPagedList<PrdMoTaskIssueListOutput> result = await db.Queryable<PrdMoTask>()
|
|
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
|
|
.LeftJoin<DictionaryTypeEntity>((a, b, c) => c.EnCode == DictConst.TaskStatus)
|
|
.LeftJoin<DictionaryDataEntity>((a, b, c, d) => c.Id == d.DictionaryTypeId && a.mo_task_status == d.EnCode)
|
|
.LeftJoin<ToolMolds>((a, b, c, d, e) => a.mold_id == e.id)
|
|
.LeftJoin<PrdMo>((a, b, c, d, e, f) => a.mo_id == f.id)
|
|
.LeftJoin<EqpEquipment>((a, b, c, d, e, f, g) => g.id == a.eqp_id)
|
|
.LeftJoin<OrganizeEntity>((a, b, c, d, e, f, g,h)=>a.workstation_id==h.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(moTaskStatus), (a, b, c, d) => a.mo_task_status == moTaskStatus)
|
|
.Where((a, b, c, d, e, f) => a.schedule_type == 1)
|
|
.Select((a, b, c, d, e, f, g,h) => new PrdMoTaskIssueListOutput
|
|
{
|
|
id = a.id,
|
|
mo_task_code = a.mo_task_code,
|
|
material_id = b.code + "/" + b.name,
|
|
mold_id = e.mold_code + "/" + e.mold_name,
|
|
eqp_id = g.code + "/" + g.name,
|
|
mo_task_status = d.FullName,
|
|
workstation_id = h.FullName,
|
|
// worker_id = i.RealName,
|
|
plan_qty = f.plan_qty,
|
|
scheduled_qty = a.scheduled_qty,
|
|
create_time = a.create_time == null ? "" : a.create_time.Value.ToString(DbTimeFormat.SS),
|
|
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<PrdMoTaskIssueListOutput>.SqlSugarPageResult(result);
|
|
}
|
|
}
|
|
}
|