1.主任务与分任务执行优化

2.AGV与提升机逻辑优化
dev
zhangxy 2 days ago
parent 909ece55d4
commit 26cbd6a78b

@ -40,7 +40,7 @@ namespace Sln.Wcs.Model.Domain
/// 所属机台
/// </summary>
[SugarColumn(ColumnName = "machine_id", ColumnDescription = "所属机台")]
public int? MachineId { get; set; }
public string? MachineId { get; set; }
/// <summary>
/// 库位编码

@ -25,7 +25,6 @@ namespace Sln.Wcs.Controllers
public class TaskController : ControllerBase
{
private readonly CreateMainTask createMainTask;
private readonly ISqlSugarClient sqlSugarClient;
private readonly IServiceProvider _serviceProvider;
private readonly ISqlSugarClient _db;
@ -33,7 +32,6 @@ namespace Sln.Wcs.Controllers
{
_serviceProvider = serviceProvider;
_db = _serviceProvider.GetService<ISqlSugarClient>();
sqlSugarClient = serviceProvider.GetRequiredService<ISqlSugarClient>();
createMainTask = new CreateMainTask(_serviceProvider);
}
@ -59,6 +57,9 @@ namespace Sln.Wcs.Controllers
[HttpPost("agvCallback")]
public void AgvCallback(AgvCallbackDto agvCallbackDto)
{
//_db.AsTenant().ChangeDatabase("wcs");
var sqlSugarClient = _db.CopyNew();
sqlSugarClient.AsTenant().ChangeDatabase("wcs");
SubTaskInstance subTaskInstance = sqlSugarClient.Queryable<SubTaskInstance>().First(t => t.TaskCode == agvCallbackDto.taskCode);
var mainTaskInstance = sqlSugarClient.Queryable<WcsTaskInstance>().First(t => t.TaskCode == subTaskInstance.MaintaskCode);
if (agvCallbackDto.method.ToLower() == "end")
@ -66,16 +67,15 @@ namespace Sln.Wcs.Controllers
try
{
mainTaskInstance.ResultCode = 1;
var result = sqlSugarClient.Updateable<WcsTaskInstance>(mainTaskInstance).ExecuteCommandAsync();
var result = sqlSugarClient.Updateable<WcsTaskInstance>(mainTaskInstance).UpdateColumns(x => new {
x.ResultCode,
}).ExecuteCommandAsync();
sqlSugarClient.Deleteable<SubTaskInstance>(subTaskInstance).ExecuteCommandAsync();
sqlSugarClient.AsTenant().CommitTranAsync();
}
catch(Exception ex)
{
mainTaskInstance.ResultCode = 1;
var result = sqlSugarClient.Updateable<WcsTaskInstance>(mainTaskInstance).ExecuteCommandAsync();
}
finally
{
sqlSugarClient.Deleteable(subTaskInstance);
sqlSugarClient.AsTenant().RollbackTranAsync();
}
}
}

