新增生产管理,组装包装根据BomId拆解生产任务接口

This commit is contained in:
DEVICE8\12494
2023-05-15 18:11:11 +08:00
parent 6e9d1169ce
commit ed87bd712c
5 changed files with 186 additions and 84 deletions

View File

@@ -26,6 +26,10 @@ public static class DictConst
/// </summary> /// </summary>
public const string AlreadyId = "26033187948309"; public const string AlreadyId = "26033187948309";
/// <summary> /// <summary>
/// 工单状态-已下发Id
/// </summary>
public const string ScheduledId = "25019232867093";
/// <summary>
/// 工单状态-待排产 /// 工单状态-待排产
/// </summary> /// </summary>
public const string WaitProductId = "25019244276501"; public const string WaitProductId = "25019244276501";

View File

@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
{
/// <summary>
/// 组装、包装排产列表输出类
/// </summary>
public class PackingSchedulingListOutput
{
/// <summary>
/// 产线Id
/// </summary>
public string workline_id { get; set; }
/// <summary>
/// 产线名称
/// </summary>
public string workline_name { get; set; }
/// <summary>
/// 生产任务单号
/// </summary>
public string mo_task_code { get; set; }
/// <summary>
/// 物料编码
/// </summary>
public string material_code { get; set; }
/// <summary>
/// 物料名称
/// </summary>
public string material_name { get; set; }
/// <summary>
/// 产出数量
/// </summary>
public string qty { get; set; }
}
}

View File

@@ -78,7 +78,7 @@ namespace Tnb.ProductionMgr.Entities.Dto
/// Default:NULL::character varying /// Default:NULL::character varying
/// Nullable:True /// Nullable:True
/// </summary> /// </summary>
public string line_id { get; set; } public string workline_id { get; set; }
/// <summary> /// <summary>
@@ -106,6 +106,11 @@ namespace Tnb.ProductionMgr.Entities.Dto
/// 已排产数量 /// 已排产数量
/// </summary> /// </summary>
public int scheduled_qty { get; set; } public int scheduled_qty { get; set; }
/// <summary>
/// 生产bom id
/// </summary>
public string bom_id { get; set; }
} }
} }

View File

