liuwf 1 year ago
parent cdb092d306
commit 11be83bf64

@ -2154,10 +2154,14 @@
</StackPanel> </StackPanel>
</Border> </Border>
<Border BorderBrush="White" BorderThickness="2" Grid.Column="0" Grid.ColumnSpan="6" Grid.Row="5" Grid.RowSpan="2" Margin="20"> <Border BorderBrush="White" BorderThickness="2" Grid.Column="0" Grid.ColumnSpan="6" Grid.Row="5" Grid.RowSpan="2" Margin="20">
<DataGrid Background="Transparent" <DataGrid Background="Transparent"
CanUserAddRows="False" CanUserAddRows="False"
AutoGenerateColumns="False" AutoGenerateColumns="False"
CanUserSortColumns="False" CanUserSortColumns="False"
Height="auto"
GridLinesVisibility="Horizontal"
CanUserDeleteRows="False" CanUserDeleteRows="False"
CanUserReorderColumns="False" CanUserReorderColumns="False"
CanUserResizeColumns="False" CanUserResizeColumns="False"
@ -2167,45 +2171,47 @@
Header="物料名称" Header="物料名称"
Binding="{Binding materiaName}" Binding="{Binding materiaName}"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
Width="3*" Width="*"
/> />
<DataGridTextColumn <DataGridTextColumn
Header="物料描述" Header="物料描述"
Binding="{Binding materialSpec}" Binding="{Binding materialSpec}"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
Width="5*" Width="*"
/> />
<DataGridTextColumn <!--<DataGridTextColumn
Header="销售订单" Header="销售订单"
Binding="{Binding saleOrderId}" Binding="{Binding saleOrderId}"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
Width="2*" Width="2*"
/> />-->
<DataGridTextColumn
Header="箱体携带数量"
Binding="{Binding thisOutAmount}"
ElementStyle="{StaticResource dgCell}"
Width="2*"
/>
<DataGridTextColumn <DataGridTextColumn
Header="申请数量" Header="申请数量"
Binding="{Binding outstockAmount}" Binding="{Binding outstockAmount}"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
Width="2*" Width="*"
/> />
<DataGridTextColumn <DataGridTextColumn
Header="已出数量" Header="已出数量"
Binding="{Binding realOutstockAmount}" Binding="{Binding realOutstockAmount}"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
Width="2*" Width="*"
/> />
<DataGridTextColumn <DataGridTextColumn
Header="是否出完" Header="是否出完"
Binding="{Binding isSendOver}" Binding="{Binding isSendOver}"
Width="2*" Width="*"
ElementStyle="{StaticResource dgCell}" ElementStyle="{StaticResource dgCell}"
/> />
<DataGridTextColumn
Header="箱体携带数量"
Binding="{Binding thisOutAmount}"
ElementStyle="{StaticResource dgCell}"
Width="3*"
/>
</DataGrid.Columns> </DataGrid.Columns>
<DataGrid.CellStyle> <DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}"> <Style TargetType="{x:Type DataGridCell}">

