Commit 0b279d64 by jiawei.su

fixedbug

parent 971259e2
......@@ -41,10 +41,11 @@ namespace Siger.ApiACC.Controllers
private readonly IAutomationFixtureToolsProductRepository _automationFixtureToolsProduct;
private readonly IAutomationFixtureToolsRepository _automationFixtureTools;
private readonly IProductRouteRepository _productRoute;
private readonly IAutomationSectionPropertyRepository _automationSectionProperty;
public AutomationController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection,IAutomationLineMode automationLineMode,IAutomationMachineStatus automationMachineStatus,ISigerDict sigerDict,IAutomationTaskListRepository automationTaskList,
ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution, IAutomationFixtureMonitor automationFixtureMonitor, IAutomationLocationRepository automationLocation, IProductionBeatSetRepository productionBeatSet, IAutomationFixtureToolsProductRepository automationFixtureToolsProduct,
IAutomationFixtureToolsRepository automationFixtureTools, IProductRouteRepository productRoute)
IAutomationFixtureToolsRepository automationFixtureTools, IProductRouteRepository productRoute, IAutomationSectionPropertyRepository automationSectionProperty)
{
_unitOfWork = unitOfWork;
_sigerProjectLevelSection = sigerProjectLevelSection;
......@@ -59,6 +60,7 @@ namespace Siger.ApiACC.Controllers
_automationFixtureToolsProduct = automationFixtureToolsProduct;
_automationFixtureTools = automationFixtureTools;
_productRoute = productRoute;
_automationSectionProperty = automationSectionProperty;
}
/// <summary>
......@@ -275,16 +277,19 @@ namespace Siger.ApiACC.Controllers
_automationTaskList.Update(taskObj);
var monitor = _automationFixtureMonitor.Get(f => f.section == taskObj.sectionid);
var sectionProperty = _automationSectionProperty.Get(f => f.sectionid == taskObj.sectionid);
if(sectionProperty==null)
{
Logger.WriteLineInfo($"PlCfeeback 设备属性为维护");
throw new BadRequestException(AccEnum.SectionPropertyNull);
}
//PLC 反馈结束.
if (status == (int)TaskResultStatus.Complated)
{
var uploadStation = stationDicts.Where(f => f.dkey == DictKeyValConst.UploadloadStation);
var uploadStations = uploadStation.Select(f => f.dval).ToList();
if (taskObj.action == TaskAction.Step_SXLW_LK)
{
// 业务入口: 上料位-》 入库 如果是上料工装 安装完成 ,绑定 储位与装配
if (uploadStations.Exists(f => f.Contains(taskObj.sectionid.ToString())))
if (sectionProperty.propertytype == 1)
{
var location = _automationLocation.Get(f => f.fixturetools == taskObj.fixtureguid);
if (location == null)
......@@ -302,20 +307,11 @@ namespace Siger.ApiACC.Controllers
location.status = (int)LocationStatus.In;
_automationLocation.Update(location);
}
}
if (monitor != null && taskObj.action == TaskAction.Step_SXLW_LK)
{
monitor.section = 0;
}
//上料上下料设备状态为后台控制,CNC是PLC控制
var machineStatus = _automationMachineStatus.Get(f => f.section == taskObj.sectionid && f.auto==0);
if (machineStatus != null)
{
machineStatus.status = (int)Automation.MachineStatus.Waiting;
_automationMachineStatus.Update(machineStatus);
}
}
if (monitor != null)
......@@ -355,41 +351,50 @@ namespace Siger.ApiACC.Controllers
//2.其他设备上料
//3.其他设备下料
*/
var updownDic= stationDicts.Where(s => s.dkey == DictKeyValConst.UploadloadStation);
var uploadStations = updownDic.Select(f => f.dval.ToInt()).ToList();
/* 自动任务创建只有CNC 设备;排除上料设备(手动任务) */
var dictClean = stationDicts.FirstOrDefault(s=>s.dkey==DictKeyValConst.CleanStation);
if (dictClean==null)
{
Logger.WriteLineInfo($"AutoProcess 未配置清洗机字典");
//var updownDic= stationDicts.Where(s => s.dkey == DictKeyValConst.UploadloadStation);
//var uploadStations = updownDic.Select(f => f.dval.ToInt()).ToList();
///* 自动任务创建只有CNC 设备;排除上料设备(手动任务) */
//var dictClean = stationDicts.FirstOrDefault(s=>s.dkey==DictKeyValConst.CleanStation);
//if (dictClean==null)
//{
// Logger.WriteLineInfo($"AutoProcess 未配置清洗机字典");
// return;
//}
var sectionPropertys = _automationSectionProperty.GetList(f => f.projectId == PID).ToList();
if (!sectionPropertys.Any())
{
Logger.WriteLineInfo($"AutoProcess 设备属性未配置");
return;
}
var cncStations = sectionPropertys.Where(s=>s.propertytype==2).Select(s => s.sectionid).ToList();
// 获取可用 设备状态列表 排除上料工位
var machineStatusList = _automationMachineStatus.GetList(f => f.projectId == PID && f.auto==1 && !uploadStations.Contains(f.section) && f.enable == 1);
var machineStatusList = _automationMachineStatus.GetList(f => f.projectId == PID && cncStations.Contains(f.section) && f.enable == 1);
if (!machineStatusList.Any())
{
Logger.WriteLineInfo($"AutoProcess 无可用状态的设备");
return;
}
//优先级1 :清洗机完成 。待下料
var cleanMachine = machineStatusList.FirstOrDefault(f => f.section == dictClean.dval.ToInt());
var cleanMachine = sectionPropertys.FirstOrDefault(f => f.projectId == PID && f.propertytype == 4);
if (cleanMachine!=null)
{
if (cleanMachine.status == (int)Automation.MachineStatus.Complated)
{
Logger.WriteLineError($"AutoProcess 有清洗机{ cleanMachine.section}完成,创建清洗机Task");
Logger.WriteLineError($"AutoProcess 有清洗机{ cleanMachine.sectionid}完成,创建清洗机Task");
if (tasklist == null)
{
Logger.WriteLineError($"AutoProcess Tasklist 为空");
Logger.WriteLineError($"AutoProcess Tasklist 为空,查找设备Monitor{cleanMachine.section }状态");
var machineMonitor = _automationFixtureMonitor.Get(f => f.section == cleanMachine.section);
Logger.WriteLineError($"AutoProcess Tasklist 为空,查找设备Monitor{cleanMachine.sectionid }状态");
var machineMonitor = _automationFixtureMonitor.Get(f => f.section == cleanMachine.sectionid);
if (machineMonitor == null)
{
Logger.WriteLineError($"AutoProcess 清洗机{cleanMachine.section}machineMonitor 为空");
Logger.WriteLineError($"AutoProcess 清洗机{cleanMachine.sectionid}machineMonitor 为空");
return;
}
CreateTask(cleanMachine.section, TaskActionType.Unload, TaskAction.Step_JGZX_QXJ, machineMonitor.fixtureguid, machineMonitor.ordernumber, machineMonitor.sn, "", machineMonitor.productId, machineMonitor.productCode, machineMonitor.locationId, machineMonitor.route);
CreateTask(cleanMachine.sectionid, TaskActionType.Unload, TaskAction.Step_JGZX_QXJ, machineMonitor.fixtureguid, machineMonitor.ordernumber, machineMonitor.sn, "", machineMonitor.productId, machineMonitor.productCode, machineMonitor.locationId, machineMonitor.route);
}
else
{
......@@ -403,7 +408,7 @@ namespace Siger.ApiACC.Controllers
locationObj.status = (int)LocationStatus.In;
_automationLocation.Update(locationObj);
CreateTask(cleanMachine.section, TaskActionType.Unload, TaskAction.Step_QXJ_LK, tasklist.fixtureguid, tasklist.ordercode, tasklist.sn, "无程序", tasklist.productid, tasklist.productcode, tasklist.locationid, tasklist.route);
CreateTask(cleanMachine.sectionid, TaskActionType.Unload, TaskAction.Step_QXJ_LK, tasklist.fixtureguid, tasklist.ordercode, tasklist.sn, "无程序", tasklist.productid, tasklist.productcode, tasklist.locationid, tasklist.route);
return; //完成当前任务 退出
}
}
......@@ -452,14 +457,13 @@ namespace Siger.ApiACC.Controllers
if (fullMachine != null && cleanMachine.status == (int)Automation.MachineStatus.Waiting)
{
Logger.WriteLineError($"AutoProcess 清洗机空闲,创建普通设备下料到清洗机Task ");
//更新清洗机监控
var monitor = _automationFixtureMonitor.Get(cleanMachine.section);
var monitor = _automationFixtureMonitor.Get(cleanMachine.sectionid);
if (monitor == null)
{
_automationFixtureMonitor.Insert(new siger_automation_fixture_tools_monitor
{
section = cleanMachine.section,
section = cleanMachine.sectionid,
fixtureguid = tasklist.fixtureguid,
fixturename = tasklist.fixturename,
productCode = tasklist.productcode,
......
......@@ -82,70 +82,53 @@ namespace Siger.ApiACC.Controllers
Logger.WriteLineInfo($"GetloadStation 未配置设备类型字典");
throw new BadRequestException(CommonEnum.RecordNotFound);
}
var loadStation=new List<string>();
//上下料
if (type==0)
{
var dictLoad = stationDicts.Where(s => s.dkey == DictKeyValConst.UploadloadStation);
if (!dictLoad.Any())
var sectionProperty = _sectionPropertyRepository.GetList(f => f.propertytype == 1);
var sections = sectionProperty.Select(s => s.sectionid).ToList();
var levelSection = _sigerProjectLevelSection.GetList(f => f.parentid == line && sections.Contains(f.id));
if (!levelSection.Any())
{
Logger.WriteLineInfo($"GetloadStation 未配置上下料工站字典");
throw new BadRequestException(CommonEnum.RecordNotFound);
}
loadStation = dictLoad.Select(s => s.dval).ToList();
}else
var result = new List<ResponseLoadStation>();
foreach (var lv in levelSection)
{
var dictLoad = stationDicts.Where(s => s.dkey == DictKeyValConst.CleanStation);
if (!dictLoad.Any())
result.Add(new ResponseLoadStation
{
Logger.WriteLineInfo($"GetloadStation 未配置清洗工站字典");
throw new BadRequestException(CommonEnum.RecordNotFound);
section=lv.id,
status=1,
title=lv.title,
});
}
loadStation = dictLoad.Select(s => s.dval).ToList();
return new ObjectResult(result);
//检验
}
var data = new List<ResponseLoadStation>();
foreach (var station in loadStation)
else
{
var section = _sigerProjectLevelSection.Get(f => f.id == station.ToInt() && f.parentid==line && f.status == (int)RowState.Valid);
if (section == null)
continue;
var machintAttr = _sigerProjectMachineAttribution.Get(f => f.station == section.id);
if(machintAttr==null)
var sectionProperty = _sectionPropertyRepository.GetList(f => f.propertytype == 3);
var sections = sectionProperty.Select(s => s.sectionid).ToList();
var levelSection = _sigerProjectLevelSection.GetList(f => f.parentid == line && sections.Contains(f.id));
if (!levelSection.Any())
{
Logger.WriteLineInfo($"GetloadStation 未配置工站字典");
continue;
throw new BadRequestException(CommonEnum.RecordNotFound);
}
var loadStatus = (int)Automation.MachineStatus.Waiting;
var machineStatus = _automationMachineStatus.Get(f => f.section == section.id);
if (machineStatus==null)
{
_automationMachineStatus.Insert(new siger_automation_machine_status
var result = new List<ResponseLoadStation>();
foreach (var lv in levelSection)
{
projectId=ProjectId,
enable=1,
machineid=machintAttr.machine,
section=section.id,
updatetime=DateTime.Now
});
}else
result.Add(new ResponseLoadStation
{
section = lv.id,
status = 1,
title = lv.title,
loadStatus = machineStatus.status;
}
data.Add(new ResponseLoadStation {
section=section.id,
title=section.title,
status=loadStatus
});
}
_unitOfWork.Commit();
return new ObjectResult(data);
return new ObjectResult(result);
}
}
......
......@@ -15,7 +15,7 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// </summary>
public int sectionid { get; set; }
/// <summary>
/// 1:上下料工位2:加工工位3:检验工位4:装配工位5:存储工位
/// 1:上下料工位2:加工工位3:检验工位4:清洗5:存储工位
/// </summary>
public int propertytype { get; set; }
/// <summary>
......
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