This commit is contained in:
alex
2023-08-21 15:06:42 +08:00
23 changed files with 454 additions and 38 deletions

View File

@@ -27,6 +27,22 @@ public static class DictConst
/// 备品备件类型
/// </summary>
public const string SparePartsType = "SparePartsType";
/// <summary>
/// 注塑工单
/// </summary>
public const string PrdMoTypeZS = "25572555259157";
/// <summary>
/// 挤出工单
/// </summary>
public const string PrdMoTypeJC = "25019172714005";
/// <summary>
/// 组装工单
/// </summary>
public const string PrdMoTypeZZ = "25019181615125";
/// <summary>
/// 包装工单
/// </summary>
public const string PrdMoTypeBZ = "25019191681045";
#endregion

View File

@@ -52,7 +52,34 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
public string? workline_name { get; set; }
public string? workshop_name { get; set; }
public string? mbom_version { get; set; }
public string station_name { get; set; }
public string equip_code { get; set; }
}
/// <summary>
/// 工单追溯二级列表输出类
/// </summary>
public class PrdMoFromManListOutput
{
// /// <summary>
// /// 提报id
// /// </summary>
// public string id { get; set; }
//
// public string workgroup_name { get; set; }
public string employee_name { get; set; }
public string work_time { get; set; }
public DateTime? start_time { get; set; }
public DateTime? end_time { get; set; }
}
}

View File

@@ -418,29 +418,101 @@ namespace Tnb.ProductionMgr
public async Task<dynamic> PrdMoFromTwoList(Dictionary<string,string> dic)
{
string mo_id = dic.ContainsKey("mo_id") ? dic["mo_id"] : "";
return await _db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<OrganizeEntity>((a, b, c) => a.workline_id == c.Id)
.LeftJoin<BasMbom>((a, b, c, d) => a.bom_id == d.id)
.WhereIF(!string.IsNullOrEmpty(mo_id),(a,b,c,d)=>a.mo_id==mo_id)
.Select((a, b, c, d) =>
new PrdMoFromTwoListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = a.material_id,
material_code = b.code,
material_name = b.name,
material_standard = b.material_standard,
act_start_date = a.act_start_date == null
? ""
: a.act_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
act_end_date = a.act_end_date == null
? ""
: a.act_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
workline_name = c.FullName,
mbom_version = d.version
}).ToListAsync();
string mo_task_code = dic.ContainsKey("mo_task_code") ? dic["mo_task_code"] : "";
string batch = dic.ContainsKey("batch") ? dic["batch"] : "";
List<string> ids = new List<string>();
if (!string.IsNullOrEmpty(batch))
{
ids = await _db.Queryable<PrdReport>().Where(x => x.batch.Contains(batch)).Select(x=>x.mo_task_id).ToListAsync();
}
PrdMo prdMo = await _repository.GetSingleAsync(x => x.id == mo_id);
if (prdMo.mo_type is DictConst.PrdMoTypeZS or DictConst.PrdMoTypeJC)
{
return await _db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<OrganizeRelationEntity>((a,b,c)=>a.eqp_id==c.ObjectId && c.ObjectType=="Eqp")
.LeftJoin<OrganizeEntity>((a,b,c,d)=>c.OrganizeId==d.Id)
.LeftJoin<OrganizeEntity>((a,b,c,d,e)=>d.OrganizeIdTree.Contains(e.Id) && e.Category==DictConst.RegionCategoryWorkshopCode)
.LeftJoin<EqpEquipment>((a,b,c,d,e,f)=>a.eqp_id==f.id)
.WhereIF(!string.IsNullOrEmpty(mo_id),(a,b,c,d)=>a.mo_id==mo_id)
.WhereIF(!string.IsNullOrEmpty(mo_task_code),(a,b,c,d)=>a.mo_task_code==mo_task_code)
.WhereIF(ids!=null && ids.Count>0,(a,b,c,d)=>ids.Contains(a.id))
.Select((a, b, c, d,e,f) =>
new PrdMoFromTwoListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = a.material_id,
material_code = b.code,
material_name = b.name,
material_standard = b.material_standard,
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
workshop_name = e.FullName,
station_name = d.FullName,
equip_code = f.code
}).ToListAsync();
}
else
{
return await _db.Queryable<PrdMoTask>()
.LeftJoin<BasMaterial>((a, b) => a.material_id == b.id)
.LeftJoin<OrganizeEntity>((a, b, c) => a.workline_id == c.Id)
.LeftJoin<BasMbom>((a, b, c, d) => a.bom_id == d.id)
.WhereIF(!string.IsNullOrEmpty(mo_id),(a,b,c,d)=>a.mo_id==mo_id)
.WhereIF(!string.IsNullOrEmpty(mo_task_code),(a,b,c,d)=>a.mo_task_code==mo_task_code)
.WhereIF(ids!=null && ids.Count>0,(a,b,c,d)=>ids.Contains(a.id))
.Select((a, b, c, d) =>
new PrdMoFromTwoListOutput
{
id = a.id,
mo_task_code = a.mo_task_code,
material_id = a.material_id,
material_code = b.code,
material_name = b.name,
material_standard = b.material_standard,
act_start_date = a.act_start_date == null ? "" : a.act_start_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
act_end_date = a.act_end_date == null ? "" : a.act_end_date.Value.ToString("yyyy-MM-dd HH:mm:ss"),
workline_name = c.FullName,
mbom_version = d.version
}).ToListAsync();
}
}
/// <summary>
/// 工单追溯人列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost]
public async Task<dynamic> PrdMoFromManList(Dictionary<string,string> dic)
{
string mo_task_id = dic.ContainsKey("mo_task_id") ? dic["mo_task_id"] : "";
string batch = dic.ContainsKey("batch") ? dic["batch"] : "";
List<string> ids = new List<string>();
if (!string.IsNullOrEmpty(batch))
{
ids = await _db.Queryable<PrdReport>().Where(x => x.batch.Contains(batch)).Select(x=>x.mo_task_id).ToListAsync();
}
return await _db.Queryable<PrdReport>()
.LeftJoin<UserEntity>((a, b) => a.create_id == b.Id)
.WhereIF(!string.IsNullOrEmpty(mo_task_id), (a, b) => a.mo_task_id == mo_task_id)
.WhereIF(ids!=null && ids.Count>0,(a,b)=>ids.Contains(a.mo_task_id))
.GroupBy((a,b)=>new {a.create_id,employee_name = b.RealName})
.Select((a, b) => new PrdMoFromManListOutput()
{
// id = a.id,
employee_name = b.RealName,
start_time = SqlFunc.AggregateMin(a.create_time),
end_time = SqlFunc.AggregateMax(a.create_time)
}).Mapper(x =>
{
x.work_time = (x.start_time == null ? "" : x.start_time.Value.ToString("yyyy-MM-dd HH:mm:ss")) + "~" + (x.end_time == null ? "" : x.end_time.Value.ToString("yyyy-MM-dd HH:mm:ss"));
})
.ToListAsync();
}
#endregion

