master
2 years ago
parent 07285c2746
commit d8cb081c2e

@ -1,19 +1,20 @@
{ {
"Logging": { //"Logging": {
"LogLevel": { // "LogLevel": {
"Default": "Information", // "Default": "Information",
"Microsoft": "Warning", // "Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information" // "Microsoft.Hosting.Lifetime": "Information"
}, // },
"AppSettings": { // "AppSettings": {
"SiteCode": "999" // "SiteCode": "999"
} // }
}, //},
"AllowedHosts": "*", "AllowedHosts": "*",
"ConnectionStrings": { "ConnectionStrings": {
"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True", //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True",
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True", //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True",
"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"JwtSecurityOption": { "JwtSecurityOption": {
"SigningKey": "3c41f60c-1d12-11ec-890d-00163e1b8678", "SigningKey": "3c41f60c-1d12-11ec-890d-00163e1b8678",

@ -65,7 +65,9 @@ namespace Khd.Core.Application
wcscmd.sendFlag = 1; wcscmd.sendFlag = 1;
wcsTask.taskStatus = 2; wcsTask.taskStatus = 2;
_dbContext.WcsCmd.Update(wcscmd); _dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 2 });
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
_dbContext.SaveChanges(); _dbContext.SaveChanges();
reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功"; reponseagvCallbackDto.message = "成功";
@ -76,7 +78,9 @@ namespace Khd.Core.Application
wcscmd.cmdStatus = 4; wcscmd.cmdStatus = 4;
wcsTask.taskStatus = 4; wcsTask.taskStatus = 4;
_dbContext.WcsCmd.Update(wcscmd); _dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 4 });
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
_dbContext.SaveChanges(); _dbContext.SaveChanges();
reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功"; reponseagvCallbackDto.message = "成功";
@ -88,7 +92,9 @@ namespace Khd.Core.Application
wcscmd.cmdStatus = 3; wcscmd.cmdStatus = 3;
wcsTask.taskStatus = 3; wcsTask.taskStatus = 3;
_dbContext.WcsCmd.Update(wcscmd); _dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 3 });
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
_dbContext.SaveChanges(); _dbContext.SaveChanges();
reponseagvCallbackDto.code = "0"; reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功"; reponseagvCallbackDto.message = "成功";
@ -96,14 +102,34 @@ namespace Khd.Core.Application
//放货完成 //放货完成
if (agvCallbackDto.method.ToLower() == "end") if (agvCallbackDto.method.ToLower() == "end")
{ {
wcscmd.cmdStatus = 5; if (wcsTask.nextPointId !=10)
wcscmd.sendFlag = 1; {
wcsTask.taskStatus = 5; wcscmd.cmdStatus = 5;
_dbContext.WcsCmd.Update(wcscmd); wcscmd.sendFlag = 1;
_dbContext.WcsTask.Update(wcsTask); wcsTask.taskStatus = 5;
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0"; _dbContext.WcsCmd.Update(wcscmd);
reponseagvCallbackDto.message = "成功"; _dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 5 });
_dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 5 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
else
{
wcscmd.cmdStatus = 6;
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 6;
_dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 6 });
_dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
} }
} }
} }
@ -151,8 +177,7 @@ namespace Khd.Core.Application
try try
{ {
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
string stationId = agvCompeletedRequest.stationNo; BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == stationId);
if (baseEquip != null) if (baseEquip != null)
{ {
var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).FirstOrDefault(); var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).FirstOrDefault();
@ -163,10 +188,12 @@ namespace Khd.Core.Application
{ {
agvCompeletedResponse.code = "0"; agvCompeletedResponse.code = "0";
agvCompeletedResponse.message = "成功"; agvCompeletedResponse.message = "成功";
wcsCmd.cmdStatus = 6; wcsCmd.cmdStatus = 7;
wcsTask.taskStatus = 6; wcsTask.taskStatus = 7;
_dbContext.WcsCmd.Update(wcsCmd); _dbContext.WcsCmd.Update(wcsCmd);
_dbContext.WcsCmdLog.Where(t=>t.objid==wcsCmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 7 });
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
_dbContext.SaveChanges(); _dbContext.SaveChanges();
} }
} }
@ -201,14 +228,15 @@ namespace Khd.Core.Application
try try
{ {
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
WcsTask wcsTask = _dbContext.WcsTask var wcsTask = _dbContext.WcsTask
.Where(t => t.materialId == taskContinue.materialId)
.Where(t => t.taskType == 47) .Where(t => t.taskType == 47)
.Where(t=>t.masterId==taskContinue.materialId)
.FirstOrDefault(); .FirstOrDefault();
if (wcsTask != null) if (wcsTask != null)
{ {
wcsTask.useFlag = 1; wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTaskLog { useFlag = 1 });
_dbContext.SaveChanges(); _dbContext.SaveChanges();
compeletedResponse.code = "0"; compeletedResponse.code = "0";
compeletedResponse.message = "成功"; compeletedResponse.message = "成功";
@ -239,13 +267,13 @@ namespace Khd.Core.Application
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); _dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
WcsTask wcsTask = _dbContext.WcsTask WcsTask wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 28) .Where(t => t.taskType == 28)
.Where(t=>t.startPointNo==taskReturn.PointNo) .Where(t=>t.endPointNo==taskReturn.endStationCode)
.Where(t => t.materialId == taskReturn.materialId)
.FirstOrDefault(); .FirstOrDefault();
if (wcsTask != null) if (wcsTask != null)
{ {
wcsTask.useFlag = 1; wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask); _dbContext.WcsTask.Update(wcsTask);
_dbContext.WcsTask.Where(t=>t.objid==wcsTask.objid).Update(a=>new WcsTask { useFlag = 1 });
_dbContext.SaveChanges(); _dbContext.SaveChanges();
compeletedResponse.code = "0"; compeletedResponse.code = "0";
compeletedResponse.message = "成功"; compeletedResponse.message = "成功";

@ -9,7 +9,7 @@ namespace Khd.Core.Domain.Dto.webapi
public class AgvCompeleted public class AgvCompeleted
{ {
public string stationId { get; set; } public string stationId { get; set; }
public string stationNo { get; set; } public string endStationCode { get; set; }
public string stationState { get; set; } public string stationState { get; set; }
public string method { get; set; } public string method { get; set; }
} }
@ -17,13 +17,13 @@ namespace Khd.Core.Domain.Dto.webapi
public class TaskContinue public class TaskContinue
{ {
public long? materialId { get; set; } public long? materialId { get; set; }
public string PointNo { get; set; } public string endStationCode { get; set; }
} }
public class TaskReturn public class TaskReturn
{ {
public long? materialId { get; set; } public long? materialId { get; set; }
public string PointNo { get; set; } public string endStationCode { get; set; }
} }
public class AgvCompeletedResponse public class AgvCompeletedResponse

@ -261,5 +261,6 @@ namespace Khd.Core.Plc.S7
return package.ToArray(); return package.ToArray();
} }
} }
} }

