diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PrdMoFromOneListOutput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PrdMoFromOneListOutput.cs
index b8de7235..dd579252 100644
--- a/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PrdMoFromOneListOutput.cs
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Dto/PrdManage/PrdMoFromOneListOutput.cs
@@ -142,7 +142,7 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
}
- public class PrdMoReverseFromMaterialput
+ public class PrdMoReverseFromMaterialoutput
{
///
/// 物料ID
@@ -153,6 +153,14 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
///
public string material_code { get; set; }
///
+ /// 物料名称
+ ///
+ public string material_name { get; set; }
+ ///
+ /// 物料规格
+ ///
+ public string material_standard { get; set; }
+ ///
/// 批次
///
public string code_batch { get; set;}
@@ -208,6 +216,12 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
/// 已投数量
///
public decimal feeding_num { get; set; }
+ ///
+ /// 使用状态
+ ///
+ public string use_status { get; set; }
+ public string supplier_name { get; set; }
+ public string unit_name { get; set; }
}
///
@@ -234,6 +248,7 @@ namespace Tnb.ProductionMgr.Entities.Dto.PrdManage
/// 投料子表id
///
public string feeding_detail_id { get; set; }
+ public string mo_task_code { get; set; }
public string feeding_time { get; set; }
public decimal num { get; set; }
public string check_conclusion { get; set; }
diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/AppPrdMoTaskLogListOutput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/AppPrdMoTaskLogListOutput.cs
new file mode 100644
index 00000000..52ad5685
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/AppPrdMoTaskLogListOutput.cs
@@ -0,0 +1,31 @@
+namespace Tnb.ProductionMgr.Entities.Entity
+{
+ public class AppPrdMoTaskLogListOutput
+ {
+ public string id { get; set; }
+ public string mo_task_code { get; set; }
+ public string mo_task_status { get; set; }
+ public string material_id { get; set; }
+ public string material_id_id { get; set; }
+ public string material_code { get; set; }
+ public string material_name { get; set; }
+ public string mold_id { get; set; }
+ public string mold_id_id { get; set; }
+ public string mold_code { get; set; }
+ public string eqp_id { get; set; }
+ public string eqp_id_id { get; set; }
+ public string equip_code { get; set; }
+
+ public string process_id { get; set; }
+ public string process_id_id { get; set; }
+ public string process_code { get; set; }
+ public string mbom_process_id { get; set; }
+ public int? scheduled_qty { get; set; }
+ public int? reported_work_qty { get; set; }
+ public int? scrap_qty { get; set; }
+
+ public string plan_start_date { get; set; }
+
+ public string plan_end_date { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/AppPrdMoTaskOneListOutput.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/AppPrdMoTaskOneListOutput.cs
new file mode 100644
index 00000000..e5bd8bee
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/AppPrdMoTaskOneListOutput.cs
@@ -0,0 +1,31 @@
+namespace Tnb.ProductionMgr.Entities
+{
+ public class AppPrdMoTaskOneListOutput
+ {
+ public string id { get; set; }
+ public string mo_task_code { get; set; }
+ public string mo_task_status { get; set; }
+ public string material_id { get; set; }
+ public string material_id_id { get; set; }
+ public string material_code { get; set; }
+ public string material_name { get; set; }
+ public string mold_id { get; set; }
+ public string mold_id_id { get; set; }
+ public string mold_code { get; set; }
+ public string eqp_id { get; set; }
+ public string eqp_id_id { get; set; }
+ public string equip_code { get; set; }
+
+ public string process_id { get; set; }
+ public string process_id_id { get; set; }
+ public string process_code { get; set; }
+ public string mbom_process_id { get; set; }
+ public int? scheduled_qty { get; set; }
+ public int? reported_work_qty { get; set; }
+ public int? scrap_qty { get; set; }
+
+ public string plan_start_date { get; set; }
+
+ public string plan_end_date { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskLog.cs b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskLog.cs
index 602beb67..f10ade62 100644
--- a/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskLog.cs
+++ b/ProductionMgr/Tnb.ProductionMgr.Entities/Entity/PrdMoTaskLog.cs
@@ -73,5 +73,15 @@ public partial class PrdMoTaskLog : BaseEntity
/// 任务单编号
///
public string? mo_task_code { get; set; }
+
+ ///
+ /// 工位编号
+ ///
+ public string? station_code { get; set; }
+
+ ///
+ /// 工序编号
+ ///
+ public string? process_code { get; set; }
}
diff --git a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs
new file mode 100644
index 00000000..14186d66
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskLogService.cs
@@ -0,0 +1,125 @@
+using COSXML.Model.Tag;
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Filter;
+using JNPF.DependencyInjection;
+using JNPF.DynamicApiController;
+using JNPF.Systems.Entitys.System;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
+using JNPF.VisualDev.Interfaces;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
+using Tnb.ProductionMgr.Entities;
+using Tnb.BasicData.Entities;
+using Tnb.EquipMgr.Entities;
+using Tnb.BasicData;
+
+namespace Tnb.ProductionMgr.APP
+{
+ ///
+ /// 移动端任务单操作记录
+ ///
+ [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
+ [Route("api/[area]/[controller]/[action]")]
+ [OverideVisualDev(ModuleId)]
+ public class AppPrdMoTaskLogService : IOverideVisualDevService, IDynamicApiController, ITransient
+ {
+ private const string ModuleId = "28491200142101";
+ private readonly ISqlSugarRepository _repository;
+ private readonly IDictionaryDataService _dictionaryDataService;
+ private readonly IUserManager _userManager;
+ private readonly IRunService _runService;
+ private readonly IVisualDevService _visualDevService;
+ private readonly ISqlSugarClient _db;
+ private readonly IBillRullService _billRuleService;
+
+ public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
+ public AppPrdMoTaskLogService(
+ ISqlSugarRepository repository,
+ IDictionaryDataService dictionaryDataService,
+ IUserManager userManager,
+ IRunService runService,
+ IBillRullService billRullService,
+ IVisualDevService visualDevService
+ )
+ {
+ _repository = repository;
+ _userManager = userManager;
+ _runService = runService;
+ _visualDevService = visualDevService;
+ _db = _repository.AsSugarClient();
+ OverideFuncs.GetListAsync = GetList;
+ _dictionaryDataService = dictionaryDataService;
+ _billRuleService = billRullService;
+ }
+
+ private async Task GetList(VisualDevModelListQueryInput input)
+ {
+ var db = _repository.AsSugarClient();
+ Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary();
+ string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
+ string material_code = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : "";
+ string equip_code = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : "";
+ var result = await db.Queryable()
+ .LeftJoin((a, b) => a.material_id == b.id)
+ .LeftJoin((a, b, c) => a.mold_id == c.id)
+ .LeftJoin((a, b, c, d) => a.eqp_id == d.id)
+ .LeftJoin((a, b, c, d, e) => e.EnCode == a.mo_task_status && e.DictionaryTypeId == DictConst.PrdTaskStatusTypeId)
+ .LeftJoin((a,b,c,d,e,f)=>a.process_id==f.id)
+ .WhereIF(!string.IsNullOrEmpty(mo_task_code), (a, b, c, d, e) => a.mo_task_code.Contains(mo_task_code))
+ .WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e) => b.code.Contains(material_code) || b.name.Contains(material_code))
+ .WhereIF(!string.IsNullOrEmpty(equip_code), (a, b, c, d, e) => d.code.Contains(equip_code) || d.name.Contains(equip_code))
+ .OrderByDescending(a => a.create_time)
+ .Select((a, b, c, d, e,f) => new AppPrdMoTaskOneListOutput
+ {
+ id = a.id,
+ mo_task_code = a.mo_task_code,
+ mo_task_status = e.FullName,
+ material_id_id = a.material_id,
+ material_id = b.code+"/"+b.name,
+ material_code = b.code,
+ material_name = b.name,
+ mold_id_id = a.mold_id,
+ mold_id = c.mold_code,
+ mold_code = c.mold_code,
+ eqp_id_id = a.eqp_id,
+ eqp_id = d.code,
+ equip_code = d.code,
+ process_id_id = a.process_id,
+ process_id = f.process_name,
+ process_code = f.process_code,
+ mbom_process_id = a.mbom_process_id,
+ scheduled_qty = a.scheduled_qty,
+ reported_work_qty = a.reported_work_qty,
+ scrap_qty = a.scrap_qty,
+ plan_start_date = a.estimated_start_date==null ? "" : a.estimated_start_date.Value.ToString("yyyy-MM-dd"),
+ plan_end_date = a.plan_end_date==null ? "" : a.plan_end_date.Value.ToString("yyyy-MM-dd"),
+ }).ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(result);
+ }
+
+ ///
+ /// 根据任务单id获取操作记录
+ ///
+ ///
+ ///
+ [HttpPost]
+ public async Task GetLogById(Dictionary dic)
+ {
+ string mo_task_id = dic.ContainsKey("mo_task_id") ? dic["mo_task_id"] : "";
+ if (string.IsNullOrEmpty(mo_task_id)) return Array.Empty();
+ Dictionary statsDic = await _dictionaryDataService.GetDicByTypeId(DictConst.PrdTaskStatusTypeId);
+ return await _db.Queryable().Where(x=>x.mo_task_id==mo_task_id)
+ .OrderBy(x=>x.create_time)
+ .Mapper(x =>
+ {
+ if (statsDic.ContainsKey(x.status))
+ {
+ x.status = statsDic[x.status].ToString();
+ }
+ })
+ .ToListAsync();
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs
new file mode 100644
index 00000000..82f0bedd
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskOneService.cs
@@ -0,0 +1,96 @@
+using COSXML.Model.Tag;
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Filter;
+using JNPF.DependencyInjection;
+using JNPF.DynamicApiController;
+using JNPF.Systems.Entitys.System;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
+using JNPF.VisualDev.Interfaces;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
+using Tnb.ProductionMgr.Entities;
+using Tnb.BasicData.Entities;
+using Tnb.EquipMgr.Entities;
+using Tnb.BasicData;
+
+namespace Tnb.ProductionMgr.APP
+{
+ ///
+ /// 移动端注塑挤出任务管理
+ ///
+ [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
+ [Route("api/[area]/[controller]/[action]")]
+ [OverideVisualDev(ModuleId)]
+ public class AppPrdMoTaskOneService : IOverideVisualDevService, IDynamicApiController, ITransient
+ {
+ private const string ModuleId = "27890354204949";
+ private readonly ISqlSugarRepository _repository;
+ private readonly IUserManager _userManager;
+ private readonly IRunService _runService;
+ private readonly IVisualDevService _visualDevService;
+ private readonly ISqlSugarClient _db;
+ private readonly IBillRullService _billRuleService;
+
+ public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
+ public AppPrdMoTaskOneService(
+ ISqlSugarRepository repository,
+ IUserManager userManager,
+ IRunService runService,
+ IBillRullService billRullService,
+ IVisualDevService visualDevService
+ )
+ {
+ _repository = repository;
+ _userManager = userManager;
+ _runService = runService;
+ _visualDevService = visualDevService;
+ _db = _repository.AsSugarClient();
+ OverideFuncs.GetListAsync = GetList;
+ _billRuleService = billRullService;
+ }
+
+ private async Task GetList(VisualDevModelListQueryInput input)
+ {
+ var db = _repository.AsSugarClient();
+ Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary();
+ string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
+ string material_code = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : "";
+ string equip_code = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : "";
+ var result = await db.Queryable()
+ .LeftJoin((a, b) => a.material_id == b.id)
+ .LeftJoin((a, b, c) => a.mold_id == c.id)
+ .LeftJoin((a, b, c, d) => a.eqp_id == d.id)
+ .LeftJoin((a, b, c, d, e) => e.EnCode == a.mo_task_status && e.DictionaryTypeId == DictConst.PrdTaskStatusTypeId)
+ .WhereIF(!string.IsNullOrEmpty(mo_task_code), (a, b, c, d, e) => a.mo_task_code.Contains(mo_task_code))
+ .WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e) => b.code.Contains(material_code) || b.name.Contains(material_code))
+ .WhereIF(!string.IsNullOrEmpty(equip_code), (a, b, c, d, e) => d.code.Contains(equip_code) || d.name.Contains(equip_code))
+ .Where(a => a.schedule_type == 1)
+ .Where(a => (a.mo_task_status==DictConst.ToBeStartedEnCode || a.mo_task_status==DictConst.InProgressEnCode || a.mo_task_status==DictConst.MoStatusExceptionCode || a.mo_task_status==DictConst.MoStatusPauseCode || a.mo_task_status==DictConst.ComplatedEnCode))
+ .OrderByDescending(a => a.create_time)
+ .Select((a, b, c, d, e) => new AppPrdMoTaskOneListOutput
+ {
+ id = a.id,
+ mo_task_code = a.mo_task_code,
+ mo_task_status = e.FullName,
+ material_id_id = a.material_id,
+ material_id = b.code+"/"+b.name,
+ material_code = b.code,
+ material_name = b.name,
+ mold_id_id = a.mold_id,
+ mold_id = c.mold_code,
+ mold_code = c.mold_code,
+ eqp_id_id = a.eqp_id,
+ eqp_id = d.code,
+ equip_code = d.code,
+ scheduled_qty = a.scheduled_qty,
+ reported_work_qty = a.reported_work_qty,
+ scrap_qty = a.scrap_qty,
+ plan_start_date = a.estimated_start_date==null ? "" : a.estimated_start_date.Value.ToString("yyyy-MM-dd"),
+ plan_end_date = a.plan_end_date==null ? "" : a.plan_end_date.Value.ToString("yyyy-MM-dd"),
+ }).ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs
new file mode 100644
index 00000000..9499db64
--- /dev/null
+++ b/ProductionMgr/Tnb.ProductionMgr/APP/AppPrdMoTaskTwoService.cs
@@ -0,0 +1,101 @@
+using COSXML.Model.Tag;
+using JNPF.Common.Core.Manager;
+using JNPF.Common.Filter;
+using JNPF.DependencyInjection;
+using JNPF.DynamicApiController;
+using JNPF.Systems.Entitys.System;
+using JNPF.Systems.Interfaces.System;
+using JNPF.VisualDev;
+using JNPF.VisualDev.Entitys.Dto.VisualDevModelData;
+using JNPF.VisualDev.Interfaces;
+using Microsoft.AspNetCore.Mvc;
+using SqlSugar;
+using Tnb.ProductionMgr.Entities;
+using Tnb.BasicData.Entities;
+using Tnb.EquipMgr.Entities;
+using Tnb.BasicData;
+
+namespace Tnb.ProductionMgr.APP
+{
+ ///
+ /// 移动端组装包装任务管理
+ ///
+ [ApiDescriptionSettings(Tag = ModuleConst.Tag, Area = ModuleConst.Area, Order = 700)]
+ [Route("api/[area]/[controller]/[action]")]
+ [OverideVisualDev(ModuleId)]
+ public class AppPrdMoTaskTwoService : IOverideVisualDevService, IDynamicApiController, ITransient
+ {
+ private const string ModuleId = "28486997557781";
+ private readonly ISqlSugarRepository _repository;
+ private readonly IUserManager _userManager;
+ private readonly IRunService _runService;
+ private readonly IVisualDevService _visualDevService;
+ private readonly ISqlSugarClient _db;
+ private readonly IBillRullService _billRuleService;
+
+ public OverideVisualDevFunc OverideFuncs { get; } = new OverideVisualDevFunc();
+ public AppPrdMoTaskTwoService(
+ ISqlSugarRepository repository,
+ IUserManager userManager,
+ IRunService runService,
+ IBillRullService billRullService,
+ IVisualDevService visualDevService
+ )
+ {
+ _repository = repository;
+ _userManager = userManager;
+ _runService = runService;
+ _visualDevService = visualDevService;
+ _db = _repository.AsSugarClient();
+ OverideFuncs.GetListAsync = GetList;
+ _billRuleService = billRullService;
+ }
+
+ private async Task GetList(VisualDevModelListQueryInput input)
+ {
+ var db = _repository.AsSugarClient();
+ Dictionary queryJson = !string.IsNullOrEmpty(input.queryJson) ? Newtonsoft.Json.JsonConvert.DeserializeObject>(input.queryJson) : new Dictionary();
+ string mo_task_code = queryJson.ContainsKey("mo_task_code") ? queryJson["mo_task_code"].ToString() : "";
+ string material_code = queryJson.ContainsKey("material_id") ? queryJson["material_id"].ToString() : "";
+ string equip_code = queryJson.ContainsKey("eqp_id") ? queryJson["eqp_id"].ToString() : "";
+ var result = await db.Queryable()
+ .LeftJoin((a, b) => a.material_id == b.id)
+ .LeftJoin((a, b, c) => a.mold_id == c.id)
+ .LeftJoin((a, b, c, d) => a.eqp_id == d.id)
+ .LeftJoin((a, b, c, d, e) => e.EnCode == a.mo_task_status && e.DictionaryTypeId == DictConst.PrdTaskStatusTypeId)
+ .LeftJoin((a,b,c,d,e,f)=>a.process_id==f.id)
+ .WhereIF(!string.IsNullOrEmpty(mo_task_code), (a, b, c, d, e) => a.mo_task_code.Contains(mo_task_code))
+ .WhereIF(!string.IsNullOrEmpty(material_code), (a, b, c, d, e) => b.code.Contains(material_code) || b.name.Contains(material_code))
+ .WhereIF(!string.IsNullOrEmpty(equip_code), (a, b, c, d, e) => d.code.Contains(equip_code) || d.name.Contains(equip_code))
+ .Where(a => a.schedule_type == 2)
+ .Where(a => (a.mo_task_status==DictConst.ToBeStartedEnCode || a.mo_task_status==DictConst.InProgressEnCode || a.mo_task_status==DictConst.MoStatusExceptionCode || a.mo_task_status==DictConst.MoStatusPauseCode || a.mo_task_status==DictConst.ComplatedEnCode))
+ .OrderByDescending(a => a.create_time)
+ .Select((a, b, c, d, e,f) => new AppPrdMoTaskOneListOutput
+ {
+ id = a.id,
+ mo_task_code = a.mo_task_code,
+ mo_task_status = e.FullName,
+ material_id_id = a.material_id,
+ material_id = b.code+"/"+b.name,
+ material_code = b.code,
+ material_name = b.name,
+ mold_id_id = a.mold_id,
+ mold_id = c.mold_code,
+ mold_code = c.mold_code,
+ eqp_id_id = a.eqp_id,
+ eqp_id = d.code,
+ equip_code = d.code,
+ process_id_id = a.process_id,
+ process_id = f.process_name,
+ process_code = f.process_code,
+ mbom_process_id = a.mbom_process_id,
+ scheduled_qty = a.scheduled_qty,
+ reported_work_qty = a.reported_work_qty,
+ scrap_qty = a.scrap_qty,
+ plan_start_date = a.estimated_start_date==null ? "" : a.estimated_start_date.Value.ToString("yyyy-MM-dd"),
+ plan_end_date = a.plan_end_date==null ? "" : a.plan_end_date.Value.ToString("yyyy-MM-dd"),
+ }).ToPagedListAsync(input.currentPage, input.pageSize);
+ return PageResult.SqlSugarPageResult(result);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs
index baffc63b..4f4b9344 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoService.cs
@@ -873,12 +873,24 @@ namespace Tnb.ProductionMgr
}
else
{
- PageResult output = JsonConvert.DeserializeObject>(authResponse.data.ToString(),new Tnb.Common.Utils.DateTimeJsonConverter());
+ PageResult output = JsonConvert.DeserializeObject>(authResponse.data.ToString(),new Tnb.Common.Utils.DateTimeJsonConverter());
if (output.list != null && output.list.Count > 0)
{
+ BasMaterial basMaterial = await _db.Queryable().SingleAsync(x=>x.id==output.list[0].material_id);
+ BasSupplier basSupplier = await _db.Queryable().SingleAsync(x=>x.id==output.list[0].supplier_id);
+ DictionaryDataEntity unit = await _db.Queryable()
+ .LeftJoin((a,b)=>a.Id==b.DictionaryTypeId)
+ .Where((a,b)=>a.EnCode==DictConst.MeasurementUnit && b.EnCode==output.list[0].unit_id)
+ .Select((a,b)=>b)
+ .FirstAsync();
output.list[0].feeding_num = await _db.Queryable()
.LeftJoin((a, b) => a.id == b.material_receipt_detail_id)
.Where((a, b) => a.barcode == barcode).SumAsync((a, b) => b.num);
+ output.list[0].material_name = basMaterial.name;
+ output.list[0].material_standard = basMaterial.material_standard;
+ output.list[0].supplier_name = basSupplier.supplier_name;
+ output.list[0].unit_name = unit.FullName;
+
return output.list[0];
}
}
diff --git a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
index 71dcbc55..0158bfca 100644
--- a/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
+++ b/ProductionMgr/Tnb.ProductionMgr/PrdMoTaskService.cs
@@ -2062,7 +2062,7 @@ namespace Tnb.ProductionMgr
});
if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage);
- return result.IsSuccess ? "延期成功" : result.ErrorMessage;
+ return result.IsSuccess ? "更换成功" : result.ErrorMessage;
}
@@ -2109,7 +2109,7 @@ namespace Tnb.ProductionMgr
});
if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage);
- return result.IsSuccess ? "延期成功" : result.ErrorMessage;
+ return result.IsSuccess ? "更换成功" : result.ErrorMessage;
}
@@ -2156,9 +2156,53 @@ namespace Tnb.ProductionMgr
});
if (!result.IsSuccess) throw Oops.Bah(result.ErrorMessage);
- return result.IsSuccess ? "延期成功" : result.ErrorMessage;
+ return result.IsSuccess ? "更换成功" : result.ErrorMessage;
}
+
+ ///
+ /// 根据id获取任务单相关信息
+ ///
+ ///
+ [HttpPost]
+ public async Task GetPrdMoTaskInfoById(Dictionary dic)
+ {
+ string id = dic.ContainsKey("id") ? dic["id"] : "";
+ if (string.IsNullOrEmpty(id)) return null;
+ var db = _repository.AsSugarClient();
+ return await db.Queryable()
+ .LeftJoin((a, b) => a.material_id == b.id)
+ .LeftJoin((a, b, c) => a.mold_id == c.id)
+ .LeftJoin((a, b, c, d) => a.eqp_id == d.id)
+ .LeftJoin((a,b,c,d,e)=>e.EnCode==a.mo_task_status && e.DictionaryTypeId==DictConst.PrdTaskStatusTypeId)
+ .LeftJoin((a,b,c,d,e,f)=>a.process_id==f.id)
+ .LeftJoin((a,b,c,d,e,f,g)=>a.workstation_id==g.Id)
+ .Where((a, b, c, d) => a.id == id)
+ .Select((a, b, c, d,e,f,g) => new
+ {
+ id = a.id,
+ mo_task_code = a.mo_task_code,
+ mo_task_status = e.FullName,
+ material_id = a.material_id,
+ material_code = b.code,
+ material_name = b.name,
+ mold_id = a.mold_id,
+ mold_code = c.mold_code,
+ mold_name = c.mold_name,
+ schedule_type = a.schedule_type,
+ equip_code = d.code,
+ equip_name = d.name,
+ workstation_id = a.workstation_id,
+ workstation_code = g.EnCode,
+ workstation_name = g.FullName,
+ scheduled_qty = a.scheduled_qty,
+ reported_work_qty = a.reported_work_qty,
+ scrap_qty = a.scrap_qty,
+ process_id = a.process_id,
+ process_name = f.process_name,
+ }).FirstAsync();
+
+ }
}
}
diff --git a/QcMgr/Tnb.QcMgr.Entities/Dto/SpcData.cs b/QcMgr/Tnb.QcMgr.Entities/Dto/SpcData.cs
index e5af3a8a..d9b3bf7b 100644
--- a/QcMgr/Tnb.QcMgr.Entities/Dto/SpcData.cs
+++ b/QcMgr/Tnb.QcMgr.Entities/Dto/SpcData.cs
@@ -107,4 +107,34 @@ namespace Tnb.QcMgr.Entities
public float? clmr { get; set; }
public float? lclmr { get; set; }
}
+ public class Pchart
+ {
+ public float? p { get; set; }
+ public float? n { get; set; }
+ public float? ucl { get; set; }
+ public float? cl { get; set; }
+ public float? lcl { get; set; }
+ }
+ public class Uchart
+ {
+ public float? u { get; set; }
+ public float? n { get; set; }
+ public float? ucl { get; set; }
+ public float? cl { get; set; }
+ public float? lcl { get; set; }
+ }
+ public class NPchart
+ {
+ public float? np { get; set; }
+ public float? ucl { get; set; }
+ public float? cl { get; set; }
+ public float? lcl { get; set; }
+ }
+ public class Cchart
+ {
+ public float? c { get; set; }
+ public float? ucl { get; set; }
+ public float? cl { get; set; }
+ public float? lcl { get; set; }
+ }
}
diff --git a/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs b/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs
index 6a534904..c6d5ccc8 100644
--- a/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs
+++ b/QcMgr/Tnb.QcMgr.Entities/Enums/EnumTriggerType.cs
@@ -16,15 +16,15 @@ namespace Tnb.QcMgr.Entities.Enums
}
public enum EnumTriggerEvent
{
- [Remark("首件检", "换模具")]
+ [Remark("首检", "换模具")]
首件检换模具 = 1,
- [Remark("首件检", "换物料批号")]
+ [Remark("首检", "换物料批号")]
首件检换物料批号 = 2,
- [Remark("首件检", "换物料编号")]
+ [Remark("首检", "换物料编号")]
首件检换物料编号 = 3,
- [Remark("首件检", "新的生产任务")]
+ [Remark("首检", "新的生产任务")]
首件检新的生产任务 = 4,
- [Remark("首件检", "生产任务暂停")]
+ [Remark("首检", "生产任务暂停")]
首件检生产任务暂停 = 5,
[Remark("出厂检", "按入厂频次")]
出厂检按入厂频次 = 6,
diff --git a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs
index 15f413e1..8c6c0a34 100644
--- a/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs
+++ b/QcMgr/Tnb.QcMgr/QcCheckPlanService.cs
@@ -292,11 +292,12 @@ namespace Tnb.QcMgr
{
var DictionaryData = _repository.AsSugarClient().Queryable
((a, b) => new object[] { JoinType.Left, a.DictionaryTypeId == b.Id, })
- .Where((a, b) => b.FullName == "质量方案类型").ToList();
+ .Where((a, b) => b.FullName == "质检类型选择").ToList();
var TriggerEvent = new QcTriggerEvent();
var enumTriggerEvent = entity.triggerevent;
var remark = RemarkAttribute.GetRemark(enumTriggerEvent);
- TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == DictionaryData.Where(p => p.FullName == remark.CheckType).First().Id && p.name == remark.CheckContent).First();
+ var type = DictionaryData.Where(p => p.FullName == remark.CheckType).First().Id;
+ TriggerEvent = _repository.AsSugarClient().Queryable().Where(p => p.type == type && p.name == remark.CheckContent).First();
Query = Query.Where((a, b, c, d, e) => b.triggertype == "3" && b.content!.Contains(TriggerEvent.id));
}
private void Filter(List QcCheckPlanHs, TriggerPlanEntity entity)
diff --git a/QcMgr/Tnb.QcMgr/QcSpcService.cs b/QcMgr/Tnb.QcMgr/QcSpcService.cs
index 297b6ca7..36753845 100644
--- a/QcMgr/Tnb.QcMgr/QcSpcService.cs
+++ b/QcMgr/Tnb.QcMgr/QcSpcService.cs
@@ -11,6 +11,7 @@ using JNPF.DependencyInjection;
using JNPF.DynamicApiController;
using JNPF.FriendlyException;
using Microsoft.AspNetCore.Mvc;
+using Spire.Xls.Core;
using SqlSugar;
using Tnb.QcMgr.Entities;
using Tnb.QcMgr.Entities.Entity;
@@ -255,6 +256,84 @@ namespace Tnb.QcMgr
});
return XMRchart;
}
+ if (QcSpcH.graphtype == "P图")
+ {
+ List pcharts = new List();
+ foreach (var QcSpcD in QcSpcDs)
+ {
+ Pchart pchart = new Pchart();
+ pchart.p = QcSpcD.defectivenum / QcSpcD.checknum;
+ pchart.n = QcSpcD.checknum;
+
+ pcharts.Add(pchart);
+ }
+ var pAverage = (pcharts.Select(p => p.n * p.p).Sum()) / (pcharts.Select(p => p.n).Sum());
+ var nAverage = pcharts.Select(p => p.n).Average();
+ pcharts.ForEach(p =>
+ {
+ p.cl = pAverage;
+ p.ucl = pAverage + (float)(3 * Math.Sqrt((double)(pAverage * (1 - pAverage))!) / Math.Sqrt((double)nAverage!));
+ p.lcl = pAverage - (float)(3 * Math.Sqrt((double)(pAverage * (1 - pAverage))!) / Math.Sqrt((double)nAverage!)) < 0 ? 0 : pAverage - (float)(3 * Math.Sqrt((double)(pAverage * (1 - pAverage))!) / Math.Sqrt((double)nAverage!));
+ });
+ return pcharts;
+ }
+ if (QcSpcH.graphtype == "U图")
+ {
+ List ucharts = new List();
+ foreach (var QcSpcD in QcSpcDs)
+ {
+ Uchart uchart = new Uchart();
+ uchart.u = QcSpcD.defectivenum / QcSpcD.checknum;
+ uchart.n = QcSpcD.checknum;
+ ucharts.Add(uchart);
+ }
+ var uAverage = (ucharts.Select(p => p.u).Sum()) / (ucharts.Count());
+ var nAverage = ucharts.Select(p => p.n).Average();
+ ucharts.ForEach(p =>
+ {
+ p.cl = uAverage;
+ p.ucl = uAverage + (float)(3 * Math.Sqrt((double)(uAverage / nAverage)!));
+ p.lcl = uAverage - (float)(3 * Math.Sqrt((double)(uAverage / nAverage)!)) < 0 ? 0 : uAverage - (float)(3 * Math.Sqrt((double)(uAverage / nAverage)!));
+ });
+ return ucharts;
+ }
+ if (QcSpcH.graphtype == "nP图")
+ {
+ List npcharts = new List();
+ foreach (var QcSpcD in QcSpcDs)
+ {
+ NPchart npchart = new NPchart();
+ npchart.np = QcSpcD.defectivenum;
+ npcharts.Add(npchart);
+ }
+ var npAverage = (npcharts.Select(p => p.np).Sum()) / (npcharts.Count());
+ var pAverage = npcharts.Select(p => p.np).Sum() / (npcharts.Count() * QcSpcH.subcapacity);
+ npcharts.ForEach(p =>
+ {
+ p.cl = npAverage;
+ p.ucl = npAverage + (float)(3 * Math.Sqrt((double)(npAverage * (1 - pAverage))!));
+ p.lcl = npAverage - (float)(3 * Math.Sqrt((double)(npAverage * (1 - pAverage))!)) < 0 ? 0 : npAverage - (float)(3 * Math.Sqrt((double)(npAverage * (1 - pAverage))!));
+ });
+ return npcharts;
+ }
+ if (QcSpcH.graphtype == "C图")
+ {
+ List ccharts = new List();
+ foreach (var QcSpcD in QcSpcDs)
+ {
+ Cchart cchart = new Cchart();
+ cchart.c = QcSpcD.defectivenum;
+ ccharts.Add(cchart);
+ }
+ var cAverage = (ccharts.Select(p => p.c).Sum()) / (ccharts.Count());
+ ccharts.ForEach(p =>
+ {
+ p.cl = cAverage;
+ p.ucl = cAverage + (float)(3 * Math.Sqrt((double)cAverage!));
+ p.lcl = cAverage - (float)(3 * Math.Sqrt((double)cAverage!)) < 0 ? 0 : cAverage - (float)(3 * Math.Sqrt((double)cAverage!));
+ });
+ return ccharts;
+ }
return null;
}
//标准差计算