|
|
@@ -1,4 +1,5 @@
|
|
|
using Business.Business.Dto;
|
|
|
+using Bussiness.EntityFrameworkCore.SqlRepositories;
|
|
|
using Bussiness.Model.MES.IC;
|
|
|
using Bussiness.Model.Production;
|
|
|
using Bussiness.Model.SRM;
|
|
|
@@ -21,55 +22,55 @@ namespace Business.Quartz
|
|
|
/// <summary>
|
|
|
/// 物料
|
|
|
/// </summary>
|
|
|
- private IRepository<ItemMaster, long> _itemMaster;
|
|
|
+ private ISqlRepository<ItemMaster> _itemMaster;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单
|
|
|
/// </summary>
|
|
|
- private IRepository<WorkOrdMaster, long> _workOrdMaster;
|
|
|
+ private ISqlRepository<WorkOrdMaster> _workOrdMaster;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单物料明细
|
|
|
/// </summary>
|
|
|
- private IRepository<WorkOrdDetail, long> _workOrdDetail;
|
|
|
+ private ISqlRepository<WorkOrdDetail> _workOrdDetail;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 工单工艺路线明细
|
|
|
/// </summary>
|
|
|
- private IRepository<WorkOrdRouting, long> _workOrdRouting;
|
|
|
+ private ISqlRepository<WorkOrdRouting> _workOrdRouting;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 库存主数据
|
|
|
/// </summary>
|
|
|
- private IRepository<InvMaster, long> _invMaster;
|
|
|
+ private ISqlRepository<InvMaster> _invMaster;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生产线明细
|
|
|
/// </summary>
|
|
|
- private IRepository<ProdLineDetail, long> _prodLineDetail;
|
|
|
+ private ISqlRepository<ProdLineDetail> _prodLineDetail;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 生产周期明细
|
|
|
/// </summary>
|
|
|
- private IRepository<PeriodSequenceDet, long> _periodSequenceDet;
|
|
|
+ private ISqlRepository<PeriodSequenceDet> _periodSequenceDet;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 排产结果明细
|
|
|
/// </summary>
|
|
|
- private IRepository<ScheduleResultOpMaster, long> _scheduleResultOpMaster;
|
|
|
+ private ISqlRepository<ScheduleResultOpMaster> _scheduleResultOpMaster;
|
|
|
|
|
|
/// <summary>
|
|
|
/// 构造函数
|
|
|
/// </summary>
|
|
|
public ProductionScheduleAppService(
|
|
|
- IRepository<ItemMaster, long> itemMaster,
|
|
|
- IRepository<WorkOrdMaster, long> workOrdMaster,
|
|
|
- IRepository<WorkOrdDetail, long> workOrdDetail,
|
|
|
- IRepository<WorkOrdRouting, long> workOrdRouting,
|
|
|
- IRepository<ProdLineDetail, long> prodLineDetail,
|
|
|
- IRepository<PeriodSequenceDet, long> periodSequenceDet,
|
|
|
- IRepository<ScheduleResultOpMaster, long> scheduleResultOpMaster,
|
|
|
- IRepository<InvMaster, long> invMaster
|
|
|
+ ISqlRepository<ItemMaster> itemMaster,
|
|
|
+ ISqlRepository<WorkOrdMaster> workOrdMaster,
|
|
|
+ ISqlRepository<WorkOrdDetail> workOrdDetail,
|
|
|
+ ISqlRepository<WorkOrdRouting> workOrdRouting,
|
|
|
+ ISqlRepository<ProdLineDetail> prodLineDetail,
|
|
|
+ ISqlRepository<PeriodSequenceDet> periodSequenceDet,
|
|
|
+ ISqlRepository<ScheduleResultOpMaster> scheduleResultOpMaster,
|
|
|
+ ISqlRepository<InvMaster> invMaster
|
|
|
)
|
|
|
{
|
|
|
_itemMaster= itemMaster;
|
|
|
@@ -95,32 +96,32 @@ namespace Business.Quartz
|
|
|
/// </summary>
|
|
|
public async Task DoProductShcedule()
|
|
|
{
|
|
|
- //1、获取需要排产的工单:Status为空且IsActive==1
|
|
|
- List<WorkOrdMaster> workOrds = _workOrdMaster.GetListAsync(p => string.IsNullOrEmpty(p.Status) && p.IsActive ==1).Result;
|
|
|
- if (workOrds.Count == 0)
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
- //2、获取数据
|
|
|
- //获取工单工艺路径数据
|
|
|
- List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.GetListAsync(p => workOrds.Select(m=>m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
- //获取物料对应的生产线信息:物料、工序对应的生产线
|
|
|
- List<ProdLineDetail> prodLineDetails = _prodLineDetail.GetListAsync(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
- //获取当前日期往后的排产记录数据
|
|
|
- List<ScheduleResultOpMaster> schedules = _scheduleResultOpMaster.GetListAsync(p=>workOrds.Select(m=>m.ItemNum).Contains(p.ItemNum) && p.Domain == "1001").Result;
|
|
|
-
|
|
|
- //3、工序预处理
|
|
|
- List<WorkOrdRoutingDto> routingDtos = ProcPretreatment(workOrdRoutings);
|
|
|
-
|
|
|
- //3、排产
|
|
|
- //排产结果(记录所有工序的排产情况)
|
|
|
- List<ScheduleResultOpMaster> scheduleResults = new List<ScheduleResultOpMaster>();
|
|
|
- //生产周期(记录最后一个工序的排产情况)
|
|
|
- List<PeriodSequenceDet> periodsDet = new List<PeriodSequenceDet>();
|
|
|
- foreach (var item in workOrds)
|
|
|
- {
|
|
|
-
|
|
|
- }
|
|
|
+ ////1、获取需要排产的工单:Status为空且IsActive==1
|
|
|
+ //List<WorkOrdMaster> workOrds = _workOrdMaster.GetListAsync(p => string.IsNullOrEmpty(p.Status) && p.IsActive ==1).Result;
|
|
|
+ //if (workOrds.Count == 0)
|
|
|
+ //{
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
+ ////2、获取数据
|
|
|
+ ////获取工单工艺路径数据
|
|
|
+ //List<WorkOrdRouting> workOrdRoutings = _workOrdRouting.GetListAsync(p => workOrds.Select(m=>m.WorkOrd).Contains(p.WorkOrd) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
+ ////获取物料对应的生产线信息:物料、工序对应的生产线
|
|
|
+ //List<ProdLineDetail> prodLineDetails = _prodLineDetail.GetListAsync(p => workOrds.Select(m => m.ItemNum).Contains(p.Part) && p.Domain == "1001" && p.Status != "C" && p.IsActive == 1).Result;
|
|
|
+ ////获取当前日期往后的排产记录数据
|
|
|
+ //List<ScheduleResultOpMaster> schedules = _scheduleResultOpMaster.GetListAsync(p=>workOrds.Select(m=>m.ItemNum).Contains(p.ItemNum) && p.Domain == "1001").Result;
|
|
|
+
|
|
|
+ ////3、工序预处理
|
|
|
+ //List<WorkOrdRoutingDto> routingDtos = ProcPretreatment(workOrdRoutings);
|
|
|
+
|
|
|
+ ////3、排产
|
|
|
+ ////排产结果(记录所有工序的排产情况)
|
|
|
+ //List<ScheduleResultOpMaster> scheduleResults = new List<ScheduleResultOpMaster>();
|
|
|
+ ////生产周期(记录最后一个工序的排产情况)
|
|
|
+ //List<PeriodSequenceDet> periodsDet = new List<PeriodSequenceDet>();
|
|
|
+ //foreach (var item in workOrds)
|
|
|
+ //{
|
|
|
+
|
|
|
+ //}
|
|
|
|
|
|
}
|
|
|
|