首次提交:添加src文件夹代码
This commit is contained in:
265
Cowain.Bake.BLL/TaskRecordService.cs
Normal file
265
Cowain.Bake.BLL/TaskRecordService.cs
Normal file
@@ -0,0 +1,265 @@
|
||||
using Cowain.Bake.Common.Core;
|
||||
using Cowain.Bake.Common.Enums;
|
||||
using Cowain.Bake.Model;
|
||||
using Cowain.Bake.Model.Entity;
|
||||
using MySql.Data.MySqlClient;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Entity;
|
||||
using System.Linq;
|
||||
using Unity;
|
||||
|
||||
namespace Cowain.Bake.BLL
|
||||
{
|
||||
public class TaskRecordService : ServiceBase
|
||||
{
|
||||
public TaskRecordService(IUnityContainer unityContainer) : base(unityContainer)
|
||||
{
|
||||
}
|
||||
|
||||
public List<TTaskRecord> GetAllTaskRun()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var taskRunList = Context.Set<TTaskRecord>().OrderBy(x => x.Status).ThenByDescending(x => x.BuildTime).Take(1000).ToList();
|
||||
if (taskRunList == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return taskRunList;
|
||||
}
|
||||
}
|
||||
|
||||
public List<TTaskRecord> Query(DateTime startTime, DateTime endTime)
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
return Context.Set<TTaskRecord>().Where(x => x.BuildTime >= startTime && x.BuildTime <= endTime)
|
||||
.OrderByDescending(x=>x.Id).ToList();
|
||||
}
|
||||
}
|
||||
|
||||
public int UpdateFinishStepId(int taskId)
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var task = Context.Set<TTaskRecord>().Where(x => x.Id == taskId).ToList().FirstOrDefault();
|
||||
task.StepId = (int)ETaskStep.Finish;
|
||||
return Context.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
public int DeleteNotFinishTask()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var trq = (from a in Context.Set<TTaskRecord>()
|
||||
where a.Status != (int)ETaskStatus.ExecutionCompleted
|
||||
select a);
|
||||
if (trq == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
foreach (var item in trq)
|
||||
{
|
||||
Context.Set<TTaskRecord>().Remove(item);
|
||||
}
|
||||
return Context.SaveChanges();
|
||||
}
|
||||
}
|
||||
public int DeleteTask(long id)
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var trq = (from a in Context.Set<TTaskRecord>()
|
||||
where a.Id == id
|
||||
select a).FirstOrDefault();
|
||||
if (trq == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Context.Set<TTaskRecord>().Remove(trq);
|
||||
return Context.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
public int DeleteUnexecuteTask()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var trq = (from a in Context.Set<TTaskRecord>()
|
||||
where a.Status != (int)ETaskStatus.ExecutionCompleted
|
||||
select a).ToList();
|
||||
if (trq == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
Context.Set<TTaskRecord>().RemoveRange(trq);
|
||||
return Context.SaveChanges();
|
||||
}
|
||||
}
|
||||
|
||||
//是否有未执行或执行中的任务(PLC有任务要执行)
|
||||
public TTaskRecord UnexecuteTask()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
return Context.Set<TTaskRecord>().Where(x => x.Status != (int)ETaskStatus.ExecutionCompleted).FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
//public TaskEntity GetManualTask()
|
||||
//{
|
||||
// using (var Context = new BakingEntities())
|
||||
// {
|
||||
// var trq = (from a in Context.Set<TTaskRecord>()
|
||||
// where a.Status != (int)ETaskStep.ExecutionCompleted
|
||||
// orderby a.Id descending
|
||||
// select a).FirstOrDefault();
|
||||
|
||||
// return null;
|
||||
// }
|
||||
//}
|
||||
|
||||
public int UpdateTask()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
LogHelper.Instance.Debug("修改任务开始");
|
||||
return Context.Database.ExecuteSqlCommand("call ProcUpdateTask()");
|
||||
}
|
||||
}
|
||||
|
||||
public int BindPalletToRobot()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
return Context.Database.ExecuteSqlCommand("call ProcBindPalletToRobot()");
|
||||
}
|
||||
}
|
||||
|
||||
public (bool, int) IsPullInBaker()
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var record = (from taskRecord in Context.Set<TTaskRecord>()
|
||||
join taskType in Context.Set<TTaskType>() on taskRecord.TaskTypeId equals taskType.Id
|
||||
orderby taskRecord.Id descending
|
||||
//where taskType.Id == 1 //上料满夹具->烤箱
|
||||
select new
|
||||
{
|
||||
TypeId = taskType.Id,
|
||||
PalletId = taskRecord.PalletId,
|
||||
}).FirstOrDefault();
|
||||
|
||||
if (null == record)
|
||||
{
|
||||
return (false, 0);
|
||||
}
|
||||
|
||||
if (1 != record.TypeId) //where taskType.Id == 1 //上料满夹具->烤箱
|
||||
{
|
||||
return (false, 0);
|
||||
}
|
||||
|
||||
return (true, record.PalletId);
|
||||
}
|
||||
}
|
||||
|
||||
public TaskEntity GetTask()
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
TaskEntity result = Context.Database.SqlQuery<TaskEntity>("CALL ProcGetTask(1);").FirstOrDefault(); //显示FirstOrDefault崩溃,
|
||||
|
||||
if (null == result)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
result.Status = (int)ETaskStatus.UnExecute;
|
||||
result.StepId = (int)ETaskStep.Unexecuted;
|
||||
result.BuildTime = DateTime.Now;
|
||||
TTaskRecord taskRecord = new TTaskRecord()
|
||||
{
|
||||
PalletId = result.PalletId,
|
||||
TaskTypeId = result.TaskTypeId,
|
||||
Source = result.Source,
|
||||
Target = result.Target,
|
||||
Status = result.Status,
|
||||
BuildTime = result.BuildTime,
|
||||
StepId = result.StepId,
|
||||
};
|
||||
|
||||
Context.Set<TTaskRecord>().Add(taskRecord);
|
||||
if (0 >= Context.SaveChanges())
|
||||
{
|
||||
LogHelper.Instance.Error("任务插入数据库失败,{num}!");
|
||||
return null;
|
||||
}
|
||||
result.Id = taskRecord.Id;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
LogHelper.Instance.Fatal($"获取任务信息时崩溃,{ex.Message},{ex.StackTrace}");
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool ModifyTaskStatus(ETaskStatus status)
|
||||
{
|
||||
using (var Context = new BakingEntities())
|
||||
{
|
||||
var task = (from a in Context.Set<TTaskRecord>()
|
||||
where a.Status != (int)ETaskStatus.ExecutionCompleted
|
||||
orderby a.Id descending //只修改ID最大的
|
||||
select a).FirstOrDefault();
|
||||
|
||||
if (task == null)
|
||||
{
|
||||
LogHelper.Instance.Error($"没有找到任务,所以修改任务状态失败!状态为:{status}");
|
||||
return false;
|
||||
}
|
||||
|
||||
//修改状态时间
|
||||
if (ETaskStatus.ExecutionCompleted == status)
|
||||
{
|
||||
task.EndTime = DateTime.Now;
|
||||
}
|
||||
else if (ETaskStatus.Executing == status)
|
||||
{
|
||||
task.StartTime = DateTime.Now;
|
||||
}
|
||||
|
||||
task.Status = (int)status;
|
||||
return Context.SaveChanges() > 0 ? true : false;
|
||||
}
|
||||
}
|
||||
|
||||
//public TaskStatusEntity GetTaskShowInfo()
|
||||
//{
|
||||
// // sql = $@"SELECT t1.id, t1.Source,t1.Target,ti.PalletCode
|
||||
// //,CASE t1.Status WHEN 0 THEN '未执行' WHEN 1 THEN '执行中' WHEN 2 THEN '执行完成' ELSE '未执行' END 'Status'
|
||||
// // FROM TTaskRecord t1
|
||||
// //LEFT JOIN TPalletInfo ti ON t1.PalletId=ti.Id
|
||||
// //ORDER BY t1.Id DESC LIMIT 1";
|
||||
// return (from t in Context.Set<TTaskRecord>()
|
||||
// join p in Context.Set<TPalletInfo>() on t.PalletId equals p.Id
|
||||
// orderby t.Id descending
|
||||
// select new TaskStatusEntity
|
||||
// {
|
||||
// Source = t.Source,
|
||||
// Target = t.Target,
|
||||
// Status = ((ETaskStep)t.Status).GetDescription(),
|
||||
// PalletCode = p.PalletCode
|
||||
// }).FirstOrDefault();
|
||||
//}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user