2025-11-12 17:32:28 +08:00
|
|
|
|
using Infrastructure.Attribute;
|
|
|
|
|
|
using Infrastructure.Extensions;
|
2025-11-26 14:21:26 +08:00
|
|
|
|
using Infrastructure.Model;
|
2025-11-18 11:39:58 +08:00
|
|
|
|
using RIZO.Model.Mes.Dto.WorkOrderInfo;
|
2025-11-25 09:32:28 +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 11:39:58 +08:00
|
|
|
|
using RIZO.Service.Mes.IMesService.WorkOrderInfo;
|
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(IWorkOrderItemService), ServiceLifetime = LifeTime.Transient)]
|
|
|
|
|
|
public class WorkOrderItemService : BaseService<WorkOrderItem>, IWorkOrderItemService
|
|
|
|
|
|
{
|
2025-11-25 09:32:28 +08:00
|
|
|
|
private PlcFirstCodeService plcFirstCodeService = new PlcFirstCodeService();
|
2025-11-12 17:32:28 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 查询工单从表(存储工单所需物料明细及物料流转状态)列表
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="parm"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public PagedInfo<WorkOrderItemDto> GetList(WorkOrderItemQueryDto parm)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = QueryExp(parm);
|
|
|
|
|
|
|
|
|
|
|
|
var response = Queryable()
|
|
|
|
|
|
.Where(predicate.ToExpression())
|
|
|
|
|
|
.ToPage<WorkOrderItem, WorkOrderItemDto>(parm);
|
|
|
|
|
|
|
|
|
|
|
|
return response;
|
|
|
|
|
|
}
|
2025-11-26 16:00:28 +08:00
|
|
|
|
|
|
|
|
|
|
public PagedInfo<WorkOrderItemDto> GetWorkOrderItemByCode(WorkOrderItemQueryDto parm)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = QueryExpByWorkOrderCode(parm);
|
|
|
|
|
|
|
|
|
|
|
|
var response = Queryable()
|
|
|
|
|
|
.Where(predicate.ToExpression())
|
|
|
|
|
|
.ToPage<WorkOrderItem, WorkOrderItemDto>(parm);
|
|
|
|
|
|
|
|
|
|
|
|
return response;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-11-18 19:17:51 +08:00
|
|
|
|
public PagedInfo<WorkOrderItemDto> GetListExport(WorkOrderItemQueryDto parm)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = QueryExpExport(parm);
|
|
|
|
|
|
|
|
|
|
|
|
var response = Queryable()
|
|
|
|
|
|
.Where(predicate.ToExpression())
|
|
|
|
|
|
.ToPage<WorkOrderItem, WorkOrderItemDto>(parm);
|
|
|
|
|
|
|
|
|
|
|
|
return response;
|
|
|
|
|
|
}
|
2025-11-12 17:32:28 +08:00
|
|
|
|
|
2025-11-18 19:17:51 +08:00
|
|
|
|
|
2025-11-12 17:32:28 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 获取详情
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="Id"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public WorkOrderItem GetInfo(long Id)
|
|
|
|
|
|
{
|
|
|
|
|
|
var response = Queryable()
|
|
|
|
|
|
.Where(x => x.Id == Id)
|
|
|
|
|
|
.First();
|
|
|
|
|
|
|
|
|
|
|
|
return response;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 添加工单从表(存储工单所需物料明细及物料流转状态)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="model"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public WorkOrderItem AddWorkOrderItem(WorkOrderItem model)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Insertable(model).ExecuteReturnEntity();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 修改工单从表(存储工单所需物料明细及物料流转状态)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="model"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public int UpdateWorkOrderItem(WorkOrderItem model)
|
|
|
|
|
|
{
|
|
|
|
|
|
return Update(model, true);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 查询导出表达式
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="parm"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private static Expressionable<WorkOrderItem> QueryExp(WorkOrderItemQueryDto parm)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = Expressionable.Create<WorkOrderItem>();
|
2025-11-18 18:49:17 +08:00
|
|
|
|
if (!string.IsNullOrWhiteSpace(parm.ProcessName))
|
|
|
|
|
|
{
|
|
|
|
|
|
predicate.And(it => it.ProcessName.Contains(parm.ProcessName));
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(parm.ProcessCode))
|
|
|
|
|
|
{
|
|
|
|
|
|
predicate.And(it => it.ProcessCode.Contains(parm.ProcessCode));
|
|
|
|
|
|
}
|
2025-11-26 14:11:28 +08:00
|
|
|
|
if (!string.IsNullOrWhiteSpace(parm.WorkOrderCode))
|
|
|
|
|
|
{
|
|
|
|
|
|
predicate.And(it => it.ProcessCode.Contains(parm.WorkOrderCode));
|
|
|
|
|
|
}
|
2025-11-12 17:32:28 +08:00
|
|
|
|
return predicate;
|
|
|
|
|
|
}
|
2025-11-13 14:23:05 +08:00
|
|
|
|
|
2025-11-26 16:00:28 +08:00
|
|
|
|
private static Expressionable<WorkOrderItem> QueryExpByWorkOrderCode(WorkOrderItemQueryDto parm)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = Expressionable.Create<WorkOrderItem>();
|
|
|
|
|
|
if (!string.IsNullOrWhiteSpace(parm.WorkOrderCode))
|
|
|
|
|
|
{
|
2025-11-26 16:23:49 +08:00
|
|
|
|
predicate.And(it => it.WorkOrderCode.Contains(parm.WorkOrderCode));
|
2025-11-26 16:00:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
return predicate;
|
|
|
|
|
|
}
|
2025-11-18 19:17:51 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 查询导出表达式
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="parm"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
private static Expressionable<WorkOrderItem> QueryExpExport(WorkOrderItemQueryDto parm)
|
|
|
|
|
|
{
|
|
|
|
|
|
var predicate = Expressionable.Create<WorkOrderItem>();
|
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-26 15:15:17 +08:00
|
|
|
|
public ApiResult CreateWorkOrderItemBySacnCode(PartsBasketCard partsBasketCard)
|
2025-11-25 09:32:28 +08:00
|
|
|
|
{
|
2025-11-26 14:21:26 +08:00
|
|
|
|
try
|
2025-11-25 09:32:28 +08:00
|
|
|
|
{
|
2025-11-26 15:15:17 +08:00
|
|
|
|
//if (string.IsNullOrWhiteSpace(json))
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return ApiResult.Error(400, "扫码数据为空,请重新扫码");
|
|
|
|
|
|
//}
|
|
|
|
|
|
////字符串转对象
|
|
|
|
|
|
//PartsBasketCard partsBasketCard = new PartsBasketCard();
|
|
|
|
|
|
//try
|
|
|
|
|
|
//{
|
|
|
|
|
|
// partsBasketCard = JsonConvert.DeserializeObject<PartsBasketCard>(json);
|
|
|
|
|
|
//}
|
|
|
|
|
|
//catch (Exception ex)
|
|
|
|
|
|
//{
|
|
|
|
|
|
// return ApiResult.Error(400, "扫码数据格式错误,无法解析");
|
|
|
|
|
|
//}
|
2025-11-26 14:21:26 +08:00
|
|
|
|
string plcCode = "";
|
|
|
|
|
|
PlcFirstCode plcFirstCode = plcFirstCodeService.Queryable()
|
|
|
|
|
|
.Where(it => it.Character == partsBasketCard.Character).First();
|
|
|
|
|
|
string strPlcFirstCode = "";
|
|
|
|
|
|
if (plcFirstCode != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
strPlcFirstCode = plcFirstCode.FirstCode;
|
|
|
|
|
|
}
|
|
|
|
|
|
int Sequcence = 1;
|
|
|
|
|
|
WorkOrderItem workOrderItem = Queryable()
|
|
|
|
|
|
.Where(it => it.WorkOrderCode == partsBasketCard.WorkOrderCode).OrderByDescending(it => it.Sequcence).First();
|
|
|
|
|
|
if (workOrderItem != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
Sequcence = workOrderItem.Sequcence;
|
|
|
|
|
|
Sequcence += 1;
|
|
|
|
|
|
}
|
|
|
|
|
|
string formattedSequence = Sequcence.ToString("D2");
|
|
|
|
|
|
string strWorkOrderItemCode = partsBasketCard.WorkOrderCode + formattedSequence;
|
|
|
|
|
|
plcCode = strPlcFirstCode + strWorkOrderItemCode;
|
|
|
|
|
|
WorkOrderItem workOrderItem1 = new WorkOrderItem();
|
|
|
|
|
|
workOrderItem1.WorkOrderCode = partsBasketCard.WorkOrderCode;
|
|
|
|
|
|
workOrderItem1.WorkOrderItemCode = strWorkOrderItemCode;
|
|
|
|
|
|
workOrderItem1.PlcCode = plcCode;
|
2025-11-26 15:15:17 +08:00
|
|
|
|
workOrderItem1.FirstInspection = partsBasketCard.FirstInspection;
|
2025-11-26 14:21:26 +08:00
|
|
|
|
workOrderItem1.LineCode = partsBasketCard.LineCode;
|
|
|
|
|
|
workOrderItem1.LineName = partsBasketCard.LineName;
|
|
|
|
|
|
workOrderItem1.ProcessCode = partsBasketCard.ProcessCode;
|
|
|
|
|
|
workOrderItem1.ProcessName = partsBasketCard.ProcessName;
|
|
|
|
|
|
workOrderItem1.Character = partsBasketCard.Character;
|
|
|
|
|
|
workOrderItem1.IfClean = partsBasketCard.IfClean;
|
|
|
|
|
|
workOrderItem1.CreateBy = partsBasketCard.UserId;
|
|
|
|
|
|
workOrderItem1.CreateName = partsBasketCard.UserName;
|
|
|
|
|
|
workOrderItem1.UpdateBy = partsBasketCard.UserId;
|
|
|
|
|
|
workOrderItem1.UpdateName = partsBasketCard.UserName;
|
|
|
|
|
|
workOrderItem1.CreateTime = DateTime.Now;
|
|
|
|
|
|
workOrderItem1.UpdateTime = DateTime.Now;
|
|
|
|
|
|
workOrderItem1.Sequcence = Sequcence;
|
|
|
|
|
|
int iFlag = Insert(workOrderItem1);
|
|
|
|
|
|
if (iFlag > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return ApiResult.Success(workOrderItem1);
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return ApiResult.Error("工单明细创建失败");
|
|
|
|
|
|
}
|
2025-11-25 09:32:28 +08:00
|
|
|
|
}
|
2025-11-26 14:21:26 +08:00
|
|
|
|
catch (Exception ex)
|
2025-11-25 09:32:28 +08:00
|
|
|
|
{
|
2025-11-26 14:21:26 +08:00
|
|
|
|
return ApiResult.Error("工单明细创建失败" + ex.ToString());
|
2025-11-25 09:32:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-28 15:19:43 +08:00
|
|
|
|
public string GetFirstInspectionResult(String strWorkOrderItemCode)
|
|
|
|
|
|
{
|
|
|
|
|
|
string strResult = "首检不合格";
|
|
|
|
|
|
var workOrderItem = Queryable().Where(it => it.WorkOrderItemCode == strWorkOrderItemCode).First();
|
|
|
|
|
|
if (workOrderItem != null)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (workOrderItem.FirstInspectionResult != null && workOrderItem.FirstInspectionResult == 1)
|
|
|
|
|
|
{
|
|
|
|
|
|
strResult = "首检合格";
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return strResult;
|
|
|
|
|
|
}
|
2025-11-12 17:32:28 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|