@@ -32,6 +32,7 @@ using JNPF.VisualDev.Entitys;
using Aop.Api.Domain; using Aop.Api.Domain;
using Senparc.Weixin.MP.AdvancedAPIs.Card; using Senparc.Weixin.MP.AdvancedAPIs.Card;
using Aspose.Cells.Drawing.Texts; using Aspose.Cells.Drawing.Texts;
using JNPF.Systems.Entitys.Permission;
namespace Tnb.ProductionMgr namespace Tnb.ProductionMgr
{ {
@@ -48,6 +49,7 @@ namespace Tnb.ProductionMgr
private readonly IRunService _runService; private readonly IRunService _runService;
private readonly IVisualDevService _visualDevService; private readonly IVisualDevService _visualDevService;
private static Dictionary<string, object> _dicDefect = new Dictionary<string, object>(); private static Dictionary<string, object> _dicDefect = new Dictionary<string, object>();
private static Dictionary<string, object> _dicWorkLine = new Dictionary<string, object>();
private readonly ISqlSugarClient _db; private readonly ISqlSugarClient _db;
@@ -374,6 +376,7 @@ namespace Tnb.ProductionMgr
} }
#endregion #endregion
@@ -403,7 +406,9 @@ namespace Tnb.ProductionMgr
{ {
var db = _repository.AsSugarClient(); var db = _repository.AsSugarClient();
var row = -1; var row = -1;
if (input.schedule_type.HasValue && input.schedule_type.Value == 1) if (input.schedule_type.HasValue)
{
if (input.schedule_type.Value == 1) //注塑、基础排产
{ {
var moTask = input.Adapt<PrdMoTask>(); var moTask = input.Adapt<PrdMoTask>();
moTask.id = SnowflakeIdHelper.NextId(); moTask.id = SnowflakeIdHelper.NextId();
@@ -494,8 +499,56 @@ namespace Tnb.ProductionMgr
await db.Ado.RollbackTranAsync(); await db.Ado.RollbackTranAsync();
} }
} }
else if (input.schedule_type.Value == 2) //组装、包装排产
{
}
}
return row > 0; return row > 0;
} }
/// <summary>
/// 获取组装包装排产任务列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> GetPackSchedulingTaskList(ProductionSchedulingCrInput input)
{
if (_dicWorkLine.Count < 1)
{
_dicWorkLine = await _db.Queryable<OrganizeEntity>().Where(it => it.Category == "workline").ToDictionaryAsync(x => x.Id, x => x.FullName);
}
var outputList = new List<PackingSchedulingListOutput>();
var bom = await _db.Queryable<BasMbom>().FirstAsync(it => it.id == input.bom_id);
if (bom != null && bom.route_id.IsNotEmptyOrNull())
{
var routes = await _db.Queryable<BasRouteD>().Where(it => it.route_id == bom.route_id).ToListAsync();
if (routes?.Count > 0)
{
var processIds = routes.Select(x => x.process_id).ToList();
if (processIds?.Count > 0)
{
var bomOutputs = await _db.Queryable<BasMbomOutput>().Where(it => processIds.Contains(it.process_id)).ToListAsync();
if (bomOutputs?.Count > 0)
{
foreach (var item in bomOutputs)
{
var material = await _db.Queryable<BasMaterial>().FirstAsync(it => it.id == item.material_id);
var output = new PackingSchedulingListOutput();
output.workline_id = input.workline_id;
output.workline_name = _dicWorkLine.ContainsKey(input.workline_id) ? _dicWorkLine[input.workline_id].ToString() : "";
output.material_code = material?.code;
output.material_name = material?.name;
output.qty = item.num;
outputList.Add(output);
}
}
}
}
}
return outputList;
}
/// <summary> /// <summary>
/// 生产任务下发,开始 、结束、完成 /// 生产任务下发,开始 、结束、完成
/// </summary> /// </summary>
@@ -588,8 +641,10 @@ namespace Tnb.ProductionMgr
} }
else else
{ {
if (taskLog.status != status) var records = await db.Queryable<PrdTaskLog>().Where(it => it.mo_task_id == taskLog.mo_task_id).ToListAsync();
if (records != null && !records.Select(x => x.status).Contains(status))
{ {
taskLog.id = SnowflakeIdHelper.NextId(); taskLog.id = SnowflakeIdHelper.NextId();
taskLog.status = status; taskLog.status = status;
taskLogEntities.Add(taskLog); taskLogEntities.Add(taskLog);
@@ -667,7 +722,6 @@ namespace Tnb.ProductionMgr
var db = _repository.AsSugarClient(); var db = _repository.AsSugarClient();
var report = await db.Queryable<PrdReport>().FirstAsync(it => it.mo_task_code == input.mo_task_code); var report = await db.Queryable<PrdReport>().FirstAsync(it => it.mo_task_code == input.mo_task_code);
if (report is not null) if (report is not null)
{ {
report.mo_task_code = input.mo_task_code; report.mo_task_code = input.mo_task_code;
@@ -818,15 +872,15 @@ namespace Tnb.ProductionMgr
var result = await db.Ado.UseTranAsync(async () => var result = await db.Ado.UseTranAsync(async () =>
{ {
var row = -1; var row = -1;
var prdTask = await db.Queryable<PrdTask>().FirstAsync(it => it.id == id); var prdTask = await db.Queryable<PrdMoTask>().FirstAsync(it => it.id == id);
row = await db.Deleteable<PrdTask>().Where(it => it.id == id).ExecuteCommandAsync(); row = await db.Deleteable<PrdTask>().Where(it => it.id == id).ExecuteCommandAsync();
if (row > 0) if (row > 0)
{ {
var prdMo = await db.Queryable<PrdMo>().FirstAsync(it => it.id == prdTask.mo_id); var prdMo = await db.Queryable<PrdMo>().FirstAsync(it => it.id == prdTask.mo_id);
if (prdMo is not null) if (prdMo is not null)
{ {
prdMo.input_qty += prdTask.scheduled_qty; prdMo.scheduled_qty += prdTask.scheduled_qty;
//prdMo.icmo_status = DictConst.ToBeScheduledEncode; prdMo.mo_status = DictConst.ScheduledId;
row = await db.Updateable(prdMo).ExecuteCommandAsync(); row = await db.Updateable(prdMo).ExecuteCommandAsync();
} }
} }

View File

@@ -1010,7 +1010,7 @@ public class DataInterfaceService : IDataInterfaceService, IDynamicApiController
// 将逗号替换成一个单引号、逗号、单引号 // 将逗号替换成一个单引号、逗号、单引号
item.defaultValue = item.defaultValue?.Replace(",", "','"); item.defaultValue = item.defaultValue?.Replace(",", "','");
entity.Query = entity.Query?.Replace("{" + item.field + "}", "'" + item.defaultValue + "'"); entity.Query = entity.Query?.Replace("{" + item.field + "}", item.defaultValue); //自动加引号去掉 modify by ly on 20230515
} }
else else
entity.Query = entity.Query?.Replace("{" + item.field + "}", item.defaultValue); entity.Query = entity.Query?.Replace("{" + item.field + "}", item.defaultValue);