@ -52,6 +52,7 @@ namespace Khd.Core.Plc
return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Trim(); return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Trim();
} }
/// <summary> /// <summary>
/// 电气写入点位高低位转换 /// 电气写入点位高低位转换
/// </summary> /// </summary>

@ -29,13 +29,6 @@
<ProjectReference Include="..\Khd.Core.Thrift\Khd.Core.Thrift.csproj" /> <ProjectReference Include="..\Khd.Core.Thrift\Khd.Core.Thrift.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Reference Include="S7.Net">
<HintPath>..\..\dll\S7.Net.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup> <ItemGroup>
<None Update="appsettings.json"> <None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
@ -46,4 +39,8 @@
<Folder Include="PLCHelper\" /> <Folder Include="PLCHelper\" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Using Include="Khd.Core.Plc" />
</ItemGroup>
</Project> </Project>

@ -36,11 +36,13 @@ namespace Khd.Core.Wcs
/// </summary> /// </summary>
public void Start() public void Start()
{ {
try
{ //加载配置项
try
{
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
//加载配置项
//设置程序启动时清空点位的数据=>0为 Int16位 //设置程序启动时清空点位的数据=>0为 Int16位
QingKongDianWei = StaticPlcHelper.GetValue("2", "0"); QingKongDianWei = StaticPlcHelper.GetValue("2", "0");
//设置默认处理完成=>1为 Int16位 //设置默认处理完成=>1为 Int16位
@ -51,6 +53,7 @@ namespace Khd.Core.Wcs
StaticData.BaseEquip = dbContext.BaseEquip.ToList(); StaticData.BaseEquip = dbContext.BaseEquip.ToList();
StaticData.basePlcs = dbContext.BasePlc.ToList(); StaticData.basePlcs = dbContext.BasePlc.ToList();
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList(); StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();
foreach (var plcConfig in StaticData.PlcConfigs) foreach (var plcConfig in StaticData.PlcConfigs)
{ {
if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code)) if (!StaticData.PlcDic.Any(t => t.Key == plcConfig.Code))
@ -59,7 +62,7 @@ namespace Khd.Core.Wcs
plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot); plc = new Plc.S7.Plc(plcConfig.CpuType, plcConfig.IP, plcConfig.Port, plcConfig.Rack, plcConfig.Slot);
try try
{ {
plc.Open(); //plc.Open();
Console.WriteLine(DateTime.Now + ":连接到PLC" + plcConfig.IP); Console.WriteLine(DateTime.Now + ":连接到PLC" + plcConfig.IP);
} }
catch catch
@ -69,8 +72,8 @@ namespace Khd.Core.Wcs
StaticData.PlcDic.TryAdd(plcConfig.Code, plc); StaticData.PlcDic.TryAdd(plcConfig.Code, plc);
} }
} }
//SystemTimer systemTimer = new SystemTimer(_host); SystemTimer systemTimer = new SystemTimer(_host);
//systemTimer.Start(); systemTimer.Start();
//创建任务 //创建任务
CreateTaskByRecord createTaskByRecord = new(_host, ""); CreateTaskByRecord createTaskByRecord = new(_host, "");
createTaskByRecord.StartPoint(); createTaskByRecord.StartPoint();
@ -124,9 +127,9 @@ namespace Khd.Core.Wcs
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[2], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo); //FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[2], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo);
//fifthFloorAGV.StartPoint(); //fifthFloorAGV.StartPoint();
//var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First(); var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First();
//FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[0], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo); FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo);
//fiveFloorBearAgv.StartPoint(); fiveFloorBearAgv.StartPoint();
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -62,8 +62,8 @@ namespace Khd.Core.Wcs.Wcs
/// </summary> /// </summary>
public void StartPoint() public void StartPoint()
{ {
//var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic); var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
//createBearAgvReturnThread.Start(); createBearAgvReturnThread.Start();
//var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic); //var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic);
//createRawInWareTaskThread.Start(); //createRawInWareTaskThread.Start();
@ -348,12 +348,11 @@ namespace Khd.Core.Wcs.Wcs
try try
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var wmsRawReturns = dbContext.WmsRawReturn.Where(t => t.executeStatus == "0") var wmsRawReturn = dbContext.WmsRawReturn
.Where(t => t.auditStatus == "1") .Where(t => t.auditStatus == "1")
.ToList(); .FirstOrDefault();
if (wmsRawReturns != null && wmsRawReturns.Count > 0) if (wmsRawReturn != null)
{ {
WmsRawReturn wmsRawReturn = wmsRawReturns.First();
if (wmsRawReturn.executeStatus == "0") if (wmsRawReturn.executeStatus == "0")
{ {
//任务未开始Status=0 //任务未开始Status=0
@ -389,6 +388,8 @@ namespace Khd.Core.Wcs.Wcs
}; };
wmsRawReturn.executeStatus = "1"; wmsRawReturn.executeStatus = "1";
dbContext.Add(wcsTask); dbContext.Add(wcsTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.Update(wmsRawReturn); dbContext.Update(wmsRawReturn);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@ -1108,13 +1109,5 @@ namespace Khd.Core.Wcs.Wcs
} }
//五楼原材料出库,完成
//五楼原材料出库到组装区,完成
//五楼成品出库完成
//五楼原材料返库待完成
//五楼背板安装--半成品基本完成,待完善
//五楼原材料--背板安装待完成
//五楼原材料--柜体验收待完成
} }
} }

