一次合格,抛光品仓库统计逻辑修改
This commit is contained in:
parent
e0afea26c2
commit
ffb6157d7f
@ -297,20 +297,18 @@ namespace ZR.Service.mes.wms
|
||||
.ToList();
|
||||
foreach (WmOneTimeInventoryDto item in list)
|
||||
{
|
||||
|
||||
//TODO 20250408 盘点时间修正(三个时间比对)
|
||||
WmOneTimeRecord minCheckRecord =
|
||||
wmOneTimeRecords
|
||||
.Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3)
|
||||
.OrderByDescending(o => o.ActionTime)
|
||||
.FirstOrDefault();
|
||||
WmOneTimeRecord minCheckRecord = wmOneTimeRecords
|
||||
.Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3)
|
||||
.OrderByDescending(o => o.ActionTime)
|
||||
.FirstOrDefault();
|
||||
DateTime minCheckRecordTime = DateTime.MinValue;
|
||||
int minCheckRecordQuantity = 0;
|
||||
if (minCheckRecord != null)
|
||||
{
|
||||
minCheckRecordTime = minCheckRecord.ActionTime ?? DateTime.MinValue;
|
||||
}
|
||||
|
||||
|
||||
DateTime minCheckInventoryTime = item.CreatedTime ?? minDateTime;
|
||||
//TODO 20250408修改 最小盘点时间判断/如有盘点记录,则优先取盘点记录数据
|
||||
DateTime checkTime =
|
||||
@ -343,11 +341,14 @@ namespace ZR.Service.mes.wms
|
||||
)
|
||||
.Select(o => o.ChangeQuantity)
|
||||
.Sum();
|
||||
|
||||
|
||||
item.RealQuantity = minCheckRecordQuantity + (runum.Value - chunum.Value);
|
||||
item.CreatedTime = checkTime;
|
||||
}
|
||||
list = list.Where(it => it.RealQuantity != 0 || it.Quantity != 0)
|
||||
list = list.WhereIF(
|
||||
string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.RealQuantity != 0 || it.Quantity != 0
|
||||
)
|
||||
.Where(it => !string.IsNullOrEmpty(it.Partnumber))
|
||||
.DistinctBy(it => it.Partnumber)
|
||||
.OrderBy(it => it.RealQuantity)
|
||||
@ -657,17 +658,17 @@ namespace ZR.Service.mes.wms
|
||||
{
|
||||
Context.Ado.BeginTran();
|
||||
// 检查是否存在库中
|
||||
/* WmOneTimeInventory oneTImeInventory = Context
|
||||
.Queryable<WmOneTimeInventory>()
|
||||
.Where(it => it.Id == parm.Id)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (oneTImeInventory == null)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("盘点记录不存在" + parm.Id);
|
||||
}
|
||||
Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/
|
||||
/* WmOneTimeInventory oneTImeInventory = Context
|
||||
.Queryable<WmOneTimeInventory>()
|
||||
.Where(it => it.Id == parm.Id)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (oneTImeInventory == null)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("盘点记录不存在" + parm.Id);
|
||||
}
|
||||
Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/
|
||||
// 已有则新增记录
|
||||
//TODO 20250408 新逻辑调整 只添加盘点记录 算库存数时自动调整
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
@ -724,6 +725,7 @@ namespace ZR.Service.mes.wms
|
||||
.OrderBy(it => it.Description)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
//导出
|
||||
public List<WmOneTimeInventoryExportDto> GetExportList(WmOneTimeInventoryQueryDto parm)
|
||||
{
|
||||
@ -748,13 +750,9 @@ namespace ZR.Service.mes.wms
|
||||
//TODO 20250408 新导出逻辑
|
||||
|
||||
// 构建导出数据
|
||||
WmOneTimeInventoryQueryDto queryParams = new()
|
||||
{
|
||||
PageSize = 10000,
|
||||
PageNum = 1
|
||||
};
|
||||
List<WmOneTimeInventoryExportDto> exportDto = GetListNew(queryParams).Result
|
||||
.Select(it =>
|
||||
WmOneTimeInventoryQueryDto queryParams = new() { PageSize = 10000, PageNum = 1 };
|
||||
List<WmOneTimeInventoryExportDto> exportDto = GetListNew(queryParams)
|
||||
.Result.Select(it =>
|
||||
{
|
||||
return new WmOneTimeInventoryExportDto
|
||||
{
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Infrastructure.Attribute;
|
||||
using SqlSugar;
|
||||
using System.Linq;
|
||||
using System;
|
||||
using ZR.Model;
|
||||
using ZR.Model.Business;
|
||||
using ZR.Model.MES.qc;
|
||||
@ -9,261 +10,257 @@ using ZR.Model.MES.wms;
|
||||
using ZR.Model.MES.wms.Dto;
|
||||
using ZR.Repository;
|
||||
using ZR.Service.mes.wms.IService;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace ZR.Service.mes.wms
|
||||
{
|
||||
/// <summary>
|
||||
/// 一次合格品仓库记录表Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(
|
||||
ServiceType = typeof(IWmOneTimeRecordService),
|
||||
ServiceLifetime = LifeTime.Transient
|
||||
)]
|
||||
public class WmOneTimeRecordService : BaseService<WmOneTimeRecord>, IWmOneTimeRecordService
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询一次合格品仓库记录表列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<WmOneTimeRecordDto> GetList(WmOneTimeRecordQueryDto parm)
|
||||
{
|
||||
/// <summary>
|
||||
/// 一次合格品仓库记录表Service业务层处理
|
||||
/// </summary>
|
||||
[AppService(
|
||||
ServiceType = typeof(IWmOneTimeRecordService),
|
||||
ServiceLifetime = LifeTime.Transient
|
||||
)]
|
||||
public class WmOneTimeRecordService : BaseService<WmOneTimeRecord>, IWmOneTimeRecordService
|
||||
{
|
||||
/// <summary>
|
||||
/// 查询一次合格品仓库记录表列表
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
public PagedInfo<WmOneTimeRecordDto> GetList(WmOneTimeRecordQueryDto parm)
|
||||
{
|
||||
var predicate = Expressionable
|
||||
.Create<WmOneTimeRecord>()
|
||||
.AndIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
.Create<WmOneTimeRecord>()
|
||||
.AndIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Remark), it => it.Remark.Contains(parm.Remark))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Code), it => it.Code.Contains(parm.Code))
|
||||
/*.AndIF(
|
||||
!string.IsNullOrEmpty(parm.FkInventoryId),
|
||||
it => it.FkInventoryId == parm.FkInventoryId
|
||||
)*/
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Id), it => it.Id == parm.Id)
|
||||
.AndIF(parm.ChangeType > -1, it => it.ChangeType == parm.ChangeType)
|
||||
.AndIF(
|
||||
parm.StartActionTime != null,
|
||||
it => parm.StartActionTime.Value.ToLocalTime() <= it.ActionTime
|
||||
)
|
||||
.AndIF(
|
||||
parm.EndActionTime != null,
|
||||
it => parm.EndActionTime.Value.ToLocalTime() >= it.ActionTime
|
||||
);
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Remark), it => it.Remark.Contains(parm.Remark))
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Code), it => it.Code.Contains(parm.Code))
|
||||
/*.AndIF(
|
||||
!string.IsNullOrEmpty(parm.FkInventoryId),
|
||||
it => it.FkInventoryId == parm.FkInventoryId
|
||||
)*/
|
||||
.AndIF(!string.IsNullOrEmpty(parm.Id), it => it.Id == parm.Id)
|
||||
.AndIF(parm.ChangeType > -1, it => it.ChangeType == parm.ChangeType)
|
||||
.AndIF(
|
||||
parm.StartActionTime != null,
|
||||
it => parm.StartActionTime.Value.ToLocalTime() <= it.ActionTime
|
||||
)
|
||||
.AndIF(
|
||||
parm.EndActionTime != null,
|
||||
it => parm.EndActionTime.Value.ToLocalTime() >= it.ActionTime
|
||||
);
|
||||
|
||||
var response = Queryable()
|
||||
.Where(predicate.ToExpression())
|
||||
.ToPage<WmOneTimeRecord, WmOneTimeRecordDto>(parm);
|
||||
var response = Queryable()
|
||||
.Where(predicate.ToExpression())
|
||||
.ToPage<WmOneTimeRecord, WmOneTimeRecordDto>(parm);
|
||||
|
||||
return response;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public WmOneTimeRecord GetInfo(string Id)
|
||||
{
|
||||
var response = Queryable().Where(x => x.Id == Id).First();
|
||||
/// <summary>
|
||||
/// 获取详情
|
||||
/// </summary>
|
||||
/// <param name="Id"></param>
|
||||
/// <returns></returns>
|
||||
public WmOneTimeRecord GetInfo(string Id)
|
||||
{
|
||||
var response = Queryable().Where(x => x.Id == Id).First();
|
||||
|
||||
return response;
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加一次合格品仓库记录表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public WmOneTimeRecord AddWmOneTimeRecord(WmOneTimeRecord model)
|
||||
{
|
||||
return Context.Insertable(model).ExecuteReturnEntity();
|
||||
}
|
||||
/// <summary>
|
||||
/// 添加一次合格品仓库记录表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public WmOneTimeRecord AddWmOneTimeRecord(WmOneTimeRecord model)
|
||||
{
|
||||
return Context.Insertable(model).ExecuteReturnEntity();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改一次合格品仓库记录表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateWmOneTimeRecord(WmOneTimeRecord model)
|
||||
{
|
||||
//var response = Update(w => w.Id == model.Id, it => new WmOneTimeRecord()
|
||||
//{
|
||||
// Code = model.Code,
|
||||
// Partnumber = model.Partnumber,
|
||||
// BlankNum = model.BlankNum,
|
||||
// ChangeType = model.ChangeType,
|
||||
// ChangeQuantity = model.ChangeQuantity,
|
||||
// ActionTime = model.ActionTime,
|
||||
// Status = model.Status,
|
||||
// Remark = model.Remark,
|
||||
// CreatedBy = model.CreatedBy,
|
||||
// CreatedTime = model.CreatedTime,
|
||||
// UpdatedBy = model.UpdatedBy,
|
||||
// UpdatedTime = model.UpdatedTime,
|
||||
//});
|
||||
//return response;
|
||||
return Update(model, true);
|
||||
}
|
||||
/// <summary>
|
||||
/// 修改一次合格品仓库记录表
|
||||
/// </summary>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
public int UpdateWmOneTimeRecord(WmOneTimeRecord model)
|
||||
{
|
||||
//var response = Update(w => w.Id == model.Id, it => new WmOneTimeRecord()
|
||||
//{
|
||||
// Code = model.Code,
|
||||
// Partnumber = model.Partnumber,
|
||||
// BlankNum = model.BlankNum,
|
||||
// ChangeType = model.ChangeType,
|
||||
// ChangeQuantity = model.ChangeQuantity,
|
||||
// ActionTime = model.ActionTime,
|
||||
// Status = model.Status,
|
||||
// Remark = model.Remark,
|
||||
// CreatedBy = model.CreatedBy,
|
||||
// CreatedTime = model.CreatedTime,
|
||||
// UpdatedBy = model.UpdatedBy,
|
||||
// UpdatedTime = model.UpdatedTime,
|
||||
//});
|
||||
//return response;
|
||||
return Update(model, true);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 自动生成一次合格仓库记录日志
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="global::System.NotImplementedException"></exception>
|
||||
public int GenerateWmOneTimeRecord(WmOneTimeRecordGenerateDto parm)
|
||||
{
|
||||
|
||||
if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
#region 查询需要的数据
|
||||
//TODO 入库条件1 产线合格品qc_quality_statistics_first,合格数,其中去除(倒车雷达)
|
||||
List<QcQualityStatisticsFirst> qcQualityStatisticsFirsts = Context
|
||||
.Queryable<QcQualityStatisticsFirst>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.FinishedPartNumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => !it.ProductDescription.Contains("倒车雷达"))
|
||||
/// <summary>
|
||||
/// 自动生成一次合格仓库记录日志
|
||||
/// </summary>
|
||||
/// <param name="parm"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="global::System.NotImplementedException"></exception>
|
||||
public int GenerateWmOneTimeRecord(WmOneTimeRecordGenerateDto parm)
|
||||
{
|
||||
if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
#region 查询需要的数据
|
||||
//TODO 入库条件1 产线合格品qc_quality_statistics_first,合格数,其中去除(倒车雷达)
|
||||
List<QcQualityStatisticsFirst> qcQualityStatisticsFirsts = Context
|
||||
.Queryable<QcQualityStatisticsFirst>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.FinishedPartNumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => !it.ProductDescription.Contains("倒车雷达"))
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.Where(it => it.QualifiedNumber > 0)
|
||||
.Where(it => it.Remark == "抛光")
|
||||
.Where(it => it.QualifiedNumber > 0)
|
||||
.Where(it => it.Remark == "抛光")
|
||||
.ToList();
|
||||
|
||||
//TODO 入库条件2 抛光合格品 wm_polish_work_quality_statistics 合格数
|
||||
List<WmPolishWorkQualityStatistics> wmPolishWorkQualityStatistics = Context
|
||||
.Queryable<WmPolishWorkQualityStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.ToList();
|
||||
//TODO 入库条件2 抛光合格品 wm_polish_work_quality_statistics 合格数
|
||||
List<WmPolishWorkQualityStatistics> wmPolishWorkQualityStatistics = Context
|
||||
.Queryable<WmPolishWorkQualityStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.ToList();
|
||||
|
||||
//TODO 出库条件1 GP12 (新) 触摸屏 qc_gp12_service_statistics 投入数
|
||||
List<QcGp12ServiceStatistics> qcGp12ServiceStatistics = Context
|
||||
.Queryable<QcGp12ServiceStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.PartNumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.Where(it => it.GroupSort == 1)
|
||||
.ToList();
|
||||
//TODO 出库条件1 GP12 (新) 触摸屏 qc_gp12_service_statistics 投入数
|
||||
List<QcGp12ServiceStatistics> qcGp12ServiceStatistics = Context
|
||||
.Queryable<QcGp12ServiceStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.PartNumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.Where(it => it.GroupSort == 1)
|
||||
.ToList();
|
||||
|
||||
//TODO 出库条件2 后道 wm_polish_quality_statistics 投入数
|
||||
List<WmPolishQualityStatistics> wmPolishQualityStatistics = Context
|
||||
.Queryable<WmPolishQualityStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.ToList();
|
||||
//TODO 出库条件2 后道 wm_polish_quality_statistics 投入数
|
||||
List<WmPolishQualityStatistics> wmPolishQualityStatistics = Context
|
||||
.Queryable<WmPolishQualityStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.ToList();
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region 组装 WmOneTimeRecord 实体
|
||||
#region 组装 WmOneTimeRecord 实体
|
||||
|
||||
List<WmOneTimeRecord> wmOneTimeRecords = new List<WmOneTimeRecord>();
|
||||
List<WmOneTimeRecord> wmOneTimeRecords = new List<WmOneTimeRecord>();
|
||||
|
||||
foreach (var item in qcQualityStatisticsFirsts)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.FinishedPartNumber,
|
||||
ChangeType = 1,
|
||||
ChangeQuantity = item.QualifiedNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "产线报表合格品自动入库,来源工单号:" + item.WorkorderId
|
||||
}
|
||||
);
|
||||
}
|
||||
foreach (var item in qcQualityStatisticsFirsts)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.FinishedPartNumber,
|
||||
ChangeType = 1,
|
||||
ChangeQuantity = item.QualifiedNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "产线报表合格品自动入库,来源工单号:" + item.WorkorderId
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
foreach (var item in wmPolishWorkQualityStatistics)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.Partnumber,
|
||||
ChangeType = 1,
|
||||
ChangeQuantity = item.QualifiedNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "抛光报表合格品自动入库"
|
||||
}
|
||||
);
|
||||
}
|
||||
foreach (var item in wmPolishWorkQualityStatistics)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.Partnumber,
|
||||
ChangeType = 1,
|
||||
ChangeQuantity = item.QualifiedNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "抛光报表合格品自动入库"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
foreach (var item in qcGp12ServiceStatistics)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.PartNumber,
|
||||
ChangeType = 2,
|
||||
ChangeQuantity = item.RequireNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "GP12触摸屏报表投入自动出库"
|
||||
}
|
||||
);
|
||||
}
|
||||
foreach (var item in qcGp12ServiceStatistics)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.PartNumber,
|
||||
ChangeType = 2,
|
||||
ChangeQuantity = item.RequireNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "GP12触摸屏报表投入自动出库"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
foreach (var item in wmPolishQualityStatistics)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.Partnumber,
|
||||
ChangeType = 2,
|
||||
ChangeQuantity = item.RequireNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "后道报表自动出库"
|
||||
}
|
||||
);
|
||||
}
|
||||
foreach (var item in wmPolishQualityStatistics)
|
||||
{
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = item.Partnumber,
|
||||
ChangeType = 2,
|
||||
ChangeQuantity = item.RequireNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "后道报表自动出库"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
//如果有这个时间段的数据,要删除
|
||||
List<WmOneTimeRecord> delwmOneTimeRecords = Context
|
||||
.Queryable<WmOneTimeRecord>()
|
||||
.Where(it => it.Code == "自动")
|
||||
.Where(it => it.ActionTime >= parm.StartTime)
|
||||
.ToList();
|
||||
Context.Deleteable(delwmOneTimeRecords).ExecuteCommand();
|
||||
if (wmOneTimeRecords.Any())
|
||||
{
|
||||
Context.Insertable(wmOneTimeRecords).ExecuteCommand();
|
||||
}
|
||||
|
||||
//如果有这个时间段的数据,要删除
|
||||
List<WmOneTimeRecord> delwmOneTimeRecords = Context
|
||||
.Queryable<WmOneTimeRecord>()
|
||||
.Where(it => it.Code == "自动")
|
||||
.Where(it => it.ActionTime >= parm.StartTime)
|
||||
.ToList();
|
||||
Context.Deleteable(delwmOneTimeRecords).ExecuteCommand();
|
||||
if (wmOneTimeRecords.Any())
|
||||
{
|
||||
Context.Insertable(wmOneTimeRecords).ExecuteCommand();
|
||||
}
|
||||
|
||||
return wmOneTimeRecords.Count; // 返回插入的记录数
|
||||
}
|
||||
}
|
||||
return wmOneTimeRecords.Count; // 返回插入的记录数
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 自动生成一次合格仓库记录日志 (后道自动化版本)
|
||||
@ -326,7 +323,15 @@ namespace ZR.Service.mes.wms
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.Where(it => it.GroupSort == 1)
|
||||
// .Where(it => it.IsOut == 1) 待定 现在暂时都是直接出库
|
||||
// .Where(it => it.IsOut == 1) 待定 现在暂时都是直接出库
|
||||
.ToList();
|
||||
List<WmPolishQualityStatistics> wmPolishQualityStatistics = Context
|
||||
.Queryable<WmPolishQualityStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.ToList();
|
||||
#endregion
|
||||
|
||||
@ -417,7 +422,7 @@ namespace ZR.Service.mes.wms
|
||||
foreach (var item in qcBackEndQualityStatistics)
|
||||
{
|
||||
// TODO 零件号二次处理
|
||||
string partNumber = item.PartNumber;
|
||||
string partNumber = item.PartNumber;
|
||||
// 使用正则表达式匹配并移除特殊后缀
|
||||
string processedPartnumber = Regex.Replace(
|
||||
partNumber,
|
||||
@ -440,10 +445,38 @@ namespace ZR.Service.mes.wms
|
||||
}
|
||||
);
|
||||
}
|
||||
//XXX 20250613 后道触摸屏与手填报表同时统计
|
||||
foreach (var item in wmPolishQualityStatistics)
|
||||
{
|
||||
// TODO 零件号二次处理
|
||||
string partNumber = item.Partnumber;
|
||||
// 使用正则表达式匹配并移除特殊后缀
|
||||
string processedPartnumber = Regex.Replace(
|
||||
partNumber,
|
||||
@"-(FL|FR|RR|RL)$",
|
||||
"",
|
||||
RegexOptions.IgnoreCase
|
||||
);
|
||||
wmOneTimeRecords.Add(
|
||||
new WmOneTimeRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = processedPartnumber,
|
||||
ChangeType = 2,
|
||||
ChangeQuantity = item.RequireNumber,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "后道报表-手填报表出库"
|
||||
}
|
||||
);
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 直接删除旧数据,避免先查询再删除的并发问题
|
||||
Context.Deleteable<WmOneTimeRecord>()
|
||||
Context
|
||||
.Deleteable<WmOneTimeRecord>()
|
||||
.Where(it => it.Code == "自动")
|
||||
.Where(it => it.ActionTime >= parm.StartTime)
|
||||
.ExecuteCommand();
|
||||
@ -469,7 +502,6 @@ namespace ZR.Service.mes.wms
|
||||
Context.Ado.RollbackTran();
|
||||
return -1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -316,11 +316,10 @@ namespace ZR.Service.mes.wms
|
||||
foreach (WmPolishInventoryDto item in list)
|
||||
{
|
||||
//TODO 20250408 盘点时间修正(三个时间比对)
|
||||
WmPolishRecord minCheckRecord =
|
||||
wmPolishRecords
|
||||
.Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3)
|
||||
.OrderByDescending(o => o.ActionTime)
|
||||
.FirstOrDefault();
|
||||
WmPolishRecord minCheckRecord = wmPolishRecords
|
||||
.Where(o => o.Partnumber == item.Partnumber && o.ChangeType == 3)
|
||||
.OrderByDescending(o => o.ActionTime)
|
||||
.FirstOrDefault();
|
||||
DateTime minCheckRecordTime = DateTime.MinValue;
|
||||
int minCheckRecordQuantity = 0;
|
||||
if (minCheckRecord != null)
|
||||
@ -363,7 +362,10 @@ namespace ZR.Service.mes.wms
|
||||
item.CreatedTime = checkTime;
|
||||
}
|
||||
|
||||
list = list.Where(it => it.RealQuantity != 0 || it.Quantity != 0)
|
||||
list = list.WhereIF(
|
||||
string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.RealQuantity != 0 || it.Quantity != 0
|
||||
)
|
||||
.Where(it => !string.IsNullOrEmpty(it.Partnumber))
|
||||
.DistinctBy(it => it.Partnumber)
|
||||
.OrderBy(it => it.RealQuantity)
|
||||
@ -726,6 +728,7 @@ namespace ZR.Service.mes.wms
|
||||
throw new Exception(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
// 盘点
|
||||
public int DoWmPolishStocktaking(WmPolishInventory parm)
|
||||
{
|
||||
@ -737,17 +740,17 @@ namespace ZR.Service.mes.wms
|
||||
{
|
||||
Context.Ado.BeginTran();
|
||||
// 检查是否存在库中
|
||||
/* WmPolishInventory polishInventory = Context
|
||||
.Queryable<WmPolishInventory>()
|
||||
.Where(it => it.Id == parm.Id)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (polishInventory == null)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("盘点记录不存在" + parm.Id);
|
||||
}
|
||||
Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/
|
||||
/* WmPolishInventory polishInventory = Context
|
||||
.Queryable<WmPolishInventory>()
|
||||
.Where(it => it.Id == parm.Id)
|
||||
.Where(it => it.Status == 1)
|
||||
.First();
|
||||
if (polishInventory == null)
|
||||
{
|
||||
Context.Ado.RollbackTran();
|
||||
throw new Exception("盘点记录不存在" + parm.Id);
|
||||
}
|
||||
Context.Updateable(parm).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();*/
|
||||
// 已有则新增记录
|
||||
string code = !string.IsNullOrEmpty(parm.WorkOrder)
|
||||
? parm.WorkOrder
|
||||
@ -828,14 +831,10 @@ namespace ZR.Service.mes.wms
|
||||
//TODO 20250408 新导出逻辑
|
||||
|
||||
// 构建导出数据
|
||||
WmPolishInventoryQueryDto queryParams = new()
|
||||
{
|
||||
PageSize = 10000,
|
||||
PageNum = 1
|
||||
};
|
||||
WmPolishInventoryQueryDto queryParams = new() { PageSize = 10000, PageNum = 1 };
|
||||
// 构建导出数据
|
||||
List<WmPolishInventoryExportDto> exportDto = GetListNew(queryParams).Result
|
||||
.Select(it =>
|
||||
List<WmPolishInventoryExportDto> exportDto = GetListNew(queryParams)
|
||||
.Result.Select(it =>
|
||||
{
|
||||
return new WmPolishInventoryExportDto
|
||||
{
|
||||
@ -901,7 +900,6 @@ namespace ZR.Service.mes.wms
|
||||
/// <returns></returns>
|
||||
public (string, object, object) ImportExcel(List<WmPolishInventoryExportDto> importList)
|
||||
{
|
||||
|
||||
List<WmPolishInventory> wmPolishInventorylist = importList
|
||||
.Select(it => new WmPolishInventory
|
||||
{
|
||||
|
||||
@ -132,7 +132,7 @@ namespace ZR.Service.mes.wms
|
||||
.Where(it => !it.ProductDescription.Contains("倒车雷达"))
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.Where(it => it.PaoguangTotal > 0)
|
||||
.Where(it=> it.Remark == "抛光")
|
||||
.Where(it => it.Remark == "抛光")
|
||||
.ToList();
|
||||
|
||||
// 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics
|
||||
@ -204,7 +204,7 @@ namespace ZR.Service.mes.wms
|
||||
ChangeQuantity = item.PaoguangTotal,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "产线报表抛光件自动入库,来源工单:"+item.WorkorderId
|
||||
Remark = "产线报表抛光件自动入库,来源工单:" + item.WorkorderId
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -329,7 +329,7 @@ namespace ZR.Service.mes.wms
|
||||
.Where(it => it.Remark == "抛光")
|
||||
.ToList();
|
||||
|
||||
// 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics
|
||||
// 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics (XXX-20250613触摸屏数据+后道报表数据)
|
||||
List<QcBackEndServiceStatistics> qcBackEndQualityStatistics = Context
|
||||
.Queryable<QcBackEndServiceStatistics>()
|
||||
.WhereIF(
|
||||
@ -340,6 +340,15 @@ namespace ZR.Service.mes.wms
|
||||
.Where(it => it.PolishNumber > 0)
|
||||
.Where(it => it.GroupSort == 1)
|
||||
.ToList();
|
||||
List<WmPolishQualityStatistics> wmPolishQualityStatistics = Context
|
||||
.Queryable<WmPolishQualityStatistics>()
|
||||
.WhereIF(
|
||||
!string.IsNullOrEmpty(parm.Partnumber),
|
||||
it => it.Partnumber == parm.Partnumber
|
||||
)
|
||||
.Where(it => it.StartTime >= parm.StartTime)
|
||||
.Where(it => it.PaoguangTotal > 0)
|
||||
.ToList();
|
||||
|
||||
// GP12报表 根据日期范围 去取gp12反抛光的数据 qc_gp12_service_statistics GP12(new) wm_gp12_quality_statistics(old)
|
||||
List<QcGp12ServiceStatistics> qcGp12ServiceStatistics = Context
|
||||
@ -427,7 +436,33 @@ namespace ZR.Service.mes.wms
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
//XXX20250613 后道触摸屏与手填报表同时统计
|
||||
foreach (var item in wmPolishQualityStatistics)
|
||||
{
|
||||
// TODO 零件号二次处理
|
||||
string partNumber = item.Partnumber;
|
||||
// 使用正则表达式匹配并移除特殊后缀
|
||||
string processedPartnumber = Regex.Replace(
|
||||
partNumber,
|
||||
@"-(FL|FR|RR|RL)$",
|
||||
"",
|
||||
RegexOptions.IgnoreCase
|
||||
);
|
||||
wmPolishRecords.Add(
|
||||
new WmPolishRecord
|
||||
{
|
||||
Id = SnowFlakeSingle.Instance.NextId().ToString(),
|
||||
FkInventoryId = item.Id,
|
||||
Code = "自动",
|
||||
Partnumber = processedPartnumber,
|
||||
ChangeType = 1,
|
||||
ChangeQuantity = item.PaoguangTotal,
|
||||
ActionTime = item.StartTime,
|
||||
Status = 1,
|
||||
Remark = "后道手填报表-抛光件自动入库"
|
||||
}
|
||||
);
|
||||
}
|
||||
foreach (var item in qcGp12ServiceStatistics)
|
||||
{
|
||||
// TODO 零件号二次处理
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user