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" /> - - - - - - - + + + + + + + - - - - - - - - -