From 00bfc12f17ea0bb5cc92090281cbfda7eac9f5aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=8C=83?= <15095123350@163.com>
Date: Thu, 18 Jul 2024 17:47:12 +0800
Subject: [PATCH] 20240718
---
.../Controllers/RecieveRcsController.cs | 15 +-
.../Properties/launchSettings.json | 2 +-
.../WcsTaskApplication.cs | 12 +-
src/Khd.Core.Domain/Models/BaseEquip.cs | 2 +
.../Models/MesBaseBarcodeInfo.cs | 3 +
src/Khd.Core.Domain/Models/WmsRawOutstock.cs | 2 +
src/Khd.Core.Wcs/Global/HttpHelper.cs | 2 -
src/Khd.Core.Wcs/MainCentralControl.cs | 14 +-
src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs | 1285 +++++++++--------
src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs | 16 +-
src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs | 17 +-
src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs | 2 +-
src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs | 78 +-
src/Khd.Core.Wcs/appsettings.json | 16 +-
src/Khd.Core.Wpf/Form/FormBoardT.xaml | 43 +-
src/Khd.Core.Wpf/Form/FormBoardT.xaml.cs | 189 ++-
.../Inventory/InventoryTaskEditForm.xaml.cs | 6 +-
.../TaskForm/SelectOutRawForm.xaml | 32 +
.../TaskForm/SelectOutRawForm.xaml.cs | 40 +
19 files changed, 955 insertions(+), 821 deletions(-)
create mode 100644 src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml
create mode 100644 src/Khd.Core.Wpf/TaskForm/SelectOutRawForm.xaml.cs
diff --git a/src/Khd.Core.Api/Controllers/RecieveRcsController.cs b/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
index 55bebd3..2ca2be2 100644
--- a/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
+++ b/src/Khd.Core.Api/Controllers/RecieveRcsController.cs
@@ -70,18 +70,6 @@ namespace Khd.Core.Api.Controllers
return _application.TaskContinue(taskContinue);
}
- ///
- /// 柜体拆分验收区通知返库接口
- ///
- ///
- ///
- [HttpPost("taskReturn")]
- public AgvCompeletedResponse TaskReturn(TaskReturn taskReturn)
- {
- LogManager.Info($"TaskReturn 接口收到消息: {taskReturn}");
- return _application.TaskReturn(taskReturn);
- }
-
///
/// 通知去翻转机的任务
///
@@ -90,13 +78,14 @@ namespace Khd.Core.Api.Controllers
[HttpPost("callMaterial")]
public ReponseMessage CallMaterial(CallMaterial callMaterial)
{
- LogManager.Info($"CallMaterial 接口收到消息: {callMaterial}");
+ LogManager.Info($"CallMaterial 接口收到消息: {callMaterial.ToJsonString()}");
return _application.CallMaterial(callMaterial);
}
[HttpPost("AgvTaskComplete")]
public ReponseMessage AGVTaskComplete()
{
+ LogManager.Info($"AgvTaskComplete 接口收到消息");
return _application.AGVTaskComplete();
}
}
diff --git a/src/Khd.Core.Api/Properties/launchSettings.json b/src/Khd.Core.Api/Properties/launchSettings.json
index 955e9ef..eb86b0d 100644
--- a/src/Khd.Core.Api/Properties/launchSettings.json
+++ b/src/Khd.Core.Api/Properties/launchSettings.json
@@ -1,4 +1,4 @@
-{
+ {
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
diff --git a/src/Khd.Core.Application/WcsTaskApplication.cs b/src/Khd.Core.Application/WcsTaskApplication.cs
index 5f112e7..43e9196 100644
--- a/src/Khd.Core.Application/WcsTaskApplication.cs
+++ b/src/Khd.Core.Application/WcsTaskApplication.cs
@@ -84,10 +84,11 @@ namespace Khd.Core.Application
wcscmd.sendFlag = 1;
wcscmd.cmdStatus = 4;
wcsTask.taskStatus = 4;
- _dbContext.WcsCmd.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmd { cmdStatus = 4 });
+ _dbContext.WcsCmd.Update(wcscmd);
_dbContext.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 4 });
- _dbContext.WcsTask.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTask { taskStatus = 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 = "成功";
}
@@ -99,9 +100,10 @@ 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.WcsCmdLog.Where(t => t.objid == wcscmd.objid).Update(a => new WcsCmdLog { cmdStatus = 3 });
_dbContext.WcsTaskLog.Where(t => t.objid == wcsTask.objid).Update(t => new WcsTaskLog { taskStatus = 3 });
+ _dbContext.SaveChanges();
reponseagvCallbackDto.code = "0";
reponseagvCallbackDto.message = "成功";
}
@@ -485,7 +487,7 @@ namespace Khd.Core.Application
{
_dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
bool hasTask = _dbContext.WcsTask.Where(t => t.taskType == 41).Any();
- if (hasTask)
+ if (!hasTask)
{
reponseMessage.code = "0";
reponseMessage.message = "成功";
@@ -493,7 +495,7 @@ namespace Khd.Core.Application
else
{
reponseMessage.code = "1";
- reponseMessage.message = "当前无任务";
+ reponseMessage.message = "当前不可翻转";
}
}
catch (Exception ex)
diff --git a/src/Khd.Core.Domain/Models/BaseEquip.cs b/src/Khd.Core.Domain/Models/BaseEquip.cs
index d158ec9..60ec406 100644
--- a/src/Khd.Core.Domain/Models/BaseEquip.cs
+++ b/src/Khd.Core.Domain/Models/BaseEquip.cs
@@ -17,6 +17,8 @@ namespace Khd.Core.Domain.Models
[Table("wcs_base_equip")]
public class BaseEquip
{
+ [Column("endStationCode")]
+ public string endStationCode { get; set; }
[Column("container_no")]
public string containerNo { get; set; }
diff --git a/src/Khd.Core.Domain/Models/MesBaseBarcodeInfo.cs b/src/Khd.Core.Domain/Models/MesBaseBarcodeInfo.cs
index f292725..a1a83a1 100644
--- a/src/Khd.Core.Domain/Models/MesBaseBarcodeInfo.cs
+++ b/src/Khd.Core.Domain/Models/MesBaseBarcodeInfo.cs
@@ -201,6 +201,9 @@ namespace Khd.Core.Domain.Models
///
[Column("bind_barcode")]
public string bindBarcode { get; set; }
+
+ [Column("safe_flag")]
+ public string safeFlag { get; set; }
}
}
diff --git a/src/Khd.Core.Domain/Models/WmsRawOutstock.cs b/src/Khd.Core.Domain/Models/WmsRawOutstock.cs
index 57648f3..dd4a303 100644
--- a/src/Khd.Core.Domain/Models/WmsRawOutstock.cs
+++ b/src/Khd.Core.Domain/Models/WmsRawOutstock.cs
@@ -17,6 +17,8 @@ namespace Khd.Core.Domain.Models
[Table("wms_raw_outstock")]
public class WmsRawOutstock
{
+ [Column("sale_order_id")]
+ public long? saleOrderId { get; set; }
[Key]
[Column("raw_outstock_id")]
diff --git a/src/Khd.Core.Wcs/Global/HttpHelper.cs b/src/Khd.Core.Wcs/Global/HttpHelper.cs
index 6ad9465..f74e8fe 100644
--- a/src/Khd.Core.Wcs/Global/HttpHelper.cs
+++ b/src/Khd.Core.Wcs/Global/HttpHelper.cs
@@ -121,8 +121,6 @@ namespace Khd.Core.Wcs
}
}
-
-
///
/// 发起GET同步请求
///
diff --git a/src/Khd.Core.Wcs/MainCentralControl.cs b/src/Khd.Core.Wcs/MainCentralControl.cs
index cd52084..78de1a1 100644
--- a/src/Khd.Core.Wcs/MainCentralControl.cs
+++ b/src/Khd.Core.Wcs/MainCentralControl.cs
@@ -98,27 +98,27 @@ namespace Khd.Core.Wcs
//ThirdFloorPoint thirdFloorPoint = new(_host, StaticData.PlcDic[0], ThirdBaseFloorEquip.floorNo.Value);
//thirdFloorPoint.StartPoint();
- ////三层AGV
- //var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
- //ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value);
- //thirdFloorAGV.StartPoint();
+ //三层AGV
+ var ThirdFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 3 && t.equipType == 4).First();
+ ThirdFloorAGV thirdFloorAGV = new(_host, StaticData.PlcDic[2], ThirdFloorAgvEquip.floorNo.Value);
+ thirdFloorAGV.StartPoint();
////五层接驳位
//var FifthBaseFloorEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 1).First();
//FiveFloorPoint fifthFloorPoint = new(_host, StaticData.PlcDic[0], FifthBaseFloorEquip.floorNo.Value);
//fifthFloorPoint.StartPoint();
- ////五层CTU
+ //五层CTU
//var FiveFloorCTUEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 6).First();
//FiveFloorCTU fiveFloorCTU = new(_host, StaticData.PlcDic[1], FiveFloorCTUEquip.floorNo.Value);
//fiveFloorCTU.StartPoint();
- ////五层AGV
+ //五层AGV
//var FifthFloorAgvEquip = StaticData.BaseEquip.Where(t => t.floorNo == 5 && t.equipType == 5).First();
//FiveFloorAGV fifthFloorAGV = new(_host, StaticData.PlcDic[0], FifthFloorAgvEquip.floorNo.Value);
//fifthFloorAGV.StartPoint();
- ////背负式Agv
+ //背负式Agv
//var FifthFloorBearAgvEquip = StaticData.BaseEquip.Where(t => t.objid == 28).First();
//FiveFloorBearAgv fiveFloorBearAgv = new(_host, StaticData.PlcDic[1], FifthFloorBearAgvEquip.floorNo.Value);
//fiveFloorBearAgv.StartPoint();
diff --git a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
index 420701d..3ef932d 100644
--- a/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
+++ b/src/Khd.Core.Wcs/Wcs/CreateTaskByRecord.cs
@@ -29,29 +29,29 @@ namespace Khd.Core.Wcs.Wcs
///
public void StartPoint()
{
- var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
- createBearAgvReturnThread.Start();
+ //var createBearAgvReturnThread = new Thread(CreateBearAgvReturnLogic);
+ //createBearAgvReturnThread.Start();
- var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
- createFiveProductInTaskThread.Start();
+ //var createFiveProductInTaskThread = new Thread(CreateFiveProductInTaskLogic);
+ //createFiveProductInTaskThread.Start();
- var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
- createFiveProductTaskThread.Start();
+ //var createFiveProductTaskThread = new Thread(CreateFiveProductTaskLogic);
+ //createFiveProductTaskThread.Start();
- var createRawTaskThread = new Thread(CreateRawTaskLogic);
- createRawTaskThread.Start();
+ //var createRawTaskThread = new Thread(CreateRawTaskLogic);
+ //createRawTaskThread.Start();
- var createRawInThread = new Thread(CreateRawInTaskLogic);
- createRawInThread.Start();
+ //var createRawInThread = new Thread(CreateRawInTaskLogic);
+ //createRawInThread.Start();
- //var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
- //createThirdOutTaskThread.Start();
+ var createThirdOutTaskThread = new Thread(CreateThirdOutTaskLogic);
+ createThirdOutTaskThread.Start();
- //var CreateSecondProductTaskThread = new Thread(CreateSecondProductTaskLogic);
- //CreateSecondProductTaskThread.Start();
+ var CreateSecondProductTaskThread = new Thread(CreateSecondProductTaskLogic);
+ CreateSecondProductTaskThread.Start();
- //var createEmptyTrayThread = new Thread(CreateEmptyTrayLogic);
- //createEmptyTrayThread.Start();
+ var createEmptyTrayThread = new Thread(CreateEmptyTrayLogic);
+ createEmptyTrayThread.Start();
//var createThirdWasterTaskThread = new Thread(CreateThirdWasterTaskLogic);
//createThirdWasterTaskThread.Start();
@@ -359,10 +359,10 @@ namespace Khd.Core.Wcs.Wcs
if (!task)
{
var wmsProductInstock = dbContext.WmsProductInstock
- .Where(t => t.productType == "2")
- .Where(t => t.auditStatus == "1")
- .Where(t => t.warehouseId == 521)
- .FirstOrDefault();
+ .Where(t => t.productType == "2")
+ .Where(t => t.auditStatus == "1")
+ .Where(t => t.warehouseId == 521)
+ .FirstOrDefault();
if (wmsProductInstock != null && wmsProductInstock.executeStatus == "0")
{
var wmsBaseLocation = dbContext.WmsBaseLocation
@@ -371,7 +371,9 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
.Where(t => t.locationStatus == "1")
- .Where(t => t.containerCode == null || t.containerCode == "").FirstOrDefault();
+ .Where(t => t.containerCode == null)
+ .OrderByDescending(t => t.locColumn)
+ .FirstOrDefault();
if (wmsBaseLocation != null)
{
var wcsTask = new WcsTask()
@@ -379,10 +381,10 @@ namespace Khd.Core.Wcs.Wcs
objid = StaticData.SnowId.NextId(),
serialNo = SystemData.GetSerialNo(dbContext),
taskType = 34,
- endPointId = endEquip.objid,
- endPointNo = endEquip.equipNo,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
+ endPointId = wmsBaseLocation.locationId,
+ endPointNo = wmsBaseLocation.locationCode,
+ currPointId = endEquip.objid,
+ currPointNo = endEquip.equipNo,
equipmentNo = agvEquip.equipNo,
useFlag = 1,
qty = 1,
@@ -420,7 +422,6 @@ namespace Khd.Core.Wcs.Wcs
wmsProductInstock.executeStatus = "1";
wmsBaseLocation.instockFlag = "1";
wmsBaseLocation.locationStatus = "4";
- wmsProductInstock.instockAmount += 1;
dbContext.Add(wmsProductInstockDetail);
dbContext.Update(wmsProductInstock);
dbContext.Update(wmsBaseLocation);
@@ -458,182 +459,186 @@ namespace Khd.Core.Wcs.Wcs
bool task = dbContext.WcsTask.Where(t => t.nextPointId == 9 && t.taskStatus <= 5).Any();
if (!task)
{
- WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.endPointId == endEquip.objid);
- if (wcsTask == null)
+ endEquip = dbContext.BaseEquip.First(t => t.objid == 31);
+ if (endEquip.emptyCount == 0)
{
- WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();
- if (wcsTaskManual != null)
+ WcsTask? wcsTask = dbContext.WcsTask.FirstOrDefault(t => t.endPointId == endEquip.objid);
+ if (wcsTask == null)
{
- var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId);
- if (wmsRawOutstock != null)
+ WcsTaskManual? wcsTaskManual = dbContext.WcsTaskManual.Where(t => t.taskType == 999).FirstOrDefault();
+ if (wcsTaskManual != null)
{
- var wmsRawStocks = dbContext.WmsRawStock
- .Where(t => t.materialId == wmsRawOutstock.materialId)
- .Where(t => t.warehouseId == 311)
- .ToList();
- var wmsBaseLocations = dbContext.WmsBaseLocation
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.ContainerStatus == "1")
- .Where(t => t.warehouseId == 311).ToList();
- var bill = from a in wmsBaseLocations
- from b in wmsRawStocks
- where a.locationCode == b.locationCode
- select new { a, b };
- WmsBaseLocation? wmsBaseLocation = null;
- bill = bill.OrderBy(t => t.b.instockDate);
- var fistbill = bill.FirstOrDefault();
- if (fistbill != null)
+ var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTaskManual.orderId);
+ if (wmsRawOutstock != null)
{
- int? locRow = 0;
- if (fistbill.a.locRow % 2 == 1)
+ var wmsRawStocks = dbContext.WmsRawStock
+ .Where(t => t.saleOrderId == wmsRawOutstock.saleOrderId)
+ .Where(t => t.warehouseId == 311)
+ .ToList();
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.ContainerStatus == "1")
+ .Where(t => t.warehouseId == 311).ToList();
+ var bill = from a in wmsBaseLocations
+ from b in wmsRawStocks
+ where a.locationCode == b.locationCode
+ select new { a, b };
+ WmsBaseLocation? wmsBaseLocation = null;
+ WmsRawStock? wmsRawStock = null;
+ bill = bill.OrderBy(t => t.b.instockDate);
+ var fistbill = bill.FirstOrDefault();
+ if (fistbill != null)
{
- locRow = fistbill.a.locRow + 1;
- }
- else
- {
- locRow = fistbill.a.locRow - 1;
- }
- var lastbill = bill.Where(t => t.a.locRow == locRow)
- .Where(t => t.a.locColumn == fistbill.a.locColumn)
- .Where(t => t.a.locDeep == 2)
- .Where(t => t.b.materialId == wmsRawOutstock.materialId)
- .FirstOrDefault();
- if (lastbill != null)
- {
- if (lastbill.b.instockDate != null && fistbill.b.instockDate != null)
+ int? locRow = 0;
+ if (fistbill.a.locRow % 2 == 1)
{
- wmsBaseLocation = fistbill.a;
- if (lastbill.b.instockDate.Value.Date == fistbill.b.instockDate.Value.Date)
+ locRow = fistbill.a.locRow + 1;
+ }
+ else
+ {
+ locRow = fistbill.a.locRow - 1;
+ }
+ var lastbill = bill.Where(t => t.a.locRow == locRow)
+ .Where(t => t.a.locColumn == fistbill.a.locColumn)
+ .Where(t => t.a.locDeep == 2)
+ .FirstOrDefault();
+ wmsBaseLocation = fistbill.a;
+ if (lastbill != null)
+ {
+ if (lastbill.b.instockDate != null && fistbill.b.instockDate != null)
{
- wmsBaseLocation = lastbill.a;
- }
- if (wmsBaseLocation.locDeep == 1)
- {
- int? row = 0;
- if (wmsBaseLocation.locRow % 2 == 1)
+
+ if (wmsBaseLocation.locDeep == 1)
{
- row = wmsBaseLocation.locRow + 1;
- }
- else
- {
- row = wmsBaseLocation.locRow - 1;
- }
- WmsBaseLocation? fromBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
- .Where(t => t.locColumn == wmsBaseLocation.locColumn)
- .Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
- if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
- {
- WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
- .Where(t => t.locDeep == 1)
- .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
- toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
- .Where(t => t.warehouseId != wmsBaseLocation.locationId)
- .Where(t => string.IsNullOrEmpty(t.containerCode))
- .FirstOrDefault();
- if (toLocation != null)
+ int? row = 0;
+ if (wmsBaseLocation.locRow % 2 == 1)
{
- var RemoveTask = new WcsTask()
+ row = wmsBaseLocation.locRow + 1;
+ }
+ else
+ {
+ row = wmsBaseLocation.locRow - 1;
+ }
+ WmsBaseLocation? fromBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locRow == row)
+ .Where(t => t.locColumn == wmsBaseLocation.locColumn)
+ .Where(t => t.warehouseId == wmsBaseLocation.warehouseId).FirstOrDefault();
+ if (fromBaseLocation != null && !string.IsNullOrEmpty(fromBaseLocation.containerCode))
+ {
+ WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
+ .Where(t => t.locDeep == 1)
+
+ .Where(t => string.IsNullOrEmpty(t.containerCode)).FirstOrDefault();
+ toLocation ??= dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
+ .Where(t => t.warehouseId != wmsBaseLocation.locationId)
+ .Where(t => string.IsNullOrEmpty(t.containerCode))
+ .FirstOrDefault();
+ if (toLocation != null)
{
- objid = StaticData.SnowId.NextId(),
- taskType = 67,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now.AddSeconds(-10),
- taskStatus = 0,
- currPointId = fromBaseLocation.locationId,
- currPointNo = fromBaseLocation.locationCode,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = toLocation.locationId,
- endPointNo = toLocation.locationCode,
- equipmentNo = baseEquip.equipNo,
- useFlag = 1,
- qty = 1
- };
- toLocation.locationStatus = "4";
- toLocation.instockFlag = "1";
- toLocation.updateBy = "WCS";
- toLocation.updateTime = DateTime.Now;
- fromBaseLocation.updateBy = "WCS";
- fromBaseLocation.updateTime = DateTime.Now;
- fromBaseLocation.outstockFlag = "1";
- fromBaseLocation.locationStatus = "4";
- dbContext.Update(toLocation);
- dbContext.Update(fromBaseLocation);
- dbContext.Add(RemoveTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
- dbContext.Add(wcsTaskLog);
+ var RemoveTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ taskType = 67,
+ containerNo = fromBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now.AddSeconds(-10),
+ taskStatus = 0,
+ currPointId = fromBaseLocation.locationId,
+ currPointNo = fromBaseLocation.locationCode,
+ nextPointId = baseEquip.objid,
+ nextPointNo = baseEquip.equipNo,
+ endPointId = toLocation.locationId,
+ endPointNo = toLocation.locationCode,
+ equipmentNo = baseEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ toLocation.locationStatus = "4";
+ toLocation.instockFlag = "1";
+ toLocation.updateBy = "WCS";
+ toLocation.updateTime = DateTime.Now;
+ fromBaseLocation.updateBy = "WCS";
+ fromBaseLocation.updateTime = DateTime.Now;
+ fromBaseLocation.outstockFlag = "1";
+ fromBaseLocation.locationStatus = "4";
+ dbContext.Update(toLocation);
+ dbContext.Update(fromBaseLocation);
+ dbContext.Add(RemoveTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(RemoveTask);
+ dbContext.Add(wcsTaskLog);
+ }
}
}
}
}
- }
- if (wmsBaseLocation != null)
- {
- MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == wmsBaseLocation.containerCode);
- if (mesBasePalletInfo != null)
+ if (wmsBaseLocation != null)
{
- MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == mesBasePalletInfo.materialBarcode);
- if (mesBaseBarcodeInfo != null)
+ wmsRawStock = wmsRawStocks.Where(t => t.locationCode == wmsBaseLocation.locationCode).First();
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == wmsRawStock.palletInfoCode);
+ if (mesBasePalletInfo != null)
{
- WmsRawOutstockDetail wmsRawOutstockDetail = new WmsRawOutstockDetail()
+ MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == mesBasePalletInfo.materialBarcode);
+ if (mesBaseBarcodeInfo != null)
{
- rawOutstockDetailId = StaticData.SnowId.NextId(),
- createBy = "WCS",
- createDate = DateTime.Now,
- executeStatus = "0",
- erpAmount = 0,
- erpStatus = "0",
- instockBatch = mesBaseBarcodeInfo.batchCode,
- stackAmount = 1,
- locationCode = wmsBaseLocation.locationCode,
- rawOutstockId = wmsRawOutstock.rawOutstockId,
- planAmount = 1,
- outstockWay = "2",
- outstockPerson = "WCS",
- outstockTime = DateTime.Now,
- materialProductionDate = mesBaseBarcodeInfo.productionDate,
- materialBarcode = mesBasePalletInfo.materialBarcode,
- materialId = wmsRawOutstock.materialId,
- machineName = mesBaseBarcodeInfo.machineName,
- outstockAmount = 1,
- taskCode = wmsRawOutstock.taskCode
- };
- wcsTask = new WcsTask()
- {
- objid = StaticData.SnowId.NextId(),
- orderId = wmsRawOutstock.rawOutstockId,
- taskType = 41,
- containerNo = wmsBaseLocation.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = wmsRawOutstock.materialId,
- currPointId = wmsBaseLocation.locationId,
- currPointNo = wmsBaseLocation.locationCode,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = endEquip.objid,
- endPointNo = endEquip.equipNo,
- equipmentNo = endEquip.equipNo,
- useFlag = 1,
- qty = 1
- };
- dbContext.Update(wmsBaseLocation);
- dbContext.Add(wmsRawOutstockDetail);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Remove(wcsTaskManual);
- dbContext.Add(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
+ WmsRawOutstockDetail wmsRawOutstockDetail = new WmsRawOutstockDetail()
+ {
+ rawOutstockDetailId = StaticData.SnowId.NextId(),
+ createBy = "WCS",
+ createDate = DateTime.Now,
+ executeStatus = "0",
+ erpAmount = 0,
+ erpStatus = "0",
+ instockBatch = mesBaseBarcodeInfo.batchCode,
+ stackAmount = 1,
+ locationCode = wmsBaseLocation.locationCode,
+ rawOutstockId = wmsRawOutstock.rawOutstockId,
+ planAmount = 1,
+ outstockWay = "2",
+ outstockPerson = "WCS",
+ outstockTime = DateTime.Now,
+ materialProductionDate = mesBaseBarcodeInfo.productionDate,
+ materialBarcode = mesBasePalletInfo.materialBarcode,
+ materialId = wmsRawOutstock.materialId,
+ machineName = mesBaseBarcodeInfo.machineName,
+ outstockAmount = 1,
+ taskCode = wmsRawOutstock.taskCode
+ };
+ wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = wmsRawOutstock.rawOutstockId,
+ taskType = 41,
+ containerNo = wmsBaseLocation.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = wmsRawOutstock.materialId,
+ currPointId = wmsBaseLocation.locationId,
+ currPointNo = wmsBaseLocation.locationCode,
+ nextPointId = baseEquip.objid,
+ nextPointNo = baseEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ equipmentNo = endEquip.equipNo,
+ useFlag = 1,
+ qty = 1
+ };
+ wmsBaseLocation.outstockFlag = "1";
+ wmsBaseLocation.locationStatus = "6";
+ dbContext.Update(wmsBaseLocation);
+ dbContext.Add(wmsRawOutstockDetail);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Remove(wcsTaskManual);
+ dbContext.Add(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ }
}
}
}
-
}
}
}
@@ -670,40 +675,42 @@ namespace Khd.Core.Wcs.Wcs
if (wmsRawReturn.executeStatus == "0")
{
//任务未开始Status=0
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.equipNo == wmsRawReturn.endStationCode);
- WcsTask wcsTask = new()
+ BaseEquip? startEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawReturn.endStationCode);
+ if (startEquip != null)
{
- objid = StaticData.SnowId.NextId(),
- orderId = wmsRawReturn.rawReturnId,
- taskType = 48,
- containerNo = "",
- currPointId = startEquip.objid,
- currPointNo = startEquip.equipNo,
- nextPointId = baseEquip.objid,
- nextPointNo = baseEquip.equipNo,
- endPointId = endEquip.objid,
- endPointNo = endEquip.equipNo,
- serialNo = SystemData.GetSerialNo(dbContext),
- taskStatus = 0,
- createTime = DateTime.Now,
- createBy = "WCS",
- materialId = wmsRawReturn.materialId,
- qty = 1,
- useFlag = 1,
- equipmentNo = startEquip.equipNo,
- remark = "装配区返库",
- floorNo = 5,
- masterId = wmsRawReturn.materialId,
- fromFloorNo = 5,
- //materialNo = wmsRawReturn.materialBatch,
- };
- wmsRawReturn.executeStatus = "1";
- wmsRawReturn.returnAmount += 1;
- dbContext.Add(wcsTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.Update(wmsRawReturn);
- dbContext.SaveChanges();
+ WcsTask wcsTask = new()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = wmsRawReturn.rawReturnId,
+ taskType = 48,
+ containerNo = null,
+ currPointId = startEquip.objid,
+ currPointNo = startEquip.equipNo,
+ nextPointId = baseEquip.objid,
+ nextPointNo = baseEquip.equipNo,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.equipNo,
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskStatus = 0,
+ createTime = DateTime.Now,
+ createBy = "WCS",
+ materialId = wmsRawReturn.materialId,
+ qty = 1,
+ useFlag = 1,
+ equipmentNo = startEquip.equipNo,
+ remark = "装配区返库",
+ floorNo = 5,
+ masterId = wmsRawReturn.materialId,
+ fromFloorNo = 5,
+ //materialNo = wmsRawReturn.materialBatch,
+ };
+ wmsRawReturn.executeStatus = "1";
+ dbContext.Add(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.Update(wmsRawReturn);
+ dbContext.SaveChanges();
+ }
}
}
}
@@ -732,7 +739,7 @@ namespace Khd.Core.Wcs.Wcs
{
var proStock = dbContext.WmsProductStock
.Where(t => t.warehouseId == 531)
- .Where(t => t.activeFlag == "0").ToList();
+ .Where(t => t.activeFlag == "1").ToList();
var proOutStock = dbContext.WmsProductOutstock
.Where(t => t.outstockQty < t.applyQty)
.Where(t => t.auditStatus == "1")
@@ -749,7 +756,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsproStocks = proStock
.Where(t => t.productId == item.productId && t.warehouseId == item.warehouseId)
- .Select(t => t.palletInfoCode)
+ .Select(t => t.locationCode)
.ToList();
var wmsBaseLocations = dbContext.WmsBaseLocation
@@ -759,7 +766,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.instockFlag == "0")
.Where(t => t.outstockFlag == "0")
.Where(t => t.warehouseId == item.warehouseId)
- .Where(t => wmsproStocks.Contains(t.containerCode))
+ .Where(t => wmsproStocks.Contains(t.locationCode))
.ToList();
decimal needNumber = Convert.ToDecimal(item.applyQty - item.outstockQty);
@@ -773,7 +780,7 @@ namespace Khd.Core.Wcs.Wcs
var bill = from a in wmsBaseLocations
from b in proStock
- where a.containerCode == b.palletInfoCode
+ where a.locationCode == b.locationCode
select new { a, b };
//如果第一列满足需求,则按第一列排序,否则按最后一列排序
if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
@@ -807,7 +814,7 @@ namespace Khd.Core.Wcs.Wcs
qty = Convert.ToInt32(needNumber);
stock.updateDate = DateTime.Now;
}
- MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == location.containerCode);
+ MesBasePalletInfo? mesBasePalletInfo = dbContext.MesBasePalletInfo.FirstOrDefault(t => t.palletInfoCode == stock.palletInfoCode);
if (mesBasePalletInfo != null)
{
WmsProductOutstockDetail detail = new()
@@ -920,12 +927,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Add(wcsTask);
dbContext.Update(stock);
dbContext.SaveChanges();
- if (qty >= needNumber)
- {
- break;
- }
+ break;
}
- break;
}
if (item.beginTime == null)
{
@@ -1178,7 +1181,8 @@ namespace Khd.Core.Wcs.Wcs
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
//原材料库存
- var rawStock = dbContext.WmsRawStock.Where(t => t.activeFlag == "1").ToList();
+ var rawStock = dbContext.WmsRawStock
+ .Where(t => t.activeFlag == "1").ToList();
//原材料出库记录
var rawOutStock = dbContext.WmsRawOutstock
.Where(t => t.executeStatus == "0" || t.executeStatus == "1")
@@ -1215,441 +1219,450 @@ namespace Khd.Core.Wcs.Wcs
{
lock (SystemData.outStockLock)
{
- if (endEquip.equipType == 8)//CTU出库
+ //if (endEquip.equipType == 8)//CTU出库
+ //{
+ // var wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
+ // if (wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0)
+ // {
+ // var wmsRawStocks = rawStock
+ // .Where(t => t.materialId == item.materialId)
+ // .Where(t => t.warehouseId == item.warehouseId)
+ // .Select(t => t.locationCode)
+ // .ToList();
+
+ // var wmsBaseLocations = dbContext.WmsBaseLocation
+ // .Where(t => t.activeFlag == "1")
+ // .Where(t => t.delFlag == "0")
+ // .Where(t => t.locationScrapType == "1")
+ // .Where(t => t.instockFlag == "0")
+ // .Where(t => t.outstockFlag == "0")
+ // .Where(t => t.ContainerStatus == "1")
+ // .Where(t => t.warehouseId == item.warehouseId)
+ // .Where(t => wmsRawStocks.Contains(t.locationCode))
+ // .ToList();
+
+ // decimal? needNumber = item.outstockAmount - RealOutNumber;
+
+ // var bill = from a in wmsBaseLocations
+ // from b in rawStock
+ // where a.locationCode == b.locationCode
+ // select new { a, b };
+ // //如果第一列满足需求,则按第一列排序,否则按最后一列排序
+ // if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
+ // {
+ // bill = bill.OrderBy(t => t.a.locColumn).ToList();
+ // }
+ // else
+ // {
+ // bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
+ // }
+ // //做数量限制
+
+ // //bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
+ // bill = bill.Take(6);
+ // BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
+ // BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
+ // foreach (var b in bill)
+ // {
+ // needNumber = item.outstockAmount - RealOutNumber;
+ // item.executeStatus = "1";
+ // WmsBaseLocation location = b.a;
+ // WmsRawStock stock = b.b;
+ // WcsTask wcsTask;
+ // int qty = 0;
+ // if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ // {
+ // RealOutNumber += stock.totalAmount - stock.frozenAmount;
+ // qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
+ // stock.updateDate = DateTime.Now;
+ // }
+ // else
+ // {
+ // RealOutNumber += needNumber;
+ // qty = Convert.ToInt32(needNumber);
+ // stock.updateDate = DateTime.Now;
+ // }
+ // wcsTask = new WcsTask()
+ // {
+ // objid = StaticData.SnowId.NextId(),
+ // orderId = item.rawOutstockId,
+ // taskType = 38,
+ // containerNo = location.containerCode,
+ // createBy = "WCS",
+ // createTime = DateTime.Now,
+ // taskStatus = -1,
+ // materialId = item.materialId,
+ // currPointId = location.locationId,
+ // currPointNo = location.locationCode,
+ // nextPointId = ctuEquip.objid,
+ // nextPointNo = ctuEquip.equipNo,
+ // endPointId = lineEquip.objid,
+ // endPointNo = lineEquip.equipNo,
+ // equipmentNo = ctuEquip.equipNo,
+ // ud1 = location.locColumn,
+ // useFlag = 1,
+ // qty = qty
+ // };
+ // MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
+ // if (mesBaseBarcodeInfo != null)
+ // {
+ // WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
+ // {
+ // rawOutstockDetailId = StaticData.SnowId.NextId(),
+ // rawOutstockId = item.rawOutstockId,
+ // materialId = item.materialId,
+ // createDate = DateTime.Now,
+ // createBy = "WCS",
+ // taskCode = wcsTask.objid.ToString(),
+ // executeStatus = "1",
+ // locationCode = location.locationCode,
+ // outstockAmount = qty,
+ // planAmount = item.outstockAmount,
+ // warehouseId = item.warehouseId,
+ // materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
+ // instockBatch = mesBaseBarcodeInfo.batchCode,
+ // stackAmount = qty,
+ // outstockPerson = "WCS",
+ // outstockTime = DateTime.Now,
+ // outstockWay = "2",
+ // materialProductionDate = mesBaseBarcodeInfo.productionDate
+ // };
+ // location.outstockFlag = "1";
+ // location.locationStatus = "6";
+ // location.updateBy = "WCS";
+ // location.updateTime = DateTime.Now;
+ // wcsOutstockLock.boxStatus = 1;
+ // dbContext.Add(wmsProductOutstockDetail);
+ // dbContext.Update(location);
+ // dbContext.Add(wcsTask);
+ // dbContext.Update(stock);
+ // if (qty >= needNumber)
+ // {
+ // break;
+ // }
+ // }
+ // }
+ // if (item.beginTime == null)
+ // {
+ // item.beginTime = DateTime.Now;
+ // }
+ // dbContext.Update(wcsOutstockLock);
+ // dbContext.Update(item);
+ // dbContext.SaveChanges();
+ // }
+ //}//CTU出库
+ if (endEquip.equipType == 10)//CTU出库到装配区
{
- var wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
- if (wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0)
+ BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10);
+ if (!string.IsNullOrEmpty(endStationCodeEquip.remark))
{
- var wmsRawStocks = rawStock
- .Where(t => t.materialId == item.materialId)
- .Where(t => t.warehouseId == item.warehouseId)
- .Select(t => t.locationCode)
- .ToList();
-
- var wmsBaseLocations = dbContext.WmsBaseLocation
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.ContainerStatus == "1")
- .Where(t => t.warehouseId == item.warehouseId)
- .Where(t => wmsRawStocks.Contains(t.locationCode))
- .ToList();
-
- decimal? needNumber = item.outstockAmount - RealOutNumber;
-
- var bill = from a in wmsBaseLocations
- from b in rawStock
- where a.locationCode == b.locationCode
- select new { a, b };
- //如果第一列满足需求,则按第一列排序,否则按最后一列排序
- if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
+ bool CreateSuccess = false;
+ var wcsOutstockLock = dbContext.WcsOutstockLock
+ .Where(t => t.warehouseId == 512)
+ .First();
+ if (wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0)
{
- bill = bill.OrderBy(t => t.a.locColumn).ToList();
- }
- else
- {
- bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
- }
- //做数量限制
-
- //bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
- bill = bill.Take(6);
- BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
- foreach (var b in bill)
- {
- needNumber = item.outstockAmount - RealOutNumber;
- item.executeStatus = "1";
- WmsBaseLocation location = b.a;
- WmsRawStock stock = b.b;
- WcsTask wcsTask;
- int qty = 0;
- if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ var orderList = rawOutStock.Where(t => t.endStationCode == endStationCodeEquip.endStationCode).ToList();
+ List tasks = new();
+ List canOut = orderList.Select(t => t.saleOrderId).ToList();
+ rawStock = rawStock.Where(t => canOut.Contains(t.saleOrderId)).OrderByDescending(t => t.saleOrderId).ToList();
+ //对物料和数量进行分组
+ var list = orderList.GroupBy(t => t.materialId).Select(t => new
{
- RealOutNumber += stock.totalAmount - stock.frozenAmount;
- qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
- stock.updateDate = DateTime.Now;
+ MaterialId = t.Key,
+ TotalAmount = t.Sum(x => x.outstockAmount),
+ realOutstockAmount = t.Sum(x => x.realOutstockAmount)
}
- else
+ ).ToList();
+ foreach (var order in list)
{
- RealOutNumber += needNumber;
- qty = Convert.ToInt32(needNumber);
- stock.updateDate = DateTime.Now;
- }
- wcsTask = new WcsTask()
- {
- objid = StaticData.SnowId.NextId(),
- orderId = item.rawOutstockId,
- taskType = 38,
- containerNo = location.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = -1,
- materialId = item.materialId,
- currPointId = location.locationId,
- currPointNo = location.locationCode,
- nextPointId = ctuEquip.objid,
- nextPointNo = ctuEquip.equipNo,
- endPointId = lineEquip.objid,
- endPointNo = lineEquip.equipNo,
- equipmentNo = ctuEquip.equipNo,
- ud1 = location.locColumn,
- useFlag = 1,
- qty = qty
- };
- MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
- if (mesBaseBarcodeInfo != null)
- {
- WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
- {
- rawOutstockDetailId = StaticData.SnowId.NextId(),
- rawOutstockId = item.rawOutstockId,
- materialId = item.materialId,
- createDate = DateTime.Now,
- createBy = "WCS",
- taskCode = wcsTask.objid.ToString(),
- executeStatus = "1",
- locationCode = location.locationCode,
- outstockAmount = qty,
- planAmount = item.outstockAmount,
- warehouseId = item.warehouseId,
- materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
- instockBatch = mesBaseBarcodeInfo.batchCode,
- stackAmount = qty,
- outstockPerson = "WCS",
- outstockTime = DateTime.Now,
- outstockWay = "2",
- materialProductionDate = mesBaseBarcodeInfo.productionDate
- };
- location.outstockFlag = "1";
- location.locationStatus = "6";
- location.updateBy = "WCS";
- location.updateTime = DateTime.Now;
- wcsOutstockLock.boxStatus = 1;
- dbContext.Add(wmsProductOutstockDetail);
- dbContext.Update(location);
- dbContext.Add(wcsTask);
- dbContext.Update(stock);
- if (qty >= needNumber)
+ if (tasks.Count >= 6)
{
break;
}
- }
- }
- if (item.beginTime == null)
- {
- item.beginTime = DateTime.Now;
- }
- dbContext.Update(wcsOutstockLock);
- dbContext.Update(item);
- dbContext.SaveChanges();
- }
- }//CTU出库
- if (endEquip.equipType == 10)//CTU出库到装配区
- {
- bool CreateSuccess = false;
- var wcsOutstockLock = dbContext.WcsOutstockLock
- .Where(t => t.warehouseId == 512)
- .First();
- if (wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0)
- {
- var orderList = rawOutStock.Where(t => t.endStationCode == item.endStationCode).ToList();
- List tasks = new();
+ var wmsRawStocks = rawStock
+ .Where(t => t.materialId == order.MaterialId && t.warehouseId == 512)
+ .Select(t => t.palletInfoCode)
+ .ToList();
- //对物料和数量进行分组
- var list = orderList.GroupBy(t => t.materialId).Select(t => new
- {
- MaterialId = t.Key,
- TotalAmount = t.Sum(x => x.outstockAmount),
- realOutstockAmount = t.Sum(x => x.realOutstockAmount)
- }
- ).ToList();
+ var wmsBaseLocations = dbContext.WmsBaseLocation
+ .Where(t => t.activeFlag == "1")
+ .Where(t => t.delFlag == "0")
+ .Where(t => t.locationScrapType == "1")
+ .Where(t => t.instockFlag == "0")
+ .Where(t => t.outstockFlag == "0")
+ .Where(t => t.warehouseId == 512)
+ .Where(t => wmsRawStocks.Contains(t.containerCode))
+ .ToList();
+ decimal? needNumber = order.TotalAmount - order.realOutstockAmount;
- foreach (var order in list)
- {
- if (tasks.Count >= 6)
- {
- break;
- }
- var wmsRawStocks = rawStock
- .Where(t => t.materialId == order.MaterialId && t.warehouseId == 512)
- .Select(t => t.palletInfoCode)
- .ToList();
-
- var wmsBaseLocations = dbContext.WmsBaseLocation
- .Where(t => t.activeFlag == "1")
- .Where(t => t.delFlag == "0")
- .Where(t => t.locationScrapType == "1")
- .Where(t => t.instockFlag == "0")
- .Where(t => t.outstockFlag == "0")
- .Where(t => t.warehouseId == 512)
- .Where(t => wmsRawStocks.Contains(t.containerCode))
- .ToList();
- decimal? needNumber = order.TotalAmount - order.realOutstockAmount;
-
- var bill = from a in wmsBaseLocations
- from b in rawStock
- where a.containerCode == b.palletInfoCode
- select new { a, b };
- //如果第一列满足需求,则按第一列排序,否则按最后一列排序
- if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() >= needNumber)
- {
- bill = bill.OrderBy(t => t.a.locColumn).ToList();
- }
- else
- {
- bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
- }
- BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
- foreach (var b in bill)
- {
- if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6)
+ var bill = from a in wmsBaseLocations
+ from b in rawStock
+ where a.containerCode == b.palletInfoCode
+ select new { a, b };
+ //如果第一列满足需求,则按第一列排序,否则按最后一列排序
+ if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() >= needNumber)
{
- continue;
- }
- WmsBaseLocation location = b.a;
- WmsRawStock stock = b.b;
- int qty = 0;
- if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
- {
- RealOutNumber += stock.totalAmount - stock.frozenAmount;
- qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
- stock.updateDate = DateTime.Now;
+ bill = bill.OrderBy(t => t.a.locColumn).ToList();
}
else
{
- RealOutNumber += needNumber;
- qty = Convert.ToInt32(needNumber);
- stock.updateDate = DateTime.Now;
+ bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
}
- WmsRawOutstock? wmsRawOutstock = orderList.Where(t => t.materialId == order.MaterialId).FirstOrDefault();
- if (wmsRawOutstock != null)
+ BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
+ BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
+ foreach (var b in bill)
{
- WcsTask wcsTask = new WcsTask()
+ if (tasks.Where(t => t.containerNo == b.a.containerCode).Any() || tasks.Count >= 6)
{
- objid = StaticData.SnowId.NextId(),
- orderId = wmsRawOutstock.rawOutstockId,
- taskType = 30,
- containerNo = location.containerCode,
- createBy = "WCS",
- createTime = DateTime.Now,
- taskStatus = 0,
- materialId = wmsRawOutstock.materialId,
- currPointId = location.locationId,
- currPointNo = location.locationCode,
- nextPointId = ctuEquip.objid,
- nextPointNo = ctuEquip.equipNo,
- endPointId = lineEquip.objid,
- endPointNo = lineEquip.equipNo,
- equipmentNo = ctuEquip.equipNo,
- ud1 = location.locColumn,
- useFlag = 0,
- qty = qty
- };
- tasks.Add(wcsTask);
- location.outstockFlag = "1";
- location.locationStatus = "6";
- location.updateBy = "WCS";
- location.ContainerStatus = "2";
- location.updateTime = DateTime.Now;
- wcsOutstockLock.qty += 1;
- wcsOutstockLock.boxStatus = 1;
- dbContext.Update(location);
- dbContext.Update(stock);
- CreateSuccess = true;
- if (tasks.Count >= 6)
+ continue;
+ }
+ WmsBaseLocation location = b.a;
+ WmsRawStock stock = b.b;
+ int qty = 0;
+ if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
{
- break;
+ RealOutNumber += stock.totalAmount - stock.frozenAmount;
+ qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
+ stock.updateDate = DateTime.Now;
+ }
+ else
+ {
+ RealOutNumber += needNumber;
+ qty = Convert.ToInt32(needNumber);
+ stock.updateDate = DateTime.Now;
+ }
+ WmsRawOutstock? wmsRawOutstock = orderList.Where(t => t.materialId == order.MaterialId).FirstOrDefault();
+ if (wmsRawOutstock != null)
+ {
+ WcsTask wcsTask = new WcsTask()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = wmsRawOutstock.rawOutstockId,
+ taskType = 30,
+ containerNo = location.containerCode,
+ createBy = "WCS",
+ createTime = DateTime.Now,
+ taskStatus = 0,
+ materialId = wmsRawOutstock.materialId,
+ currPointId = location.locationId,
+ currPointNo = location.locationCode,
+ nextPointId = ctuEquip.objid,
+ nextPointNo = ctuEquip.equipNo,
+ endPointId = lineEquip.objid,
+ endPointNo = lineEquip.equipNo,
+ equipmentNo = ctuEquip.equipNo,
+ ud1 = location.locColumn,
+ useFlag = 1,
+ qty = qty
+ };
+ tasks.Add(wcsTask);
+ location.outstockFlag = "1";
+ location.locationStatus = "6";
+ location.updateBy = "WCS";
+ location.ContainerStatus = "2";
+ location.updateTime = DateTime.Now;
+ wcsOutstockLock.qty += 1;
+ wcsOutstockLock.boxStatus = 1;
+ dbContext.Update(location);
+ dbContext.Update(stock);
+ CreateSuccess = true;
+ if (tasks.Count >= 6)
+ {
+ break;
+ }
}
}
+
+ #region 原逻辑
+ //foreach (var order in orderList)
+ //{
+ // if(tasks.Count >= 6)
+ // {
+ // break;
+ // }
+ // WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32);
+ // if (task == null)
+ // {
+ // var wmsRawStocks = rawStock
+ // .Where(t => t.materialId == order.materialId && t.warehouseId == order.warehouseId)
+ // .Select(t => t.palletInfoCode)
+ // .ToList();
+
+ // var wmsBaseLocations = dbContext.WmsBaseLocation
+ // .Where(t => t.activeFlag == "1")
+ // .Where(t => t.delFlag == "0")
+ // .Where(t => t.locationScrapType == "1")
+ // .Where(t => t.instockFlag == "0")
+ // .Where(t => t.outstockFlag == "0")
+ // .Where(t => t.warehouseId == order.warehouseId)
+ // .Where(t => wmsRawStocks.Contains(t.containerCode))
+ // .ToList();
+
+ // decimal? needNumber = order.outstockAmount - RealOutNumber;
+
+ // var bill = from a in wmsBaseLocations
+ // from b in rawStock
+ // where a.containerCode == b.palletInfoCode
+ // select new { a, b };
+ // //如果第一列满足需求,则按第一列排序,否则按最后一列排序
+ // if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
+ // {
+ // bill = bill.OrderBy(t => t.a.locColumn).ToList();
+ // }
+ // else
+ // {
+ // bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
+ // }
+ // //做数量限制
+ // bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
+ // BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
+ // BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
+ // foreach (var b in bill)
+ // {
+ // if (tasks.Where(t => t.containerNo == b.a.containerCode).Any())
+ // {
+ // continue;
+ // }
+ // item.executeStatus = "1";
+ // WmsBaseLocation location = b.a;
+ // WmsRawStock stock = b.b;
+ // int qty = 0;
+ // if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
+ // {
+ // RealOutNumber += stock.totalAmount - stock.frozenAmount;
+ // qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
+ // stock.updateDate = DateTime.Now;
+ // }
+ // else
+ // {
+ // RealOutNumber += needNumber;
+ // qty = Convert.ToInt32(needNumber);
+ // stock.updateDate = DateTime.Now;
+ // }
+ // WcsTask wcsTask = new WcsTask()
+ // {
+ // objid = StaticData.SnowId.NextId(),
+ // orderId = item.rawOutstockId,
+ // taskType = 30,
+ // containerNo = location.containerCode,
+ // createBy = "WCS",
+ // createTime = DateTime.Now,
+ // taskStatus = 0,
+ // materialId = item.materialId,
+ // currPointId = location.locationId,
+ // currPointNo = location.locationCode,
+ // nextPointId = ctuEquip.objid,
+ // nextPointNo = ctuEquip.equipNo,
+ // endPointId = lineEquip.objid,
+ // endPointNo = lineEquip.equipNo,
+ // equipmentNo = ctuEquip.equipNo,
+ // ud1 = location.locColumn,
+ // useFlag = 0,
+ // qty = qty
+ // };
+ // tasks.Add(wcsTask);
+ // MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
+ // if (mesBaseBarcodeInfo != null)
+ // {
+ // WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
+ // {
+ // rawOutstockDetailId = StaticData.SnowId.NextId(),
+ // rawOutstockId = item.rawOutstockId,
+ // materialId = item.materialId,
+ // createDate = DateTime.Now,
+ // createBy = "WCS",
+ // taskCode = wcsTask.objid.ToString(),
+ // executeStatus = "1",
+ // locationCode = location.locationCode,
+ // outstockAmount = qty,
+ // planAmount = item.outstockAmount,
+ // warehouseId = item.warehouseId,
+ // materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
+ // instockBatch = mesBaseBarcodeInfo.batchCode,
+ // stackAmount = qty,
+ // outstockPerson = "WCS",
+ // outstockTime = DateTime.Now,
+ // outstockWay = "2",
+ // materialProductionDate = mesBaseBarcodeInfo.productionDate
+ // };
+ // details.Add(wmsProductOutstockDetail);
+ // location.outstockFlag = "1";
+ // location.locationStatus = "6";
+ // location.updateBy = "WCS";
+ // location.updateTime = DateTime.Now;
+ // wcsOutstockLock.qty += 1;
+ // wcsOutstockLock.boxStatus = 1;
+ // dbContext.Update(wcsOutstockLock);
+ // dbContext.Update(location);
+ // dbContext.Add(wcsTask);
+ // dbContext.Update(stock);
+ // CreateSuccess = true;
+ // if (tasks.Count >= 6)
+ // {
+ // break;
+ // }
+ // }
+ // }
+ // }
+ //}
+ #endregion
+
}
-
- #region 原逻辑
- //foreach (var order in orderList)
- //{
- // if(tasks.Count >= 6)
- // {
- // break;
- // }
- // WcsTask? task = dbContext.WcsTask.FirstOrDefault(t => t.taskType == 32);
- // if (task == null)
- // {
- // var wmsRawStocks = rawStock
- // .Where(t => t.materialId == order.materialId && t.warehouseId == order.warehouseId)
- // .Select(t => t.palletInfoCode)
- // .ToList();
-
- // var wmsBaseLocations = dbContext.WmsBaseLocation
- // .Where(t => t.activeFlag == "1")
- // .Where(t => t.delFlag == "0")
- // .Where(t => t.locationScrapType == "1")
- // .Where(t => t.instockFlag == "0")
- // .Where(t => t.outstockFlag == "0")
- // .Where(t => t.warehouseId == order.warehouseId)
- // .Where(t => wmsRawStocks.Contains(t.containerCode))
- // .ToList();
-
- // decimal? needNumber = order.outstockAmount - RealOutNumber;
-
- // var bill = from a in wmsBaseLocations
- // from b in rawStock
- // where a.containerCode == b.palletInfoCode
- // select new { a, b };
- // //如果第一列满足需求,则按第一列排序,否则按最后一列排序
- // if (bill.Where(t => t.a.locColumn == 1).Select(t => t.b.totalAmount - t.b.frozenAmount).Sum() > needNumber)
- // {
- // bill = bill.OrderBy(t => t.a.locColumn).ToList();
- // }
- // else
- // {
- // bill = bill.OrderByDescending(t => t.a.locColumn).ToList();
- // }
- // //做数量限制
- // bill = bill.Take(5 - dbContext.WcsCmd.Where(t => t.cmdStatus < 3 && t.nextPointId == 20).Count());
- // BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
- // BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 20);
- // foreach (var b in bill)
- // {
- // if (tasks.Where(t => t.containerNo == b.a.containerCode).Any())
- // {
- // continue;
- // }
- // item.executeStatus = "1";
- // WmsBaseLocation location = b.a;
- // WmsRawStock stock = b.b;
- // int qty = 0;
- // if (stock.totalAmount - stock.frozenAmount <= needNumber)//该料箱全部出
- // {
- // RealOutNumber += stock.totalAmount - stock.frozenAmount;
- // qty = Convert.ToInt32(stock.totalAmount - stock.frozenAmount);
- // stock.updateDate = DateTime.Now;
- // }
- // else
- // {
- // RealOutNumber += needNumber;
- // qty = Convert.ToInt32(needNumber);
- // stock.updateDate = DateTime.Now;
- // }
- // WcsTask wcsTask = new WcsTask()
- // {
- // objid = StaticData.SnowId.NextId(),
- // orderId = item.rawOutstockId,
- // taskType = 30,
- // containerNo = location.containerCode,
- // createBy = "WCS",
- // createTime = DateTime.Now,
- // taskStatus = 0,
- // materialId = item.materialId,
- // currPointId = location.locationId,
- // currPointNo = location.locationCode,
- // nextPointId = ctuEquip.objid,
- // nextPointNo = ctuEquip.equipNo,
- // endPointId = lineEquip.objid,
- // endPointNo = lineEquip.equipNo,
- // equipmentNo = ctuEquip.equipNo,
- // ud1 = location.locColumn,
- // useFlag = 0,
- // qty = qty
- // };
- // tasks.Add(wcsTask);
- // MesBaseBarcodeInfo? mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.barcodeInfo == stock.instockBatch).FirstOrDefault();
- // if (mesBaseBarcodeInfo != null)
- // {
- // WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
- // {
- // rawOutstockDetailId = StaticData.SnowId.NextId(),
- // rawOutstockId = item.rawOutstockId,
- // materialId = item.materialId,
- // createDate = DateTime.Now,
- // createBy = "WCS",
- // taskCode = wcsTask.objid.ToString(),
- // executeStatus = "1",
- // locationCode = location.locationCode,
- // outstockAmount = qty,
- // planAmount = item.outstockAmount,
- // warehouseId = item.warehouseId,
- // materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
- // instockBatch = mesBaseBarcodeInfo.batchCode,
- // stackAmount = qty,
- // outstockPerson = "WCS",
- // outstockTime = DateTime.Now,
- // outstockWay = "2",
- // materialProductionDate = mesBaseBarcodeInfo.productionDate
- // };
- // details.Add(wmsProductOutstockDetail);
- // location.outstockFlag = "1";
- // location.locationStatus = "6";
- // location.updateBy = "WCS";
- // location.updateTime = DateTime.Now;
- // wcsOutstockLock.qty += 1;
- // wcsOutstockLock.boxStatus = 1;
- // dbContext.Update(wcsOutstockLock);
- // dbContext.Update(location);
- // dbContext.Add(wcsTask);
- // dbContext.Update(stock);
- // CreateSuccess = true;
- // if (tasks.Count >= 6)
- // {
- // break;
- // }
- // }
- // }
- // }
- //}
- #endregion
-
- }
- if (CreateSuccess)
- {
- foreach (var orderItem in orderList)
+ if (CreateSuccess)
{
- if (orderItem.beginTime == null)
+ foreach (var orderItem in orderList)
{
- orderItem.beginTime = DateTime.Now;
+ if (orderItem.beginTime == null)
+ {
+ orderItem.beginTime = DateTime.Now;
+ }
+ orderItem.executeStatus = "1";
}
- orderItem.executeStatus = "1";
+ BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21);
+ BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 10);
+ BaseEquip endStationEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
+ bool hasTask = dbContext.WcsTask.Where(t => t.taskType == 32).Any();
+ if (!hasTask)
+ {
+ WcsTask bearAgvTask = new()
+ {
+ objid = StaticData.SnowId.NextId(),
+ orderId = item.rawOutstockId,
+ taskType = 32,
+ containerNo = null,
+ currPointId = startStationEquip.objid,
+ currPointNo = startStationEquip.equipNo,
+ nextPointId = bearAgvEquip.objid,
+ nextPointNo = bearAgvEquip.equipNo,
+ endPointId = endStationEquip.objid,
+ endPointNo = endStationEquip.equipNo,
+ serialNo = SystemData.GetSerialNo(dbContext),
+ taskStatus = 0,
+ createTime = DateTime.Now,
+ createBy = "WCS",
+ materialId = item.materialId,
+ qty = 1,
+ useFlag = 1,
+ equipmentNo = startStationEquip.equipNo,
+ remark = "组装出库",
+ floorNo = 5,
+ masterId = item.materialId,
+ fromFloorNo = 5,
+ };
+ dbContext.Add(bearAgvTask);
+ }
+
+ if (item.beginTime == null)
+ {
+ item.beginTime = DateTime.Now;
+ }
+ dbContext.UpdateRange(orderList);
+ dbContext.AddRange(tasks);
+ dbContext.Update(item);
+ dbContext.Update(wcsOutstockLock);
+ dbContext.SaveChanges();
}
- BaseEquip startStationEquip = StaticData.BaseEquip.First(t => t.objid == 21);
- BaseEquip bearAgvEquip = StaticData.BaseEquip.First(t => t.objid == 10);
- BaseEquip endStationEquip = StaticData.BaseEquip.First(t => t.equipNo == item.endStationCode);
- WcsTask bearAgvTask = new()
- {
- objid = StaticData.SnowId.NextId(),
- orderId = item.orderId,
- taskType = 32,
- containerNo = "",
- currPointId = startStationEquip.objid,
- currPointNo = startStationEquip.equipNo,
- nextPointId = bearAgvEquip.objid,
- nextPointNo = bearAgvEquip.equipNo,
- endPointId = endStationEquip.objid,
- endPointNo = endStationEquip.equipNo,
- serialNo = SystemData.GetSerialNo(dbContext),
- taskStatus = 0,
- createTime = DateTime.Now,
- createBy = "WCS",
- materialId = item.materialId,
- qty = 1,
- useFlag = 1,
- equipmentNo = startStationEquip.equipNo,
- remark = "组装出库",
- floorNo = 5,
- masterId = item.materialId,
- fromFloorNo = 5,
- };
- if (item.beginTime == null)
- {
- item.beginTime = DateTime.Now;
- }
- dbContext.UpdateRange(orderList);
- dbContext.AddRange(tasks);
- dbContext.Add(bearAgvTask);
- dbContext.Update(item);
- dbContext.Update(wcsOutstockLock);
- dbContext.SaveChanges();
}
}
}
@@ -1664,10 +1677,10 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => t.materialId == item.materialId && t.warehouseId == item.warehouseId)
.WhereIf(endEquip.equipType == 13, t => t.completeFlag == "0")
.WhereIf(endEquip.equipType == 12, t => t.completeFlag == "1")
+ .Where(t => t.saleOrderId == item.saleOrderId)
.Where(t => t.totalAmount > t.frozenAmount)
.Select(t => t.palletInfoCode)
.ToList();
-
var wmsBaseLocations = dbContext.WmsBaseLocation
.Where(t => t.activeFlag == "1")
.Where(t => t.delFlag == "0")
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
index e5fc5fd..6219044 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorAGV.cs
@@ -596,10 +596,10 @@ namespace Khd.Core.Wcs.Wcs
}
BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 5);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation
- .First(t => t.locationId == item.endPointId && t.warehouseFloor == 5);
+ .First(t => t.locationId == item.currPointId && t.warehouseFloor == 5);
wmsBaseLocation.outstockFlag = "0";
wmsBaseLocation.locationStatus = "1";
- wmsBaseLocation.containerCode = "";
+ wmsBaseLocation.containerCode = null;
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.updateBy = "WCS";
dbContext.Update(wmsBaseLocation);
@@ -614,14 +614,14 @@ namespace Khd.Core.Wcs.Wcs
newTask.taskStatus = 6;
newTask.objid = StaticData.SnowId.NextId();
lineEquip.equipStatus = 0;
+ dbContext.Remove(item);
dbContext.Update(lineEquip);
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.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 });
}
}
@@ -663,7 +663,6 @@ namespace Khd.Core.Wcs.Wcs
wmsBaseLocation.updateBy = "WCS";
var mesBasePalletInfo = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault();
var wmsProductInstock = dbContext.WmsProductInstock
- .Where(t => t.palletInfoCode == item.containerNo)
.Where(t => t.executeStatus == "1" && t.productType == "2" && t.warehouseFloor == 5)
.FirstOrDefault();
if (mesBasePalletInfo != null && wmsProductInstock != null)
@@ -680,7 +679,7 @@ namespace Khd.Core.Wcs.Wcs
updateBy = "WCS",
updateDate = DateTime.Now,
saleorderCode = wmsProductInstock.saleorderCode,
- saleOrderId = wmsProductInstock.SaleOrderId,
+ saleOrderId = wmsProductInstock.SaleOrderId == null ? 0 : wmsProductInstock.SaleOrderId,
stockType = "2",
productStockId = wmsProductInstock.productInstockId,
qualityStatus = "0",
@@ -783,7 +782,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsCmdLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsCmdLog { cmdStatus = 6 });
}
}
-
+
}
else if (item.taskType == 28)//柜体拆分到原材料
@@ -860,7 +859,8 @@ namespace Khd.Core.Wcs.Wcs
warehouseFloor = 5,
stockType = "1",
totalAmount = 1,
- saleOrderId = 0,
+ saleOrderId = mesBaseBarcodeInfo.saleOrderId,
+ safeFlag=mesBaseBarcodeInfo.safeFlag,
supplierId = mesBaseBarcodeInfo.manufacturerId,
materialId = mesBasePalletInfo.materialId,
qualityStatus = "0",
diff --git a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
index e25db62..8a40bec 100644
--- a/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
+++ b/src/Khd.Core.Wcs/Wcs/FiveFloorCTU.cs
@@ -191,7 +191,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.SaveChanges();
}
}
- }else if (task.taskType == 100)
+ }
+ else if (task.taskType == 100)
{
dbContext.WcsTask.Where(t => t.objid == task.objid).Delete();
//根据rfid找到库位
@@ -690,15 +691,11 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WcsTaskLog.Where(t => t.objid == wcsCmd.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
lock (SystemData.outStockLock)
{
- int wcsTaskCount = dbContext.WcsTask.Where(t => t.taskType == 29).Count();
- if (wcsTaskCount == 0)
- {
- WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
- wcsOutstockLock.qty = 0;
- wcsOutstockLock.boxStatus = 0;
- dbContext.Update(wcsOutstockLock);
- dbContext.SaveChanges();
- }
+ WcsOutstockLock wcsOutstockLock = dbContext.WcsOutstockLock.Where(t => t.warehouseId == 512).First();
+ wcsOutstockLock.qty = 0;
+ wcsOutstockLock.boxStatus = 0;
+ dbContext.Update(wcsOutstockLock);
+ dbContext.SaveChanges();
}
}
else if (item.taskType == 100)//出库任务
diff --git a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
index 15aefe5..72d077d 100644
--- a/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
+++ b/src/Khd.Core.Wcs/Wcs/FourthFloorPoint.cs
@@ -67,7 +67,7 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
- var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.orderId == wcsTask.orderId);
+ var wmsRawOutstock = dbContext.WmsRawOutstock.FirstOrDefault(t => t.rawOutstockId == wcsTask.orderId);
if (wmsRawOutstock != null)
{
var endEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawOutstock.endStationCode);
diff --git a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
index 693d31c..cd49b48 100644
--- a/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
+++ b/src/Khd.Core.Wcs/Wcs/ThirdFloorAGV.cs
@@ -61,32 +61,35 @@ namespace Khd.Core.Wcs.Wcs
bool hasTask = dbContext.WcsTask.Where(t => t.taskType == 41 || t.taskType == 42).Any();
if (!hasTask)
{
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 35);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 35);
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == 31);
BaseEquip agvEquip = StaticData.BaseEquip.First(t => t.objid == 9);
- WcsTask wcsTask = new()
+ if (endEquip.emptyCount != (SystemData.maxTray / 2) && endEquip.emptyCount != SystemData.maxTray)
{
- objid = StaticData.SnowId.NextId(),
- taskType = 42,
- taskStatus = 0,
- useFlag = 1,
- createBy = FloorNo + "楼AGV",
- nextPointId=agvEquip.objid,
- nextPointNo=agvEquip.agvPositionCode,
- currPointId = startEquip.objid,
- currPointNo = startEquip.agvPositionCode,
- endPointId = endEquip.objid,
- endPointNo = endEquip.agvPositionCode,
- containerNo="",
- createTime = DateTime.Now,
- isEmpty="1",
- qty=1,
- };
- dbContext.Add(wcsTask);
- WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
- dbContext.Add(wcsTaskLog);
- dbContext.SaveChanges();
- LogManager.Info("三楼AGV 生成空托盘入收集架任务:" + wcsTask.objid);
+ WcsTask wcsTask = new()
+ {
+ objid = StaticData.SnowId.NextId(),
+ taskType = 42,
+ taskStatus = 0,
+ useFlag = 1,
+ createBy = FloorNo + "楼AGV",
+ nextPointId = agvEquip.objid,
+ nextPointNo = agvEquip.agvPositionCode,
+ currPointId = startEquip.objid,
+ currPointNo = startEquip.agvPositionCode,
+ endPointId = endEquip.objid,
+ endPointNo = endEquip.agvPositionCode,
+ containerNo = null,
+ createTime = DateTime.Now,
+ isEmpty = "1",
+ qty = 1,
+ };
+ dbContext.Add(wcsTask);
+ WcsTaskLog wcsTaskLog = CoreMapper.Map(wcsTask);
+ dbContext.Add(wcsTaskLog);
+ dbContext.SaveChanges();
+ LogManager.Info("三楼AGV 生成空托盘入收集架任务:" + wcsTask.objid);
+ }
}
}
}
@@ -234,7 +237,7 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 41)//库位-翻转机
{
- WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == item.orderId && t.executeStatus == "1");
+ WmsRawOutstockDetail? wmsRawOutstockDetail = dbContext.WmsRawOutstockDetail.FirstOrDefault(t => t.rawOutstockId == item.orderId && t.executeStatus == "0");
if (wmsRawOutstockDetail != null)
{
wmsRawOutstockDetail.executeStatus = "1";
@@ -299,8 +302,8 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 40)//周转位-收集架
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -359,8 +362,8 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 42)//翻转机-收集架
{
//var startEquip = dbContext.WmsBaseLocation.First(t => t.locationId == item.currPointId);
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -418,8 +421,8 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 43)//收集架-周转区
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
- BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == item.endPointId);
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == item.endPointId);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -477,8 +480,8 @@ namespace Khd.Core.Wcs.Wcs
}
else if (item.taskType == 44)//周转区-提升机
{
- BaseEquip startEquip = StaticData.BaseEquip.First(t => t.objid == item.currPointId);
- BaseEquip lineEquip = StaticData.BaseEquip.First(t => t.objid == 3);
+ BaseEquip startEquip = dbContext.BaseEquip.First(t => t.objid == item.currPointId);
+ BaseEquip lineEquip = dbContext.BaseEquip.First(t => t.objid == 3);
WcsCmd wcsCmd = new WcsCmd()
{
objid = StaticData.SnowId.NextId(),
@@ -595,8 +598,6 @@ namespace Khd.Core.Wcs.Wcs
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();
}
if (item.taskType == 39)
@@ -632,6 +633,7 @@ namespace Khd.Core.Wcs.Wcs
materialId = mesBaseBarcodeInfo.materialId,
occupyAmount = 0,
palletInfoCode = item.containerNo,
+ safeFlag = mesBaseBarcodeInfo.safeFlag,
totalAmount = 1,
warehouseFloor = 3,
warehouseId = 311
@@ -684,9 +686,12 @@ namespace Khd.Core.Wcs.Wcs
if (wmsRawOutstockDetail != null)
{
wmsRawOutstockDetail.executeStatus = "2";
- WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.palletInfoCode == item.containerNo).FirstOrDefault();
+ WmsRawStock? wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault();
if (wmsRawStock != null)
{
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31);
+ endEquip.emptyCount = 1;
+ dbContext.Update(endEquip);
dbContext.Update(wmsRawOutstock);
dbContext.Remove(wmsRawStock);
dbContext.Update(wmsBaseLocation);
@@ -702,6 +707,9 @@ namespace Khd.Core.Wcs.Wcs
else if (item.taskType == 42)
{
BaseEquip emptyEquip = dbContext.BaseEquip.First(t => t.objid == 35);
+ BaseEquip endEquip = dbContext.BaseEquip.First(t => t.objid == 31);
+ endEquip.emptyCount = 0;
+ dbContext.Update(endEquip);
emptyEquip.emptyCount += 1;
emptyEquip.equipStatus = 1;
emptyEquip.updateTime = DateTime.Now;
diff --git a/src/Khd.Core.Wcs/appsettings.json b/src/Khd.Core.Wcs/appsettings.json
index c024c85..a0f1046 100644
--- a/src/Khd.Core.Wcs/appsettings.json
+++ b/src/Khd.Core.Wcs/appsettings.json
@@ -14,14 +14,14 @@
"Slot": 1,
"Code": 0
},
- {
- "IP": "192.168.2.31",
- "Port": 102, //102是默认端口
- "CpuType": 40,
- "Rack": 0,
- "Slot": 1,
- "Code": 1
- },
+ //{
+ // "IP": "192.168.2.31",
+ // "Port": 102, //102是默认端口
+ // "CpuType": 40,
+ // "Rack": 0,
+ // "Slot": 1,
+ // "Code": 1
+ //},
{
"IP": "192.168.2.220",
"Port": 102, //102是默认端口
diff --git a/src/Khd.Core.Wpf/Form/FormBoardT.xaml b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
index 0a1d2b7..1af394b 100644
--- a/src/Khd.Core.Wpf/Form/FormBoardT.xaml
+++ b/src/Khd.Core.Wpf/Form/FormBoardT.xaml
@@ -1802,7 +1802,7 @@
ElementStyle="{StaticResource dgCell}"
FontSize="20"
Header="库位数"
- IsReadOnly="True" />
+ IsReadOnly="True" />
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-