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

@ -58,6 +58,16 @@ namespace ZR.Model.MES.wms.Dto
public DateTime? UpdatedTime { get; set; } public DateTime? UpdatedTime { get; set; }
} }
public class WmOneTimeInventoryTableDto
{
public int Total { get; set; }
public int StocktakingTotal { get; set; }
public int QuantitySum { get; set; }
public int RealQuantitySum { get; set; }
public List<WmOneTimeInventoryDto> Result { get; set; }
}
// 一次合格(产成品)导出 // 一次合格(产成品)导出
[SugarTable("wm_one_time_record", "一次合格表")] [SugarTable("wm_one_time_record", "一次合格表")]
public class WmOneTimeInventoryExportDto public class WmOneTimeInventoryExportDto

View File

@ -61,6 +61,16 @@ namespace ZR.Model.MES.wms.Dto
public DateTime? UpdatedTime { get; set; } public DateTime? UpdatedTime { get; set; }
} }
public class WmPolishInventoryTableDto
{
public int Total { get; set; }
public int StocktakingTotal { get; set; }
public int QuantitySum { get; set; }
public int RealQuantitySum { get; set; }
public List<WmPolishInventoryDto> Result { get; set; }
}
[SugarTable("wm_polish_inventory", "抛光表")] [SugarTable("wm_polish_inventory", "抛光表")]
public class WmPolishInventoryExportDto public class WmPolishInventoryExportDto
{ {
@ -69,11 +79,12 @@ namespace ZR.Model.MES.wms.Dto
public string { get; set; } public string { get; set; }
public string { get; set; } public string { get; set; }
public string { get; set; } public string { get; set; }
[SugarColumn(ColumnName = "quantity")] [SugarColumn(ColumnName = "quantity")]
public int { get; set; } = 0; public int { get; set; } = 0;
public int { get; set; } = 0; public int { get; set; } = 0;
[SugarColumn(ColumnName = "CREATED_TIME")] [SugarColumn(ColumnName = "CREATED_TIME")]
public DateTime? { get; set; } public DateTime? { get; set; }
} }
} }

View File

