2 years ago
parent 325255d5c9
commit 512b4d6d17

@ -11,7 +11,7 @@ namespace Khd.Core.Domain.Models
[Column("inventory_check_detail_id")] [Column("inventory_check_detail_id")]
public long InventoryCheckDetailId { get; set; } public long InventoryCheckDetailId { get; set; }
[Column("inventory_check_id")] [Column("inventory_check_id")]
public long InventoryCheckId { get; set; } public long? InventoryCheckId { get; set; }
[Column("material_id")] [Column("material_id")]
public long? MaterialId { get; set; } public long? MaterialId { get; set; }
[Column("location_code")] [Column("location_code")]

@ -10,6 +10,7 @@ namespace Khd.Core.EntityFramework
public DefaultDbContext(DbContextOptions<DefaultDbContext> options) : base(options) public DefaultDbContext(DbContextOptions<DefaultDbContext> options) : base(options)
{ {
} }
public DbSet<SysUser> SysUser { get; set; } public DbSet<SysUser> SysUser { get; set; }
public DbSet<SysRole> SysRole { get; set; } public DbSet<SysRole> SysRole { get; set; }
public DbSet<SysMenu> SysMenu { get; set; } public DbSet<SysMenu> SysMenu { get; set; }

@ -1077,57 +1077,63 @@ namespace Khd.Core.Wcs.Wcs
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 21); BaseEquip endEquip = StaticData.BaseEquip.First(t => t.objid == 21);
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.objid == 10);
while (true) while (true)
{ {
try try
{ {
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload()); dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
var wmsRawReturn = dbContext.WmsRawReturn BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
.Where(t => t.auditStatus == "1")
.Where(t => t.executeStatus == "0") if (!string.IsNullOrEmpty(baseEquip.endStationCode) && baseEquip.ud3 == "1")
.FirstOrDefault();
if (wmsRawReturn != null)
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == baseEquip.objid).Any(); var wmsRawReturn = dbContext.WmsRawReturn
if (!hasTask) .Where(t => t.auditStatus == "1")
.Where(t => t.executeStatus == "0")
.Where(t => t.endStationCode == baseEquip.endStationCode)
.FirstOrDefault();
if (wmsRawReturn != null)
{ {
//任务未开始Status=0 bool hasTask = dbContext.WcsTask.Where(t => t.nextPointId == baseEquip.objid).Any();
BaseEquip? startEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawReturn.endStationCode); if (!hasTask)
if (startEquip != null)
{ {
WcsTask wcsTask = new() //任务未开始Status=0
BaseEquip? startEquip = StaticData.BaseEquip.FirstOrDefault(t => t.equipNo == wmsRawReturn.endStationCode);
if (startEquip != null)
{ {
objid = StaticData.SnowId.NextId(), WcsTask wcsTask = new()
orderId = wmsRawReturn.rawReturnId, {
taskType = 48, objid = StaticData.SnowId.NextId(),
containerNo = null, orderId = wmsRawReturn.rawReturnId,
currPointId = startEquip.objid, taskType = 48,
currPointNo = startEquip.equipNo, containerNo = null,
nextPointId = baseEquip.objid, currPointId = startEquip.objid,
nextPointNo = baseEquip.equipNo, currPointNo = startEquip.equipNo,
endPointId = endEquip.objid, nextPointId = baseEquip.objid,
endPointNo = endEquip.equipNo, nextPointNo = baseEquip.equipNo,
serialNo = SystemData.GetSerialNo(dbContext), endPointId = endEquip.objid,
taskStatus = 0, endPointNo = endEquip.equipNo,
createTime = DateTime.Now, serialNo = SystemData.GetSerialNo(dbContext),
createBy = "WCS", taskStatus = 0,
materialId = wmsRawReturn.materialId, createTime = DateTime.Now,
qty = 1, createBy = "WCS",
useFlag = 1, materialId = wmsRawReturn.materialId,
equipmentNo = startEquip.equipNo, qty = 1,
remark = "装配区返库", useFlag = 1,
floorNo = 5, equipmentNo = startEquip.equipNo,
masterId = wmsRawReturn.materialId, remark = "装配区返库",
fromFloorNo = 5, floorNo = 5,
//materialNo = wmsRawReturn.materialBatch, masterId = wmsRawReturn.materialId,
}; fromFloorNo = 5,
wmsRawReturn.executeStatus = "1"; //materialNo = wmsRawReturn.materialBatch,
dbContext.Add(wcsTask); };
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); baseEquip.ud3 = null;
dbContext.Add(wcsTaskLog); dbContext.Update(baseEquip);
dbContext.Update(wmsRawReturn); dbContext.Add(wcsTask);
dbContext.SaveChanges(); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.Update(wmsRawReturn);
dbContext.SaveChanges();
}
} }
} }
} }
@ -1664,7 +1670,12 @@ namespace Khd.Core.Wcs.Wcs
//if (taskCount == 0 && wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0) //if (taskCount == 0 && wcsOutstockLock.qty == 0 && wcsOutstockLock.boxStatus == 0)
if (taskCount == 0) if (taskCount == 0)
{ {
foreach (var wcs in wcsTaskManuals.Take(6)) List<WcsTaskManual> list = wcsTaskManuals.Where(t => t.taskType == 100).ToList();
if (list.Count == 0)
{
list = wcsTaskManuals.Where(t => t.taskType == 30).ToList();
}
foreach (var wcs in list.Take(6))
{ {
WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcs); WcsTask wcsTask = CoreMapper.Map<WcsTask>(wcs);
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
@ -1821,7 +1832,7 @@ namespace Khd.Core.Wcs.Wcs
if (endEquip.equipType == 10)//CTU出库到装配区 if (endEquip.equipType == 10)//CTU出库到装配区
{ {
BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10); BaseEquip endStationCodeEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) ) if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) && endStationCodeEquip.ud3 != "1")
//if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) && endStationCodeEquip.IsOut == 1) //if (!string.IsNullOrEmpty(endStationCodeEquip.endStationCode) && endStationCodeEquip.IsOut == 1)
{ {
if (item.endStationCode != endStationCodeEquip.endStationCode) if (item.endStationCode != endStationCodeEquip.endStationCode)

@ -331,88 +331,92 @@ namespace Khd.Core.Wcs.Wcs
} }
else else
{ {
//根据托盘号获取物料码 hasTask = wcsTasks.Where(t => t.containerNo == RFID001Value).Any();
var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault(); if (!hasTask)
WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
if (material != null)
{ {
if (string.IsNullOrEmpty(material.materialBarcode)) //根据托盘号获取物料码
var material = dbContext.MesBasePalletInfo.Where(t => t.palletInfoCode == RFID001Value).FirstOrDefault();
WcsTaskLog? taskLog = dbContext.WcsTaskLog.Where(t => t.containerNo == RFID001Value).OrderByDescending(t => t.createTime).FirstOrDefault();
if (material != null)
{ {
continue; if (string.IsNullOrEmpty(material.materialBarcode))
}
bool hasBarInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == RFID001Value && t.barcodeInfo == material.materialBarcode).Any();
if (!hasBarInfo)
{
continue;
}
if (taskLog != null)
{
if (taskLog.materialBarcode == material.materialBarcode)
{ {
if (baseEquip.containerNo == "0") continue;
}
bool hasBarInfo = dbContext.MesBaseBarcodeInfo.Where(t => t.palletInfoCode == RFID001Value && t.barcodeInfo == material.materialBarcode).Any();
if (!hasBarInfo)
{
continue;
}
if (taskLog != null)
{
if (taskLog.materialBarcode == material.materialBarcode)
{ {
baseEquip.containerNo = null; if (baseEquip.containerNo == "0")
dbContext.Update(baseEquip); {
dbContext.SaveChanges(); baseEquip.containerNo = null;
_logger.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功"); dbContext.Update(baseEquip);
} dbContext.SaveChanges();
else if (baseEquip.containerNo != RFID001Value) _logger.Info("一楼接驳位线程:托盘" + RFID001Value + "解绑信息更新成功");
{ }
baseEquip.containerNo = RFID001Value; else if (baseEquip.containerNo != RFID001Value)
dbContext.Update(baseEquip); {
dbContext.SaveChanges(); baseEquip.containerNo = RFID001Value;
_logger.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); dbContext.Update(baseEquip);
Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功"); dbContext.SaveChanges();
Thread.Sleep(3000); _logger.Info("一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
continue; Console.WriteLine(DateTime.Now + ":一楼接驳位线程:托盘" + RFID001Value + "绑定信息更新成功");
} Thread.Sleep(3000);
else continue;
{ }
Thread.Sleep(3000); else
continue; {
Thread.Sleep(3000);
continue;
}
} }
} }
}
var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId; var warehouseId = dbContext.WmsWarehouseMaterial.Where(t => t.storageType == "1" && t.storageId == material.materialId).FirstOrDefault()?.warehouseId;
if (warehouseId != null) if (warehouseId != null)
{
var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault();
if (TargetFloor != null)
{ {
//插入task表 var TargetFloor = dbContext.WmsBaseWarehouse.Where(t => t.warehouseId == warehouseId).FirstOrDefault();
if (TargetFloor != null)
var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault();
if (dic != null)
{ {
var newTask = new WcsTask() //插入task表
var dic = StaticData.BaseDictionary.Where(t => t.dicKey == "TaskType" && t.agvType == "I" && t.dicField == TargetFloor.warehouseInstockType).FirstOrDefault();
if (dic != null)
{ {
objid = StaticData.SnowId.NextId(), var newTask = new WcsTask()
serialNo = SystemData.GetSerialNo(dbContext), {
equipmentNo = "F01", objid = StaticData.SnowId.NextId(),
taskType = Convert.ToInt32(dic.dicValue), serialNo = SystemData.GetSerialNo(dbContext),
taskStatus = 0, equipmentNo = "F01",
containerNo = RFID001Value, taskType = Convert.ToInt32(dic.dicValue),
materialBarcode = material.materialBarcode, taskStatus = 0,
materialId = material.materialId, containerNo = RFID001Value,
qty = Convert.ToInt32(material.bindAmount), materialBarcode = material.materialBarcode,
currPointId = F01, materialId = material.materialId,
currPointNo = "TSJ_01", qty = Convert.ToInt32(material.bindAmount),
nextPointId = T01, currPointId = F01,
nextPointNo = "TSJ_01", currPointNo = "TSJ_01",
endPointId = warehouseId, nextPointId = T01,
fromFloorNo = 1, nextPointNo = "TSJ_01",
floorNo = TargetFloor.warehouseFloor, endPointId = warehouseId,
useFlag = 1, fromFloorNo = 1,
createBy = "一楼接驳位", floorNo = TargetFloor.warehouseFloor,
createTime = DateTime.Now, useFlag = 1,
remark = "一楼创建入库任务" createBy = "一楼接驳位",
}; createTime = DateTime.Now,
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask); remark = "一楼创建入库任务"
dbContext.Add(wcsTaskLog); };
dbContext.Add(newTask); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(newTask);
dbContext.SaveChanges(); dbContext.Add(wcsTaskLog);
dbContext.Add(newTask);
dbContext.SaveChanges();
}
} }
} }
} }

@ -191,41 +191,53 @@ namespace Khd.Core.Wcs.Wcs
} }
else if (task.taskType == 100) else if (task.taskType == 100)
{ {
dbContext.WcsTask.Where(t => t.objid == task.objid).Delete(); WmsInventoryCheck? wmsInventoryCheck = dbContext.WmsInventoryCheck.Where(t => t.InventoryCheckId == task.orderId).FirstOrDefault();
//根据rfid找到库位 if (wmsInventoryCheck != null)
//生成入库任务
var wmsBaseLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == rfid);
if (wmsBaseLocation != null)
{ {
BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipNo == "FL051"); wmsInventoryCheck.InventoryingAmount = wmsInventoryCheck.InventoryingAmount > 0 ? wmsInventoryCheck.InventoryingAmount - 1 : 0;
BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11); wmsInventoryCheck.InventoriedAmount++;
if (wmsInventoryCheck.InventoriedAmount >= wmsInventoryCheck.LocationAmount)
{
wmsInventoryCheck.CheckStatus = "2";
wmsInventoryCheck.EndTime = DateTime.Now;
}
dbContext.WcsTask.Where(t => t.objid == task.objid).Delete();
//根据rfid找到库位
//生成入库任务
var wmsBaseLocation = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == rfid);
if (wmsBaseLocation != null) if (wmsBaseLocation != null)
{ {
var wcsTask = new WcsTask() BaseEquip baseEquip = StaticData.BaseEquip.First(t => t.equipNo == "FL051");
BaseEquip ctuEquip = StaticData.BaseEquip.First(t => t.objid == 11);
if (wmsBaseLocation != null)
{ {
objid = StaticData.SnowId.NextId(), var wcsTask = new WcsTask()
currPointId = baseEquip.objid, {
currPointNo = baseEquip.agvPositionCode, objid = StaticData.SnowId.NextId(),
nextPointId = ctuEquip.objid, currPointId = baseEquip.objid,
useFlag = 1, currPointNo = baseEquip.agvPositionCode,
endPointId = wmsBaseLocation.locationId, nextPointId = ctuEquip.objid,
endPointNo = wmsBaseLocation.agvPositionCode, useFlag = 1,
taskType = 29, endPointId = wmsBaseLocation.locationId,
taskStatus = 0, endPointNo = wmsBaseLocation.agvPositionCode,
floorNo = 5, taskType = 29,
containerNo = rfid.ToString(), taskStatus = 0,
equipmentNo = baseEquip.equipNo, floorNo = 5,
createBy = FloorNo + "楼CTU", containerNo = rfid.ToString(),
createTime = DateTime.Now, equipmentNo = baseEquip.equipNo,
}; createBy = FloorNo + "楼CTU",
wmsBaseLocation.locationStatus = "2"; createTime = DateTime.Now,
wmsBaseLocation.updateTime = DateTime.Now; };
dbContext.Update(wmsBaseLocation); dbContext.Update(wmsInventoryCheck);
dbContext.Add(wcsTask); wmsBaseLocation.locationStatus = "2";
WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask); wmsBaseLocation.updateTime = DateTime.Now;
dbContext.Add(wcsTaskLog); dbContext.Update(wmsBaseLocation);
dbContext.SaveChanges(); dbContext.Add(wcsTask);
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString()); WcsTaskLog wcsTaskLog = CoreMapper.Map<WcsTaskLog>(wcsTask);
dbContext.Add(wcsTaskLog);
dbContext.SaveChanges();
StaticData.PlcDic[1].WriteToPoint(CtuLineWaring.plcpointAddress, false, CtuLineWaring.plcpointLength.ToString());
}
} }
} }
} }