@ -181,11 +181,11 @@ namespace Khd.Core.Wcs.Wcs
materialId = material.materialId, materialId = material.materialId,
qty = Convert.ToInt32(material.bindAmount), qty = Convert.ToInt32(material.bindAmount),
startPointId = F01, startPointId = F01,
startPointNo = "F01", startPointNo = "TSJ_01",
currPointId = F01, currPointId = F01,
currPointNo = "F01", currPointNo = "TSJ_01",
nextPointId = T01, nextPointId = T01,
nextPointNo = "T01", nextPointNo = "TSJ_01",
endPointId = warehouseId, endPointId = warehouseId,
fromFloorNo = 1, fromFloorNo = 1,
floorNo = TargetFloor.warehouseFloor, floorNo = TargetFloor.warehouseFloor,
@ -208,9 +208,9 @@ namespace Khd.Core.Wcs.Wcs
if (task.nextPointId != T01) if (task.nextPointId != T01)
{ {
task.currPointId = F01; task.currPointId = F01;
task.currPointNo = "F01"; task.currPointNo = "TSJ_01";
task.nextPointId = T01; task.nextPointId = T01;
task.nextPointNo = "T01"; task.nextPointNo = "TSJ_01";
task.taskStatus = 0; task.taskStatus = 0;
task.updateBy = "一楼接驳位线程"; task.updateBy = "一楼接驳位线程";
task.updateTime = DateTime.Now; task.updateTime = DateTime.Now;

@ -4,10 +4,13 @@ using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Diagnostics;
using Thrift.Protocol;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -75,10 +78,6 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.useFlag == 1) .Where(t => t.useFlag == 1)
.Where(t => t.nextPointId == agvID).OrderBy(t => t.createTime).ToList(); .Where(t => t.nextPointId == agvID).OrderBy(t => t.createTime).ToList();
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
if (taskList.Count == 0)
{
LogManager.Info(FloorNo + "楼AGV无任务");
}
foreach (var item in taskList) foreach (var item in taskList)
{ {
if (taskList.Where(t => t.taskStatus > 0).Where(t => t.objid != item.objid).Any()) if (taskList.Where(t => t.taskStatus > 0).Where(t => t.objid != item.objid).Any())
@ -132,6 +131,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -202,6 +202,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -262,6 +263,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -320,6 +322,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -378,6 +381,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -437,6 +441,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -495,6 +500,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -553,6 +559,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发任务成功" + message);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -574,6 +581,7 @@ namespace Khd.Core.Wcs.Wcs
WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid);
if (wcsCmd != null) if (wcsCmd != null)
{ {
if (wcsCmd.cmdStatus == 3) if (wcsCmd.cmdStatus == 3)
{ {
var agvTask = new RequestAGVTaskDto var agvTask = new RequestAGVTaskDto
@ -586,6 +594,7 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
LogManager.Info("五楼Agv下发继续任务成功" + message);
wcsCmd.cmdStatus = 4; wcsCmd.cmdStatus = 4;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.Update(wcsCmd); dbContext.Update(wcsCmd);
@ -596,6 +605,9 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (wcsCmd.cmdStatus == 5) else if (wcsCmd.cmdStatus == 5)
{ {
LogManager.Info("五楼叉车线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
LogManager.Info("五楼Agv完成任务成功" + wcsCmd.ToJsonString());
if (item.taskType == 49) if (item.taskType == 49)
{ {
WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId); WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
@ -619,6 +631,10 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsProductStock); dbContext.Update(wmsProductStock);
} }
} }
dbContext.Remove(wcsCmd);
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
dbContext.Update(fromBaseLocation); dbContext.Update(fromBaseLocation);
dbContext.Update(toBaseLocation); dbContext.Update(toBaseLocation);
dbContext.SaveChanges(); dbContext.SaveChanges();
@ -664,8 +680,8 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (item.taskType == 38)//出库 else if (item.taskType == 38)//出库
{ {
var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId ); var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId);
var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t=> t.executeStatus == "1" && t.locationCode == item.currPointNo); var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t => t.executeStatus == "1" && t.locationCode == item.currPointNo);
var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId); var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId);
if (wmsProductOutstockDetail != null && wmsProductOutstock != null) if (wmsProductOutstockDetail != null && wmsProductOutstock != null)
{ {
@ -687,20 +703,25 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete(); dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5); BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5);
item.nextPointId = floorLineEquip.objid; WcsTask newTask = CoreMapper.Map<WcsTask>(item);
item.nextPointNo = floorLineEquip.equipNo; newTask.createTime=DateTime.Now;
item.fromFloorNo = 5; newTask.nextPointId = floorLineEquip.objid;
item.floorNo = 1; newTask.nextPointNo = floorLineEquip.equipNo;
item.taskStatus = 6; newTask.fromFloorNo = 5;
newTask.floorNo = 1;
newTask.taskStatus = 6;
newTask.objid=StaticData.SnowId.NextId();
lineEquip.equipStatus = 0; lineEquip.equipStatus = 0;
dbContext.Update(lineEquip); dbContext.Update(lineEquip);
dbContext.Update(item); dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.Add(wcsTaskLog);
dbContext.Remove(item);
dbContext.WcsCmd.Remove(wcsCmd);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6, nextPointId = floorLineEquip.objid, nextPointNo = floorLineEquip.equipNo, fromFloorNo = 5, floorNo = 1 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6, nextPointId = floorLineEquip.objid, nextPointNo = floorLineEquip.equipNo, fromFloorNo = 5, floorNo = 1 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges();
} }
} }
else if (item.taskType == 33)//原材料到背板安装 else if (item.taskType == 33)//原材料到背板安装
{ {
@ -712,11 +733,11 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateBy = "WCS"; wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete(); dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.WcsCmd.Remove(wcsCmd);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); dbContext.WcsTask.Remove(item);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.SaveChanges();
} }
else if (item.taskType == 34)//半成品入库 else if (item.taskType == 34)//半成品入库
{ {
@ -768,8 +789,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(startEquip); dbContext.Update(startEquip);
dbContext.Add(wmsProductStock); dbContext.Add(wmsProductStock);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.WcsCmd.Remove(wcsCmd);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); dbContext.WcsTask.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.SaveChanges(); dbContext.SaveChanges();
@ -779,7 +800,6 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (item.taskType == 46)//该任务结束后立刻生成一个新的返库任务但是是否使用标志未0等待mes通知 else if (item.taskType == 46)//该任务结束后立刻生成一个新的返库任务但是是否使用标志未0等待mes通知
{ {
WcsTask newTask = CoreMapper.Map<WcsTask>(item);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId); WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.instockFlag = "1";
@ -795,24 +815,26 @@ namespace Khd.Core.Wcs.Wcs
wmsRawStock.updateBy = "WCS"; wmsRawStock.updateBy = "WCS";
dbContext.Update(wmsRawStock); dbContext.Update(wmsRawStock);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); WcsTask newTask = CoreMapper.Map<WcsTask>(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); newTask.objid = StaticData.SnowId.NextId();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); newTask.currPointId = item.endPointId;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); newTask.currPointNo = item.endPointNo;
item.objid = StaticData.SnowId.NextId(); newTask.endPointId = item.startPointId;
item.currPointId = item.endPointId; newTask.endPointNo = item.startPointNo;
item.currPointNo = item.endPointNo; newTask.startPointId = item.currPointId;
item.endPointId = item.startPointId; newTask.createTime = DateTime.Now;
item.endPointNo = item.startPointNo; newTask.startPointNo = item.currPointNo;
item.startPointId = item.currPointId; newTask.taskType = 28;
item.startPointNo = item.currPointNo; newTask.taskStatus = 0;
item.taskType = 28; newTask.useFlag = 0;
item.taskStatus = 0; dbContext.Remove(item);
item.useFlag = 0; dbContext.Remove(wcsCmd);
dbContext.Add(item); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(item); dbContext.Add(newTask);
dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
dbContext.SaveChanges(); dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
} }
} }
@ -837,13 +859,12 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(startEquip); dbContext.Update(startEquip);
dbContext.Update(wmsRawStock); dbContext.Update(wmsRawStock);
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete(); dbContext.Remove(item);
dbContext.Remove(wcsCmd);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.SaveChanges();
} }
} }
else if (item.taskType == 47) else if (item.taskType == 47)
{ {
@ -883,11 +904,11 @@ namespace Khd.Core.Wcs.Wcs
}; };
dbContext.Add(wmsRawStock); dbContext.Add(wmsRawStock);
dbContext.Add(wmsBaseLocation); dbContext.Add(wmsBaseLocation);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.Remove(item);
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 }); dbContext.Remove(wcsCmd);
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
dbContext.SaveChanges(); dbContext.SaveChanges();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
} }
} }
} }