@ -1314,7 +1314,10 @@ namespace ZR.Service.mes.qc
var predicateParkingSensor = Expressionable var predicateParkingSensor = Expressionable
.Create<QcQualityStatisticsFirst>() .Create<QcQualityStatisticsFirst>()
.And(it => ParkingSensorPartNumberList.Contains(it.FinishedPartNumber)) .And(it => ParkingSensorPartNumberList.Contains(it.FinishedPartNumber))
.AndIF(!string.IsNullOrEmpty(query.Partnumber), it => it.FinishedPartNumber == query.Partnumber) .AndIF(
!string.IsNullOrEmpty(query.Partnumber),
it => it.FinishedPartNumber == query.Partnumber
)
.And(it => it.StartTime >= boardData.OneTimeStockTime) .And(it => it.StartTime >= boardData.OneTimeStockTime)
.ToExpression(); .ToExpression();
// 倒车雷达 // 倒车雷达
@ -1408,6 +1411,12 @@ namespace ZR.Service.mes.qc
{ {
foreach (var partNumber in partNumbers) foreach (var partNumber in partNumbers)
{ {
startTime =
Context
.Queryable<WmPolishInventory>()
.Where(it => it.Partnumber == partNumber)
.Select(it => it.UpdatedTime)
.First() ?? startTime;
// 盘点数 // 盘点数
int polishWarehouseTotal = int polishWarehouseTotal =
Context Context
@ -1475,6 +1484,12 @@ namespace ZR.Service.mes.qc
{ {
foreach (var partNumber in partNumbers) foreach (var partNumber in partNumbers)
{ {
startTime =
Context
.Queryable<WmOneTimeInventory>()
.Where(it => it.Partnumber == partNumber)
.Select(it => it.UpdatedTime)
.First() ?? startTime;
// 基本值 // 基本值
int oneTimeWarehouseTotal = int oneTimeWarehouseTotal =
Context Context
@ -1513,11 +1528,12 @@ namespace ZR.Service.mes.qc
int productQualifiedTotal = int productQualifiedTotal =
Context Context
.Queryable<QcQualityStatisticsFirst>() .Queryable<QcQualityStatisticsFirst>()
.Where(it => !ParkingSensorPartNumberList.Contains(it.FinishedPartNumber)) .Where(it =>
!ParkingSensorPartNumberList.Contains(it.FinishedPartNumber)
)
.Where(it => it.FinishedPartNumber == partNumber) .Where(it => it.FinishedPartNumber == partNumber)
.Where(it => it.StartTime >= startTime) .Where(it => it.StartTime >= startTime)
.Sum(it => it.QualifiedNumber) .Sum(it => it.QualifiedNumber) ?? 0;
?? 0;
productQualifiedTotal = productQualifiedTotal / 3; productQualifiedTotal = productQualifiedTotal / 3;
// 抛光合格 // 抛光合格
int polishQualifiedTotal = int polishQualifiedTotal =

View File

@ -9,7 +9,7 @@ namespace ZR.Service.mes.wms.IService
/// </summary> /// </summary>
public interface IWmOneTimeInventoryService : IBaseService<WmOneTimeInventory> public interface IWmOneTimeInventoryService : IBaseService<WmOneTimeInventory>
{ {
PagedInfo<WmOneTimeInventoryDto> GetList(WmOneTimeInventoryQueryDto parm); WmOneTimeInventoryTableDto GetList(WmOneTimeInventoryQueryDto parm);
/// <summary> /// <summary>
/// 一次合格导出 /// 一次合格导出

View File

@ -10,7 +10,7 @@ namespace ZR.Service.mes.wms.IService
/// </summary> /// </summary>
public interface IWmPolishInventoryService : IBaseService<WmPolishInventory> public interface IWmPolishInventoryService : IBaseService<WmPolishInventory>
{ {
PagedInfo<WmPolishInventoryDto> GetList(WmPolishInventoryQueryDto parm); WmPolishInventoryTableDto GetList(WmPolishInventoryQueryDto parm);
/// <summary> /// <summary>
/// 获取导出数据 /// 获取导出数据

View File

@ -28,9 +28,85 @@ namespace ZR.Service.mes.wms
/// </summary> /// </summary>
/// <param name="parm"></param> /// <param name="parm"></param>
/// <returns></returns> /// <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)) if (parm != null && !string.IsNullOrEmpty(parm.Description))
{ {
partnumberByDescription = Context partnumberByDescription = Context
@ -84,7 +160,7 @@ namespace ZR.Service.mes.wms
item.RealQuantity = dict.TryGetValue(item.Partnumber, out int value) ? value : 0; item.RealQuantity = dict.TryGetValue(item.Partnumber, out int value) ? value : 0;
} }
} }
return response; return response;*/
} }
/// <summary> /// <summary>
@ -498,7 +574,8 @@ namespace ZR.Service.mes.wms
try try
{ {
// 盘点时间 // 盘点时间
DateTime? checkTime = Context DateTime? checkTime =
Context
.Queryable<WmOneTimeInventory>() .Queryable<WmOneTimeInventory>()
.Where(it => it.Status == 1) .Where(it => it.Status == 1)
.Select(it => it.CreatedTime) .Select(it => it.CreatedTime)
@ -522,7 +599,8 @@ namespace ZR.Service.mes.wms
/// <returns></returns> /// <returns></returns>
public (string, object, object) ImportExcel(List<WmOneTimeInventoryExportDto> importList) public (string, object, object) ImportExcel(List<WmOneTimeInventoryExportDto> importList)
{ {
List<WmOneTimeInventory> wmOneTimeInventorylist = importList.Select(it => new WmOneTimeInventory List<WmOneTimeInventory> wmOneTimeInventorylist = importList
.Select(it => new WmOneTimeInventory
{ {
Id = SnowFlakeSingle.Instance.NextId().ToString(), Id = SnowFlakeSingle.Instance.NextId().ToString(),
Type = 1, Type = 1,
@ -535,8 +613,10 @@ namespace ZR.Service.mes.wms
CreatedTime = it. ?? DateTime.Now.ToLocalTime(), CreatedTime = it. ?? DateTime.Now.ToLocalTime(),
Partnumber = it., Partnumber = it.,
Quantity = it. Quantity = it.
}).ToList(); })
var x = Context.Storageable(wmOneTimeInventorylist) .ToList();
var x = Context
.Storageable(wmOneTimeInventorylist)
.SplitError(x => x.Item.Partnumber.IsEmpty(), "零件号不能为空") .SplitError(x => x.Item.Partnumber.IsEmpty(), "零件号不能为空")
.SplitError(x => x.Item.Quantity.IsEmpty(), "盘点数不能为空") .SplitError(x => x.Item.Quantity.IsEmpty(), "盘点数不能为空")
.SplitUpdate(it => it.Any()) // 数据库存在更新 .SplitUpdate(it => it.Any()) // 数据库存在更新
@ -549,13 +629,15 @@ namespace ZR.Service.mes.wms
var result = x.AsInsertable.ExecuteCommand(); //不存在则插入; var result = x.AsInsertable.ExecuteCommand(); //不存在则插入;
var result2 = x.AsUpdateable.IgnoreColumns(it => new { it.Id }).ExecuteCommand(); //存在则修改; var result2 = x.AsUpdateable.IgnoreColumns(it => new { it.Id }).ExecuteCommand(); //存在则修改;
var result3 = x.AsDeleteable.ExecuteCommand(); //盘点数为0的删除; var result3 = x.AsDeleteable.ExecuteCommand(); //盘点数为0的删除;
string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}", string msg = string.Format(
" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}",
x.InsertList.Count, x.InsertList.Count,
x.UpdateList.Count, x.UpdateList.Count,
x.ErrorList.Count, x.ErrorList.Count,
x.IgnoreList.Count, x.IgnoreList.Count,
x.DeleteList.Count, x.DeleteList.Count,
x.TotalList.Count); x.TotalList.Count
);
//输出统计 //输出统计
Console.WriteLine(msg); Console.WriteLine(msg);

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Drawing;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using Aliyun.OSS; using Aliyun.OSS;
@ -7,6 +8,7 @@ using Infrastructure.Attribute;
using Infrastructure.Extensions; using Infrastructure.Extensions;
using JinianNet.JNTemplate; using JinianNet.JNTemplate;
using Microsoft.AspNetCore.DataProtection.KeyManagement; using Microsoft.AspNetCore.DataProtection.KeyManagement;
using Microsoft.AspNetCore.Http.HttpResults;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using SqlSugar; using SqlSugar;
using ZR.Common; using ZR.Common;
@ -38,16 +40,93 @@ namespace ZR.Service.mes.wms
/// </summary> /// </summary>
/// <param name="parm"></param> /// <param name="parm"></param>
/// <returns></returns> /// <returns></returns>
public PagedInfo<WmPolishInventoryDto> GetList(WmPolishInventoryQueryDto parm) public WmPolishInventoryTableDto GetList(WmPolishInventoryQueryDto parm)
{ {
List<string> partnumberByDescription = new(); var list = Context
.Queryable<WmMaterial>()
.LeftJoin<WmPolishInventory>((m, p) => m.Partnumber == p.Partnumber)
.Distinct()
//.GroupBy((m, p) => p.Partnumber)
.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 WmPolishInventoryDto
{
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 (WmPolishInventoryDto item in list)
{
// 获取实际库存
List<string> partnumbers = new()
{
item.Partnumber
};
Dictionary<string, int> dict = GetBatchPolishRealPartNum(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<WmPolishInventory>().Sum(it => it.Quantity) ?? 0;
// 仓库当前查询盘点零件数
int QuantitySum = list.Sum(it => it.Quantity) ?? 0;
// 仓库当前查询实际零件数
int RealQuantitySum = list.Sum(it => it.RealQuantity);
WmPolishInventoryTableDto response = new()
{
Total = total,
StocktakingTotal = StocktakingTotal,
QuantitySum = QuantitySum,
RealQuantitySum = RealQuantitySum,
Result = list.Skip((parm.PageNum - 1)* parm.PageSize).Take(parm.PageSize).ToList(),
};
return response;
//TODO 历史查询
/*List<string> partnumberByDescription = new();
if (parm != null && !string.IsNullOrEmpty(parm.Description)) if (parm != null && !string.IsNullOrEmpty(parm.Description))
{ {
partnumberByDescription = Context partnumberByDescription = Context
.Queryable<WmMaterial>() .Queryable<WmMaterial>()
.Where(it => it.Description.Contains(parm.Description)) .Where(it => it.Description.Contains(parm.Description))
.Select(it => it.Partnumber) .Select(it => it.Partnumber)
.ToList(); .ToList();
} }
var predicate = Expressionable var predicate = Expressionable
@ -89,14 +168,13 @@ namespace ZR.Service.mes.wms
? material.Description ? material.Description
: material.ProductName; : material.ProductName;
// 获取实际库存 // 获取实际库存
List<string> partnumbers = new List<string>(); List<string> partnumbers = new List<string>();
partnumbers.Add(item.Partnumber); partnumbers.Add(item.Partnumber);
Dictionary<string, int> dict = GetBatchPolishRealPartNum(partnumbers); Dictionary<string, int> dict = GetBatchPolishRealPartNum(partnumbers);
item.RealQuantity = dict.TryGetValue(item.Partnumber, out int value)? value : 0; item.RealQuantity = dict.TryGetValue(item.Partnumber, out int value)? value : 0;
} }
} }
return response; return response;*/
} }
/// <summary> /// <summary>
@ -576,7 +654,8 @@ namespace ZR.Service.mes.wms
try try
{ {
// 盘点时间 // 盘点时间
DateTime? checkTime = Context DateTime? checkTime =
Context
.Queryable<WmPolishInventory>() .Queryable<WmPolishInventory>()
.Where(it => it.Status == 1) .Where(it => it.Status == 1)
.Select(it => it.CreatedTime) .Select(it => it.CreatedTime)
@ -599,7 +678,9 @@ namespace ZR.Service.mes.wms
/// <returns></returns> /// <returns></returns>
public (string, object, object) ImportExcel(List<WmPolishInventoryExportDto> importList) public (string, object, object) ImportExcel(List<WmPolishInventoryExportDto> importList)
{ {
List<WmPolishInventory> wmPolishInventorylist = importList.Select(it => new WmPolishInventory { List<WmPolishInventory> wmPolishInventorylist = importList
.Select(it => new WmPolishInventory
{
Id = SnowFlakeSingle.Instance.NextId().ToString(), Id = SnowFlakeSingle.Instance.NextId().ToString(),
Type = 1, Type = 1,
Status = 1, Status = 1,
@ -611,8 +692,10 @@ namespace ZR.Service.mes.wms
CreatedTime = it. ?? DateTime.Now.ToLocalTime(), CreatedTime = it. ?? DateTime.Now.ToLocalTime(),
Partnumber = it., Partnumber = it.,
Quantity = it. Quantity = it.
}).ToList(); })
var x = Context.Storageable(wmPolishInventorylist) .ToList();
var x = Context
.Storageable(wmPolishInventorylist)
.SplitError(x => x.Item.Partnumber.IsEmpty(), "零件号不能为空") .SplitError(x => x.Item.Partnumber.IsEmpty(), "零件号不能为空")
.SplitError(x => x.Item.Quantity.IsEmpty(), "盘点数不能为空") .SplitError(x => x.Item.Quantity.IsEmpty(), "盘点数不能为空")
.SplitUpdate(it => it.Any()) // 数据库存在更新 .SplitUpdate(it => it.Any()) // 数据库存在更新
@ -625,13 +708,15 @@ namespace ZR.Service.mes.wms
var result = x.AsInsertable.ExecuteCommand(); //不存在则插入; var result = x.AsInsertable.ExecuteCommand(); //不存在则插入;
var result2 = x.AsUpdateable.IgnoreColumns(it => new { it.Id }).ExecuteCommand(); //存在则修改; var result2 = x.AsUpdateable.IgnoreColumns(it => new { it.Id }).ExecuteCommand(); //存在则修改;
var result3 = x.AsDeleteable.ExecuteCommand(); //盘点数为0的删除; var result3 = x.AsDeleteable.ExecuteCommand(); //盘点数为0的删除;
string msg = string.Format(" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}", string msg = string.Format(
" 插入{0} 更新{1} 错误数据{2} 不计算数据{3} 删除数据{4} 总共{5}",
x.InsertList.Count, x.InsertList.Count,
x.UpdateList.Count, x.UpdateList.Count,
x.ErrorList.Count, x.ErrorList.Count,
x.IgnoreList.Count, x.IgnoreList.Count,
x.DeleteList.Count, x.DeleteList.Count,
x.TotalList.Count); x.TotalList.Count
);
//输出统计 //输出统计
Console.WriteLine(msg); Console.WriteLine(msg);