|
|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -764,7 +801,7 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
Thread.Sleep(2000);
|
|
|
|
|
Thread.Sleep(1000);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -2352,20 +2389,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;
|
|
|
|
|
@ -2384,38 +2428,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
|
|
|
|
|
{ // 无库存
|
|
|
|
|
@ -2442,12 +2493,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
|
|
|
|
|
@ -2850,6 +2906,14 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
item.executeStatus = "2";
|
|
|
|
|
item.endTime = DateTime.Now;
|
|
|
|
|
}
|
|
|
|
|
//if (wmsRawStock.totalAmount <= 0)
|
|
|
|
|
//{
|
|
|
|
|
// dbContext.Remove(wmsRawStock);
|
|
|
|
|
//}
|
|
|
|
|
//else
|
|
|
|
|
//{
|
|
|
|
|
// dbContext.Update(wmsRawStock);
|
|
|
|
|
//}
|
|
|
|
|
wmsRawStock.totalAmount -= outAmount;
|
|
|
|
|
if (wmsRawStock.totalAmount == 0)
|
|
|
|
|
{
|
|
|
|
|
@ -3863,7 +3927,7 @@ namespace Khd.Core.Wpf.Form
|
|
|
|
|
dbContext.AddRange(addList);
|
|
|
|
|
dbContext.SaveChanges();
|
|
|
|
|
transaction.Commit();
|
|
|
|
|
HandyControl.Controls.MessageBox.Show("创建出库任务成功!");
|
|
|
|
|
// HandyControl.Controls.MessageBox.Show("创建出库任务成功!");
|
|
|
|
|
itemsControlItems.Clear();
|
|
|
|
|
CallSelectedItem.Clear();
|
|
|
|
|
GetPersonCallMaterialData();
|
|
|
|
|
|