feat: 添加工单管理服务及相关测试
refactor: 重构工单服务接口和实现 test: 添加工单服务的单元测试和集成测试
This commit is contained in:
149
DOAN.Service/MES/Product/ProWorkorderUtilityService.cs
Normal file
149
DOAN.Service/MES/Product/ProWorkorderUtilityService.cs
Normal file
@@ -0,0 +1,149 @@
|
||||
using DOAN.Model.MES.product;
|
||||
using DOAN.Model.MES.product.Dto;
|
||||
using DOAN.Service.MES.product.IService;
|
||||
using Infrastructure;
|
||||
using Infrastructure.Attribute;
|
||||
|
||||
namespace DOAN.Service.MES.product
|
||||
{
|
||||
/// <summary>
|
||||
/// 工单工具服务
|
||||
/// </summary>
|
||||
[AppService(ServiceType = typeof(IProWorkorderUtilityService), ServiceLifetime = LifeTime.Transient)]
|
||||
public class ProWorkorderUtilityService : BaseService<ProWorkorder>, IProWorkorderUtilityService
|
||||
{
|
||||
/// <summary>
|
||||
/// 生成工单号
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public int Generate_workorder(ProWorkorderQueryDto2 parm)
|
||||
{
|
||||
DateTime update_time = parm.WorkorderDate.ToLocalTime().Date;
|
||||
|
||||
List<ProWorkorder> proWorkorderList = Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(it => it.WorkorderDate == update_time)
|
||||
.Where(it => it.Status == 1)
|
||||
.OrderBy(it => it.Sort)
|
||||
.ToList();
|
||||
string maxs = Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(it => it.WorkorderDate == update_time)
|
||||
.Where(it => it.Status == 3)
|
||||
.Max(it => it.Workorder);
|
||||
|
||||
if (proWorkorderList != null && proWorkorderList.Count() > 0)
|
||||
{
|
||||
string baseSort = update_time.ToString("yyyyMMdd");
|
||||
int index = 1;
|
||||
if (!string.IsNullOrEmpty(maxs))
|
||||
{
|
||||
index = Convert.ToInt32(maxs.Substring(maxs.Length - 3)) + 1;
|
||||
}
|
||||
|
||||
foreach (ProWorkorder item in proWorkorderList)
|
||||
{
|
||||
item.Workorder = baseSort + index.ToString("000");
|
||||
item.Sort = index * 10;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
return Context.Updateable(proWorkorderList).ExecuteCommand();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 移动工单
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public int MoveWorkorder(string id, int type)
|
||||
{
|
||||
int result = 0;
|
||||
ProWorkorder toMove = Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(it => it.Id == id)
|
||||
.First();
|
||||
var pervious = Context
|
||||
.Queryable<ProWorkorder>()
|
||||
.Where(it => it.WorkorderDate == toMove.WorkorderDate);
|
||||
|
||||
//上移动
|
||||
if (type == 1)
|
||||
{
|
||||
pervious = pervious
|
||||
.Where(it => it.Sort <= toMove.Sort)
|
||||
.OrderByDescending(it => it.Sort);
|
||||
}
|
||||
//下移
|
||||
else if (type == 2)
|
||||
{
|
||||
pervious = pervious.Where(it => it.Sort >= toMove.Sort).OrderBy(it => it.Sort);
|
||||
}
|
||||
|
||||
ProWorkorder exchange = pervious.Skip(1).Take(1).First();
|
||||
if (exchange != null)
|
||||
{
|
||||
int temp = toMove.Sort.Value;
|
||||
toMove.Sort = exchange.Sort;
|
||||
exchange.Sort = temp;
|
||||
result += Context.Updateable(toMove).ExecuteCommand();
|
||||
result += Context.Updateable(exchange).ExecuteCommand();
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查询BOM及其所需数量
|
||||
/// </summary>
|
||||
/// <param name="workorder_num"></param>
|
||||
/// <returns></returns>
|
||||
public List<WorkOrderBom> SearchBOMNum(string workorder_num)
|
||||
{
|
||||
// 这里需要实现BOM查询逻辑
|
||||
// 暂时返回空列表
|
||||
return new List<WorkOrderBom>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 工单日志
|
||||
/// </summary>
|
||||
/// <param name="workorder"></param>
|
||||
/// <param name="log"></param>
|
||||
/// <param name="Operator"></param>
|
||||
/// <returns></returns>
|
||||
public int WorkOrderLog(string workorder, string log, string Operator)
|
||||
{
|
||||
// 这里需要实现工单日志记录逻辑
|
||||
// 暂时返回成功
|
||||
return 1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 导出PDF
|
||||
/// </summary>
|
||||
/// <param name="workorderArray"></param>
|
||||
/// <returns></returns>
|
||||
public Task<(string, Stream)> ExportPDFByQuestPDFDemo(string[] workorderArray)
|
||||
{
|
||||
// 这里需要实现PDF导出逻辑
|
||||
// 暂时返回空结果
|
||||
return Task.FromResult(("", (Stream)new MemoryStream()));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 打印工单
|
||||
/// </summary>
|
||||
/// <param name="param"></param>
|
||||
/// <returns></returns>
|
||||
public Task<CustomException> PrintTicketsByTemplate(ProWorkorderExportDto param)
|
||||
{
|
||||
// 这里需要实现工单打印逻辑
|
||||
// 暂时返回成功
|
||||
return Task.FromResult((CustomException)null);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user