220Plc信息同步

master
1 year ago
parent f98c575c25
commit c4c1873adc

@ -166,10 +166,11 @@ namespace Khd.Core.Application
{
var wcsTask = _dbContext.WcsTask
.Where(t => (t.taskType == 32 || t.taskType == 48) && (t.endPointId == baseEquip.objid || t.currPointId == baseEquip.objid))
.OrderByDescending(t=>t.createTime)
.FirstOrDefault();
if (wcsTask != null)
{
if (wcsTask.taskType != 48)
if (wcsTask.taskType != 48 && wcsTask.taskStatus != 0)
{
wcsTask.taskStatus = 7;
_dbContext.WcsTask.Update(wcsTask);
@ -178,7 +179,7 @@ namespace Khd.Core.Application
agvCompeletedResponse.code = "0";
agvCompeletedResponse.message = "成功";
}
else
else if (wcsTask.taskStatus != 0)
{
wcsTask.taskStatus = 4;
_dbContext.WcsTask.Update(wcsTask);
@ -187,6 +188,11 @@ namespace Khd.Core.Application
agvCompeletedResponse.code = "0";
agvCompeletedResponse.message = "成功";
}
else
{
agvCompeletedResponse.code = "1";
agvCompeletedResponse.message = "未找到当前任务";
}
}
else
{
@ -445,8 +451,8 @@ namespace Khd.Core.Application
{
var AgvMessage = new
{
reqCode= _snowId.NextId().ToString(),
robots=new string[] {agvStopOrStart.AgvCode}
reqCode = _snowId.NextId().ToString(),
robots = new string[] { agvStopOrStart.AgvCode }
};
string result = HttpHelper.SendPostMessage(Ip, Port, "rcms/services/rest/hikRpcService/stopRobot", AgvMessage.ToJsonString());
ReponseMessage reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);

@ -88,6 +88,10 @@ namespace Khd.Core.Plc
{
return Convert.ToBoolean(value);
}
if (len == "12")
{
return Convert.ToSingle(value);
}
throw new ArgumentException("StaticPlcHelper Ex len is not support");
}
}

@ -542,11 +542,15 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
bool isCreate = false;
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9).Where(t => t.taskStatus < 5).Any();
bool canCreate = dbContext.WcsTask.Where(t => t.nextPointId == 9)
.Where(t => t.useFlag == 1)
.Where(t => t.taskStatus <= 6).Any();
if (!canCreate)
{
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 35);
#region 原逻辑
//if (baseEquip.emptyCount == (SystemData.maxTray / 2))
//{
// var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 1 && t.emptyCount == (SystemData.maxTray / 2));
@ -618,6 +622,7 @@ namespace Khd.Core.Wcs.Wcs
// }
//}
//else
#endregion
if (baseEquip.emptyCount == SystemData.maxTray)//达到最大值
{
var endEquip = dbContext.BaseEquip.FirstOrDefault(t => t.equipType == 15 && t.equipStatus == 0 && t.emptyCount == 0);//找周转区
@ -651,6 +656,80 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
isCreate = true;
}
}
if (!isCreate)
{
var emptyEquip = dbContext.BaseEquip.Where(t => t.equipType == 15).Where(t => t.emptyCount == SystemData.maxTray).ToList();
var secondEmptyEquip = dbContext.BaseEquip.Where(t => t.equipType == 20).Where(t => t.emptyCount == 0).ToList();
if (emptyEquip.Count >= 2 && secondEmptyEquip.Count >= 4)//二楼空库位多余4个三楼空库位大于4个
{
BaseEquip startEquip = emptyEquip.First();
WcsTask wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 101,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
currPointId = startEquip.objid,
currPointNo = startEquip.equipNo,
endPointId = secondEmptyEquip.First().objid,
endPointNo = secondEmptyEquip.First().equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = startEquip.emptyCount,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 2,
fromFloorNo = 3,
masterId = 0,
orderId = 0,
materialId = 0,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
else if (emptyEquip.Count == 3&& secondEmptyEquip.Count >= 2)
{
BaseEquip startEquip = emptyEquip.First();
WcsTask wcsTask = new WcsTask()
{
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 101,
nextPointId = agvEquip.objid,
nextPointNo = agvEquip.equipNo,
currPointId = startEquip.objid,
currPointNo = startEquip.equipNo,
endPointId = secondEmptyEquip.First().objid,
endPointNo = secondEmptyEquip.First().equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = startEquip.emptyCount,
isEmpty = "1",
taskStatus = 0,
createBy = "WCS",
createTime = DateTime.Now,
floorNo = 2,
fromFloorNo = 3,
masterId = 0,
orderId = 0,
materialId = 0,
};
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
else
{
//报警
}
}
}

@ -127,7 +127,7 @@ namespace Khd.Core.Wcs.Wcs
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == item.nextPointId);
if (!string.IsNullOrEmpty(item.taskCode) && !string.IsNullOrEmpty(agvEquip.serverIp))
{
if(item.endPointId== 11)
if (item.endPointId == 11)
{
dbContext.WcsTask.Remove(item);
if (item.taskStatus == 6)
@ -329,16 +329,86 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
FiveAgvStatusLogic();
SecondAgvLogic();
ThirdAgvLogic();
SendTrayMessage();
HositerLogic();
CtuLineLogic();
FiveAgvLogic();
FiveBearAgvLogic();
CtuCmdLogic();
UpdatePlcPointValue();
try
{
FiveAgvStatusLogic();
}
catch
{
}
try
{
SecondAgvLogic();
}
catch
{
}
try
{
ThirdAgvLogic();
}
catch
{
}
try
{
SendTrayMessage();
}
catch
{
}
try
{
HositerLogic();
}
catch
{
}
try
{
CtuLineLogic();
}
catch
{
}
try
{
FiveAgvLogic();
}
catch
{
}
try
{
FiveBearAgvLogic();
}
catch
{
}
try
{
CtuCmdLogic();
}
catch
{
}
try
{
UpdatePlcPointValue();
}
catch
{
}
}
catch (Exception ex)
{

@ -1976,7 +1976,7 @@
</StackPanel>
</TabItem>
<TabItem Visibility="Collapsed" x:Name="ScanReturnManager" Header="扫描退库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<TabItem x:Name="ScanReturnManager" Header="扫描退库" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="100" Margin="5">
<StackPanel Height="1060" Width="1703" Background="#213269" Canvas.Left="175" Canvas.Top="110" Orientation="Horizontal">
<StackPanel Orientation="Horizontal" Width="1750">
<StackPanel Orientation="Vertical" Margin="20,5,0,0">

Loading…
Cancel
Save