change-完善退库

master
liuwf 1 year ago
parent b00eee5a2f
commit 547cfc7481

@ -1146,7 +1146,7 @@ namespace Khd.Core.Wcs.Wcs
{
}
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.endStationCode == endStationCode);
BaseEquip startEquip = StaticData.BaseEquip.First(t => t.equipNo == endStationCode);
List<WmsRawReturn> wmsRawReturns = dbContext.WmsRawReturn.Where(t => t.endStationCode == endStationCode)
.Where(t => t.auditStatus == "1")
.Where(t => t.executeStatus == "0" || t.executeStatus == "1")

@ -1267,7 +1267,7 @@
</TabItem>
<TabItem x:Name="LocationManager11" Header="辅料库位" Style="{StaticResource DefaultItem}" FontSize="25" HorizontalContentAlignment="Center" Background="#213269" VerticalContentAlignment="Center" Foreground="White" Width="160" Height="80" Margin="5">
<Grid>
<Grid Height="1080" Width="1680">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
@ -2233,36 +2233,42 @@
Width="3*"
/>
<DataGridTextColumn
Header="物料描述"
Header="物料规格"
Binding="{Binding materialSpec}"
ElementStyle="{StaticResource dgCell}"
Width="5*"
/>
<DataGridTextColumn
<!--<DataGridTextColumn
Header="销售订单"
Binding="{Binding saleOrderId}"
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
<DataGridTextColumn
/>-->
<!--<DataGridTextColumn
Header="箱体携带数量"
Binding="{Binding thisOutAmount}"
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
/>-->
<DataGridTextColumn
Header="申请数量"
Header="申请退库数量"
Binding="{Binding outstockAmount}"
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
<DataGridTextColumn
Header="已数量"
Header="已退数量"
Binding="{Binding realOutstockAmount}"
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
<DataGridTextColumn
Header="退库工位"
Binding="{Binding endStationCode}"
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
</DataGrid.Columns>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">

