毛坯出入库修改,质量报表生成标签功能添加

This commit is contained in:
2025-10-23 17:51:03 +08:00
parent ea4d9ee0f0
commit 7270da5508
6 changed files with 212 additions and 57 deletions

View File

@@ -1,7 +1,7 @@
using Infrastructure.Attribute;
using SqlSugar;
using System;
using System.Linq;
using Infrastructure.Attribute;
using SqlSugar;
using ZR.Model;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
@@ -168,49 +168,66 @@ namespace ZR.Service.mes.wms
{
// 结果集
List<WmGoodShortPackageCodeDto> resultList = new();
string _parm = parm.Query;
bool isLocation = false;
if (!string.IsNullOrEmpty(_parm))
{
isLocation = Context
.Queryable<WmInfo>()
.Where(it => it.Location.ToLower() == _parm.ToLower())
.Any();
}
// 全数据处理
var predicate = Expressionable
.Create<WmGoodsNowProduction>()
.OrIF(!string.IsNullOrEmpty(parm.Query), it => it.Partnumber.Contains(parm.Query))
.AndIF(isLocation, it => it.LocationCode.ToLower() == _parm.ToLower())
.OrIF(
!string.IsNullOrEmpty(parm.Query),
it => it.PackageCodeClient.Contains(parm.Query)
!string.IsNullOrEmpty(_parm) && !isLocation,
it => it.Partnumber.Contains(_parm)
)
.OrIF(
!string.IsNullOrEmpty(_parm) && !isLocation,
it => it.PackageCodeClient.Contains(_parm)
);
List<WmGoodsNowProduction> wmGoodsNowsList = Context
// 使用子查询方式处理分组聚合
// 先获取基础数据,然后在内存中进行分组处理
var dataList = Context
.Queryable<WmGoodsNowProduction>()
.Where(predicate.ToExpression())
.OrderByDescending(it => it.PackageCodeClient)
.ToList();
// 聚合数据
resultList = wmGoodsNowsList
.GroupBy(it => it.PackageCodeClient.Split('_')[0])
.Select(group => new WmGoodShortPackageCodeDto
// 在内存中进行分组聚合处理
var groupData = dataList
.GroupBy(it =>
{
ShortPackageCode = group.Key,
Partnumber = group.Max(item => item.Partnumber),
EntryWarehouseTime = group.Max(item => item.EntryWarehouseTime),
PackageNumber = group.Count(),
PartnumberNumber = group.Sum(item => item.GoodsNumAction)
// 处理PackageCodeClient截取下划线前的部分
if (it.PackageCodeClient.Contains("_"))
{
return it.PackageCodeClient.Split('_')[0];
}
return it.PackageCodeClient;
})
.Select(g => new WmGoodShortPackageCodeDto
{
ShortPackageCode = g.Key,
Partnumber = g.Max(it => it.Partnumber),
EntryWarehouseTime = g.Max(it => it.EntryWarehouseTime),
PackageNumber = g.Count(),
LocationCode = isLocation?g.Max(it => it.LocationCode) : "",
PartnumberNumber = g.Sum(it => it.GoodsNumAction)
});
// 获取总数
int sum = groupData.Count();
// 分页处理
resultList = groupData
.OrderByDescending(it => it.ShortPackageCode)
.Skip((parm.PageNum - 1) * parm.PageSize)
.Take(parm.PageSize)
.ToList();
// 结果数据处理
//每页多少条
int rows = parm.PageSize;
//第几页
int page = parm.PageNum;
//每一页开始下标
int startIndex = (page - 1) * rows;
//数据总数
int sum = resultList.Count;
if (startIndex + rows > sum)
{
resultList = resultList.Skip(startIndex).Take(sum).ToList();
}
else
{
resultList = resultList.Skip(startIndex).Take(startIndex + rows).ToList();
}
return (resultList, sum);
}
@@ -228,6 +245,10 @@ namespace ZR.Service.mes.wms
.AndIF(
!string.IsNullOrEmpty(parm.PackageCodeClient),
it => it.PackageCodeClient.Contains(parm.PackageCodeClient)
)
.AndIF(
!string.IsNullOrEmpty(parm.LocationCode),
it => it.LocationCode == parm.LocationCode
);
var response = Queryable()