From d8cb081c2ecb40681a9cf1fa1e5c48c6fb56b3e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com>
Date: Mon, 8 Jul 2024 11:19:36 +0800
Subject: [PATCH] 20240708
---
src/Khd.Core.Api/appsettings.json | 23 +-
.../WcsTaskApplication.cs | 60 ++--
.../Dto/webapi/AgvCompeleted.cs | 6 +-
src/Khd.Core.Plc/S7/PLCHelpers.cs | 1 +
src/Khd.Core.Plc/StaticPlcHelper.cs | 1 +
src/Khd.Core.Wcs/Khd.Core.Wcs.csproj | 11 +-
src/Khd.Core.Wcs/MainCentralControl.cs | 19 +-
src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 21 +-
src/Khd.Core.Wcs/Wcs/FirstFloor.cs | 10 +-
src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 111 +++++---
src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs | 34 +--
src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 64 +++--
src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs | 80 +++---
src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs | 2 +-
src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs | 266 +++++++++++++++++-
src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs | 89 +++---
src/Khd.Core.Wcs/appsettings.json | 32 +--
src/Khd.Core.Wpf/Form/FormBoardT.xaml | 2 +-
src/Khd.Core.Wpf/appsettings.json | 3 +-
19 files changed, 579 insertions(+), 256 deletions(-)
diff --git a/src/Khd.Core.Api/appsettings.json b/src/Khd.Core.Api/appsettings.json
index 73658d4..344b949 100644
--- a/src/Khd.Core.Api/appsettings.json
+++ b/src/Khd.Core.Api/appsettings.json
@@ -1,19 +1,20 @@
{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft": "Warning",
- "Microsoft.Hosting.Lifetime": "Information"
- },
- "AppSettings": {
- "SiteCode": "999"
- }
- },
+ //"Logging": {
+ // "LogLevel": {
+ // "Default": "Information",
+ // "Microsoft": "Warning",
+ // "Microsoft.Hosting.Lifetime": "Information"
+ // },
+ // "AppSettings": {
+ // "SiteCode": "999"
+ // }
+ //},
"AllowedHosts": "*",
"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=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": {
"SigningKey": "3c41f60c-1d12-11ec-890d-00163e1b8678",
diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs
index 9764269..262cf54 100644
--- a/src/Khd.Core.Application/WcsTaskApplication.cs
+++ b/src/Khd.Core.Application/WcsTaskApplication.cs
@@ -65,7 +65,9 @@ namespace Khd.Core.Application
wcscmd.sendFlag = 1;
wcsTask.taskStatus = 2;
_dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 2 });
_dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 2 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
@@ -76,7 +78,9 @@ namespace Khd.Core.Application
wcscmd.cmdStatus = 4;
wcsTask.taskStatus = 4;
_dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 4 });
_dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 4 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
@@ -88,7 +92,9 @@ namespace Khd.Core.Application
wcscmd.cmdStatus = 3;
wcsTask.taskStatus = 3;
_dbContext.WcsCmd.Update(wcscmd);
+ _dbContext.WcsCmdLog.Where(t=>t.objid==wcscmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 3 });
_dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
_dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
@@ -96,14 +102,34 @@ namespace Khd.Core.Application
//放货完成
if (agvCallbackDto.method.ToLower() == "end")
{
- wcscmd.cmdStatus = 5;
- wcscmd.sendFlag = 1;
- wcsTask.taskStatus = 5;
- _dbContext.WcsCmd.Update(wcscmd);
- _dbContext.WcsTask.Update(wcsTask);
- _dbContext.SaveChanges();
- reponseagvCallbackDto.code = "0";
- reponseagvCallbackDto.message = "成功";
+ if (wcsTask.nextPointId !=10)
+ {
+ wcscmd.cmdStatus = 5;
+ wcscmd.sendFlag = 1;
+ wcsTask.taskStatus = 5;
+
+ _dbContext.WcsCmd.Update(wcscmd);
+ _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
{
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- string stationId = agvCompeletedRequest.stationNo;
- BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == stationId);
+ BaseEquip baseEquip = _dbContext.BaseEquip.FirstOrDefault(t => t.equipNo == agvCompeletedRequest.endStationCode);
if (baseEquip != null)
{
var wcsCmd = _dbContext.WcsCmd.Where(t => t.nextPointId == baseEquip.objid).FirstOrDefault();
@@ -163,10 +188,12 @@ namespace Khd.Core.Application
{
agvCompeletedResponse.code = "0";
agvCompeletedResponse.message = "成功";
- wcsCmd.cmdStatus = 6;
- wcsTask.taskStatus = 6;
+ wcsCmd.cmdStatus = 7;
+ wcsTask.taskStatus = 7;
_dbContext.WcsCmd.Update(wcsCmd);
+ _dbContext.WcsCmdLog.Where(t=>t.objid==wcsCmd.objid).Update(a=>new WcsCmdLog { cmdStatus = 7 });
_dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 7 });
_dbContext.SaveChanges();
}
}
@@ -201,14 +228,15 @@ namespace Khd.Core.Application
try
{
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- WcsTask wcsTask = _dbContext.WcsTask
- .Where(t => t.materialId == taskContinue.materialId)
+ var wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 47)
+ .Where(t=>t.masterId==taskContinue.materialId)
.FirstOrDefault();
if (wcsTask != null)
{
wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(a => new WcsTaskLog { useFlag = 1 });
_dbContext.SaveChanges();
compeletedResponse.code = "0";
compeletedResponse.message = "成功";
@@ -239,13 +267,13 @@ namespace Khd.Core.Application
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
WcsTask wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 28)
- .Where(t=>t.startPointNo==taskReturn.PointNo)
- .Where(t => t.materialId == taskReturn.materialId)
+ .Where(t=>t.endPointNo==taskReturn.endStationCode)
.FirstOrDefault();
if (wcsTask != null)
{
wcsTask.useFlag = 1;
_dbContext.WcsTask.Update(wcsTask);
+ _dbContext.WcsTask.Where(t=>t.objid==wcsTask.objid).Update(a=>new WcsTask { useFlag = 1 });
_dbContext.SaveChanges();
compeletedResponse.code = "0";
compeletedResponse.message = "成功";
diff --git a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
index c73435e..fc8f9a4 100644
--- a/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
+++ b/src/Khd.Core.Domain/Dto/webapi/AgvCompeleted.cs
@@ -9,7 +9,7 @@ namespace Khd.Core.Domain.Dto.webapi
public class AgvCompeleted
{
public string stationId { get; set; }
- public string stationNo { get; set; }
+ public string endStationCode { get; set; }
public string stationState { get; set; }
public string method { get; set; }
}
@@ -17,13 +17,13 @@ namespace Khd.Core.Domain.Dto.webapi
public class TaskContinue
{
public long? materialId { get; set; }
- public string PointNo { get; set; }
+ public string endStationCode { get; set; }
}
public class TaskReturn
{
public long? materialId { get; set; }
- public string PointNo { get; set; }
+ public string endStationCode { get; set; }
}
public class AgvCompeletedResponse
diff --git a/src/Khd.Core.Plc/S7/PLCHelpers.cs b/src/Khd.Core.Plc/S7/PLCHelpers.cs
index 0b224b8..380d211 100644
--- a/src/Khd.Core.Plc/S7/PLCHelpers.cs
+++ b/src/Khd.Core.Plc/S7/PLCHelpers.cs
@@ -261,5 +261,6 @@ namespace Khd.Core.Plc.S7
return package.ToArray();
}
+
}
}
diff --git a/src/Khd.Core.Plc/StaticPlcHelper.cs b/src/Khd.Core.Plc/StaticPlcHelper.cs
index bd5549a..b42b890 100644
--- a/src/Khd.Core.Plc/StaticPlcHelper.cs
+++ b/src/Khd.Core.Plc/StaticPlcHelper.cs
@@ -52,6 +52,7 @@ namespace Khd.Core.Plc
return Encoding.UTF8.GetString(result).Replace("\0", "").Replace("$", "").Trim();
}
+
///
/// 电气写入点位高低位转换
///
diff --git a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
index 3887259..b97046c 100644
--- a/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
+++ b/src/Khd.Core.Wcs/Khd.Core.Wcs.csproj
@@ -29,13 +29,6 @@
-
-
- ..\..\dll\S7.Net.dll
- True
-
-
-
PreserveNewest
@@ -46,4 +39,8 @@
+
+
+
+
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index 0faa19f..cbbd6c9 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -36,11 +36,13 @@ namespace Khd.Core.Wcs
///
public void Start()
{
- try
- { //加载配置项
+
+ try
+ {
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
+ //加载配置项
//设置程序启动时清空点位的数据=>0为 Int16位
QingKongDianWei = StaticPlcHelper.GetValue("2", "0");
//设置默认处理完成=>1为 Int16位
@@ -51,6 +53,7 @@ namespace Khd.Core.Wcs
StaticData.BaseEquip = dbContext.BaseEquip.ToList();
StaticData.basePlcs = dbContext.BasePlc.ToList();
StaticData.BaseDictionary = dbContext.BaseDictionary.ToList();
+
foreach (var plcConfig in StaticData.PlcConfigs)
{
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);
try
{
- plc.Open();
+ //plc.Open();
Console.WriteLine(DateTime.Now + ":连接到PLC:" + plcConfig.IP);
}
catch
@@ -69,8 +72,8 @@ namespace Khd.Core.Wcs
StaticData.PlcDic.TryAdd(plcConfig.Code, plc);
}
}
- //SystemTimer systemTimer = new SystemTimer(_host);
- //systemTimer.Start();
+ SystemTimer systemTimer = new SystemTimer(_host);
+ systemTimer.Start();
//创建任务
CreateTaskByRecord createTaskByRecord = new(_host, "");
createTaskByRecord.StartPoint();
@@ -124,9 +127,9 @@ namespace Khd.Core.Wcs
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[2], FifthFloorAgvEquip.floorNo.Value, FifthFloorAgvEquip.equipNo);
//fifthFloorAGV.StartPoint();
- //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.StartPoint();
+ var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 11).First();
+ FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value, FifthFloorBearAgvEquip.equipNo);
+ fiveFloorBearAgv.StartPoint();
}
catch (Exception ex)
{
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index 93875a5..6266d11 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -62,8 +62,8 @@ namespace Khd.Core.Wcs.Wcs
///
public void StartPoint()
{
- //var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
- //createBearAgvReturnThread.Start();
+ var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
+ createBearAgvReturnThread.Start();
//var createRawInWareTaskThread = new Thread(CreateRawInWareTaskLogic);
//createRawInWareTaskThread.Start();
@@ -348,12 +348,11 @@ namespace Khd.Core.Wcs.Wcs
try
{
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")
- .ToList();
- if (wmsRawReturns != null && wmsRawReturns.Count > 0)
+ .FirstOrDefault();
+ if (wmsRawReturn != null)
{
- WmsRawReturn wmsRawReturn = wmsRawReturns.First();
if (wmsRawReturn.executeStatus == "0")
{
//任务未开始Status=0
@@ -389,6 +388,8 @@ namespace Khd.Core.Wcs.Wcs
};
wmsRawReturn.executeStatus = "1";
dbContext.Add(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
dbContext.Update(wmsRawReturn);
dbContext.SaveChanges();
}
@@ -1108,13 +1109,5 @@ namespace Khd.Core.Wcs.Wcs
}
- //五楼原材料出库,完成
- //五楼原材料出库到组装区,完成
- //五楼成品出库完成
-
- //五楼原材料返库待完成
- //五楼背板安装--半成品基本完成,待完善
- //五楼原材料--背板安装待完成
- //五楼原材料--柜体验收待完成
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
index cd6a304..c579aab 100644
--- a/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
+++ b/src/Khd.Core.Wcs/Wcs/FirstFloor.cs
@@ -181,11 +181,11 @@ namespace Khd.Core.Wcs.Wcs
materialId = material.materialId,
qty = Convert.ToInt32(material.bindAmount),
startPointId = F01,
- startPointNo = "F01",
+ startPointNo = "TSJ_01",
currPointId = F01,
- currPointNo = "F01",
+ currPointNo = "TSJ_01",
nextPointId = T01,
- nextPointNo = "T01",
+ nextPointNo = "TSJ_01",
endPointId = warehouseId,
fromFloorNo = 1,
floorNo = TargetFloor.warehouseFloor,
@@ -208,9 +208,9 @@ namespace Khd.Core.Wcs.Wcs
if (task.nextPointId != T01)
{
task.currPointId = F01;
- task.currPointNo = "F01";
+ task.currPointNo = "TSJ_01";
task.nextPointId = T01;
- task.nextPointNo = "T01";
+ task.nextPointNo = "TSJ_01";
task.taskStatus = 0;
task.updateBy = "一楼接驳位线程";
task.updateTime = DateTime.Now;
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index cefcc86..ee9c260 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -4,10 +4,13 @@ using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
+using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
+using System.Diagnostics;
+using Thrift.Protocol;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -75,10 +78,6 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.useFlag == 1)
.Where(t => t.nextPointId == agvID).OrderBy(t => t.createTime).ToList();
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
- if (taskList.Count == 0)
- {
- LogManager.Info(FloorNo + "楼AGV无任务");
- }
foreach (var item in taskList)
{
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(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -202,6 +202,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -262,6 +263,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -320,6 +322,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -378,6 +381,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -437,6 +441,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -495,6 +500,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -553,6 +559,7 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发任务成功:" + message);
wcsCmd.taskCode = reponseMessage.data;
wcsCmd.cmdStatus = 1;
item.taskStatus = 1;
@@ -574,6 +581,7 @@ namespace Khd.Core.Wcs.Wcs
WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid);
if (wcsCmd != null)
{
+
if (wcsCmd.cmdStatus == 3)
{
var agvTask = new RequestAGVTaskDto
@@ -586,6 +594,7 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
+ LogManager.Info("五楼Agv下发继续任务成功:" + message);
wcsCmd.cmdStatus = 4;
dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 4 });
dbContext.Update(wcsCmd);
@@ -596,6 +605,9 @@ namespace Khd.Core.Wcs.Wcs
}
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)
{
WmsBaseLocation fromBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
@@ -619,6 +631,10 @@ namespace Khd.Core.Wcs.Wcs
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(toBaseLocation);
dbContext.SaveChanges();
@@ -664,8 +680,8 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 38)//出库
{
- var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId );
- var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t=> t.executeStatus == "1" && t.locationCode == item.currPointNo);
+ var wmsProductOutstockDetails = dbContext.WmsProductOutstockDetail.Where(t => t.productOutstockId == item.orderId);
+ var wmsProductOutstockDetail = wmsProductOutstockDetails.FirstOrDefault(t => t.executeStatus == "1" && t.locationCode == item.currPointNo);
var wmsProductOutstock = dbContext.WmsProductOutstock.FirstOrDefault(t => t.productOutstockId == item.orderId);
if (wmsProductOutstockDetail != null && wmsProductOutstock != null)
{
@@ -687,20 +703,25 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(wmsBaseLocation);
dbContext.WmsProductStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
BaseEquip floorLineEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == 5);
- item.nextPointId = floorLineEquip.objid;
- item.nextPointNo = floorLineEquip.equipNo;
- item.fromFloorNo = 5;
- item.floorNo = 1;
- item.taskStatus = 6;
+ WcsTask newTask = CoreMapper.Map(item);
+ newTask.createTime=DateTime.Now;
+ newTask.nextPointId = floorLineEquip.objid;
+ newTask.nextPointNo = floorLineEquip.equipNo;
+ newTask.fromFloorNo = 5;
+ newTask.floorNo = 1;
+ newTask.taskStatus = 6;
+ newTask.objid=StaticData.SnowId.NextId();
lineEquip.equipStatus = 0;
dbContext.Update(lineEquip);
- dbContext.Update(item);
+ dbContext.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(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.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)//原材料到背板安装
{
@@ -712,11 +733,11 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsBaseLocation);
dbContext.WmsRawStock.Where(t => t.locationCode == wmsBaseLocation.locationCode).Delete();
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
- dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
+ dbContext.WcsCmd.Remove(wcsCmd);
+ dbContext.WcsTask.Remove(item);
+ 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 });
- dbContext.SaveChanges();
}
else if (item.taskType == 34)//半成品入库
{
@@ -768,8 +789,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(startEquip);
dbContext.Add(wmsProductStock);
dbContext.Update(wmsBaseLocation);
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
- dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
+ dbContext.WcsCmd.Remove(wcsCmd);
+ dbContext.WcsTask.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.SaveChanges();
@@ -779,7 +800,6 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 46)//该任务结束后,立刻生成一个新的返库任务,但是是否使用标志未0,等待mes通知
{
- WcsTask newTask = CoreMapper.Map(item);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.First(t => t.locationId == item.startPointId);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.instockFlag = "1";
@@ -795,24 +815,26 @@ namespace Khd.Core.Wcs.Wcs
wmsRawStock.updateBy = "WCS";
dbContext.Update(wmsRawStock);
dbContext.Update(wmsBaseLocation);
- dbContext.WcsTask.Where(t => t.objid == item.objid).Delete();
- 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.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
- item.objid = StaticData.SnowId.NextId();
- item.currPointId = item.endPointId;
- item.currPointNo = item.endPointNo;
- item.endPointId = item.startPointId;
- item.endPointNo = item.startPointNo;
- item.startPointId = item.currPointId;
- item.startPointNo = item.currPointNo;
- item.taskType = 28;
- item.taskStatus = 0;
- item.useFlag = 0;
- dbContext.Add(item);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(item);
+ WcsTask newTask = CoreMapper.Map(item);
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.currPointId = item.endPointId;
+ newTask.currPointNo = item.endPointNo;
+ newTask.endPointId = item.startPointId;
+ newTask.endPointNo = item.startPointNo;
+ newTask.startPointId = item.currPointId;
+ newTask.createTime = DateTime.Now;
+ newTask.startPointNo = item.currPointNo;
+ newTask.taskType = 28;
+ newTask.taskStatus = 0;
+ newTask.useFlag = 0;
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
+ dbContext.Add(newTask);
dbContext.Add(wcsTaskLog);
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(wmsRawStock);
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.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)
{
@@ -883,11 +904,11 @@ namespace Khd.Core.Wcs.Wcs
};
dbContext.Add(wmsRawStock);
dbContext.Add(wmsBaseLocation);
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
- 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 == item.objid).Update(t => new WcsTaskLog { taskStatus = 6 });
+ dbContext.Remove(item);
+ dbContext.Remove(wcsCmd);
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 });
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
index 84c609f..9f30ce0 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorBearAgv.cs
@@ -3,6 +3,7 @@ using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
+using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
@@ -129,6 +130,8 @@ namespace Khd.Core.Wcs.Wcs
var reponseMessage = JsonConvert.DeserializeObject(result);
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.cmdStatus = 1;
item.taskStatus = 1;
@@ -151,7 +154,7 @@ namespace Khd.Core.Wcs.Wcs
WcsCmd? wcsCmd = dbContext.WcsCmd.FirstOrDefault(t => t.taskId == item.objid);
if (wcsCmd != null)
{
- if (wcsCmd.cmdStatus == 3)
+ if (wcsCmd.cmdStatus == 4)
{
var agvTask = new RequestAGVTaskDto
{
@@ -163,23 +166,19 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
if (reponseMessage != null && reponseMessage.message == "成功")
{
- 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.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 });
+ LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
+ Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
+ dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmd() { cmdStatus = 5 });
+ 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();
}
}
- 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)
{
+ LogManager.Info("五楼背负式AGV线程完成任务" + wcsCmd.objid);
+ Console.WriteLine(DateTime.Now + ":五楼背负式AGV线程完成任务" + wcsCmd.objid);
var agvTask = new RequestAGVTaskDto
{
reqCode = StaticData.SnowId.NextId().ToString(),
@@ -190,10 +189,6 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
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)
{
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.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 });
+
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index 8e8d86f..4706b8f 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -13,6 +13,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using System;
+using Thrift.Protocol;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -68,11 +69,11 @@ namespace Khd.Core.Wcs.Wcs
public void StartPoint()
{
- //Thread FlowPointThread = new Thread(MonitorInLocatorPoint);
- //FlowPointThread.Start();
+ Thread FlowPointThread = new Thread(MonitorInLocatorPoint);
+ FlowPointThread.Start();
- //Thread FlowCTUInWareThread = new Thread(MonitorInWare);
- //FlowCTUInWareThread.Start();
+ Thread FlowCTUInWareThread = new Thread(MonitorInWare);
+ FlowCTUInWareThread.Start();
Thread HeartThread = new Thread(HeartLogic);
HeartThread.Start();
@@ -90,13 +91,13 @@ namespace Khd.Core.Wcs.Wcs
try
{
flag = !flag;
- this._plc.WriteToPoint(heartPoint.plcpointAddress,flag.ToString(),heartPoint.plcpointLength.ToString());
+ this._plc.WriteToPoint(heartPoint.plcpointAddress, flag.ToString(), heartPoint.plcpointLength.ToString());
}
catch
{
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();
}
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))
{
@@ -420,9 +421,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 1 });
WcsCmdLog wcsCmdLog = CoreMapper.Map(wcsCmd);
dbContext.Add(wcsCmdLog);
- WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
- wcsOutstockLock.qty++;
- dbContext.Update(wcsOutstockLock);
dbContext.WcsCmd.Add(wcsCmd);
dbContext.SaveChanges();
}
@@ -531,6 +529,8 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
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.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 });
@@ -556,6 +556,8 @@ namespace Khd.Core.Wcs.Wcs
ReponseMessage? reponseMessage = JsonConvert.DeserializeObject(result);
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.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 });
@@ -570,6 +572,8 @@ namespace Khd.Core.Wcs.Wcs
}
else if (wcsCmd.cmdStatus == 5)
{
+ LogManager.Info("五楼CTU线程完成任务" + wcsCmd.objid);
+ Console.WriteLine(DateTime.Now + ":五楼CTU线程完成任务" + wcsCmd.objid);
if (item.taskType == 30)//出库任务
{
WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.taskCode == item.objid.ToString());
@@ -578,23 +582,24 @@ namespace Khd.Core.Wcs.Wcs
wmsRawOutstockDetail.executeStatus = "2";
wmsRawOutstockDetail.updateDate = DateTime.Now;
dbContext.Update(wmsRawOutstockDetail);
- WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
+ }
+
+ WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
.First(t => t.locationId == item.startPointId && t.warehouseFloor == 5);
- wmsBaseLocation.outstockFlag = "0";
- wmsBaseLocation.locationStatus = "1";
- wmsBaseLocation.locationStatus = "2";
- dbContext.Update(wmsBaseLocation);
- dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" });
- dbContext.WcsCmd.Where(t => t.objid == wcsCmd.objid).Delete();
- dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Delete();
- dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
- dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
- dbContext.SaveChanges();
- int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 30 && t.taskStatus != 6).Count();
- if (wcsTaskCount == 0)
- {
- this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
- }
+ wmsBaseLocation.outstockFlag = "0";
+ wmsBaseLocation.locationStatus = "1";
+ wmsBaseLocation.locationStatus = "2";
+ dbContext.Update(wmsBaseLocation);
+ dbContext.WmsRawOutstockDetail.Where(t => t.locationCode == wmsBaseLocation.locationCode).Update(t => new WmsRawOutstockDetail { executeStatus = "2" });
+ dbContext.Remove(wcsCmd);
+ dbContext.WcsTask.Where(t => t.objid == item.objid).Update(t => new WcsTask() { taskStatus = 6 });
+ dbContext.SaveChanges();
+ dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog() { cmdStatus = 6 });
+ 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();
+ if (wcsTaskCount == 0)
+ {
+ this._plc.WriteToPoint(this.canReceive.plcpointAddress, "1", this.canReceive.plcpointLength?.ToString());
}
}
else if (item.taskType == 29)//入库任务
@@ -606,9 +611,10 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.ContainerStatus = "1";
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.WcsTask.Where(t => t.objid == item.objid).Delete();
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
lock (SystemData.outStockLock)
{
@@ -619,9 +625,9 @@ namespace Khd.Core.Wcs.Wcs
wcsOutstockLock.qty = 0;
wcsOutstockLock.boxStatus = 0;
dbContext.Update(wcsOutstockLock);
+ dbContext.SaveChanges();
}
}
- dbContext.SaveChanges();
}
}
}
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
index 5bc7dfa..c0e46c3 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorPoint.cs
@@ -20,7 +20,7 @@ namespace Khd.Core.Wcs.Wcs
{
List ScanPoint { get; set; }//点位信息
private readonly IHost _host;
- private readonly Plc.S7.Plc _plc;
+ private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineWcsrun;
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);//
if (wmsBaseLocations.Count > 0 && wmsBaseLocation != null)
{
- wcsTask.taskStatus = 0;//创建状态
- wcsTask.updateTime = DateTime.Now;
- wcsTask.currPointId = baseEquip.objid;
- wcsTask.currPointNo = baseEquip.equipNo;
- wcsTask.nextPointId = AgvEquip.objid;
- wcsTask.nextPointNo = AgvEquip.equipNo;
- wcsTask.endPointId = wmsBaseLocation.locationId;
- wcsTask.endPointNo = wmsBaseLocation.locationCode;
-
- if(wcsTask.fromFloorNo != 1)
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.taskStatus = 0;//创建状态
+ newTask.updateTime = DateTime.Now;
+ newTask.currPointId = baseEquip.objid;
+ newTask.currPointNo = baseEquip.equipNo;
+ newTask.nextPointId = AgvEquip.objid;
+ newTask.nextPointNo = AgvEquip.equipNo;
+ newTask.endPointId = wmsBaseLocation.locationId;
+ newTask.endPointNo = wmsBaseLocation.locationCode;
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.createTime = DateTime.Now;
+ if (newTask.fromFloorNo != 1)
{
- wcsTask.taskType = 47;
- wcsTask.useFlag = 0;
+ newTask.taskType = 47;
+ newTask.useFlag = 0;
}
else
{
- wcsTask.taskType = 47;//?28?
- wcsTask.useFlag = 1;
+ newTask.taskType = 47;//?28?
+ newTask.useFlag = 1;
}
-
wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "2";
dbContext.Update(wmsBaseLocation);
- dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete();
- wcsTask.objid = StaticData.SnowId.NextId();
- wcsTask.createTime = DateTime.Now;
- dbContext.Add(wcsTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Remove(wcsTask);
+
+ dbContext.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
@@ -204,20 +204,21 @@ namespace Khd.Core.Wcs.Wcs
continue;
}
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机
- dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete();
- wcsTask.objid = StaticData.SnowId.NextId();
- wcsTask.serialNo = SystemData.GetSerialNo(dbContext);
- wcsTask.nextPointId = nextEquip.objid;
- wcsTask.nextPointNo = nextEquip.equipNo;
- wcsTask.currPointId = baseEquip.objid;
- wcsTask.currPointNo = baseEquip.equipNo;
- wcsTask.fromFloorNo = FloorNo;
- wcsTask.taskType = 6;//成品出库
- wcsTask.floorNo = floor;//出库楼层
- wcsTask.taskStatus = 0;
- wcsTask.createTime = DateTime.Now;
- dbContext.Add(wcsTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Remove(wcsTask);
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.serialNo = SystemData.GetSerialNo(dbContext);
+ newTask.nextPointId = nextEquip.objid;
+ newTask.nextPointNo = nextEquip.equipNo;
+ newTask.currPointId = baseEquip.objid;
+ newTask.currPointNo = baseEquip.equipNo;
+ newTask.fromFloorNo = FloorNo;
+ newTask.taskType = 6;//成品出库
+ newTask.floorNo = floor;//出库楼层
+ newTask.taskStatus = 0;
+ newTask.createTime = DateTime.Now;
+ dbContext.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(newTask);
dbContext.WcsTaskLog.Add(wcsTaskLog);
dbContext.SaveChanges();
}
@@ -227,6 +228,15 @@ namespace Khd.Core.Wcs.Wcs
}
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);
}
finally
diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
index 1de147b..f53e0b5 100644
--- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
@@ -80,7 +80,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.orderId == wcsTask.orderId);
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)
{
floor = endEquip.floorNo;
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
index 127f50d..22cc4b4 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorAGV.cs
@@ -1,10 +1,14 @@
using Khd.Core.Domain.Dto.webapi;
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
+using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
+using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
+using Newtonsoft.Json;
+using System;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@@ -68,14 +72,272 @@ namespace Khd.Core.Wcs.Wcs
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
+ 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)
{
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//获取条码号,如果该条码任务存在就继续任务,如果条码不存在,创建入库任务并调度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
+ {
+ 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(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(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
+ {
+ 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(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(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
+ {
+ 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(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(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(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)
{
diff --git a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
index 8103c5f..5ece7ad 100644
--- a/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/SecondFloorPoint.cs
@@ -1,11 +1,11 @@
using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework;
+using Khd.Core.Library.Mapper;
using Khd.Core.Wcs.Global;
using Masuit.Tools.Logging;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Z.EntityFramework.Plus;
-
namespace Khd.Core.Wcs.Wcs
{
///
@@ -15,7 +15,7 @@ namespace Khd.Core.Wcs.Wcs
{
List ScanPoint { get; set; }//点位信息
private readonly IHost _host;
- private readonly Plc.S7.Plc _plc;
+ private Plc.S7.Plc _plc;
private readonly BasePlcpoint LineRFID;
private readonly BasePlcpoint LineWcsrun;
private readonly BasePlcpoint LineSignal;
@@ -65,46 +65,53 @@ namespace Khd.Core.Wcs.Wcs
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService();
+ 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)
{
try
{
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 isPallet = this._plc.Read(LineIsPallet.plcpointAddress);
- if (rfid != null && isSignal != null && isPallet != null)
+ if (rfid != null && isSignal != null)
{
//正常读到输送线信息 有到位信号,并且有托盘,获取条码信息
- if (Convert.ToInt32(isSignal) > 0 && Convert.ToInt32(isPallet) == 1)
+ if (Convert.ToInt32(isSignal) == 1)
{
//获取条码信息
var palletNo = Convert.ToString(rfid);
- //获取任务
- var wcsTask = StaticData.WcsTask.Where(t => t.nextPointId == 2 && t.taskType == 3 && t.containerNo == palletNo).FirstOrDefault();
- //判断是否为出库任务
+ BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipType == 1 && t.floorNo == FloorNo);
+ var wcsTask = dbContext.WcsTask.OrderBy(t => t.createTime)
+ .FirstOrDefault(t => t.containerNo == palletNo && t.nextPointId == baseEquip.objid);
if (wcsTask != null)
{
- var wmsProductOutstock = dbContext.WmsProductOutstock.Where(t => t.saleOrderId == wcsTask.orderId).FirstOrDefault();
- if (wmsProductOutstock != null)
+ if (wcsTask.taskStatus == 5)//入库,提升机任务是完成状态
{
- string endStationCode = wmsProductOutstock.endStationCode;
- //找到目的地楼层
- int floorNo=0;
- //下发去提升机的去向
- this._plc.Write(LineWcsrun.plcpointAddress, 1);
- //更新任务
- dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask()
- {
- currPointId = 2,
- currPointNo = "F02",
- floorNo = floorNo,
- nextPointId = 6,
- nextPointNo = "T01",
- updateTime = DateTime.Now,
- updateBy = "二楼接驳位",
- });
+ dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Delete();
+ WcsTask newTask = CoreMapper.Map(wcsTask);
+ newTask.taskStatus = 0;
+ newTask.objid = StaticData.SnowId.NextId();
+ newTask.nextPointId=agvEquip.objid;
+ newTask.nextPointNo=agvEquip.equipNo;
+ newTask.createTime = DateTime.Now;
+ newTask.updateTime = DateTime.Now;
+ newTask.endPointId=inEquip.objid;
+ newTask.endPointNo=inEquip.equipNo;
+ newTask.containerNo=palletNo;
+ newTask.currPointId=lineEquip.objid;
+ newTask.currPointNo=lineEquip.equipNo;
+ newTask.taskType=2;
+ newTask.useFlag=1;
+ dbContext.WcsTask.Add(newTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(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)
{
+
+ 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);
}
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();
- 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;
- }
}
}
diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json
index 1b7381e..c273bc0 100644
--- a/src/Khd.Core.Wcs/appsettings.json
+++ b/src/Khd.Core.Wcs/appsettings.json
@@ -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"
},
"PlcConfigs": [
- {
- "IP": "192.168.2.30",
- "Port": 102, //102是默认端口
- "CpuType": 40,
- "Rack": 0,
- "Slot": 1,
- "Code": 0
- },
+ //{
+ // "IP": "192.168.2.30",
+ // "Port": 102, //102是默认端口
+ // "CpuType": 40,
+ // "Rack": 0,
+ // "Slot": 1,
+ // "Code": 0
+ //},
{
"IP": "192.168.2.31",
"Port": 102, //102是默认端口
@@ -22,14 +22,14 @@
"Slot": 1,
"Code": 1
},
- {
- "IP": "192.168.2.220",
- "Port": 102, //102是默认端口
- "CpuType": 40,
- "Rack": 0,
- "Slot": 1,
- "Code": 2
- }
+ //{
+ // "IP": "192.168.2.220",
+ // "Port": 102, //102是默认端口
+ // "CpuType": 40,
+ // "Rack": 0,
+ // "Slot": 1,
+ // "Code": 2
+ //}
],
"PLCSetting": {
"Mode": "0",
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
index 0d5c79f..3efd4b1 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
@@ -584,7 +584,7 @@
ElementStyle="{StaticResource dgCell}"
FontSize="20"
Header="起始站点"
- IsReadOnly="True" />
+ IsReadOnly="True"/>