diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmGp12QualityStatisticsController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmGp12QualityStatisticsController.cs
index 2e08c99d..b76ca50f 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmGp12QualityStatisticsController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmGp12QualityStatisticsController.cs
@@ -42,6 +42,23 @@ namespace ZR.Admin.WebApi.Controllers
return SUCCESS(response);
}
+ ///
+ /// GP12数据导出
+ ///
+ ///
+ ///
+ [HttpGet("export")]
+ [Log(Title = "GP12数据导出", BusinessType = BusinessType.EXPORT)]
+ public IActionResult Export([FromQuery] WmGp12QualityStatisticsQueryDto parm)
+ {
+ parm.PageNum = 1;
+ parm.PageSize = 10000;
+ var list = _WmGp12QualityStatisticsService.GetList(parm);
+
+ var result = ExportExcelMini(list.Result, "export", "GP12数据");
+ return ExportExcel(result.Item2, result.Item1);
+ }
+
///
/// 查询GP12质检记录表详情
///
diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishQualityStatisticsController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishQualityStatisticsController.cs
index 81abbc08..8cc0ecd3 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishQualityStatisticsController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishQualityStatisticsController.cs
@@ -3,6 +3,7 @@ using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
+using ZR.Service.mes.wms;
using ZR.Service.mes.wms.IService;
//创建时间:2024-08-07
@@ -42,6 +43,23 @@ namespace ZR.Admin.WebApi.Controllers
return SUCCESS(response);
}
+ ///
+ /// 三楼抛光操作数据导出
+ ///
+ ///
+ ///
+ [HttpGet("export")]
+ [Log(Title = "后道检验报表数据导出", BusinessType = BusinessType.EXPORT)]
+ public IActionResult Export([FromQuery] WmPolishQualityStatisticsQueryDto parm)
+ {
+ parm.PageNum = 1;
+ parm.PageSize = 10000;
+ var list = _WmPolishQualityStatisticsService.GetList(parm);
+
+ var result = ExportExcelMini(list.Result, "export", "后道检验报表");
+ return ExportExcel(result.Item2, result.Item1);
+ }
+
///
/// 查询抛光管理-质量统计详情
///
diff --git a/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishWorkQualityStatisticsController.cs b/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishWorkQualityStatisticsController.cs
index 177a52cf..16c1f1bd 100644
--- a/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishWorkQualityStatisticsController.cs
+++ b/ZR.Admin.WebApi/Controllers/mes/wms/WmPolishWorkQualityStatisticsController.cs
@@ -3,6 +3,7 @@ using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
using ZR.Model.MES.wms;
using ZR.Model.MES.wms.Dto;
+using ZR.Service.mes.wms;
using ZR.Service.mes.wms.IService;
//创建时间:2024-08-08
@@ -41,6 +42,23 @@ namespace ZR.Admin.WebApi.Controllers
return SUCCESS(response);
}
+ ///
+ /// 三楼抛光操作数据导出
+ ///
+ ///
+ ///
+ [HttpGet("export")]
+ [Log(Title = "三楼抛光操作报表数据导出", BusinessType = BusinessType.EXPORT)]
+ public IActionResult Export([FromQuery] WmPolishWorkQualityStatisticsQueryDto parm)
+ {
+ parm.PageNum = 1;
+ parm.PageSize = 10000;
+ var list = _WmPolishWorkQualityStatisticsService.GetList(parm);
+
+ var result = ExportExcelMini(list.Result, "export", "抛光操作报表");
+ return ExportExcel(result.Item2, result.Item1);
+ }
+
///
/// 查询抛光管理-抛光操作详情
///
@@ -62,7 +80,7 @@ namespace ZR.Admin.WebApi.Controllers
[HttpPost]
[Log(Title = "抛光管理-抛光操作", BusinessType = BusinessType.INSERT)]
public IActionResult AddWmPolishWorkQualityStatistics(
- [FromBody] WmPolishQualityStatisticsDto parm
+ [FromBody] WmPolishWorkQualityStatisticsDto parm
)
{
try
@@ -88,7 +106,7 @@ namespace ZR.Admin.WebApi.Controllers
[HttpPut]
[Log(Title = "抛光管理-抛光操作", BusinessType = BusinessType.UPDATE)]
public IActionResult UpdateWmPolishQualityStatistics(
- [FromBody] WmPolishQualityStatisticsDto parm
+ [FromBody] WmPolishWorkQualityStatisticsDto parm
)
{
try
diff --git a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs
index 9126ae4c..98664a5f 100644
--- a/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs
+++ b/ZR.Model/MES/qc/DTO/QcCommonFqcDto.cs
@@ -219,11 +219,21 @@
///
public int ProductQualifiedTotal { get; set; } = 0;
+ ///
+ /// 产线合格率
+ ///
+ public string ProductQualifiePassRate { get; set; } = "0%";
+
///
/// 产线门把手合格数
///
public int ProductDoorknobQualifiedTotal { get; set; } = 0;
+ ///
+ /// 产线倒车雷达合格数
+ ///
+ public int ProductParkingSensorbQualifiedTotal { get; set; } = 0;
+
///
/// 产线抛光总数
///
@@ -259,6 +269,11 @@
///
public int PolishDoorknobQualifiedTotal { get; set; } = 0;
+ ///
+ /// 抛光倒车雷达合格数
+ ///
+ public int PolishParkingSensorbQualifiedTotal { get; set; } = 0;
+
///
/// 抛光打磨总数
///
@@ -284,6 +299,11 @@
///
public int AfterPolishDoorknobQualifiedTotal { get; set; } = 0;
+ ///
+ /// 后道倒车雷达合格数
+ ///
+ public int AfterPolishParkingSensorbQualifiedTotal { get; set; } = 0;
+
///
/// 后道检验抛光总数
///
@@ -314,11 +334,21 @@
///
public int GP12QualifiedTotal { get; set; } = 0;
+ ///
+ /// GP12合格率
+ ///
+ public string GP12QualifiePassRate { get; set; } = "0%";
+
///
/// 一次合格品GP12门把手数(需要清理)
///
public int GP12DoorknobQualifiedTotal { get; set; } = 0;
+ ///
+ /// 一次合格品GP12倒车雷达
+ ///
+ public int GP12ParkingSensorQualifiedTotal { get; set; } = 0;
+
///
/// 一次合格品GP12检验抛光总数
///
@@ -353,6 +383,21 @@
///
public int FinishProductPackageOutTotal { get; set; } = 0;
+
+ /// ====== 二次统计数据 ======
+
+
+ ///
+ /// 总抛光合格数 = GP12抛光合格数 + 后道抛光合格数
+ ///
+ public int StatisticsPolishQualifiedTotal { get; set; } = 0;
+
+ ///
+ /// 总合格数(二次合格数) = 总抛光合格数 + 产线合格数
+ ///
+ public int StatisticsProductAndPolishQualifiedTotal { get; set; } = 0;
+
+
///
/// 备注
///
diff --git a/ZR.Model/MES/wms/Dto/WmGp12QualityStatisticsDto.cs b/ZR.Model/MES/wms/Dto/WmGp12QualityStatisticsDto.cs
index ae9244a1..2ee2bfd0 100644
--- a/ZR.Model/MES/wms/Dto/WmGp12QualityStatisticsDto.cs
+++ b/ZR.Model/MES/wms/Dto/WmGp12QualityStatisticsDto.cs
@@ -13,6 +13,8 @@ namespace ZR.Model.MES.wms.Dto
public string Team { get; set; }
+ public int Type { get; set; } = -1;
+
public string CreatedBy { get; set; }
public DateTime? StartTime { get; set; }
@@ -59,6 +61,8 @@ namespace ZR.Model.MES.wms.Dto
public bool IsReturnWorkpiece { get; set; }
+ public bool IsPolish { get; set; }
+
public int? Type { get; set; }
public string Remark { get; set; }
diff --git a/ZR.Model/MES/wms/Dto/WmPolishQualityStatisticsDto.cs b/ZR.Model/MES/wms/Dto/WmPolishQualityStatisticsDto.cs
index dfc1dcb3..bc7d9bbf 100644
--- a/ZR.Model/MES/wms/Dto/WmPolishQualityStatisticsDto.cs
+++ b/ZR.Model/MES/wms/Dto/WmPolishQualityStatisticsDto.cs
@@ -14,6 +14,8 @@ namespace ZR.Model.MES.wms.Dto
public string Team { get; set; }
+ public int Type { get; set; } = -1;
+
public string CreatedBy { get; set; }
public DateTime? StartTime { get; set; }
@@ -131,6 +133,10 @@ namespace ZR.Model.MES.wms.Dto
// 是否是返工件
public bool IsReturnWorkpiece { get; set; } = false;
+ ///
+ /// 是否跳过GP12计算抛光合格数
+ ///
+ public bool IsOver { get; set; } = false;
}
}
\ No newline at end of file
diff --git a/ZR.Model/MES/wms/Dto/WmPolishWorkQualityStatisticsDto.cs b/ZR.Model/MES/wms/Dto/WmPolishWorkQualityStatisticsDto.cs
index ae17b9a4..a49c22f4 100644
--- a/ZR.Model/MES/wms/Dto/WmPolishWorkQualityStatisticsDto.cs
+++ b/ZR.Model/MES/wms/Dto/WmPolishWorkQualityStatisticsDto.cs
@@ -13,6 +13,7 @@ namespace ZR.Model.MES.wms.Dto
public string Partnumber { get; set; }
public string Team { get; set; }
+ public int Type { get; set; } = -1;
public string CreatedBy { get; set; }
@@ -130,5 +131,10 @@ namespace ZR.Model.MES.wms.Dto
// 是否是返工件
public bool IsReturnWorkpiece { get; set; } = false;
+ ///
+ /// 是否跳过后道抛光直接出库
+ ///
+ public bool IsOutbound { get; set; } = false;
+
}
}
\ No newline at end of file
diff --git a/ZR.Model/MES/wms/WmGp12QualityStatistics.cs b/ZR.Model/MES/wms/WmGp12QualityStatistics.cs
index f4b3cba3..e29b3fd3 100644
--- a/ZR.Model/MES/wms/WmGp12QualityStatistics.cs
+++ b/ZR.Model/MES/wms/WmGp12QualityStatistics.cs
@@ -84,7 +84,13 @@ namespace ZR.Model.MES.wms
public bool IsReturnWorkpiece { get; set; }
///
- /// 类别(0-默认 1-抛光 2-打磨 3-报废 4-合计)
+ /// 是否是抛光品
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public bool IsPolish { get; set; }
+
+ ///
+ /// 类别(0-默认 1-抛光品)
///
public int? Type { get; set; }
diff --git a/ZR.Model/MES/wms/WmPolishQualityStatistics.cs b/ZR.Model/MES/wms/WmPolishQualityStatistics.cs
index 7156afca..71ab96dc 100644
--- a/ZR.Model/MES/wms/WmPolishQualityStatistics.cs
+++ b/ZR.Model/MES/wms/WmPolishQualityStatistics.cs
@@ -2,7 +2,7 @@
namespace ZR.Model.MES.wms
{
///
- /// 抛光管理-质量统计
+ /// 抛光管理-质量统计(后道)
///
[SugarTable("wm_polish_quality_statistics")]
public class WmPolishQualityStatistics
@@ -78,7 +78,7 @@ namespace ZR.Model.MES.wms
public DateTime? EndTime { get; set; }
///
- /// 类别(0-默认 1-抛光 2-打磨 3-报废 4-合计)
+ /// 类别(0-默认 1-跳过GP12直接计算抛光合格)
///
public int? Type { get; set; }
@@ -297,5 +297,11 @@ namespace ZR.Model.MES.wms
[SugarColumn(ColumnName = "is_return_workpiece")]
public bool IsReturnWorkpiece { get; set; } = false;
+ ///
+ /// 是否计算抛光合格数
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public bool IsOver { get; set; } = false;
+
}
}
\ No newline at end of file
diff --git a/ZR.Model/MES/wms/WmPolishWorkQualityStatistics.cs b/ZR.Model/MES/wms/WmPolishWorkQualityStatistics.cs
index aec1ccbc..63e5920a 100644
--- a/ZR.Model/MES/wms/WmPolishWorkQualityStatistics.cs
+++ b/ZR.Model/MES/wms/WmPolishWorkQualityStatistics.cs
@@ -291,5 +291,11 @@ namespace ZR.Model.MES.wms
[SugarColumn(ColumnName = "is_return_workpiece")]
public bool IsReturnWorkpiece { get; set; } = false;
+ ///
+ /// 是否抛光直接出库
+ ///
+ [SugarColumn(IsIgnore = true)]
+ public bool IsOutbound { get; set; } = false;
+
}
}
\ No newline at end of file
diff --git a/ZR.Service/mes/qc/CommonFQCService.cs b/ZR.Service/mes/qc/CommonFQCService.cs
index c5ddb282..2ef59312 100644
--- a/ZR.Service/mes/qc/CommonFQCService.cs
+++ b/ZR.Service/mes/qc/CommonFQCService.cs
@@ -514,28 +514,19 @@ namespace ZR.Service.mes.qc
}
}
- // 获取产线相关数据
+ ///
+ /// 获取产线相关数据
+ ///
+ ///
+ ///
+ ///
public QcProductAndPolishAndOneTimeFqcBoardDto GetProductTotal(
QcProductAndPolishAndOneTimeFqcBoardDto boardData,
QcProductAndPolishAndOneTimeFqcBoardQuery query
)
{
+ // 投入数
var predicate1 = Expressionable
- .Create()
- .AndIF(
- !string.IsNullOrEmpty(query.Partnumber),
- it => it.FinishedPartNumber == query.Partnumber
- )
- .AndIF(
- query.StartTime != null,
- it => it.StartTime >= query.StartTime.Value.ToLocalTime()
- )
- .AndIF(
- query.EndTime != null,
- it => it.StartTime <= query.EndTime.Value.ToLocalTime()
- )
- .ToExpression();
- var predicate2 = Expressionable
.Create()
.AndIF(
!string.IsNullOrEmpty(query.Partnumber),
@@ -550,23 +541,34 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime()
)
.ToExpression();
- string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" };
+ // 门把手提取
+ string[] checkStrArray =
+ {
+ "门把手",
+ "面盖",
+ "T22",
+ "T26",
+ "A58",
+ "A60",
+ "C01",
+ "B02",
+ "V71",
+ "T1EJ"
+ };
var DoorknobPartNumberCheck = Expressionable.Create();
foreach (string checkStr in checkStrArray)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
- DoorknobPartNumberCheck
- .And(it => it.Type == 1)
- .And(it => it.Status == 1);
+ DoorknobPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
List DoorknobPartNumberList = Context
.Queryable()
.Where(DoorknobPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
- var predicate3 = Expressionable
- .Create()
+ var predicate2 = Expressionable
+ .Create()
.And(it => DoorknobPartNumberList.Contains(it.FinishedPartNumber))
.AndIF(
!string.IsNullOrEmpty(query.Partnumber),
@@ -581,34 +583,71 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime()
)
.ToExpression();
+ // 倒车雷达提取
+ string[] checkStrArray2 = { "倒车雷达" };
+ var ParkingSensorPartNumberCheck = Expressionable.Create();
+ foreach (string checkStr in checkStrArray2)
+ {
+ ParkingSensorPartNumberCheck.Or(it => it.Description.Contains(checkStr));
+ }
+ ;
+ ParkingSensorPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
+ List ParkingSensorPartNumberList = Context
+ .Queryable()
+ .Where(ParkingSensorPartNumberCheck.ToExpression())
+ .Select(it => it.Partnumber)
+ .ToList();
+ var predicateParkingSensor = Expressionable
+ .Create()
+ .And(it => ParkingSensorPartNumberList.Contains(it.FinishedPartNumber))
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.FinishedPartNumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
boardData.ProductRequireTotal =
Context
- .Queryable()
+ .Queryable()
.Where(predicate1)
.Sum(it => it.RequireNumber) ?? 0;
boardData.ProductQualifiedTotal =
Context
- .Queryable()
+ .Queryable()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // 门把手合格
boardData.ProductDoorknobQualifiedTotal =
Context
- .Queryable()
- .Where(predicate3)
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.QualifiedNumber) ?? 0;
+ // 倒车雷达合格
+ boardData.ProductParkingSensorbQualifiedTotal =
+ Context
+ .Queryable()
+ .Where(predicateParkingSensor)
.Sum(it => it.QualifiedNumber) ?? 0;
boardData.ProductPolishTotal =
Context
.Queryable()
- .Where(predicate2)
+ .Where(predicate1)
.Sum(it => it.PaoguangTotal) ?? 0;
boardData.ProductSandingTotal =
Context
- .Queryable()
+ .Queryable()
.Where(predicate1)
.Sum(it => it.DamoTotal) ?? 0;
boardData.ProductDiscardTotal =
Context
- .Queryable()
+ .Queryable()
.Where(predicate1)
.Sum(it => it.BaofeiTotal) ?? 0;
@@ -616,9 +655,20 @@ namespace ZR.Service.mes.qc
boardData.ProductRequireTotal = boardData.ProductRequireTotal / 3;
boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal / 3;
boardData.ProductDoorknobQualifiedTotal = boardData.ProductDoorknobQualifiedTotal / 3;
+ boardData.ProductParkingSensorbQualifiedTotal =
+ boardData.ProductParkingSensorbQualifiedTotal / 3;
boardData.ProductPolishTotal = boardData.ProductPolishTotal / 3;
boardData.ProductSandingTotal = boardData.ProductSandingTotal / 3;
boardData.ProductDiscardTotal = boardData.ProductDiscardTotal / 3;
+ // 合格数补正(合格数 = 总合格数 - 门把手 - 倒车雷达)
+ /*boardData.ProductQualifiedTotal = boardData.ProductQualifiedTotal - (boardData.ProductDoorknobQualifiedTotal + boardData.ProductParkingSensorbQualifiedTotal);*/
+
+ if (boardData.ProductRequireTotal > 0)
+ {
+ double passRate =
+ ((double)boardData.ProductQualifiedTotal / boardData.ProductRequireTotal) * 100;
+ boardData.ProductQualifiePassRate = passRate.ToString("0") + "%";
+ }
return boardData;
}
@@ -665,21 +715,77 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime()
)
.ToExpression();
- string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" };
+ string[] checkStrArray =
+ {
+ "门把手",
+ "面盖",
+ "T22",
+ "T26",
+ "A58",
+ "A60",
+ "C01",
+ "B02",
+ "V71",
+ "T1EJ"
+ };
var DoorknobPartNumberCheck = Expressionable.Create();
foreach (string checkStr in checkStrArray)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
- DoorknobPartNumberCheck
- .And(it => it.Type == 1)
- .And(it => it.Status == 1);
+ DoorknobPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
List DoorknobPartNumberList = Context
.Queryable()
.Where(DoorknobPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
+ // 倒车雷达提取
+ string[] checkStrArray2 = { "倒车雷达" };
+ var ParkingSensorPartNumberCheck = Expressionable.Create();
+ foreach (string checkStr in checkStrArray2)
+ {
+ ParkingSensorPartNumberCheck.Or(it => it.Description.Contains(checkStr));
+ }
+ ;
+ ParkingSensorPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
+ List ParkingSensorPartNumberList = Context
+ .Queryable()
+ .Where(ParkingSensorPartNumberCheck.ToExpression())
+ .Select(it => it.Partnumber)
+ .ToList();
+ var predicateParkingSensor1 = Expressionable
+ .Create()
+ .And(it => ParkingSensorPartNumberList.Contains(it.Partnumber))
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
+ var predicateParkingSensor2 = Expressionable
+ .Create()
+ .And(it => ParkingSensorPartNumberList.Contains(it.Partnumber))
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
var predicate3 = Expressionable
.Create()
.And(it => DoorknobPartNumberList.Contains(it.Partnumber))
@@ -697,21 +803,21 @@ namespace ZR.Service.mes.qc
)
.ToExpression();
var predicate4 = Expressionable
- .Create()
- .And(it => DoorknobPartNumberList.Contains(it.Partnumber))
- .AndIF(
- !string.IsNullOrEmpty(query.Partnumber),
- it => it.Partnumber == query.Partnumber
- )
- .AndIF(
- query.StartTime != null,
- it => it.StartTime >= query.StartTime.Value.ToLocalTime()
- )
- .AndIF(
- query.EndTime != null,
- it => it.StartTime <= query.EndTime.Value.ToLocalTime()
- )
- .ToExpression();
+ .Create()
+ .And(it => DoorknobPartNumberList.Contains(it.Partnumber))
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
boardData.PolishWarehouseTotal =
Context
.Queryable()
@@ -723,16 +829,24 @@ namespace ZR.Service.mes.qc
.Queryable()
.Where(predicate1)
.Sum(it => it.RequireNumber) ?? 0;
+ // 抛光合格
boardData.PolishQualifiedTotal =
Context
.Queryable()
.Where(predicate1)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // 抛光门把手
boardData.PolishDoorknobQualifiedTotal =
Context
.Queryable()
.Where(predicate4)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // 抛光倒车雷达
+ boardData.PolishParkingSensorbQualifiedTotal =
+ Context
+ .Queryable()
+ .Where(predicateParkingSensor1)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.PolishSandingTotal =
Context
.Queryable()
@@ -749,16 +863,24 @@ namespace ZR.Service.mes.qc
.Queryable()
.Where(predicate2)
.Sum(it => it.RequireNumber) ?? 0;
+ // 后道合格
boardData.AfterPolishQualifiedTotal =
Context
.Queryable()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // 后道门把手合格数
boardData.AfterPolishDoorknobQualifiedTotal =
Context
.Queryable()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // 后道倒车雷达合格数
+ boardData.AfterPolishParkingSensorbQualifiedTotal =
+ Context
+ .Queryable()
+ .Where(predicateParkingSensor2)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.AfterPolishPolishTotal =
Context
.Queryable()
@@ -774,6 +896,12 @@ namespace ZR.Service.mes.qc
.Queryable()
.Where(predicate2)
.Sum(it => it.BaofeiTotal) ?? 0;
+ // 合格数修正
+ boardData.PolishQualifiedTotal =
+ boardData.PolishQualifiedTotal - boardData.PolishParkingSensorbQualifiedTotal;
+ boardData.AfterPolishQualifiedTotal =
+ boardData.AfterPolishQualifiedTotal
+ - boardData.AfterPolishParkingSensorbQualifiedTotal;
return boardData;
}
@@ -805,37 +933,79 @@ namespace ZR.Service.mes.qc
it => it.StartTime <= query.EndTime.Value.ToLocalTime()
)
.ToExpression();
- string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" };
+ // 门把手提取
+ string[] checkStrArray =
+ {
+ "门把手",
+ "面盖",
+ "T22",
+ "T26",
+ "A58",
+ "A60",
+ "C01",
+ "B02",
+ "V71",
+ "T1EJ"
+ };
var DoorknobPartNumberCheck = Expressionable.Create();
foreach (string checkStr in checkStrArray)
{
DoorknobPartNumberCheck.Or(it => it.Description.Contains(checkStr));
}
;
- DoorknobPartNumberCheck
- .And(it => it.Type == 1)
- .And(it => it.Status == 1);
+ DoorknobPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
List DoorknobPartNumberList = Context
.Queryable()
.Where(DoorknobPartNumberCheck.ToExpression())
.Select(it => it.Partnumber)
.ToList();
var predicate3 = Expressionable
- .Create()
- .And(it => DoorknobPartNumberList.Contains(it.Partnumber))
- .AndIF(
- !string.IsNullOrEmpty(query.Partnumber),
- it => it.Partnumber == query.Partnumber
- )
- .AndIF(
- query.StartTime != null,
- it => it.StartTime >= query.StartTime.Value.ToLocalTime()
- )
- .AndIF(
- query.EndTime != null,
- it => it.StartTime <= query.EndTime.Value.ToLocalTime()
- )
- .ToExpression();
+ .Create()
+ .And(it => DoorknobPartNumberList.Contains(it.Partnumber))
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
+ // 倒车雷达提取
+ string[] checkStrArray2 = { "倒车雷达" };
+ var ParkingSensorPartNumberCheck = Expressionable.Create();
+ foreach (string checkStr in checkStrArray2)
+ {
+ ParkingSensorPartNumberCheck.Or(it => it.Description.Contains(checkStr));
+ }
+ ;
+ ParkingSensorPartNumberCheck.And(it => it.Type == 1).And(it => it.Status == 1);
+ List ParkingSensorPartNumberList = Context
+ .Queryable()
+ .Where(ParkingSensorPartNumberCheck.ToExpression())
+ .Select(it => it.Partnumber)
+ .ToList();
+ var predicateParkingSensor = Expressionable
+ .Create()
+ .And(it => ParkingSensorPartNumberList.Contains(it.Partnumber))
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .ToExpression();
+
boardData.OneTimeWarehouseTotal =
Context.Queryable().Where(predicate1).Sum(it => it.Quantity)
?? 0;
@@ -845,16 +1015,24 @@ namespace ZR.Service.mes.qc
.Queryable()
.Where(predicate2)
.Sum(it => it.RequireNumber) ?? 0;
+ // GP12合格数
boardData.GP12QualifiedTotal =
Context
.Queryable()
.Where(predicate2)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // GP12门把手
boardData.GP12DoorknobQualifiedTotal =
Context
.Queryable()
.Where(predicate3)
.Sum(it => it.QualifiedNumber) ?? 0;
+ // GP12倒车雷达
+ boardData.GP12ParkingSensorQualifiedTotal =
+ Context
+ .Queryable()
+ .Where(predicateParkingSensor)
+ .Sum(it => it.QualifiedNumber) ?? 0;
boardData.GP12PolishTotal =
Context
.Queryable()
@@ -870,6 +1048,16 @@ namespace ZR.Service.mes.qc
.Queryable()
.Where(predicate2)
.Sum(it => it.BaofeiTotal) ?? 0;
+
+ boardData.GP12QualifiedTotal =
+ boardData.GP12QualifiedTotal - boardData.GP12ParkingSensorQualifiedTotal;
+ if (boardData.GP12RequireTotal > 0)
+ {
+ double passRate =
+ ((double)boardData.GP12QualifiedTotal / boardData.GP12RequireTotal) * 100;
+ boardData.GP12QualifiePassRate = passRate.ToString("0") + "%";
+ }
+
return boardData;
}
@@ -926,6 +1114,66 @@ namespace ZR.Service.mes.qc
return boardData;
}
+ ///
+ /// 获取二次统计数据
+ ///
+ ///
+ ///
+ ///
+ public QcProductAndPolishAndOneTimeFqcBoardDto GetStatisticsTotal(
+ QcProductAndPolishAndOneTimeFqcBoardDto boardData,
+ QcProductAndPolishAndOneTimeFqcBoardQuery query
+ )
+ {
+ var predicate1 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .And(it => it.Type == 1)
+ .ToExpression();
+ var predicate2 = Expressionable
+ .Create()
+ .AndIF(
+ !string.IsNullOrEmpty(query.Partnumber),
+ it => it.Partnumber == query.Partnumber
+ )
+ .AndIF(
+ query.StartTime != null,
+ it => it.StartTime >= query.StartTime.Value.ToLocalTime()
+ )
+ .AndIF(
+ query.EndTime != null,
+ it => it.StartTime <= query.EndTime.Value.ToLocalTime()
+ )
+ .And(it=>it.Type == 1)
+ .ToExpression();
+ boardData.StatisticsPolishQualifiedTotal =
+ (
+ Context
+ .Queryable()
+ .Where(predicate1)
+ .Sum(it => it.QualifiedNumber) ?? 0
+ )
+ + (
+ Context
+ .Queryable()
+ .Where(predicate2)
+ .Sum(it => it.QualifiedNumber) ?? 0
+ );
+ boardData.StatisticsProductAndPolishQualifiedTotal = boardData.StatisticsPolishQualifiedTotal + boardData.ProductQualifiedTotal;
+ return boardData;
+ }
+
///
/// 获取产线,抛光,一次合格品质量报表看板数据
///
@@ -939,6 +1187,7 @@ namespace ZR.Service.mes.qc
result = GetPolishTotal(result, query);
result = GetOneTimeTotal(result, query);
result = GetFinishProductTotal(result, query);
+ result = GetStatisticsTotal(result, query);
result.SandingTotal =
result.ProductSandingTotal
+ result.PolishSandingTotal
@@ -959,7 +1208,20 @@ namespace ZR.Service.mes.qc
///
public bool CheckIsDoorknob(string partnumber)
{
- string[] checkStrArray = { "门把手","面盖","T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" };
+ string[] checkStrArray =
+ {
+ "门把手",
+ "面盖",
+ "T22",
+ "T26",
+ "A58",
+ "A60",
+ "C01",
+ "B02",
+ "V71",
+ "T1EJ",
+ "倒车雷达"
+ };
var isDoorknobCheck = Expressionable.Create();
foreach (string checkStr in checkStrArray)
{
diff --git a/ZR.Service/mes/qc/FirstFQCService.cs b/ZR.Service/mes/qc/FirstFQCService.cs
index 442edef2..744bded0 100644
--- a/ZR.Service/mes/qc/FirstFQCService.cs
+++ b/ZR.Service/mes/qc/FirstFQCService.cs
@@ -3877,7 +3877,7 @@ namespace ZR.Service.mes.qc
};
wmPolishInventoryService.DoWmPolishWarehousing(warehousingInfo);
// 2.成品入一次合格品库
- // 合格品检查是否是门把手,是进入成品库(仅出库),不是进入一次合格品库
+ // 合格品检查是否是门把手或倒车雷达,是进入成品库(仅出库),不是进入一次合格品库
string[] checkStrArray =
{
"门把手",
@@ -3889,7 +3889,8 @@ namespace ZR.Service.mes.qc
"C01",
"B02",
"V71",
- "T1EJ "
+ "T1EJ ",
+ "倒车雷达"
};
var isDoorknobCheck = Expressionable.Create();
foreach (string checkStr in checkStrArray)
diff --git a/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs b/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs
index b1ec7e32..6763ff7c 100644
--- a/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs
+++ b/ZR.Service/mes/wms/WmGoodsBatchSearchService.cs
@@ -45,7 +45,7 @@ namespace ZR.Service.Business
"GROUP BY\n" +
" PackageCode \n" +
"ORDER BY\n" +
- " EntryWarehouseTime DESC";
+ " PackageCodeClient_son";
PagedInfo result = Context.SqlQueryable(sql)
.Where(exp)
.Select()
@@ -148,7 +148,7 @@ namespace ZR.Service.Business
"GROUP BY\n" +
" Partnumber \n" +
"ORDER BY\n" +
- " EntryWarehouseTime DESC";
+ " PackageCodeClient_son";
PagedInfo result = Context.SqlQueryable(sql)
.Where(exp)
.Select()
@@ -253,7 +253,7 @@ namespace ZR.Service.Business
"GROUP BY\n" +
" PackageCode \n" +
"ORDER BY\n" +
- " OutTime DESC";
+ " PackageCodeClient_son";
PagedInfo result = Context.SqlQueryable(sql)
.Where(exp)
.Select()
@@ -358,7 +358,7 @@ namespace ZR.Service.Business
"GROUP BY\n" +
" Partnumber \n" +
"ORDER BY\n" +
- " OutTime DESC";
+ " PackageCodeClient_son";
PagedInfo result = Context.SqlQueryable(sql)
.Where(exp)
.Select()
diff --git a/ZR.Service/mes/wms/WmGp12QualityStatisticsService.cs b/ZR.Service/mes/wms/WmGp12QualityStatisticsService.cs
index d138cefe..795c6f2f 100644
--- a/ZR.Service/mes/wms/WmGp12QualityStatisticsService.cs
+++ b/ZR.Service/mes/wms/WmGp12QualityStatisticsService.cs
@@ -42,6 +42,10 @@ namespace ZR.Service.mes.wms
!string.IsNullOrEmpty(parm.CreatedBy),
it => it.CreatedBy.Contains(parm.CreatedBy)
)
+ .AndIF(
+ parm.Type != -1,
+ it => it.Type == parm.Type
+ )
.AndIF(
parm.StartTime != null,
it => it.StartTime >= parm.StartTime.Value.ToLocalTime()
@@ -115,7 +119,14 @@ namespace ZR.Service.mes.wms
throw new Exception("投入数与合格数,抛光总数,打磨数,报废数不符合,请检查");
}
model.Id = SnowFlakeSingle.instance.NextId().ToString();
- model.Type = 0;
+ if (model.IsPolish)
+ {
+ model.Type = 1;
+ }
+ else
+ {
+ model.Type = 0;
+ }
decimal qualifiedRate = 0.0m;
if (model.QualifiedNumber != 0)
{
diff --git a/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs b/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs
index 21a1b6f7..050328ba 100644
--- a/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs
+++ b/ZR.Service/mes/wms/WmPolishQualityStatisticsService.cs
@@ -10,7 +10,7 @@ using ZR.Service.mes.wms.IService;
namespace ZR.Service.mes.wms
{
///
- /// 抛光管理后道检验-质量统计Service业务层处理
+ /// 抛光管理后道检验-质量统计Service业务层处理(后道)
///
[AppService(
ServiceType = typeof(IWmPolishQualityStatisticsService),
@@ -44,6 +44,10 @@ namespace ZR.Service.mes.wms
!string.IsNullOrEmpty(parm.CreatedBy),
it => it.CreatedBy.Contains(parm.CreatedBy)
)
+ .AndIF(
+ parm.Type != -1,
+ it => it.Type == parm.Type
+ )
.AndIF(
parm.StartTime != null,
it => it.StartTime >= parm.StartTime.Value.ToLocalTime()
@@ -119,7 +123,15 @@ namespace ZR.Service.mes.wms
throw new Exception("投入数与合格数,抛光总数,打磨数,报废数不符合,请检查");
}
model.Id = SnowFlakeSingle.instance.NextId().ToString();
- model.Type = 0;
+ if (model.IsOver)
+ {
+ model.Type = 1;
+ }
+ else
+ {
+ model.Type = 0;
+ }
+
decimal qualifiedRate = 0.0m;
if (model.QualifiedNumber != 0)
{
@@ -136,8 +148,9 @@ namespace ZR.Service.mes.wms
WmPolishInventoryService inventoryService = new();
WmOneTimeInventoryService oneTimeService = new();
// 合格品检查是否是门把手,是进入成品库(仅出库),不是进入一次合格品库
- bool isDoorknob = CheckIsDoorknob(model.Partnumber);
- if (!isDoorknob && model.QualifiedNumber > 0)
+ // TODO 20241018调整,门把手可入GP12
+ //bool isDoorknob = CheckIsDoorknob(model.Partnumber);
+ if (!model.IsOver && model.QualifiedNumber > 0)
{
WmOneTimeInventory wmOneTimeInventoryWarehousing =
new()
@@ -148,7 +161,7 @@ namespace ZR.Service.mes.wms
CreatedBy = model.CreatedBy,
ActionTime = DateTime.Now.ToLocalTime(),
Remark =
- "抛光合格品入库,合格数:"
+ "后道抛光合格品入一次合格库,合格数:"
+ model.QualifiedNumber
+ "。记录时间:"
+ model.CreatedTime.Value.ToLocalTime().ToString()
@@ -160,7 +173,7 @@ namespace ZR.Service.mes.wms
if (res1 == 0)
{
Context.Ado.RollbackTran();
- throw new Exception("抛光合格品入库失败");
+ throw new Exception("抛光合格品GP12入库失败");
}
}
@@ -276,7 +289,7 @@ namespace ZR.Service.mes.wms
///
public bool CheckIsDoorknob(string partnumber)
{
- string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ" };
+ string[] checkStrArray = { "门把手", "面盖", "T22", "T26", "A58", "A60", "C01", "B02", "V71", "T1EJ", "倒车雷达" };
var isDoorknobCheck = Expressionable.Create();
foreach (string checkStr in checkStrArray)
{
diff --git a/ZR.Service/mes/wms/WmPolishWorkQualityStatisticsService.cs b/ZR.Service/mes/wms/WmPolishWorkQualityStatisticsService.cs
index 884f5fea..e0fa874e 100644
--- a/ZR.Service/mes/wms/WmPolishWorkQualityStatisticsService.cs
+++ b/ZR.Service/mes/wms/WmPolishWorkQualityStatisticsService.cs
@@ -10,7 +10,7 @@ using ZR.Service.mes.wms.IService;
namespace ZR.Service.mes.wms
{
///
- /// 抛光管理-抛光操作Service业务层处理
+ /// 抛光管理-抛光操作Service业务层处理(抛光)
///
[AppService(
ServiceType = typeof(IWmPolishWorkQualityStatisticsService),
@@ -44,6 +44,10 @@ namespace ZR.Service.mes.wms
!string.IsNullOrEmpty(parm.CreatedBy),
it => it.CreatedBy.Contains(parm.CreatedBy)
)
+ .AndIF(
+ parm.Type != -1,
+ it => it.Type == parm.Type
+ )
.AndIF(
parm.StartTime != null,
it => it.StartTime >= parm.StartTime.Value.ToLocalTime()
@@ -131,8 +135,9 @@ namespace ZR.Service.mes.wms
throw new Exception("插入抛光操作记录失败");
}
WmPolishInventoryService inventoryService = new();
- //合格品重新进入抛光仓库
- if (model.QualifiedNumber > 0)
+ WmOneTimeInventoryService oneTimeService = new();
+ //抛光品直接出库到GP12
+ if (model.QualifiedNumber > 0 && model.IsOutbound)
{
WmPolishInventory wmPolishInventory =
new()
@@ -143,7 +148,7 @@ namespace ZR.Service.mes.wms
CreatedBy = model.CreatedBy,
ActionTime = DateTime.Now.ToLocalTime(),
Remark =
- "抛光操作记录入库,合格数:"
+ "抛光操作记录跳过后道出库,合格数:"
+ model.QualifiedNumber
+ "。记录时间:"
+ model.CreatedTime.Value.ToLocalTime().ToString()
@@ -151,11 +156,34 @@ namespace ZR.Service.mes.wms
+ res0.Id
+ "]"
};
- int res1 = inventoryService.DoWmPolishWarehousing(wmPolishInventory);
+ int res1 = inventoryService.DoWmPolishRetrieval(wmPolishInventory);
if (res1 == 0)
{
Context.Ado.RollbackTran();
- throw new Exception("抛光操作记录入库失败");
+ throw new Exception("抛光操作记录出库失败");
+ }
+ WmOneTimeInventory wmOneTimeInventoryWarehousing =
+ new()
+ {
+ Partnumber = model.Partnumber,
+ Type = model.IsReturnWorkpiece ? 2 : 1,
+ Quantity = model.QualifiedNumber,
+ CreatedBy = model.CreatedBy,
+ ActionTime = DateTime.Now.ToLocalTime(),
+ Remark =
+ "抛光操作合格品入一次合格库,合格数:"
+ + model.QualifiedNumber
+ + "。记录时间:"
+ + model.CreatedTime.Value.ToLocalTime().ToString()
+ + "[来源记录识别编号:"
+ + res0.Id
+ + "]"
+ };
+ int res2 = oneTimeService.DoWmOneTimeWarehousing(wmOneTimeInventoryWarehousing);
+ if (res2 == 0)
+ {
+ Context.Ado.RollbackTran();
+ throw new Exception("抛光合格品一次合格入库失败");
}
}
//报废,打磨品 扣除抛光仓库库存
@@ -170,7 +198,7 @@ namespace ZR.Service.mes.wms
CreatedBy = model.CreatedBy,
ActionTime = DateTime.Now.ToLocalTime(),
Remark =
- "抛光操作记录出库:打磨数"
+ "抛光操作记录打磨报废出库:打磨数"
+ model.DamoTotal
+ "、报废数"
+ model.BaofeiTotal