Commit 5649cfdc by jiawei.su

someupdate

parent 84393164
...@@ -240,7 +240,7 @@ namespace Siger.ApiACC.Controllers ...@@ -240,7 +240,7 @@ namespace Siger.ApiACC.Controllers
if (lineMode==null) if (lineMode==null)
{ {
Logger.WriteLineInfo($"AutoProcess 产线模式未找到"); Logger.WriteLineInfo($"AutoProcess 产线模式未找到");
throw new BadRequestException(RequestEnum.LevelSectionNotFound); throw new BadRequestException(AccEnum.LineModeNotfound);
} }
if (lineMode.mode==0) if (lineMode.mode==0)
{ {
...@@ -283,7 +283,7 @@ namespace Siger.ApiACC.Controllers ...@@ -283,7 +283,7 @@ namespace Siger.ApiACC.Controllers
if (cleanMachine.status == (int)Automation.MachineStatus.Complated) if (cleanMachine.status == (int)Automation.MachineStatus.Complated)
{ {
Logger.WriteLineInfo($"AutoProcess 有清洗机完成,创建清洗剂Task"); Logger.WriteLineInfo($"AutoProcess 有清洗机完成,创建清洗剂Task");
CreateTask(cleanMachine, TaskActionType.Unload, TaskAction.Step_QXJ_LK); CreateTask(cleanMachine,TaskActionType.Unload, TaskAction.Step_QXJ_LK);
return; //完成当前任务 退出 return; //完成当前任务 退出
} }
} }
...@@ -294,7 +294,7 @@ namespace Siger.ApiACC.Controllers ...@@ -294,7 +294,7 @@ namespace Siger.ApiACC.Controllers
if (freeMachine != null) if (freeMachine != null)
{ {
Logger.WriteLineInfo($"AutoProcess 普通空闲,创建普通设备上料Task"); Logger.WriteLineInfo($"AutoProcess 普通空闲,创建普通设备上料Task");
CreateTask(freeMachine, TaskActionType.Load ,TaskAction.Step_LK_JGZX); CreateTask(freeMachine,TaskActionType.Load ,TaskAction.Step_LK_JGZX);
return; //完成当前任务 退出 return; //完成当前任务 退出
} }
//优先级3:其他设备下料 (加工中心 ->立库) //优先级3:其他设备下料 (加工中心 ->立库)
...@@ -304,14 +304,14 @@ namespace Siger.ApiACC.Controllers ...@@ -304,14 +304,14 @@ namespace Siger.ApiACC.Controllers
if (fullMachine != null && cleanMachine.status==(int)Automation.MachineStatus.Waiting) if (fullMachine != null && cleanMachine.status==(int)Automation.MachineStatus.Waiting)
{ {
Logger.WriteLineInfo($"AutoProcess 普通空闲,创建普通设备下料Task "); Logger.WriteLineInfo($"AutoProcess 普通空闲,创建普通设备下料Task ");
CreateTask(fullMachine, TaskActionType.Unload, TaskAction.Step_JGZX_QXJ); CreateTask(fullMachine,TaskActionType.Unload, TaskAction.Step_JGZX_QXJ);
return; //完成当前任务 退出 return; //完成当前任务 退出
} }
} }
} }
void CreateTask(siger_automation_machine_status machineStatus, TaskActionType actionType, TaskAction taskAction) void CreateTask(siger_automation_machine_status machineStatus,TaskActionType actionType, TaskAction taskAction)
{ {
_automationTaskList.Insert(new siger_automation_task_list _automationTaskList.Insert(new siger_automation_task_list
...@@ -320,7 +320,7 @@ namespace Siger.ApiACC.Controllers ...@@ -320,7 +320,7 @@ namespace Siger.ApiACC.Controllers
sectionid = machineStatus.section, sectionid = machineStatus.section,
trigger = TaskTrigerType.Auto, trigger = TaskTrigerType.Auto,
action = taskAction, action = taskAction,
actiontype = TaskTrigerType.Auto,//默认自动动作 actiontype = ExcueType.None,
tasktype = actionType, tasktype = actionType,
triggertime = DateTime.Now, triggertime = DateTime.Now,
completetime = DateTime.MinValue, completetime = DateTime.MinValue,
...@@ -328,6 +328,7 @@ namespace Siger.ApiACC.Controllers ...@@ -328,6 +328,7 @@ namespace Siger.ApiACC.Controllers
send = 0, send = 0,
operater = 0, operater = 0,
status = 1, status = 1,
remark="自动任务"
}); });
if (_unitOfWork.Commit() > 0) if (_unitOfWork.Commit() > 0)
......
...@@ -9,6 +9,7 @@ using Siger.Middlelayer.AccRepository.Request; ...@@ -9,6 +9,7 @@ using Siger.Middlelayer.AccRepository.Request;
using Siger.Middlelayer.AccRepository.Response; using Siger.Middlelayer.AccRepository.Response;
using Siger.Middlelayer.Common; using Siger.Middlelayer.Common;
using Siger.Middlelayer.Common.Extensions; using Siger.Middlelayer.Common.Extensions;
using Siger.Middlelayer.Common.ModuleEnum;
using Siger.Middlelayer.Log; using Siger.Middlelayer.Log;
using Siger.Middlelayer.Repository; using Siger.Middlelayer.Repository;
using Siger.Middlelayer.Repository.Repositories.Interface; using Siger.Middlelayer.Repository.Repositories.Interface;
...@@ -26,19 +27,16 @@ namespace Siger.ApiACC.Controllers ...@@ -26,19 +27,16 @@ namespace Siger.ApiACC.Controllers
private readonly ISigerDict _sigerDict; private readonly ISigerDict _sigerDict;
private readonly IAutomationMachineStatus _automationMachineStatus; private readonly IAutomationMachineStatus _automationMachineStatus;
private readonly ISigerProjectMachineAttributionRepository _sigerProjectMachineAttribution; private readonly ISigerProjectMachineAttributionRepository _sigerProjectMachineAttribution;
private readonly IAutomationTaskListRepository _automationTaskList;
public AutomationOperateController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection , ISigerDict sigerDict,IAutomationMachineStatus automationMachineStatus,ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution) public AutomationOperateController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection , ISigerDict sigerDict,IAutomationMachineStatus automationMachineStatus,ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution,IAutomationTaskListRepository automationTaskList)
{ {
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_sigerProjectLevelSection = sigerProjectLevelSection; _sigerProjectLevelSection = sigerProjectLevelSection;
_sigerDict = sigerDict; _sigerDict = sigerDict;
_automationMachineStatus = automationMachineStatus; _automationMachineStatus = automationMachineStatus;
_sigerProjectMachineAttribution = sigerProjectMachineAttribution; _sigerProjectMachineAttribution = sigerProjectMachineAttribution;
} _automationTaskList = automationTaskList;
public IActionResult Get()
{
return new ObjectResult(1);
} }
/// <summary> /// <summary>
...@@ -118,23 +116,82 @@ namespace Siger.ApiACC.Controllers ...@@ -118,23 +116,82 @@ namespace Siger.ApiACC.Controllers
return new ObjectResult(data); return new ObjectResult(data);
} }
/// <summary>
/// 查询状态
/// </summary>
/// <param name="section"></param>
/// <returns></returns>
[HttpGet]
public IActionResult GetLoadingState(int section)
{
var data = new ResponseAutomationInfo
{
sn = "sn0001",
wo = "wo123123"
};
return new ObjectResult(data);
}
/// <summary> /// <summary>
/// 准备上料 /// 准备上料 -生成指令
/// </summary> /// </summary>
/// <param name="loading"></param> /// <param name="loading"></param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
public IActionResult Loading([FromBody]requestAutomationLoading loading) public IActionResult Loading([FromBody]requestAutomationLoading loading)
{ {
var data = new ResponseAutomationInfo {
sn="sn0001", var machineAttr = _sigerProjectMachineAttribution.Get(f => f.station == loading.section && f.status == (int)RowState.Valid);
wo="wo123123" if (machineAttr==null)
}; {
return new ObjectResult(data); throw new BadRequestException(CommonEnum.RecordNotFound);
}
var machineStatus = _automationMachineStatus.Get(f => f.machineid==machineAttr.machine);
if (machineStatus==null)
{
throw new BadRequestException(CommonEnum.RecordNotFound);
}
if (machineStatus.enable==0)
{
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 taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
_automationTaskList.Insert(new siger_automation_task_list
{
guid=taskNo,
action= Automation.TaskAction.Step_LK_SXLW,
actiontype= Automation.ExcueType.None,
triggertime=DateTime.MinValue,
tasktype= Automation.TaskActionType.Load,
operater=UserId,
operatetime=DateTime.Now,
sectionid=loading.section,
send=0,
status=1,
completetime=DateTime.MinValue,
trigger= Automation.TaskTrigerType.Manual,
projectId=ProjectId,
remark="手动任务",
});
if (_unitOfWork.Commit() > 0)
return new ObjectResult(CommonEnum.Succefull);
else
throw new BadRequestException(CommonEnum.Fail);
} }
/// <summary> /// <summary>
/// 安装完成 /// 安装完成 -生成指令
/// </summary> /// </summary>
/// <param name="assemble"></param> /// <param name="assemble"></param>
/// <returns></returns> /// <returns></returns>
......
...@@ -316,9 +316,15 @@ namespace Siger.Middlelayer.Common.ModuleEnum ...@@ -316,9 +316,15 @@ namespace Siger.Middlelayer.Common.ModuleEnum
[Description("序号已全部生成")] [Description("序号已全部生成")]
SerinumFull, SerinumFull,
[Description("该任务状态已经完成")] [Description("该任务状态已经完成")]
AutoTaskDone AutoTaskDone,
[Description("产线模式未找到")]
LineModeNotfound,
[Description("设备状态不可用")]
MachineDisable,
[Description("设备正在使用中")]
MachineBusy,
[Description("任务进行中")]
TaskProcessing
} }
public enum SeriNumCfg public enum SeriNumCfg
......
...@@ -22,6 +22,24 @@ namespace Siger.Middlelayer.Share.Enum.ModuleEnum ...@@ -22,6 +22,24 @@ namespace Siger.Middlelayer.Share.Enum.ModuleEnum
Auto=2 Auto=2
} }
/// <summary> /// <summary>
/// 执行任务 任务发方式 0,未执行 1 手动执行 2 自动执行
/// </summary>
public enum ExcueType
{
/// <summary>
/// 未执行
/// </summary>
None=0,
/// <summary>
/// 手动执行
/// </summary>
Manual = 1,
/// <summary>
/// 自动执行
/// </summary>
Auto = 2
}
/// <summary>
/// Task任务状态结果 /// Task任务状态结果
/// </summary> /// </summary>
public enum TaskResultStatus public enum TaskResultStatus
......
...@@ -16,11 +16,11 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -16,11 +16,11 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// </summary> /// </summary>
public int sectionid { get; set; } public int sectionid { get; set; }
/// <summary> /// <summary>
/// 触发方式 /// 触发方式 产生TASK
/// </summary> /// </summary>
public TaskTrigerType trigger { get; set; } public TaskTrigerType trigger { get; set; }
/// <summary> /// <summary>
/// 任务类型 /// 任务类型 load ,unload
/// </summary> /// </summary>
public TaskActionType tasktype { get; set; } public TaskActionType tasktype { get; set; }
/// <summary> /// <summary>
...@@ -53,12 +53,12 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -53,12 +53,12 @@ namespace Siger.Middlelayer.AccRepository.Entities
public int fixturetools { get; set; } public int fixturetools { get; set; }
/// <summary> /// <summary>
/// 动作类型 1 手动 2 自动 /// Task 执行动作类型 1 手动 2 自动
/// </summary> /// </summary>
public TaskTrigerType actiontype { get; set; } public ExcueType actiontype { get; set; }
/// <summary> /// <summary>
/// 动作 /// Task 动作执行
/// </summary> /// </summary>
public TaskAction action { get; set; } public TaskAction action { get; set; }
......
...@@ -4,8 +4,11 @@ using System.Linq.Expressions; ...@@ -4,8 +4,11 @@ using System.Linq.Expressions;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Siger.Middlelayer.AccRepository.Entities; using Siger.Middlelayer.AccRepository.Entities;
using Siger.Middlelayer.AccRepository.Repositories.Interface; using Siger.Middlelayer.AccRepository.Repositories.Interface;
using Siger.Middlelayer.Common.Helpers;
using Siger.Middlelayer.Repository.Data.Acc; using Siger.Middlelayer.Repository.Data.Acc;
using Siger.Middlelayer.Repository.Paged; using Siger.Middlelayer.Repository.Paged;
using Siger.Middlelayer.Share.Enum.ModuleEnum;
using static Siger.Middlelayer.Share.Enum.ModuleEnum.Automation;
namespace Siger.Middlelayer.AccRepository.Repositories namespace Siger.Middlelayer.AccRepository.Repositories
{ {
...@@ -16,5 +19,31 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -16,5 +19,31 @@ namespace Siger.Middlelayer.AccRepository.Repositories
{ {
_context = context; _context = context;
} }
public bool CanTask(int projectId,int section)
{
var taskObj = _context.siger_automation_task_list.FirstOrDefault(f => f.projectId == projectId && f.status >= (int)TaskResultStatus.Cancel && f.status < (int)TaskResultStatus.Complated);
if (taskObj==null)
return true;
else
return false;
}
public string CrateTaskNumber(TaskTrigerType trigerType)
{
var date = DateTime.Now;
var lable = date.ToString(UnixTimeHelper.DateTimeFormatYmd)+date.Hour + date.Minute + date.Second + date.Millisecond;
var radon = new Random().Next(1000, 9999);
if (trigerType== TaskTrigerType.Auto)
{
return $"A{radon}T{lable}";
}else
{
return $"M{radon}T{lable}";
}
}
} }
} }
using Siger.Middlelayer.AccRepository.Entities; using Siger.Middlelayer.AccRepository.Entities;
using Siger.Middlelayer.Repository.Data.Acc; using Siger.Middlelayer.Repository.Data.Acc;
using Siger.Middlelayer.Repository.Paged; using Siger.Middlelayer.Repository.Paged;
using static Siger.Middlelayer.Share.Enum.ModuleEnum.Automation;
namespace Siger.Middlelayer.AccRepository.Repositories.Interface namespace Siger.Middlelayer.AccRepository.Repositories.Interface
{ {
public interface IAutomationTaskListRepository : IAccRepositoryBase<siger_automation_task_list> public interface IAutomationTaskListRepository : IAccRepositoryBase<siger_automation_task_list>
{ {
string CrateTaskNumber(TaskTrigerType trigerType);
/// <summary>
/// 是否能创建任务
/// </summary>
/// <param name="projectId"></param>
/// <param name="section"></param>
/// <returns></returns>
bool CanTask(int projectId,int section);
} }
} }
...@@ -18,6 +18,7 @@ namespace Siger.Middlelayer.AccRepository.Response ...@@ -18,6 +18,7 @@ namespace Siger.Middlelayer.AccRepository.Response
public string sn { get; set; } public string sn { get; set; }
public int status { get; set; } public int status { get; set; }
public int statusDesc { get; set; } public int statusDesc { get; set; }
public int location { get; set; }
/// <summary> /// <summary>
/// 储位位置 /// 储位位置
/// </summary> /// </summary>
......
...@@ -379,4 +379,27 @@ CREATE TABLE `siger_automation_line_mode` ( ...@@ -379,4 +379,27 @@ CREATE TABLE `siger_automation_line_mode` (
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- 生产线模式
-- Table structure for siger_automation_produce_history
-- ----------------------------
DROP TABLE IF EXISTS `siger_automation_produce_history`;;
CREATE TABLE `siger_automation_produce_history` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`statusid` int(11) NOT NULL DEFAULT 0 COMMENT '设备状态ID',
`section` int(11) NOT NULL DEFAULT 0 COMMENT '产线ID',
`projectid` int(11) NOT NULL DEFAULT 0,
`productid` int(1) NOT NULL DEFAULT 1 COMMENT '产品ID',
`productcode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品编号',
`productname` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品名称',
`locationid` int(11) NOT NULL DEFAULT 0 COMMENT '储位ID',
`locationname` 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 '工件编号',
`route` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '工序',
`updatetime` datetime(0) NULL DEFAULT NULL COMMENT '操作时间',
`status` int(1) NOT NULL DEFAULT 1 COMMENT '',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
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