251 lines
9.8 KiB
C#
251 lines
9.8 KiB
C#
using Aliyun.OSS;
|
||
using Infrastructure.Attribute;
|
||
using Infrastructure.Extensions;
|
||
using RIZO.Model.Mes.Dto.GatherData;
|
||
using RIZO.Model.Mes.Dto.WorkOrderInfo;
|
||
using RIZO.Model.Mes.MasterData;
|
||
using RIZO.Model.Mes.WorkOrderInfo;
|
||
using RIZO.Repository;
|
||
using RIZO.Service.Mes.IMesService.MasterData;
|
||
using RIZO.Service.Mes.IMesService.WorkOrderInfo;
|
||
using RIZO.Service.Mes.MasterData;
|
||
|
||
namespace RIZO.Service.Mes.WorkOrderInfo
|
||
{
|
||
/// <summary>
|
||
/// 工单主表Service业务层处理
|
||
/// </summary>
|
||
[AppService(ServiceType = typeof(IWorkOrderService), ServiceLifetime = LifeTime.Transient)]
|
||
public class WorkOrderService : BaseService<WorkOrder>, IWorkOrderService
|
||
{
|
||
private PlcFirstCodeService plcFirstCodeService = new PlcFirstCodeService();
|
||
private WorkOrderItemService workOrderItemService = new WorkOrderItemService();
|
||
|
||
/// <summary>
|
||
/// 查询工单主表列表
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
public PagedInfo<WorkOrderDto> GetList(WorkOrderQueryDto parm)
|
||
{
|
||
var predicate = QueryExp(parm);
|
||
|
||
var response = Queryable()
|
||
.Where(predicate.ToExpression())
|
||
.ToPage<WorkOrder, WorkOrderDto>(parm);
|
||
|
||
return response;
|
||
}
|
||
|
||
public PagedInfo<WorkOrderDto> GetListExport(WorkOrderQueryDto parm)
|
||
{
|
||
var predicate = QueryExpExport(parm);
|
||
|
||
var response = Queryable()
|
||
.Where(predicate.ToExpression())
|
||
.ToPage<WorkOrder, WorkOrderDto>(parm);
|
||
|
||
return response;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取详情
|
||
/// </summary>
|
||
/// <param name="Id"></param>
|
||
/// <returns></returns>
|
||
public WorkOrder GetInfo(long Id)
|
||
{
|
||
var response = Queryable()
|
||
.Where(x => x.Id == Id)
|
||
.First();
|
||
|
||
return response;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 添加工单主表
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public WorkOrder AddWorkOrder(WorkOrder model)
|
||
{
|
||
return Insertable(model).ExecuteReturnEntity();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 修改工单主表
|
||
/// </summary>
|
||
/// <param name="model"></param>
|
||
/// <returns></returns>
|
||
public int UpdateWorkOrder(WorkOrder model)
|
||
{
|
||
return Update(model, true);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询表达式
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
private static Expressionable<WorkOrder> QueryExp(WorkOrderQueryDto parm)
|
||
{
|
||
var predicate = Expressionable.Create<WorkOrder>();
|
||
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));
|
||
}
|
||
return predicate;
|
||
}
|
||
|
||
private static Expressionable<WorkOrder> QueryExpExport(WorkOrderQueryDto parm)
|
||
{
|
||
var predicate = Expressionable.Create<WorkOrder>();
|
||
if (parm.StartTime != null && parm.StartTime.ToString().Length > 0)
|
||
{
|
||
predicate.And(it => it.CreateTime >= parm.StartTime);
|
||
}
|
||
if (parm.EndTime != null && parm.EndTime.ToString().Length > 0)
|
||
{
|
||
predicate.And(it => it.CreateTime < parm.EndTime);
|
||
}
|
||
return predicate;
|
||
}
|
||
|
||
|
||
public WorkOrder CreateWorkOrderBySacnCode(FlowCard flowCard)
|
||
{
|
||
try
|
||
{
|
||
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);
|
||
//根据IDCode解析的数据去检索物料档案
|
||
//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)
|
||
{
|
||
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);
|
||
}
|
||
return orderInfoNew;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return null;
|
||
}
|
||
}
|
||
|
||
//根据工单主表号去创建工单从表数据
|
||
//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;
|
||
//}
|
||
/// <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;
|
||
}
|
||
}
|
||
} |