zhengzhou-byd-lms/DOAN.Service/Bydlms/BydWorkorderService.cs
qianhao.xu 9604427491 1
2025-03-08 13:38:36 +08:00

198 lines
6.7 KiB
C#

using Infrastructure.Attribute;
using Infrastructure.Extensions;
using DOAN.Model.Bydlms.Dto;
using DOAN.Model.Bydlms;
using DOAN.Repository;
using DOAN.Service.Bydlms.IBydlmsService;
using MailKit.Search;
using Microsoft.AspNetCore.Http;
using System;
namespace DOAN.Service.Bydlms
{
/// <summary>
/// 生产工单Service业务层处理
/// </summary>
[AppService(ServiceType = typeof(IBydWorkorderService), ServiceLifetime = LifeTime.Transient)]
public class BydWorkorderService : BaseService<BydWorkorder>, IBydWorkorderService
{
/// <summary>
/// 接受比亚迪工单
/// </summary>
/// <param name="workorders"></param>
/// <returns></returns>
public bool AddBydWorkorderList(List<BydWorkorder> workorders,string LineCode)
{
int sort=Context.Queryable<BydWorkorder>().Where(it => it.OrderStartTime == workorders[0].OrderStartTime).Where(it => it.LineCode == LineCode).Max(it => it.Sort);
sort = sort > 0 ? sort : 0;
foreach (var workorder in workorders)
{
workorder.Id = SnowFlakeSingle.Instance.NextId().ToString();
workorder.CreatedBy = "BYD_MES";
workorder.CreatedTime = DateTime.Now;
workorder.OrderStartTime01 = DateTime.Parse(workorder.OrderStartTime);
sort++;
workorder.Sort= sort;
}
return Context.Insertable(workorders).ExecuteCommand() > 0;
}
/// <summary>
/// 查询生产工单列表
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<BydWorkorderDto> GetList(BydWorkorderQueryDto parm)
{
var predicate = QueryExp(parm)
;
var response = Queryable()
.Where(predicate.ToExpression())
.OrderBy(it=>it.Sort)
.ToPage<BydWorkorder, BydWorkorderDto>(parm);
return response;
}
/// <summary>
/// 获取详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public BydWorkorder GetInfo(string Id)
{
var response = Queryable()
.Where(x => x.Id == Id)
.First();
return response;
}
/// <summary>
/// 添加生产工单
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public BydWorkorder AddBydWorkorder(BydWorkorder model)
{
model.Id = SnowFlakeSingle.Instance.NextId().ToString();
return Insertable(model).ExecuteReturnEntity();
}
/// <summary>
/// 修改生产工单
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
public int UpdateBydWorkorder(BydWorkorder model)
{
return Update(model, true);
}
/// <summary>
/// 查询导出表达式
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
private static Expressionable<BydWorkorder> QueryExp(BydWorkorderQueryDto parm)
{
var predicate = Expressionable.Create<BydWorkorder>()
.AndIF(!string.IsNullOrEmpty(parm.LineCode), it => it.LineCode.Contains(parm.LineCode))
.AndIF(parm.OrderStartTimeQueryStart > DateTime.MinValue, it => it.OrderStartTime01 > parm.OrderStartTimeQueryStart)
.AndIF(parm.OrderStartTimeQueryStart > DateTime.MinValue, it => it.OrderStartTime01 < parm.OrderStartTimeQueryStart)
;
return predicate;
}
public int BatchAddBydWorkorder(List<BydWorkorder> parm)
{
for (int i = 0; i < parm.Count; i++)
{
parm[i].Id = SnowFlakeSingle.Instance.NextId().ToString();
}
return Context.Insertable(parm).ExecuteCommand();
}
/// <summary>
/// 上移
/// </summary>
/// <param name="OrderCode"></param>
/// <returns></returns>
public bool MOVEUP(string OrderCode)
{
int result = 0;
int cache = 0;
BydWorkorder fisrt= Context.Queryable<BydWorkorder>().Where(it => it.OrderCode == OrderCode).First();
BydWorkorder upIndex = Context.Queryable<BydWorkorder>()
.Where(it => it.LineCode == fisrt.LineCode).Where(it => it.OrderStartTime == fisrt.OrderStartTime)
.Where(it => it.Sort< fisrt.Sort).OrderByDescending(it => it.Sort).First();
if (upIndex == null)
{
return true;
}
cache = fisrt.Sort;
fisrt.Sort = upIndex.Sort;
upIndex.Sort = cache;
UseTran2(() =>
{
result= Context.Updateable(fisrt).ExecuteCommand();
result= result+ Context.Updateable(upIndex).ExecuteCommand();
});
return result == 2;
}
/// <summary>
/// 下移
/// </summary>
/// <param name="OrderCode"></param>
/// <returns></returns>
public bool MOVEDOWN(string OrderCode)
{
int result = 0;
int cache = 0;
BydWorkorder fisrt = Context.Queryable<BydWorkorder>().Where(it => it.OrderCode == OrderCode).First();
BydWorkorder downIndex = Context.Queryable<BydWorkorder>()
.Where(it=>it.LineCode==fisrt.LineCode).Where(it=>it.OrderStartTime==fisrt.OrderStartTime)
.Where(it => it.Sort > fisrt.Sort).OrderBy(it => it.Sort).First();
if (downIndex == null)
{
return true;
}
cache = fisrt.Sort;
fisrt.Sort = downIndex.Sort;
downIndex.Sort = cache;
UseTran2(() =>
{
result = Context.Updateable(fisrt).ExecuteCommand();
result = result + Context.Updateable(downIndex).ExecuteCommand();
});
return result == 2;
}
//TODO 产线获取当前生产工单
public List<BydWorkorder> GetWorkOrderProducting(string line_code)
{
DateTime now = DateTime.Now.Date;
var result= Context.Queryable<BydWorkorder>().Where(it => it.OrderStartTime01 == now)
.Where(it => it.LineCode == line_code)
.Where(it => it.ScheduleCode == "1" || it.ScheduleCode == "2" || it.ScheduleCode == "3")
.OrderBy(it=>it.Sort)
.Take(2).ToList();
return result;
}
}
}