@ -27,117 +27,39 @@ namespace Sln.Wcs.Function
public void CreateMainTaskByMessage(TaskInfo taskInfo)
{
try
{
sqlSugarClient.AsTenant().ChangeDatabase("wcs");
sqlSugarClient.AsTenant().BeginTranAsync();
WcsTaskInstance taskInstance = new WcsTaskInstance();
BaseTasktypeInfo baseTasktypeInfo = new BaseTasktypeInfo();
List<SubTaskInstance> subTaskInstances = new List<SubTaskInstance>();
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.Status = "Starting";
taskInstance.CurrentSubtaskNo = 1;
taskInstance.CurrentSubtaskNo = 0;
taskInstance.CreateTime = DateTime.Now;
taskInstance.CreateUser = "wcs";
var startPoint = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.LocationCode == taskInfo.TaskStartPoint).First();
var endPoint = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.LocationCode == taskInfo.TaskStartPoint).First();
var endPoint = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.LocationCode == taskInfo.TaskEndPoint).First();
taskInstance.SourceLocation = startPoint.LocationCode;
taskInstance.TargetLocation = endPoint.LocationCode;
//同楼
if (startPoint.WorkshopId == endPoint.WorkshopId)
{
//同楼同层任务
if (startPoint.WorkshopLevel == endPoint.WorkshopLevel)
{
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 1;
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletXTGTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletXTGTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = endPoint.LocationCode,
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = endPoint.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
subTaskInstances.Add(subTaskInstance1);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
SSTask(taskInstance, subTaskInstances, startPoint, endPoint);
}
else //同楼不同层任务
{
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层到{endPoint.WorkshopId}楼-{endPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 3;
var elevatorPoint1 = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == startPoint.WorkshopLevel).First();
var elevatorPoint2 = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == endPoint.WorkshopLevel).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletGTXTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletGTXTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = elevatorPoint1.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
SubTaskInstance subTaskInstance2 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.ElevatorBoxTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.ElevatorBoxTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
EndPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
CurrPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint1.AgvPositionCode,
EndAGVPoint = elevatorPoint2.AgvPositionCode,
CurrAGVPoint = elevatorPoint1.AgvPositionCode,
CreatedBy = "wcs",
};
SubTaskInstance subTaskInstance3 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletXTGTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletXTGTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
EndPointId = endPoint.LocationCode,
CurrPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint2.AgvPositionCode,
EndAGVPoint = endPoint.AgvPositionCode,
CurrAGVPoint = elevatorPoint2.AgvPositionCode,
CreatedBy = "wcs",
};
subTaskInstances.Add(subTaskInstance1);
subTaskInstances.Add(subTaskInstance2);
subTaskInstances.Add(subTaskInstance3);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
SDTask(taskInstance, subTaskInstances, startPoint, endPoint);
}
}
//不同楼
else if (startPoint.WorkshopId != endPoint.WorkshopId)
{
//起点终点不包括15楼
@ -156,106 +78,37 @@ namespace Sln.Wcs.Function
else
{
//前往连廊部分
if (startPoint.WorkshopLevel != 2) //如果不和连廊同层
{
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层到{endPoint.WorkshopId}楼-{endPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 3;
var elevatorPoint1 = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == startPoint.WorkshopLevel).First();
var elevatorPoint2 = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == 2).First();
var transformPoint = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 4 && x.WorkshopId == 1415 && x.WorkshopLevel == 2 && x.ContainerCode == null).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletXTGTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletXTGTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = elevatorPoint1.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
ArrivingTPTask(taskInstance, subTaskInstances, startPoint, endPoint);
if (startPoint.WorkshopId == 15)
//离开连廊部分
LeavingTPTask(taskInstance, subTaskInstances, endPoint);
}
}
else
{
subTaskInstance1.TaskType = StaticTaskType.MovePalletHTGTask;
subTaskInstance1.TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletHTGTask);
}
SubTaskInstance subTaskInstance2 = new SubTaskInstance()
sqlSugarClient.Insertable(taskInstance).ExecuteCommand();
}
catch (Exception ex)
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.ElevatorBoxTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.ElevatorBoxTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
EndPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
CurrPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint1.AgvPositionCode,
EndAGVPoint = elevatorPoint2.AgvPositionCode,
CurrAGVPoint = elevatorPoint1.AgvPositionCode,
CreatedBy = "wcs",
};
_logger.Error(ex.Message);
sqlSugarClient.AsTenant().RollbackTranAsync();
}
finally {
sqlSugarClient.AsTenant().CommitTranAsync();
}
}
SubTaskInstance subTaskInstance3 = new SubTaskInstance()
private void LeavingTPTask(WcsTaskInstance taskInstance, List<SubTaskInstance> subTaskInstances, BaseLocation endPoint)
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletGTXJTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletGTXJTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
EndPointId = "连廊中转点",
CurrPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint2.AgvPositionCode,
EndAGVPoint = transformPoint.AgvPositionCode,
CurrAGVPoint = elevatorPoint2.AgvPositionCode,
CreatedBy = "wcs",
};
subTaskInstances.Add(subTaskInstance1);
subTaskInstances.Add(subTaskInstance2);
subTaskInstances.Add(subTaskInstance3);
}
else //和连廊同层
{
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层到{endPoint.WorkshopId}楼-{endPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 1;
var transformPoint = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 4 && x.WorkshopId == 1415 && x.WorkshopLevel == 2 && x.ContainerCode == null).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletHTGJTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletHTGJTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = $"{transformPoint.WorkshopId}楼{transformPoint.WorkshopLevel}层中转点位",
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = transformPoint.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
}
if (endPoint.WorkshopLevel != 2)
{
taskInstance.SubtaskCount = taskInstance.SubtaskCount + 3;
var elevatorPoint1 = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == 2).First();
var elevatorPoint2 = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == endPoint.WorkshopLevel).First();
var elevator = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == endPoint.WorkshopLevel).First();
var elevatorPoint1 = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.MachineId == elevator.EquipNo && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == 2).First();
var elevatorPoint2 = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.MachineId == elevator.EquipNo && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == endPoint.WorkshopLevel).First();
var transformPoint = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 4 && x.WorkshopId == 1415 && x.WorkshopLevel == 2 && x.ContainerCode == null).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
@ -315,6 +168,10 @@ namespace Sln.Wcs.Function
subTaskInstances.Add(subTaskInstance1);
subTaskInstances.Add(subTaskInstance2);
subTaskInstances.Add(subTaskInstance3);
taskInstance.TaskParams = JsonConvert.SerializeObject(subTaskInstances);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
sqlSugarClient.Insertable(taskInstance).ExecuteCommand();
}
else
{
@ -338,14 +195,216 @@ namespace Sln.Wcs.Function
};
subTaskInstances.Add(subTaskInstance1);
taskInstance.TaskParams = JsonConvert.SerializeObject(subTaskInstances);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
}
}
}
else
private void ArrivingTPTask(WcsTaskInstance taskInstance, List<SubTaskInstance> subTaskInstances, BaseLocation startPoint, BaseLocation endPoint)
{
BaseTasktypeInfo baseTasktypeInfo;
if (startPoint.WorkshopLevel != 2) //如果不和连廊同层
{
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层到{endPoint.WorkshopId}楼-{endPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 3;
var elevator = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == startPoint.WorkshopLevel).First();
var elevatorPoint1 = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.MachineId == elevator.EquipNo && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == startPoint.WorkshopLevel).First();
var elevatorPoint2 = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.MachineId == elevator.EquipNo && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == 2).First();
var transformPoint = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 4 && x.WorkshopId == 1415 && x.WorkshopLevel == 2 && x.ContainerCode == null).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletXTGTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletXTGTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = elevatorPoint1.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
if (startPoint.WorkshopId == 15)
{
subTaskInstance1.TaskType = StaticTaskType.MovePalletHTGTask;
subTaskInstance1.TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletHTGTask);
}
SubTaskInstance subTaskInstance2 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.ElevatorBoxTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.ElevatorBoxTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
EndPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
CurrPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint1.AgvPositionCode,
EndAGVPoint = elevatorPoint2.AgvPositionCode,
CurrAGVPoint = elevatorPoint1.AgvPositionCode,
CreatedBy = "wcs",
};
SubTaskInstance subTaskInstance3 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletGTXJTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletGTXJTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
EndPointId = "连廊中转点",
CurrPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint2.AgvPositionCode,
EndAGVPoint = transformPoint.AgvPositionCode,
CurrAGVPoint = elevatorPoint2.AgvPositionCode,
CreatedBy = "wcs",
};
subTaskInstances.Add(subTaskInstance1);
subTaskInstances.Add(subTaskInstance2);
subTaskInstances.Add(subTaskInstance3);
taskInstance.TaskParams = JsonConvert.SerializeObject(subTaskInstances);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
}
else //和连廊同层
{
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层到{endPoint.WorkshopId}楼-{endPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 1;
var transformPoint = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 4 && x.WorkshopId == 1415 && x.WorkshopLevel == 2 && x.ContainerCode == null).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletHTGJTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletHTGJTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = $"{transformPoint.WorkshopId}楼{transformPoint.WorkshopLevel}层中转点位",
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = transformPoint.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
taskInstance.TaskParams = JsonConvert.SerializeObject(subTaskInstances);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
}
}
sqlSugarClient.Insertable(taskInstance).ExecuteCommand();
private void SDTask(WcsTaskInstance taskInstance, List<SubTaskInstance> subTaskInstances, BaseLocation startPoint, BaseLocation endPoint)
{
BaseTasktypeInfo baseTasktypeInfo;
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层到{endPoint.WorkshopId}楼-{endPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 3;
var elevator = sqlSugarClient.Queryable<BaseEquipInfo>().Where(x => x.EquipType == 3 && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == startPoint.WorkshopLevel).First();
var elevatorPoint1 = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.MachineId == elevator.EquipNo && x.WorkshopId == startPoint.WorkshopId && x.WorkshopLevel == startPoint.WorkshopLevel).First();
var elevatorPoint2 = sqlSugarClient.Queryable<BaseLocation>().Where(x => x.MachineId == elevator.EquipNo && x.WorkshopId == endPoint.WorkshopId && x.WorkshopLevel == endPoint.WorkshopLevel).First();
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletGTXTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletGTXTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = elevatorPoint1.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
SubTaskInstance subTaskInstance2 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.ElevatorBoxTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.ElevatorBoxTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
EndPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
CurrPointId = $"{elevatorPoint1.WorkshopId}楼{elevatorPoint1.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint1.AgvPositionCode,
EndAGVPoint = elevatorPoint2.AgvPositionCode,
CurrAGVPoint = elevatorPoint1.AgvPositionCode,
CreatedBy = "wcs",
};
SubTaskInstance subTaskInstance3 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletXTGTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletXTGTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
EndPointId = endPoint.LocationCode,
CurrPointId = $"{elevatorPoint2.WorkshopId}楼{elevatorPoint2.WorkshopLevel}层提升机点位",
StartAGVPoint = elevatorPoint2.AgvPositionCode,
EndAGVPoint = endPoint.AgvPositionCode,
CurrAGVPoint = elevatorPoint2.AgvPositionCode,
CreatedBy = "wcs",
};
subTaskInstances.Add(subTaskInstance1);
subTaskInstances.Add(subTaskInstance2);
subTaskInstances.Add(subTaskInstance3);
taskInstance.TaskParams = JsonConvert.SerializeObject(subTaskInstances);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
}
private void SSTask(WcsTaskInstance taskInstance, List<SubTaskInstance> subTaskInstances, BaseLocation startPoint, BaseLocation endPoint)
{
BaseTasktypeInfo baseTasktypeInfo;
taskInstance.TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId();
taskInstance.TaskName = $"{startPoint.WorkshopId}楼-{startPoint.WorkshopLevel}层运输任务";
baseTasktypeInfo = sqlSugarClient.Queryable<BaseTasktypeInfo>().Where(x => x.TaskTypeKey == "001").First();
taskInstance.TaskTypeKey = baseTasktypeInfo.TaskTypeKey;
taskInstance.TaskTypeName = baseTasktypeInfo.TaskTypeName;
taskInstance.SubtaskCount = 1;
SubTaskInstance subTaskInstance1 = new SubTaskInstance()
{
TaskCode = SnowflakeIdGenerator.GenerateSnowflakeId(),
TaskType = StaticTaskType.MovePalletXTGTask,
TaskName = StaticTaskType.GetDescription(StaticTaskType.MovePalletXTGTask),
MaintaskCode = taskInstance.TaskCode,
TaskStatus = 0,
StartPointId = startPoint.LocationCode,
EndPointId = endPoint.LocationCode,
CurrPointId = startPoint.LocationCode,
StartAGVPoint = startPoint.AgvPositionCode,
EndAGVPoint = endPoint.AgvPositionCode,
CurrAGVPoint = startPoint.AgvPositionCode,
CreatedBy = "wcs",
CreatedTime = DateTime.Now,
};
subTaskInstances.Add(subTaskInstance1);
taskInstance.TaskParams = JsonConvert.SerializeObject(subTaskInstances);
taskInstance.CurrentSubtaskCode = subTaskInstance1.TaskCode;
}
}
}