@ -1776,7 +1776,7 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<Button Content="搜索" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="100" Margin="20,0,0,0" Click="SelectInventoryButton_Click"/> <Button Content="搜索" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="100" Margin="20,0,0,0" Click="SelectInventoryButton_Click"/>
<Button Content="添加盘库任务" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="200" Margin="20,0,0,0" Click="SelectInventoryButton_Click"/> <Button Content="添加盘库任务" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="200" Margin="20,0,0,0" Click="AddInventoryButton_Click"/>
<Button Content="库存盘点" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="150" Margin="20,0,0,0" Click="InventoryTaskButton_Click"/> <Button Content="库存盘点" Background="#346DFF" Foreground="White" FontSize="25" Height="50" Width="150" Margin="20,0,0,0" Click="InventoryTaskButton_Click"/>
</StackPanel> </StackPanel>
<DataGrid <DataGrid
@ -1882,8 +1882,8 @@
IsReadOnly="True"> IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="开始盘点" Style="{StaticResource ButtonPrimary}" FontSize="25" Width="125" Height="75" Click="StartInventory"/> <Button Content="开始盘点" Style="{StaticResource ButtonPrimary}" FontSize="25" Width="125" Height="75" Click="StartInventory" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>
</DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn.CellTemplate>
@ -2051,12 +2051,6 @@
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
Width="2*" Width="2*"
/> />
<DataGridTextColumn
Header="是否出完"
Binding="{Binding isSendOver}"
Width="2*"
ElementStyle="{StaticResource dgCell}"
/>
</DataGrid.Columns> </DataGrid.Columns>
<DataGrid.CellStyle> <DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}"> <Style TargetType="{x:Type DataGridCell}">
@ -2105,8 +2099,7 @@
<Image Source="..\Resources\cancel.png"/> <Image Source="..\Resources\cancel.png"/>
</Button> </Button>
</Grid> </Grid>
<!--<Button Content="选择退库" Background="#346DFF" Grid.ColumnSpan="6" Grid.Row="1" Foreground="White" FontSize="50" Margin="20,0,0,0" Height="100" Width="250" Click="SelectOutBtn_Click"/>--> <Button Content="选择退库" Background="#346DFF" Grid.ColumnSpan="6" Grid.Row="1" Foreground="White" FontSize="50" Margin="100,0,0,0" Height="100" Width="400" Click="SelectReturnBtn_Click"/>
<Button Content="继续退库" Visibility="Collapsed" Background="#346DFF" Grid.ColumnSpan="6" Grid.Row="1" Foreground="White" FontSize="50" Margin="20,0,0,0" Height="100" Width="250" Click="ContineOutBtn_Click"/>
</StackPanel> </StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="3" Grid.ColumnSpan="6"> <StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Grid.Row="3" Grid.ColumnSpan="6">
<TextBlock Text="扫描条码号:" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/> <TextBlock Text="扫描条码号:" Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="75"/>

@ -169,6 +169,12 @@ namespace Khd.Core.Wpf.Form
}; };
OutOrderThread.Start(); OutOrderThread.Start();
Thread ReturnOrderThread = new Thread(ReturnOrderTimer)
{
IsBackground = true
};
ReturnOrderThread.Start();
//Thread ddjThread = new Thread(ddjTimer); //Thread ddjThread = new Thread(ddjTimer);
//ddjThread.Start(); //ddjThread.Start();
//LogManager.Info($"--------------------------当前时间 :{DateTime.Now} >>> 客户端启动;"); //LogManager.Info($"--------------------------当前时间 :{DateTime.Now} >>> 客户端启动;");
@ -281,6 +287,86 @@ namespace Khd.Core.Wpf.Form
} }
} }
private void ReturnOrderTimer(object? obj)
{
using var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
List<BaseEquip> baseEquips = dbContext.BaseEquip.Where(t => t.equipType == 10).ToList();
var endStationCodes = baseEquips.Select(t => t.agvPositionCode).ToList();
while (true)
{
try
{
dbContext.ChangeTracker.Entries().ToList().ForEach(e => e.Reload());
List<WmsRawReturn> wmsRawReturns = dbContext.WmsRawReturn.Where(t => endStationCodes.Contains(t.endStationCode))
.Where(t => t.auditStatus == "1")
.Where(t => t.executeStatus == "0" || t.executeStatus == "1")
.Where(t => t.returnAmount > t.planAmount)
.ToList();
List<string> list = wmsRawReturns.Select(t => t.endStationCode).ToList();
Dispatcher.Invoke(() =>
{
this.ReturnOrder.Text = "待退库单:\n" + list.Distinct().Join("\n");
});
var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(baseEquip.endStationCode) && baseEquip.ud3 != "1")
{
List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30).ToList();
List<string> containerNos = wcsTasks.Select(t => t.containerNo).ToList();
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => containerNos.Contains(t.palletInfoCode)).ToList();
var thisOutList = wmsRawStocks.GroupBy(t => new { t.materialId, t.saleOrderId })
.Select(t => new
{
materialId = t.Key.materialId,
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<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 })
.Select(t => new
{
materialId = t.Key.materialId,
outstockAmount = t.Sum(x => x.returnAmount),
realOutstockAmount = t.Sum(x => x.planAmount),
});
var orderNumber = from a in bill
from b in thisOutList
from c in mesBaseMaterialInfos
where a.materialId == b.materialId
select new
{
materialBatch = c.MaterialCode,
saleOrderId = b.saleOrderId,
outstockAmount = a.outstockAmount,
materialSpec = c.MaterialSpec,
realOutstockAmount = a.realOutstockAmount,
thisOutAmount = b.thisOutAmount,
};
Dispatcher.Invoke(() =>
{
this.ReturnTaskNumber.ItemsSource = orderNumber;
this.ReturnTaskNumber.Items.Refresh();
});
}
else
{
Dispatcher.Invoke(() =>
{
this.ReturnTaskNumber.ItemsSource = null;
this.ReturnTaskNumber.Items.Refresh();
});
}
}
catch
{
}
}
}
private void OutOrderTimer(object? obj) private void OutOrderTimer(object? obj)
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
@ -304,7 +390,7 @@ namespace Khd.Core.Wpf.Form
}); });
var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10); var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(baseEquip.endStationCode)) if (!string.IsNullOrEmpty(baseEquip.endStationCode) && baseEquip.ud3 != "1")
{ {
List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30).ToList(); List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30).ToList();
List<string> containerNos = wcsTasks.Select(t => t.containerNo).ToList(); List<string> containerNos = wcsTasks.Select(t => t.containerNo).ToList();
@ -1157,6 +1243,7 @@ namespace Khd.Core.Wpf.Form
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10); BaseEquip baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
baseEquip.endStationCode = string.Empty; baseEquip.endStationCode = string.Empty;
baseEquip.ud3 = null;
dbContext.Update(baseEquip); dbContext.Update(baseEquip);
var wcsCmd = dbContext.WcsTask var wcsCmd = dbContext.WcsTask
.Where(t => t.taskStatus == 6 || t.taskStatus == 3) .Where(t => t.taskStatus == 6 || t.taskStatus == 3)
@ -1335,13 +1422,13 @@ namespace Khd.Core.Wpf.Form
// 删除选中项 // 删除选中项
SelectItemModel model = itemsControlItems.FirstOrDefault(x => x.baseLocationId == Currentselected.baseLocationId); SelectItemModel model = itemsControlItems.FirstOrDefault(x => x.baseLocationId == Currentselected.baseLocationId);
if (model != null) if (model != null)
{ {
itemsControlItems.Remove(model); itemsControlItems.Remove(model);
} }
} }
} }
} }
@ -2235,18 +2322,37 @@ namespace Khd.Core.Wpf.Form
{ {
GetInvertoryData(); GetInvertoryData();
} }
/// <summary>
/// 开始盘点
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void StartInventory(object sender, RoutedEventArgs e) private void StartInventory(object sender, RoutedEventArgs e)
{ {
dynamic wmsInventoryCheck = this.InventoryMaterial.SelectedItem; dynamic wmsInventoryCheck = this.InventoryMaterial.SelectedItem;
long inventoryCheckId = wmsInventoryCheck.InventoryCheckId; long inventoryCheckId = wmsInventoryCheck.InventoryCheckId;
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var InventoryCheck = dbContext.WmsInventoryCheck.Where(t => t.InventoryCheckId == inventoryCheckId).FirstOrDefault(); var InventoryCheck = dbContext.WmsInventoryCheck
.Where(t=>t.CheckStatus=="0"||t.CheckStatus=="1")
.Where(t => t.InventoryCheckId == inventoryCheckId).FirstOrDefault();
BaseEquip agvEquip = SystemData.BaseEquip.First(t => t.objid == 11); BaseEquip agvEquip = SystemData.BaseEquip.First(t => t.objid == 11);
BaseEquip lineEquip = SystemData.BaseEquip.First(t => t.objid == 20); BaseEquip lineEquip = SystemData.BaseEquip.First(t => t.objid == 20);
if (InventoryCheck != null) if (InventoryCheck != null)
{ {
if(InventoryCheck.InventoryingAmount != 0)
{
bool hasTask = dbContext.WcsTask.Where(t => t.taskType == 100).Any();
if (!hasTask)
{
hasTask = dbContext.WcsTaskManual.Where(t => t.taskType == 100).Any();
if (!hasTask)
{
InventoryCheck.InventoriedAmount+= InventoryCheck.InventoryingAmount;
InventoryCheck.InventoryingAmount = 0;
}
}
}
if (InventoryCheck.InventoryingAmount == 0) if (InventoryCheck.InventoryingAmount == 0)
{ {
bool hasTask = dbContext.WcsTask.Where(t => t.taskType == 100).Any(); bool hasTask = dbContext.WcsTask.Where(t => t.taskType == 100).Any();
@ -2258,7 +2364,6 @@ namespace Khd.Core.Wpf.Form
var wmsBaseLocations = dbContext.WmsBaseLocation var wmsBaseLocations = dbContext.WmsBaseLocation
.Where(t => t.ContainerStatus == "1") .Where(t => t.ContainerStatus == "1")
.Where(t => t.locationStatus == "1") .Where(t => t.locationStatus == "1")
.Where(t => t.activeFlag == "1")
.OrderBy(t => t.locRow) .OrderBy(t => t.locRow)
.ThenBy(t => t.locColumn) .ThenBy(t => t.locColumn)
.ToList(); .ToList();
@ -2387,7 +2492,16 @@ namespace Khd.Core.Wpf.Form
HandyControl.Controls.MessageBox.Info("当前有盘点任务正在出库"); HandyControl.Controls.MessageBox.Info("当前有盘点任务正在出库");
} }
} }
else
{
HandyControl.Controls.MessageBox.Info("盘点中,请等待本次盘点完成!");
}
} }
else
{
HandyControl.Controls.MessageBox.Error("当前盘点点不可用!");
}
GetInvertoryData();
} }
/// <summary> /// <summary>
@ -2621,7 +2735,7 @@ namespace Khd.Core.Wpf.Form
private void Button_Click(object sender, RoutedEventArgs e) private void Button_Click(object sender, RoutedEventArgs e)
{ {
TextBoxGetFocus(); TextBoxGetFocus();
} }
@ -3254,6 +3368,75 @@ namespace Khd.Core.Wpf.Form
GetInvertoryData(); GetInvertoryData();
} }
/// <summary>
/// 添加盘库任务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void AddInventoryButton_Click(object sender, RoutedEventArgs e)
{
try
{
using var scope = _host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var Orders = dbContext.WmsInventoryCheck.Where(t => t.CheckStatus == "0" || t.CheckStatus == "1").ToList();
if (Orders != null && Orders.Count > 0)
{
MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show("已经有盘库任务是否重新开始一个盘库任务?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.OK)
{
Orders.ForEach(t =>
{
t.CheckStatus = "2";
});
dbContext.UpdateRange(Orders);
int locationCount = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512).Count();
dbContext.Add(new WmsInventoryCheck()
{
CreateTime = DateTime.Now,
CheckStatus = "0",
LocationAmount= locationCount,
InventoriedAmount=0,
InventoryingAmount=0,
WarehouseId=512,
CreateBy="WCS"
});
dbContext.SaveChanges();
HandyControl.Controls.Growl.Info("创建盘库任务成功!");
}
else
{
return;
}
}
else
{
MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show("是否创建一个盘库任务?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.OK)
{
int locationCount = dbContext.WmsBaseLocation.Where(t => t.warehouseId == 512).Count();
dbContext.Add(new WmsInventoryCheck()
{
CreateTime = DateTime.Now,
CheckStatus = "0",
LocationAmount = locationCount,
InventoriedAmount = 0,
InventoryingAmount = 0,
WarehouseId = 512,
CreateBy = "WCS"
});
dbContext.SaveChanges();
HandyControl.Controls.Growl.Info("创建盘库任务成功!");
}
}
}
catch
{
}
GetInvertoryData();
}
private void GetInvertoryData() private void GetInvertoryData()
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
@ -3303,10 +3486,15 @@ namespace Khd.Core.Wpf.Form
//选择出库 //选择出库
private void SelectOutBtn_Click(object sender, RoutedEventArgs e) private void SelectOutBtn_Click(object sender, RoutedEventArgs e)
{ {
SelectOutRawForm selectOutRawForm = new SelectOutRawForm(this._host); SelectOutRawForm selectOutRawForm = new SelectOutRawForm(this._host, "");
selectOutRawForm.ShowDialog();
}
//选择退库
private void SelectReturnBtn_Click(object sender, RoutedEventArgs e)
{
SelectOutRawForm selectOutRawForm = new SelectOutRawForm(this._host, "1");
selectOutRawForm.ShowDialog(); selectOutRawForm.ShowDialog();
} }
private void ContineOutBtn_Click(object sender, RoutedEventArgs e) private void ContineOutBtn_Click(object sender, RoutedEventArgs e)
{ {
try try
@ -3321,7 +3509,7 @@ namespace Khd.Core.Wpf.Form
} }
catch catch
{ {
} }
} }
} }

@ -33,7 +33,7 @@
<RowDefinition/> <RowDefinition/>
<RowDefinition Height="50"/> <RowDefinition Height="50"/>
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Grid.Row="0" Content="用户登录" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" HorizontalContentAlignment="Center" Background="#1f1c31" VerticalContentAlignment="Center" VerticalAlignment="Stretch" FontSize="35" FontWeight="Bold" Foreground="White" MouseLeftButtonDown="ShuBiaoShuangJi" /> <Label Grid.Row="0" Content="用户登录" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Center" Background="#1f1c31" VerticalContentAlignment="Center" FontSize="35" FontWeight="Bold" Foreground="White" MouseLeftButtonDown="ShuBiaoShuangJi" />
<Grid Grid.Row="2" Grid.Column="1"> <Grid Grid.Row="2" Grid.Column="1">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/> <ColumnDefinition Width="4*"/>
@ -63,7 +63,7 @@
<ColumnDefinition/> <ColumnDefinition/>
<ColumnDefinition/> <ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Button Grid.Row="0" Grid.Column="0" Focusable="False" Foreground="#FFFFFFFF" x:Name="btnSubmit" TabIndex="0" Content="提交" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#385492" Width="129" Height="40"/> <Button Grid.Row="0" Grid.Column="0" Focusable="False" Foreground="#FFFFFFFF" x:Name="btnSubmit" TabIndex="0" Content="提交" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#385492" Width="129" Height="40" Click="btnSubmit_Click"/>
<Button Grid.Row="0" Grid.Column="1" Foreground="#FFFFFFFF" Content="取消" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#385492" Width="121" Height="40" Click="Button_Click_1"/> <Button Grid.Row="0" Grid.Column="1" Foreground="#FFFFFFFF" Content="取消" HorizontalAlignment="Center" VerticalAlignment="Center" Background="#385492" Width="121" Height="40" Click="Button_Click_1"/>
</Grid> </Grid>
</Grid> </Grid>

@ -77,5 +77,10 @@ namespace Khd.Core.Wpf
services.AddDbContext<DefaultDbContext>(options => services.AddDbContext<DefaultDbContext>(options =>
options.UseMySql(ConnectionStrings.ConnectionString, new MySqlServerVersion(new Version(8, 0, 31)))); options.UseMySql(ConnectionStrings.ConnectionString, new MySqlServerVersion(new Version(8, 0, 31))));
}); });
private void btnSubmit_Click(object sender, RoutedEventArgs e)
{
using var s
}
} }
} }

@ -65,8 +65,7 @@
<RepeatButton x:Name="ScanButton" Content="添加" Style="{StaticResource RepeatButtonPrimary}" Width="100" Margin="20,0,0,0" Click="ScanButton_Click" /> <RepeatButton x:Name="ScanButton" Content="添加" Style="{StaticResource RepeatButtonPrimary}" Width="100" Margin="20,0,0,0" Click="ScanButton_Click" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Row="2"> <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Grid.Row="2">
<TextBlock Text="数量:" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="20,0,0,0"/> <TextBox x:Name="NewCount" Width="200" FontSize="20" Margin="5" hc:InfoElement.Placeholder="请输入数量" Style="{StaticResource TextBoxExtend}" />
<TextBox x:Name="NewCount" Width="200" FontSize="20" hc:InfoElement.Placeholder="请输入数量" Style="{StaticResource TextBoxExtend}" />
</StackPanel> </StackPanel>
<StackPanel Orientation="Vertical" Grid.Row="3" Margin="0,10,0,0"> <StackPanel Orientation="Vertical" Grid.Row="3" Margin="0,10,0,0">
<GroupBox Height="250" Header="确认" Padding="10"> <GroupBox Height="250" Header="确认" Padding="10">
@ -82,7 +81,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="条码" FontSize="16" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock Text="条码" FontSize="16" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="数量" Grid.Column="1" FontSize="16" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock Text="数量" Grid.Column="1" FontSize="16" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock x:Name="BarCodeList" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock x:Name="BarCodeList" Grid.Column="0" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock x:Name="CountList" Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock x:Name="CountList" Grid.Column="1" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Grid> </Grid>
</Border> </Border>

@ -1,5 +1,6 @@
using Khd.Core.Domain.Models; using Khd.Core.Domain.Models;
using Khd.Core.EntityFramework; using Khd.Core.EntityFramework;
using Masuit.Tools;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -41,7 +42,9 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
this.MaterialSpec.Text = _materialName; this.MaterialSpec.Text = _materialName;
using var scope = this._host.Services.CreateScope(); using var scope = this._host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var wmsRawStocks = dbContext.WmsRawStock.Where(t => t.palletInfoCode == _containerNo && t.materialId == _materialId).ToList(); var wmsRawStocks = dbContext.WmsRawStock.Where(t => t.palletInfoCode == _containerNo)
.WhereIf(_materialId!=0, t => t.materialId == _materialId)
.ToList();
if (wmsRawStocks.Count == 0) if (wmsRawStocks.Count == 0)
{ {
this.BarCode.Text = "空"; this.BarCode.Text = "空";
@ -55,7 +58,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
} }
catch catch
{ {
MessageBox.Show("加载数据失败,请重试"); HandyControl.Controls.MessageBox.Error("加载数据失败,请重试");
this.Close(); this.Close();
} }
} }
@ -88,7 +91,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
} }
catch catch
{ {
MessageBoxResult messageBoxResult = MessageBox.Show("该条码已经添加过,是否更新该条码?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question); MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show("该条码已经添加过,是否更新该条码?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (messageBoxResult == MessageBoxResult.OK) if (messageBoxResult == MessageBoxResult.OK)
{ {
string[] barCodes = this.BarCodeList.Text.Split('\n'); string[] barCodes = this.BarCodeList.Text.Split('\n');
@ -106,13 +109,10 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
} }
} }
} }
this.BarCodeList.Text += mesBaseBarcodeInfo.barcodeInfo + "\n";
this.CountList.Text += this.NewCount.Text + "\n";
this.NewBarCode.Text = "";
} }
else else
{ {
MessageBox.Show("条码不存在,请重新扫码"); HandyControl.Controls.MessageBox.Show("条码不存在,请重新扫码");
this.NewBarCode.Text = ""; this.NewBarCode.Text = "";
} }
} }
@ -125,7 +125,10 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
private void SaveButton_Click(object sender, RoutedEventArgs e) private void SaveButton_Click(object sender, RoutedEventArgs e)
{ {
List<string> newList = this.BarCodeList.Text.Split('\n').ToList(); List<string> newList = this.BarCodeList.Text.Split('\n').ToList();
newList.RemoveAll(t => string.IsNullOrEmpty(t));
List<string> list = this.BarCode.Text.Split('\n').ToList(); List<string> list = this.BarCode.Text.Split('\n').ToList();
list.RemoveAll(t => string.IsNullOrEmpty(t));
List<string> countList = CountList.Text.Split("\n").ToList();
StringBuilder addStr = new(); StringBuilder addStr = new();
List<string> addList = newList.Where(t => !list.Contains(t)).ToList(); List<string> addList = newList.Where(t => !list.Contains(t)).ToList();
if (addList.Count > 0) if (addList.Count > 0)
@ -142,7 +145,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
} }
if (addStr.Length > 0 || removeStr.Length > 0) if (addStr.Length > 0 || removeStr.Length > 0)
{ {
MessageBoxResult messageBoxResult = MessageBox.Show(addStr.ToString() + "\n" + removeStr.ToString(), "提示", MessageBoxButton.OK, MessageBoxImage.Information); MessageBoxResult messageBoxResult = HandyControl.Controls.MessageBox.Show(addStr.ToString() + "\n" + removeStr.ToString(), "提示", MessageBoxButton.OK, MessageBoxImage.Information);
if (messageBoxResult == MessageBoxResult.OK) if (messageBoxResult == MessageBoxResult.OK)
{ {
using var scope = this._host.Services.CreateScope(); using var scope = this._host.Services.CreateScope();
@ -158,7 +161,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
{ {
message = t.locationCode + ":" + t.instockBatch message = t.locationCode + ":" + t.instockBatch
})); }));
MessageBoxResult result = MessageBox.Show("条码已经在其他料箱中" + waring + "确认移动到当前料箱吗?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question); MessageBoxResult result = HandyControl.Controls.MessageBox.Show("条码已经在其他料箱中" + waring + "确认移动到当前料箱吗?", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Question);
if (result == MessageBoxResult.OK) if (result == MessageBoxResult.OK)
{ {
foreach (var wmsRawStock in wmsRawStocks) foreach (var wmsRawStock in wmsRawStocks)
@ -177,48 +180,105 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
} }
if (addList.Count > 0) if (addList.Count > 0)
{ {
List<WmsRawStock> newWmsRawStocks = new List<WmsRawStock>(); List<WmsRawStock> newWmsRawStocks = dbContext.WmsRawStock
.WhereIf(_materialId != 0, t => t.materialId == _materialId)
.Where(t => t.palletInfoCode == _containerNo).ToList();
var mesBaseBarcodeInfos = dbContext.MesBaseBarcodeInfo.Where(t => addList.Contains(t.barcodeInfo)).ToList(); var mesBaseBarcodeInfos = dbContext.MesBaseBarcodeInfo.Where(t => addList.Contains(t.barcodeInfo)).ToList();
foreach (var barcode in addList) for (int i = 0; i < addList.Count; i++)
{ {
var barcode = addList[i];
var count = countList[i];
var mesBaseBarcodeInfo = mesBaseBarcodeInfos.FirstOrDefault(t => t.barcodeInfo == barcode); var mesBaseBarcodeInfo = mesBaseBarcodeInfos.FirstOrDefault(t => t.barcodeInfo == barcode);
if (mesBaseBarcodeInfo != null) if (mesBaseBarcodeInfo != null)
{ {
newWmsRawStocks.Add(new WmsRawStock if (wmsRawStocks.Where(t => t.materialId == mesBaseBarcodeInfo.materialId).Any())
{ {
palletInfoCode = _containerNo, WmsRawStock wmsRawStock = wmsRawStocks.First(t => t.materialId == mesBaseBarcodeInfo.materialId);
materialId = _materialId, wmsRawStock.totalAmount = decimal.Parse(count);
instockBatch = barcode, }
safeFlag = mesBaseBarcodeInfo.safeFlag, else
stockType = "1", {
activeFlag = "1", newWmsRawStocks.Add(new WmsRawStock
supplierId = mesBaseBarcodeInfo.manufacturerId, {
completeFlag = "1", palletInfoCode = _containerNo,
frozenAmount = 0, materialId = mesBaseBarcodeInfo.materialId,
instockDate = DateTime.Now, instockBatch = mesBaseBarcodeInfo.barcodeInfo,
qualityStatus = "0", safeFlag = mesBaseBarcodeInfo.safeFlag,
rawStockId = Global.SnowId.NextId(), stockType = "1",
occupyAmount = 0, activeFlag = "1",
totalAmount = mesBaseBarcodeInfo.batchFlag == "1" ? mesBaseBarcodeInfo.amount : 1, supplierId = mesBaseBarcodeInfo.manufacturerId,
warehouseFloor = 5, completeFlag = "1",
warehouseId = 512, frozenAmount = 0,
saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId, instockDate = DateTime.Now,
locationCode = _locationCode, qualityStatus = "0",
createBy = "WCS", rawStockId = Global.SnowId.NextId(),
createDate = DateTime.Now, occupyAmount = 0,
updateBy = "WCS", totalAmount = mesBaseBarcodeInfo.batchFlag == "1" ? decimal.Parse(count) : 1,
updateDate = DateTime.Now, warehouseFloor = 5,
}); warehouseId = 512,
saleOrderId = mesBaseBarcodeInfo.saleOrderId == null ? 0 : mesBaseBarcodeInfo.saleOrderId,
locationCode = _locationCode,
createBy = "WCS",
createDate = DateTime.Now,
updateBy = "WCS",
updateDate = DateTime.Now,
});
}
} }
else else
{ {
MessageBox.Show($"{barcode}条码信息不存在,无法入库"); HandyControl.Controls.MessageBox.Show($"{barcode}条码信息不存在,无法入库");
return; return;
} }
} }
if (newWmsRawStocks.Count > 0) if (newWmsRawStocks.Count > 0)
{ {
dbContext.AddRange(newWmsRawStocks); WcsTask? wcsTask = dbContext.WcsTask.Where(t => t.containerNo == _containerNo).FirstOrDefault();
if (wcsTask != null)
{
var wmsInventoryCheckDetails = dbContext.WmsInventoryCheckDetail
.Where(t => t.InventoryCheckId == wcsTask.orderId && t.LocationCode == wcsTask.currPointNo).ToList();
List<long?> hasMaterialId = newWmsRawStocks.Select(t => t.materialId).ToList();
var hasDetails = wmsInventoryCheckDetails
.Where(t => hasMaterialId.Contains(t.MaterialId) && t.LocationCode == wcsTask.currPointNo)
.ToList();
foreach (var item in hasDetails)
{
var wmsRawStock = newWmsRawStocks.Where(t => t.materialId == item.ErpAmount).First();
item.RealAmount = wmsRawStock.totalAmount;
item.InventoryCount++;
item.UpdateBy = "WCS";
item.UpdateTime = DateTime.Now;
}
newWmsRawStocks.Where(t => !wmsInventoryCheckDetails.Select(y => y.MaterialId).Contains(t.materialId)).ToList();
List<WmsInventoryCheckDetail> addDetailList = new List<WmsInventoryCheckDetail>();
foreach (var item in newWmsRawStocks)
{
addDetailList.Add(new WmsInventoryCheckDetail
{
InventoryCheckDetailId = Global.SnowId.NextId(),
InventoryCheckId = wcsTask.orderId,
CheckStatus = "1",
CreateBy = "WCS",
CreateTime = DateTime.Now,
StockAmount = 0,
RealAmount = item.totalAmount,
InventoryCount = 1,
LocationCode = item.locationCode,
StockId = 1,
StockType = "1",
MaterialId = item.materialId,
ErpStatus = "0",
ErpAmount = 0,
});
}
if (addDetailList.Count > 0)
dbContext.AddRange(addDetailList);
if (hasDetails.Count > 0)
dbContext.UpdateRange(hasDetails);
dbContext.AddRange(newWmsRawStocks);
dbContext.SaveChanges();
}
} }
} }
} }
@ -226,7 +286,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
{ {
} }
MessageBox.Show("保存成功"); HandyControl.Controls.MessageBox.Show("保存成功");
} }
else else
{ {
@ -235,7 +295,7 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
} }
else else
{ {
MessageBox.Show("条码未变动"); HandyControl.Controls.MessageBox.Show("条码未变动");
} }
this.Close(); this.Close();
} }
@ -244,18 +304,22 @@ namespace Khd.Core.Wpf.TaskForm.Inventory
{ {
try try
{ {
using var scope = this._host.Services.CreateScope(); if (!string.IsNullOrEmpty(this.NewBarCode.Text))
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == this.NewBarCode.Text);
if (mesBaseBarcodeInfo != null)
{ {
this.NewCount.Text = mesBaseBarcodeInfo.batchFlag == "1" ? mesBaseBarcodeInfo.amount.ToString() : "1"; using var scope = this._host.Services.CreateScope();
using var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
} var mesBaseBarcodeInfo = dbContext.MesBaseBarcodeInfo.FirstOrDefault(t => t.barcodeInfo == this.NewBarCode.Text);
else if (mesBaseBarcodeInfo != null)
{ {
MessageBox.Show("条码不存在,请重新扫码"); this.NewCount.Text = mesBaseBarcodeInfo.batchFlag == "1" ? mesBaseBarcodeInfo.amount.ToString() : "1";
this.NewBarCode.Text = ""; this.NewCount.IsReadOnly = mesBaseBarcodeInfo.batchFlag != "1";
}
else
{
HandyControl.Controls.MessageBox.Show("条码不存在,请重新扫码");
this.NewBarCode.Text = "";
this.NewCount.Text = string.Empty;
}
} }
} }
catch catch

@ -33,8 +33,9 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="5"> <StackPanel Orientation="Horizontal" Margin="5">
<TextBlock Text="请选择容器编号:" FontSize="30" Foreground="White" VerticalAlignment="Center"/> <TextBlock Text="请选择容器编号:" FontSize="30" Foreground="White" VerticalAlignment="Center"/>
<ComboBox x:Name="ContainerCodeBox" IsEditable="True" Style="{StaticResource ComboBoxExtend}" Width="300" hc:InfoElement.Placeholder="容器编码" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Necessary="True" FontSize="30" /> <ComboBox x:Name="ContainerCodeBox" IsEditable="True" DisplayMemberPath="containerNo" Style="{StaticResource ComboBoxExtend}" Width="300" hc:InfoElement.Placeholder="容器编码" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Necessary="True" FontSize="30" />
<Button x:Name="SearchBtn" Content="搜索" FontSize="30" Height="50" Foreground="White" Width="100" Background="#2196F3" Margin="10,0,0,0" Click="SearchBtn_Click"/> <Button x:Name="SearchBtn" Content="搜索" FontSize="30" Height="50" Foreground="White" Width="100" Background="#2196F3" Margin="10,0,0,0" Click="SearchBtn_Click"/>
<Button Content="编辑" FontSize="30" Height="50" Foreground="White" Width="100" Background="#2196F3" Margin="10,0,0,0" Click="EditBtn_Click"/>
</StackPanel> </StackPanel>
<DataGrid <DataGrid
Style="{StaticResource DataGridStyle}" Style="{StaticResource DataGridStyle}"

@ -4,8 +4,10 @@ using Khd.Core.Wpf.TaskForm.Inventory;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Linq; using System.Linq;
using System.Windows; using System.Windows;
using System.Windows.Media.Media3D;
namespace Khd.Core.Wpf.TaskForm namespace Khd.Core.Wpf.TaskForm
{ {
@ -31,11 +33,11 @@ namespace Khd.Core.Wpf.TaskForm
var wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 100 && t.taskStatus == 6).ToList(); var wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 100 && t.taskStatus == 6).ToList();
if (wcsTasks.Count > 0) if (wcsTasks.Count > 0)
{ {
this.ContainerCodeBox.ItemsSource = wcsTasks.Select(t => t.containerNo).Distinct(); this.ContainerCodeBox.ItemsSource = wcsTasks.Distinct();
} }
else else
{ {
MessageBox.Show("未找到盘库已完成的小车任务!"); HandyControl.Controls.MessageBox.Show("未找到盘库已完成的小车任务!");
this.Close(); this.Close();
} }
} }
@ -47,13 +49,13 @@ namespace Khd.Core.Wpf.TaskForm
private void GetData() private void GetData()
{ {
if (this.ContainerCodeBox.SelectedItem != null) if (this.ContainerCodeBox.SelectedItem is WcsTask task)
{ {
using var scope = _host.Services.CreateScope(); using var scope = _host.Services.CreateScope();
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var wcsTask = dbContext.WcsTask var wcsTask = dbContext.WcsTask
.Where(t => t.taskType == 100) .Where(t => t.taskType == 100)
.Where(t => t.containerNo == this.ContainerCodeBox.Text).FirstOrDefault(); .Where(t => t.containerNo == task.containerNo).FirstOrDefault();
if (wcsTask != null) if (wcsTask != null)
{ {
var wmsInventoryCheckDetails = dbContext.WmsInventoryCheckDetail var wmsInventoryCheckDetails = dbContext.WmsInventoryCheckDetail
@ -76,13 +78,13 @@ namespace Khd.Core.Wpf.TaskForm
this.InventoryDataGrid.Items.Refresh(); this.InventoryDataGrid.Items.Refresh();
if (wmsInventoryCheckDetails.Count == 0) if (wmsInventoryCheckDetails.Count == 0)
{ {
MessageBox.Show("该料箱为空料箱"); HandyControl.Controls.MessageBox.Show("该料箱为空料箱");
} }
} }
} }
else else
{ {
MessageBox.Show("请先选择料箱号!"); HandyControl.Controls.MessageBox.Show("请先选择料箱号!");
} }
} }
@ -93,16 +95,32 @@ namespace Khd.Core.Wpf.TaskForm
private void EditBtn_Click(object sender, RoutedEventArgs e) private void EditBtn_Click(object sender, RoutedEventArgs e)
{ {
dynamic item = this.InventoryDataGrid.SelectedItem; if(this.InventoryDataGrid.SelectedItem!= null)
long materialId = item.MaterialId; {
string containerNo = item.ContainerNo; dynamic item = this.InventoryDataGrid.SelectedItem;
string materialName = item.MaterialName; long materialId = item.MaterialId;
string locationCode = item.LocationCode; string containerNo = item.ContainerNo;
InventoryTaskEditForm editForm = new InventoryTaskEditForm(_host, materialId, containerNo, materialName, locationCode, this); string materialName = item.MaterialName;
this.Hide(); string locationCode = item.LocationCode;
editForm.ShowDialog(); InventoryTaskEditForm editForm = new InventoryTaskEditForm(_host, materialId, containerNo, materialName, locationCode, this);
GetData(); this.Hide();
editForm.ShowDialog();
GetData();
}
else
{
if (this.ContainerCodeBox.SelectedItem is WcsTask task)
{
InventoryTaskEditForm editForm = new InventoryTaskEditForm(_host, 0, task.containerNo, "", task.currPointNo, this);
this.Hide();
editForm.ShowDialog();
GetData();
}
else
{
HandyControl.Controls.MessageBox.Show("请先选择料箱号!");
}
}
} }
} }
} }

@ -13,10 +13,12 @@ namespace Khd.Core.Wpf.TaskForm
public partial class SelectOutRawForm : Window public partial class SelectOutRawForm : Window
{ {
private readonly IHost _host; private readonly IHost _host;
public SelectOutRawForm(IHost host) private readonly string _ud3;
public SelectOutRawForm(IHost host,string ud3)
{ {
InitializeComponent(); InitializeComponent();
_host = host; _host = host;
_ud3 = ud3;
} }
private void Button_Click_1(object sender, RoutedEventArgs e) private void Button_Click_1(object sender, RoutedEventArgs e)
@ -36,6 +38,7 @@ namespace Khd.Core.Wpf.TaskForm
var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>(); var dbContext = scope.ServiceProvider.GetRequiredService<DefaultDbContext>();
var baseEquip = dbContext.BaseEquip.Where(t => t.objid == 10).First(); var baseEquip = dbContext.BaseEquip.Where(t => t.objid == 10).First();
baseEquip.endStationCode = this.endStationCode.SelectedItem.ToString(); baseEquip.endStationCode = this.endStationCode.SelectedItem.ToString();
baseEquip.ud3 = _ud3;
dbContext.BaseEquip.Update(baseEquip); dbContext.BaseEquip.Update(baseEquip);
dbContext.SaveChanges(); dbContext.SaveChanges();
MessageBox.Show("保存成功!"); MessageBox.Show("保存成功!");

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

Loading…
Cancel
Save