Commit 677e6875 by jiawei.su

fixedbug

parent 2dc55539
......@@ -108,7 +108,7 @@ namespace Siger.ApiACC.Controllers
Logger.WriteLineInfo($"AutoProcess 未配置设备类型字典");
throw new BadRequestException(AccEnum.AutomationDictNotfound);
}
Logger.WriteLineInfo($"设备状态更变{request.status}触发");
//Logger.WriteLineInfo($"设备状态更变{request.status}触发");
if (_automationTaskList.CanTask(PID, machineAttr.station))
{
var uploadStation = stationDicts.Where(f => f.dkey == DictKeyValConst.UploadloadStation);
......@@ -275,7 +275,7 @@ namespace Siger.ApiACC.Controllers
Logger.WriteLineInfo($"AutoProcess 上料料工站 无需自动创建任务 ");
break;
}
AutoProcess(section.parentid, stationDicts);
AutoProcess(section.parentid, stationDicts,taskObj);
}
break;
}
......@@ -329,6 +329,16 @@ namespace Siger.ApiACC.Controllers
{
monitor.section = 0;
}
var machineStatus = _automationMachineStatus.Get(f => f.section == taskObj.sectionid);
if (machineStatus == null)
{
throw new BadRequestException(AccEnum.MachineDisable);
}
if (machineStatus!=null)
{
machineStatus.status = (int)Automation.MachineStatus.Waiting;
_automationMachineStatus.Update(machineStatus);
}
}
if (monitor != null)
......@@ -340,6 +350,8 @@ namespace Siger.ApiACC.Controllers
_automationFixtureMonitor.Update(monitor);
}
}
/// <summary>
......@@ -348,7 +360,8 @@ namespace Siger.ApiACC.Controllers
/// <param name="line"></param>
/// <param name="fixture"></param>
/// <param name="stationDicts"></param>
void AutoProcess(int line,IEnumerable<SigerTrDict> stationDicts)
/// <param name="tasklist"></param>
void AutoProcess(int line,IEnumerable<SigerTrDict> stationDicts,siger_automation_task_list tasklist=null)
{
var lineMode = _automationLineMode.Get(f => f.projectId == PID && f.section == line);
if (lineMode==null)
......@@ -358,11 +371,10 @@ namespace Siger.ApiACC.Controllers
}
if (lineMode.mode==0)
{
Logger.WriteLineInfo($"AutoProcess 手动模式");
Logger.WriteLineInfo($"AutoProcess 手动模式 不能创建自动任务");
//手动模式时 退出
return;
}
/*
//自动Task任务 顺序
//1.清洗机下料
......@@ -379,7 +391,7 @@ namespace Siger.ApiACC.Controllers
return;
}
// 获取可用 设备状态列表 排除上料工位
var machineStatusList = _automationMachineStatus.GetList(f => f.projectId == PID && !uploadStations.Contains(f.section) && f.enable == 1);
var machineStatusList = _automationMachineStatus.GetList(f => f.projectId == PID && f.auto==1 && !uploadStations.Contains(f.section) && f.enable == 1);
if (!machineStatusList.Any())
{
Logger.WriteLineInfo($"AutoProcess 无可用状态的设备");
......@@ -391,17 +403,16 @@ namespace Siger.ApiACC.Controllers
{
if (cleanMachine.status == (int)Automation.MachineStatus.Complated)
{
Logger.WriteLineError($"AutoProcess 有清洗机完成,创建清洗机Task");
var monitor = _automationFixtureMonitor.Get(f => f.section == cleanMachine.section);
if (monitor != null)
Logger.WriteLineError($"AutoProcess 有清洗机{ cleanMachine.section}完成,创建清洗机Task");
if (tasklist == null)
{
CreateTask(cleanMachine.section, TaskActionType.Unload, TaskAction.Step_QXJ_LK, monitor.fixtureguid, monitor.ordernumber, monitor.sn, "无程序",monitor.productId, monitor.productCode, monitor.locationId,monitor.route);
return; //完成当前任务 退出
Logger.WriteLineError($"AutoProcess Tasklist 为空");
return;
}
CreateTask(cleanMachine.section, TaskActionType.Unload, TaskAction.Step_QXJ_LK, tasklist.fixtureguid, tasklist.ordercode, tasklist.sn, "无程序", tasklist.productid, tasklist.productcode, tasklist.locationid, tasklist.route);
return; //完成当前任务 退出
}
}
//优先级2 :其他设备待上料 (立库->加工中心)
var freeMachine = machineStatusList.Where(f=>f.status==(int)Automation.MachineStatus.Waiting);
if (freeMachine != null)
......@@ -478,15 +489,13 @@ namespace Siger.ApiACC.Controllers
var fullMachine = machineStatusList.FirstOrDefault(f => f.status == (int)Automation.MachineStatus.Complated);
if (fullMachine != null && cleanMachine.status==(int)Automation.MachineStatus.Waiting)
{
Logger.WriteLineError($"AutoProcess 普通空闲,创建普通设备下料Task ");
var monitor = _automationFixtureMonitor.Get(f => f.section == fullMachine.section);
if (monitor == null)
Logger.WriteLineError($"AutoProcess 清洗机空闲,创建普通设备下料到清洗机Task ");
if (tasklist==null)
{
Logger.WriteLineError($"AutoProcess 找不到CNC监控信息");
Logger.WriteLineError($"AutoProcess Tasklist 为空");
return;
}
CreateTask(fullMachine.section,TaskActionType.Unload, TaskAction.Step_JGZX_QXJ, monitor.fixtureguid, monitor.ordernumber, monitor.sn,"无程序",monitor.productId, monitor.productCode, monitor.locationId,monitor.route);
CreateTask(fullMachine.section,TaskActionType.Unload, TaskAction.Step_JGZX_QXJ, tasklist.fixtureguid,tasklist.ordercode, tasklist.sn,tasklist.programnumber,tasklist.productid,tasklist.productcode,tasklist.locationid,tasklist.route);
return; //完成当前任务 退出
}
......@@ -534,6 +543,36 @@ namespace Siger.ApiACC.Controllers
route=route
});
var monitor = _automationFixtureMonitor.Get(f => f.section == section);
if (monitor == null)
{
_automationFixtureMonitor.Insert(new siger_automation_fixture_tools_monitor
{
projectId=PID,
section=section,
fixtureguid=guid,
productId=productId,
productCode=productCode,
locationId=locationid,
createtime=DateTime.Now,
ordernumber=orderno,
route=route,
status=1,
sn=sn,
taskno=taskNo,
});
}
else
{
monitor.sn = sn;
monitor.route = route;
monitor.locationId = locationid;
monitor.productCode = productCode;
monitor.productId = productId;
monitor.fixtureguid = guid;
monitor.taskno = taskNo;
_automationFixtureMonitor.Update(monitor);
}
if (_unitOfWork.Commit() > 0)
......
......@@ -320,7 +320,6 @@ namespace Siger.ApiACC.Controllers
var machineStatus = _automationMachineStatus.Get(f => f.machineid == machineAttr.machine);
if (machineStatus == null)
{
// throw new BadRequestException(CommonEnum.RecordNotFound);
//上料设备状态与PLC 无关,
//需要手动插入
_automationMachineStatus.Insert(new siger_automation_machine_status
......@@ -328,26 +327,16 @@ namespace Siger.ApiACC.Controllers
enable = 1,
section = loading.section,
machineid = machineAttr.machine,
auto=0,
projectId = ProjectId,
status = (int)Automation.MachineStatus.Waiting,
updatetime = DateTime.Now
});
}
else
{
if (machineStatus.enable == 0)
if (machineStatus.auto==1)
{
throw new BadRequestException(AccEnum.MachineDisable);
}
if (machineStatus.status != (int)Automation.MachineStatus.Waiting)
{
throw new BadRequestException(AccEnum.MachineBusy);
}
}
//if (!_automationTaskList.CanTask(ProjectId,loading.section))
//{
// throw new BadRequestException(AccEnum.TaskProcessing);
//}
var plandts = _planDetails.Get(f => f.projectId == ProjectId && f.OrderNumber == loading.code);
if (plandts==null)
......@@ -366,6 +355,11 @@ namespace Siger.ApiACC.Controllers
{
throw new BadRequestException(AccEnum.FixtureToolsIsNone);
}
var exitsUpload = _automationTaskList.Get(f => f.send == 0 && f.locationid == loading.locationid);
if (exitsUpload!=null)
{
throw new BadRequestException(AccEnum.FixtureOrderNulll);
}
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
var sn = _automationTaskList.CreateRandonSn(plan.product_code);
......@@ -426,7 +420,8 @@ namespace Siger.ApiACC.Controllers
ordernumber = plandts.OrderNumber,
locationId = fixtureToolsObj.Location,
unixtime = unixtime,
route= route.id
route= route.id,
taskno=taskNo
});
}
else
......@@ -442,13 +437,14 @@ namespace Siger.ApiACC.Controllers
monitor.locationId = fixtureToolsObj.Location;
monitor.unixtime = unixtime;
monitor.route = route.id;
monitor.taskno = taskNo;
_automationFixtureMonitor.Update(monitor);
}
if (_unitOfWork.Commit() > 0)
{
Logger.WriteLineError($"手动任务创建成功-{Siger.Middlelayer.Common.Helpers.EnumHelper.GetEnumDesc(Automation.TaskAction.Step_LK_SXLW)}");
Logger.WriteLineError($"准备上料任务:{taskNo}创建成功-{EnumHelper.GetEnumDesc(Automation.TaskAction.Step_LK_SXLW)}");
return new ObjectResult(CommonEnum.Succefull);
}
else
......@@ -483,12 +479,8 @@ namespace Siger.ApiACC.Controllers
throw new BadRequestException(AccEnum.MachineProCompalate);
}
machineStatus.status = (int)Automation.MachineStatus.Complated;
machineStatus.status = (int)Automation.MachineStatus.Waiting;
//if (!_automationTaskList.CanTask(ProjectId, assemble.section))
//{
// throw new BadRequestException(AccEnum.TaskProcessing);
//}
//创建 安装完成动作
var monitor = _automationFixtureMonitor.Get(f => f.projectId == ProjectId && f.section == assemble.section);
if (monitor==null)
......@@ -524,10 +516,12 @@ namespace Siger.ApiACC.Controllers
remark = "手动任务-安装完成",
});
monitor.taskno = taskNo;
_automationFixtureMonitor.Update(monitor);
if (_unitOfWork.Commit() > 0)
{
Logger.WriteLineError($"手动任务创建成功-{Siger.Middlelayer.Common.Helpers.EnumHelper.GetEnumDesc(Automation.TaskAction.Step_SXLW_LK)}");
Logger.WriteLineError($"安装完成任务{taskNo}创建成功-{EnumHelper.GetEnumDesc(Automation.TaskAction.Step_SXLW_LK)}");
return new ObjectResult(CommonEnum.Succefull);
}
else
......@@ -572,10 +566,11 @@ namespace Siger.ApiACC.Controllers
//2. 无检验状态 (立库-》上下料工位)
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
var action = lineMode.inspect == 1 ? Automation.TaskAction.Step_LK_CJT : Automation.TaskAction.Step_LK_SXLW;
_automationTaskList.Insert(new siger_automation_task_list
{
no = taskNo,
action = lineMode.inspect==1?Automation.TaskAction.Step_LK_CJT: Automation.TaskAction.Step_LK_SXLW,
action = action,
actiontype = Automation.ExcueType.None,
triggertime = DateTime.Now,
tasktype = Automation.TaskActionType.Load,
......@@ -595,7 +590,7 @@ namespace Siger.ApiACC.Controllers
productcode = location.productcode,
processid = 0,
programnumber = "",
remark = "手动任务-准备料",
remark = "手动任务-准备料",
extend1= unixtime.ToStr()
});
......@@ -617,13 +612,13 @@ namespace Siger.ApiACC.Controllers
productName = location.productname,
ordernumber = location.ordernumber,
locationId = location.locationid,
unixtime= unixtime
unixtime= unixtime,
taskno= taskNo
});
}
else
{
monitor.sn = location.sn;
monitor.updatetime = DateTime.Now;
monitor.status = (int)Automation.MachineStatus.Produce;
monitor.productId = location.productid;
......@@ -632,11 +627,13 @@ namespace Siger.ApiACC.Controllers
monitor.ordernumber = location.ordernumber;
monitor.locationId = location.locationid;
monitor.unixtime = unixtime;
monitor.taskno = taskNo;
_automationFixtureMonitor.Update(monitor);
}
if (_unitOfWork.Commit() > 0)
{
Logger.WriteLineError($"准备下料任务{taskNo}创建成功-{EnumHelper.GetEnumDesc(action)}");
return new ObjectResult(CommonEnum.Succefull);
}
else
......@@ -674,16 +671,12 @@ namespace Siger.ApiACC.Controllers
{
throw new BadRequestException(AccEnum.MonitorNotfound);
}
//移出 上料位
monitor.section = 0;
var location = _automationLocation.Get(f => f.id == monitor.locationId);
if (location!=null)
{
location.sn = "";
_automationLocation.Update(location);
}
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
_automationTaskList.Insert(new siger_automation_task_list
{
......@@ -711,8 +704,14 @@ namespace Siger.ApiACC.Controllers
remark = "手动任务-拆卸完成",
});
//移出 上料位
monitor.section = 0;
monitor.taskno = taskNo;
_automationFixtureMonitor.Update(monitor);
if (_unitOfWork.Commit() > 0)
{
Logger.WriteLineError($"拆卸完成任务{taskNo}创建成功-{EnumHelper.GetEnumDesc(Automation.TaskAction.Step_SXLW_LK)}");
return new ObjectResult(CommonEnum.Succefull);
}
else
......
......@@ -324,11 +324,7 @@ namespace Siger.ApiACC.Controllers
{
return;
}
var monitor = _fixtureMonitor.GetList(q => q.section == section && q.sn == sn).OrderByDescending(q => q.updatetime).FirstOrDefault();
if (monitor == null)
{
return;
}
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
......
......@@ -167,5 +167,7 @@ namespace Siger.Middlelayer.AccRepository
public DbSet<siger_automation_produce_history> siger_automation_produce_history { get; set; }
public DbSet<siger_automation_fixture_tools_monitor> siger_automation_fixture_tools_moniter { get; set; }
public DbSet<siger_check_sn_trace_inspection> siger_check_sn_trace_inspection { get; set; }
}
}
......@@ -50,5 +50,9 @@ namespace Siger.Middlelayer.AccRepository.Entities
public string productName { get; set; }
public int locationId { get; set; }
public int unixtime { get; set; }
/// <summary>
/// 当然任务
/// </summary>
public string taskno { get; set; }
}
}
......@@ -30,5 +30,10 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// </summary>
public string program { get; set; }
/// <summary>
/// 1: 自动设备 0:上下料设备
/// </summary>
public int auto { get; set; }
}
}
......@@ -90,7 +90,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories
}
public IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tiggertime, string comptime, int projectid, int page, int pagesize)
public IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tirbeigin, string triend, string compbegin, string compend, int projectid, int page, int pagesize)
{
var query = from q in _context.siger_automation_task_list
join t in _context.siger_automation_fixture_tools on q.fixtureguid equals t.guid
......@@ -120,7 +120,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories
productCode=q.productcode,
program=q.programnumber,
route=r!=null?$"{r.serialNumber}-{r.name}":"",
send=q.send,
tasktype=EnumHelper.GetEnumDesc(q.tasktype),
status=q.status,
......@@ -156,15 +156,15 @@ namespace Siger.Middlelayer.AccRepository.Repositories
actionTypeExpression = q => q.actionTypeid==actionType;
}
Expression<Func<ResponseAutomationTasklist, bool>> triggerTimeTypeExpression = f => true;
if (!string.IsNullOrEmpty(tiggertime))
if (!string.IsNullOrEmpty(triend) && !string.IsNullOrEmpty(tirbeigin))
{
triggerTimeTypeExpression = q => q.triggervalue == tiggertime.ToDateTime();
triggerTimeTypeExpression = q => q.triggervalue >= tirbeigin.ToDateTime() && q.triggervalue<=triend.ToDateTime();
}
Expression<Func<ResponseAutomationTasklist, bool>> comptimeExpression = f => true;
if (!string.IsNullOrEmpty(comptime))
if (!string.IsNullOrEmpty(compbegin) && !string.IsNullOrEmpty(compend))
{
comptimeExpression = q => q.complatevalue == comptime.ToDateTime();
comptimeExpression = q => q.complatevalue >= compbegin.ToDateTime() && q.complatevalue <= compend.ToDateTime();
}
var expression = sectonsExpression.And(taskTypeExpression).And(productCodeExpression).And(tasknoExpression).And(snExpression)
......
......@@ -26,6 +26,6 @@ namespace Siger.Middlelayer.AccRepository.Repositories.Interface
string CreateRandonSn(string productCode);
IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tiggertime, string comptime, int projectid, int page, int pagesize);
IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tirbeigin,string triend,string compbegin, string compend, int projectid, int page, int pagesize);
}
}
......@@ -9,7 +9,7 @@ namespace Siger.Middlelayer.AccRepository.Request
{
[Required(ErrorMessage = "guidNotNull")]
/// <summary>
/// 任务列表GUID
/// 任务列表taskNo
/// </summary>
public string guid { get; set; }
[Required(ErrorMessage = "status")]
......
......@@ -46,5 +46,6 @@ namespace Siger.Middlelayer.AccRepository.Response
public string triggerTime { get; set; }
public DateTime? complatevalue { get; set; }
public string complatetime { get; set; }
public int send { get; set; }
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment