1 year ago
parent 7f3316ded8
commit 6687d850b2

@ -67,7 +67,7 @@ namespace Khd.Core.Api.Controllers
[HttpPost("taskContinue")]
public AgvCompeletedResponse TaskContinue(TaskContinue taskContinue)
{
LogManager.Info($"TaskContinue 接口收到消息: {taskContinue}");
LogManager.Info($"TaskContinue 接口收到消息: {taskContinue.ToJsonString()}");
return _application.TaskContinue(taskContinue);
}

@ -231,7 +231,7 @@ namespace Khd.Core.Application
_dbContext.ChangeTracker.Clear();
var wcsTask = _dbContext.WcsTask
.Where(t => t.taskType == 47)
.Where(t => t.materialId == taskContinue.materialId)
.Where(t => t.containerNo == taskContinue.palletInfoCode)
.FirstOrDefault();
if (wcsTask != null)
{

@ -38,7 +38,7 @@ namespace Khd.Core.Wcs
LoggerUtils logger = new LoggerUtils();
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
try
{
StaticData.BasePlcpointList = dbContext.BasePlcpoint.Where(t => t.isDelete == 0).ToList();//设备交互用

@ -42,7 +42,9 @@ namespace Khd.Core.Wcs
{
if (wmsBaseLocation.locDeep == 1)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 2 && t.locColumn == wmsBaseLocation.locColumn && t.locRow == (wmsBaseLocation.locRow % 2 == 0 ? wmsBaseLocation.locRow - 1 : wmsBaseLocation.locRow + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus == "1")
{
wmsLocation.locationStatus = "2";
@ -60,13 +62,16 @@ namespace Khd.Core.Wcs
{
if (wmsBaseLocation.locDeep == 1)
{
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation.Where(t => t.locDeep == 2 && t.locRow == wmsBaseLocation.locRow && t.locColumn == (wmsBaseLocation.locColumn % 2 == 0 ? wmsBaseLocation.locColumn - 1 : wmsBaseLocation.locColumn + 1)).FirstOrDefault();
WmsBaseLocation? wmsLocation = dbContext.WmsBaseLocation
.Where(t => t.warehouseId == wmsBaseLocation.warehouseId)
.Where(t => t.locDeep == 2 && t.locColumn == wmsBaseLocation.locColumn && t.locRow == (wmsBaseLocation.locRow % 2 == 0 ? wmsBaseLocation.locRow - 1 : wmsBaseLocation.locRow + 1)).FirstOrDefault();
if (wmsLocation != null && wmsLocation.locationStatus != "3" && wmsLocation.locationStatus != "9")
{
wmsLocation.locationStatus = "1";
dbContext.Update(wmsLocation);
}
}
wmsBaseLocation.locationStatus = "1";
}
/// <summary>
@ -149,7 +154,7 @@ namespace Khd.Core.Wcs
var alarmTime = dbContext.DmsRecordAlarmTime.Where(t => t.AlarmRuleId == (long)WaringType).FirstOrDefault();
if (alarmTime != null)
{
dbContext.DmsRecordAlarmTime.Where(t=>t.AlarmId==alarmTime.AlarmId).Delete();
dbContext.DmsRecordAlarmTime.Where(t => t.AlarmId == alarmTime.AlarmId).Delete();
dbContext.DmsRecordAlarmInfo.Where(t => t.AlarmId == alarmTime.AlarmId)
.Update(t => new DmsRecordAlarmInfo() { AlarmStatus = "2" });
}
@ -201,6 +206,12 @@ namespace Khd.Core.Wcs
}
internal static WmsBaseLocation? GetLowerLocation(WmsBaseLocation wmslocation, DefaultDbContext dbContext)
{
return dbContext.WmsBaseLocation.Where(t => t.warehouseId == wmslocation.warehouseId)
.Where(t => t.locDeep == 2 && t.locColumn == wmslocation.locColumn && t.locRow == (wmslocation.locRow % 2 == 0 ? wmslocation.locRow - 1 : wmslocation.locRow + 1)).FirstOrDefault();
}
public readonly static object SecondTaskLock = new();
public readonly static object ThirdTaskLock = new();
public readonly static object FiveTaskLock = new();

@ -14,6 +14,7 @@ using Newtonsoft.Json;
using SixLabors.ImageSharp;
using System.Data;
using System.Drawing.Text;
using Thrift.Protocol;
using Z.EntityFramework.Plus;
namespace Khd.Core.Wcs.Wcs
@ -146,6 +147,24 @@ namespace Khd.Core.Wcs.Wcs
{
WmsBaseLocation? wmslocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationCode == item.OriLocationCode);
WmsBaseLocation? toLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.locationCode == item.TargetLocationCode);
if (wmslocation != null && wmslocation.locDeep == 1)
{
//查询浅库位状态
var lowerLocation = SystemData.GetLowerLocation(wmslocation, dbContext);
if (lowerLocation != null && (lowerLocation == null || lowerLocation.locationStatus != "1" || !string.IsNullOrEmpty(lowerLocation.containerCode)))
{
continue;
}
}
if (toLocation != null && toLocation.locDeep == 1)
{
//查询浅库位状态
var lowerLocation = SystemData.GetLowerLocation(toLocation, dbContext);
if (lowerLocation != null && (lowerLocation == null || lowerLocation.locationStatus != "1" || !string.IsNullOrEmpty(lowerLocation.containerCode)))
{
continue;
}
}
if (wmslocation != null && toLocation != null)
{
var RemoveTask = new WcsTask()
@ -170,6 +189,8 @@ namespace Khd.Core.Wcs.Wcs
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(RemoveTask);
SystemData.LockOutLocation(toLocation, dbContext);
SystemData.LockOutLocation(wmslocation, dbContext);
wmslocation.locationStatus = "4";
toLocation.locationStatus = "4";
dbContext.Add(RemoveTask);
dbContext.Add(wcsTaskLog);
item.ExecuteStatus = "1";
@ -177,6 +198,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(item);
dbContext.SaveChanges();
Console.WriteLine(DateTime.Now + $":创建移库任务成功:{item.OriLocationCode}--{item.TargetLocationCode}");
_logger.Info("创建移库任务成功:" + item.OriLocationCode + "--" + item.TargetLocationCode);
}
}
}
@ -535,7 +557,7 @@ namespace Khd.Core.Wcs.Wcs
{
dbContext.ChangeTracker.Clear();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 29);
if (baseEquip.emptyCount == 1)
//if (baseEquip.emptyCount == 1)
{
WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.nextPointId == 28).FirstOrDefault();
if (wcsTask == null)
@ -1485,6 +1507,8 @@ namespace Khd.Core.Wcs.Wcs
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
while (true)
{
var isCreate = false;
string message = "";
try
{
dbContext.ChangeTracker.Clear();
@ -1614,8 +1638,8 @@ namespace Khd.Core.Wcs.Wcs
.Any();
if (!hasLocation)
{
Console.WriteLine(DateTime.Now + $":目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
_logger.Info($"目标库位{toLocation.locationCode}的浅库位库位状态异常,无法移库");
Console.WriteLine(DateTime.Now + $":目标库位的浅库位库位状态异常,无法移库");
_logger.Info($"目标库位的浅库位库位状态异常,无法移库");
continue;
}
else
@ -1643,7 +1667,7 @@ namespace Khd.Core.Wcs.Wcs
{
objid = StaticData.SnowId.NextId(),
orderId = item.productOutstockId,
taskType = StaticTaskType.SecondRemove,
taskType = StaticTaskType.FiveRemove,
containerNo = wmsBaseLocation.containerCode,
createBy = "WCS",
createTime = DateTime.Now.AddSeconds(-10),
@ -1743,6 +1767,7 @@ namespace Khd.Core.Wcs.Wcs
}
else
{
message = "创建移库任务失败";
Console.WriteLine(DateTime.Now + $":{wmsBaseLocation.locationCode}库位状态异常,无法移库");
_logger.Info($"{wmsBaseLocation.locationCode}库位状态异常,无法移库");
continue;
@ -1794,6 +1819,7 @@ namespace Khd.Core.Wcs.Wcs
dbContext.Update(location);
dbContext.Add(wcsTask);
dbContext.Update(stock);
isCreate = true;
break;
}
}
@ -1803,6 +1829,7 @@ namespace Khd.Core.Wcs.Wcs
}
dbContext.Update(item);
dbContext.SaveChanges();
}
}
}
@ -1810,9 +1837,18 @@ namespace Khd.Core.Wcs.Wcs
}
catch (Exception ex)
{
message += ex.Message;
Console.WriteLine(ex.Message + ex.StackTrace);
_logger.Error(ex.Message + "\n" + ex.StackTrace);
}
if (isCreate)
{
SystemData.DeleteWaringLog(dbContext, WaringType.);
}
else
{
SystemData.InsertWaringLog(dbContext, WaringType., message);
}
Thread.Sleep(5000);
}
}

@ -203,7 +203,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
dbContext.ChangeTracker.Clear();
dbContext.ChangeTracker.Clear();
var linesignal = StaticData.PlcDic[0].Read(this.linesignal01.plcpointAddress);
int taskCount = dbContext.WcsTask.Where(t => t.nextPointId == 6 && t.taskStatus > 0 && t.endPointId == 1).Count();
int firstFloorCount = dbContext.WcsTask.Where(t => t.currPointId == 1).Count();
@ -286,7 +286,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
dbContext.ChangeTracker.Clear();//上次查出1不加这行数据库实际2查出1
dbContext.ChangeTracker.Clear();//上次查出1不加这行数据库实际2查出1
var RFID001Value = StaticData.PlcDic[0].ReadRFID(this.RFID001.plcpointAddress); //一楼RFID 读
var linesignal01Value = StaticData.PlcDic[0].Read(this.linesignal01.plcpointAddress); //到位信号 读
//正常读到plc值
@ -532,7 +532,7 @@ namespace Khd.Core.Wcs.Wcs
//提升机空闲
if (Convert.ToInt32(equipstate06Value) == 0)
{
dbContext.ChangeTracker.Clear();
dbContext.ChangeTracker.Clear();
var wcsTasks = dbContext.WcsTask.Where(t => t.nextPointId == T01 && t.taskStatus < 5)
.OrderBy(t => t.ud1).OrderBy(t => t.createTime).ToList();
foreach (var wcsTask in wcsTasks)

@ -451,20 +451,36 @@ namespace Khd.Core.Wcs.Wcs
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
SystemData.UnLockOutLocation(toLocation, dbContext);
dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation
{
returnFlag = "0",
locationStatus = "1",
containerCode = null,
updateTime = DateTime.Now
});
dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation
{
locationStatus = "1",
returnFlag = wmsBaseLocation.returnFlag,
containerCode = item.containerNo,
updateTime = DateTime.Now
});
toLocation.returnFlag = wmsBaseLocation.returnFlag;
wmsBaseLocation.returnFlag = "0";
wmsBaseLocation.locationStatus = "1";
wmsBaseLocation.containerCode = null;
wmsBaseLocation.updateTime = DateTime.Now;
dbContext.Update(wmsBaseLocation);
dbContext.SaveChanges();
toLocation.locationStatus = "1";
toLocation.containerCode = item.containerNo;
toLocation.updateTime = DateTime.Now;
dbContext.Update(toLocation);
dbContext.SaveChanges();
//dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation
//{
// returnFlag = "0",
// locationStatus = "1",
// containerCode = null,
// updateTime = DateTime.Now
//});
//dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation
//{
// locationStatus = "1",
// returnFlag = wmsBaseLocation.returnFlag,
// containerCode = item.containerNo,
// updateTime = DateTime.Now
//});
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
#region 插入移库记录
@ -520,7 +536,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WmsMoveDetail.Add(wmsMoveDetail);
#endregion
dbContext.SaveChanges();
dbContextTransaction.Commit();
SystemData.SendPlcLocation(wmsBaseLocation);
@ -794,7 +809,7 @@ namespace Khd.Core.Wcs.Wcs
updateDate = DateTime.Now,
warehouseId = 511,
};
var WmsRawInstock = dbContext.WmsRawInstock.FirstOrDefault(t => t.materialBarCode == mesBasePalletInfo.materialBarcode && t.instockType == "2");
var WmsRawInstock = dbContext.WmsRawInstock.FirstOrDefault(t => t.materialBarCode == mesBasePalletInfo.materialBarcode && (t.instockType == "2"|| t.instockType == "4"));
if (WmsRawInstock != null)
{
WmsRawInstock.returnFlag = null;

@ -228,6 +228,7 @@ namespace Khd.Core.Wcs.Wcs
else if (wcsTask.taskStatus == 6) //出库任务,小车任务是完成状态
{
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 1);//提升机
dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
newTask.objid = StaticData.SnowId.NextId();
@ -236,6 +237,8 @@ namespace Khd.Core.Wcs.Wcs
newTask.nextPointNo = nextEquip.equipNo;
newTask.currPointId = baseEquip.objid;
newTask.currPointNo = baseEquip.equipNo;
newTask.endPointId = endEquip.objid;
newTask.endPointNo = endEquip.equipNo;
newTask.ud1 = 30;
newTask.fromFloorNo = FloorNo;
newTask.taskType = 6;//成品出库

@ -872,6 +872,16 @@ namespace Khd.Core.Wcs.Wcs
var wmsProductStock = dbContext.WmsProductStock.FirstOrDefault(t => t.locationCode == item.currPointNo);
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsBaseLocation toLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).First();
wmsBaseLocation.ContainerStatus = null;
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.locationStatus = "1";
dbContext.SaveChanges();
toLocation.locationStatus = "1";
toLocation.containerCode = item.containerNo;
toLocation.updateTime = DateTime.Now;
dbContext.SaveChanges();
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
SystemData.UnLockOutLocation(toLocation, dbContext);
if (wmsProductStock != null)
@ -879,18 +889,8 @@ namespace Khd.Core.Wcs.Wcs
wmsProductStock.locationCode = item.endPointNo;
dbContext.Update(wmsProductStock);
}
dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation
{
locationStatus = "1",
containerCode = null,
updateTime = DateTime.Now
});
dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation
{
locationStatus = "1",
containerCode = item.endPointNo,
updateTime = DateTime.Now
});
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 8 });
@ -898,7 +898,7 @@ namespace Khd.Core.Wcs.Wcs
var wmsMove = dbContext.WmsMove.Where(t => t.MoveId == item.orderId).FirstOrDefault();
if (wmsMove == null)
{
wmsMove = new WmsMove();
wmsMove = new WmsMove();
wmsMove.MoveId = StaticData.SnowId.NextId();
wmsMove.TaskCode = StaticData.SnowId.NextId().ToString();
wmsMove.WarehouseId = wmsBaseLocation.warehouseId;
@ -948,9 +948,8 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WmsMoveDetail.Add(wmsMoveDetail);
#endregion
transaction.Commit();
dbContext.SaveChanges();
transaction.Commit();
SystemData.SendPlcLocation(wmsBaseLocation);
SystemData.SendPlcLocation(toLocation);

@ -578,6 +578,16 @@ namespace Khd.Core.Wcs.Wcs
var wmsRawStock = dbContext.WmsRawStock.Where(t => t.locationCode == item.currPointNo).FirstOrDefault();
WmsBaseLocation wmsBaseLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).First();
WmsBaseLocation toLocation = dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).First();
wmsBaseLocation.ContainerStatus = null;
wmsBaseLocation.updateTime = DateTime.Now;
wmsBaseLocation.locationStatus = "1";
dbContext.SaveChanges();
toLocation.locationStatus = "1";
toLocation.containerCode = item.containerNo;
toLocation.updateTime=DateTime.Now;
dbContext.SaveChanges();
SystemData.UnLockOutLocation(wmsBaseLocation, dbContext);
SystemData.UnLockOutLocation(toLocation, dbContext);
if (wmsRawStock != null)
@ -585,18 +595,8 @@ namespace Khd.Core.Wcs.Wcs
wmsRawStock.locationCode = item.endPointNo;
dbContext.Update(wmsRawStock);
}
dbContext.WmsBaseLocation.Where(t => t.locationId == item.currPointId).Update(t => new WmsBaseLocation
{
locationStatus = "1",
containerCode = null,
updateTime = DateTime.Now
});
dbContext.WmsBaseLocation.Where(t => t.locationId == item.endPointId).Update(t => new WmsBaseLocation
{
locationStatus = "1",
containerCode = item.containerNo,
updateTime = DateTime.Now
});
dbContext.Remove(item);
dbContext.WcsTaskLog.Where(t => t.objid == item.objid).Update(t => new WcsTaskLog() { taskStatus = 6 });
@ -654,7 +654,6 @@ namespace Khd.Core.Wcs.Wcs
dbContext.WmsMoveDetail.Add(wmsMoveDetail);
#endregion
dbContext.SaveChanges();
transaction.Commit();
SystemData.SendPlcLocation(wmsBaseLocation);

@ -54,7 +54,7 @@ namespace Khd.Core.Wcs.Wcs
{
try
{
dbContext.ChangeTracker.Clear();
dbContext.ChangeTracker.Clear();
//入库任务
var rfid = StaticData.PlcDic[0].ReadRFID(LineRFID.plcpointAddress);
var isSignal = StaticData.PlcDic[0].Read(LineSignal.plcpointAddress);
@ -101,7 +101,7 @@ namespace Khd.Core.Wcs.Wcs
.Where(t => DeepContainerCodes.Contains(t.palletInfoCode))
.Where(t => t.warehouseId == 311).ToList();
if (wmsRawStocks.Count > 0)
{
{
//优先找同销售订单的有库存的深库位对应的浅库位
foreach (var wmsRawStock in wmsRawStocks)
{
@ -192,7 +192,7 @@ namespace Khd.Core.Wcs.Wcs
Console.WriteLine(DateTime.Now + ":三楼楼接驳位调度入库任务,未找到库位");
_logger.Info("三楼接驳位调度入库任务,未找到库位");
// TODO: 没有找到库位,添加报警处理
SystemData.InsertWaringLog(dbContext,WaringType.);
SystemData.InsertWaringLog(dbContext, WaringType.);
Thread.Sleep(1000 * 5);
}
@ -203,6 +203,7 @@ namespace Khd.Core.Wcs.Wcs
else if (wcsTask.taskStatus == 6)//小车任务是完成状态,说明是出库
{
BaseEquip nextEquip = StaticData.BaseEquip.First(t => t.equipType == 2);//提升机
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == wcsTask.floorNo);
dbContext.Remove(wcsTask);
WcsTask newTask = CoreMapper.Map<WcsTask>(wcsTask);
newTask.objid = StaticData.SnowId.NextId();
@ -212,6 +213,8 @@ namespace Khd.Core.Wcs.Wcs
newTask.currPointId = baseEquip.objid;
newTask.currPointNo = baseEquip.equipNo;
newTask.fromFloorNo = FloorNo;
newTask.endPointId= endEquip.objid;
newTask.endPointNo = endEquip.equipNo;
newTask.taskStatus = 0;
newTask.ud1 = 10;
newTask.updateTime = DateTime.Now;

@ -6,6 +6,7 @@
xmlns:local="clr-namespace:Khd.Core.Wpf.myConverter"
mc:Ignorable="d"
WindowStyle="None"
Closing="Window_Closing"
WindowStartupLocation="CenterOwner"
xmlns:hc="https://handyorg.github.io/handycontrol"
WindowState="Maximized"
@ -2348,16 +2349,15 @@ FontSize="25" Width="160" Height="80" VerticalAlignment="Top" HorizontalAlignmen
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border BorderBrush="White" BorderThickness="2" Grid.ColumnSpan="1" Grid.Column="4" Grid.RowSpan="2" Margin="20 0 0 0">
<Border BorderBrush="White" BorderThickness="2" Grid.ColumnSpan="1" Width="150" Grid.Column="4" Grid.RowSpan="2" Margin="20 0 0 0">
<StackPanel Orientation="Vertical" >
<TextBlock x:Name="OutOrder" Text="待出库:" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center"/>
<TextBlock x:Name="thisOutEndStation" Background="Transparent" Grid.ColumnSpan="2" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,20,0,0"/>
<ListBox x:Name='OutEndStations' HorizontalAlignment="Center" Background="Transparent" Foreground="White">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding EndStationName}" Foreground="{Binding ForeColor}" FontSize="18"/>
<TextBlock Text="{Binding EndStationName}" Foreground="{Binding ForeColor}" FontSize="25"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
@ -2519,7 +2519,7 @@ FontSize="25" Width="160" Height="80" VerticalAlignment="Top" HorizontalAlignmen
<Grid>
<hc:TextBox hc:InfoElement.ShowClearButton="True" IsReadOnly="True" x:Name="outMaterialNameTxt" FontSize="50" LostFocus="txtOutBox_TextChanged" Width="700" HorizontalAlignment="Left" VerticalAlignment="Center" Height="80" Grid.Row="2" Grid.Column="3" Grid.ColumnSpan="3"/>
</Grid>
<Button Content="确认出库" Grid.Column="4" Grid.Row="3" Grid.ColumnSpan="2" Width="400" Height="100" Margin="100,0,0,0" FontSize="35" Background="#346DFF" Foreground="White" Click="OutRawBaseLocaltion_Click"/>
</StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="3" Grid.ColumnSpan="6">
<TextBlock Text="物料规格:" Width="280" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50"/>
@ -2527,7 +2527,8 @@ FontSize="25" Width="160" Height="80" VerticalAlignment="Top" HorizontalAlignmen
<hc:TextBox hc:InfoElement.ShowClearButton="True" IsReadOnly="True" x:Name="outMaterialSpecTxt" FontSize="50" LostFocus="txtOutBarCode_TextChanged" Width="700" HorizontalAlignment="Left" VerticalAlignment="Center" Height="80" Grid.Row="3" Grid.Column="3" Grid.ColumnSpan="3"/>
</Grid>
<Button Content="确认出库" Grid.Column="4" Grid.Row="5" Grid.ColumnSpan="2" Width="400" Height="100" Margin="100,0,0,0" FontSize="35" Background="#346DFF" Foreground="White" Click="OutRawBaseLocaltion_Click"/>
<Button Content="背负式小车捡料完成" Grid.Column="4" Grid.Row="6" Grid.ColumnSpan="2" Width="400" Height="100" Margin="100,0,0,0" FontSize="35" Background="#346DFF" Foreground="White" Click="btnBearConfirmBox_Click"/>
</StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="4" Grid.ColumnSpan="6">
<TextBlock Text="库存:" Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50"/>
@ -2539,7 +2540,7 @@ FontSize="25" Width="160" Height="80" VerticalAlignment="Top" HorizontalAlignmen
<Grid>
<hc:TextBox x:Name="txtOutScan" Margin="0,0,0,0" FontSize="50" Width="300" HorizontalAlignment="Left" VerticalAlignment="Center" Height="80" Grid.Row="4" Grid.Column="3" Grid.ColumnSpan="3" KeyDown="OutEnter" />
</Grid>
<Button Content="背负式小车捡料完成" Grid.Column="4" Grid.Row="6" Grid.ColumnSpan="2" Width="400" Height="100" Margin="100,0,0,0" FontSize="35" Background="#346DFF" Foreground="White" Click="btnBearConfirmBox_Click"/>
<Button Content="创建背负小车任务" Grid.Column="4" Grid.Row="6" Grid.ColumnSpan="2" Width="400" Height="100" Margin="100,0,0,0" FontSize="35" Background="#346DFF" Foreground="White" Click="createBearConfirmBox_Click"/>
</StackPanel>

@ -19,6 +19,7 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Tokens;
using Newtonsoft.Json;
using SixLabors.ImageSharp.Drawing;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -481,7 +482,7 @@ namespace Khd.Core.Wpf.Form
saleOrderId = t.Key.saleOrderId,
thisOutAmount = t.Sum(x => x.totalAmount) - t.Sum(x => x.frozenAmount)
});
List<WmsRawReturn> endStationCodeOutRaw = wmsRawReturns.Where(t => t.endStationCode == baseEquip.endStationCode).ToList();
List<WmsRawReturn> endStationCodeOutRaw = wmsRawReturns.Where(t => baseEquip.endStationCode.Contains(t.endStationCode)).ToList();
List<long?> materialIds = endStationCodeOutRaw.Select(t => t.materialId).ToList();
List<MesBaseMaterialInfo> mesBaseMaterialInfos = dbContext.MesBaseMaterialInfo.Where(t => materialIds.Contains(t.MaterialId)).ToList();
var bill = endStationCodeOutRaw.GroupBy(t => new { t.materialId })
@ -550,10 +551,10 @@ namespace Khd.Core.Wpf.Form
{
this.OutEndStations.ItemsSource = null;
this.OutEndStations.Items.Clear();
this.OutEndStations.ItemsSource = list.Distinct().Select(t => new
this.OutEndStations.ItemsSource = list.Distinct().OrderBy(t => t).Select(t => new
{
EndStationName = t,
ForeColor = baseEquip.endStationCode == null ? Brushes.Black : baseEquip.endStationCode.Contains(t) ? Brushes.Green : Brushes.Black
ForeColor = baseEquip.endStationCode == null ? Brushes.Black : baseEquip.endStationCode.Contains(t) ? Brushes.Red : Brushes.Black
});
this.OutEndStations.Items.Refresh();
});
@ -1566,32 +1567,37 @@ namespace Khd.Core.Wpf.Form
{
if (count > 0)
{
MessageBoxResult messageBoxResult1 = HandyControl.Controls.MessageBox.Show("是否需要背负式小车返回", "提示信息", MessageBoxButton.YesNoCancel, MessageBoxImage.Information);
MessageBoxResult messageBoxResult1 = HandyControl.Controls.MessageBox.Show("本次出库任务是否捡料完成", "提示信息", MessageBoxButton.YesNo, MessageBoxImage.Information);
if (messageBoxResult1 == MessageBoxResult.Yes)
{
BaseEquip baseEquip = dbContext.BaseEquip.Where(t => t.objid == 10).First();
List<string>? list = JsonConvert.DeserializeObject<List<string>>(baseEquip.endStationCode);
new SelectOutRawForm(_host, "", 3, list).ShowDialog();
if (string.IsNullOrEmpty(SelectOutRawForm.StationCode))
{
return;
}
else
{
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.equipNo == SelectOutRawForm.StationCode);
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsCmd);
wcsTask.taskStatus = 0;
wcsTask.createTime = DateTime.Now;
wcsTask.useFlag = 1;
wcsTask.objid = Global.SnowId.NextId();
wcsTask.endPointId = endEquip.objid;
wcsTask.endPointNo = endEquip.equipNo;
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.Add(wcsTask);
}
}
else
//MessageBoxResult messageBoxResult1 = HandyControl.Controls.MessageBox.Show("是否需要背负式小车返回?", "提示信息", MessageBoxButton.YesNoCancel, MessageBoxImage.Information);
//if (messageBoxResult1 == MessageBoxResult.Yes)
//{
// BaseEquip baseEquip = dbContext.BaseEquip.Where(t => t.objid == 10).First();
// List<string>? list = JsonConvert.DeserializeObject<List<string>>(baseEquip.endStationCode);
// new SelectOutRawForm(_host, "", 3, list).ShowDialog();
// if (string.IsNullOrEmpty(SelectOutRawForm.StationCode))
// {
// return;
// }
// else
// {
// BaseEquip endEquip = dbContext.BaseEquip.First(t => t.equipNo == SelectOutRawForm.StationCode);
// WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcsCmd);
// wcsTask.taskStatus = 0;
// wcsTask.createTime = DateTime.Now;
// wcsTask.useFlag = 1;
// wcsTask.objid = Global.SnowId.NextId();
// wcsTask.endPointId = endEquip.objid;
// wcsTask.endPointNo = endEquip.equipNo;
// WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
// dbContext.Add(wcsTaskLog);
// dbContext.Add(wcsTask);
// }
//}
//else
{
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
baseEquip.endStationCode = string.Empty;
@ -1608,7 +1614,6 @@ namespace Khd.Core.Wpf.Form
baseEquip.ud3 = null;
dbContext.Update(baseEquip);
dbContext.SaveChanges();
}
if (wcsCmd.taskStatus == 3)
@ -2688,193 +2693,186 @@ namespace Khd.Core.Wpf.Form
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var wmsRawStock = dbContext.WmsRawStock
.FirstOrDefault(t => t.instockBatch == txtOutBarCode.Text && t.palletInfoCode == txtOutBox.Text);
if (wmsRawStock == null)
{
scanOutMsg.Text = "库存已经被清空!";
return;
}
decimal outScan = Convert.ToDecimal(this.txtOutScan.Text);
if (outScan > wmsRawStock.totalAmount - wmsRawStock.frozenAmount)
{
scanOutMsg.Text = "出库数量不能大于库存数量!";
return;
}
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(txtOutBox.Text) && !string.IsNullOrEmpty(txtOutBarCode.Text))
{
var wmsRawStock = dbContext.WmsRawStock
.FirstOrDefault(t => t.instockBatch == txtOutBarCode.Text && t.palletInfoCode == txtOutBox.Text);
if (wmsRawStock == null)
var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtOutBarCode.Text);
if (mesBaseBarcodeInfo != null)
{
scanOutMsg.Text = "库存已经被清空!";
return;
}
decimal outScan = Convert.ToDecimal(this.txtOutScan.Text);
if (outScan > wmsRawStock.totalAmount - wmsRawStock.frozenAmount)
{
scanOutMsg.Text = "出库数量不能大于库存数量!";
return;
}
var wcsTask = dbContext.WcsTask.Where(t => t.containerNo == txtOutBox.Text).FirstOrDefault();
if (wcsTask == null)
{
scanOutMsg.Text = "出库失败非CTU出库任务无法出库!";
return;
}
else
{
var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtOutBarCode.Text);
if (mesBaseBarcodeInfo != null)
var list = JsonConvert.DeserializeObject<List<string>>(baseEquip.endStationCode);
var wmsRawOutstocks = dbContext.WmsRawOutstock
.Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount && t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId) && baseEquip.endStationCode.Contains(t.endStationCode))
.ToList();
if (wmsRawOutstocks.Count > 0)
{
WmsRawOutstock? wmsRawOutstock = dbContext.WmsRawOutstock
.Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount && t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId) && t.endStationCode == baseEquip.endStationCode).FirstOrDefault();
if (wmsRawOutstock != null)
int index = 0;
var sort = list.Select(t => new
{
wmsRawOutstock.realOutstockAmount += outScan;
if (wmsRawOutstock.outstockAmount == wmsRawOutstock.realOutstockAmount)
stationCode = t,
index = index++
});
wmsRawOutstocks = wmsRawOutstocks.OrderBy(t => sort.FirstOrDefault(s => s.stationCode == t.endStationCode) != null ? sort.FirstOrDefault(s => s.stationCode == t.endStationCode).index : 99).ToList();
decimal? sum = wmsRawOutstocks.Sum(t => (t.outstockAmount - t.realOutstockAmount));
if (outScan > sum)
{
scanOutMsg.Text = "出库数量不能大于当前出库的订单的数量";
return;
}
foreach (var item in wmsRawOutstocks)
{
decimal outAmount = 0;
if (item.outstockAmount - item.realOutstockAmount > outScan)
{
wmsRawOutstock.executeStatus = "2";
item.realOutstockAmount += outScan;
outAmount += outScan;
}
else if (wmsRawOutstock.realOutstockAmount > wmsRawOutstock.outstockAmount)
else
{
scanOutMsg.Text = "出库数量不能大于申请单数量,当前出库数量为:" + (wmsRawOutstock.realOutstockAmount - outScan) + ",申请单数量为:" + wmsRawOutstock.outstockAmount + "!";
return;
outScan -= (item.outstockAmount - item.realOutstockAmount.Value);
outAmount = item.outstockAmount - item.realOutstockAmount.Value;
item.realOutstockAmount = item.outstockAmount;
item.executeStatus = "2";
item.endTime = DateTime.Now;
}
wmsRawStock.totalAmount -= outScan;
if (wmsRawStock.totalAmount <= 0)
{
dbContext.Remove(wmsRawStock);
dbContext.Update(wmsRawOutstock);
}
else
{
dbContext.Update(wmsRawStock);
dbContext.Update(wmsRawOutstock);
}
if (mesBaseBarcodeInfo != null)
wmsRawStock.totalAmount -= outAmount;
if (wmsRawStock.totalAmount == 0)
{
WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
{
rawOutstockDetailId = Global.SnowId.NextId(),
rawOutstockId = wmsRawOutstock.rawOutstockId,
materialId = mesBaseBarcodeInfo.materialId,
createDate = DateTime.Now,
createBy = "WCS",
taskCode = wcsTask.objid.ToString(),
executeStatus = "2",
locationCode = wcsTask.currPointNo,
outstockAmount = outScan,
planAmount = outScan,
warehouseId = 512,
materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
instockBatch = mesBaseBarcodeInfo.batchCode,
stackAmount = outScan,
outstockPerson = "WCS",
outstockTime = DateTime.Now,
outstockWay = "2",
materialProductionDate = mesBaseBarcodeInfo.productionDate
};
dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
dbContext.WmsRawStock.Remove(wmsRawStock);
}
else
{
dbContext.WmsRawStock.Update(wmsRawStock);
}
WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
{
rawOutstockDetailId = Global.SnowId.NextId(),
rawOutstockId = item.rawOutstockId,
materialId = mesBaseBarcodeInfo.materialId,
createDate = DateTime.Now,
createBy = "WCS",
executeStatus = "2",
locationCode = wmsRawStock.locationCode,
outstockAmount = outScan,
planAmount = item.outstockAmount,
warehouseId = 512,
materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
instockBatch = mesBaseBarcodeInfo.batchCode,
stackAmount = mesBaseBarcodeInfo.batchFlag == "1" ? mesBaseBarcodeInfo.amount : 1,
outstockPerson = "WCS",
outstockTime = DateTime.Now,
outstockWay = "2",
materialProductionDate = mesBaseBarcodeInfo.productionDate
};
dbContext.Add(wmsProductOutstockDetail);
dbContext.Update(item);
dbContext.SaveChanges();
}
else
}
else
{
if (wmsRawStock.safeFlag != "1")
{
// 没有申请单
// 如果选中了出库单,并且无需要出库的申请单,则禁止出库
//if (!string.IsNullOrEmpty(baseEquip.endStationCode))
//{
// scanOutMsg.Text = "申请单里该条码无需出库!";
// return;
//}
if (wmsRawStock.safeFlag != "1")
scanOutMsg.Text = "该条码不是安全库存,且无申请单,禁止出库!";
return;
}
if (mesBaseBarcodeInfo.PurchaseOrderId == null)
{
wmsRawStock.totalAmount -= outScan;
if (wmsRawStock.totalAmount == 0)
{
scanOutMsg.Text = "该条码不是安全库存,且无申请单,禁止出库!";
return;
}
if (mesBaseBarcodeInfo.PurchaseOrderId == null)
{
wmsRawStock.totalAmount -= outScan;
if (wmsRawStock.totalAmount == 0)
{
dbContext.WmsRawStock.Remove(wmsRawStock);
}
else
{
dbContext.WmsRawStock.Update(wmsRawStock);
}
#region 插入rawOutstock
string timeStamp = DateTime.Now.ToString("yyyyMMddHHmmss");
WmsRawOutstock newWmsRawOutstock = new WmsRawOutstock();
newWmsRawOutstock.taskCode = timeStamp + "CTU" + Random.Shared.Next(10, 99);
newWmsRawOutstock.warehouseId = 512;
newWmsRawOutstock.locationCode = wcsTask.currPointNo;
newWmsRawOutstock.stationId = 512;
newWmsRawOutstock.materialId = mesBaseBarcodeInfo.materialId;
newWmsRawOutstock.materialBatch = mesBaseBarcodeInfo.barcodeInfo;
newWmsRawOutstock.palletInfoCode = wcsTask.containerNo;
newWmsRawOutstock.outstockAmount = outScan;
newWmsRawOutstock.realOutstockAmount = outScan;
newWmsRawOutstock.operationType = "1";
newWmsRawOutstock.taskType = "1";
newWmsRawOutstock.auditStatus = "1";
newWmsRawOutstock.applyBy = "CtuGun";
newWmsRawOutstock.applyDate = DateTime.Now;
newWmsRawOutstock.executeStatus = "2";
newWmsRawOutstock.saleOrderId = mesBaseBarcodeInfo.saleOrderId;
newWmsRawOutstock.updateDate = DateTime.Now;
newWmsRawOutstock.beginTime = DateTime.Now;
newWmsRawOutstock.endTime = DateTime.Now;
dbContext.WmsRawOutstock.Add(newWmsRawOutstock);
dbContext.SaveChanges();
#endregion
//if (mesBaseBarcodeInfo != null)
//{
// WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
// {
// rawOutstockDetailId = Global.SnowId.NextId(),
// rawOutstockId = 0,
// materialId = mesBaseBarcodeInfo.materialId,
// createDate = DateTime.Now,
// createBy = "WCS",
// taskCode = wcsTask.objid.ToString(),
// executeStatus = "2",
// locationCode = wcsTask.currPointNo,
// outstockAmount = outScan,
// planAmount = outScan,
// warehouseId = 512,
// materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
// instockBatch = mesBaseBarcodeInfo.batchCode,
// stackAmount = outScan,
// outstockPerson = "WCS",
// outstockTime = DateTime.Now,
// outstockWay = "2",
// materialProductionDate = mesBaseBarcodeInfo.productionDate
// };
// dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
//}
// dbContext.SaveChanges();
dbContext.WmsRawStock.Remove(wmsRawStock);
}
else
{
scanOutMsg.Text = "该条码的销售订单不正确";
txtOutScan.Text = string.Empty;
txtOutBarCode.Text = string.Empty;
outMaterialSpecTxt.Text = string.Empty;
outMaterialNameTxt.Text = string.Empty;
txtOutBox.Text = string.Empty;
txtOutBox.Focus();
return;
}
}
dbContext.WmsRawStock.Update(wmsRawStock);
scanOutMsg.Text = "出库成功!";
txtOutScan.Text = string.Empty;
txtOutBarCode.Text = string.Empty;
outMaterialSpecTxt.Text = string.Empty;
outMaterialNameTxt.Text = string.Empty;
txtOutBox.Text = string.Empty;
txtOutBox.Focus();
}
else
{
scanOutMsg.Text = "未查询到该条码信息!";
}
#region 插入rawOutstock
string timeStamp = DateTime.Now.ToString("yyyyMMddHHmmss");
WmsRawOutstock newWmsRawOutstock = new WmsRawOutstock();
newWmsRawOutstock.taskCode = timeStamp + "CTU" + Random.Shared.Next(10, 99);
newWmsRawOutstock.warehouseId = 512;
newWmsRawOutstock.locationCode = wmsRawStock.locationCode;
newWmsRawOutstock.stationId = 512;
newWmsRawOutstock.materialId = mesBaseBarcodeInfo.materialId;
newWmsRawOutstock.materialBatch = mesBaseBarcodeInfo.barcodeInfo;
newWmsRawOutstock.palletInfoCode = wmsRawStock.palletInfoCode;
newWmsRawOutstock.outstockAmount = outScan;
newWmsRawOutstock.realOutstockAmount = outScan;
newWmsRawOutstock.operationType = "1";
newWmsRawOutstock.taskType = "1";
newWmsRawOutstock.auditStatus = "1";
newWmsRawOutstock.applyBy = "CtuGun";
newWmsRawOutstock.applyDate = DateTime.Now;
newWmsRawOutstock.executeStatus = "2";
newWmsRawOutstock.saleOrderId = mesBaseBarcodeInfo.saleOrderId;
newWmsRawOutstock.updateDate = DateTime.Now;
newWmsRawOutstock.beginTime = DateTime.Now;
newWmsRawOutstock.endTime = DateTime.Now;
dbContext.WmsRawOutstock.Add(newWmsRawOutstock);
dbContext.SaveChanges();
#endregion
//if (mesBaseBarcodeInfo != null)
//{
// WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
// {
// rawOutstockDetailId = Global.SnowId.NextId(),
// rawOutstockId = 0,
// materialId = mesBaseBarcodeInfo.materialId,
// createDate = DateTime.Now,
// createBy = "WCS",
// taskCode = wcsTask.objid.ToString(),
// executeStatus = "2",
// locationCode = wcsTask.currPointNo,
// outstockAmount = outScan,
// planAmount = outScan,
// warehouseId = 512,
// materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
// instockBatch = mesBaseBarcodeInfo.batchCode,
// stackAmount = outScan,
// outstockPerson = "WCS",
// outstockTime = DateTime.Now,
// outstockWay = "2",
// materialProductionDate = mesBaseBarcodeInfo.productionDate
// };
// dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
//}
// dbContext.SaveChanges();
}
else
{
scanOutMsg.Text = "该条码的销售订单不正确";
txtOutScan.Text = string.Empty;
txtOutBarCode.Text = string.Empty;
outMaterialSpecTxt.Text = string.Empty;
outMaterialNameTxt.Text = string.Empty;
txtOutBox.Text = string.Empty;
txtOutBox.Focus();
return;
}
}
}
}
@ -2882,10 +2880,209 @@ namespace Khd.Core.Wpf.Form
{
scanOutMsg.Text = "请先扫描容器号和条码!";
}
#region 原逻辑
//if (!string.IsNullOrEmpty(txtOutBox.Text) && !string.IsNullOrEmpty(txtOutBarCode.Text))
//{
// var wmsRawStock = dbContext.WmsRawStock
// .FirstOrDefault(t => t.instockBatch == txtOutBarCode.Text && t.palletInfoCode == txtOutBox.Text);
// if (wmsRawStock == null)
// {
// scanOutMsg.Text = "库存已经被清空!";
// return;
// }
// decimal outScan = Convert.ToDecimal(this.txtOutScan.Text);
// if (outScan > wmsRawStock.totalAmount - wmsRawStock.frozenAmount)
// {
// scanOutMsg.Text = "出库数量不能大于库存数量!";
// return;
// }
// var wcsTask = dbContext.WcsTask.Where(t => t.containerNo == txtOutBox.Text).FirstOrDefault();
// if (wcsTask == null)
// {
// scanOutMsg.Text = "出库失败非CTU出库任务无法出库!";
// return;
// }
// else
// {
// var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == txtOutBarCode.Text);
// if (mesBaseBarcodeInfo != null)
// {
// var list = JsonConvert.DeserializeObject<List<string>>(baseEquip.endStationCode);
// var wmsRawOutstocks = dbContext.WmsRawOutstock
// .Where(t => t.materialId == mesBaseBarcodeInfo.materialId && t.realOutstockAmount < t.outstockAmount && t.saleOrderId == (mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId) && baseEquip.endStationCode.Contains(t.endStationCode))
// .ToList();
// WmsRawOutstock wmsRawOutstock = null;
// foreach (var item in list)
// {
// wmsRawOutstock ??= wmsRawOutstocks.Where(t => t.endStationCode == item).FirstOrDefault();
// }
// if (wmsRawOutstock != null)
// {
// wmsRawOutstock.realOutstockAmount += outScan;
// if (wmsRawOutstock.outstockAmount == wmsRawOutstock.realOutstockAmount)
// {
// wmsRawOutstock.executeStatus = "2";
// }
// else if (wmsRawOutstock.realOutstockAmount > wmsRawOutstock.outstockAmount)
// {
// scanOutMsg.Text = "出库数量不能大于申请单数量,当前出库数量为:" + (wmsRawOutstock.realOutstockAmount - outScan) + ",申请单数量为:" + wmsRawOutstock.outstockAmount + "!";
// return;
// }
// wmsRawStock.totalAmount -= outScan;
// if (wmsRawStock.totalAmount <= 0)
// {
// dbContext.Remove(wmsRawStock);
// dbContext.Update(wmsRawOutstock);
// }
// else
// {
// dbContext.Update(wmsRawStock);
// dbContext.Update(wmsRawOutstock);
// }
// if (mesBaseBarcodeInfo != null)
// {
// WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
// {
// rawOutstockDetailId = Global.SnowId.NextId(),
// rawOutstockId = wmsRawOutstock.rawOutstockId,
// materialId = mesBaseBarcodeInfo.materialId,
// createDate = DateTime.Now,
// createBy = "WCS",
// taskCode = wcsTask.objid.ToString(),
// executeStatus = "2",
// locationCode = wcsTask.currPointNo,
// outstockAmount = outScan,
// planAmount = outScan,
// warehouseId = 512,
// materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
// instockBatch = mesBaseBarcodeInfo.batchCode,
// stackAmount = outScan,
// outstockPerson = "WCS",
// outstockTime = DateTime.Now,
// outstockWay = "2",
// materialProductionDate = mesBaseBarcodeInfo.productionDate
// };
// dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
// }
// dbContext.SaveChanges();
// }
// else
// {
// // 没有申请单
// // 如果选中了出库单,并且无需要出库的申请单,则禁止出库
// //if (!string.IsNullOrEmpty(baseEquip.endStationCode))
// //{
// // scanOutMsg.Text = "申请单里该条码无需出库!";
// // return;
// //}
// if (wmsRawStock.safeFlag != "1")
// {
// scanOutMsg.Text = "该条码不是安全库存,且无申请单,禁止出库!";
// return;
// }
// if (mesBaseBarcodeInfo.PurchaseOrderId == null)
// {
// wmsRawStock.totalAmount -= outScan;
// if (wmsRawStock.totalAmount == 0)
// {
// dbContext.WmsRawStock.Remove(wmsRawStock);
// }
// else
// {
// dbContext.WmsRawStock.Update(wmsRawStock);
// }
// #region 插入rawOutstock
// string timeStamp = DateTime.Now.ToString("yyyyMMddHHmmss");
// WmsRawOutstock newWmsRawOutstock = new WmsRawOutstock();
// newWmsRawOutstock.taskCode = timeStamp + "CTU" + Random.Shared.Next(10, 99);
// newWmsRawOutstock.warehouseId = 512;
// newWmsRawOutstock.locationCode = wcsTask.currPointNo;
// newWmsRawOutstock.stationId = 512;
// newWmsRawOutstock.materialId = mesBaseBarcodeInfo.materialId;
// newWmsRawOutstock.materialBatch = mesBaseBarcodeInfo.barcodeInfo;
// newWmsRawOutstock.palletInfoCode = wcsTask.containerNo;
// newWmsRawOutstock.outstockAmount = outScan;
// newWmsRawOutstock.realOutstockAmount = outScan;
// newWmsRawOutstock.operationType = "1";
// newWmsRawOutstock.taskType = "1";
// newWmsRawOutstock.auditStatus = "1";
// newWmsRawOutstock.applyBy = "CtuGun";
// newWmsRawOutstock.applyDate = DateTime.Now;
// newWmsRawOutstock.executeStatus = "2";
// newWmsRawOutstock.saleOrderId = mesBaseBarcodeInfo.saleOrderId;
// newWmsRawOutstock.updateDate = DateTime.Now;
// newWmsRawOutstock.beginTime = DateTime.Now;
// newWmsRawOutstock.endTime = DateTime.Now;
// dbContext.WmsRawOutstock.Add(newWmsRawOutstock);
// dbContext.SaveChanges();
// #endregion
// //if (mesBaseBarcodeInfo != null)
// //{
// // WmsRawOutstockDetail wmsProductOutstockDetail = new WmsRawOutstockDetail()
// // {
// // rawOutstockDetailId = Global.SnowId.NextId(),
// // rawOutstockId = 0,
// // materialId = mesBaseBarcodeInfo.materialId,
// // createDate = DateTime.Now,
// // createBy = "WCS",
// // taskCode = wcsTask.objid.ToString(),
// // executeStatus = "2",
// // locationCode = wcsTask.currPointNo,
// // outstockAmount = outScan,
// // planAmount = outScan,
// // warehouseId = 512,
// // materialBarcode = mesBaseBarcodeInfo.barcodeInfo,
// // instockBatch = mesBaseBarcodeInfo.batchCode,
// // stackAmount = outScan,
// // outstockPerson = "WCS",
// // outstockTime = DateTime.Now,
// // outstockWay = "2",
// // materialProductionDate = mesBaseBarcodeInfo.productionDate
// // };
// // dbContext.WmsRawOutstockDetail.Add(wmsProductOutstockDetail);
// //}
// // dbContext.SaveChanges();
// }
// else
// {
// scanOutMsg.Text = "该条码的销售订单不正确";
// txtOutScan.Text = string.Empty;
// txtOutBarCode.Text = string.Empty;
// outMaterialSpecTxt.Text = string.Empty;
// outMaterialNameTxt.Text = string.Empty;
// txtOutBox.Text = string.Empty;
// txtOutBox.Focus();
// return;
// }
// }
// scanOutMsg.Text = "出库成功!";
// txtOutScan.Text = string.Empty;
// txtOutBarCode.Text = string.Empty;
// outMaterialSpecTxt.Text = string.Empty;
// outMaterialNameTxt.Text = string.Empty;
// txtOutBox.Text = string.Empty;
// txtOutBox.Focus();
// }
// else
// {
// scanOutMsg.Text = "未查询到该条码信息!";
// }
// }
//}
//else
//{
// scanOutMsg.Text = "请先扫描容器号和条码!";
//}
#endregion
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
/// <summary>
@ -3252,7 +3449,7 @@ namespace Khd.Core.Wpf.Form
if (InventoryCheck.CheckStatus != "2")
{
InventoryCheck.CheckStatus = "2";
InventoryCheck.InventoriedAmount+= InventoryCheck.InventoryingAmount;
InventoryCheck.InventoriedAmount += InventoryCheck.InventoryingAmount;
InventoryCheck.InventoryingAmount = 0;
InventoryCheck.EndTime = DateTime.Now;
}
@ -5257,6 +5454,72 @@ namespace Khd.Core.Wpf.Form
{
DrawLocaitons();
}
private void Window_Closing(object sender, CancelEventArgs e)
{
System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
p.StartInfo.CreateNoWindow = true;//不显示程序窗口
p.Start();//启动程序
//向cmd窗口发送输入信息
p.StandardInput.WriteLine("taskkill /f /im Khd.Core.Wpf.exe" + "&exit");
p.StandardInput.WriteLine("taskkill /f /im Khd.Core.Wpf" + "&exit");
}
private void createBearConfirmBox_Click(object sender, RoutedEventArgs e)
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
SelectOutRawForm selectOutRawForm = new SelectOutRawForm(this._host, "", 4);
selectOutRawForm.ShowDialog();
if (string.IsNullOrEmpty(SelectOutRawForm.StationCode))
{
return;
}
else
{
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == 10).Any();
bool hasTaskManual = dbContext.WcsTaskManual.Where(t => t.nextPointId == 10).Any();
if (hasTask || hasTaskManual)
{
MessageBox.Show("已经有任务了");
return;
}
BaseEquip startStationEquip = dbContext.BaseEquip.First(t => t.objid == 21);
BaseEquip bearAgvEquip = dbContext.BaseEquip.First(t => t.objid == 10);
BaseEquip endEquip = dbContext.BaseEquip.First(t => t.equipNo == SelectOutRawForm.StationCode);
WcsTask bearAgvTask = new()
{
objid = _jcSnowId.NextId(),
taskType = 32,
containerNo = null,
currPointId = startStationEquip.objid,
currPointNo = startStationEquip.equipNo,
nextPointId = bearAgvEquip.objid,
nextPointNo = bearAgvEquip.equipNo,
endPointId = endEquip.objid,
endPointNo = endEquip.equipNo,
taskStatus = 0,
createTime = DateTime.Now,
createBy = "WCS",
qty = 1,
useFlag = 1,
equipmentNo = startStationEquip.equipNo,
remark = "组装出库",
floorNo = 5,
fromFloorNo = 5,
};
dbContext.Add(bearAgvTask);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(bearAgvTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
}
}
}
}

@ -43,7 +43,7 @@ namespace Khd.Core.Wpf.TaskForm
}
else
{
if (_isOut == 3)
if (_isOut == 3||_isOut == 4)
{
StationCode = this.endStationCode.SelectedItem.ToString();
}
@ -93,6 +93,10 @@ namespace Khd.Core.Wpf.TaskForm
else
{
List<string> endStationCodes = SystemData.BaseEquip.Where(t => t.equipType == 10).Select(t => t.agvPositionCode).ToList();
if (_isOut == 4)
{
_endStationCodes= endStationCodes;
}
using var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var hasTask = dbContext.WcsTask.Where(t => (t.nextPointId == 11 && t.taskType == 30) || t.nextPointId == 10).Any();
@ -155,10 +159,10 @@ namespace Khd.Core.Wpf.TaskForm
}
this.endStationCode.ItemsSource = _endStationCodes.OrderBy(t => t);
this.endStationCode.Items.Refresh();
if (_endStationCodes.Count >= 1)
{
this.endStationCode.SelectedIndex = 0;
}
//if (_endStationCodes.Count >= 1)
//{
// this.endStationCode.SelectedIndex = 0;
//}
}
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)

Loading…
Cancel
Save