This commit is contained in:
2024-11-18 20:13:49 +08:00
parent caee66b131
commit 15bc3b22fb
7 changed files with 295 additions and 91 deletions

View File

@@ -28,9 +28,85 @@ namespace ZR.Service.mes.wms
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<WmOneTimeInventoryDto> GetList(WmOneTimeInventoryQueryDto parm)
public WmOneTimeInventoryTableDto GetList(WmOneTimeInventoryQueryDto parm)
{
List<string> partnumberByDescription = new();
var list = Context
.Queryable<WmMaterial>()
.LeftJoin<WmOneTimeInventory>((m, p) => m.Partnumber == p.Partnumber)
.Distinct()
.WhereIF(
!string.IsNullOrEmpty(parm.Description),
(m, p) => m.Description.Contains(parm.Description)
)
.WhereIF(
!string.IsNullOrEmpty(parm.Partnumber),
(m, p) => m.Partnumber.Contains(parm.Partnumber)
)
.Where((m, p) => m.Status == 1)
.Where((m, p) => m.Type == 1)
.WhereIF(parm.Status > -1, (m, p) => p.Status == parm.Status)
.WhereIF(parm.Type > 0, (m, p) => p.Type == parm.Type)
.OrderBy((m, p) => m.Description)
.Select(
(m, p) =>
new WmOneTimeInventoryDto
{
RealQuantity = 0,
Color = m.Color,
Specification = m.Specification,
Description = m.Description,
Id = p.Id,
BlankNum = p.BlankNum,
Partnumber = p.Partnumber,
Quantity = p.Quantity,
MaxNum = p.MaxNum,
MinNum = p.MinNum,
WarnNum = p.WarnNum,
Type = p.Type,
Status = p.Status,
Remark = p.Remark,
CreatedBy = p.CreatedBy,
CreatedTime = p.CreatedTime,
UpdatedBy = p.UpdatedBy,
UpdatedTime = p.UpdatedTime,
}
)
.ToList();
foreach (WmOneTimeInventoryDto item in list)
{
// 获取实际库存
List<string> partnumbers = new()
{
item.Partnumber
};
Dictionary<string, int> dict = GetBatchOneTimeRealPartNum(partnumbers);
item.RealQuantity = dict.TryGetValue(item.Partnumber, out int value) ? value : 0;
}
list = list.Where(it => it.RealQuantity != 0 || it.Quantity != 0)
.Where(it => !string.IsNullOrEmpty(it.Partnumber))
.DistinctBy(it => it.Partnumber)
.ToList();
int total = list.Count;
// 仓库总盘点零件数
int StocktakingTotal =
Context.Queryable<WmOneTimeInventory>().Sum(it => it.Quantity) ?? 0;
// 仓库当前查询盘点零件数
int QuantitySum = list.Sum(it => it.Quantity) ?? 0;
// 仓库当前查询实际零件数
int RealQuantitySum = list.Sum(it => it.RealQuantity);
WmOneTimeInventoryTableDto response = new()
{
Total = total,
StocktakingTotal = StocktakingTotal,
QuantitySum = QuantitySum,
RealQuantitySum = RealQuantitySum,
Result = list.Skip((parm.PageNum - 1) * parm.PageSize).Take(parm.PageSize).ToList(),
};
return response;
/*List<string> partnumberByDescription = new();
if (parm != null && !string.IsNullOrEmpty(parm.Description))
{
partnumberByDescription = Context
@@ -84,7 +160,7 @@ namespace ZR.Service.mes.wms
item.RealQuantity = dict.TryGetValue(item.Partnumber, out int value) ? value : 0;
}
}
return response;
return response;*/
}
/// <summary>
@@ -498,12 +574,13 @@ namespace ZR.Service.mes.wms
try
{
// 盘点时间
DateTime? checkTime = Context
.Queryable<WmOneTimeInventory>()
.Where(it => it.Status == 1)
.Select(it => it.CreatedTime)
.First() ?? new DateTime(2024, 10, 19, 0, 0, 0);
// DateTime
DateTime? checkTime =
Context
.Queryable<WmOneTimeInventory>()
.Where(it => it.Status == 1)
.Select(it => it.CreatedTime)
.First() ?? new DateTime(2024, 10, 19, 0, 0, 0);
// DateTime
CommonFQCService commonFQCService = new();
// 获取报表数据
// 一次合格计算后库存 = 盘点库存 + 产线合格 + 抛光合格 - gp12投入 - 后道直接出库
@@ -522,44 +599,49 @@ namespace ZR.Service.mes.wms
/// <returns></returns>
public (string, object, object) ImportExcel(List<WmOneTimeInventoryExportDto> importList)
{
List<WmOneTimeInventory> wmOneTimeInventorylist = importList.Select(it => new WmOneTimeInventory
{
Id = SnowFlakeSingle.Instance.NextId().ToString(),
Type = 1,
Status = 1,
MaxNum = 0,
MinNum = 0,
WarnNum = 0,
CreatedBy = "页面导入",
Remark = "EXCEL 盘点导入",
CreatedTime = it. ?? DateTime.Now.ToLocalTime(),
Partnumber = it.,
Quantity = it.
}).ToList();
var x = Context.Storageable(wmOneTimeInventorylist)
List<WmOneTimeInventory> wmOneTimeInventorylist = importList
.Select(it => new WmOneTimeInventory
{
Id = SnowFlakeSingle.Instance.NextId().ToString(),
Type = 1,
Status = 1,
MaxNum = 0,
MinNum = 0,
WarnNum = 0,
CreatedBy = "页面导入",
Remark = "EXCEL 盘点导入",
CreatedTime = it. ?? DateTime.Now.ToLocalTime(),
Partnumber = it.,
Quantity = it.
})
.ToList();
var x = Context
.Storageable(wmOneTimeInventorylist)
.SplitError(x => x.Item.Partnumber.IsEmpty(), "零件号不能为空")
.SplitError(x => x.Item.Quantity.IsEmpty(), "盘点数不能为空")
.SplitUpdate(it => it.Any()) // 数据库存在更新
.SplitDelete(it => it.Item.Quantity == 0) //盘点数为0的不导入
.SplitInsert(it => true) // 其余插入
.WhereColumns(it => it.Partnumber)//如果不是主键可以这样实现多字段it=>new{it.x1,it.x2}
.WhereColumns(it => it.Partnumber) //如果不是主键可以这样实现多字段it=>new{it.x1,it.x2}
.ToStorage();
// 清空全部
var result = x.AsInsertable.ExecuteCommand();//不存在则插入;
var result2 = x.AsUpdateable.IgnoreColumns(it => new { it.Id }).ExecuteCommand();//存在则修改;
var result = x.AsInsertable.ExecuteCommand(); //不存在则插入;
var result2 = x.AsUpdateable.IgnoreColumns(it => new { it.Id }).ExecuteCommand(); //存在则修改;
var result3 = x.AsDeleteable.ExecuteCommand(); //盘点数为0的删除;
string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}",
x.InsertList.Count,
x.UpdateList.Count,
x.ErrorList.Count,
x.IgnoreList.Count,
x.DeleteList.Count,
x.TotalList.Count);
//输出统计
string msg = string.Format(
" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}",
x.InsertList.Count,
x.UpdateList.Count,
x.ErrorList.Count,
x.IgnoreList.Count,
x.DeleteList.Count,
x.TotalList.Count
);
//输出统计
Console.WriteLine(msg);
//输出错误信息
//输出错误信息
foreach (var item in x.ErrorList)
{
Console.WriteLine("零件异常:" + item.Item.Partnumber + " : " + item.StorageMessage);