@ -15,6 +15,7 @@ using Masuit.Tools;
using Masuit.Tools.Logging;
using Microsoft.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Internal;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.IdentityModel.Tokens;
@ -489,62 +490,98 @@ namespace Khd.Core.Wpf.Form
{
this.ReturnOrder.Text = "待退库单:\n" + list.Distinct().Join("\n");
});
var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
if (!string.IsNullOrEmpty(baseEquip.endStationCode))
WcsTask? wcsTask = dbContext.WcsTask.Where(x => x.nextPointId == 10 && x.taskType == 48).FirstOrDefault();
if (wcsTask != null)
{
List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30).Where(t => orderIds.Contains(t.orderId)).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 => 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 })
.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(() =>
List<WmsRawReturn> wmsRawReturnList = wmsRawReturns.Where(x => x.endStationCode == wcsTask.currPointNo).ToList();
if (wmsRawReturnList != null && wmsRawReturnList.Count > 0)
{
this.ReturnTaskNumber.ItemsSource = orderNumber;
this.ReturnTaskNumber.Items.Refresh();
});
}
else
{
Dispatcher.Invoke(() =>
List<long?> materialIds = wmsRawReturnList.Select(t => t.materialId).ToList();
List<MesBaseMaterialInfo> mesBaseMaterialInfos = dbContext.MesBaseMaterialInfo.Where(t => materialIds.Contains(t.MaterialId)).ToList();
var rawReturnPageInfos = from a in mesBaseMaterialInfos
from b in wmsRawReturnList
where a.MaterialId == b.materialId
select new
{
materiaName = a.MaterialName,
materialSpec = a.MaterialSpec,
outstockAmount = b.planAmount,
realOutstockAmount = b.returnAmount,
endStationCode = b.endStationCode
};
Dispatcher.Invoke(() =>
{
this.ReturnTaskNumber.ItemsSource = rawReturnPageInfos;
this.ReturnTaskNumber.Items.Refresh();
});
}
else
{
this.ReturnTaskNumber.ItemsSource = null;
this.ReturnTaskNumber.Items.Refresh();
});
Dispatcher.Invoke(() =>
{
this.ReturnTaskNumber.ItemsSource = null;
this.ReturnTaskNumber.Items.Refresh();
});
}
}
//var baseEquip = dbContext.BaseEquip.First(t => t.objid == 10);
//if (!string.IsNullOrEmpty(baseEquip.endStationCode))
//{
// List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30).Where(t => orderIds.Contains(t.orderId)).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 => 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 })
// .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
{
}
Thread.Sleep(1000);
Thread.Sleep(2000);
}
}
@ -630,7 +667,7 @@ namespace Khd.Core.Wpf.Form
}).ToList();
//本次所有任务出来的托盘号
List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30&& targetRawOutstocks.Select(d=>d.materialId).Contains(t.materialId)).ToList();
List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30 && targetRawOutstocks.Select(d => d.materialId).Contains(t.materialId)).ToList();
List<string> containerNos = wcsTasks.Select(t => t.containerNo).ToList();
//本次所有托盘携带的物料
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => containerNos.Contains(t.palletInfoCode)).ToList();
@ -764,7 +801,7 @@ namespace Khd.Core.Wpf.Form
{
}
Thread.Sleep(2000);
Thread.Sleep(1000);
}
}
@ -1832,8 +1869,8 @@ namespace Khd.Core.Wpf.Form
{
TaskHistoryWindow taskHistoryWindow = new TaskHistoryWindow(_host);
taskHistoryWindow.ShowDialog();
}
catch (Exception ex)
{
@ -2351,20 +2388,27 @@ namespace Khd.Core.Wpf.Form
txtReturnBarCode.Focus();
return;
}
WmsRawReturn? wmsRawReturn = dbContext.WmsRawReturn
.Where(t => t.rawReturnId == task.orderId).FirstOrDefault();
WmsRawReturn? wmsRawReturn = dbContext.WmsRawReturn.Where(t => t.endStationCode == task.currPointNo && t.materialId == material.materialId).FirstOrDefault();
if (wmsRawReturn == null)
{
txtReturnbox.Text = ("未查询到退库任务!");
return;
var result = MessageBox.Show("当前物料不在退出申请单中,确定还要入库吗?", "确认入库", MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result != MessageBoxResult.Yes)
{
txtReturnBarCode.Text = string.Empty;
txtReturnBox.Text = string.Empty;
return;
}
}
var container = dbContext.WmsBaseLocation.FirstOrDefault(t => t.containerCode == txtReturnBox.Text && t.warehouseId == 512);
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock
.Where(t => txtReturnBarCode.Text == t.instockBatch)
.Where(t => t.warehouseFloor == 5 && t.warehouseId == 512).ToList();
if (wmsRawStocks.Count > 0 && material.batchFlag != "1")
{
txtReturnbox.Text = ($"该条码已入库!料箱号为{wmsRawStocks.First().palletInfoCode},库位号为{wmsRawStocks.First().locationCode}");
txtReturnbox.Text = ($"该条码已入库,非批次!料箱号为{wmsRawStocks.First().palletInfoCode},库位号为{wmsRawStocks.First().locationCode}");
txtReturnBarCode.Text = string.Empty;
txtReturnBox.Text = string.Empty;
return;
@ -2383,38 +2427,45 @@ namespace Khd.Core.Wpf.Form
catch
{
txtReturnbox.Text = ("请输入正确的数量");
return;
}
wmsRawReturn.returnAmount += amount;
if (wmsRawReturn.returnAmount >= wmsRawReturn.planAmount)
if (wmsRawReturn != null)
{
wmsRawReturn.executeStatus = "2";
wmsRawReturn.endTime = DateTime.Now;
wmsRawReturn.updateDate = DateTime.Now;
wmsRawReturn.returnAmount += amount;
if (wmsRawReturn.returnAmount >= wmsRawReturn.planAmount)
{
wmsRawReturn.executeStatus = "2";
wmsRawReturn.endTime = DateTime.Now;
}
dbContext.WmsRawReturn.Update(wmsRawReturn);
WmsRawReturnDetail? wmsRawReturnDetail = new WmsRawReturnDetail();
wmsRawReturnDetail.RawReturnId = (long)wmsRawReturn.rawReturnId;
wmsRawReturnDetail.LocationCode = container.locationCode;
wmsRawReturnDetail.MaterialBarcode = txtInBarCode.Text;
wmsRawReturnDetail.MaterialId = (long)material.materialId;
wmsRawReturnDetail.InstockBatch = material.batchCode;
wmsRawReturnDetail.MaterialProductionDate = material.productionDate;
wmsRawReturnDetail.PlanAmount = wmsRawReturn.planAmount;
wmsRawReturnDetail.ReturnAmount = wmsRawReturn.returnAmount;
wmsRawReturnDetail.ExecuteStatus = "2";
wmsRawReturnDetail.ReturnAmount = wmsRawReturn.returnAmount;
wmsRawReturnDetail.ReturnPerson = "WPF";
wmsRawReturnDetail.ReturnTime = DateTime.Now;
wmsRawReturnDetail.ReturnWay = "2";
wmsRawReturnDetail.CreateBy = "WPF";
wmsRawReturnDetail.CreateDate = DateTime.Now;
dbContext.WmsRawReturnDetail.Add(wmsRawReturnDetail);
}
WmsRawReturnDetail? wmsRawReturnDetail = new WmsRawReturnDetail();
wmsRawReturnDetail.RawReturnId = (long)wmsRawReturn.rawReturnId;
wmsRawReturnDetail.LocationCode = container.locationCode;
wmsRawReturnDetail.MaterialBarcode = txtInBarCode.Text;
wmsRawReturnDetail.MaterialId = (long)material.materialId;
wmsRawReturnDetail.InstockBatch = material.batchCode;
wmsRawReturnDetail.MaterialProductionDate = material.productionDate;
wmsRawReturnDetail.PlanAmount = wmsRawReturn.planAmount;
wmsRawReturnDetail.ReturnAmount = wmsRawReturn.returnAmount;
wmsRawReturnDetail.ExecuteStatus = "2";
wmsRawReturnDetail.ReturnAmount = wmsRawReturn.returnAmount;
wmsRawReturnDetail.ReturnPerson = "WPF";
wmsRawReturnDetail.ReturnTime = DateTime.Now;
wmsRawReturnDetail.ReturnWay = "2";
wmsRawReturnDetail.CreateBy = "WPF";
wmsRawReturnDetail.CreateDate = DateTime.Now;
decimal? message = 0;
if (wmsRawStocks.Count > 0)
{ // 批次条码并且有库存
var newRawStock = wmsRawStocks.First();
newRawStock.totalAmount += amount;
newRawStock.updateDate = DateTime.Now;
dbContext.WmsRawStock.Update(newRawStock);
message = newRawStock.totalAmount;
}
else
{ // 无库存
@ -2441,12 +2492,17 @@ namespace Khd.Core.Wpf.Form
safeFlag = material.safeFlag
};
dbContext.WmsRawStock.Add(newRawStock);
message = newRawStock.totalAmount;
}
dbContext.SaveChanges();
txtReturnbox.Text = ("退库成功!");
txtReturnbox.Text = ($"退库成功!,当前库存{message}");
txtReturnBarCode.Text = string.Empty;
txtReturnBox.Text = string.Empty;
returnMaterialName.Text = string.Empty;
returnGG.Text = string.Empty;
txtReturnScan.Text = string.Empty;
txtReturnBarCode.Focus();
}
else
@ -2820,8 +2876,8 @@ namespace Khd.Core.Wpf.Form
}
if (wmsRawOutstocks.Count > 0)
{
wmsRawOutstocks = wmsRawOutstocks.OrderBy(t => list[0]==t.endStationCode?0:99).ToList();
wmsRawOutstocks = wmsRawOutstocks.OrderBy(t => list[0] == t.endStationCode ? 0 : 99).ToList();
decimal? sum = wmsRawOutstocks.Sum(t => (t.outstockAmount - t.realOutstockAmount));
if (outScan > sum)
{
@ -2832,7 +2888,7 @@ namespace Khd.Core.Wpf.Form
{
if (outScan <= 0)
{
break;
break;
}
decimal outAmount = 0;
if (item.outstockAmount - item.realOutstockAmount > outScan)
@ -2849,14 +2905,14 @@ namespace Khd.Core.Wpf.Form
item.executeStatus = "2";
item.endTime = DateTime.Now;
}
if (wmsRawStock.totalAmount <= 0)
{
dbContext.Remove(wmsRawStock);
}
else
{
dbContext.Update(wmsRawStock);
}
//if (wmsRawStock.totalAmount <= 0)
//{
// dbContext.Remove(wmsRawStock);
//}
//else
//{
// dbContext.Update(wmsRawStock);
//}
wmsRawStock.totalAmount -= outAmount;
if (wmsRawStock.totalAmount == 0)
{
@ -3194,7 +3250,7 @@ namespace Khd.Core.Wpf.Form
}
catch (Exception ex)
{
scanOutMsg.Text = "出库失败"+ex;
scanOutMsg.Text = "出库失败" + ex;
}
}
/// <summary>

Loading…
Cancel
Save