198 lines
6.7 KiB
C#
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;
|
|
|
|
}
|
|
|
|
}
|
|
} |