@ -3,6 +3,7 @@ using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper; using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
@ -129,6 +130,8 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.code == "0") if (reponseMessage != null && reponseMessage.code == "0")
{ {
LogManager.Info("五楼背负式AGV线程下发任务" + agvTask.ToJsonString());
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程下发任务" + wcsCmd.currPointNo + "," + wcsCmd.nextPointNo);
wcsCmd.taskCode = reponseMessage.data; wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1; wcsCmd.cmdStatus = 1;
item.taskStatus = 1; item.taskStatus = 1;
@ -151,7 +154,7 @@ namespace Khd.Core.Wcs.Wcs
WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid); WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid);
if (wcsCmd != null) if (wcsCmd != null)
{ {
if (wcsCmd.cmdStatus == 3) if (wcsCmd.cmdStatus == 4)
{ {
var agvTask = new RequestAGVTaskDto var agvTask = new RequestAGVTaskDto
{ {
@ -163,23 +166,19 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 5 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 5 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 5 });
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
} }
else if (wcsCmd.cmdStatus == 5)
{
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.SaveChanges();
}
else if (wcsCmd.cmdStatus == 7) else if (wcsCmd.cmdStatus == 7)
{ {
LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
var agvTask = new RequestAGVTaskDto var agvTask = new RequestAGVTaskDto
{ {
reqCode = StaticData.SnowId.NextId().ToString(), reqCode = StaticData.SnowId.NextId().ToString(),
@ -190,10 +189,6 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功") if (reponseMessage != null && reponseMessage.message == "成功")
{ {
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 8 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
if (item.taskType == 48) if (item.taskType == 48)
{ {
dbContext.WmsRawReturn.Where(t => t.rawReturnId == item.orderId).Update(t => new WmsRawReturn { executeStatus = "2" }); dbContext.WmsRawReturn.Where(t => t.rawReturnId == item.orderId).Update(t => new WmsRawReturn { executeStatus = "2" });
@ -202,7 +197,12 @@ namespace Khd.Core.Wcs.Wcs
{ {
} }
dbContext.Remove(wcsCmd);
dbContext.Remove(item);
dbContext.SaveChanges(); dbContext.SaveChanges();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 10 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 10 });
} }
} }
} }

@ -13,6 +13,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
using Thrift.Protocol;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -68,11 +69,11 @@ namespace Khd.Core.Wcs.Wcs
public void StartPoint() public void StartPoint()
{ {
//Thread FlowPointThread = new Thread(MonitorInLocatorPoint); Thread FlowPointThread = new Thread(MonitorInLocatorPoint);
//FlowPointThread.Start(); FlowPointThread.Start();
//Thread FlowCTUInWareThread = new Thread(MonitorInWare); Thread FlowCTUInWareThread = new Thread(MonitorInWare);
//FlowCTUInWareThread.Start(); FlowCTUInWareThread.Start();
Thread HeartThread = new Thread(HeartLogic); Thread HeartThread = new Thread(HeartLogic);
HeartThread.Start(); HeartThread.Start();
@ -90,13 +91,13 @@ namespace Khd.Core.Wcs.Wcs
try try
{ {
flag = !flag; flag = !flag;
this._plc.WriteToPoint(heartPoint.plcpointAddress,flag.ToString(),heartPoint.plcpointLength.ToString()); this._plc.WriteToPoint(heartPoint.plcpointAddress, flag.ToString(), heartPoint.plcpointLength.ToString());
} }
catch catch
{ {
try try
{ {
this._plc = new Plc.S7.Plc(this._plc.CPU,this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot); this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open(); this._plc.Open();
} }
catch catch
@ -219,7 +220,7 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
else if(Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1 && string.IsNullOrEmpty(rfid)) else if (Convert.ToInt32(receiveMaterial) == 1 && Convert.ToInt32(isArrive) == 1 && string.IsNullOrEmpty(rfid))
{ {
if (!Convert.ToBoolean(waring)) if (!Convert.ToBoolean(waring))
{ {
@ -420,9 +421,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 }); dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
WcsCmdLog wcsCmdLog = CoreMapper.Map<WcsCmdLog>(wcsCmd); WcsCmdLog wcsCmdLog = CoreMapper.Map<WcsCmdLog>(wcsCmd);
dbContext.Add(wcsCmdLog); dbContext.Add(wcsCmdLog);
WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
wcsOutstockLock.qty++;
dbContext.Update(wcsOutstockLock);
dbContext.WcsCmd.Add(wcsCmd); dbContext.WcsCmd.Add(wcsCmd);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@ -531,6 +529,8 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.code == "0") if (reponseMessage != null && reponseMessage.code == "0")
{ {
LogManager.Info("五楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
Console.WriteLine(DateTime.Now + ":五楼CTU线程继续任务" + item.startPointNo + "," + item.endPointNo);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
@ -556,6 +556,8 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result); ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.code == "0") if (reponseMessage != null && reponseMessage.code == "0")
{ {
LogManager.Info("五楼CTU线程下发任务" + agvTask.ToJsonString() + "\n" + message);
Console.WriteLine(DateTime.Now + ":五楼CTU线程下发任务" + item.startPointNo + "," + item.endPointNo);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 }); dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 4 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 }); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
@ -570,6 +572,8 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (wcsCmd.cmdStatus == 5) else if (wcsCmd.cmdStatus == 5)
{ {
LogManager.Info("五楼CTU线程完成任务" + wcsCmd.objid);
Console.WriteLine(DateTime.Now + ":五楼CTU线程完成任务" + wcsCmd.objid);
if (item.taskType == 30)//出库任务 if (item.taskType == 30)//出库任务
{ {
WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString()); WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString());
@ -578,23 +582,24 @@ namespace Khd.Core.Wcs.Wcs
wmsRawOutstockDetail.executeStatus = "2"; wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutstockDetail.updateDate = DateTime.Now; wmsRawOutstockDetail.updateDate = DateTime.Now;
dbContext.Update(wmsRawOutstockDetail); dbContext.Update(wmsRawOutstockDetail);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation }
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.startPointId && t.warehouseFloor == 5); .First(t => t.locationId == item.startPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0"; wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.locationStatus = "2"; wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" }); dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" });
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.Remove(wcsCmd);
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 }); dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
dbContext.SaveChanges(); dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count(); int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count();
if (wcsTaskCount == 0) if (wcsTaskCount == 0)
{ {
this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString()); this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
}
} }
} }
else if (item.taskType == 29)//入库任务 else if (item.taskType == 29)//入库任务
@ -606,9 +611,10 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.locationStatus = "1"; wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.ContainerStatus = "1"; wmsBaseLocation.ContainerStatus = "1";
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete(); dbContext.Remove(wcsCmd);
dbContext.Remove(item);
dbContext.SaveChanges();
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 }); dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 }); dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
lock (SystemData.outStockLock) lock (SystemData.outStockLock)
{ {
@ -619,9 +625,9 @@ namespace Khd.Core.Wcs.Wcs
wcsOutstockLock.qty = 0; wcsOutstockLock.qty = 0;
wcsOutstockLock.boxStatus = 0; wcsOutstockLock.boxStatus = 0;
dbContext.Update(wcsOutstockLock); dbContext.Update(wcsOutstockLock);
dbContext.SaveChanges();
} }
} }
dbContext.SaveChanges();
} }
} }
} }

