Commit 86980cb3 by jiawei.su

someupdate

parent 445bc2a3
......@@ -20,6 +20,7 @@ using static Siger.Middlelayer.Share.Enum.ModuleEnum.Automation;
using Siger.Middlelayer.Repository.Entities;
using NPOI.SS.Formula.Functions;
using Siger.Middlelayer.AccRepository.Response;
using Siger.Middlelayer.Common.Helpers;
namespace Siger.ApiACC.Controllers
{
......@@ -37,9 +38,11 @@ namespace Siger.ApiACC.Controllers
private readonly IAutomationLocationRepository _automationLocation;
private readonly IProductionBeatSetRepository _productionBeatSet;
private readonly IAutomationFixtureToolsProductRepository _automationFixtureToolsProduct;
private readonly IAutomationFixtureToolsRepository _automationFixtureTools;
public AutomationController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection,IAutomationLineMode automationLineMode,IAutomationMachineStatus automationMachineStatus,ISigerDict sigerDict,IAutomationTaskListRepository automationTaskList,
ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution, IAutomationFixtureMonitor automationFixtureMonitor, IAutomationLocationRepository automationLocation, IProductionBeatSetRepository productionBeatSet, IAutomationFixtureToolsProductRepository automationFixtureToolsProduct )
ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution, IAutomationFixtureMonitor automationFixtureMonitor, IAutomationLocationRepository automationLocation, IProductionBeatSetRepository productionBeatSet, IAutomationFixtureToolsProductRepository automationFixtureToolsProduct,
IAutomationFixtureToolsRepository automationFixtureTools)
{
_unitOfWork = unitOfWork;
_sigerProjectLevelSection = sigerProjectLevelSection;
......@@ -52,6 +55,7 @@ namespace Siger.ApiACC.Controllers
_automationLocation = automationLocation;
_productionBeatSet = productionBeatSet;
_automationFixtureToolsProduct = automationFixtureToolsProduct;
_automationFixtureTools = automationFixtureTools;
}
/// <summary>
......@@ -114,7 +118,7 @@ namespace Siger.ApiACC.Controllers
var section = _sigerProjectLevelSection.Get(f => f.id == machineAttr.station);
if (section != null)
{
Logger.WriteLineInfo($"MachineStatus 设备状态 触发自动任务检查");
Logger.WriteLineInfo($"MachineStatus 设备 {section.title}状态 触发自动任务检查");
AutoProcess(section.parentid, stationDicts);
}
}
......@@ -287,22 +291,12 @@ namespace Siger.ApiACC.Controllers
taskObj.status = status;
_automationTaskList.Update(taskObj);
var machineStatus = _automationMachineStatus.Get(f => f.section == taskObj.sectionid);
if (machineStatus == null)
{
throw new BadRequestException(AccEnum.MachineDisable);
}
machineStatus.status = status;
_automationMachineStatus.Update(machineStatus);
//PLC 反馈结束. 工装监控 解除设备绑定
//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)
{
// 业务入口: 上料位-》 入库 如果是上料工装 安装完成 ,绑定 储位与装配
......@@ -314,47 +308,55 @@ namespace Siger.ApiACC.Controllers
Logger.WriteLineInfo($"PlCfeeback 未找到该工装储位信息");
throw new BadRequestException(AccEnum.MachineDisable);
}
location.fixturetools = taskObj.fixtureguid;
location.fixturename = taskObj.fixturename;
location.ordernumber = taskObj.ordercode;
location.productcode = taskObj.productcode;
location.productid = taskObj.productid;
location.sn = taskObj.sn;
_automationLocation.Update(location);
var monitor = _automationFixtureMonitor.Get(f => f.section == taskObj.sectionid);
monitor.section = 0;
_automationFixtureMonitor.Update(monitor);
}
}
else if (taskObj.action == TaskAction.Step_LK_CJT || taskObj.action == TaskAction.Step_LK_JGZX || taskObj.action == TaskAction.Step_LK_SXLW)
{
//出库
var location = _automationLocation.Get(f => f.fixturetools == taskObj.fixtureguid);
if (location == null)
if (location != null)
{
location.ordernumber = "";
location.productcode = "";
location.productid =0;
location.sn = "";
}
}else
{
//更新 CNC 状态
var monitor = _automationFixtureMonitor.Get(f => f.section==taskObj.sectionid);
if(monitor==null)
var monitor = _automationFixtureMonitor.Get(f => f.section == taskObj.sectionid);
if (monitor == null)
{
_automationFixtureMonitor.Insert(new siger_automation_fixture_tools_monitor
{
ordernumber=taskObj.ordercode,
productCode=taskObj.productcode,
ordernumber = taskObj.ordercode,
productCode = taskObj.productcode,
//productNam
section=taskObj.sectionid,
status=status,
sn=taskObj.sn,
fixtureguid=taskObj.fixtureguid,
section = taskObj.sectionid,
status = status,
sn = taskObj.sn,
fixtureguid = taskObj.fixtureguid,
//fixturename=,
locationId=taskObj.locationid,
createtime=DateTime.Now,
projectId=PID,
route=0,
updatetime=DateTime.Now,
locationId = taskObj.locationid,
createtime = DateTime.Now,
projectId = PID,
route = 0,
updatetime = DateTime.Now,
});
}else
}
else
{
monitor.ordernumber = taskObj.ordercode;
monitor.productCode = taskObj.productcode;
......@@ -373,6 +375,7 @@ namespace Siger.ApiACC.Controllers
/// 创建自动 Task任务
/// </summary>
/// <param name="line"></param>
/// <param name="fixture"></param>
/// <param name="stationDicts"></param>
void AutoProcess(int line,IEnumerable<SigerTrDict> stationDicts)
{
......@@ -418,24 +421,23 @@ namespace Siger.ApiACC.Controllers
return;
}
//优先级1 :清洗机完成 。待下料
var cleanMachine = machineStatusList.FirstOrDefault(f => f.machineid == dictClean.dval.ToInt());
var cleanMachine = machineStatusList.FirstOrDefault(f => f.section == dictClean.dval.ToInt());
if (cleanMachine!=null)
{
if (cleanMachine.status == (int)Automation.MachineStatus.Complated)
{
Logger.WriteLineInfo($"AutoProcess 有清洗机完成,创建清洗机Task");
// var fixtureToolsObj = _automationFixtureTools.GetProductFixtureLocation(PID,);
var monitor = _automationFixtureMonitor.Get(f => f.section == cleanMachine.section);
if (monitor==null)
if (monitor != null)
{
Logger.WriteLineInfo($"AutoProcess 找不到CNC监控信息");
return;
}
CreateTask(cleanMachine,TaskActionType.Unload, TaskAction.Step_QXJ_LK,monitor.fixtureguid,monitor.ordernumber,monitor.sn,"无程序",monitor.productCode,monitor.locationId);
CreateTask(cleanMachine, TaskActionType.Unload, TaskAction.Step_QXJ_LK, monitor.fixtureguid, monitor.ordernumber, monitor.sn, "无程序",monitor.productId, monitor.productCode, monitor.locationId);
return; //完成当前任务 退出
}
}
}
//优先级2 :其他设备待上料 (立库->加工中心)
......@@ -443,17 +445,27 @@ namespace Siger.ApiACC.Controllers
if (freeMachine != null)
{
Logger.WriteLineInfo($"AutoProcess 普通空闲,创建普通设备上料Task");
var location = SelectLocation(freeMachine.machineid);
if (location==null)
if (location != null)
{
Logger.WriteLineInfo($"AutoProcess 找不到储位信息");
return;
}
CreateTask(freeMachine,TaskActionType.Load ,TaskAction.Step_LK_JGZX,location.fixture,location.ordernumber,location.sn,location.pn,location.productCode,location.location);
_automationFixtureMonitor.Insert(new siger_automation_fixture_tools_monitor
{
productId = PID,
productCode = location.productCode,
//productName=location.productCode
fixtureguid = location.fixture,
fixturename = location.fixturename,
ordernumber = location.ordernumber,
locationId = location.location,
section = freeMachine.section,
sn = location.sn,
createtime = DateTime.Now,
updatetime = DateTime.Now
});
CreateTask(freeMachine, TaskActionType.Load, TaskAction.Step_LK_JGZX, location.fixture, location.ordernumber, location.sn, location.pn,location.productId, location.productCode, location.location);
return; //完成当前任务 退出
}
}
//优先级3:其他设备下料 (加工中心 ->立库)
if (cleanMachine != null)
{
......@@ -462,14 +474,13 @@ namespace Siger.ApiACC.Controllers
{
Logger.WriteLineInfo($"AutoProcess 普通空闲,创建普通设备下料Task ");
var monitor = _automationFixtureMonitor.Get(f => f.section == cleanMachine.section);
var monitor = _automationFixtureMonitor.Get(f => f.section == fullMachine.section);
if (monitor == null)
{
Logger.WriteLineInfo($"AutoProcess 找不到CNC监控信息");
return;
}
CreateTask(fullMachine,TaskActionType.Unload, TaskAction.Step_JGZX_QXJ, monitor.fixtureguid, monitor.ordernumber, monitor.sn,"无程序", monitor.productCode, monitor.locationId);
CreateTask(fullMachine,TaskActionType.Unload, TaskAction.Step_JGZX_QXJ, monitor.fixtureguid, monitor.ordernumber, monitor.sn,"无程序",monitor.productId, monitor.productCode, monitor.locationId);
return; //完成当前任务 退出
}
......@@ -489,7 +500,7 @@ namespace Siger.ApiACC.Controllers
/// <param name="sn">工件</param>
/// <param name="productCode">产品CODE</param>
/// <param name="locationid">储位ID</param>
void CreateTask(siger_automation_machine_status machineStatus,TaskActionType actionType, TaskAction taskAction,string guid,string orderno,string sn,string program,string productCode,int locationid)
void CreateTask(siger_automation_machine_status machineStatus,TaskActionType actionType, TaskAction taskAction,string guid,string orderno,string sn,string program,int productId,string productCode,int locationid)
{
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Auto);
_automationTaskList.Insert(new siger_automation_task_list
......@@ -508,12 +519,13 @@ namespace Siger.ApiACC.Controllers
operater = 0,
status = 1,
fixtureguid= guid,
productcode= productCode,
productid = productId,
productcode = productCode,
programnumber=program,
locationid= locationid,
ordercode= orderno,
sn= sn,
remark="自动任务"
remark= EnumHelper.GetEnumDesc(taskAction)
});
......@@ -569,9 +581,13 @@ namespace Siger.ApiACC.Controllers
return new ResponseAutomationLocationRouteInfo
{
fixture = result.fixturetools,
//fixturename=result.n
ordernumber=result.ordernumber,
location=result.locationid,
productId=result.productid,
productCode=result.productcode,
//productName=result.pr
sn=result.sn,
pn= valiateBeat.process_number,
route=valiateBeat.route_name
......
......@@ -357,9 +357,6 @@ namespace Siger.ApiACC.Controllers
}
//移出 上料位
monitor.status = (int)Automation.MachineStatus.Waiting;
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
_automationTaskList.Insert(new siger_automation_task_list
{
......
......@@ -18,9 +18,11 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// 工装GUID
/// </summary>
public string fixturetools { get; set; }
public string fixturename { get; set; }
public int productid { get; set; }
public string productcode { get; set; }
public string productname { get; set; }
/// <summary>
/// 工件对应的工单号
/// </summary>
......
......@@ -20,6 +20,10 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// </summary>
public string fixtureguid { get; set; }
/// <summary>
/// 工装Name
/// </summary>
public string fixturename { get; set; }
/// <summary>
/// 工位ID
/// </summary>
public int sectionid { get; set; }
......@@ -47,6 +51,7 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// 产品code
/// </summary>
public string productcode { get; set; }
public string productname { get; set; }
/// <summary>
/// 工序ID
/// </summary>
......
......@@ -32,10 +32,13 @@ namespace Siger.Middlelayer.AccRepository.Response
public class ResponseAutomationLocationRouteInfo
{
public string fixture { get; set; }
public string fixturename { get; set; }
public string ordernumber { get; set; }
public string sn { get; set; }
public int location { get; set; }
public int productId { get; set; }
public string productCode { get; set; }
public string productName { get; set; }
public string route { get; set; }
public string pn { get; set; }
......
......@@ -270,8 +270,11 @@ CREATE TABLE IF NOT EXISTS `siger_automation_location` (
`guid` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`locationid` int(11) NOT NULL DEFAULT 0 COMMENT '储位位置',
`fixturetools` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工装GUID',
`fixturename` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工装GUID',
`productid` int(11) NULL DEFAULT 0 COMMENT '产品ID',
`productid` int(11) NULL DEFAULT 0 COMMENT '产品ID',
`productcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品CODE',
`productname` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品name',
`ordernumber` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工件对应工单号',
`sn` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工件',
`routeid` int(11) NULL DEFAULT 0,
......@@ -333,6 +336,7 @@ CREATE TABLE IF NOT EXISTS `siger_automation_task_list` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`no` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`fixtureguid` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工装GUID',
`fixturename` varchar(45) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工装name',
`sectionid` int(11) NOT NULL DEFAULT 0 COMMENT '工位ID',
`trigger` int(1) NOT NULL DEFAULT 0 COMMENT '触发方',
`tasktype` int(1) NOT NULL DEFAULT 0 COMMENT '任务类型',
......@@ -340,6 +344,7 @@ CREATE TABLE IF NOT EXISTS `siger_automation_task_list` (
`ordercode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '工单号',
`productid` int(11) NOT NULL DEFAULT 0 COMMENT '产品ID',
`productcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '产品CODE',
`productname` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '产品NAME',
`processid` int(11) NOT NULL DEFAULT 0 COMMENT '工序ID',
`programnumber` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '程序号',
`locationid` int(11) NOT NULL COMMENT '储位位置',
......
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