180 lines
7.7 KiB
C#
180 lines
7.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using COSXML.Model.Tag;
|
|
using JNPF.Common.Core.Manager;
|
|
using JNPF.DependencyInjection;
|
|
using JNPF.DynamicApiController;
|
|
using JNPF.Systems.Interfaces.System;
|
|
using JNPF.VisualDev;
|
|
using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
|
|
using JNPF.VisualDev.Entitys;
|
|
using JNPF.VisualDev.Interfaces;
|
|
using NPOI.Util;
|
|
using SqlSugar;
|
|
using Tnb.BasicData.Entities;
|
|
using Tnb.EquipMgr.Entities;
|
|
using Tnb.ProductionMgr.Entities;
|
|
using Tnb.ProductionMgr.Interfaces;
|
|
using Aspose.Cells.Drawing;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using DbModels;
|
|
using JNPF.Common.Extension;
|
|
using Tnb.ProductionMgr.Entities.Dto.PrdManage;
|
|
|
|
namespace Tnb.ProductionMgr
|
|
{
|
|
[ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
|
|
[Route("api/[area]/[controller]/[action]")]
|
|
[OverideVisualDev(ModuleId)]
|
|
public class PrdTaskManageService : IPrdTaskManageService, IOverideVisualDevService, IDynamicApiController, ITransient
|
|
{
|
|
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
|
private const string ModuleId = "25617945906709";
|
|
private readonly ISqlSugarRepository<PrdTask> _repository;
|
|
private readonly IUserManager _userManager;
|
|
private readonly IDictionaryDataService _dictionaryDataService;
|
|
private readonly IRunService _runService;
|
|
private readonly IVisualDevService _visualDevService;
|
|
public PrdTaskManageService(
|
|
ISqlSugarRepository<PrdTask> repository,
|
|
IUserManager userManager,
|
|
IDictionaryDataService dictionaryDataService,
|
|
IRunService runService,
|
|
IVisualDevService visualDevService
|
|
)
|
|
{
|
|
_repository = repository;
|
|
_userManager = userManager;
|
|
_dictionaryDataService = dictionaryDataService;
|
|
_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 statusField = "mo_task_status";
|
|
var scheduledTypeField = nameof(PrdMoTask.schedule_type);
|
|
data.list = data.list.Where(it => it.ContainsKey(statusField) &&
|
|
it[statusField].IsNotEmptyOrNull() && it[statusField].ToString() != "待下发" &&
|
|
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[pkName] = $"{material.code}/{material.name}";
|
|
}
|
|
}
|
|
//模具
|
|
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}";
|
|
}
|
|
}
|
|
//设备
|
|
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}";
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
return data!;
|
|
}
|
|
/// <summary>
|
|
/// 根据任务单号获取提报记录明细
|
|
/// </summary>
|
|
/// <param name="icmoCode">任务单号</param>
|
|
/// <remarks>
|
|
/// returns:
|
|
///<br/> {
|
|
///<br/> icmo_qty:任务计划数量
|
|
///<br/> reported_work_qty:已报工数量
|
|
///<br/> reported_qty:报工数量
|
|
///<br/> prd_qty:生产数量
|
|
///<br/> }
|
|
/// </remarks>
|
|
[HttpGet]
|
|
public async Task<dynamic> GetPrdReportByIcmoCode([FromRoute] string mo_task_code)
|
|
{
|
|
var db = _repository.AsSugarClient();
|
|
var prdTask = await db.Queryable<PrdMoTask>().FirstAsync(it => it.mo_task_code == mo_task_code);
|
|
var eqpCode = "";
|
|
var moldCode = "";
|
|
var materialCode = "";
|
|
var materialName = "";
|
|
var materialProp = "";
|
|
if (prdTask != null)
|
|
{
|
|
var eqp = await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == prdTask.eqp_id);
|
|
var mold = await db.Queryable<ToolMolds>().FirstAsync(it => it.id == prdTask.mold_id);
|
|
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == prdTask.material_id);
|
|
eqpCode = eqp != null ? eqp.code : "";
|
|
moldCode = mold != null ? mold.mold_code : "";
|
|
materialCode = material != null ? material.code : "";
|
|
materialName = material != null ? material.name : "";
|
|
materialProp = material != null ? material.material_property : "";
|
|
|
|
}
|
|
var res = await db.Queryable<PrdReport>().Where(it => it.mo_task_code == mo_task_code)
|
|
.Select(it => new PrdReportOutput
|
|
{
|
|
icmo_qty = it.icmo_qty,
|
|
reported_work_qty = it.reported_work_qty,
|
|
reported_qty = it.reported_qty,
|
|
prd_qty = it.prd_qty,
|
|
scrap_qty = SqlFunc.Subqueryable<PrdMoTaskDefect>().Where(pmtd => pmtd.mo_task_id == it.mo_task_id).Select(pmtd => pmtd.scrap_qty),
|
|
})
|
|
.Mapper(it =>
|
|
{
|
|
it.icmo_qty = it.icmo_qty ?? (db.Queryable<PrdTask>().First(it => it.icmo_code == mo_task_code)?.scheduled_qty < 1 ? 0 : it.icmo_qty ?? db.Queryable<PrdTask>().First(it => it.icmo_code == mo_task_code).scheduled_qty);
|
|
it.reported_work_qty = it.reported_work_qty ?? 0;
|
|
it.reported_qty = it.reported_qty ?? 0;
|
|
it.prd_qty = it.prd_qty ?? 0;
|
|
it.scrap_qty = it.scrap_qty ?? 0;
|
|
})
|
|
.FirstAsync();
|
|
prdTask.eqp_code = eqpCode;
|
|
prdTask.mold_code = moldCode;
|
|
prdTask.material_code = materialCode;
|
|
prdTask.material_name = materialName;
|
|
prdTask.icmo_qty = res?.icmo_qty;
|
|
prdTask.reported_work_qty = res?.reported_work_qty ?? 0;
|
|
prdTask.reported_qty = res?.reported_qty ?? 0;
|
|
prdTask.prd_qty = res?.prd_qty ?? 0;
|
|
|
|
return prdTask;
|
|
}
|
|
|
|
//public async Task<dynamic> GetPrdMoTaskList()
|
|
//{
|
|
// var db= _repository.AsSugarClient();
|
|
//}
|
|
}
|
|
}
|