@ -20,7 +20,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
List<BasePlcpoint> ScanPoint { get; set; }//点位信息 List<BasePlcpoint> ScanPoint { get; set; }//点位信息
private readonly IHost _host; private readonly IHost _host;
private readonly Plc.S7.Plc _plc; private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineWcsrun; private readonly BasePlcpoint LineWcsrun;
private readonly BasePlcpoint LineSignal; private readonly BasePlcpoint LineSignal;
@ -133,34 +133,34 @@ namespace Khd.Core.Wcs.Wcs
var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 5);// var AgvEquip = StaticData.BaseEquip.First(t => t.floorNo == 5 && t.equipType == 5);//
if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null) if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
{ {
wcsTask.taskStatus = 0;//创建状态 WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
wcsTask.updateTime = DateTime.Now; newTask.taskStatus = 0;//创建状态
wcsTask.currPointId = baseEquip.objid; newTask.updateTime = DateTime.Now;
wcsTask.currPointNo = baseEquip.equipNo; newTask.currPointId = baseEquip.objid;
wcsTask.nextPointId = AgvEquip.objid; newTask.currPointNo = baseEquip.equipNo;
wcsTask.nextPointNo = AgvEquip.equipNo; newTask.nextPointId = AgvEquip.objid;
wcsTask.endPointId = wmsBaseLocation.locationId; newTask.nextPointNo = AgvEquip.equipNo;
wcsTask.endPointNo = wmsBaseLocation.locationCode; newTask.endPointId = wmsBaseLocation.locationId;
newTask.endPointNo = wmsBaseLocation.locationCode;
if(wcsTask.fromFloorNo != 1) newTask.objid = StaticData.SnowId.NextId();
newTask.createTime = DateTime.Now;
if (newTask.fromFloorNo != 1)
{ {
wcsTask.taskType = 47; newTask.taskType = 47;
wcsTask.useFlag = 0; newTask.useFlag = 0;
} }
else else
{ {
wcsTask.taskType = 47;//?28? newTask.taskType = 47;//?28?
wcsTask.useFlag = 1; newTask.useFlag = 1;
} }
wmsBaseLocation.instockFlag = "1"; wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "2"; wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsBaseLocation);
dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete(); dbContext.Remove(wcsTask);
wcsTask.objid = StaticData.SnowId.NextId();
wcsTask.createTime = DateTime.Now; dbContext.Add(newTask);
dbContext.Add(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog); dbContext.Add(wcsTaskLog);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@ -204,20 +204,21 @@ namespace Khd.Core.Wcs.Wcs
continue; continue;
} }
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机 BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机
dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete(); dbContext.Remove(wcsTask);
wcsTask.objid = StaticData.SnowId.NextId(); WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
wcsTask.serialNo = SystemData.GetSerialNo(dbContext); newTask.objid = StaticData.SnowId.NextId();
wcsTask.nextPointId = nextEquip.objid; newTask.serialNo = SystemData.GetSerialNo(dbContext);
wcsTask.nextPointNo = nextEquip.equipNo; newTask.nextPointId = nextEquip.objid;
wcsTask.currPointId = baseEquip.objid; newTask.nextPointNo = nextEquip.equipNo;
wcsTask.currPointNo = baseEquip.equipNo; newTask.currPointId = baseEquip.objid;
wcsTask.fromFloorNo = FloorNo; newTask.currPointNo = baseEquip.equipNo;
wcsTask.taskType = 6;//成品出库 newTask.fromFloorNo = FloorNo;
wcsTask.floorNo = floor;//出库楼层 newTask.taskType = 6;//成品出库
wcsTask.taskStatus = 0; newTask.floorNo = floor;//出库楼层
wcsTask.createTime = DateTime.Now; newTask.taskStatus = 0;
dbContext.Add(wcsTask); newTask.createTime = DateTime.Now;
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); dbContext.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.WcsTaskLog.Add(wcsTaskLog); dbContext.WcsTaskLog.Add(wcsTaskLog);
dbContext.SaveChanges(); dbContext.SaveChanges();
} }
@ -227,6 +228,15 @@ namespace Khd.Core.Wcs.Wcs
} }
catch (Exception ex) catch (Exception ex)
{ {
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
}
catch
{
}
LogManager.Error(ex); LogManager.Error(ex);
} }
finally finally