@ -395,47 +395,118 @@ 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))
{ {
List<WcsTask> wcsTasks = dbContext.WcsTask.Where(t => t.taskType == 30).Where(t => orderIds.Contains(t.orderId)).ToList(); #region 待测试
//找出本工位的申请单
List<WmsRawOutstock> RawOutstocks = wmsRawOutstocks.Where(t => t.endStationCode == baseEquip.endStationCode).ToList();
// 根据 materialId 分组,并计算 outstockAmount 和 realOutstockAmount 的总和
var targetRawOutstocks = RawOutstocks
.GroupBy(t => new { t.materialId, t.saleOrderId })
.Select(g => new
{
materialId = g.Key.materialId,
saleOrderId = g.Key.saleOrderId,
totalOutstockAmount = g.Sum(t => t.outstockAmount),
totalRealOutstockAmount = g.Sum(t => t.realOutstockAmount)
}).ToList();
//本次所有任务出来的托盘号
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<string> containerNos = wcsTasks.Select(t => t.containerNo).ToList();
//本次所有托盘携带的物料
List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => containerNos.Contains(t.palletInfoCode)).ToList(); List<WmsRawStock> wmsRawStocks = dbContext.WmsRawStock.Where(t => containerNos.Contains(t.palletInfoCode)).ToList();
var thisOutList = wmsRawStocks.GroupBy(t => new { t.materialId, t.saleOrderId,t.palletInfoCode })
.Select(t => new // Step 3: 计算每个申请单物料在各个托盘中的数量
var palletMaterialSummary = wmsRawStocks
.GroupBy(t => new { t.materialId, t.palletInfoCode,t.saleOrderId })
.Select(g => new
{ {
palletInfoCode = t.Key.palletInfoCode, MaterialId = g.Key.materialId,
materialId = t.Key.materialId, saleOrderId = g.Key.saleOrderId,
saleOrderId = t.Key.saleOrderId, PalletInfoCode = g.Key.palletInfoCode,
thisOutAmount = t.Sum(x => x.totalAmount) - t.Sum(x => x.frozenAmount) //携带总可用库存
}); canUseAmount = g.Sum(x => x.totalAmount) - g.Sum(x => x.frozenAmount)
List<WmsRawOutstock> endStationCodeOutRaw = wmsRawOutstocks.Where(t => t.endStationCode == baseEquip.endStationCode).ToList(); })
.ToList();
List<long?> materialIds = endStationCodeOutRaw.Select(t => t.materialId).ToList(); // 汇总每个申请单在各个托盘的物料数量
var result = targetRawOutstocks
.Select(order => new
{
SaleOrderId = order.saleOrderId,
MaterialId = order.materialId,
//申请数量
RequestedAmount = order.totalOutstockAmount,
//实际已出数量
RealOutstockAmount = order.totalRealOutstockAmount,
// 托盘携带可用信息,用分号分隔
PalletDetails = string.Join("\n", palletMaterialSummary
.Where(pallet => pallet.MaterialId == order.materialId)
.Select(pallet => $"托盘{pallet.PalletInfoCode}数量{pallet.canUseAmount}")
)
}).ToList();
List<long?> materialIds = RawOutstocks.Select(t => t.materialId).ToList();
List<MesBaseMaterialInfo> mesBaseMaterialInfos = dbContext.MesBaseMaterialInfo.Where(t => materialIds.Contains(t.MaterialId)).ToList(); List<MesBaseMaterialInfo> mesBaseMaterialInfos = dbContext.MesBaseMaterialInfo.Where(t => materialIds.Contains(t.MaterialId)).ToList();
var bill = endStationCodeOutRaw.GroupBy(t => new { t.materialId, t.materialBatch, t.saleOrderId })
.Select(t => new
{ var orderNumber = from r in result
materialId = t.Key.materialId, from m in mesBaseMaterialInfos
materialBatch = t.Key.materialBatch, where r.MaterialId== m.MaterialId
saleOrderId = t.Key.saleOrderId,
outstockAmount = t.Sum(x => x.outstockAmount),
realOutstockAmount = t.Sum(x => x.realOutstockAmount),
});
var orderNumber = from a in bill
from b in thisOutList
from c in mesBaseMaterialInfos
where a.materialId == b.materialId && a.saleOrderId == b.saleOrderId && a.materialId ==c.MaterialId
select new select new
{ {
palletInfoCode = b.palletInfoCode, materiaName = m.MaterialName,
materialBatch = a.materialBatch, materialSpec = m.MaterialSpec,
saleOrderId = b.saleOrderId, saleOrderId = r.SaleOrderId,
outstockAmount = a.outstockAmount, outstockAmount = r.RequestedAmount,
materialSpec = c.MaterialSpec, realOutstockAmount = r.RealOutstockAmount,
realOutstockAmount = a.realOutstockAmount, isSendOver = r.RequestedAmount <= r.RealOutstockAmount ? "已出完" : "未出完",
thisOutAmount = b.thisOutAmount, thisOutAmount = r.PalletDetails
isSendOver = a.outstockAmount <= (a.realOutstockAmount + b.thisOutAmount) ? "已出完" : "未出完"
}; };
#endregion
//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,t.palletInfoCode })
// .Select(t => new
// {
// palletInfoCode = t.Key.palletInfoCode,
// materialId = t.Key.materialId,
// saleOrderId = t.Key.saleOrderId,
// thisOutAmount = t.Sum(x => x.totalAmount) - t.Sum(x => x.frozenAmount)
// });
//List<WmsRawOutstock> endStationCodeOutRaw = wmsRawOutstocks.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, t.materialBatch, t.saleOrderId })
// .Select(t => new
// {
// materialId = t.Key.materialId,
// materialBatch = t.Key.materialBatch,
// saleOrderId = t.Key.saleOrderId,
// outstockAmount = t.Sum(x => x.outstockAmount),
// realOutstockAmount = t.Sum(x => x.realOutstockAmount),
// });
//var orderNumber = from a in bill
// from b in thisOutList
// from c in mesBaseMaterialInfos
// where a.materialId == b.materialId && a.saleOrderId == b.saleOrderId && a.materialId ==c.MaterialId
// select new
// {
// palletInfoCode = b.palletInfoCode,
// materialBatch = a.materialBatch,
// saleOrderId = b.saleOrderId,
// outstockAmount = a.outstockAmount,
// materialSpec = c.MaterialSpec,
// realOutstockAmount = a.realOutstockAmount,
// thisOutAmount = b.thisOutAmount,
// isSendOver = a.outstockAmount <= (a.realOutstockAmount + b.thisOutAmount) ? "已出完" : "未出完"
// };
Dispatcher.Invoke(() => Dispatcher.Invoke(() =>
{ {

Loading…
Cancel
Save