diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmOneTimeRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmOneTimeRecordController.cs
index de9e3a3c..d9560a79 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmOneTimeRecordController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmOneTimeRecordController.cs
@@ -112,7 +112,7 @@ namespace ZR.Admin.WebApi.Controllers
public IActionResult GenerateWmOneTimeRecord([FromBody] WmOneTimeRecordGenerateDto parm)
{
- var response = _WmOneTimeRecordService.GenerateWmOneTimeRecord(parm);
+ var response = _WmOneTimeRecordService.GenerateWmOneTimeRecord02(parm);
return SUCCESS(response);
}
}
diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishRecordController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishRecordController.cs
index 857281a2..b9f054a7 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishRecordController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishRecordController.cs
@@ -112,7 +112,7 @@ namespace ZR.Admin.WebApi.Controllers
public IActionResult GetWmPolishRecordByDate([FromBody] WmPolishRecordGenerateDto parm)
{
- var response = _WmPolishRecordService.GenerateWmPolishRecord(parm);
+ var response = _WmPolishRecordService.GenerateWmPolishRecord02(parm);
return SUCCESS(response);
}
}
diff --git a/ZR.Service/mes/wms/IService/IWmOneTimeRecordService.cs b/ZR.Service/mes/wms/IService/IWmOneTimeRecordService.cs
index 2f5cf8af..1e97fcd4 100644
--- a/ZR.Service/mes/wms/IService/IWmOneTimeRecordService.cs
+++ b/ZR.Service/mes/wms/IService/IWmOneTimeRecordService.cs
@@ -18,5 +18,8 @@ namespace ZR.Service.mes.wms.IService
int UpdateWmOneTimeRecord(WmOneTimeRecord parm);
int GenerateWmOneTimeRecord(WmOneTimeRecordGenerateDto parm);
+
+ // 切换后道自动化
+ int GenerateWmOneTimeRecord02(WmOneTimeRecordGenerateDto parm);
}
}
diff --git a/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs b/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs
index a7ad7e22..f80dbcdc 100644
--- a/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs
+++ b/ZR.Service/mes/wms/IService/IWmPolishRecordService.cs
@@ -18,7 +18,7 @@ namespace ZR.Service.mes.wms.IService
int UpdateWmPolishRecord(WmPolishRecord parm);
int GenerateWmPolishRecord(WmPolishRecordGenerateDto parm);
-
- }
+ int GenerateWmPolishRecord02(WmPolishRecordGenerateDto parm);
+ }
}
diff --git a/ZR.Service/mes/wms/WmOneTimeRecordService.cs b/ZR.Service/mes/wms/WmOneTimeRecordService.cs
index 4913f3a8..f93dbcce 100644
--- a/ZR.Service/mes/wms/WmOneTimeRecordService.cs
+++ b/ZR.Service/mes/wms/WmOneTimeRecordService.cs
@@ -263,5 +263,176 @@ namespace ZR.Service.mes.wms
return wmOneTimeRecords.Count; // 返回插入的记录数
}
}
- }
+
+ ///
+ /// 自动生成一次合格仓库记录日志 (后道自动化版本)
+ ///
+ ///
+ ///
+ public int GenerateWmOneTimeRecord02(WmOneTimeRecordGenerateDto parm)
+ {
+ if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue)
+ {
+ return -1;
+ }
+ int result = 0;
+ try
+ {
+ // 开始事务
+ Context.Ado.BeginTran();
+
+ #region 查询需要的数据
+ // 入库条件1 产线合格品qc_quality_statistics_first,合格数,其中去除(倒车雷达)
+ List qcQualityStatisticsFirsts = Context
+ .Queryable()
+ .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 == "抛光")
+ .ToList();
+
+ // 入库条件2 抛光合格品 wm_polish_work_quality_statistics 合格数
+ List wmPolishWorkQualityStatistics = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.Partnumber == parm.Partnumber
+ )
+ .Where(it => it.StartTime >= parm.StartTime)
+ .ToList();
+
+ // 出库条件1 GP12 (新) 触摸屏 qc_gp12_service_statistics 投入数
+ List qcGp12ServiceStatistics = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.PartNumber == parm.Partnumber
+ )
+ .Where(it => it.StartTime >= parm.StartTime)
+ .Where(it => it.GroupSort == 1)
+ .ToList();
+
+ // 出库条件2 后道 wm_polish_quality_statistics 投入数
+ List qcBackEndQualityStatistics = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.PartNumber == parm.Partnumber
+ )
+ .Where(it => it.StartTime >= parm.StartTime)
+ .Where(it => it.GroupSort == 1)
+ // .Where(it => it.IsOut == 1) 待定 现在暂时都是直接出库
+ .ToList();
+ #endregion
+
+ #region 组装 WmOneTimeRecord 实体
+ List wmOneTimeRecords = new List();
+
+ 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 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 qcBackEndQualityStatistics)
+ {
+ 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
+
+ // 直接删除旧数据,避免先查询再删除的并发问题
+ Context.Deleteable()
+ .Where(it => it.Code == "自动")
+ .Where(it => it.ActionTime >= parm.StartTime)
+ .ExecuteCommand();
+
+ if (wmOneTimeRecords.Any())
+ {
+ // 分批插入数据,避免一次插入过多数据
+ const int batchSize = 1000;
+ var batches = wmOneTimeRecords.Chunk(batchSize);
+
+ foreach (var batch in batches)
+ {
+ Context.Insertable(batch.ToList()).ExecuteCommand();
+ }
+ }
+
+ result = wmOneTimeRecords.Count;
+ Context.Ado.CommitTran();
+ return result; // 返回插入的记录数
+ }
+ catch (Exception ex)
+ {
+ Context.Ado.RollbackTran();
+ return -1;
+ }
+
+ }
+ }
}
diff --git a/ZR.Service/mes/wms/WmPolishRecordService.cs b/ZR.Service/mes/wms/WmPolishRecordService.cs
index a90106a1..05a846bf 100644
--- a/ZR.Service/mes/wms/WmPolishRecordService.cs
+++ b/ZR.Service/mes/wms/WmPolishRecordService.cs
@@ -282,6 +282,171 @@ namespace ZR.Service.mes.wms
#endregion
+ // 批量插入到 wm_polish_record 表
+ //如果有这个时间段的数据,要删除
+ List delwmPolishRecords = Context
+ .Queryable()
+ .Where(it => it.Code == "自动")
+ .Where(it => it.ActionTime >= parm.StartTime)
+ .ToList();
+ Context.Deleteable(delwmPolishRecords).ExecuteCommand();
+ if (wmPolishRecords.Any())
+ {
+ Context.Insertable(wmPolishRecords).ExecuteCommand();
+ }
+
+ return wmPolishRecords.Count; // 返回插入的记录数
+ }
+ }
+
+ ///
+ /// 根据日期获取抛光记录表数据 (后道触摸屏自动出库版本)
+ ///
+ ///
+ ///
+ public int GenerateWmPolishRecord02(WmPolishRecordGenerateDto parm)
+ {
+ if (parm == null || parm.StartTime == null || parm.StartTime.Value == DateTime.MinValue)
+ {
+ return -1;
+ }
+ else
+ {
+ #region 查询需要的数据
+ //三入
+ // 产线报表 根据日期范围 去取产线抛光的数据 qc_quality_statistics_first
+ // 去除倒车雷达
+ List qcQualityStatisticsFirsts = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.FinishedPartNumber == parm.Partnumber
+ )
+ .Where(it => !it.ProductDescription.Contains("倒车雷达"))
+ .Where(it => it.StartTime >= parm.StartTime)
+ .Where(it => it.PaoguangTotal > 0)
+ .Where(it => it.Remark == "抛光")
+ .ToList();
+
+ // 后道报表 根据日期范围 去取后道反抛光的数据 wm_polish_quality_statistics
+ List qcBackEndQualityStatistics = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.PartNumber == parm.Partnumber
+ )
+ .Where(it => it.StartTime >= parm.StartTime)
+ .Where(it => it.PolishNumber > 0)
+ .Where(it => it.GroupSort == 1)
+ .ToList();
+
+ // GP12报表 根据日期范围 去取gp12反抛光的数据 qc_gp12_service_statistics GP12(new) wm_gp12_quality_statistics(old)
+ List qcGp12ServiceStatistics = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.PartNumber == parm.Partnumber
+ )
+ .Where(it => it.StartTime >= parm.StartTime)
+ .Where(it => it.GroupSort == 1)
+ .Where(it => it.PolishNumber > 0)
+ .ToList();
+ //二出(同一张表)wm_polish_work_quality_statistics 根据日期范围 去取抛光操作出库的数据
+ List wmPolishWorkQualityStatistics = Context
+ .Queryable()
+ .WhereIF(
+ !string.IsNullOrEmpty(parm.Partnumber),
+ it => it.Partnumber == parm.Partnumber
+ )
+ .Where(it => it.StartTime >= parm.StartTime)
+ .ToList();
+ #endregion
+
+ int totalcount =
+ qcQualityStatisticsFirsts.Count
+ + qcBackEndQualityStatistics.Count
+ + qcGp12ServiceStatistics.Count
+ //+ wmGp12QualityStatistics.Count
+ + wmPolishWorkQualityStatistics.Count;
+
+ #region 组装 WmPolishRecord 实体
+ // 组装 WmPolishRecord 实体
+ List wmPolishRecords = new List();
+
+ foreach (var item in qcQualityStatisticsFirsts)
+ {
+ wmPolishRecords.Add(
+ new WmPolishRecord
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkInventoryId = item.Id,
+ Code = "自动",
+ Partnumber = item.FinishedPartNumber,
+ ChangeType = 1,
+ ChangeQuantity = item.PaoguangTotal,
+ ActionTime = item.StartTime,
+ Status = 1,
+ Remark = "产线报表抛光件自动入库,来源工单:" + item.WorkorderId
+ }
+ );
+ }
+
+ foreach (var item in qcBackEndQualityStatistics)
+ {
+ wmPolishRecords.Add(
+ new WmPolishRecord
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkInventoryId = item.Id,
+ Code = "自动",
+ Partnumber = item.PartNumber,
+ ChangeType = 1,
+ ChangeQuantity = item.PolishNumber,
+ ActionTime = item.StartTime,
+ Status = 1,
+ Remark = "后道触摸屏-报表抛光件自动入库"
+ }
+ );
+ }
+
+ foreach (var item in qcGp12ServiceStatistics)
+ {
+ wmPolishRecords.Add(
+ new WmPolishRecord
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkInventoryId = item.Id,
+ Code = "自动",
+ Partnumber = item.PartNumber,
+ ChangeType = 1,
+ ChangeQuantity = item.PolishNumber,
+ ActionTime = item.StartTime,
+ Status = 1,
+ Remark = " GP12触摸屏-报表抛光件自动入库"
+ }
+ );
+ }
+
+ foreach (var item in wmPolishWorkQualityStatistics)
+ {
+ wmPolishRecords.Add(
+ new WmPolishRecord
+ {
+ Id = SnowFlakeSingle.Instance.NextId().ToString(),
+ FkInventoryId = item.Id,
+ Code = "自动",
+ Partnumber = item.Partnumber,
+ ChangeType = 2,
+ ChangeQuantity = item.RequireNumber,
+ ActionTime = item.StartTime,
+ Status = 1,
+ Remark = "抛光手填报表出库"
+ }
+ );
+ }
+ #endregion
+
+
// 批量插入到 wm_polish_record 表
//如果有这个时间段的数据,要删除
List delwmPolishRecords = Context