zhuangpei-mesbackend/DOAN.Service/JobKanban/WorkorderProgressService.cs

234 lines
7.7 KiB
C#
Raw Normal View History

2024-09-19 09:34:54 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Infrastructure.Attribute;
using DOAN.Service.JobKanban.IService;
using DOAN.Model.MES.product;
using DOAN.Model.MES.base_;
2024-09-19 10:03:04 +08:00
using DOAN.Model.MES.product.Dto;
using DOAN.Model.MES.mm;
using DOAN.Model.JobKanban;
2024-09-19 09:34:54 +08:00
namespace DOAN.Service.JobKanban
{
[AppService(ServiceType = typeof(IWorkorderProgressService), ServiceLifetime = LifeTime.Transient)]
public class WorkorderProgressService : BaseService<ProWorkorder>, IWorkorderProgressService
{
public List<BaseWorkRoute> GetRoutes()
{
return Context.Queryable<BaseWorkRoute>().Where(it => it.Status == 1).ToList();
}
public List<BaseGroup> GetGroups()
{
return Context.Queryable<BaseGroup>().Where(it => it.Status == 1).ToList();
}
public List<ProWorkorder> GetWorkOrderList(string group_code, string line_code, DateTime handleDate)
{
handleDate = handleDate.ToLocalTime().Date;
return Context.Queryable<ProWorkorder>().Where(it => it.GroupCode == group_code)
.Where(it => it.LineCode == line_code)
.Where(it => it.WorkorderDate == handleDate)
.ToList();
}
2024-09-19 09:53:04 +08:00
2024-09-19 10:03:04 +08:00
/// <summary>
/// 获取工单列表 未完成
/// </summary>
/// <param name="today"></param>
/// <param name="LineCode"></param>
/// <returns></returns>
2024-09-19 10:51:31 +08:00
public List<ProWorkorderDto4> GetWorkOrderListNoFinish(DateTime today, string line_code, string group_code)
2024-09-19 10:03:04 +08:00
{
today = today.ToLocalTime().Date;
var query1 = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
2024-09-19 10:51:31 +08:00
.Where(it => it.LineCode == line_code)
.Where(it => it.GroupCode == group_code)
2024-09-19 10:03:04 +08:00
.Where(it => it.Status == 1 || it.Status == 2)
;
List<ProWorkorderDto4> ProWorkorderDto4List = Context.Queryable(query1)
.LeftJoin<ProReportwork>((q, r) => q.Workorder == r.FkWorkorder)
.Select((q, r) => new ProWorkorderDto4()
{
FinishNum = r.FinishedNum
}, true)
.MergeTable()
2024-09-19 16:03:45 +08:00
.OrderBy(it => it.Sort)
2024-09-19 10:03:04 +08:00
.ToList();
if (ProWorkorderDto4List.Count > 0)
{
foreach (var item in ProWorkorderDto4List)
{
item.progress = SearchMaterialPreparationProgress(item.Workorder);
}
}
return ProWorkorderDto4List;
}
/// <summary>
/// 根据工单号 查询每个工单号进度
/// </summary>
/// <param name="Workorder"></param>
/// <returns></returns>
private MaterialPreparationProgress SearchMaterialPreparationProgress(string Workorder)
{
MaterialPreparationProgress progress = new MaterialPreparationProgress();
//TODO 查询工单总任务数
progress.WorkOrder = Workorder;
progress.Preparation_all_num = Context.Queryable<MmPreparationTask>().Where(it => it.FkWorkorder == Workorder)
.Count();
progress.Preparationed_num = Context.Queryable<MmPreparationTask>().Where(it => it.FkWorkorder == Workorder)
.Where(it => it.PreparationStatus == 2)
.Count();
if (progress.Preparationed_num == progress.Preparation_all_num)
{
progress.PreparationStatus = 2;
}
else if (progress.Preparationed_num < progress.Preparation_all_num)
{
progress.PreparationStatus = 1;
}
if (progress.Preparation_all_num == 0)
{
progress.PreparationStatus = 0;
}
return progress;
}
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();
}
2024-09-19 11:15:11 +08:00
public KanbanInfo GetKanbanNum(DateTime today, string line_code, string group_code)
2024-09-19 10:03:04 +08:00
{
KanbanInfo kanbanInfo = new KanbanInfo();
today = today.ToLocalTime().Date;
kanbanInfo.TotalTaskNum = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
2024-09-19 11:15:11 +08:00
.Where(it => it.LineCode == line_code)
.Where(it => it.GroupCode == group_code)
2024-09-19 10:03:04 +08:00
.Count();
kanbanInfo.RemainTasKNum = Context.Queryable<ProWorkorder>()
.Where(it => it.WorkorderDate == today)
2024-09-19 11:15:11 +08:00
.Where(it => it.LineCode == line_code)
.Where(it => it.GroupCode == group_code)
2024-09-19 10:03:04 +08:00
.Where(it => it.Status == 1 || it.Status == 2)
.Count();
return kanbanInfo;
2024-09-19 09:53:04 +08:00
}
2024-09-19 11:15:11 +08:00
public int StartWorkOrder(string workorder)
{
return Context.Updateable<ProWorkorder>().SetColumns(it => it.Status == 2)
.Where(it => it.Workorder == workorder).ExecuteCommand();
}
2024-09-19 10:03:04 +08:00
2024-09-19 11:15:11 +08:00
public int FinishWorkOrder(string workorder)
{
return Context.Updateable<ProWorkorder>().SetColumns(it => it.Status == 3)
.Where(it => it.Workorder == workorder).ExecuteCommand();
}
2024-09-19 10:03:04 +08:00
2024-09-19 11:15:11 +08:00
public ProWorkorder GetProductingWorkorder(string group_code, string line_code, DateTime handleDate)
{
handleDate = handleDate.ToLocalTime().Date;
2024-09-19 10:03:04 +08:00
2024-09-19 11:15:11 +08:00
return Context.Queryable<ProWorkorder>().Where(it => it.GroupCode == group_code)
.Where(it => it.LineCode == line_code)
.Where(it => it.WorkorderDate == handleDate)
.Where(it => it.Status == 2).First();
}
2024-09-19 10:17:18 +08:00
public int LabelWorkOrderMatch(string LabelContext, string workOrder)
{
return Context.Updateable<ProLabelTraceLog>()
2024-09-19 15:39:51 +08:00
.Where(it => it.Workorder == workOrder)
.Where(it => it.LabelContext == LabelContext)
.SetColumns(it => it.Status == 1)
.ExecuteCommand();
}
2024-09-19 15:39:51 +08:00
2024-09-19 14:41:13 +08:00
2024-09-19 15:39:51 +08:00
public int FinishAndReportWorkorder(string workorder, int finish_num)
{
2024-09-19 14:41:13 +08:00
int result = 0;
2024-09-19 15:39:51 +08:00
// 1 查询工单
ProWorkorder workorder1 = Context.Queryable<ProWorkorder>().Where(it => it.Workorder == workorder).First();
2024-09-19 14:41:13 +08:00
2024-09-19 15:39:51 +08:00
ProReportwork reportWork = new ProReportwork();
reportWork.Id = XueHua;
reportWork.FkWorkorder = workorder;
reportWork.DispatchNum = workorder1.DeliveryNum;
reportWork.FinishedNum = finish_num;
reportWork.GroupCode = workorder1.GroupCode;
reportWork.LineCode = workorder1.LineCode;
reportWork.CreatedTime = DateTime.Now;
reportWork.CreatedBy = "kanban";
2024-09-19 14:41:13 +08:00
UseTran2(() =>
{
2024-09-19 15:39:51 +08:00
Context.Storageable(reportWork)
.WhereColumns(it => it.FkWorkorder)
.ExecuteCommand();
2024-09-19 14:41:13 +08:00
result = Context.Updateable<ProWorkorder>()
2024-09-19 15:39:51 +08:00
.Where(it => it.Workorder == workorder)
.SetColumns(it => it.Status == 3)
.ExecuteCommand();
2024-09-19 14:41:13 +08:00
});
return result;
}
2024-09-19 09:34:54 +08:00
}
}