@ -80,7 +80,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.orderId == wcsTask.orderId); var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.orderId == wcsTask.orderId);
if (wmsRawOutstock != null) if (wmsRawOutstock != null)
{ {
BaseEquip endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode); var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode);
if (endEquip != null) if (endEquip != null)
{ {
floor = endEquip.floorNo; floor = endEquip.floorNo;

@ -1,10 +1,14 @@
using Khd.Core.Domain.Dto.webapi; using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using System;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
@ -68,14 +72,272 @@ namespace Khd.Core.Wcs.Wcs
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip inEquip = StaticData.BaseEquip.First(t => t.objid == 36);
BaseEquip outEquip = StaticData.BaseEquip.First(t => t.objid == 37);
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 2);
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == EquipID);
while (true) while (true)
{ {
try try
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv //获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度agv
var taskList = dbContext.WcsTask.Where(t => t.nextPointId == EquipID).ToList(); var taskList = dbContext.WcsTask
.Where(t => t.useFlag == 1)
.Where(t => t.nextPointId == EquipID).OrderBy(t => t.createTime).ToList();
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
foreach (var item in taskList)
{
if (taskList.Where(t => t.taskStatus > 0).Where(t => t.objid != item.objid).Any())
{
LogManager.Info($"2楼AGV线程有其他任务正在执行跳过当前任务{item.objid}");
continue;
}
if (item.taskStatus == 0)//下发任务
{
BaseDictionary baseDictionary = StaticData.BaseDictionary.First(t => t.objid == item.taskType);
if (item.taskType == 50)
{
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
cmdStatus = 0,
taskId = item.objid,
useFlag = 1,
cmdType = item.taskType,
containerNo = item.containerNo,
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
currPointNo = lineEquip.agvPositionCode,
nextPointId = item.endPointId,
nextPointNo = inEquip.agvPositionCode,
};
var agvTask = new RequestAGVTaskDto
{
reqCode = wcsCmd.objid.ToString(),
positionCodePath = new List<Position>
{
new ()
{
positionCode=wcsCmd.currPointNo,
type="00"
},
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
},
taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
WcsCmdLog wcsCmdLog = CoreMapper.Map<WcsCmdLog>(wcsCmd);
dbContext.Add(wcsCmdLog);
dbContext.Add(wcsCmd);
dbContext.SaveChanges();
}
else
{
LogManager.Info("五楼Agv下发任务失败" + item.taskType + message);
}
}
else if (item.taskType == 51)
{
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
cmdStatus = 0,
taskId = item.objid,
useFlag = 1,
cmdType = item.taskType,
containerNo = item.containerNo,
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
currPointNo = lineEquip.agvPositionCode,
nextPointId = item.endPointId,
nextPointNo = outEquip.agvPositionCode,
};
var agvTask = new RequestAGVTaskDto
{
reqCode = wcsCmd.objid.ToString(),
positionCodePath = new List<Position>
{
new ()
{
positionCode=wcsCmd.currPointNo,
type="00"
},
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
},
taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程下发任务" + agvTask.ToJsonString() + "\n" + message);
Console.WriteLine(DateTime.Now + ":二楼AGV线程下发任务" + item.startPointNo + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
WcsCmdLog wcsCmdLog = CoreMapper.Map<WcsCmdLog>(wcsCmd);
dbContext.Add(wcsCmdLog);
dbContext.Add(wcsCmd);
dbContext.SaveChanges();
}
else
{
LogManager.Info("二楼Agv下发任务失败" + item.taskType + message);
}
}
else if (item.taskType == 52)
{
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
cmdStatus = 0,
taskId = item.objid,
useFlag = 1,
cmdType = item.taskType,
containerNo = item.containerNo,
createTime = DateTime.Now,
createBy = FloorNo + "楼AGV",
currPointId = item.currPointId,
currPointNo = lineEquip.agvPositionCode,
nextPointId = item.endPointId,
nextPointNo = lineEquip.agvPositionCode,
};
var agvTask = new RequestAGVTaskDto
{
reqCode = wcsCmd.objid.ToString(),
positionCodePath = new List<Position>
{
new ()
{
positionCode=wcsCmd.currPointNo,
type="00"
},
new ()
{
positionCode=wcsCmd.nextPointNo,
type="00"
}
},
taskTyp = baseDictionary.dicValue,
ctnrTyp = "2",
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/genAgvSchedulingTask", message);
var reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
LogManager.Info("二楼AGV线程继续任务" + item.objid + "," + item.startPointNo + "," + item.endPointNo);
Console.WriteLine(DateTime.Now + ":二楼AGV线程继续任务" + item.startPointNo + "," + item.endPointNo);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
dbContext.Update(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
WcsCmdLog wcsCmdLog = CoreMapper.Map<WcsCmdLog>(wcsCmd);
dbContext.Add(wcsCmdLog);
dbContext.Add(wcsCmd);
dbContext.SaveChanges();
}
else
{
LogManager.Info("二楼Agv下发任务失败" + item.taskType + message);
}
}
}
else
{
WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid);
if (wcsCmd != null)
{
LogManager.Info("二楼AGV线程完成任务" + item.objid);
if (wcsCmd.cmdStatus == 3)
{
var agvTask = new RequestAGVTaskDto
{
reqCode = StaticData.SnowId.NextId().ToString(),
taskCode = wcsCmd.taskCode
};
string message = JsonConvert.SerializeObject(agvTask);
string result = HttpHelper.SendPostMessage(baseEquip.serverIp, baseEquip.serverPort.Value, "rcms/services/rest/hikRpcService/continueTask", message);
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject<ReponseMessage>(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
wcsCmd.cmdStatus = 4;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.Update(wcsCmd);
dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 4 });
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 4 });
dbContext.SaveChanges();
}
}
else if (wcsCmd.cmdStatus == 5)
{
if (item.taskType == 50)
{
dbContext.Remove(item);
dbContext.Remove(wcsCmd);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
}
else if (item.taskType == 51)
{
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.endPointId);
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.instockFlag = "0";
wmsBaseLocation.containerCode = item.containerNo;
dbContext.Update(wmsBaseLocation);
dbContext.Remove(item);
dbContext.Remove(wcsCmd);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
}
else if (item.taskType == 52)
{
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.instockFlag = "0";
wmsBaseLocation.containerCode = null;
dbContext.Update(wmsBaseLocation);
item.taskStatus = 6;
dbContext.Update(item);
dbContext.Remove(wcsCmd);
dbContext.SaveChanges();
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
dbContext.WcsCmdLog.Where(t => t.taskId == item.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
}
}
}
}
}
} }
catch (Exception ex) catch (Exception ex)
{ {

@ -1,11 +1,11 @@
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global; using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging; using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus; using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs namespace Khd.Core.Wcs.Wcs
{ {
/// <summary> /// <summary>
@ -15,7 +15,7 @@ namespace Khd.Core.Wcs.Wcs
{ {
List<BasePlcpoint> ScanPoint { get; set; }//点位信息 List<BasePlcpoint> ScanPoint { get; set; }//点位信息
private readonly IHost _host; private readonly IHost _host;
private readonly Plc.S7.Plc _plc; private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID; private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineWcsrun; private readonly BasePlcpoint LineWcsrun;
private readonly BasePlcpoint LineSignal; private readonly BasePlcpoint LineSignal;
@ -65,46 +65,53 @@ namespace Khd.Core.Wcs.Wcs
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip inEquip = StaticData.BaseEquip.First(t => t.objid == 36);
BaseEquip outEquip = StaticData.BaseEquip.First(t=>t.objid==37);
BaseEquip lineEquip = StaticData.BaseEquip.First(t=>t.objid==2);
BaseEquip agvEquip = StaticData.BaseEquip.First(t=>t.objid==8);
while (true) while (true)
{ {
try try
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//入库任务 //入库任务
var rfid = this._plc.Read(LineRFID.plcpointAddress); var rfid = this._plc.ReadRFID(LineRFID.plcpointAddress);
var isSignal = this._plc.Read(LineSignal.plcpointAddress); var isSignal = this._plc.Read(LineSignal.plcpointAddress);
var isPallet = this._plc.Read(LineIsPallet.plcpointAddress); if (rfid != null && isSignal != null)
if (rfid != null && isSignal != null && isPallet != null)
{ {
//正常读到输送线信息 有到位信号,并且有托盘,获取条码信息 //正常读到输送线信息 有到位信号,并且有托盘,获取条码信息
if (Convert.ToInt32(isSignal) > 0 && Convert.ToInt32(isPallet) == 1) if (Convert.ToInt32(isSignal) == 1)
{ {
//获取条码信息 //获取条码信息
var palletNo = Convert.ToString(rfid); var palletNo = Convert.ToString(rfid);
//获取任务 BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo);
var wcsTask = StaticData.WcsTask.Where(t => t.nextPointId == 2 && t.taskType == 3 && t.containerNo == palletNo).FirstOrDefault(); var wcsTask = dbContext.WcsTask.OrderBy(t => t.createTime)
//判断是否为出库任务 .FirstOrDefault(t => t.containerNo == palletNo && t.nextPointId == baseEquip.objid);
if (wcsTask != null) if (wcsTask != null)
{ {
var wmsProductOutstock = dbContext.WmsProductOutstock.Where(t => t.saleOrderId == wcsTask.orderId).FirstOrDefault(); if (wcsTask.taskStatus == 5)//入库,提升机任务是完成状态
if (wmsProductOutstock != null)
{ {
string endStationCode = wmsProductOutstock.endStationCode; dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete();
//找到目的地楼层 WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
int floorNo=0; newTask.taskStatus = 0;
//下发去提升机的去向 newTask.objid = StaticData.SnowId.NextId();
this._plc.Write(LineWcsrun.plcpointAddress, 1); newTask.nextPointId=agvEquip.objid;
//更新任务 newTask.nextPointNo=agvEquip.equipNo;
dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask() newTask.createTime = DateTime.Now;
{ newTask.updateTime = DateTime.Now;
currPointId = 2, newTask.endPointId=inEquip.objid;
currPointNo = "F02", newTask.endPointNo=inEquip.equipNo;
floorNo = floorNo, newTask.containerNo=palletNo;
nextPointId = 6, newTask.currPointId=lineEquip.objid;
nextPointNo = "T01", newTask.currPointNo=lineEquip.equipNo;
updateTime = DateTime.Now, newTask.taskType=2;
updateBy = "二楼接驳位", newTask.useFlag=1;
}); dbContext.WcsTask.Add(newTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
LogManager.Info("二楼接驳位生成任务入库成功,托盘号:" + palletNo);
Console.WriteLine(DateTime.Now + ":二楼接驳位生成任务入库成功,托盘号:" + palletNo);
} }
} }
} }
@ -112,6 +119,16 @@ namespace Khd.Core.Wcs.Wcs
} }
catch (Exception ex) catch (Exception ex)
{ {
try
{
this._plc = new Plc.S7.Plc(this._plc.CPU, this._plc.IP, this._plc.Port, this._plc.Rack, this._plc.Slot);
this._plc.Open();
}
catch
{
}
LogManager.Error(ex); LogManager.Error(ex);
} }
finally finally
@ -120,23 +137,5 @@ namespace Khd.Core.Wcs.Wcs
} }
} }
} }
//获取输送线上的任务
public WcsTask GetTask(string containerNo, int floorNo, string equipNo)
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var wcsTask = new WcsTask();
var wareHouseList = StaticData.WmsBaseWarehouse.ToList();
try
{
wcsTask = StaticData.WcsTask.Where(t => t.currPointNo == equipNo).FirstOrDefault();
}
catch (Exception ex)
{
LogManager.Info(floorNo + "楼接驳位异常" + ex.Message);
throw;
}
return wcsTask;
}
} }
} }

