From 08a3995c956079a262ed395e19c58057deeb3e6d Mon Sep 17 00:00:00 2001
From: Administrator <2856754968@qq.com>
Date: 星期三, 05 十一月 2025 21:05:59 +0800
Subject: [PATCH] 111
---
Entites/DbModels/MesEquipmentInspection.cs | 118 +++++++++
Services/EquipmentInspectionManager.cs | 295 ++++++++++++++++++++++++
Entites/Dto/EquipmentInspectionDto.cs | 110 +++++++++
Controllers/EquipmentInspectionController.cs | 28 +
Entites/DbModels/MesEquipmentInspectionDetail.cs | 130 ++++++++++
5 files changed, 672 insertions(+), 9 deletions(-)
diff --git a/Controllers/EquipmentInspectionController.cs b/Controllers/EquipmentInspectionController.cs
index a326495..091ece6 100644
--- a/Controllers/EquipmentInspectionController.cs
+++ b/Controllers/EquipmentInspectionController.cs
@@ -11,18 +11,24 @@
[Route("api/[controller]")]
public class EquipmentInspectionController : ControllerBase
{
+ private readonly EquipmentInspectionManager _manager = new();
+ /// <summary>
+ /// 鏌ヨ璁惧鐐规璁板綍
+ /// </summary>
+ /// <param name="query">鏌ヨ鍙傛暟锛歮achineNo鍜宒ate</param>
+ /// <returns>鐐规璁板綍鏁版嵁</returns>
[HttpPost("Query")]
- public ResponseResult Query(OrderMachineDto query)
+ public ResponseResult Query(EquipmentInspectionQueryDto query)
{
try
{
- dynamic resultInfos = new ExpandoObject();
+ var result = _manager.QueryInspectionRecord(query);
return new ResponseResult
{
status = 0,
- message = "OK",
- data = resultInfos
+ message = "鏌ヨ鎴愬姛",
+ data = result
};
}
catch (Exception ex)
@@ -31,18 +37,22 @@
}
}
- //GetWomdaasByEngineeringNo
+ /// <summary>
+ /// 淇濆瓨璁惧鐐规璁板綍
+ /// </summary>
+ /// <param name="saveDto">淇濆瓨鍙傛暟锛歮achineNo銆乨ate銆乨ailyChecks銆乵onthlyChecks</param>
+ /// <returns>淇濆瓨缁撴灉</returns>
[HttpPost("Save")]
- public ResponseResult Save(OrderMachineDto query)
+ public ResponseResult Save(EquipmentInspectionSaveDto saveDto)
{
try
{
- dynamic resultInfos = new ExpandoObject();
+ var result = _manager.SaveInspectionRecord(saveDto);
return new ResponseResult
{
status = 0,
- message = "OK",
- data = resultInfos
+ message = "淇濆瓨鎴愬姛",
+ data = result
};
}
catch (Exception ex)
diff --git a/Entites/DbModels/MesEquipmentInspection.cs b/Entites/DbModels/MesEquipmentInspection.cs
new file mode 100644
index 0000000..53d7d73
--- /dev/null
+++ b/Entites/DbModels/MesEquipmentInspection.cs
@@ -0,0 +1,118 @@
+using SqlSugar;
+
+namespace PadApplication.Entites.DbModels;
+
+/// <summary>
+/// 璁惧鐐规涓昏〃
+/// </summary>
+[SugarTable("MES_EquipmentInspection")]
+public class MesEquipmentInspection
+{
+ /// <summary>
+ /// 鐐规璁板綍ID锛岃嚜澧炰富閿�
+ /// </summary>
+ [SugarColumn(ColumnName = "InspectionId", OracleSequenceName = "SEQ_MES_EquipmentInspection", IsPrimaryKey = true)]
+ public long InspectionId { get; set; }
+
+ /// <summary>
+ /// 鏈哄彴缂栧彿锛堝锛�01, 02, 03锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "MachineNo")]
+ public string MachineNo { get; set; }
+
+ /// <summary>
+ /// 鐐规骞翠唤锛堝锛�2025锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "InspectionYear")]
+ public int InspectionYear { get; set; }
+
+ /// <summary>
+ /// 鐐规鏈堜唤锛�1-12锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "InspectionMonth")]
+ public int InspectionMonth { get; set; }
+
+ /// <summary>
+ /// 鐐规骞存湀锛堝啑浣欏瓧娈碉紝鏍煎紡锛歽yyy-MM锛屽锛�2025-11锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "InspectionDate")]
+ public string InspectionDate { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜鸿处鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "CreatedBy")]
+ public string? CreatedBy { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓浜哄鍚�
+ /// </summary>
+ [SugarColumn(ColumnName = "CreatedByName")]
+ public string? CreatedByName { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "CreatedTime")]
+ public DateTime CreatedTime { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庝慨鏀逛汉璐﹀彿
+ /// </summary>
+ [SugarColumn(ColumnName = "UpdatedBy")]
+ public string? UpdatedBy { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庝慨鏀逛汉濮撳悕
+ /// </summary>
+ [SugarColumn(ColumnName = "UpdatedByName")]
+ public string? UpdatedByName { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庝慨鏀规椂闂�
+ /// </summary>
+ [SugarColumn(ColumnName = "UpdatedTime")]
+ public DateTime? UpdatedTime { get; set; }
+
+ /// <summary>
+ /// 鏃ュ父鐐规瀹屾垚鐜囷紙%锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "DailyCompletionRate")]
+ public decimal? DailyCompletionRate { get; set; }
+
+ /// <summary>
+ /// 鏈堝害鐐规瀹屾垚鐜囷紙%锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "MonthlyCompletionRate")]
+ public decimal? MonthlyCompletionRate { get; set; }
+
+ /// <summary>
+ /// 鎬荤偣妫�娆℃暟
+ /// </summary>
+ [SugarColumn(ColumnName = "TotalCheckCount")]
+ public int? TotalCheckCount { get; set; }
+
+ /// <summary>
+ /// 宸插畬鎴愮偣妫�娆℃暟
+ /// </summary>
+ [SugarColumn(ColumnName = "CompletedCheckCount")]
+ public int? CompletedCheckCount { get; set; }
+
+ /// <summary>
+ /// 鐘舵�侊細0=鑽夌锛�1=宸叉彁浜わ紝2=宸插鏍�
+ /// </summary>
+ [SugarColumn(ColumnName = "Status")]
+ public int Status { get; set; }
+
+ /// <summary>
+ /// 鏄惁宸插垹闄わ細0=鍚︼紝1=鏄�
+ /// </summary>
+ [SugarColumn(ColumnName = "IsDeleted")]
+ public bool IsDeleted { get; set; }
+
+ /// <summary>
+ /// 澶囨敞
+ /// </summary>
+ [SugarColumn(ColumnName = "Remark")]
+ public string? Remark { get; set; }
+}
diff --git a/Entites/DbModels/MesEquipmentInspectionDetail.cs b/Entites/DbModels/MesEquipmentInspectionDetail.cs
new file mode 100644
index 0000000..4308999
--- /dev/null
+++ b/Entites/DbModels/MesEquipmentInspectionDetail.cs
@@ -0,0 +1,130 @@
+using SqlSugar;
+
+namespace PadApplication.Entites.DbModels;
+
+/// <summary>
+/// 璁惧鐐规鏄庣粏琛�
+/// </summary>
+[SugarTable("MES_EquipmentInspectionDetail")]
+public class MesEquipmentInspectionDetail
+{
+ /// <summary>
+ /// 鏄庣粏ID锛岃嚜澧炰富閿�
+ /// </summary>
+ [SugarColumn(ColumnName = "DetailId", OracleSequenceName = "SEQ_MES_EquipInspDetail", IsPrimaryKey = true)]
+ public long DetailId { get; set; }
+
+ /// <summary>
+ /// 鐐规璁板綍ID锛屽叧鑱斾富琛�
+ /// </summary>
+ [SugarColumn(ColumnName = "InspectionId")]
+ public long InspectionId { get; set; }
+
+ /// <summary>
+ /// 鐐规绫诲瀷锛歞aily=鏃ュ父鐐规锛宮onthly=鏈堝害鐐规
+ /// </summary>
+ [SugarColumn(ColumnName = "ItemType")]
+ public string ItemType { get; set; }
+
+ /// <summary>
+ /// 鐐规椤圭洰绱㈠紩锛�0-5涓烘棩甯革紝0-1涓烘湀搴︼級
+ /// </summary>
+ [SugarColumn(ColumnName = "ItemIndex")]
+ public int ItemIndex { get; set; }
+
+ /// <summary>
+ /// 鐐规椤圭洰鍚嶇О锛堝啑浣欏瓧娈碉紝渚夸簬鏌ヨ锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "ItemName")]
+ public string ItemName { get; set; }
+
+ /// <summary>
+ /// 鏈堝唴鏃ユ湡锛�1-31锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "DayOfMonth")]
+ public int DayOfMonth { get; set; }
+
+ /// <summary>
+ /// 鏄惁瀹屾垚鐐规锛�0=鏈畬鎴愶紝1=宸插畬鎴�
+ /// </summary>
+ [SugarColumn(ColumnName = "IsChecked")]
+ public bool IsChecked { get; set; }
+
+ /// <summary>
+ /// 鐐规浜鸿处鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "CheckedBy")]
+ public string? CheckedBy { get; set; }
+
+ /// <summary>
+ /// 鐐规浜哄鍚�
+ /// </summary>
+ [SugarColumn(ColumnName = "CheckedByName")]
+ public string? CheckedByName { get; set; }
+
+ /// <summary>
+ /// 鐐规鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "CheckedTime")]
+ public DateTime? CheckedTime { get; set; }
+
+ /// <summary>
+ /// 鐐规缁撴灉锛氭甯搞�佸紓甯哥瓑
+ /// </summary>
+ [SugarColumn(ColumnName = "CheckResult")]
+ public string? CheckResult { get; set; }
+
+ /// <summary>
+ /// 寮傚父澶囨敞
+ /// </summary>
+ [SugarColumn(ColumnName = "AbnormalRemark")]
+ public string? AbnormalRemark { get; set; }
+
+ /// <summary>
+ /// 鐐规鍥剧墖URL鍒楄〃锛圝SON鏍煎紡锛�
+ /// </summary>
+ [SugarColumn(ColumnName = "ImageUrls")]
+ public string? ImageUrls { get; set; }
+
+ /// <summary>
+ /// 鏄惁宸插鏍革細0=鍚︼紝1=鏄�
+ /// </summary>
+ [SugarColumn(ColumnName = "IsReviewed")]
+ public bool IsReviewed { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳浜鸿处鍙�
+ /// </summary>
+ [SugarColumn(ColumnName = "ReviewedBy")]
+ public string? ReviewedBy { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳浜哄鍚�
+ /// </summary>
+ [SugarColumn(ColumnName = "ReviewedByName")]
+ public string? ReviewedByName { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "ReviewedTime")]
+ public DateTime? ReviewedTime { get; set; }
+
+ /// <summary>
+ /// 瀹℃牳澶囨敞
+ /// </summary>
+ [SugarColumn(ColumnName = "ReviewRemark")]
+ public string? ReviewRemark { get; set; }
+
+ /// <summary>
+ /// 鍒涘缓鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "CreatedTime")]
+ public DateTime CreatedTime { get; set; }
+
+ /// <summary>
+ /// 淇敼鏃堕棿
+ /// </summary>
+ [SugarColumn(ColumnName = "UpdatedTime")]
+ public DateTime? UpdatedTime { get; set; }
+}
diff --git a/Entites/Dto/EquipmentInspectionDto.cs b/Entites/Dto/EquipmentInspectionDto.cs
new file mode 100644
index 0000000..92d987d
--- /dev/null
+++ b/Entites/Dto/EquipmentInspectionDto.cs
@@ -0,0 +1,110 @@
+namespace PadApplication.Entites.Dto;
+
+/// <summary>
+/// 璁惧鐐规鏌ヨ璇锋眰DTO
+/// </summary>
+public class EquipmentInspectionQueryDto
+{
+ /// <summary>
+ /// 鏈哄彴缂栧彿锛堝繀濉級
+ /// </summary>
+ public string MachineNo { get; set; }
+
+ /// <summary>
+ /// 骞存湀鏍煎紡 "yyyy-MM"锛堝繀濉級
+ /// </summary>
+ public string Date { get; set; }
+}
+
+/// <summary>
+/// 璁惧鐐规淇濆瓨璇锋眰DTO
+/// </summary>
+public class EquipmentInspectionSaveDto
+{
+ /// <summary>
+ /// 鏈哄彴缂栧彿锛堝繀濉級
+ /// </summary>
+ public string MachineNo { get; set; }
+
+ /// <summary>
+ /// 骞存湀鏍煎紡 "yyyy-MM"锛堝繀濉級
+ /// </summary>
+ public string Date { get; set; }
+
+ /// <summary>
+ /// 鏃ュ父鐐规鏁版嵁锛�6椤姑�31澶╋級
+ /// </summary>
+ public bool[][] DailyChecks { get; set; }
+
+ /// <summary>
+ /// 鏈堝害鐐规鏁版嵁锛�2椤姑�31澶╋級
+ /// </summary>
+ public bool[][] MonthlyChecks { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鍛樿处鍙凤紙鍙�夛紝浠庣櫥褰曚細璇濊幏鍙栵級
+ /// </summary>
+ public string? Operator { get; set; }
+
+ /// <summary>
+ /// 鎿嶄綔鍛樺鍚嶏紙鍙�夛級
+ /// </summary>
+ public string? OperatorName { get; set; }
+}
+
+/// <summary>
+/// 璁惧鐐规鏌ヨ鍝嶅簲DTO
+/// </summary>
+public class EquipmentInspectionResponseDto
+{
+ /// <summary>
+ /// 鏈哄彴缂栧彿
+ /// </summary>
+ public string MachineNo { get; set; }
+
+ /// <summary>
+ /// 骞存湀
+ /// </summary>
+ public string Date { get; set; }
+
+ /// <summary>
+ /// 鏃ュ父鐐规鏁版嵁锛�6椤姑�31澶╋級
+ /// </summary>
+ public bool[][] DailyChecks { get; set; }
+
+ /// <summary>
+ /// 鏈堝害鐐规鏁版嵁锛�2椤姑�31澶╋級
+ /// </summary>
+ public bool[][] MonthlyChecks { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庢洿鏂版椂闂�
+ /// </summary>
+ public string? LastUpdateTime { get; set; }
+
+ /// <summary>
+ /// 鏈�鍚庢搷浣滃憳
+ /// </summary>
+ public string? Operator { get; set; }
+}
+
+/// <summary>
+/// 璁惧鐐规淇濆瓨鍝嶅簲DTO
+/// </summary>
+public class EquipmentInspectionSaveResponseDto
+{
+ /// <summary>
+ /// 鏄惁淇濆瓨鎴愬姛
+ /// </summary>
+ public bool Success { get; set; }
+
+ /// <summary>
+ /// 鐐规璁板綍ID锛堝彲閫夛級
+ /// </summary>
+ public string? RecordId { get; set; }
+
+ /// <summary>
+ /// 淇濆瓨鏃堕棿锛堝彲閫夛級
+ /// </summary>
+ public string? SavedTime { get; set; }
+}
diff --git a/Services/EquipmentInspectionManager.cs b/Services/EquipmentInspectionManager.cs
new file mode 100644
index 0000000..a252837
--- /dev/null
+++ b/Services/EquipmentInspectionManager.cs
@@ -0,0 +1,295 @@
+using PadApplication.DB;
+using PadApplication.Entites.DbModels;
+using PadApplication.Entites.Dto;
+using SqlSugar;
+
+namespace PadApplication.Services;
+
+/// <summary>
+/// 璁惧鐐规绠$悊鏈嶅姟绫�
+/// 璐熻矗澶勭悊璁惧鐐规璁板綍鐨勬煡璇㈠拰淇濆瓨鎿嶄綔
+/// </summary>
+public class EquipmentInspectionManager : Repository<MesEquipmentInspection>
+{
+ // 鏃ュ父鐐规椤圭洰閰嶇疆锛堝浐瀹氶『搴忥級
+ private readonly string[] _dailyInspectionItems =
+ [
+ "鏈鸿姱鏄惁娓呮磥",
+ "璁惧寮�鍏�",
+ "鏀瑰杽杩愯",
+ "娓呯悊娓呮磥鎴栬皟璇曟槸鍚︽湁寮傚父",
+ "宸ヨ壓鍙傛暟",
+ "鏈烘补杩愯鏄惁鏈夊紓甯�"
+ ];
+
+ // 鏈堝害鐐规椤圭洰閰嶇疆锛堝浐瀹氶『搴忥級
+ private readonly string[] _monthlyInspectionItems =
+ [
+ "鐢佃〃娌归潰鏄惁姝e父鏄惁鏈夋笚婕�",
+ "涓囧悜鎺ュご澶嶆煡骞跺姞娌�"
+ ];
+
+ /// <summary>
+ /// 鏌ヨ璁惧鐐规璁板綍
+ /// </summary>
+ /// <param name="query">鏌ヨ鍙傛暟</param>
+ /// <returns>鐐规璁板綍鍝嶅簲DTO</returns>
+ public EquipmentInspectionResponseDto QueryInspectionRecord(EquipmentInspectionQueryDto query)
+ {
+ // 鍙傛暟楠岃瘉
+ if (string.IsNullOrWhiteSpace(query.MachineNo))
+ throw new Exception("鏈哄彴缂栧彿涓嶈兘涓虹┖");
+
+ if (string.IsNullOrWhiteSpace(query.Date))
+ throw new Exception("鏃ユ湡涓嶈兘涓虹┖");
+
+ // 瑙f瀽骞存湀
+ if (!DateTime.TryParseExact(query.Date, "yyyy-MM", null,
+ System.Globalization.DateTimeStyles.None, out var date))
+ throw new Exception("鏃ユ湡鏍煎紡涓嶆纭紝搴斾负 yyyy-MM");
+
+ var year = date.Year;
+ var month = date.Month;
+
+ // 鏌ヨ涓昏〃璁板綍
+ var inspection = Db.Queryable<MesEquipmentInspection>()
+ .Where(x => x.MachineNo == query.MachineNo
+ && x.InspectionYear == year
+ && x.InspectionMonth == month
+ && !x.IsDeleted)
+ .First();
+
+ // 鍒濆鍖栬繑鍥炴暟鎹紙鍏ㄩ儴涓篺alse锛�
+ var dailyChecks = InitializeBoolArray(6, 31);
+ var monthlyChecks = InitializeBoolArray(2, 31);
+ string? lastUpdateTime = null;
+ string? operatorName = null;
+
+ // 濡傛灉瀛樺湪璁板綍锛屾煡璇㈡槑缁嗘暟鎹�
+ if (inspection != null)
+ {
+ var details = Db.Queryable<MesEquipmentInspectionDetail>()
+ .Where(x => x.InspectionId == inspection.InspectionId)
+ .ToList();
+
+ // 濉厖鏃ュ父鐐规鏁版嵁
+ foreach (var detail in details.Where(d => d.ItemType == "daily"))
+ {
+ if (detail.ItemIndex >= 0 && detail.ItemIndex < 6
+ && detail.DayOfMonth >= 1 && detail.DayOfMonth <= 31)
+ {
+ dailyChecks[detail.ItemIndex][detail.DayOfMonth - 1] = detail.IsChecked;
+ }
+ }
+
+ // 濉厖鏈堝害鐐规鏁版嵁
+ foreach (var detail in details.Where(d => d.ItemType == "monthly"))
+ {
+ if (detail.ItemIndex >= 0 && detail.ItemIndex < 2
+ && detail.DayOfMonth >= 1 && detail.DayOfMonth <= 31)
+ {
+ monthlyChecks[detail.ItemIndex][detail.DayOfMonth - 1] = detail.IsChecked;
+ }
+ }
+
+ lastUpdateTime = inspection.UpdatedTime?.ToString("yyyy-MM-dd HH:mm:ss")
+ ?? inspection.CreatedTime.ToString("yyyy-MM-dd HH:mm:ss");
+ operatorName = inspection.UpdatedByName ?? inspection.CreatedByName;
+ }
+
+ return new EquipmentInspectionResponseDto
+ {
+ MachineNo = query.MachineNo,
+ Date = query.Date,
+ DailyChecks = dailyChecks,
+ MonthlyChecks = monthlyChecks,
+ LastUpdateTime = lastUpdateTime,
+ Operator = operatorName
+ };
+ }
+
+ /// <summary>
+ /// 淇濆瓨璁惧鐐规璁板綍
+ /// </summary>
+ /// <param name="saveDto">淇濆瓨鍙傛暟</param>
+ /// <returns>淇濆瓨缁撴灉鍝嶅簲DTO</returns>
+ public EquipmentInspectionSaveResponseDto SaveInspectionRecord(EquipmentInspectionSaveDto saveDto)
+ {
+ // 鍙傛暟楠岃瘉
+ ValidateSaveData(saveDto);
+
+ // 瑙f瀽骞存湀
+ var date = DateTime.ParseExact(saveDto.Date, "yyyy-MM", null);
+ var year = date.Year;
+ var month = date.Month;
+
+ var savedTime = DateTime.Now;
+ long inspectionId;
+
+ // 浣跨敤浜嬪姟淇濆瓨鏁版嵁
+ UseTransaction(db =>
+ {
+ // 鏌ヨ鏄惁宸插瓨鍦ㄨ褰�
+ var existingInspection = db.Queryable<MesEquipmentInspection>()
+ .Where(x => x.MachineNo == saveDto.MachineNo
+ && x.InspectionYear == year
+ && x.InspectionMonth == month
+ && !x.IsDeleted)
+ .First();
+
+ if (existingInspection != null)
+ {
+ // 鏇存柊鐜版湁璁板綍
+ inspectionId = existingInspection.InspectionId;
+
+ db.Updateable<MesEquipmentInspection>()
+ .SetColumns(x => x.UpdatedBy == saveDto.Operator)
+ .SetColumns(x => x.UpdatedByName == saveDto.OperatorName)
+ .SetColumns(x => x.UpdatedTime == savedTime)
+ .Where(x => x.InspectionId == inspectionId)
+ .ExecuteCommand();
+
+ // 鍒犻櫎鏃х殑鏄庣粏璁板綍
+ db.Deleteable<MesEquipmentInspectionDetail>()
+ .Where(x => x.InspectionId == inspectionId)
+ .ExecuteCommand();
+ }
+ else
+ {
+ // 鍒涘缓鏂拌褰�
+ var newInspection = new MesEquipmentInspection
+ {
+ MachineNo = saveDto.MachineNo,
+ InspectionYear = year,
+ InspectionMonth = month,
+ InspectionDate = saveDto.Date,
+ CreatedBy = saveDto.Operator,
+ CreatedByName = saveDto.OperatorName,
+ CreatedTime = savedTime,
+ Status = 0,
+ IsDeleted = false
+ };
+
+ // 鎻掑叆涓昏〃璁板綍锛堜娇鐢∣racle搴忓垪鑷姩鐢熸垚InspectionId锛�
+ inspectionId = db.Insertable(newInspection)
+ .ExecuteReturnBigIdentity();
+ }
+
+ // 鎻掑叆鏄庣粏璁板綍
+ var details = new List<MesEquipmentInspectionDetail>();
+
+ // 娣诲姞鏃ュ父鐐规鏄庣粏
+ for (int itemIndex = 0; itemIndex < 6; itemIndex++)
+ {
+ for (int day = 1; day <= 31; day++)
+ {
+ var isChecked = saveDto.DailyChecks[itemIndex][day - 1];
+
+ details.Add(new MesEquipmentInspectionDetail
+ {
+ InspectionId = inspectionId,
+ ItemType = "daily",
+ ItemIndex = itemIndex,
+ ItemName = _dailyInspectionItems[itemIndex],
+ DayOfMonth = day,
+ IsChecked = isChecked,
+ CheckedBy = isChecked ? saveDto.Operator : null,
+ CheckedByName = isChecked ? saveDto.OperatorName : null,
+ CheckedTime = isChecked ? savedTime : null,
+ CreatedTime = savedTime,
+ IsReviewed = false
+ });
+ }
+ }
+
+ // 娣诲姞鏈堝害鐐规鏄庣粏
+ for (int itemIndex = 0; itemIndex < 2; itemIndex++)
+ {
+ for (int day = 1; day <= 31; day++)
+ {
+ var isChecked = saveDto.MonthlyChecks[itemIndex][day - 1];
+
+ details.Add(new MesEquipmentInspectionDetail
+ {
+ InspectionId = inspectionId,
+ ItemType = "monthly",
+ ItemIndex = itemIndex,
+ ItemName = _monthlyInspectionItems[itemIndex],
+ DayOfMonth = day,
+ IsChecked = isChecked,
+ CheckedBy = isChecked ? saveDto.Operator : null,
+ CheckedByName = isChecked ? saveDto.OperatorName : null,
+ CheckedTime = isChecked ? savedTime : null,
+ CreatedTime = savedTime,
+ IsReviewed = false
+ });
+ }
+ }
+
+ // 鎵归噺鎻掑叆鏄庣粏璁板綍锛堜娇鐢∣racle搴忓垪鑷姩鐢熸垚DetailId锛�
+ var insertCount = db.Insertable(details)
+ .ExecuteCommand();
+
+ if (insertCount <= 0)
+ throw new Exception("淇濆瓨鐐规鏄庣粏澶辫触");
+
+ return insertCount;
+ });
+
+ return new EquipmentInspectionSaveResponseDto
+ {
+ Success = true,
+ RecordId = $"EI{saveDto.Date.Replace("-", "")}{saveDto.MachineNo}",
+ SavedTime = savedTime.ToString("yyyy-MM-dd HH:mm:ss")
+ };
+ }
+
+ /// <summary>
+ /// 楠岃瘉淇濆瓨鏁版嵁鐨勬湁鏁堟��
+ /// </summary>
+ private void ValidateSaveData(EquipmentInspectionSaveDto saveDto)
+ {
+ if (string.IsNullOrWhiteSpace(saveDto.MachineNo))
+ throw new Exception("鍙傛暟閿欒锛氭満鍙扮紪鍙蜂笉鑳戒负绌�");
+
+ if (string.IsNullOrWhiteSpace(saveDto.Date))
+ throw new Exception("鍙傛暟閿欒锛氭棩鏈熶笉鑳戒负绌�");
+
+ if (!DateTime.TryParseExact(saveDto.Date, "yyyy-MM", null,
+ System.Globalization.DateTimeStyles.None, out _))
+ throw new Exception("鍙傛暟閿欒锛氭棩鏈熸牸寮忎笉姝g‘锛屽簲涓� yyyy-MM");
+
+ // 楠岃瘉鏃ュ父鐐规鏁版嵁
+ if (saveDto.DailyChecks == null || saveDto.DailyChecks.Length != 6)
+ throw new Exception("鏁版嵁楠岃瘉澶辫触锛歞ailyChecks 蹇呴』鏄� 6 琛岀殑浜岀淮鏁扮粍");
+
+ for (int i = 0; i < 6; i++)
+ {
+ if (saveDto.DailyChecks[i] == null || saveDto.DailyChecks[i].Length != 31)
+ throw new Exception($"鏁版嵁楠岃瘉澶辫触锛歞ailyChecks[{i}] 蹇呴』鍖呭惈 31 涓厓绱�");
+ }
+
+ // 楠岃瘉鏈堝害鐐规鏁版嵁
+ if (saveDto.MonthlyChecks == null || saveDto.MonthlyChecks.Length != 2)
+ throw new Exception("鏁版嵁楠岃瘉澶辫触锛歮onthlyChecks 蹇呴』鏄� 2 琛岀殑浜岀淮鏁扮粍");
+
+ for (int i = 0; i < 2; i++)
+ {
+ if (saveDto.MonthlyChecks[i] == null || saveDto.MonthlyChecks[i].Length != 31)
+ throw new Exception($"鏁版嵁楠岃瘉澶辫触锛歮onthlyChecks[{i}] 蹇呴』鍖呭惈 31 涓厓绱�");
+ }
+ }
+
+ /// <summary>
+ /// 鍒濆鍖栧竷灏斾簩缁存暟缁�
+ /// </summary>
+ private bool[][] InitializeBoolArray(int rows, int cols)
+ {
+ var array = new bool[rows][];
+ for (int i = 0; i < rows; i++)
+ {
+ array[i] = new bool[cols];
+ }
+ return array;
+ }
+}
--
Gitblit v1.9.3