feat: 添加报废记录功能及相关字段扩展
- 新增报废记录表及相关服务、控制器 - 扩展工单报表DTO,增加炉号、领料批次等字段 - 修改报表查询服务,关联工单表获取更多信息 - 在物料入库DTO中添加工单号字段 - 新增IQC文件夹结构
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="BZFM\IBZFMService\" />
|
||||
<Folder Include="MES\Quality\IQC\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -50,8 +50,22 @@ public class ProReportworkService : BaseService<ProReportwork01>, IProReportwork
|
||||
var response = Context
|
||||
.Queryable(query)
|
||||
.LeftJoin<BaseWorkProcesses>((q, w) => q.ProcessId == w.Id)
|
||||
.OrderBy((q, w) => new { q.Workorder, w.Id })
|
||||
.Select((q, w) => new ProReportworkDto { ProcessName = w.Name }, true)
|
||||
.LeftJoin<ProWorkorder>((q, w, wo) => q.Workorder == wo.Workorder)
|
||||
.OrderBy((q, w, wo) => new { q.Workorder, w.Id })
|
||||
.Select(
|
||||
(q, w, wo) =>
|
||||
new ProReportworkDto
|
||||
{
|
||||
ProcessName = w.Name,
|
||||
FeedOrder = wo.FeedOrder,
|
||||
ProductionName = wo.productionName,
|
||||
ProductionCode = wo.productionCode,
|
||||
MaterialCode = wo.MaterialCode,
|
||||
MaterialName = wo.MaterialName,
|
||||
StoveCode = wo.StoveCode,
|
||||
},
|
||||
true
|
||||
)
|
||||
.ToPage_NO_Convert(parm);
|
||||
|
||||
return response;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
using DOAN.Model.BZFM.Dto;
|
||||
using DOAN.Model.BZFM;
|
||||
|
||||
namespace DOAN.Service.BZFM.IService
|
||||
{
|
||||
/// <summary>
|
||||
/// 报废记录表service接口
|
||||
/// </summary>
|
||||
public interface IQcScrapRecordsService : IBaseService<QcScrapRecords>
|
||||
{
|
||||
PagedInfo<QcScrapRecordsDto> GetList(QcScrapRecordsQueryDto parm);
|
||||
|
||||
QcScrapRecords GetInfo(long Id);
|
||||
|
||||
|
||||
QcScrapRecords AddQcScrapRecords(QcScrapRecords parm);
|
||||
int UpdateQcScrapRecords(QcScrapRecords parm);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
79
DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs
Normal file
79
DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs
Normal file
@@ -0,0 +1,79 @@
|
||||
using Infrastructure.Attribute;
|
||||
using Infrastructure.Extensions;
|
||||
using DOAN.Model.BZFM.Dto;
|
||||
using DOAN.Model.BZFM;
|
||||
using DOAN.Repository;
|
||||
using DOAN.Service.BZFM.IService;
|
||||
|
||||
namespace DOAN.Service.BZFM
|
||||
{
|
||||
/// <summary>
|
||||
/// 报废记录表Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IQcScrapRecordsService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class QcScrapRecordsService : BaseService<QcScrapRecords>, IQcScrapRecordsService
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询报废记录表列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<QcScrapRecordsDto> GetList(QcScrapRecordsQueryDto parm)
|
||||
{
|
||||
var predicate = QueryExp(parm);
|
||||
|
||||
var response = Queryable()
|
||||
.Where(predicate.ToExpression())
|
||||
.ToPage<QcScrapRecords, QcScrapRecordsDto>(parm);
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public QcScrapRecords GetInfo(long Id)
|
||||
{
|
||||
var response = Queryable()
|
||||
.Where(x => x.Id == Id)
|
||||
.First();
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加报废记录表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public QcScrapRecords AddQcScrapRecords(QcScrapRecords model)
|
||||
{
|
||||
return Insertable(model).ExecuteReturnEntity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改报废记录表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateQcScrapRecords(QcScrapRecords model)
|
||||
{
|
||||
return Update(model, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询导出表达式
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
private static Expressionable<QcScrapRecords> QueryExp(QcScrapRecordsQueryDto parm)
|
||||
{
|
||||
var predicate = Expressionable.Create<QcScrapRecords>();
|
||||
|
||||
return predicate;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
return Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(it => it.WorkorderDate >= startDate && it.WorkorderDate <= endDate)
|
||||
.Where(it => it.PlanNum > 0)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
@@ -149,7 +150,9 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
Remarks = $"生产领料,工单号:{workorder}",
|
||||
};
|
||||
MmInventoryService mmInventoryService = new();
|
||||
string createReceiptresult = mmInventoryService.CreateOutboundReceipt(revokeRecepitDto);
|
||||
string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
|
||||
revokeRecepitDto
|
||||
);
|
||||
if (createReceiptresult != "ok")
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
@@ -177,7 +180,6 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
Context.Ado.RollbackTran();
|
||||
throw;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -269,7 +271,9 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
if (mmMaterial == null)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception($"物料档案不存在,无法成品入库:{proWorkorder.productionCode}");
|
||||
throw new Exception(
|
||||
$"物料档案不存在,无法成品入库:{proWorkorder.productionCode}"
|
||||
);
|
||||
}
|
||||
if (inboundRecord == null)
|
||||
{
|
||||
@@ -316,7 +320,6 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
Context.Ado.RollbackTran();
|
||||
throw;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -440,7 +443,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
string createReceiptresult = mmInventoryService.CreateOutboundReceipt(
|
||||
revokeRecepitDto
|
||||
);
|
||||
if(createReceiptresult != "ok")
|
||||
if (createReceiptresult != "ok")
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception(createReceiptresult);
|
||||
@@ -500,9 +503,19 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
return Context
|
||||
.Queryable<ProReportwork01>()
|
||||
.LeftJoin<BaseWorkProcesses>((rw, wp) => rw.ProcessId == wp.Id)
|
||||
.LeftJoin<ProWorkorder>((rw, wp, wo) => rw.Workorder == wo.Workorder)
|
||||
.Where((rw, wp) => rw.Workorder == workorder)
|
||||
.OrderBy(rw => rw.ProcessId)
|
||||
.Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name }, true)
|
||||
.Select(
|
||||
(rw, wp, wo) =>
|
||||
new ProReportWorkDetialDto()
|
||||
{
|
||||
ProcessName = wp.Name,
|
||||
StoveCode = wo.StoveCode,
|
||||
FeedOrder = wo.FeedOrder,
|
||||
},
|
||||
true
|
||||
)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
@@ -518,6 +531,7 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
return Context
|
||||
.Queryable<ProReportwork01>()
|
||||
.LeftJoin<BaseWorkProcesses>((rw, wp) => rw.ProcessId == wp.Id)
|
||||
.LeftJoin<ProWorkorder>((rw, wp, wo) => rw.Workorder == wo.Workorder)
|
||||
.Where(
|
||||
(rw, wp) =>
|
||||
rw.Worker == query.name
|
||||
@@ -525,7 +539,16 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
&& rw.JobDateTime < DateTime.Today.AddDays(1)
|
||||
)
|
||||
.OrderBy(rw => rw.ProcessId)
|
||||
.Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name }, true)
|
||||
.Select(
|
||||
(rw, wp, wo) =>
|
||||
new ProReportWorkDetialDto()
|
||||
{
|
||||
ProcessName = wp.Name,
|
||||
StoveCode = wo.StoveCode,
|
||||
FeedOrder = wo.FeedOrder,
|
||||
},
|
||||
true
|
||||
)
|
||||
.ToPage_NO_Convert(query);
|
||||
}
|
||||
|
||||
@@ -545,14 +568,24 @@ public class ReportFlowService : BaseService<ProReportwork01>, IReportFlowServic
|
||||
return Context
|
||||
.Queryable<ProReportwork01>()
|
||||
.LeftJoin<BaseWorkProcesses>((rw, wp) => rw.ProcessId == wp.Id)
|
||||
.LeftJoin<ProWorkorder>((rw, wp, wo) => rw.Workorder == wo.Workorder)
|
||||
.Where(
|
||||
(rw, wp) =>
|
||||
(rw, wp, wo) =>
|
||||
rw.ProcessId == query.processId
|
||||
&& rw.JobDateTime >= DateTime.Today
|
||||
&& rw.JobDateTime < DateTime.Today.AddDays(1)
|
||||
)
|
||||
.OrderBy(rw => rw.ProcessId)
|
||||
.Select((rw, wp) => new ProReportWorkDetialDto() { ProcessName = wp.Name }, true)
|
||||
.Select(
|
||||
(rw, wp, wo) =>
|
||||
new ProReportWorkDetialDto()
|
||||
{
|
||||
ProcessName = wp.Name,
|
||||
StoveCode = wo.StoveCode,
|
||||
FeedOrder = wo.FeedOrder,
|
||||
},
|
||||
true
|
||||
)
|
||||
.ToPage_NO_Convert(query);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user