251 lines
9.8 KiB
C#
Raw Normal View History

2025-11-22 10:14:35 +08:00
using Aliyun.OSS;
2025-11-12 17:32:28 +08:00
using Infrastructure.Attribute;
using Infrastructure.Extensions;
2025-11-18 14:54:03 +08:00
using RIZO.Model.Mes.Dto.GatherData;
2025-11-18 11:39:58 +08:00
using RIZO.Model.Mes.Dto.WorkOrderInfo;
2025-11-18 14:54:03 +08:00
using RIZO.Model.Mes.MasterData;
2025-11-18 11:39:58 +08:00
using RIZO.Model.Mes.WorkOrderInfo;
2025-11-12 17:32:28 +08:00
using RIZO.Repository;
2025-11-18 14:54:03 +08:00
using RIZO.Service.Mes.IMesService.MasterData;
2025-11-18 11:39:58 +08:00
using RIZO.Service.Mes.IMesService.WorkOrderInfo;
2025-11-18 14:54:03 +08:00
using RIZO.Service.Mes.MasterData;
2025-11-12 17:32:28 +08:00
2025-11-18 11:39:58 +08:00
namespace RIZO.Service.Mes.WorkOrderInfo
2025-11-12 17:32:28 +08:00
{
/// <summary>
/// 工单主表Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IWorkOrderService), ServiceLifetime = LifeTime.Transient)]
2025-11-18 11:39:58 +08:00
public class WorkOrderService : BaseService<WorkOrder>, IWorkOrderService
2025-11-12 17:32:28 +08:00
{
2025-11-18 14:54:03 +08:00
private PlcFirstCodeService plcFirstCodeService = new PlcFirstCodeService();
private WorkOrderItemService workOrderItemService = new WorkOrderItemService();
2025-11-12 17:32:28 +08:00
/// <summary>
/// 查询工单主表列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<WorkOrderDto> GetList(WorkOrderQueryDto parm)
{
var predicate = QueryExp(parm);
var response = Queryable()
.Where(predicate.ToExpression())
2025-11-18 11:39:58 +08:00
.ToPage<WorkOrder, WorkOrderDto>(parm);
2025-11-12 17:32:28 +08:00
return response;
}
2025-11-18 19:17:51 +08:00
public PagedInfo<WorkOrderDto> GetListExport(WorkOrderQueryDto parm)
{
var predicate = QueryExpExport(parm);
var response = Queryable()
.Where(predicate.ToExpression())
.ToPage<WorkOrder, WorkOrderDto>(parm);
return response;
}
2025-11-12 17:32:28 +08:00
/// <summary>
/// 获取详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
2025-11-18 11:39:58 +08:00
public WorkOrder GetInfo(long Id)
2025-11-12 17:32:28 +08:00
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
/// <summary>
/// 添加工单主表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
2025-11-18 11:39:58 +08:00
public WorkOrder AddWorkOrder(WorkOrder model)
2025-11-12 17:32:28 +08:00
{
return Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 修改工单主表
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
2025-11-18 11:39:58 +08:00
public int UpdateWorkOrder(WorkOrder model)
2025-11-12 17:32:28 +08:00
{
return Update(model, true);
}
/// <summary>
2025-11-18 19:17:51 +08:00
/// 查询表达式
2025-11-12 17:32:28 +08:00
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
2025-11-18 11:39:58 +08:00
private static Expressionable<WorkOrder> QueryExp(WorkOrderQueryDto parm)
2025-11-12 17:32:28 +08:00
{
2025-11-18 11:39:58 +08:00
var predicate = Expressionable.Create<WorkOrder>();
2025-11-18 14:54:03 +08:00
if (!string.IsNullOrWhiteSpace(parm.LineCode))
{
predicate.And(it => it.LineCode.Contains(parm.LineCode));
}
if (!string.IsNullOrWhiteSpace(parm.LineName))
{
predicate.And(it => it.LineName.Contains(parm.LineName));
}
if (!string.IsNullOrWhiteSpace(parm.WorkOrderCode))
{
predicate.And(it => it.WorkOrderCode.Contains(parm.WorkOrderCode));
}
if (!string.IsNullOrWhiteSpace(parm.OrderDate))
{
predicate.And(it => it.OrderDate.Contains(parm.OrderDate));
}
2025-11-12 17:32:28 +08:00
return predicate;
}
2025-11-18 14:54:03 +08:00
2025-11-18 19:17:51 +08:00
private static Expressionable<WorkOrder> QueryExpExport(WorkOrderQueryDto parm)
{
var predicate = Expressionable.Create<WorkOrder>();
2025-11-18 19:51:59 +08:00
if (parm.StartTime != null && parm.StartTime.ToString().Length > 0)
2025-11-18 19:17:51 +08:00
{
predicate.And(it => it.CreateTime >= parm.StartTime);
}
2025-11-18 19:51:59 +08:00
if (parm.EndTime != null && parm.EndTime.ToString().Length > 0)
2025-11-18 19:17:51 +08:00
{
predicate.And(it => it.CreateTime < parm.EndTime);
}
return predicate;
}
2025-11-22 10:14:35 +08:00
public WorkOrder CreateWorkOrderBySacnCode(FlowCard flowCard)
2025-11-18 14:54:03 +08:00
{
try
{
2025-11-22 10:14:35 +08:00
WorkOrder orderInfoNew = new WorkOrder();
//扫码信息转成FlowCard对象
//假设扫码结果是json形式
//{
// "FlowCardNo": "0001",
// "MaterialCode": "GEAR-001",
// "MaterialName": "齿轮A型",
// "BatchNumber": "Batch-20251122-01",
// "TotalQty": 100
//}
//字符串转对象
//FlowCard flowCard = JsonConvert.DeserializeObject<FlowCard>(ScanCode);
2025-11-18 14:54:03 +08:00
//根据IDCode解析的数据去检索物料档案
2025-11-22 13:56:40 +08:00
//var material = materialInfoService.Queryable().Where(it => it.MaterialCode == flowCard.MaterialCode).First();
//if (material != null)
//{
//}
string strDay = DateTime.Now.ToString("yyyyMMdd");
//检验流卡二维码生成的工单是否重复生成
var WorkOrder = Queryable()
.Where(it => it.WorkOrderCode == flowCard.FlowCardNo).First(); ;
if (WorkOrder == null)
2025-11-18 14:54:03 +08:00
{
2025-11-22 13:56:40 +08:00
orderInfoNew.OrderDate = strDay;
orderInfoNew.WorkOrderCode = flowCard.FlowCardNo;
orderInfoNew.MaterialCode = flowCard.MaterialCode;
orderInfoNew.MaterialName = flowCard.MaterialName;
orderInfoNew.BatchNumber = flowCard.BatchNumber;
orderInfoNew.TotalQty = flowCard.TotalQty;
orderInfoNew.OrderDate = strDay;
orderInfoNew.OrderStatus = 1;
//根据前端是否能返回UserId
//orderInfoNew.CreateBy = parm.UserId;
//orderInfoNew.CreateName = parm.UserName;
//orderInfoNew.UpdateBy = parm.UserId;
//orderInfoNew.UpdateName = parm.UserName;
orderInfoNew.CreateTime = DateTime.Now;
orderInfoNew.UpdateTime = DateTime.Now;
int iFlag = Update(orderInfoNew);
2025-11-18 14:54:03 +08:00
}
2025-11-22 10:14:35 +08:00
return orderInfoNew;
2025-11-18 14:54:03 +08:00
}
catch (Exception ex)
{
return null;
}
}
//根据工单主表号去创建工单从表数据
2025-11-22 13:56:40 +08:00
//private WorkOrderItem createWorkOrderItem(string strWorkOrderCode, string strMaterialCode, string strLineCode, string strLineName, string strProcessCode, string strProcessName, string strIdCode, MaterialInfo material,string strUserId,string strUserName)
//{
// string plcCode = "";
// string materialCode = material.MaterialCode;
// string strFeature = material.Feature;
// List<PlcFirstCode> plcFirstCodes = plcFirstCodeService.Queryable()
// .Where(it => it.LineCode == strLineCode && (it.Feature == "ALL" || it.Feature == strFeature)).ToList();
// string strPlcFirstCode = "";
// if (plcFirstCodes != null && plcFirstCodes.Any())
// {
// strPlcFirstCode = plcFirstCodes[0].FirstCode;
// }
// int Sequcence = 1;
// WorkOrderItem workOrderItem = workOrderItemService.Queryable()
// .Where(it => it.WorkOrderCode == strWorkOrderCode).OrderByDescending(it => it.Sequcence).First();
// if (workOrderItem != null)
// {
// Sequcence = workOrderItem.Sequcence;
// Sequcence += 1;
// }
// string formattedSequence = Sequcence.ToString("D4");
// string strWorkOrderItemCode = strWorkOrderCode + formattedSequence;
// plcCode = strPlcFirstCode + materialCode + strWorkOrderItemCode;
// WorkOrderItem workOrderItem1 = new WorkOrderItem();
// workOrderItem1.WorkOrderCode = strWorkOrderCode;
// workOrderItem1.WorkOrderItemCode = strWorkOrderItemCode;
// workOrderItem1.PlcCode = plcCode;
// workOrderItem1.ProcessCode = strProcessCode;
// workOrderItem1.ProcessName = strProcessName;
// workOrderItem1.MaterialCode = materialCode;
// workOrderItem1.MaterialName = material.MaterialName;
// workOrderItem1.CreateBy = strUserId;
// workOrderItem1.CreateName = strUserName;
// workOrderItem1.UpdateBy = strUserId;
// workOrderItem1.UpdateName = strUserName;
// workOrderItem1.CreateTime = DateTime.Now;
// workOrderItem1.UpdateTime = DateTime.Now;
// workOrderItem1.Qty = 1;
// workOrderItem1.Sequcence = Sequcence;
// int iFlag = workOrderItemService.Insert(workOrderItem1);
// return workOrderItem1;
//}
2025-11-18 18:49:17 +08:00
/// <summary>
/// OrderStatus 1执行中2已完成
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public int ChangeWorkOrderState(WorkOrderState parm)
{
int iResult = 0;
try
{
iResult = Update(where: it => parm.Ids.Contains(it.Id),
columns: it => new WorkOrder
{
OrderStatus = parm.OrderStatus, // 目标状态
UpdateBy = parm.UserId, // 更新人ID
UpdateName = parm.UserName, // 更新人名称
UpdateTime = DateTime.Now // 更新时间
}
);
}
catch (Exception ex)
{
iResult = 0;
}
return iResult;
}
2025-11-12 17:32:28 +08:00
}
}