@ -37,7 +37,7 @@ namespace Sln.Wcs.Function
while (true)
{
await ExecuteMainTaskAsync();
await Task.Delay(1000);
await Task.Delay(5000);
}
});
}
@ -65,16 +65,20 @@ namespace Sln.Wcs.Function
continue;
}
string TaskJson = item.TaskParams.Trim('"');
TaskJson = TaskJson.Replace("\\\"", "\"");
item.UpdateTime = DateTime.Now;
switch (item.Status)
{
case "Starting":
try
{
item.UpdateTime = DateTime.Now;
if (!string.IsNullOrEmpty(item.TaskParams))
{
List<SubTaskInstance> taskParams = JsonConvert.DeserializeObject<List<SubTaskInstance>>(item.TaskParams);
List<SubTaskInstance> taskParams = JsonConvert.DeserializeObject<List<SubTaskInstance>>(TaskJson);
var firstSubtask = taskParams.First();
var subtaskId = await sqlSugarClient.Insertable(firstSubtask).ExecuteReturnIdentityAsync();
if (subtaskId > 0)
@ -86,7 +90,7 @@ namespace Sln.Wcs.Function
await sqlSugarClient.Updateable(item)
.UpdateColumns(x => new {
x.SubtaskCount,
x.CurrentSubtaskNo,
x.CurrentSubtaskCode,
x.Status,
x.UpdateTime
@ -121,7 +125,7 @@ namespace Sln.Wcs.Function
item.UpdateTime = DateTime.Now;
if (!string.IsNullOrEmpty(item.TaskParams))
{
List<SubTaskInstance> taskParams = JsonConvert.DeserializeObject<List<SubTaskInstance>>(item.TaskParams);
List<SubTaskInstance> taskParams = JsonConvert.DeserializeObject<List<SubTaskInstance>>(TaskJson);
int currenttaskno = (int)(item.CurrentSubtaskNo);
var Subtask = taskParams[currenttaskno];
var subtaskId = await sqlSugarClient.Insertable(Subtask).ExecuteReturnIdentityAsync();
@ -132,9 +136,10 @@ namespace Sln.Wcs.Function
item.CurrentSubtaskNo++;
item.Status = "Running"; // 更新主任务状态为执行中
item.ResultCode = 0; // 更新分任务标志位
item.UpdateTime = DateTime.Now;
await sqlSugarClient.Updateable(item)
.UpdateColumns(x => new {
x.SubtaskCount,
x.CurrentSubtaskNo,
x.CurrentSubtaskCode,
x.Status,
x.ResultCode,
@ -142,7 +147,7 @@ namespace Sln.Wcs.Function
})
.ExecuteCommandAsync();
_logger.Info($"主任务 {item.TaskCode} 已启动,创建第一个子任务 {item.TaskCode}");
_logger.Info($"主任务 {item.TaskCode} 已启动,创建子任务 {item.TaskCode}");
}
}
else

@ -39,6 +39,7 @@ namespace Sln.Wcs.Function
hikRoBotService = serviceProvider.GetRequiredService<HikRoBotService>();
sqlSugarClient = serviceProvider.GetRequiredService<ISqlSugarClient>();
_logger = serviceProvider.GetRequiredService<SerilogHelper>();
}
/// <summary>
@ -55,7 +56,7 @@ namespace Sln.Wcs.Function
while (true)
{
await ExecuteSubTaskAsync();
await Task.Delay(1000);
await Task.Delay(5000);
}
});
}
@ -73,7 +74,9 @@ namespace Sln.Wcs.Function
{
try
{
List<SubTaskInstance> taskList = sqlSugarClient.Queryable<SubTaskInstance>().OrderBy(x => x.CreatedTime).ToList();
sqlSugarClient.AsTenant().ChangeDatabase("wcs");
var db = sqlSugarClient.CopyNew();
List<SubTaskInstance> taskList = db.Queryable<SubTaskInstance>().OrderBy(x => x.CreatedTime).ToList();
foreach (SubTaskInstance item in taskList)
{
item.UpdatedTime = DateTime.Now;
@ -117,9 +120,10 @@ namespace Sln.Wcs.Function
{
try
{
var wcsLocation = sqlSugarClient.Queryable<BaseLocation>().First(t => t.LocationCode == task.CurrAGVPoint);
var db = sqlSugarClient.CopyNew();
var wcsLocation = db.Queryable<BaseLocation>().First(t => t.AgvPositionCode == task.CurrAGVPoint);
workShopPlc1 = base.GetPlcByKey("workshop" + wcsLocation.WorkshopId + "Plc");
WcsBaseDictionary wcsBaseDictionary = sqlSugarClient.Queryable<WcsBaseDictionary>().First(t => t.Id == task.TaskType);
WcsBaseDictionary wcsBaseDictionary = db.Queryable<WcsBaseDictionary>().First(t => t.Id == task.TaskType);
List<Position> PathList = new List<Position>();
PathList.Add(new Position { positionCode = task.CurrAGVPoint, type = "00" });
PathList.Add(new Position { positionCode = task.EndAGVPoint, type = "00" });
@ -130,11 +134,15 @@ namespace Sln.Wcs.Function
taskTyp = wcsBaseDictionary.DicValue,
ctnrTyp = "2",
};
var result = hikRoBotService.GetGenAgvSchedulingTask(agvTask);
result.code = 0; //测试用,记得删除
if (result.code == 0)
{
task.TaskStatus = 1;
var updateflag = sqlSugarClient.Updateable<SubTaskInstance>(task).ExecuteCommandAsync();
var updateflag = db.Updateable<SubTaskInstance>(task).ExecuteCommandAsync();
}
}
@ -153,10 +161,11 @@ namespace Sln.Wcs.Function
{
try
{
var startLocation = sqlSugarClient.Queryable<BaseLocation>().First(t => t.LocationCode == task.CurrAGVPoint);
var endLocation = sqlSugarClient.Queryable<BaseLocation>().First(t => t.LocationCode == task.EndAGVPoint);
var db = sqlSugarClient.CopyNew();
var startLocation = db.Queryable<BaseLocation>().First(t => t.AgvPositionCode == task.CurrAGVPoint);
var endLocation = db.Queryable<BaseLocation>().First(t => t.AgvPositionCode == task.EndAGVPoint);
workShopPlc1 = base.GetPlcByKey("workshop" + startLocation.WorkshopId + "Plc");
var elevator = sqlSugarClient.Queryable<BaseEquipInfo>().First(t => t.EquipNo == task.EquipmentNo);
var elevator = db.Queryable<BaseEquipInfo>().First(t => t.EquipNo == task.EquipmentNo);
if (workShopPlc1 == null || !workShopPlc1.IsConnected)
{
@ -221,10 +230,10 @@ namespace Sln.Wcs.Function
workShopPlc1.writeBoolByAddress("提升完成", true); //继续下一步任务<-待定
if (workShopPlc1.readBoolByAddress(elevator.EquipName + "提升机"+ NumberConverter((int)endLocation.WorkshopLevel) + "楼接驳位状态"))
{
var mainTask = sqlSugarClient.Queryable<WcsTaskInstance>().First(t => t.TaskCode == task.MaintaskCode);
var mainTask = db.Queryable<WcsTaskInstance>().First(t => t.TaskCode == task.MaintaskCode);
mainTask.ResultCode = 1;
sqlSugarClient.Updateable(mainTask).ExecuteCommand();
sqlSugarClient.Deleteable(task).ExecuteCommand();
db.Updateable(mainTask).ExecuteCommand();
db.Deleteable(task).ExecuteCommand();
return;
}
}
@ -232,12 +241,12 @@ namespace Sln.Wcs.Function
sqlSugarClient.AsTenant().BeginTran();
try
{
sqlSugarClient.Updateable(task).ExecuteCommand();
sqlSugarClient.AsTenant().CommitTran();
db.Updateable(task).ExecuteCommand();
db.AsTenant().CommitTran();
}
catch (Exception ex)
{
sqlSugarClient.AsTenant().RollbackTran();
db.AsTenant().RollbackTran();
_logger.Error("提交事务异常:" + ex.Message);
}
}

@ -77,7 +77,7 @@ namespace Sln.Wcs
var subtaskcontrol = new SubTaskControl(serviceProvider);
maintaskcontrol.StartPoint();
//subtaskcontrol.StartPoint();
subtaskcontrol.StartPoint();
StartCheckStatus();
//GetAgvStatus();
_logger.Agv("WCS调度程序启动成功!");

@ -22,12 +22,19 @@ using Sln.Wcs.Function.Functions;
using Sln.Wcs.Rfid;
using System.Windows;
using Sln.Wcs.ElevatorSdk;
using Sln.Wcs.Repository.@base;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Hosting;
using Swashbuckle;
using Microsoft.OpenApi;
namespace Sln.Wcs
{
public class Program
{
private static IConfiguration _apolloConfiguration;
[STAThread]
static async Task Main(string[] args)
{
var services = new ServiceCollection();
@ -41,9 +48,10 @@ namespace Sln.Wcs
var log = serviceProvider.GetService<SerilogHelper>();
var sqlconfig = serviceProvider.GetRequiredService<ISqlSugarClient>();
#region 测试场地
var cts = new CancellationTokenSource();
var apiTask = StartSwaggerApiServer(_apolloConfiguration, serviceProvider, cts.Token);
Thread wpfThread = new Thread(() =>
{
Sln_Wpf.App app = new Sln_Wpf.App();
@ -60,37 +68,14 @@ namespace Sln.Wcs
MainCentralControl mainCentralControl = new MainCentralControl(serviceProvider);
mainCentralControl.Start();
sqlconfig.AsTenant().ChangeDatabase("wcs");
//var configtable = sqlconfig.Queryable<BaseConfigInfo>().First();
BaseConfigInfo baseConfigInfo = new BaseConfigInfo();
baseConfigInfo.ConfigKey = "测试场地";
baseConfigInfo.ConfigValue = "测试";
baseConfigInfo.CreateTime = DateTime.Now;
baseConfigInfo.IsFlag = 1;
baseConfigInfo.Type = "bool";
baseConfigInfo.PlcConfigId = 1;
var plcSqlServer = new plcSqlFunction(serviceProvider);
//plcSqlServer.insertFunction(baseConfigInfo);
//plcSqlServer.deleteFunction(baseConfigInfo);
var material = new BaseMaterialInfo
{
MaterialCode = "MAT001",
MaterialName = "测试物料",
MaterialType = "原材料",
MaterialCategory = "电子",
Status = 1,
IsDeleted = false,
CreateUser = "admin",
UpdateUser = "admin"
};
var MaterialSqlServer = new materialinfoSqlFunction(serviceProvider);
MaterialSqlServer.insertFunction(material);
#endregion
log.Info($"系统启动成功,日志存放位置:{config["logPath"]}");
await Task.WhenAny(apiTask);
cts.Cancel();
}
private static void ConfigureServices(IServiceCollection services)
{
var basePath = AppContext.BaseDirectory;
@ -134,8 +119,6 @@ namespace Sln.Wcs
services.AddRfidFactorySetup();
services.AddElevatorSetup();
services.AddFusionCache()
.WithSerializer(
new FusionCacheNewtonsoftJsonSerializer()
@ -146,6 +129,63 @@ namespace Sln.Wcs
}));
}
private static async Task StartSwaggerApiServer(IConfiguration configuration, IServiceProvider serviceProvider, CancellationToken cancellationToken)
{
// 需要安装: dotnet add package Microsoft.AspNetCore.App
var builder = WebApplication.CreateBuilder();
// 复用配置
builder.Services.AddSingleton(configuration);
// 如果有需要从 serviceProvider 复制的服务,可以在这里添加
// 例如builder.Services.AddSingleton(serviceProvider.GetService<SomeService>());
builder.Services.AddSingleton(serviceProvider.GetService<ISqlSugarClient>());
builder.Services.AddSingleton(serviceProvider.GetService<SerilogHelper>());
builder.Services.AddControllers()
.AddApplicationPart(Assembly.LoadFrom(Path.Combine(AppContext.BaseDirectory, "Sln.Wcs.HikRoBotApi.dll")))
.AddControllersAsServices(); // 使用容器中的服务
// 添加 Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "WCS AGV API",
Version = "v1",
Description = "海康AGV调度系统内部API"
});
});
var app = builder.Build();
// 配置 Swagger UI
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "WCS API V1");
c.RoutePrefix = "swagger"; // 访问地址http://localhost:端口/swagger
});
// 路由配置
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
// 从配置读取端口,默认 5000
var port = configuration["InternalApiPort"] ?? "5000";
var urls = $"http://*:{port}";
app.Urls.Add(urls);
Console.WriteLine($"[Swagger API] 启动,监听: {urls}");
Console.WriteLine($"[Swagger API] 文档地址: http://localhost:{port}/swagger");
await app.RunAsync(cancellationToken);
}
/// <summary>
/// Apollo 配置中心
/// </summary>
@ -171,6 +211,8 @@ namespace Sln.Wcs
apolloConfiguration = configurationBuilder.Build();
_apolloConfiguration = configurationBuilder.Build();
services.Remove(new ServiceDescriptor(typeof(IConfiguration), localConfiguration));
services.AddSingleton<IConfiguration>(apolloConfiguration);
}

