From b6b20da09e72e9e287b252348e7700641d9745e8 Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期一, 11 八月 2025 18:31:14 +0800
Subject: [PATCH] 11
---
MESApplication/Controllers/QC/XJController.cs | 22 +++
MES.Service/Modes/VDab.cs | 56 ++++++++
MES.Service/service/QC/XJService.cs | 196 ++++++++++++++++++++++++---
MES.Service/service/QC/BaseService.cs | 9 +
MES.Service/Modes/QsQaItemXj.cs | 78 +++++-----
MESApplication/Controllers/QC/BaseController.cs | 26 +++
6 files changed, 324 insertions(+), 63 deletions(-)
diff --git a/MES.Service/Modes/QsQaItemXj.cs b/MES.Service/Modes/QsQaItemXj.cs
index 28c435a..a54b53a 100644
--- a/MES.Service/Modes/QsQaItemXj.cs
+++ b/MES.Service/Modes/QsQaItemXj.cs
@@ -21,108 +21,112 @@
public decimal? Id { get; set; }
/// <summary>
- /// 妫�楠屽崟鍙�
+ /// 妫�楠屽崟鍙�
/// </summary>
- [SugarColumn(ColumnName = "RELEASE_NO")]
+ [SugarColumn(ColumnName = "RELEASE_NO", Length = 100)]
public string? ReleaseNo { get; set; }
/// <summary>
- /// 妫�楠屾棩鏈�
+ /// 妫�楠屾棩鏈�
/// </summary>
[SugarColumn(ColumnName = "FCHECK_DATE")]
- public DateTime? FcheckDate { get; set; }
+ public DateTime? CheckDate { get; set; }
/// <summary>
- /// 妫�楠屼汉鍛�
+ /// 妫�楠屼汉鍛�
/// </summary>
- [SugarColumn(ColumnName = "FCHECK_BY")]
- public string? FcheckBy { get; set; }
+ [SugarColumn(ColumnName = "FCHECK_BY", Length = 100)]
+ public string? CheckBy { get; set; }
/// <summary>
- /// 鐗╂枡缂栫爜
+ /// 鐗╂枡缂栫爜
/// </summary>
- [SugarColumn(ColumnName = "ITEM_NO")]
+ [SugarColumn(ColumnName = "ITEM_NO", Length = 100)]
public string? ItemNo { get; set; }
/// <summary>
- /// 妫�楠岀粨鏋�
+ /// 妫�楠岀粨鏋�
/// </summary>
- [SugarColumn(ColumnName = "FCHECK_RESU")]
- public string? FcheckResu { get; set; }
+ [SugarColumn(ColumnName = "FCHECK_RESU", Length = 100)]
+ public string? CheckResult { get; set; }
/// <summary>
- /// 鍒涘缓浜�
+ /// 鍒涘缓浜�
/// </summary>
- [SugarColumn(ColumnName = "CREATE_BY")]
+ [SugarColumn(ColumnName = "CREATE_BY", Length = 100)]
public string? CreateBy { get; set; }
/// <summary>
- /// 鍒涘缓鏃ユ湡
+ /// 鍒涘缓鏃ユ湡
/// </summary>
[SugarColumn(ColumnName = "CREATE_DATE")]
public DateTime? CreateDate { get; set; }
/// <summary>
- /// 鏇存柊浜�
+ /// 鏇存柊浜�
/// </summary>
- [SugarColumn(ColumnName = "LASTUPDATE_BY")]
- public string? LastupdateBy { get; set; }
+ [SugarColumn(ColumnName = "LASTUPDATE_BY", Length = 100)]
+ public string? LastUpdateBy { get; set; }
/// <summary>
- /// 鏇存柊鏃ユ湡
+ /// 鏇存柊鏃ユ湡
/// </summary>
[SugarColumn(ColumnName = "LASTUPDATE_DATE")]
- public DateTime? LastupdateDate { get; set; }
+ public DateTime? LastUpdateDate { get; set; }
/// <summary>
+ /// 淇敼浜�
/// </summary>
- [SugarColumn(ColumnName = "MODIFY1_BY")]
- public string? Modify1By { get; set; }
+ [SugarColumn(ColumnName = "MODIFY1_BY", Length = 100)]
+ public string? ModifyBy { get; set; }
/// <summary>
- /// 鍗曚綅
+ /// 鐗╂枡鍗曚綅
/// </summary>
- [SugarColumn(ColumnName = "ITEM_UNIT")]
+ [SugarColumn(ColumnName = "ITEM_UNIT", Length = 100)]
public string? ItemUnit { get; set; }
/// <summary>
- /// 宸ュ崟鍙�
+ /// 宸ュ崟鍙�
/// </summary>
- [SugarColumn(ColumnName = "BILL_NO")]
+ [SugarColumn(ColumnName = "BILL_NO", Length = 50)]
public string? BillNo { get; set; }
/// <summary>
- /// 妯″叿鍙�
+ /// 妯″叿鍙�
/// </summary>
- [SugarColumn(ColumnName = "MOID_NUM")]
- public string? MoidNum { get; set; }
+ [SugarColumn(ColumnName = "MOID_NUM", Length = 50)]
+ public string? MoldNum { get; set; }
/// <summary>
+ /// 鎻愪氦浜�
/// </summary>
- [SugarColumn(ColumnName = "FSUBMIT_BY")]
- public string? FsubmitBy { get; set; }
+ [SugarColumn(ColumnName = "FSUBMIT_BY", Length = 50)]
+ public string? SubmitBy { get; set; }
/// <summary>
+ /// 鎻愪氦鏃ユ湡
/// </summary>
[SugarColumn(ColumnName = "FSUBMIT_DATE")]
- public DateTime? FsubmitDate { get; set; }
+ public DateTime? SubmitDate { get; set; }
/// <summary>
+ /// 鎻愪氦鐘舵�侊紙0/1锛�
/// </summary>
[SugarColumn(ColumnName = "FSUBMIT")]
- public decimal? Fsubmit { get; set; }
+ public int? SubmitStatus { get; set; }
/// <summary>
- /// 澶囨敞
+ /// 澶囨敞
/// </summary>
- [SugarColumn(ColumnName = "REMARKS")]
+ [SugarColumn(ColumnName = "REMARKS", Length = 200)]
public string? Remarks { get; set; }
/// <summary>
- /// 鐗╂枡ID
+ /// 鐗╂枡ID
/// </summary>
[SugarColumn(ColumnName = "ITEM_ID")]
- public decimal? ItemId { get; set; }
+ public long? ItemId { get; set; }
[SugarColumn(IsIgnore = true)] public string? Daa020 { get; set; }
[SugarColumn(IsIgnore = true)] public decimal? PlanQty { get; set; }
diff --git a/MES.Service/Modes/VDab.cs b/MES.Service/Modes/VDab.cs
new file mode 100644
index 0000000..96de544
--- /dev/null
+++ b/MES.Service/Modes/VDab.cs
@@ -0,0 +1,56 @@
+锘縰sing SqlSugar;
+
+namespace MES.Service.Modes;
+
+[SugarTable("V_DAB")]
+public class VDab
+{
+
+ /// <summary>
+ /// 宸ュ崟 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "DAB001")]
+ public string? Dab001 { get; set; }
+
+ /// <summary>
+ /// 搴忓彿 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "DAB002")]
+ public decimal? Dab002 { get; set; }
+
+ /// <summary>
+ /// 闇�棰嗙敤閲� 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "DAB006")]
+ public string? Dab006 { get; set; }
+
+ /// <summary>
+ /// 鏉愭枡鍚嶇О 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "DAB004")]
+ public string? Dab004 { get; set; }
+
+ /// <summary>
+ /// 鏉愭枡瑙勬牸 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "DAB005")]
+ public string? Dab005 { get; set; }
+
+ /// <summary>
+ /// PID 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "PID")]
+ public string? Pid { get; set; }
+
+ /// <summary>
+ /// 鐗╂枡缂栧彿 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "ITEM_NO")]
+ public string? ItemNo { get; set; }
+
+ /// <summary>
+ /// 鍗曚綅 瀛楁
+ /// </summary>
+ [SugarColumn(ColumnName = "FNUMBER")]
+ public string? FNumber { get; set; }
+}
\ No newline at end of file
diff --git a/MES.Service/service/QC/BaseService.cs b/MES.Service/service/QC/BaseService.cs
index a827168..4d25386 100644
--- a/MES.Service/service/QC/BaseService.cs
+++ b/MES.Service/service/QC/BaseService.cs
@@ -49,4 +49,13 @@
});
return mesQsImages;
}
+
+ public List<VDab> GetDabs(VDab queryObj)
+ {
+ var db = SqlSugarHelper.GetInstance();
+ return db.Queryable<VDab>()
+ .Where(s => s.Dab001 == queryObj.Dab001)
+ .OrderBy(s => s.Dab002)
+ .ToList();
+ }
}
\ No newline at end of file
diff --git a/MES.Service/service/QC/XJService.cs b/MES.Service/service/QC/XJService.cs
index 52fe9bc..d4c8dc3 100644
--- a/MES.Service/service/QC/XJService.cs
+++ b/MES.Service/service/QC/XJService.cs
@@ -134,11 +134,11 @@
.WhereIF(
StringUtil.IsNotNullOrEmpty(queryObj.result) &&
"鏈畬鎴�".Equals(queryObj.result),
- (s, a, c, b) => s.FcheckResu == null)
+ (s, a, c, b) => s.SubmitStatus == 0 || s.SubmitStatus == null)
.WhereIF(
StringUtil.IsNotNullOrEmpty(queryObj.result) &&
!"鏈畬鎴�".Equals(queryObj.result),
- (s, a, c, b) => s.FcheckResu != null)
+ (s, a, c, b) => s.SubmitStatus == 1)
.WhereIF(id > 0, (s, a, c, b) => s.Id == id)
.Select((s, a, c, b) => new QsQaItemXj
{
@@ -152,8 +152,8 @@
BillNo = s.BillNo,
ItemName = b.ItemName,
ItemModel = b.ItemModel,
- FcheckBy = s.FcheckBy,
- FcheckResu = s.FcheckResu,
+ CheckBy = s.CheckBy,
+ CheckResult = s.CheckResult,
Remarks = s.Remarks
}).OrderBy(s => s.CreateDate, OrderByType.Desc);
var items = query.ToPageList(queryObj.PageIndex, queryObj.Limit,ref totalCount);
@@ -292,36 +292,180 @@
return Convert.ToInt32(xj.Id);
}
+
+ public bool XJQaSubmit(LLJDto rkjDto)
+ {
+ var useTransactionWithOracle =
+ SqlSugarHelper.UseTransactionWithOracle(db =>
+ {
+ return db.Updateable<QsQaItemXj>()
+ .SetColumns(s => s.SubmitStatus == 1)
+ .SetColumns(s => s.SubmitBy == rkjDto.userNo)
+ .SetColumns(s => s.SubmitDate == DateTime.Now)
+ .Where(s => s.Id == rkjDto.gid)
+ .ExecuteCommand();
+ });
+ return useTransactionWithOracle > 0;
+ }
+
+ // public int saveItem(XJDto xjDto)
+ // {
+ // var items = xjDto.items;
+ // var userNo = xjDto.userNo;
+ //
+ // SqlSugarHelper.UseTransactionWithOracle(db =>
+ // {
+ // foreach (var item in items) item.Pid = xjDto.gid;
+ //
+ // return db.Insertable(items).ExecuteCommand();
+ // });
+ //
+ // xjDto.items = getJYItem(xjDto.gid, null);
+ //
+ // xjDto.items.ForEach(s =>
+ // {
+ // if (s.MaxValue != null || s.StandardValue != null ||
+ // s.MinValue != null) return;
+ // var detail = new QsQaItemXj02();
+ // detail.Pid = s.Id;
+ // detail.Gid = xjDto.gid;
+ // detail.Fstand = "鈭�";
+ // detail.FcheckResu = "1";
+ // detail.UpdateBy = xjDto.userNo;
+ // detail.count = (int?)s.LevelNum;
+ // SetQSItemDetail(detail);
+ // });
+ //
+ // return Convert.ToInt32(xjDto.gid);
+ // }
public int saveItem(XJDto xjDto)
{
var items = xjDto.items;
var userNo = xjDto.userNo;
- SqlSugarHelper.UseTransactionWithOracle(db =>
+ // 鏁版嵁楠岃瘉
+ var validationResult = ValidateItemsData(items);
+ if (!validationResult.isValid)
+ throw new Exception($"妫�楠岄」鐩獙璇佸け璐�: {validationResult.errorMsg}");
+
+ return SqlSugarHelper.UseTransactionWithOracle(db =>
{
+ // 璁剧疆澶栭敭鍏宠仈骞舵壒閲忔彃鍏ュ瓙琛�
foreach (var item in items) item.Pid = xjDto.gid;
+ db.Insertable(items).ExecuteCommand();
- return db.Insertable(items).ExecuteCommand();
+ // 鑾峰彇妫�楠岄」鐩暟鎹�
+ var jyItems = getJYItemOptimized(db, xjDto.gid.Value);
+
+ if (jyItems.Any())
+ {
+ // 澶勭悊涓氬姟閫昏緫璁$畻
+ var allDetails = PrepareDetailsData(jyItems, xjDto.gid.Value, userNo);
+
+ if (allDetails.Count > 0)
+ {
+ // 鎵归噺鎻掑叆妫�楠岃鎯�
+ db.Insertable(allDetails).ExecuteCommand();
+
+ // 璁$畻缁撴灉
+ var (pidResults, fcheckResu) = CalculateResults(allDetails, jyItems);
+
+ // 鎵归噺鏇存柊妫�楠岄」鐩粨鏋�
+ foreach (var (pidValue, result) in pidResults)
+ {
+ db.Updateable<QsQaItemXj01>()
+ .SetColumns(s => s.IsPass == result)
+ .Where(s => s.Id == pidValue)
+ .ExecuteCommand();
+ }
+
+ // 鏇存柊涓昏〃妫�楠岀粨鏋�
+ var totalSum = jyItems.Where(x => x.MaxValue == null && x.StandardValue == null && x.MinValue == null)
+ .Sum(x => x.LevelNum);
+ if (totalSum == allDetails.Count)
+ {
+ db.Updateable<QsQaItemXj>()
+ .SetColumns(s => s.CheckResult == fcheckResu)
+ .SetColumns(s => s.CheckDate == DateTime.Now)
+ .SetColumns(s => s.CheckBy == userNo)
+ .SetColumns(s => s.LastUpdateBy == userNo)
+ .SetColumns(s => s.LastUpdateDate == DateTime.Now)
+ .Where(s => s.Id == xjDto.gid)
+ .ExecuteCommand();
+ }
+ }
+ }
+
+ return Convert.ToInt32(xjDto.gid);
});
+ }
+
+ private List<QsQaItemXj01> getJYItemOptimized(ISqlSugarClient db, decimal xjId)
+ {
+ return db.Queryable<QsQaItemXj01>()
+ .Where(a => a.Pid == xjId)
+ .ToList();
+ }
+
+ private (bool isValid, string errorMsg) ValidateItemsData(List<QsQaItemXj01> items)
+ {
+ if (items == null || !items.Any()) return (false, "妫�楠岄」鐩笉鑳戒负绌�");
+
+ var invalidItems = items.Where(x => x.LevelNum <= 0 || string.IsNullOrEmpty(x.ProjName)).ToList();
+ if (invalidItems.Any())
+ return (false, $"瀛樺湪{invalidItems.Count}涓棤鏁堢殑妫�楠岄」鐩�");
+
+ return (true, "");
+ }
- xjDto.items = getJYItem(xjDto.gid, null);
-
- xjDto.items.ForEach(s =>
+ private List<QsQaItemXj02> PrepareDetailsData(List<QsQaItemXj01> jyItems, decimal gid, string userNo)
+ {
+ var allDetails = new List<QsQaItemXj02>();
+ var now = DateTime.Now;
+
+ foreach (var s in jyItems)
{
- if (s.MaxValue != null || s.StandardValue != null ||
- s.MinValue != null) return;
- var detail = new QsQaItemXj02();
- detail.Pid = s.Id;
- detail.Gid = xjDto.gid;
- detail.Fstand = "鈭�";
- detail.FcheckResu = "1";
- detail.UpdateBy = xjDto.userNo;
- detail.count = (int?)s.LevelNum;
- SetQSItemDetail(detail);
- });
+ if (s.MaxValue != null || s.StandardValue != null || s.MinValue != null)
+ continue;
- return Convert.ToInt32(xjDto.gid);
+ for (var i = 0; i < s.LevelNum; i++)
+ {
+ allDetails.Add(new QsQaItemXj02
+ {
+ Gid = gid,
+ Pid = s.Id,
+ Fstand = "鈭�",
+ FcheckResu = "1",
+ CreateBy = userNo,
+ CreateDate = now
+ });
+ }
+ }
+ return allDetails;
+ }
+
+ private (List<(decimal pid, int result)> pidResults, string fcheckResu) CalculateResults(
+ List<QsQaItemXj02> allDetails, List<QsQaItemXj01> jyItems)
+ {
+ var pidGroups = allDetails.GroupBy(x => x.Pid).ToList();
+ var pidResults = new List<(decimal pid, int result)>();
+
+ foreach (var group in pidGroups)
+ {
+ var count = group.Count();
+ var passCount = group.Count(x => x.Fstand == "鈭�");
+ var result = (count == passCount) ? 1 : 0;
+ pidResults.Add((group.Key.Value, result));
+ }
+
+ var totalSum = jyItems.Where(x => x.MaxValue == null && x.StandardValue == null && x.MinValue == null)
+ .Sum(x => x.LevelNum);
+ var totalCount = allDetails.Count;
+ var totalPassCount = allDetails.Count(x => x.Fstand == "鈭�");
+ var fcheckResu = (totalSum == totalCount && totalCount == totalPassCount) ? "鍚堟牸" : "涓嶅悎鏍�";
+
+ return (pidResults, fcheckResu);
}
@@ -442,11 +586,11 @@
SqlSugarHelper.UseTransactionWithOracle(db =>
{
return db.Updateable<QsQaItemXj>()
- .SetColumns(s => s.FcheckResu == FcheckResu)
- .SetColumns(s => s.FcheckDate == DateTime.Now)
- .SetColumns(s => s.FcheckBy == detail.CreateBy)
- .SetColumns(s => s.LastupdateBy == detail.CreateBy)
- .SetColumns(s => s.LastupdateDate == DateTime.Now)
+ .SetColumns(s => s.CheckResult == FcheckResu)
+ .SetColumns(s => s.CheckDate == DateTime.Now)
+ .SetColumns(s => s.CheckBy == detail.CreateBy)
+ .SetColumns(s => s.LastUpdateBy == detail.CreateBy)
+ .SetColumns(s => s.LastUpdateDate == DateTime.Now)
.Where(s => s.Id == detail.Gid)
.ExecuteCommand();
});
diff --git a/MESApplication/Controllers/QC/BaseController.cs b/MESApplication/Controllers/QC/BaseController.cs
index dd54e7f..122d0df 100644
--- a/MESApplication/Controllers/QC/BaseController.cs
+++ b/MESApplication/Controllers/QC/BaseController.cs
@@ -1,5 +1,6 @@
锘縰sing System.Dynamic;
using MES.Service.Dto.service;
+using MES.Service.Modes;
using MES.Service.service.QC;
using MES.Service.util;
using Microsoft.AspNetCore.Mvc;
@@ -81,4 +82,29 @@
return ResponseResult.ResponseError(ex);
}
}
+
+
+ // GetDabs(VDab queryObj)
+ [HttpPost("getDabs")]
+ public ResponseResult GetDabs(VDab queryObj)
+ {
+
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ var tbBillList =
+ new BaseService().GetDabs(queryObj);
+ resultInfos.tbBillList = tbBillList;
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
}
\ No newline at end of file
diff --git a/MESApplication/Controllers/QC/XJController.cs b/MESApplication/Controllers/QC/XJController.cs
index 6ae5b7b..6e3a36d 100644
--- a/MESApplication/Controllers/QC/XJController.cs
+++ b/MESApplication/Controllers/QC/XJController.cs
@@ -442,4 +442,26 @@
return ResponseResult.ResponseError(ex);
}
}
+
+ [HttpPost("XJQaSubmit")]
+ public ResponseResult XJQaSubmit(LLJDto rkjDto)
+ {
+ try
+ {
+ dynamic resultInfos = new ExpandoObject();
+ var tbBillList =
+ new XJService().XJQaSubmit(rkjDto);
+ resultInfos.tbBillList = tbBillList;
+ return new ResponseResult
+ {
+ status = 0,
+ message = "OK",
+ data = resultInfos
+ };
+ }
+ catch (Exception ex)
+ {
+ return ResponseResult.ResponseError(ex);
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3