@ -6,14 +6,14 @@
//"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=175.27.215.92;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khd2024;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"PlcConfigs": [ "PlcConfigs": [
{ //{
"IP": "192.168.2.30", // "IP": "192.168.2.30",
"Port": 102, //102 // "Port": 102, //102
"CpuType": 40, // "CpuType": 40,
"Rack": 0, // "Rack": 0,
"Slot": 1, // "Slot": 1,
"Code": 0 // "Code": 0
}, //},
{ {
"IP": "192.168.2.31", "IP": "192.168.2.31",
"Port": 102, //102 "Port": 102, //102
@ -22,14 +22,14 @@
"Slot": 1, "Slot": 1,
"Code": 1 "Code": 1
}, },
{ //{
"IP": "192.168.2.220", // "IP": "192.168.2.220",
"Port": 102, //102 // "Port": 102, //102
"CpuType": 40, // "CpuType": 40,
"Rack": 0, // "Rack": 0,
"Slot": 1, // "Slot": 1,
"Code": 2 // "Code": 2
} //}
], ],
"PLCSetting": { "PLCSetting": {
"Mode": "0", "Mode": "0",

@ -584,7 +584,7 @@
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
FontSize="20" FontSize="20"
Header="起始站点" Header="起始站点"
IsReadOnly="True" /> IsReadOnly="True"/>
<DataGridTextColumn <DataGridTextColumn
Width="300*" Width="300*"
Binding="{Binding endPointNo,Converter={StaticResource EquipConverter}}" Binding="{Binding endPointNo,Converter={StaticResource EquipConverter}}"

@ -3,8 +3,9 @@
//mysql //mysql
//"DefaultConnection": "server=106.12.13.113;port=3306;database=khd_jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True" //"DefaultConnection": "server=106.12.13.113;port=3306;database=khd_jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True"
//khd //khd
"DefaultConnection": "server=172.16.12.100;port=3306;database=hwjy-cloud;uid=kehaida;pwd=khdrkjy2024...;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
//"DefaultConnection": "server=106.12.13.113;port=3336;database=khd_jyhb;uid=khd;pwd=khd@123;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True" //"DefaultConnection": "server=106.12.13.113;port=3336;database=khd_jyhb;uid=khd;pwd=khd@123;charset='utf8';persistsecurityinfo=True;SslMode=none;Allow User Variables=True"
"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True" //"DefaultConnection": "server=localhost;port=3306;database=jyhb;uid=root;pwd=root;charset='utf8';persistsecurityinfo=True;SslMode=None;Allow User Variables=True"
}, },
"PlcConfigs": [ "PlcConfigs": [
{ {

Loading…
Cancel
Save