View File

@@ -45,7 +45,7 @@ using Tnb.BasicData.Entities.Dto;
using NPOI.SS.Formula.Functions;
using Tnb.PerMgr.Entities;
using Tnb.QcMgr.Interfaces;
using Tnb.QcMgr.Entities.Dto;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Enums;
// using Tnb.PerMgr.Entities;

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.QcMgr.Entities.Dto
namespace Tnb.QcMgr.Entities
{
public class CheckItemsInput
{

View File

@@ -3,7 +3,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tnb.QcMgr.Entities.Dto;
namespace Tnb.QcMgr.Entities
{

View File

@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.QcMgr.Entities.Dto
namespace Tnb.QcMgr.Entities
{
public class QcCheckExecHOut
{

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Tnb.QcMgr.Entities
{
public class SpcDataInput
{
}
}

View File

@@ -6,7 +6,7 @@ using System.Threading.Tasks;
using NPOI.SS.Formula.PTG;
using Tnb.QcMgr.Entities.Enums;
namespace Tnb.QcMgr.Entities.Dto
namespace Tnb.QcMgr.Entities
{
public class TriggerPlan
{

View File

@@ -7,7 +7,7 @@ using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.QcMgr.Entities.Entity
namespace Tnb.QcMgr.Entities
{
/// <summary>
/// 质检方案工位关联表

View File

@@ -7,7 +7,7 @@ using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.QcMgr.Entities.Entity
namespace Tnb.QcMgr.Entities
{
/// <summary>
/// 不良等级

View File

@@ -0,0 +1,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.QcMgr.Entities
{
/// <summary>
/// spc控制图系数
/// </summary>
[SugarTable("qc_spc_config")]
public partial class QcSpcConfig : BaseEntity<string>
{
public QcSpcConfig()
{
id = SnowflakeIdHelper.NextId();
}
/// <summary>
/// 控制图类型
/// </summary>
public string? spctype { get; set; }
/// <summary>
/// 子组容量
/// </summary>
public string? subcapacity { get; set; }
/// <summary>
/// 控制图键
/// </summary>
public string? spckey { get; set; }
/// <summary>
/// 控制图值
/// </summary>
public decimal? spcdata { get; set; }
}
}

View File

@@ -0,0 +1,64 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.QcMgr.Entities
{
/// <summary>
/// spc子表
/// </summary>
[SugarTable("qc_spc_d")]
public partial class QcSpcD : BaseEntity<string>
{
public QcSpcD()
{
id = SnowflakeIdHelper.NextId();
}
/// <summary>
/// 主表id
/// </summary>
public string? mainid { get; set; }
/// <summary>
/// 检验时间
/// </summary>
public string? checktime { get; set; }
/// <summary>
/// 批次
/// </summary>
public string? batch { get; set; }
/// <summary>
/// 数据
/// </summary>
public string? data { get; set; }
/// <summary>
/// 检查数量
/// </summary>
public int? checknum { get; set; }
/// <summary>
/// 不良品数量
/// </summary>
public int? defectivenum { get; set; }
/// <summary>
/// 创建用户
/// </summary>
public string? create_id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? create_time { get; set; }
}
}

View File

@@ -0,0 +1,160 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using JNPF.Common.Contracts;
using JNPF.Common.Security;
using SqlSugar;
namespace Tnb.QcMgr.Entities
{
/// <summary>
/// spc主表
/// </summary>
[SugarTable("qc_spc_h")]
public partial class QcSpcH : BaseEntity<string>
{
public QcSpcH()
{
id = SnowflakeIdHelper.NextId();
}
/// <summary>
/// 编号
/// </summary>
public string? code { get; set; }
/// <summary>
/// 检测项目
/// </summary>
public string? checkproject { get; set; }
/// <summary>
/// 检测类别
/// </summary>
public string? checktype { get; set; }
/// <summary>
/// 图类
/// </summary>
public string? graphtype { get; set; }
/// <summary>
/// 样本容量
/// </summary>
public int? samplesize { get; set; }
/// <summary>
/// 小数位数
/// </summary>
public int? decimalplace { get; set; }
/// <summary>
/// 产品名称
/// </summary>
public string? productname { get; set; }
/// <summary>
/// 任务单编号
/// </summary>
public string? taskcode { get; set; }
/// <summary>
/// 批次
/// </summary>
public string? batch { get; set; }
/// <summary>
/// 产线
/// </summary>
public string? productline { get; set; }
/// <summary>
/// 班次
/// </summary>
public string? work { get; set; }
/// <summary>
/// 设备
/// </summary>
public string? device { get; set; }
/// <summary>
/// 工序
/// </summary>
public string? process { get; set; }
/// <summary>
/// 供应商
/// </summary>
public string? supplier { get; set; }
/// <summary>
/// 客户
/// </summary>
public string? custom { get; set; }
/// <summary>
/// 规格上限
/// </summary>
public decimal? uplimit { get; set; }
/// <summary>
/// 目标值
/// </summary>
public decimal? target { get; set; }
/// <summary>
/// 规格下限
/// </summary>
public decimal? lowerlimit { get; set; }
/// <summary>
/// 子组容量
/// </summary>
public int? subcapacity { get; set; }
/// <summary>
/// 判异规则
/// </summary>
public string? rule { get; set; }
/// <summary>
/// 创建用户
/// </summary>
public string? create_id { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime? create_time { get; set; }
/// <summary>
/// 修改用户
/// </summary>
public string? modify_id { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime? modify_time { get; set; }
/// <summary>
/// 所属组织
/// </summary>
public string? org_id { get; set; }
/// <summary>
/// 流程任务Id
/// </summary>
public string? f_flowtaskid { get; set; }
/// <summary>
/// 流程引擎Id
/// </summary>
public string? f_flowid { get; set; }
}
}

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tnb.QcMgr.Entities.Dto;
using Tnb.QcMgr.Entities;
namespace Tnb.QcMgr.Interfaces
{

View File

@@ -4,7 +4,6 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Dto;
namespace Tnb.QcMgr.Interfaces
{

View File

@@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tnb.QcMgr.Entities.Dto;
using Tnb.QcMgr.Entities;
namespace Tnb.QcMgr.Interfaces
{

View File

@@ -4,7 +4,6 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Dto;
namespace Tnb.QcMgr.Interfaces
{

View File

@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tnb.QcMgr.Entities;
namespace Tnb.QcMgr.Interfaces
{
public interface IQcSpcService
{
/// <summary>
/// 获取spcd数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public Task<dynamic> GetSpcItems(string id);
/// <summary>
/// 保存spcd数据
/// </summary>
/// <returns></returns>
public Task SaveData(SpcDataInput SpcDataInput);
}
}

View File

@@ -22,7 +22,6 @@ using NPOI.Util;
using SqlSugar;
using Tnb.Common;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Dto;
using Tnb.QcMgr.Interfaces;
namespace Tnb.QcMgr

View File

@@ -25,7 +25,7 @@ using Newtonsoft.Json;
using SqlSugar;
using Tnb.ProductionMgr.Entities;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Dto;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Entity;
using Tnb.QcMgr.Entities.Enums;
using Tnb.QcMgr.Interfaces;

View File

@@ -17,7 +17,6 @@ using Newtonsoft.Json;
using SqlSugar;
using Tnb.BasicData.Entities;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Dto;
namespace Tnb.QcMgr
{ /// <summary>

View File

@@ -27,7 +27,7 @@ using Tnb.EquipMgr.Entities;
using Tnb.ProductionMgr.Entities.Dto;
using Tnb.ProductionMgr.Entities;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Dto;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Entity;
using Tnb.QcMgr.Interfaces;
using JNPF.Common.Extension;