调整生产管理模块代码
This commit is contained in:
@@ -0,0 +1,73 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.DirectoryServices.Protocols;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Security.Principal;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
|
||||||
|
{
|
||||||
|
public class PrdMoTaskOutput
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 生产任务单号
|
||||||
|
/// </summary>
|
||||||
|
public string mo_task_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 任务单状态
|
||||||
|
/// </summary>
|
||||||
|
public string mo_task_status { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 物料编号
|
||||||
|
/// </summary>
|
||||||
|
public string material_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 物料名称
|
||||||
|
/// </summary>
|
||||||
|
public string material_name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 模具编码
|
||||||
|
/// </summary>
|
||||||
|
public string mold_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 模具名称
|
||||||
|
/// </summary>
|
||||||
|
public string mold_name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 设备编码
|
||||||
|
/// </summary>
|
||||||
|
public string eqp_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 设备名称
|
||||||
|
/// </summary>
|
||||||
|
public string eqp_name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 设备型号
|
||||||
|
/// </summary>
|
||||||
|
public string eqp_type_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 任务单数量
|
||||||
|
/// </summary>
|
||||||
|
public int mo_task_qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 完成数量
|
||||||
|
/// </summary>
|
||||||
|
public int complete_qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 计划生产数量
|
||||||
|
/// </summary>
|
||||||
|
public int plan_qty { get; set; }
|
||||||
|
public int scheduled_qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 预计开工时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime estimated_start_date { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 预计完工时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime estimated_end_date { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,11 +10,41 @@ namespace Tnb.ProductionMgr.Entities.Dto
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 生产任务重新排序输出参数
|
/// 生产任务重新排序输出参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class PrdTaskSortOutput : PrdTask
|
public class PrdTaskSortOutput
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 序号
|
/// 序号
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int no { get; set; }
|
public int no { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 生产任务编号
|
||||||
|
/// </summary>
|
||||||
|
public string mo_status_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 生产任务状态
|
||||||
|
/// 生产任务状态
|
||||||
|
/// </summary>
|
||||||
|
public string status { get; set;}
|
||||||
|
/// <summary>
|
||||||
|
/// 是否同组标识
|
||||||
|
/// </summary>
|
||||||
|
public int group_flag { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 计划生产量
|
||||||
|
/// </summary>
|
||||||
|
public int plan_qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 已完工数量
|
||||||
|
/// </summary>
|
||||||
|
public int comple_qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 产品名称
|
||||||
|
/// </summary>
|
||||||
|
public string item_name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 模具编码
|
||||||
|
/// </summary>
|
||||||
|
public string mold_code { get; set; }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,19 +37,19 @@ namespace Tnb.ProductionMgr.Entities.Dto
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? plan_end_date { get; set; }
|
public DateTime? plan_end_date { get; set; }
|
||||||
|
|
||||||
///// <summary>
|
/// <summary>
|
||||||
///// Desc:预计开始时间
|
/// Desc:预计开始时间
|
||||||
///// Default:
|
/// Default:
|
||||||
///// Nullable:True
|
/// Nullable:True
|
||||||
///// </summary>
|
/// </summary>
|
||||||
//public DateTime? estimated_start_date { get; set; }
|
public DateTime? estimated_start_date { get; set; }
|
||||||
|
|
||||||
///// <summary>
|
/// <summary>
|
||||||
///// Desc:预计结束时间
|
/// Desc:预计结束时间
|
||||||
///// Default:
|
/// Default:
|
||||||
///// Nullable:True
|
/// Nullable:True
|
||||||
///// </summary>
|
/// </summary>
|
||||||
//public DateTime? estimated_end_date { get; set; }
|
public DateTime? estimated_end_date { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ namespace Tnb.ProductionMgr.Entities
|
|||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? cavity_qty { get; set; }
|
public int cavity_qty { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:模具寿命
|
/// Desc:模具寿命
|
||||||
|
|||||||
@@ -49,14 +49,14 @@ namespace Tnb.ProductionMgr.Entities
|
|||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public decimal plan_qty {get;set;}
|
public int plan_qty {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:已投入数量
|
/// Desc:已投入数量
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public decimal? input_qty {get;set;}
|
public int input_qty {get;set;}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:已完工数量
|
/// Desc:已完工数量
|
||||||
|
|||||||
@@ -11,193 +11,225 @@ namespace DbModels
|
|||||||
[SugarTable("prd_mo_task")]
|
[SugarTable("prd_mo_task")]
|
||||||
public partial class PrdMoTask
|
public partial class PrdMoTask
|
||||||
{
|
{
|
||||||
public PrdMoTask(){
|
public PrdMoTask()
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:排产类型:1、注塑、挤出2、组装、包装
|
/// Desc:排产类型:1、注塑、挤出2、组装、包装
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? schedule_type {get;set;}
|
public int? schedule_type { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:计划开始时间
|
/// Desc:计划开始时间
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? plan_start_date {get;set;}
|
public DateTime? plan_start_date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:计划结束时间
|
/// Desc:计划结束时间
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? plan_end_date {get;set;}
|
public DateTime? plan_end_date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:实际开工日期
|
/// Desc:实际开工日期
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? act_start_date {get;set;}
|
public DateTime? act_start_date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:实际完工日期
|
/// Desc:实际完工日期
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? act_end_date {get;set;}
|
public DateTime? act_end_date { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:创建人
|
/// Desc:创建人
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string create_id {get;set;}
|
public string create_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:创建时间
|
/// Desc:创建时间
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? create_time {get;set;}
|
public DateTime? create_time { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:修改人
|
/// Desc:修改人
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string modify_id {get;set;}
|
public string modify_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:修改时间
|
/// Desc:修改时间
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime? modify_time {get;set;}
|
public DateTime? modify_time { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:扩展字段
|
/// Desc:扩展字段
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string extras {get;set;}
|
public string extras { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:编号
|
/// Desc:编号
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:False
|
/// Nullable:False
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[SugarColumn(IsPrimaryKey=true)]
|
[SugarColumn(IsPrimaryKey = true)]
|
||||||
public string id {get;set;}
|
public string id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:生产任务编号
|
/// Desc:生产任务编号
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string mo_task_code {get;set;}
|
public string mo_task_code { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:工单Id
|
/// Desc:工单Id
|
||||||
/// Default:NULL::character varying
|
/// Default:NULL::character varying
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string mo_id {get;set;}
|
public string mo_id { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:物料Id
|
/// Desc:物料Id
|
||||||
/// Default:NULL::character varying
|
/// Default:NULL::character varying
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string material_id {get;set;}
|
public string material_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:模具Id
|
/// Desc:模具Id
|
||||||
/// Default:NULL::character varying
|
/// Default:NULL::character varying
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string mold_id {get;set;}
|
public string mold_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:设备Id
|
/// Desc:设备Id
|
||||||
/// Default:NULL::character varying
|
/// Default:NULL::character varying
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string eqp_id {get;set;}
|
public string eqp_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:产线id
|
/// Desc:产线id
|
||||||
/// Default:NULL::character varying
|
/// Default:NULL::character varying
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string workline_id {get;set;}
|
public string workline_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:工位id
|
/// Desc:工位id
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string workstation_id {get;set;}
|
public string workstation_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:工艺路线id
|
/// Desc:工艺路线id
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string workroute_id {get;set;}
|
public string workroute_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:生产bom id
|
/// Desc:生产bom id
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string bom_id {get;set;}
|
public string bom_id { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:任务单状态
|
/// Desc:任务单状态
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string mo_task_status {get;set;}
|
public string mo_task_status { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:计划数量
|
/// Desc:计划数量
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int plan_qty {get;set;}
|
public int plan_qty { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:已投入数量
|
/// Desc:已投入数量
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int input_qty {get;set;}
|
public int input_qty { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:已完工数量
|
/// Desc:已完工数量
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public decimal? complete_qty {get;set;}
|
public int complete_qty { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Desc:报废数量
|
/// Desc:报废数量
|
||||||
/// Default:
|
/// Default:
|
||||||
/// Nullable:True
|
/// Nullable:True
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int scrap_qty {get;set;}
|
public int scrap_qty { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Desc:已排产数量
|
||||||
|
/// Default:
|
||||||
|
/// Nullable:True
|
||||||
|
/// </summary>
|
||||||
|
public int scheduled_qty { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 预计开工时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime estimated_start_date { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 预计完工时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime estimated_end_date { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 是否同组标识
|
||||||
|
/// </summary>
|
||||||
|
public int group_flag { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 设备编码
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public string eqp_type_code { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// 模具编码
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public string mold_code { get; set; }
|
||||||
|
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public string mold_name { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
///模穴数
|
||||||
|
/// </summary>
|
||||||
|
[SugarColumn(IsIgnore = true)]
|
||||||
|
public int mold_cavity_qty { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Desc:已排产数量
|
|
||||||
/// Default:
|
|
||||||
/// Nullable:True
|
|
||||||
/// </summary>
|
|
||||||
public int scheduled_qty {get;set;}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ namespace Tnb.ProductionMgr.Entities
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 生产任务ID
|
/// 生产任务ID
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string task_id { get;set;}
|
public string mo_task_id { get;set;}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ namespace Tnb.ProductionMgr.Entities.Mapper
|
|||||||
public void Register(TypeAdapterConfig config)
|
public void Register(TypeAdapterConfig config)
|
||||||
{
|
{
|
||||||
config.ForType<PrdTask, PrdTaskLog>()
|
config.ForType<PrdTask, PrdTaskLog>()
|
||||||
.Map(dest => dest.task_id, src => src.prd_task_id);
|
.Map(dest => dest.mo_task_id, src => src.prd_task_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,6 +31,7 @@ using JNPF.VisualDev.Interfaces;
|
|||||||
using JNPF.VisualDev.Entitys;
|
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;
|
||||||
|
|
||||||
namespace Tnb.ProductionMgr
|
namespace Tnb.ProductionMgr
|
||||||
{
|
{
|
||||||
@@ -47,6 +48,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 readonly ISqlSugarClient _db;
|
||||||
|
|
||||||
|
|
||||||
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
|
||||||
@@ -63,6 +65,7 @@ namespace Tnb.ProductionMgr
|
|||||||
_dictionaryDataService = dictionaryDataService;
|
_dictionaryDataService = dictionaryDataService;
|
||||||
_runService = runService;
|
_runService = runService;
|
||||||
_visualDevService = visualDevService;
|
_visualDevService = visualDevService;
|
||||||
|
_db = _repository.AsSugarClient();
|
||||||
OverideFuncs.DeleteAsync = Delete;
|
OverideFuncs.DeleteAsync = Delete;
|
||||||
OverideFuncs.GetListAsync = GetList;
|
OverideFuncs.GetListAsync = GetList;
|
||||||
|
|
||||||
@@ -162,14 +165,27 @@ namespace Tnb.ProductionMgr
|
|||||||
public async Task<dynamic> PrdTaskSort(string eqpId)
|
public async Task<dynamic> PrdTaskSort(string eqpId)
|
||||||
{
|
{
|
||||||
var taskStatusDic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
|
var taskStatusDic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
|
||||||
var list = await _repository.AsSugarClient().Queryable<PrdTask>()
|
var list = await _repository.AsSugarClient().Queryable<PrdMoTask>()
|
||||||
.Where(it => it.eqp_id == eqpId)
|
.LeftJoin<PrdMo>((a, b) => a.mo_id == b.id)
|
||||||
.OrderBy(o => o.estimated_start_date)
|
.LeftJoin<BasMaterial>((a, b, c) => a.material_id == c.id)
|
||||||
|
.LeftJoin<Molds>((a, b, c, d) => a.mold_id == d.id)
|
||||||
|
.Where((a, b, c, d) => a.eqp_id == eqpId)
|
||||||
|
.OrderBy((a, b, c, d) => a.estimated_start_date)
|
||||||
|
.Select((a, b, c, d) => new PrdTaskSortOutput
|
||||||
|
{
|
||||||
|
mo_status_code = a.mo_task_code,
|
||||||
|
status = a.mo_task_status,
|
||||||
|
group_flag = a.group_flag,
|
||||||
|
plan_qty = b.plan_qty,
|
||||||
|
comple_qty = a.complete_qty,
|
||||||
|
item_name = c.name,
|
||||||
|
mold_code = d.mold_code,
|
||||||
|
})
|
||||||
.ToListAsync();
|
.ToListAsync();
|
||||||
var data = list.Select((x, idx) => new PrdTaskSortOutput
|
var data = list.Select((x, idx) => new PrdTaskSortOutput
|
||||||
{
|
{
|
||||||
no = idx + 1,
|
no = idx + 1,
|
||||||
mo_id = x.mo_id,
|
mo_status_code = x.mo_status_code,
|
||||||
status = taskStatusDic.ContainsKey(x.status) ? taskStatusDic[x.status].ToString() : "",
|
status = taskStatusDic.ContainsKey(x.status) ? taskStatusDic[x.status].ToString() : "",
|
||||||
group_flag = x.group_flag,
|
group_flag = x.group_flag,
|
||||||
plan_qty = x.plan_qty,
|
plan_qty = x.plan_qty,
|
||||||
@@ -188,7 +204,7 @@ namespace Tnb.ProductionMgr
|
|||||||
[HttpGet("{taskId}")]
|
[HttpGet("{taskId}")]
|
||||||
public async Task<dynamic> GetMoOperRecord(string taskId)
|
public async Task<dynamic> GetMoOperRecord(string taskId)
|
||||||
{
|
{
|
||||||
var list = await _repository.AsSugarClient().Queryable<PrdTaskLog>().Where(it => it.id == taskId).ToListAsync();
|
var list = await _repository.AsSugarClient().Queryable<PrdTaskLog>().Where(it => it.mo_task_id == taskId).ToListAsync();
|
||||||
var data = list.Adapt<List<PrdTaskOperOutput>>();
|
var data = list.Adapt<List<PrdTaskOperOutput>>();
|
||||||
var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
|
var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
|
||||||
_repository.AsSugarClient().ThenMapper(data, x => x.statusName = dic.ContainsKey(x.status) ? dic[x.status].ToString() : "");
|
_repository.AsSugarClient().ThenMapper(data, x => x.statusName = dic.ContainsKey(x.status) ? dic[x.status].ToString() : "");
|
||||||
@@ -284,7 +300,7 @@ namespace Tnb.ProductionMgr
|
|||||||
{
|
{
|
||||||
scrap_qty = t.Sum(d => d.defective_item_qty),
|
scrap_qty = t.Sum(d => d.defective_item_qty),
|
||||||
batch = t.Key.batch,
|
batch = t.Key.batch,
|
||||||
create_time =t.Key.batch.ParseToDateTime().ToString("yyyy-MM-dd HH:mm:ss"),
|
create_time = t.Key.batch.ParseToDateTime().ToString("yyyy-MM-dd HH:mm:ss"),
|
||||||
categoryItems = t.GroupBy(g => g.defective_cagetory_id).Select(c => new CategoryItem
|
categoryItems = t.GroupBy(g => g.defective_cagetory_id).Select(c => new CategoryItem
|
||||||
{
|
{
|
||||||
name = _dicDefect[c.Key]?.ToString(),
|
name = _dicDefect[c.Key]?.ToString(),
|
||||||
@@ -299,6 +315,65 @@ namespace Tnb.ProductionMgr
|
|||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 根据工单Id获取任务单列表
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="moId"></param>
|
||||||
|
/// <remarks>
|
||||||
|
/// output:
|
||||||
|
/// <br/>{
|
||||||
|
/// <br/> mo_task_code:生产任务单号
|
||||||
|
/// <br/> material_code:物料编码
|
||||||
|
/// <br/> mold_code:模具编码
|
||||||
|
/// <br/> mold_name:模具名称
|
||||||
|
/// <br/> eqp_code:设备编码
|
||||||
|
/// <br/> eqp_name:设备名称
|
||||||
|
/// <br/> eqp_type_code:设备型号
|
||||||
|
/// <br/> mo_task_qty:任务单数量
|
||||||
|
/// <br/> mo_task_status:任务状态
|
||||||
|
/// <br/> scheduled_qty:计划生产数量
|
||||||
|
/// <br/> complete_qty:完成数量
|
||||||
|
/// <br/> estimated_start_date:预计开工时间
|
||||||
|
/// <br/> estimated_end_date:预计完工时间
|
||||||
|
/// <br/>}
|
||||||
|
/// </remarks>
|
||||||
|
[HttpGet("{moId}")]
|
||||||
|
public async Task<dynamic> GetPrdTaskInfoByMoId(string moId)
|
||||||
|
{
|
||||||
|
|
||||||
|
var dic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
|
||||||
|
var result = await _db.Queryable<PrdMoTask>().LeftJoin<PrdMo>((a, b) => a.mo_id == b.id)
|
||||||
|
.LeftJoin<BasMaterial>((a, b, c) => a.material_id == c.id)
|
||||||
|
.LeftJoin<Molds>((a, b, c, d) => a.mold_id == d.id)
|
||||||
|
.LeftJoin<EqpEquipment>((a, b, c, d, e) => a.eqp_id == e.id)
|
||||||
|
.Where((a, b, c, d, e) => a.mo_id == moId)
|
||||||
|
.Select((a, b, c, d, e) => new PrdMoTaskOutput
|
||||||
|
{
|
||||||
|
mo_task_code = a.mo_task_code,
|
||||||
|
mo_task_status = a.mo_task_status,
|
||||||
|
mold_code = d.mold_code,
|
||||||
|
mold_name = d.mold_name,
|
||||||
|
material_code = c.code,
|
||||||
|
material_name = c.name,
|
||||||
|
eqp_code = e.code,
|
||||||
|
eqp_name = e.name,
|
||||||
|
eqp_type_code = SqlFunc.Subqueryable<EqpEquipType>().Where(it => it.id == e.equip_type_id).Select(it => it.code),
|
||||||
|
mo_task_qty = SqlFunc.Subqueryable<PrdMoTask>().Where(a => a.mo_id == moId).Count(),
|
||||||
|
estimated_start_date = a.estimated_start_date,
|
||||||
|
estimated_end_date = a.estimated_end_date,
|
||||||
|
plan_qty = b.plan_qty,
|
||||||
|
complete_qty = a.complete_qty,
|
||||||
|
})
|
||||||
|
.Mapper(it =>
|
||||||
|
{
|
||||||
|
it.mo_task_status = dic.ContainsKey(it.mo_task_status) ? dic[it.mo_task_status].ToString() : "";
|
||||||
|
})
|
||||||
|
.ToListAsync();
|
||||||
|
return result;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
@@ -335,6 +410,8 @@ namespace Tnb.ProductionMgr
|
|||||||
moTask.create_id = _userManager.UserId;
|
moTask.create_id = _userManager.UserId;
|
||||||
moTask.create_time = DateTime.Now;
|
moTask.create_time = DateTime.Now;
|
||||||
moTask.mo_task_status = DictConst.ToBeScheduledEncode;
|
moTask.mo_task_status = DictConst.ToBeScheduledEncode;
|
||||||
|
moTask.scheduled_qty = input.scheduled_qty;
|
||||||
|
|
||||||
var mo = await db.Queryable<PrdMo>().FirstAsync(it => it.id == input.mo_id);
|
var mo = await db.Queryable<PrdMo>().FirstAsync(it => it.id == input.mo_id);
|
||||||
var moCode = mo?.mo_code;
|
var moCode = mo?.mo_code;
|
||||||
var taskCode = await db.Queryable<PrdMoTask>().Where(it => !string.IsNullOrEmpty(it.mo_task_code) && it.mo_task_code.Contains(moCode)).OrderByDescending(it => it.mo_task_code).Select(it => it.mo_task_code).FirstAsync();
|
var taskCode = await db.Queryable<PrdMoTask>().Where(it => !string.IsNullOrEmpty(it.mo_task_code) && it.mo_task_code.Contains(moCode)).OrderByDescending(it => it.mo_task_code).Select(it => it.mo_task_code).FirstAsync();
|
||||||
@@ -349,7 +426,7 @@ namespace Tnb.ProductionMgr
|
|||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
var num = taskCode.AsSpan().Slice(pos + 1).ToString().ParseToInt();
|
var num = taskCode.AsSpan().Slice(pos + 1).ToString().ParseToInt();
|
||||||
var code = taskCode.AsSpan().Slice(pos + 1).ToString();
|
var code = taskCode.AsSpan().Slice(0, pos).ToString();
|
||||||
var n = (num + 1).ToString().PadLeft(2, '0');
|
var n = (num + 1).ToString().PadLeft(2, '0');
|
||||||
moTask.mo_task_code = sb.Append(code).Append("-").Append(n).ToString();
|
moTask.mo_task_code = sb.Append(code).Append("-").Append(n).ToString();
|
||||||
}
|
}
|
||||||
@@ -362,16 +439,17 @@ namespace Tnb.ProductionMgr
|
|||||||
//根据工单号获取当前工单包含的已排产数
|
//根据工单号获取当前工单包含的已排产数
|
||||||
var schedQty = db.Queryable<PrdMoTask>().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty);
|
var schedQty = db.Queryable<PrdMoTask>().Where(it => it.mo_id == input.mo_id)?.Sum(d => d.scheduled_qty);
|
||||||
//判断如果当前 工单的已排产数大于工单计划数量则更新工单状态为 已排产
|
//判断如果当前 工单的已排产数大于工单计划数量则更新工单状态为 已排产
|
||||||
if (schedQty >= mo.plan_qty)
|
if (mo != null && schedQty.HasValue && schedQty.Value >= mo.plan_qty)
|
||||||
{
|
{
|
||||||
mo.mo_status = DictConst.AlreadyId;
|
mo.mo_status = DictConst.AlreadyId;
|
||||||
row = await db.Updateable(mo).ExecuteCommandAsync();
|
row = await db.Updateable(mo).ExecuteCommandAsync();
|
||||||
}
|
}
|
||||||
|
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == moTask.material_id);
|
||||||
//将生产任务插入到自检报废记录表
|
//将生产任务插入到自检报废记录表
|
||||||
var sacipRecord = new PrdMoTaskDefectRecord();
|
var sacipRecord = new PrdMoTaskDefectRecord();
|
||||||
sacipRecord.id = SnowflakeIdHelper.NextId();
|
sacipRecord.id = SnowflakeIdHelper.NextId();
|
||||||
sacipRecord.material_code = (await db.Queryable<BasMaterial>().FirstAsync(it => it.id == moTask.material_id))?.code;
|
sacipRecord.material_code = material?.code;
|
||||||
sacipRecord.material_name = (await db.Queryable<BasMaterial>().FirstAsync(it => it.id == moTask.material_id))?.name;
|
sacipRecord.material_name = material?.name;
|
||||||
sacipRecord.eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == moTask.eqp_id))?.code;
|
sacipRecord.eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == moTask.eqp_id))?.code;
|
||||||
sacipRecord.mold_name = (await db.Queryable<Molds>().FirstAsync(it => it.id == moTask.mold_id))?.mold_name;
|
sacipRecord.mold_name = (await db.Queryable<Molds>().FirstAsync(it => it.id == moTask.mold_id))?.mold_name;
|
||||||
sacipRecord.estimated_start_date = moTask.plan_start_date;
|
sacipRecord.estimated_start_date = moTask.plan_start_date;
|
||||||
@@ -384,6 +462,7 @@ namespace Tnb.ProductionMgr
|
|||||||
sacipRecord.mo_task_id = moTask.id;
|
sacipRecord.mo_task_id = moTask.id;
|
||||||
sacipRecord.mo_task_code = moTask.mo_task_code;
|
sacipRecord.mo_task_code = moTask.mo_task_code;
|
||||||
await db.Insertable(sacipRecord).ExecuteCommandAsync();
|
await db.Insertable(sacipRecord).ExecuteCommandAsync();
|
||||||
|
|
||||||
await db.Ado.CommitTranAsync();
|
await db.Ado.CommitTranAsync();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -427,9 +506,10 @@ namespace Tnb.ProductionMgr
|
|||||||
PrdTaskBehavior behavior = input.Behavior.ToEnum<PrdTaskBehavior>();
|
PrdTaskBehavior behavior = input.Behavior.ToEnum<PrdTaskBehavior>();
|
||||||
var status = SetTaskStatus(behavior);
|
var status = SetTaskStatus(behavior);
|
||||||
var db = _repository.AsSugarClient();
|
var db = _repository.AsSugarClient();
|
||||||
|
var list = await db.Queryable<PrdMoTask>().Where(it => input.TaskIds.Contains(it.id)).Select(it => it).ToListAsync();
|
||||||
if (behavior == PrdTaskBehavior.Compled)
|
if (behavior == PrdTaskBehavior.Compled)
|
||||||
{
|
{
|
||||||
var list = await db.Queryable<PrdTask>().Where(it => input.TaskIds.Contains(it.id)).Select(it => it).ToListAsync();
|
|
||||||
if (list?.Count > 0)
|
if (list?.Count > 0)
|
||||||
{
|
{
|
||||||
var schedQtySum = list.Sum(x => x.scheduled_qty);
|
var schedQtySum = list.Sum(x => x.scheduled_qty);
|
||||||
@@ -444,6 +524,55 @@ namespace Tnb.ProductionMgr
|
|||||||
.SetColumns(it => new PrdMoTask { mo_task_status = status })
|
.SetColumns(it => new PrdMoTask { mo_task_status = status })
|
||||||
.Where(it => input.TaskIds.Contains(it.id))
|
.Where(it => input.TaskIds.Contains(it.id))
|
||||||
.ExecuteCommandAsync();
|
.ExecuteCommandAsync();
|
||||||
|
//插入操作记录日志
|
||||||
|
List<PrdTaskLog> taskLogEntities = new();
|
||||||
|
foreach (var taskId in input.TaskIds)
|
||||||
|
{
|
||||||
|
var taskLog = await db.Queryable<PrdTaskLog>().FirstAsync(it => it.mo_task_id == taskId);
|
||||||
|
if (taskLog is null)
|
||||||
|
{
|
||||||
|
var taskItem = list?.Find(x => x.id == taskId);
|
||||||
|
taskLog = new PrdTaskLog();
|
||||||
|
taskLog.id = SnowflakeIdHelper.NextId();
|
||||||
|
if (taskItem != null)
|
||||||
|
{
|
||||||
|
if (taskItem.mo_id.IsNotEmptyOrNull())
|
||||||
|
{
|
||||||
|
taskLog.mo_code = (await db.Queryable<PrdMo>().FirstAsync(it => it.id == taskItem.mo_id))?.mo_code;
|
||||||
|
}
|
||||||
|
if (taskItem.eqp_id.IsNotEmptyOrNull())
|
||||||
|
{
|
||||||
|
taskLog.eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == taskItem.eqp_id))?.code;
|
||||||
|
}
|
||||||
|
if (taskItem.mold_id.IsNotEmptyOrNull())
|
||||||
|
{
|
||||||
|
taskLog.mold_code = (await db.Queryable<Molds>().FirstAsync(it => it.id == taskItem.mold_id))?.mold_code;
|
||||||
|
}
|
||||||
|
if (taskItem.material_id.IsNotEmptyOrNull())
|
||||||
|
{
|
||||||
|
var material = await db.Queryable<BasMaterial>().FirstAsync(it => it.id == taskItem.material_id);
|
||||||
|
taskLog.item_code = material?.code;
|
||||||
|
taskLog.item_standard = material?.material_standard;
|
||||||
|
}
|
||||||
|
taskLog.operator_name = _userManager.RealName;
|
||||||
|
taskLog.status = status;
|
||||||
|
taskLog.create_id = _userManager.UserId;
|
||||||
|
taskLog.create_time = DateTime.Now;
|
||||||
|
taskLog.mo_task_id = taskItem.id;
|
||||||
|
}
|
||||||
|
taskLogEntities.Add(taskLog);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (taskLog.status != status)
|
||||||
|
{
|
||||||
|
taskLog.id = SnowflakeIdHelper.NextId();
|
||||||
|
taskLog.status = status;
|
||||||
|
taskLogEntities.Add(taskLog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
row = await db.Insertable(taskLogEntities).ExecuteCommandAsync();
|
||||||
return (row > 0);
|
return (row > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,7 +589,7 @@ namespace Tnb.ProductionMgr
|
|||||||
var db = _repository.AsSugarClient();
|
var db = _repository.AsSugarClient();
|
||||||
if (input.icmo_id.IsNullOrWhiteSpace())
|
if (input.icmo_id.IsNullOrWhiteSpace())
|
||||||
throw new ArgumentNullException(nameof(input.icmo_id));
|
throw new ArgumentNullException(nameof(input.icmo_id));
|
||||||
var icmoItem = await db.Queryable<PrdTask>().FirstAsync(it => it.id == input.icmo_id);
|
var icmoItem = await db.Queryable<PrdMoTask>().FirstAsync(it => it.id == input.icmo_id);
|
||||||
switch (input.category)
|
switch (input.category)
|
||||||
{
|
{
|
||||||
case 1: //设备
|
case 1: //设备
|
||||||
@@ -489,7 +618,7 @@ namespace Tnb.ProductionMgr
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
row = await db.Updateable(icmoItem).ExecuteCommandAsync();
|
row = await db.Updateable(icmoItem).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommandAsync();
|
||||||
return (row > 0);
|
return (row > 0);
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -513,8 +642,8 @@ namespace Tnb.ProductionMgr
|
|||||||
var row = -1;
|
var row = -1;
|
||||||
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;
|
||||||
@@ -535,7 +664,7 @@ namespace Tnb.ProductionMgr
|
|||||||
var record = prdTask.Adapt<PrdReportRecord>();
|
var record = prdTask.Adapt<PrdReportRecord>();
|
||||||
if (prdTask != null)
|
if (prdTask != null)
|
||||||
{
|
{
|
||||||
record.id =SnowflakeIdHelper.NextId();
|
record.id = SnowflakeIdHelper.NextId();
|
||||||
record.eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == prdTask.eqp_id))?.code;
|
record.eqp_code = (await db.Queryable<EqpEquipment>().FirstAsync(it => it.id == prdTask.eqp_id))?.code;
|
||||||
record.completed_qty = input.reported_qty;
|
record.completed_qty = input.reported_qty;
|
||||||
row = await db.Insertable(record).ExecuteCommandAsync();
|
row = await db.Insertable(record).ExecuteCommandAsync();
|
||||||
|
|||||||
Reference in New Issue
Block a user