You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AUCMA_SCADA/Admin.Core.Service/Service_New/ExecutePlanInfoServices.cs

150 lines
5.4 KiB
C#

using Admin.Core.IRepository;
using Admin.Core.IService;
using Admin.Core.Model;
using Admin.Core.Model.Model_New;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System;
using Aucma.Core.PLc;
namespace Admin.Core.Service
{
public class ExecutePlanInfoServices : BaseServices<ExecutePlanInfo>, IExecutePlanInfoServices
{
private readonly IBaseRepository<ExecutePlanInfo> _dal;
private readonly IProductOrderInfoServices _productOrderInfoServices;
public ExecutePlanInfoServices(IBaseRepository<ExecutePlanInfo> dal, IProductOrderInfoServices productOrderInfoServices)
{
this._dal = dal;
base.BaseDal = dal;
_productOrderInfoServices = productOrderInfoServices;
}
#region 计划删除
/// <summary>
/// 计划删除
/// </summary>
/// <param name="planCode"></param>
/// <returns></returns>
public async Task<bool> ExecPlanDelete(string id)
{
return await _dal.DeleteByIdAsync(id);
}
#endregion
#region 执行计划下移
/// <summary>
/// 执行计划下移
/// </summary>
/// <param name="planInfos"></param>
/// <param name="planCode"></param>
/// <returns></returns>
public async Task<bool> PlanMoveDown(string id,string station)
{
List<ExecutePlanInfo> execPlans = new List<ExecutePlanInfo>();
var list = await _dal.QueryAsync(d=>d.ProductLineCode.Equals(station));
List<ExecutePlanInfo> planInfos = (list.OrderBy(d => d.ExecuteOrder)).ToList();
if (planInfos == null) return false;
ExecutePlanInfo planInfo = planInfos.FirstOrDefault(x => x.ObjId == int.Parse(id));
int executeOrder = planInfo.ExecuteOrder;
int planIndex = planInfos.IndexOf(planInfo);
if (planIndex == 0 && planInfos.Count == 0) return false;
if ((planInfos.Count - 1) == planIndex) return false;
var lastPlanInfo = planInfos[planIndex + 1];
planInfo.ExecuteOrder = lastPlanInfo.ExecuteOrder;
lastPlanInfo.ExecuteOrder = executeOrder;
execPlans.Add(planInfo);
execPlans.Add(lastPlanInfo);
var result = await _dal.UpdateAsync(execPlans);
if (result)
return true;
else
return false;
}
#endregion
#region 计划上移
/// <summary>
/// 计划上移
/// </summary>
/// <param name="planInfos"></param>
/// <param name="planCode"></param>
/// <returns></returns>
/// <exception cref="System.NotImplementedException"></exception>
public async Task<bool> PlanMoveUp(string id, string station)
{
List<ExecutePlanInfo> execPlans = new List<ExecutePlanInfo>();
var list = await _dal.QueryAsync(d => d.ProductLineCode.Equals(station));
List<ExecutePlanInfo> planInfos = (list.OrderBy(d => d.ExecuteOrder)).ToList();
if (planInfos == null) return false;
ExecutePlanInfo planInfo = planInfos.FirstOrDefault(x => x.ObjId == int.Parse(id));
int executeOrder = planInfo.ExecuteOrder;
int planIndex = planInfos.IndexOf(planInfo);
if (planIndex == 0) return false;
var lastPlanInfo = planInfos[planIndex - 1];
planInfo.ExecuteOrder = lastPlanInfo.ExecuteOrder;
lastPlanInfo.ExecuteOrder = executeOrder;
execPlans.Add(planInfo);
execPlans.Add(lastPlanInfo);
var result = await _dal.UpdateAsync(execPlans);
if (result)
return true;
else
return false;
}
#endregion
#region 计划下达
/// <summary>
/// 计划下达
/// </summary>
/// <param name="planCode"></param>
/// <param name="nowPlanCode"></param>
/// <returns></returns>
/// <exception cref="System.NotImplementedException"></exception>
public async Task<ExecutePlanInfo> PlanNextPass(ExecutePlanInfo sm)
{
ExecutePlanInfo planInfo = null;
try
{
List<ExecutePlanInfo> planInfos = new List<ExecutePlanInfo>();
if (sm != null)
{
//下传计划到PLC,同时更改计划状态
var rearPanel = PlcHelper.melsecList.FirstOrDefault(d=>d.EquipName.Equals("后板Plc"));
if (rearPanel.plc.IsConnected)
{
rearPanel.plc.WriteString("M100", sm.ProductPlanCode);
rearPanel.plc.WriteInt32("M100", sm.PlanAmount);
}
var box = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("U壳PLC"));
if (box.plc.IsConnected)
{
box.plc.WriteString("M100", sm.ProductPlanCode);
box.plc.WriteInt32("M100", sm.PlanAmount);
}
//将计划写入拆分计划表中
return planInfo;
}
}
catch (Exception ex)
{
}
return planInfo;
}
#endregion
}
}