@ -26,6 +26,8 @@
<PackageReference Include="Scrutor" Version="7.0.0" />
<PackageReference Include="SQLite" Version="3.13.0" />
<PackageReference Include="SqlSugarCore" Version="5.1.4.214" />
<PackageReference Include="Swashbuckle" Version="5.6.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="10.1.7" />
</ItemGroup>
<ItemGroup>

@ -16,6 +16,8 @@ using Sln.Wcs.Function;
using SqlSugar;
using Sln.Wcs.Function.Functions;
using Microsoft.Extensions.DependencyInjection;
using Sln.Wcs.Repository.@base;
using Sln.Wcs.Repository;
namespace Sln_Wpf.Page
{
@ -29,12 +31,15 @@ namespace Sln_Wpf.Page
/// </summary>
public BaseEquipInfo NewDevice { get; private set; }
private ISqlSugarClient? sqlSugarClient;
private BaseServiceImpl<BaseEquipInfo> baseService;
private equipInfoSqlFunction EquipInfoSqlFunction;
private int WorkingType;
public AddEquipWindow()
{
InitializeComponent();
sqlSugarClient = App.ServiceProvider.GetService<ISqlSugarClient>();
baseService = new BaseServiceImpl<BaseEquipInfo>(new Repository<BaseEquipInfo>(sqlSugarClient));
EquipInfoSqlFunction = new equipInfoSqlFunction(App.ServiceProvider);
WorkingType = 0;
}
@ -43,7 +48,7 @@ namespace Sln_Wpf.Page
{
InitializeComponent();
sqlSugarClient = App.ServiceProvider.GetService<ISqlSugarClient>();
EquipInfoSqlFunction = new equipInfoSqlFunction(App.ServiceProvider);
baseService = new BaseServiceImpl<BaseEquipInfo>(new Repository<BaseEquipInfo>(sqlSugarClient));
WorkingType = 1;
TxtEquipNo.Text = equipInfo.EquipNo;
TxtEquipName.Text = equipInfo.EquipName;
@ -80,8 +85,7 @@ namespace Sln_Wpf.Page
int Typeflag = 0;
int level = Convert.ToInt32(((CmbWorkshopLevel.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "1F").Substring(0, 1));
Typeflag = StringTypetoInt();
sqlSugarClient.Updateable<BaseEquipInfo>().Where(it => it.EquipNo == TxtEquipNo.Text.Trim()).SetColumns(it => new BaseEquipInfo()
{
NewDevice = new BaseEquipInfo {
EquipNo = TxtEquipNo.Text.Trim(),
EquipName = TxtEquipName.Text.Trim(),
EquipType = Typeflag,
@ -89,7 +93,8 @@ namespace Sln_Wpf.Page
ServerPort = Convert.ToInt32(TxtServerPort.Text),
WorkshopLevel = level,
UseFlag = ChkUseFlag.IsChecked == true ? 1 : 0,
}).ExecuteCommand();
};
baseService.Update(NewDevice, $"equip_no = '{TxtEquipNo.Text.Trim()}'");
DialogResult = true;
Close();
}
@ -101,8 +106,6 @@ namespace Sln_Wpf.Page
return;
int Typeflag = 0;
Typeflag = StringTypetoInt();
// 创建设备信息对象
NewDevice = new BaseEquipInfo
{
@ -114,7 +117,7 @@ namespace Sln_Wpf.Page
WorkshopLevel = Convert.ToInt32(((CmbWorkshopLevel.SelectedItem as ComboBoxItem)?.Content.ToString() ?? "1F").Substring(0, 1)),
UseFlag = ChkUseFlag.IsChecked == true ? 1 : 0,
};
EquipInfoSqlFunction.insertFunction(NewDevice);
baseService.Insert(NewDevice);
DialogResult = true;
Close();
}

@ -106,7 +106,7 @@ namespace Sln_Wpf.Page.AddWindows
NewLocation = new BaseLocation
{
WarehouseId = Convert.ToInt32(TxtWarehouseID.Text.Trim()),
MachineId = Convert.ToInt32(TxtMachineID.Text.Trim()),
MachineId = TxtMachineID.Text.Trim(),
LocationCode = TxtLocationCode.Text.Trim(),
AgvPositionCode = TxtAgvPositionCode.Text.Trim(),
ContainerCode = TxtContainerCode.Text.Trim(),
@ -127,7 +127,7 @@ namespace Sln_Wpf.Page.AddWindows
sqlSugarClient.Updateable<BaseLocation>().Where(it => it.LocationCode == TxtLocationCode.Text.Trim()).SetColumns(it => new BaseLocation()
{
WarehouseId = Convert.ToInt32(TxtWarehouseID.Text.Trim()),
MachineId = Convert.ToInt32(TxtMachineID.Text.Trim()),
MachineId = TxtMachineID.Text.Trim(),
LocationCode = TxtLocationCode.Text.Trim(),
AgvPositionCode = TxtAgvPositionCode.Text.Trim(),
ContainerCode = TxtContainerCode.Text.Trim(),
@ -141,7 +141,7 @@ namespace Sln_Wpf.Page.AddWindows
NewLocation = new BaseLocation
{
WarehouseId = Convert.ToInt32(TxtWarehouseID.Text.Trim()),
MachineId = Convert.ToInt32(TxtMachineID.Text.Trim()),
MachineId = TxtMachineID.Text.Trim(),
LocationCode = TxtLocationCode.Text.Trim(),
AgvPositionCode = TxtAgvPositionCode.Text.Trim(),
ContainerCode = TxtContainerCode.Text.Trim(),

@ -81,7 +81,12 @@ namespace Sln_Wpf.Page
private void BtnAdd_Click(object sender, RoutedEventArgs e)
{
AddEquipWindow addEquipWindow = new AddEquipWindow();
addEquipWindow.ShowDialog();
bool? result = addEquipWindow.ShowDialog();
if (result == true)
{
_equips = sqlSugarClient.Queryable<BaseEquipInfo>().ToList();
BindDeviceData();
}
// 实际项目中:打开新增设备对话框,输入设备信息后保存
}
@ -94,7 +99,12 @@ namespace Sln_Wpf.Page
return;
}
AddEquipWindow addEquipWindow = new AddEquipWindow(_selectedDevice);
addEquipWindow.ShowDialog();
bool? result = addEquipWindow.ShowDialog();
if (result == true)
{
_equips = sqlSugarClient.Queryable<BaseEquipInfo>().ToList();
BindDeviceData();
}
}
// 设备信息 - 删除

Loading…
Cancel
Save