2024-08-14 16:32:46 +08:00

217 lines
7.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DOAN.Model.JobKanban;
using DOAN.Model.MES.andon;
using DOAN.Model.MES.base_;
using DOAN.Model.MES.base_.Dto;
using DOAN.Model.MES.group;
using DOAN.Model.MES.product;
using DOAN.Model.MES.product.Dto;
using DOAN.Service.JobKanban.IService;
using DOAN.Service.MES.andon.IService;
using Infrastructure.Attribute;
namespace DOAN.Service.JobKanban
{
[AppService(ServiceType = typeof(ILoginOrSetService), ServiceLifetime = LifeTime.Transient)]
public class LoginOrSetService : BaseService<BaseGroup>, ILoginOrSetService
{
public List<BaseGroup> GetGroupList()
{
return Context.Queryable<BaseGroup>().Where(it => it.Status == 1).ToList();
}
public List<BaseWorkRoute> GetRouteList()
{
return Context.Queryable<BaseWorkRoute>()
.Where(it => it.Status == 1).ToList();
}
/// <summary>
/// 获取工单列表
/// </summary>
/// <param name="today"></param>
/// <param name="LineCode"></param>
/// <returns></returns>
public List<ProWorkorderDto4> GetWorkOrderList(DateTime today, string LineCode)
{
today = today.Date;
var query1 = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
.Where(it => it.RouteId == LineCode);
return Context.Queryable(query1)
.LeftJoin<ProReportwork>((q, r) => q.Workorder == r.FkWorkorder)
.Select((q, r) => new ProWorkorderDto4()
{
FinishNum = r.FinishedNum
}, true)
.MergeTable()
.OrderBy(it=>it.Workorder)
.ToList();
}
/// <summary>
/// 获取工单列表 完成
/// </summary>
/// <param name="today"></param>
/// <param name="LineCode"></param>
/// <returns></returns>
public List<ProWorkorderDto4> GetWorkOrderListNoFinish(DateTime today, string LineCode)
{
today = today.Date;
var query1 = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
.Where(it => it.RouteId == LineCode)
.Where(it=>it.Status==1||it.Status==2)
;
return Context.Queryable(query1)
.LeftJoin<ProReportwork>((q, r) => q.Workorder == r.FkWorkorder)
.Select((q, r) => new ProWorkorderDto4()
{
FinishNum = r.FinishedNum
}, true)
.MergeTable()
.OrderBy(it => it.Workorder)
.ToList();
}
public ProWorkorderDto4 GetWorkOrderDetail(string workorder)
{
var query = Context.Queryable<ProWorkorder>()
.Where(it => it.Workorder == workorder);
return Context.Queryable(query)
.LeftJoin<ProReportwork>((q, r) => q.Workorder == r.FkWorkorder)
.Select((q, r) => new ProWorkorderDto4()
{
FinishNum = r.FinishedNum
}, true).First();
}
/// <summary>
/// 开始工单
/// </summary>
/// <param name="workorder"></param>
/// <returns></returns>
public int StartWorkOrder(string workorder)
{
int result = 0;
UseTran2(() =>
{
Context.Updateable<ProWorkorder>()
.Where(it => it.Workorder == workorder)
.SetColumns(it => it.Status == 2)
.ExecuteCommand();
ProWorkorderStatus workorderStatus = new ProWorkorderStatus();
workorderStatus.Id = XueHua;
workorderStatus.Status = 1;
workorderStatus.FkWorkorderId = workorder;
workorderStatus.ChangeTime = DateTime.Now;
workorderStatus.CreatedTime = DateTime.Now;
Context.Insertable(workorderStatus).ExecuteCommand();
});
return result;
}
/// <summary>
/// 完成工单和报工
/// </summary>
/// <param name="workorder"></param>
/// <param name="num">完成数量</param>
/// <returns></returns>
public int FinishWorkOrder(ProReportwork reportWorkDto)
{
int result = 0;
int DispatchNum = Context.Queryable<ProWorkorder>()
.Where(it => it.Workorder == reportWorkDto.FkWorkorder)
.Select(it => it.DeliveryNum.Value).First();
UseTran2(() =>
{
Context.Updateable<ProWorkorder>()
.Where(it => it.Workorder == reportWorkDto.FkWorkorder)
.SetColumns(it => it.Status == 3)
.ExecuteCommand();
ProWorkorderStatus workorderStatus = new ProWorkorderStatus();
workorderStatus.Id = XueHua;
workorderStatus.Status = 2;
workorderStatus.FkWorkorderId = reportWorkDto.FkWorkorder;
workorderStatus.ChangeTime = DateTime.Now;
workorderStatus.CreatedTime = DateTime.Now;
Context.Insertable(workorderStatus).ExecuteCommand();
});
ProReportwork reportWork = new ProReportwork();
reportWork.Id = XueHua;
reportWork.FkWorkorder = reportWorkDto.FkWorkorder;
reportWork.DispatchNum = DispatchNum;
reportWork.FinishedNum = reportWorkDto.FinishedNum;
reportWork.GroupCode = reportWorkDto.GroupCode;
reportWork.LineCode = reportWorkDto.LineCode;
reportWork.GroupLeader = reportWorkDto.GroupLeader;
reportWork.CreatedTime = DateTime.Now;
reportWork.CreatedBy = reportWorkDto.CreatedBy;
Context.Storageable(reportWork)
.WhereColumns(it => it.FkWorkorder)
.ExecuteCommand();
return result;
}
public KanbanInfo GetKanbanNum(DateTime today, string LineCode)
{
KanbanInfo kanbanInfo = new KanbanInfo();
today = today.Date;
kanbanInfo.TotalTaskNum = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
.Where(it => it.RouteId == LineCode)
.Count();
kanbanInfo.RemainTasKNum = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
.Where(it => it.RouteId == LineCode)
.Where(it => it.Status == 1||it.Status==2)
.Count();
return kanbanInfo;
}
public List<GroupSchedule> ListGroupByDate(DateTime date)
{
return Context.Queryable<GroupSchedule>().Where(it=>it.ScheduleDate == date)
.ToList();
}
}
}