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